diff options
-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 1068e2ee7db..4cf827c7949 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 # } |