These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / net / ethernet / ibm / ibmveth.h
index 1f37499..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];
 
@@ -104,7 +113,8 @@ static inline long h_illan_attributes(unsigned long unit_address,
 
 static int pool_size[] = { 512, 1024 * 2, 1024 * 16, 1024 * 32, 1024 * 64 };
 static int pool_count[] = { 256, 512, 256, 256, 256 };
-static int pool_active[] = { 1, 1, 0, 0, 0};
+static int pool_count_cmo[] = { 256, 512, 256, 256, 64 };
+static int pool_active[] = { 1, 1, 0, 0, 1};
 
 #define IBM_VETH_INVALID_MAP ((u16)0xffff)
 
@@ -146,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;
@@ -160,6 +172,8 @@ struct ibmveth_adapter {
     u64 rx_no_buffer;
     u64 tx_map_failed;
     u64 tx_send_failed;
+    u64 tx_large_packets;
+    u64 rx_large_packets;
 };
 
 /*
@@ -179,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