[dpdk-dev] [PATCH v1] app/testpmd: fix dynamic config error for max-pkt-len
Steve Yang
stevex.yang at intel.com
Tue Dec 22 09:13:35 CET 2020
When 'max-pkt-len' value caused the 'rx_offloads' flag change, the all
offloads of rx queues ('rx_conf[qid].offloads') weren't synchronized,
that will cause the offloads check failed with 'rx_queue_offload_capa'
within 'rte_eth_rx_queue_setup'.
Apply rx offloads configuration once it changed when 'max-pkt-len'
command parsed.
Fixes: 384161e00627 ("app/testpmd: adjust on the fly VLAN configuration")
Signed-off-by: Steve Yang <stevex.yang at intel.com>
---
app/test-pmd/cmdline.c | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 2ccbaa039e..d72a40d7de 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -1902,7 +1902,23 @@ cmd_config_max_pkt_len_parsed(void *parsed_result,
rx_offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;
else
rx_offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;
- port->dev_conf.rxmode.offloads = rx_offloads;
+
+ if (rx_offloads != port->dev_conf.rxmode.offloads) {
+ uint16_t k;
+ int ret;
+
+ port->dev_conf.rxmode.offloads = rx_offloads;
+ /* Apply Rx offloads configuration */
+ ret = eth_dev_info_get_print_err(pid,
+ &port->dev_info);
+ if (ret != 0)
+ rte_exit(EXIT_FAILURE,
+ "rte_eth_dev_info_get() failed\n");
+
+ for (k = 0;
+ k < port->dev_info.nb_rx_queues; k++)
+ port->rx_conf[k].offloads = rx_offloads;
+ }
} else {
printf("Unknown parameter\n");
return;
--
2.17.1
More information about the dev
mailing list