dpdk: TSO does not work for Cisco VIC 04/25404/2
authorSteven Luong <sluong@cisco.com>
Thu, 13 Feb 2020 02:45:09 +0000 (18:45 -0800)
committerDave Wallace <dwallacelf@gmail.com>
Tue, 10 Mar 2020 14:23:08 +0000 (14:23 +0000)
While TSO is supported for Intel NIC, Cisco VIC does not work.
The problem is due to txmode offloads is not properly set for
the Cisco VIC when enable-tcp-udp-checksum is configured.

Type: fix
Ticket: VPP-1838

Signed-off-by: Steven Luong <sluong@cisco.com>
Change-Id: I72c41db9b327ed8d08ef70d74e8cc6206d4a102f
(cherry picked from commit ac8bb9263438221cc93db62257ffd8db711530e2)

src/plugins/dpdk/device/init.c

index d0125e9..34a1a82 100644 (file)
@@ -199,6 +199,15 @@ check_l3cache ()
   return 0;
 }
 
+static void
+dpdk_enable_l4_csum_offload (dpdk_device_t * xd)
+{
+  xd->port_conf.txmode.offloads |= DEV_TX_OFFLOAD_TCP_CKSUM;
+  xd->port_conf.txmode.offloads |= DEV_TX_OFFLOAD_UDP_CKSUM;
+  xd->flags |= DPDK_DEVICE_FLAG_TX_OFFLOAD |
+    DPDK_DEVICE_FLAG_INTEL_PHDR_CKSUM;
+}
+
 static clib_error_t *
 dpdk_lib_init (dpdk_main_t * dm)
 {
@@ -496,6 +505,8 @@ dpdk_lib_init (dpdk_main_t * dm)
              /* Cisco VIC */
            case VNET_DPDK_PMD_ENIC:
              xd->port_type = port_type_from_link_speed (l.link_speed);
+             if (dm->conf->enable_tcp_udp_checksum)
+               dpdk_enable_l4_csum_offload (xd);
              break;
 
              /* Intel Red Rock Canyon */