68 lines
2.4 KiB
Diff
68 lines
2.4 KiB
Diff
From 7583eb532f7e773691d2a04f98a4407333b06524 Mon Sep 17 00:00:00 2001
|
|
From: Jie Wang <wangjie125@huawei.com>
|
|
Date: Mon, 27 Dec 2021 19:41:51 +0800
|
|
Subject: [PATCH 172/283] net: hns3: fix incorrect components info of ethtool
|
|
--reset command
|
|
|
|
mainline inclusion
|
|
from mainline-v5.16-rc3
|
|
commit 82229c4dbb8a2780f05fa1bab29c97ef7bcd21bb
|
|
category: bugfix
|
|
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I8EN3D
|
|
CVE: NA
|
|
|
|
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=82229c4dbb8a2780f05fa1bab29c97ef7bcd21bb
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Currently, HNS3 driver doesn't clear the reset flags of components after
|
|
successfully executing reset, it causes userspace info of
|
|
"Components reset" and "Components not reset" is incorrect.
|
|
|
|
So fix this problem by clear corresponding reset flag after reset process.
|
|
|
|
Fixes: ddccc5e368a3 ("net: hns3: add support for triggering reset by ethtool")
|
|
Signed-off-by: Jie Wang <wangjie125@huawei.com>
|
|
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
|
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
Reviewed-by: Yongxin Li <liyongxin1@huawei.com>
|
|
Signed-off-by: Junxin Chen <chenjunxin1@huawei.com>
|
|
Signed-off-by: Zheng Zengkai <zhengzengkai@huawei.com>
|
|
Signed-off-by: Xiaodong Li <lixiaodong67@huawei.com>
|
|
---
|
|
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
|
|
index 752cc41f529e..a7f4820f6f8c 100644
|
|
--- a/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
|
|
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
|
|
@@ -993,6 +993,7 @@ static int hns3_set_reset(struct net_device *netdev, u32 *flags)
|
|
struct hnae3_ae_dev *ae_dev = pci_get_drvdata(h->pdev);
|
|
const struct hnae3_ae_ops *ops = h->ae_algo->ops;
|
|
const struct hns3_reset_type_map *rst_type_map;
|
|
+ enum ethtool_reset_flags rst_flags;
|
|
u32 i, size;
|
|
|
|
if (ops->ae_dev_resetting && ops->ae_dev_resetting(h))
|
|
@@ -1012,6 +1013,7 @@ static int hns3_set_reset(struct net_device *netdev, u32 *flags)
|
|
for (i = 0; i < size; i++) {
|
|
if (rst_type_map[i].rst_flags == *flags) {
|
|
rst_type = rst_type_map[i].rst_type;
|
|
+ rst_flags = rst_type_map[i].rst_flags;
|
|
break;
|
|
}
|
|
}
|
|
@@ -1027,6 +1029,8 @@ static int hns3_set_reset(struct net_device *netdev, u32 *flags)
|
|
|
|
ops->reset_event(h->pdev, h);
|
|
|
|
+ *flags &= ~rst_flags;
|
|
+
|
|
return 0;
|
|
}
|
|
|
|
--
|
|
2.34.1
|
|
|