2024-05-07 14:16:37

by Jijie Shao

[permalink] [raw]
Subject: [PATCH V3 net 0/7] There are some bugfix for the HNS3 ethernet driver

There are some bugfix for the HNS3 ethernet driver

---
changeLog:
v2 -> v3:
- Fix coding errors in "net: hns3: using user configure after hardware reset", suggested by Simon Horman
https://lore.kernel.org/all/[email protected]/
v1 -> v2:
- Adjust the code sequence to completely eliminate the race window, suggested by Jiri Pirko
v1: https://lore.kernel.org/all/[email protected]/
---

Jian Shen (1):
net: hns3: direct return when receive a unknown mailbox message

Peiyang Wang (4):
net: hns3: using user configure after hardware reset
net: hns3: change type of numa_node_mask as nodemask_t
net: hns3: release PTP resources if pf initialization failed
net: hns3: use appropriate barrier function after setting a bit value

Yonglong Liu (2):
net: hns3: fix port vlan filter not disabled issue
net: hns3: fix kernel crash when devlink reload during initialization

drivers/net/ethernet/hisilicon/hns3/hnae3.h | 2 +-
.../hisilicon/hns3/hns3pf/hclge_main.c | 52 ++++++++++---------
.../hisilicon/hns3/hns3pf/hclge_main.h | 5 +-
.../hisilicon/hns3/hns3pf/hclge_mbx.c | 7 +--
.../hisilicon/hns3/hns3vf/hclgevf_main.c | 20 ++++---
.../hisilicon/hns3/hns3vf/hclgevf_main.h | 2 +-
6 files changed, 47 insertions(+), 41 deletions(-)

--
2.30.0



2024-05-07 14:18:13

by Jijie Shao

[permalink] [raw]
Subject: [PATCH V3 net 3/7] net: hns3: change type of numa_node_mask as nodemask_t

From: Peiyang Wang <[email protected]>

It provides nodemask_t to describe the numa node mask in kernel. To
improve transportability, change the type of numa_node_mask as nodemask_t.

Fixes: 38caee9d3ee8 ("net: hns3: Add support of the HNAE3 framework")
Signed-off-by: Peiyang Wang <[email protected]>
Signed-off-by: Jijie Shao <[email protected]>
Reviewed-by: Simon Horman <[email protected]>
---
drivers/net/ethernet/hisilicon/hns3/hnae3.h | 2 +-
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 6 ++++--
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h | 2 +-
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 7 ++++---
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.h | 2 +-
5 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.h b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
index f19f1e1d1f9f..133c94646c21 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hnae3.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.h
@@ -897,7 +897,7 @@ struct hnae3_handle {
struct hnae3_roce_private_info rinfo;
};

- u32 numa_node_mask; /* for multi-chip support */
+ nodemask_t numa_node_mask; /* for multi-chip support */

enum hnae3_port_base_vlan_state port_base_vlan_state;

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index 8043f1795dc7..ecff9b426527 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -1769,7 +1769,8 @@ static int hclge_vport_setup(struct hclge_vport *vport, u16 num_tqps)

nic->pdev = hdev->pdev;
nic->ae_algo = &ae_algo;
- nic->numa_node_mask = hdev->numa_node_mask;
+ bitmap_copy(nic->numa_node_mask.bits, hdev->numa_node_mask.bits,
+ MAX_NUMNODES);
nic->kinfo.io_base = hdev->hw.hw.io_base;

