dpdk: enable RX for no-multi-seg 10/12710/6
authorZhiyong Yang <zhiyong.yang@intel.com>
Thu, 24 May 2018 09:24:29 +0000 (05:24 -0400)
committerDamjan Marion <dmarion.lists@gmail.com>
Sat, 26 May 2018 18:57:47 +0000 (18:57 +0000)
The option no-multi-seg doesn't take effect for RX since MTU
which is too large is passed to DPDK lib, Which causes PMDs
are running XXX_scattered_rx function. The patch fixes the issue.

Change-Id: I91a6fb23fd118e872c8a52a6c35c36a86cb2c02b
Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com>
src/plugins/dpdk/device/init.c

index 23d4d46..1f17c61 100755 (executable)
@@ -37,6 +37,8 @@
 
 #include <dpdk/device/dpdk_priv.h>
 
+#define ETHER_MAX_LEN   1518  /**< Maximum frame len, including CRC. */
+
 dpdk_main_t dpdk_main;
 dpdk_config_main_t dpdk_config_main;
 
@@ -693,6 +695,9 @@ dpdk_lib_init (dpdk_main_t * dm)
       else
        clib_warning ("hi NULL");
 
+      if (dm->conf->no_multi_seg)
+       mtu = mtu > ETHER_MAX_LEN ? ETHER_MAX_LEN : mtu;
+
       rte_eth_dev_set_mtu (xd->device_index, mtu);
     }