]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/ibmveth.h
ibmveth: Enable TCP checksum offload
[linux-2.6-omap-h63xx.git] / drivers / net / ibmveth.h
index f5b25bff15403336de88df991b1b51cf5b8ff95e..3f10f0f4447a5899a235fe2b0fc4fb5d16da1bf2 100644 (file)
@@ -67,15 +67,27 @@ static inline long h_send_logical_lan(unsigned long unit_address,
        return rc;
 }
 
+static inline long h_illan_attributes(unsigned long unit_address,
+                                     unsigned long reset_mask, unsigned long set_mask,
+                                     unsigned long *ret_attributes)
+{
+       long rc;
+       unsigned long retbuf[PLPAR_HCALL_BUFSIZE];
+
+       rc = plpar_hcall(H_ILLAN_ATTRIBUTES, retbuf, unit_address,
+                        reset_mask, set_mask);
+
+       *ret_attributes = retbuf[0];
+
+       return rc;
+}
+
 #define h_multicast_ctrl(ua, cmd, mac) \
   plpar_hcall_norets(H_MULTICAST_CTRL, ua, cmd, mac)
 
 #define h_change_logical_lan_mac(ua, mac) \
   plpar_hcall_norets(H_CHANGE_LOGICAL_LAN_MAC, ua, mac)
 
-#define h_free_logical_lan_buffer(ua, bufsize) \
-  plpar_hcall_norets(H_FREE_LOGICAL_LAN_BUFFER, ua, bufsize)
-
 #define IbmVethNumBufferPools 5
 #define IBMVETH_BUFF_OH 22 /* Overhead: 14 ethernet header + 8 opaque handle */
 #define IBMVETH_MAX_MTU 68
@@ -115,10 +127,10 @@ struct ibmveth_rx_q {
 struct ibmveth_adapter {
     struct vio_dev *vdev;
     struct net_device *netdev;
+    struct napi_struct napi;
     struct net_device_stats stats;
     unsigned int mcastFilterSize;
     unsigned long mac_addr;
-    unsigned long liobn;
     void * buffer_list_addr;
     void * filter_list_addr;
     dma_addr_t buffer_list_dma;
@@ -145,7 +157,9 @@ struct ibmveth_adapter {
 struct ibmveth_buf_desc_fields {
     u32 valid : 1;
     u32 toggle : 1;
-    u32 reserved : 6;
+    u32 reserved : 4;
+    u32 no_csum : 1;
+    u32 csum_good : 1;
     u32 length : 24;
     u32 address;
 };
@@ -155,10 +169,30 @@ union ibmveth_buf_desc {
     struct ibmveth_buf_desc_fields fields;
 };
 
+struct ibmveth_illan_attributes_fields {
+       u32 reserved;
+       u32 reserved2 : 18;
+       u32 csum_offload_padded_pkt_support : 1;
+       u32 reserved3 : 1;
+       u32 trunk_priority : 4;
+       u32 reserved4 : 5;
+       u32 tcp_csum_offload_ipv6 : 1;
+       u32 tcp_csum_offload_ipv4 : 1;
+       u32 active_trunk : 1;
+};
+
+union ibmveth_illan_attributes {
+       u64 desc;
+       struct ibmveth_illan_attributes_fields fields;
+};
+
 struct ibmveth_rx_q_entry {
     u16 toggle : 1;
     u16 valid : 1;
-    u16 reserved : 14;
+    u16 reserved : 4;
+    u16 no_csum : 1;
+    u16 csum_good : 1;
+    u16 reserved2 : 8;
     u16 offset;
     u32 length;
     u64 correlator;