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>
76 lines
2.4 KiB
Diff
76 lines
2.4 KiB
Diff
From cb332ad8f8abb2973606f877024867deba6a6ec3 Mon Sep 17 00:00:00 2001
|
|
From: Chengchang Tang <tangchengchang@huawei.com>
|
|
Date: Wed, 31 Mar 2021 18:01:38 +0800
|
|
Subject: [PATCH 080/189] net/hns3: fix rollback after setting PVID failure
|
|
|
|
Currently, three hardware operations are involved in setting the PVID.
|
|
If any operation fails, a failure will be returned. And there may be
|
|
residual hardware configurations because no rollback is performed.
|
|
|
|
This patch adds rollback operation for setting PVID to avoid residual
|
|
hardware configuration after the PVID fails to be configured.
|
|
|
|
Fixes: 411d23b9eafb ("net/hns3: support VLAN")
|
|
Cc: stable@dpdk.org
|
|
|
|
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
|
|
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
|
|
---
|
|
drivers/net/hns3/hns3_ethdev.c | 20 +++++++++++++++++---
|
|
1 file changed, 17 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
|
|
index 4dff016..4984ff9 100644
|
|
--- a/drivers/net/hns3/hns3_ethdev.c
|
|
+++ b/drivers/net/hns3/hns3_ethdev.c
|
|
@@ -981,7 +981,7 @@ hns3_vlan_pvid_configure(struct hns3_adapter *hns, uint16_t pvid, int on)
|
|
{
|
|
struct hns3_hw *hw = &hns->hw;
|
|
uint16_t port_base_vlan_state;
|
|
- int ret;
|
|
+ int ret, err;
|
|
|
|
if (on == 0 && pvid != hw->port_base_vlan_cfg.pvid) {
|
|
if (hw->port_base_vlan_cfg.pvid != HNS3_INVALID_PVID)
|
|
@@ -1004,7 +1004,7 @@ hns3_vlan_pvid_configure(struct hns3_adapter *hns, uint16_t pvid, int on)
|
|
if (ret) {
|
|
hns3_err(hw, "failed to config rx vlan strip for pvid, "
|
|
"ret = %d", ret);
|
|
- return ret;
|
|
+ goto pvid_vlan_strip_fail;
|
|
}
|
|
|
|
if (pvid == HNS3_INVALID_PVID)
|
|
@@ -1013,13 +1013,27 @@ hns3_vlan_pvid_configure(struct hns3_adapter *hns, uint16_t pvid, int on)
|
|
if (ret) {
|
|
hns3_err(hw, "failed to update vlan filter entries, ret = %d",
|
|
ret);
|
|
- return ret;
|
|
+ goto vlan_filter_set_fail;
|
|
}
|
|
|
|
out:
|
|
hw->port_base_vlan_cfg.state = port_base_vlan_state;
|
|
hw->port_base_vlan_cfg.pvid = on ? pvid : HNS3_INVALID_PVID;
|
|
return ret;
|
|
+
|
|
+vlan_filter_set_fail:
|
|
+ err = hns3_en_pvid_strip(hns, hw->port_base_vlan_cfg.state ==
|
|
+ HNS3_PORT_BASE_VLAN_ENABLE);
|
|
+ if (err)
|
|
+ hns3_err(hw, "fail to rollback pvid strip, ret = %d", err);
|
|
+
|
|
+pvid_vlan_strip_fail:
|
|
+ err = hns3_vlan_txvlan_cfg(hns, hw->port_base_vlan_cfg.state,
|
|
+ hw->port_base_vlan_cfg.pvid);
|
|
+ if (err)
|
|
+ hns3_err(hw, "fail to rollback txvlan status, ret = %d", err);
|
|
+
|
|
+ return ret;
|
|
}
|
|
|
|
static int
|
|
--
|
|
2.7.4
|
|
|