net/hns3: fix fake queue rollback
When the device supports independent Rx/Tx queues, fake queues do not need to be created in unequal Rx/Tx queues case. However, dev_configure fails to be executed on the device supported independent Rx/Tx queues, the current rollback code logic contains the fake queue. As a result, the fake queue is created. When dev_configure is successfully called again, these fake queues still exists and are configured to the hardware. Fixes: fa29fe45a7b4 ("net/hns3: support queue start and stop") Cc: stable@dpdk.org Signed-off-by: Huisong Li <lihuisong@huawei.com> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
This commit is contained in:
parent
4d8cce2678
commit
a2ddaac12b
@ -2497,13 +2497,10 @@ hns3_dev_configure(struct rte_eth_dev *dev)
|
||||
* work as usual. But these fake queues are imperceptible, and can not
|
||||
* be used by upper applications.
|
||||
*/
|
||||
if (!hns3_dev_indep_txrx_supported(hw)) {
|
||||
ret = hns3_set_fake_rx_or_tx_queues(dev, nb_rx_q, nb_tx_q);
|
||||
if (ret) {
|
||||
hns3_err(hw, "fail to set Rx/Tx fake queues, ret = %d.",
|
||||
ret);
|
||||
return ret;
|
||||
}
|
||||
ret = hns3_set_fake_rx_or_tx_queues(dev, nb_rx_q, nb_tx_q);
|
||||
if (ret) {
|
||||
hns3_err(hw, "fail to set Rx/Tx fake queues, ret = %d.", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
hw->adapter_state = HNS3_NIC_CONFIGURING;
|
||||
|
@ -801,13 +801,10 @@ hns3vf_dev_configure(struct rte_eth_dev *dev)
|
||||
* work as usual. But these fake queues are imperceptible, and can not
|
||||
* be used by upper applications.
|
||||
*/
|
||||
if (!hns3_dev_indep_txrx_supported(hw)) {
|
||||
ret = hns3_set_fake_rx_or_tx_queues(dev, nb_rx_q, nb_tx_q);
|
||||
if (ret) {
|
||||
hns3_err(hw, "fail to set Rx/Tx fake queues, ret = %d.",
|
||||
ret);
|
||||
return ret;
|
||||
}
|
||||
ret = hns3_set_fake_rx_or_tx_queues(dev, nb_rx_q, nb_tx_q);
|
||||
if (ret) {
|
||||
hns3_err(hw, "fail to set Rx/Tx fake queues, ret = %d.", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
hw->adapter_state = HNS3_NIC_CONFIGURING;
|
||||
|
@ -1617,6 +1617,9 @@ hns3_set_fake_rx_or_tx_queues(struct rte_eth_dev *dev, uint16_t nb_rx_q,
|
||||
uint16_t q;
|
||||
int ret;
|
||||
|
||||
if (hns3_dev_indep_txrx_supported(hw))
|
||||
return 0;
|
||||
|
||||
/* Setup new number of fake RX/TX queues and reconfigure device. */
|
||||
rx_need_add_nb_q = hw->cfg_max_queues - nb_rx_q;
|
||||
tx_need_add_nb_q = hw->cfg_max_queues - nb_tx_q;
|
||||
|
Loading…
x
Reference in New Issue
Block a user