From: Rasesh Mody Date: Thu, 14 May 2020 04:09:38 +0000 (-0700) Subject: examples/kni: fix MTU change to setup Tx queue X-Git-Url: http://git.droids-corp.org/?p=dpdk.git;a=commitdiff_plain;h=a26b116749a38db09223cfbb18f4c349f2bbae8e examples/kni: fix MTU change to setup Tx queue This patch adds a fix to setup Tx queue when changing KNI interface MTU. It ensures device can safely start txq post MTU change operation. Fixes: fc9ee41b7016 ("examples/kni: convert to new ethdev offloads API") Cc: stable@dpdk.org Signed-off-by: Rasesh Mody Acked-by: Ferruh Yigit --- diff --git a/examples/kni/main.c b/examples/kni/main.c index 6b4ab3b5b5..7a927a50c0 100644 --- a/examples/kni/main.c +++ b/examples/kni/main.c @@ -774,9 +774,11 @@ kni_change_mtu(uint16_t port_id, unsigned int new_mtu) { int ret; uint16_t nb_rxd = NB_RXD; + uint16_t nb_txd = NB_TXD; struct rte_eth_conf conf; struct rte_eth_dev_info dev_info; struct rte_eth_rxconf rxq_conf; + struct rte_eth_txconf txq_conf; if (!rte_eth_dev_is_valid_port(port_id)) { RTE_LOG(ERR, APP, "Invalid port id %d\n", port_id); @@ -804,7 +806,7 @@ kni_change_mtu(uint16_t port_id, unsigned int new_mtu) return ret; } - ret = rte_eth_dev_adjust_nb_rx_tx_desc(port_id, &nb_rxd, NULL); + ret = rte_eth_dev_adjust_nb_rx_tx_desc(port_id, &nb_rxd, &nb_txd); if (ret < 0) rte_exit(EXIT_FAILURE, "Could not adjust number of descriptors " "for port%u (%d)\n", (unsigned int)port_id, @@ -829,6 +831,16 @@ kni_change_mtu(uint16_t port_id, unsigned int new_mtu) return ret; } + txq_conf = dev_info.default_txconf; + txq_conf.offloads = conf.txmode.offloads; + ret = rte_eth_tx_queue_setup(port_id, 0, nb_txd, + rte_eth_dev_socket_id(port_id), &txq_conf); + if (ret < 0) { + RTE_LOG(ERR, APP, "Fail to setup Tx queue of port %d\n", + port_id); + return ret; + } + /* Restart specific port */ ret = rte_eth_dev_start(port_id); if (ret < 0) {