ret = hclge_knic_setup(vport, num_tqps,
@@ -2461,7 +2462,8 @@ static int hclge_init_roce_base_info(struct hclge_vport *vport)

roce->pdev = nic->pdev;
roce->ae_algo = nic->ae_algo;
- roce->numa_node_mask = nic->numa_node_mask;
+ bitmap_copy(roce->numa_node_mask.bits, nic->numa_node_mask.bits,
+ MAX_NUMNODES);

return 0;
}
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h
index e3c69be8256f..3a9186457ad8 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h
@@ -894,7 +894,7 @@ struct hclge_dev {

u16 fdir_pf_filter_count; /* Num of guaranteed filters for this PF */
u16 num_alloc_vport; /* Num vports this driver supports */
- u32 numa_node_mask;
+ nodemask_t numa_node_mask;
u16 rx_buf_len;
u16 num_tx_desc; /* desc num of per tx queue */
u16 num_rx_desc; /* desc num of per rx queue */
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
index 0aa9beefd1c7..b57111252d07 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c
@@ -412,7 +412,8 @@ static int hclgevf_set_handle_info(struct hclgevf_dev *hdev)

nic->ae_algo = &ae_algovf;
nic->pdev = hdev->pdev;
- nic->numa_node_mask = hdev->numa_node_mask;
+ bitmap_copy(nic->numa_node_mask.bits, hdev->numa_node_mask.bits,
+ MAX_NUMNODES);
nic->flags |= HNAE3_SUPPORT_VF;
nic->kinfo.io_base = hdev->hw.hw.io_base;

@@ -2082,8 +2083,8 @@ static int hclgevf_init_roce_base_info(struct hclgevf_dev *hdev)

roce->pdev = nic->pdev;
roce->ae_algo = nic->ae_algo;
- roce->numa_node_mask = nic->numa_node_mask;
-
+ bitmap_copy(roce->numa_node_mask.bits, nic->numa_node_mask.bits,
+ MAX_NUMNODES);
return 0;
}

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.h b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.h
index a73f2bf3a56a..cccef3228461 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.h
@@ -236,7 +236,7 @@ struct hclgevf_dev {
u16 rss_size_max; /* HW defined max RSS task queue */

u16 num_alloc_vport; /* num vports this driver supports */
- u32 numa_node_mask;
+ nodemask_t numa_node_mask;
u16 rx_buf_len;
u16 num_tx_desc; /* desc num of per tx queue */
u16 num_rx_desc; /* desc num of per rx queue */
--
2.30.0


2024-05-07 14:19:22

by Jijie Shao

[permalink] [raw]
Subject: [PATCH V3 net 6/7] net: hns3: fix port vlan filter not disabled issue

From: Yonglong Liu <[email protected]>

According to hardware limitation, for device support modify
VLAN filter state but not support bypass port VLAN filter,
it should always disable the port VLAN filter. but the driver
enables port VLAN filter when initializing, if there is no
VLAN(except VLAN 0) id added, the driver will disable it
in service task. In most time, it works fine. But there is
a time window before the service task shceduled and net device
being registered. So if user adds VLAN at this time, the driver
will not update the VLAN filter state, and the port VLAN filter
remains enabled.

To fix the problem, if support modify VLAN filter state but not
support bypass port VLAN filter, set the port vlan filter to "off".

Fixes: 184cd221a863 ("net: hns3: disable port VLAN filter when support function level VLAN filter control")
Fixes: 2ba306627f59 ("net: hns3: add support for modify VLAN filter state")
Signed-off-by: Yonglong Liu <[email protected]>
Signed-off-by: Jijie Shao <[email protected]>
Reviewed-by: Simon Horman <[email protected]>
---
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index e3d6a64b4575..0773124440e9 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -9910,6 +9910,7 @@ static int hclge_set_vlan_protocol_type(struct hclge_dev *hdev)
static int hclge_init_vlan_filter(struct hclge_dev *hdev)
{
struct hclge_vport *vport;
+ bool enable = true;
int ret;
int i;

@@ -9929,8 +9930,12 @@ static int hclge_init_vlan_filter(struct hclge_dev *hdev)
vport->cur_vlan_fltr_en = true;
}

+ if (test_bit(HNAE3_DEV_SUPPORT_VLAN_FLTR_MDF_B, hdev->ae_dev->caps) &&
+ !test_bit(HNAE3_DEV_SUPPORT_PORT_VLAN_BYPASS_B, hdev->ae_dev->caps))
+ enable = false;
+
return hclge_set_vlan_filter_ctrl(hdev, HCLGE_FILTER_TYPE_PORT,
- HCLGE_FILTER_FE_INGRESS, true, 0);
+ HCLGE_FILTER_FE_INGRESS, enable, 0);
}

static int hclge_init_vlan_type(struct hclge_dev *hdev)
--
2.30.0


2024-05-07 17:52:13

by Markus Elfring

[permalink] [raw]
Subject: Re: [PATCH V3 net 6/7] net: hns3: fix port vlan filter not disabled issue


> will not update the VLAN filter state, and the port VLAN filter
> remains enabled.

I suggest to use more than 64 characters in further lines of such
a change description.


> To fix the problem, if support modify VLAN filter state but not
> support bypass port VLAN filter, …

I find a few wording adjustments helpful in this changelog.

Regards,
Markus

2024-05-09 09:02:03

by patchwork-bot+netdevbpf

[permalink] [raw]
Subject: Re: [PATCH V3 net 0/7] There are some bugfix for the HNS3 ethernet driver

Hello:

This series was applied to netdev/net.git (main)
by Paolo Abeni <[email protected]>:

On Tue, 7 May 2024 21:42:17 +0800 you wrote:
> There are some bugfix for the HNS3 ethernet driver
>
> ---
> changeLog:
> v2 -> v3:
> - Fix coding errors in "net: hns3: using user configure after hardware reset", suggested by Simon Horman
> https://lore.kernel.org/all/[email protected]/
> v1 -> v2:
> - Adjust the code sequence to completely eliminate the race window, suggested by Jiri Pirko
> v1: https://lore.kernel.org/all/[email protected]/
>
> [...]

Here is the summary with links:
- [V3,net,1/7] net: hns3: using user configure after hardware reset
https://git.kernel.org/netdev/net/c/05eb60e9648c
- [V3,net,2/7] net: hns3: direct return when receive a unknown mailbox message
https://git.kernel.org/netdev/net/c/669554c512d2
- [V3,net,3/7] net: hns3: change type of numa_node_mask as nodemask_t
https://git.kernel.org/netdev/net/c/6639a7b95321
- [V3,net,4/7] net: hns3: release PTP resources if pf initialization failed
https://git.kernel.org/netdev/net/c/950aa4239989
- [V3,net,5/7] net: hns3: use appropriate barrier function after setting a bit value
https://git.kernel.org/netdev/net/c/094c28122852
- [V3,net,6/7] net: hns3: fix port vlan filter not disabled issue
https://git.kernel.org/netdev/net/c/f5db7a3b65c8
- [V3,net,7/7] net: hns3: fix kernel crash when devlink reload during initialization
https://git.kernel.org/netdev/net/c/35d92abfbad8

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html