Update DPDK version from 19.11 to 20.11 and also support hns3 PMD for Kunpeng 920 and Kunpeng 930. Signed-off-by: speech_white <humin29@huawei.com>
78 lines
2.4 KiB
Diff
78 lines
2.4 KiB
Diff
From 8732064d03a6d0f46f3120549b31f97990aa81ce Mon Sep 17 00:00:00 2001
|
|
From: Huisong Li <lihuisong@huawei.com>
|
|
Date: Sat, 17 Apr 2021 17:54:57 +0800
|
|
Subject: [PATCH 126/189] net/hns3: fix VMDq mode check
|
|
|
|
HNS3 PF driver only supports RSS, DCB or NONE multiple queues mode.
|
|
Currently, driver doesn't verify the VMDq multi-queue mode completely.
|
|
This patch fixes the verification for VMDq mode.
|
|
|
|
Fixes: 62e3ccc2b94c ("net/hns3: support flow control")
|
|
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_ethdev.c | 28 ++++++++++++----------------
|
|
1 file changed, 12 insertions(+), 16 deletions(-)
|
|
|
|
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
|
|
index 7492708..4d63d12 100644
|
|
--- a/drivers/net/hns3/hns3_ethdev.c
|
|
+++ b/drivers/net/hns3/hns3_ethdev.c
|
|
@@ -2222,23 +2222,16 @@ hns3_check_mq_mode(struct rte_eth_dev *dev)
|
|
int max_tc = 0;
|
|
int i;
|
|
|
|
- dcb_rx_conf = &dev->data->dev_conf.rx_adv_conf.dcb_rx_conf;
|
|
- dcb_tx_conf = &dev->data->dev_conf.tx_adv_conf.dcb_tx_conf;
|
|
-
|
|
- if (rx_mq_mode == ETH_MQ_RX_VMDQ_DCB_RSS) {
|
|
- hns3_err(hw, "ETH_MQ_RX_VMDQ_DCB_RSS is not supported. "
|
|
- "rx_mq_mode = %d", rx_mq_mode);
|
|
- return -EINVAL;
|
|
- }
|
|
-
|
|
- if (rx_mq_mode == ETH_MQ_RX_VMDQ_DCB ||
|
|
- tx_mq_mode == ETH_MQ_TX_VMDQ_DCB) {
|
|
- hns3_err(hw, "ETH_MQ_RX_VMDQ_DCB and ETH_MQ_TX_VMDQ_DCB "
|
|
- "is not supported. rx_mq_mode = %d, tx_mq_mode = %d",
|
|
+ if ((rx_mq_mode & ETH_MQ_RX_VMDQ_FLAG) ||
|
|
+ (tx_mq_mode == ETH_MQ_TX_VMDQ_DCB ||
|
|
+ tx_mq_mode == ETH_MQ_TX_VMDQ_ONLY)) {
|
|
+ hns3_err(hw, "VMDQ is not supported, rx_mq_mode = %d, tx_mq_mode = %d.",
|
|
rx_mq_mode, tx_mq_mode);
|
|
- return -EINVAL;
|
|
+ return -EOPNOTSUPP;
|
|
}
|
|
|
|
+ dcb_rx_conf = &dev->data->dev_conf.rx_adv_conf.dcb_rx_conf;
|
|
+ dcb_tx_conf = &dev->data->dev_conf.tx_adv_conf.dcb_tx_conf;
|
|
if (rx_mq_mode & ETH_MQ_RX_DCB_FLAG) {
|
|
if (dcb_rx_conf->nb_tcs > pf->tc_max) {
|
|
hns3_err(hw, "nb_tcs(%u) > max_tc(%u) driver supported.",
|
|
@@ -2297,8 +2290,7 @@ hns3_check_dcb_cfg(struct rte_eth_dev *dev)
|
|
return -EOPNOTSUPP;
|
|
}
|
|
|
|
- /* Check multiple queue mode */
|
|
- return hns3_check_mq_mode(dev);
|
|
+ return 0;
|
|
}
|
|
|
|
static int
|
|
@@ -2471,6 +2463,10 @@ hns3_dev_configure(struct rte_eth_dev *dev)
|
|
}
|
|
|
|
hw->adapter_state = HNS3_NIC_CONFIGURING;
|
|
+ ret = hns3_check_mq_mode(dev);
|
|
+ if (ret)
|
|
+ goto cfg_err;
|
|
+
|
|
if ((uint32_t)mq_mode & ETH_MQ_RX_DCB_FLAG) {
|
|
ret = hns3_check_dcb_cfg(dev);
|
|
if (ret)
|
|
--
|
|
2.7.4
|
|
|