diff options
-rw-r--r-- | src/plugins/dpdk/device/dpdk.h | 1 | ||||
-rwxr-xr-x | src/plugins/dpdk/device/init.c | 12 | ||||
-rw-r--r-- | src/vpp/conf/startup.conf | 4 |
3 files changed, 15 insertions, 2 deletions
diff --git a/src/plugins/dpdk/device/dpdk.h b/src/plugins/dpdk/device/dpdk.h index efcc5a766bf..c3c98f882e7 100644 --- a/src/plugins/dpdk/device/dpdk.h +++ b/src/plugins/dpdk/device/dpdk.h @@ -321,6 +321,7 @@ typedef struct u8 *uio_driver_name; u8 no_multi_seg; u8 enable_tcp_udp_checksum; + u8 no_tx_checksum_offload; /* Required config parameters */ u8 coremask_set_manually; diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c index 8d08da1308f..60f8ce67583 100755 --- a/src/plugins/dpdk/device/init.c +++ b/src/plugins/dpdk/device/init.c @@ -331,6 +331,10 @@ dpdk_lib_init (dpdk_main_t * dm) clib_memcpy (&xd->tx_conf, &dev_info.default_txconf, sizeof (struct rte_eth_txconf)); + + if (dm->conf->no_tx_checksum_offload == 0) + xd->tx_conf.txq_flags &= ~ETH_TXQ_FLAGS_NOXSUMS; + if (dm->conf->no_multi_seg) { xd->tx_conf.txq_flags |= ETH_TXQ_FLAGS_NOMULTSEGS; @@ -636,8 +640,9 @@ dpdk_lib_init (dpdk_main_t * dm) hi = vnet_get_hw_interface (dm->vnet_main, xd->hw_if_index); - if (xd->flags & DPDK_DEVICE_FLAG_TX_OFFLOAD) - hi->flags |= VNET_HW_INTERFACE_FLAG_SUPPORTS_TX_L4_CKSUM_OFFLOAD; + if (dm->conf->no_tx_checksum_offload == 0) + if (xd->flags & DPDK_DEVICE_FLAG_TX_OFFLOAD) + hi->flags |= VNET_HW_INTERFACE_FLAG_SUPPORTS_TX_L4_CKSUM_OFFLOAD; dpdk_device_setup (xd); @@ -915,6 +920,9 @@ dpdk_config (vlib_main_t * vm, unformat_input_t * input) else if (unformat (input, "enable-tcp-udp-checksum")) conf->enable_tcp_udp_checksum = 1; + else if (unformat (input, "no-tx-checksum-offload")) + conf->no_tx_checksum_offload = 1; + else if (unformat (input, "decimal-interface-names")) conf->interface_name_format_decimal = 1; diff --git a/src/vpp/conf/startup.conf b/src/vpp/conf/startup.conf index c3b9872ec9a..304dd1fab3f 100644 --- a/src/vpp/conf/startup.conf +++ b/src/vpp/conf/startup.conf @@ -121,6 +121,10 @@ cpu { ## Change hugepages allocation per-socket, needed only if there is need for ## larger number of mbufs. Default is 256M on each detected CPU socket # socket-mem 2048,2048 + + ## Disables UDP / TCP TX checksum offload. Typically needed for use + ## faster vector PMDs (together with no-multi-seg) + # no-tx-checksum-offload # } # Adjusting the plugin path depending on where the VPP plugins are: |