From c15d148f0f636cb0dabe55a90ddae95f406073c1 Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Tue, 18 Sep 2018 10:52:58 -0500 Subject: [PATCH] disable scatter/gather for ENA with DPDK 18.08 The scatter/gather rxmode flag was set for ENA when building against DPDK >= 18.08. ENA does not support this, so disable it. It looks like enabling it was a copy/paste error. Also, after offloads are adjusted based on whether "no-multi-seg" is set, those configurations are overwritten by copying port_conf_template over the port config. That should only happen for versions of DPDK older than 18.08 because 18.08 and newer make changes directly on the port config instead of making changes to the template. Make the clib_memcpy() conditional on the DPDK version being less than 18.08. After doing so, compiler errors complain about port_conf_template being declared but not used, so make it's declaration conditional. Change-Id: If81980d71c379a565b51dd700b953f8c811a8703 Signed-off-by: Matthew Smith --- src/plugins/dpdk/device/init.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c index c811c4736d0..bb761c09c61 100644 --- a/src/plugins/dpdk/device/init.c +++ b/src/plugins/dpdk/device/init.c @@ -46,6 +46,7 @@ dpdk_config_main_t dpdk_config_main; /* Port configuration, mildly modified Intel app values */ +#if RTE_VERSION < RTE_VERSION_NUM(18, 8, 0, 0) static struct rte_eth_conf port_conf_template = { .rxmode = { .split_hdr_size = 0, @@ -54,6 +55,7 @@ static struct rte_eth_conf port_conf_template = { .mq_mode = ETH_MQ_TX_NONE, }, }; +#endif static dpdk_port_type_t port_type_from_speed_capa (struct rte_eth_dev_info *dev_info) @@ -369,8 +371,10 @@ dpdk_lib_init (dpdk_main_t * dm) xd->flags |= DPDK_DEVICE_FLAG_MAYBE_MULTISEG; } +#if RTE_VERSION < RTE_VERSION_NUM(18, 8, 0, 0) clib_memcpy (&xd->port_conf, &port_conf_template, sizeof (struct rte_eth_conf)); +#endif xd->tx_q_used = clib_min (dev_info.max_tx_queues, tm->n_vlib_mains); @@ -490,7 +494,7 @@ dpdk_lib_init (dpdk_main_t * dm) #if RTE_VERSION < RTE_VERSION_NUM(18, 8, 0, 0) xd->port_conf.rxmode.enable_scatter = 0; #else - xd->port_conf.rxmode.offloads |= DEV_RX_OFFLOAD_SCATTER; + xd->port_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_SCATTER; #endif break; -- 2.16.6