From 16c08f07ab673655db5fcae2043e2cb1f423c5b2 Mon Sep 17 00:00:00 2001 From: Huisong Li Date: Sat, 15 May 2021 08:52:33 +0800 Subject: [PATCH] net/hns3: fix Rx/Tx queue numbers check The Rx/Tx queue numbers should be greater than TC number, this patch adds this check for PF before updating the mapping between TC and queue. Fixes: a951c1ed3ab5 ("net/hns3: support different numbers of Rx and Tx queues") Fixes: 76d794566d43 ("net/hns3: maximize queue number") Cc: stable@dpdk.org Signed-off-by: Huisong Li Signed-off-by: Min Hu (Connor) --- drivers/net/hns3/hns3_dcb.c | 12 ++++++++++++ drivers/net/hns3/hns3_ethdev_vf.c | 12 ------------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/net/hns3/hns3_dcb.c b/drivers/net/hns3/hns3_dcb.c index 30e59e80a6..ab307f1f54 100644 --- a/drivers/net/hns3/hns3_dcb.c +++ b/drivers/net/hns3/hns3_dcb.c @@ -727,6 +727,18 @@ hns3_queue_to_tc_mapping(struct hns3_hw *hw, uint16_t nb_rx_q, uint16_t nb_tx_q) { int ret; + if (nb_rx_q < hw->num_tc) { + hns3_err(hw, "number of Rx queues(%u) is less than number of TC(%u).", + nb_rx_q, hw->num_tc); + return -EINVAL; + } + + if (nb_tx_q < hw->num_tc) { + hns3_err(hw, "number of Tx queues(%u) is less than number of TC(%u).", + nb_tx_q, hw->num_tc); + return -EINVAL; + } + ret = hns3_set_rss_size(hw, nb_rx_q); if (ret) return ret; diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c index 536ed463ef..c64961632c 100644 --- a/drivers/net/hns3/hns3_ethdev_vf.c +++ b/drivers/net/hns3/hns3_ethdev_vf.c @@ -1498,18 +1498,6 @@ hns3vf_set_tc_queue_mapping(struct hns3_adapter *hns, uint16_t nb_rx_q, { struct hns3_hw *hw = &hns->hw; - if (nb_rx_q < hw->num_tc) { - hns3_err(hw, "number of Rx queues(%u) is less than tcs(%u).", - nb_rx_q, hw->num_tc); - return -EINVAL; - } - - if (nb_tx_q < hw->num_tc) { - hns3_err(hw, "number of Tx queues(%u) is less than tcs(%u).", - nb_tx_q, hw->num_tc); - return -EINVAL; - } - return hns3_queue_to_tc_mapping(hw, nb_rx_q, nb_tx_q); } -- 2.20.1