From 03bcbd3621867dac4c5dcb32b59f70424a7bc4d9 Mon Sep 17 00:00:00 2001 From: Steven Luong Date: Wed, 12 Feb 2020 18:45:09 -0800 Subject: dpdk: TSO does not work for Cisco VIC 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 Change-Id: I72c41db9b327ed8d08ef70d74e8cc6206d4a102f --- src/plugins/dpdk/device/init.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c index b5f0ec7e563..056544646ed 100644 --- a/src/plugins/dpdk/device/init.c +++ b/src/plugins/dpdk/device/init.c @@ -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 */ -- cgit 1.2.3-korg