dpdk: enable tx checksum offloads as default, add disable knob 58/9558/2
authorDamjan Marion <damarion@cisco.com>
Fri, 24 Nov 2017 13:34:18 +0000 (14:34 +0100)
committerDave Barach <openvpp@barachs.net>
Fri, 24 Nov 2017 15:02:42 +0000 (15:02 +0000)
New startup.conf knob:

dpdk {  ... no-tx-checksum-offload ... }

Change-Id: I337fd57616dd77687300861b411b420a3cb75149
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/plugins/dpdk/device/dpdk.h
src/plugins/dpdk/device/init.c
src/vpp/conf/startup.conf

index efcc5a7..c3c98f8 100644 (file)
@@ -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;
index 8d08da1..60f8ce6 100755 (executable)
@@ -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;
 
index c3b9872..304dd1f 100644 (file)
@@ -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: