aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Smith <mgsmith@netgate.com>2024-09-25 11:26:58 -0500
committerFan Zhang <fanzhang.oss@gmail.com>2024-10-22 09:05:09 +0000
commite7226a21274c48909a76dde69ea00a38f5413438 (patch)
tree4896bb600e91646354ffcba5b92b617a3b58dfd8
parent2e8a406aaf559817f9799908087e7dd671d17094 (diff)
dpdk: validate number of tx descriptors
The default number of tx descriptors per queue is 1024. On some device types, this is larger than the maximum allowed value and rte_eth_tx_queue_setup() can return an error. Compare the configured value to the maximum value for each device and set the configured value to the maximum value if the configured value is larger. Type: improvement Signed-off-by: Matthew Smith <mgsmith@netgate.com> Change-Id: Ie29c5c6d58c76388f65f266032821140b0f879fb
-rw-r--r--src/plugins/dpdk/device/init.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c
index e63a281a175..ec9e6045de7 100644
--- a/src/plugins/dpdk/device/init.c
+++ b/src/plugins/dpdk/device/init.c
@@ -503,6 +503,14 @@ dpdk_lib_init (dpdk_main_t * dm)
else if (dr && dr->n_tx_desc)
xd->conf.n_tx_desc = dr->n_tx_desc;
+ if (xd->conf.n_tx_desc > di.tx_desc_lim.nb_max)
+ {
+ dpdk_log_warn ("[%u] Configured number of TX descriptors (%u) is "
+ "bigger than maximum supported (%u)",
+ port_id, xd->conf.n_tx_desc, di.tx_desc_lim.nb_max);
+ xd->conf.n_tx_desc = di.tx_desc_lim.nb_max;
+ }
+
dpdk_log_debug (
"[%u] n_rx_queues: %u n_tx_queues: %u n_rx_desc: %u n_tx_desc: %u",
port_id, xd->conf.n_rx_queues, xd->conf.n_tx_queues,