1 |
From e5ffaa9cf9d2389184a89f67e63b98077bed9d10 Mon Sep 17 00:00:00 2001 |
2 |
From: Yunsheng Lin <linyunsheng@huawei.com> |
3 |
Date: Mon, 3 Sep 2018 11:21:46 +0100 |
4 |
Subject: [PATCH 070/145] net: hns3: Fix for vf vlan delete failed problem |
5 |
|
6 |
[ Upstream commit 41dafea2af781d8e3ab8626d236b52e4172905a3 ] |
7 |
|
8 |
There are only 128 entries in vf vlan table, if user has added |
9 |
more than 128 vlan, fw will ignore it and disable the vf vlan |
10 |
table. So when user deletes the vlan entry that has not been |
11 |
set to vf vlan table, fw will return not found result and driver |
12 |
treat that as error, which will cause vlan delete failed problem. |
13 |
|
14 |
This patch fixes it by returning ok when fw returns not found |
15 |
result. |
16 |
|
17 |
Fixes: 6c251711b37f ("net: hns3: Disable vf vlan filter when vf vlan table is full") |
18 |
Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com> |
19 |
Signed-off-by: Peng Li <lipeng321@huawei.com> |
20 |
Signed-off-by: Salil Mehta <salil.mehta@huawei.com> |
21 |
Signed-off-by: David S. Miller <davem@davemloft.net> |
22 |
Signed-off-by: Sasha Levin <sashal@kernel.org> |
23 |
--- |
24 |
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 8 ++++++++ |
25 |
1 file changed, 8 insertions(+) |
26 |
|
27 |
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c |
28 |
index 2d58726893f4..db763450e5e3 100644 |
29 |
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c |
30 |
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c |
31 |
@@ -4693,9 +4693,17 @@ static int hclge_set_vf_vlan_common(struct hclge_dev *hdev, int vfid, |
32 |
"Add vf vlan filter fail, ret =%d.\n", |
33 |
req0->resp_code); |
34 |
} else { |
35 |
+#define HCLGE_VF_VLAN_DEL_NO_FOUND 1 |
36 |
if (!req0->resp_code) |
37 |
return 0; |
38 |
|
39 |
+ if (req0->resp_code == HCLGE_VF_VLAN_DEL_NO_FOUND) { |
40 |
+ dev_warn(&hdev->pdev->dev, |
41 |
+ "vlan %d filter is not in vf vlan table\n", |
42 |
+ vlan); |
43 |
+ return 0; |
44 |
+ } |
45 |
+ |
46 |
dev_err(&hdev->pdev->dev, |
47 |
"Kill vf vlan filter fail, ret =%d.\n", |
48 |
req0->resp_code); |
49 |
-- |
50 |
2.19.1 |
51 |
|