net/hns3: fix Rx/Tx queue numbers check
authorHuisong Li <lihuisong@huawei.com>
Sat, 15 May 2021 00:52:33 +0000 (08:52 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 18 May 2021 10:30:14 +0000 (12:30 +0200)
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 <lihuisong@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
drivers/net/hns3/hns3_dcb.c
drivers/net/hns3/hns3_ethdev_vf.c

index 30e59e8..ab307f1 100644 (file)
@@ -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;
index 536ed46..c649616 100644 (file)
@@ -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);
 }