ibmveth: add support for TSO6
[cascardo/linux.git] / drivers / net / ethernet / ibm / ibmveth.h
index 41dedb1..4eade67 100644 (file)
@@ -40,6 +40,8 @@
 #define IbmVethMcastRemoveFilter     0x2UL
 #define IbmVethMcastClearFilterTable 0x3UL
 
+#define IBMVETH_ILLAN_LRG_SR_ENABLED   0x0000000000010000UL
+#define IBMVETH_ILLAN_LRG_SND_SUPPORT  0x0000000000008000UL
 #define IBMVETH_ILLAN_PADDED_PKT_CSUM  0x0000000000002000UL
 #define IBMVETH_ILLAN_TRUNK_PRI_MASK   0x0000000000000F00UL
 #define IBMVETH_ILLAN_IPV6_TCP_CSUM            0x0000000000000004UL
 static inline long h_send_logical_lan(unsigned long unit_address,
                unsigned long desc1, unsigned long desc2, unsigned long desc3,
                unsigned long desc4, unsigned long desc5, unsigned long desc6,
-               unsigned long corellator_in, unsigned long *corellator_out)
+               unsigned long corellator_in, unsigned long *corellator_out,
+               unsigned long mss, unsigned long large_send_support)
 {
        long rc;
        unsigned long retbuf[PLPAR_HCALL9_BUFSIZE];
 
-       rc = plpar_hcall9(H_SEND_LOGICAL_LAN, retbuf, unit_address, desc1,
-                       desc2, desc3, desc4, desc5, desc6, corellator_in);
+       if (large_send_support)
+               rc = plpar_hcall9(H_SEND_LOGICAL_LAN, retbuf, unit_address,
+                                 desc1, desc2, desc3, desc4, desc5, desc6,
+                                 corellator_in, mss);
+       else
+               rc = plpar_hcall9(H_SEND_LOGICAL_LAN, retbuf, unit_address,
+                                 desc1, desc2, desc3, desc4, desc5, desc6,
+                                 corellator_in);
 
        *corellator_out = retbuf[0];
 
@@ -147,11 +156,13 @@ struct ibmveth_adapter {
     struct ibmveth_rx_q rx_queue;
     int pool_config;
     int rx_csum;
+    int large_send;
     void *bounce_buffer;
     dma_addr_t bounce_buffer_dma;
 
     u64 fw_ipv6_csum_support;
     u64 fw_ipv4_csum_support;
+    u64 fw_large_send_support;
     /* adapter specific stats */
     u64 replenish_task_cycles;
     u64 replenish_no_mem;
@@ -182,6 +193,7 @@ struct ibmveth_buf_desc_fields {
 #endif
 #define IBMVETH_BUF_VALID      0x80000000
 #define IBMVETH_BUF_TOGGLE     0x40000000
+#define IBMVETH_BUF_LRG_SND     0x04000000
 #define IBMVETH_BUF_NO_CSUM    0x02000000
 #define IBMVETH_BUF_CSUM_GOOD  0x01000000
 #define IBMVETH_BUF_LEN_MASK   0x00FFFFFF