diff options
author | Chenmin Sun <chenmin.sun@intel.com> | 2019-10-11 00:28:13 +0800 |
---|---|---|
committer | Andrew Yourtchenko <ayourtch@gmail.com> | 2019-11-05 10:47:31 +0000 |
commit | 387123e675c222b52f720b6fd5ac0c7b3f016bcd (patch) | |
tree | d1ce821c08e2fb92132892857bc93d9b48e04fbb | |
parent | c9ddd2eec1194b6517106d31a6e40238d4aec4e8 (diff) |
dpdk: fix tso not properly check the 'enable-tcp-udp-checksum' option issue
Type: fix
Fix tso did not properly check the 'enable-tcp-udp-checksum' option issue
Add description of 'tso' and 'enable-tcp-udp-checksum' in startup.conf
Signed-off-by: Chenmin Sun <chenmin.sun@intel.com>
Change-Id: Id659067a9fa9e1db6c3f8dc533a2e90351b86831
(cherry picked from commit 5bec5f7860dafcef6aefd50b74de15d08910c6f4)
-rw-r--r-- | src/plugins/dpdk/device/init.c | 31 | ||||
-rw-r--r-- | src/vpp/conf/startup.conf | 9 |
2 files changed, 24 insertions, 16 deletions
diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c index 6f3178fcf21..1045bf3251c 100644 --- a/src/plugins/dpdk/device/init.c +++ b/src/plugins/dpdk/device/init.c @@ -748,22 +748,21 @@ dpdk_lib_init (dpdk_main_t * dm) if (xd->flags & DPDK_DEVICE_FLAG_TX_OFFLOAD && hi != NULL) hi->flags |= VNET_HW_INTERFACE_FLAG_SUPPORTS_TX_L4_CKSUM_OFFLOAD; - if (devconf->tso == DPDK_DEVICE_TSO_ON) - { - if (xd->flags & DPDK_DEVICE_FLAG_TX_OFFLOAD && hi != NULL) - { - /*tcp_udp checksum must be enabled*/ - if (hi->flags & VNET_HW_INTERFACE_FLAG_SUPPORTS_TX_L4_CKSUM_OFFLOAD) - { - hi->flags |= VNET_HW_INTERFACE_FLAG_SUPPORTS_GSO; - vnm->interface_main.gso_interface_count++; - xd->port_conf.txmode.offloads |= DEV_TX_OFFLOAD_TCP_TSO | - DEV_TX_OFFLOAD_UDP_TSO; - } - else - return clib_error_return (0, "TSO: TCP/UDP checksum offload must be enabled"); - } - } + if (devconf->tso == DPDK_DEVICE_TSO_ON && hi != NULL) + { + /*tcp_udp checksum must be enabled*/ + if ((dm->conf->enable_tcp_udp_checksum) && + (hi->flags & VNET_HW_INTERFACE_FLAG_SUPPORTS_TX_L4_CKSUM_OFFLOAD)) + { + hi->flags |= VNET_HW_INTERFACE_FLAG_SUPPORTS_GSO; + vnm->interface_main.gso_interface_count++; + xd->port_conf.txmode.offloads |= DEV_TX_OFFLOAD_TCP_TSO | + DEV_TX_OFFLOAD_UDP_TSO; + } + else + clib_warning ("%s: TCP/UDP checksum offload must be enabled", + hi->name); + } dpdk_device_setup (xd); diff --git a/src/vpp/conf/startup.conf b/src/vpp/conf/startup.conf index b61e4514e13..3d83a133609 100644 --- a/src/vpp/conf/startup.conf +++ b/src/vpp/conf/startup.conf @@ -100,6 +100,11 @@ cpu { ## VLAN strip offload mode for interface ## Default is off # vlan-strip-offload on + + ## TCP Segment Offload + ## Default is off + ## To enable TSO, 'enable-tcp-udp-checksum' must be set + # tso on # } ## Whitelist specific interface by specifying PCI address @@ -135,6 +140,10 @@ cpu { ## Disables UDP / TCP TX checksum offload. Typically needed for use ## faster vector PMDs (together with no-multi-seg) # no-tx-checksum-offload + + ## Enable UDP / TCP TX checksum offload + ## This is the reversed option of 'no-tx-checksum-offload' + # enable-tcp-udp-checksum # } |