This patch-set presents some fixes and minor changes to the HNS3 Ethernet Driver.
Fuyun Liang (2):
net: hns3: Fix for using wrong mask and shift in
hclge_get_ring_chain_from_mbx
net: hns3: Fix comments for hclge_get_ring_chain_from_mbx
Huazhong Tan (6):
net: hns3: Modify the order of initializing command queue register
net: hns3: Reset net device with rtnl_lock
net: hns3: Prevent to request reset frequently
net: hns3: Correct reset event status register
net: hns3: Fix return value error in hns3_reset_notify_down_enet
net: hns3: remove unnecessary ring configuration operation while
resetting
Yunsheng Lin (1):
net: hns3: Fix for reset_level default assignment probelm
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 16 ++++++----------
.../net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.c | 4 ++--
.../net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 20 +++++++++++++-------
.../net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h | 1 +
.../net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 14 ++++++++------
5 files changed, 30 insertions(+), 25 deletions(-)
--
2.7.4
From: Huazhong Tan <redacted>
Netdevice reset should not be requested frequently, a new one
must wait a moment since there may be some work not completed.
Signed-off-by: Huazhong Tan <redacted>
Signed-off-by: Peng Li <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
@@ -2495,7 +2495,7 @@ static u32 hclge_check_event_cause(struct hclge_dev *hdev, u32 *clearval)u32cmdq_src_reg;/* fetch the events from their corresponding regs */-rst_src_reg=hclge_read_dev(&hdev->hw,HCLGE_MISC_RESET_STS_REG);+rst_src_reg=hclge_read_dev(&hdev->hw,HCLGE_MISC_VECTOR_INT_STS);cmdq_src_reg=hclge_read_dev(&hdev->hw,HCLGE_VECTOR0_CMDQ_SRC_REG);/* Assumption: If by any chance reset and mailbox events are reported
From: Huazhong Tan <redacted>
Since current locking was not covering certain code where
netdev was being accessed or manipulated, this patch fixes
it.
Signed-off-by: Huazhong Tan <redacted>
Signed-off-by: Peng Li <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
From: Huazhong Tan <redacted>
The configuration of the ring will be used to reinitialize the
ring after the hardware reset is completed. So we should not
release and reacquire this configuration during reset.
Fixes: bb6b94a896d4 ("net: hns3: Add reset interface implementation in client")
Signed-off-by: Huazhong Tan <redacted>
Signed-off-by: Peng Li <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 8 --------
1 file changed, 8 deletions(-)
@@ -3436,10 +3436,6 @@ static int hns3_reset_notify_init_enet(struct hnae3_handle *handle)/* Carrier off reporting is important to ethtool even BEFORE open */netif_carrier_off(netdev);-ret=hns3_get_ring_config(priv);-if(ret)-returnret;-ret=hns3_nic_init_vector_data(priv);if(ret)returnret;
@@ -3471,10 +3467,6 @@ static int hns3_reset_notify_uninit_enet(struct hnae3_handle *handle)if(ret)netdev_err(netdev,"uninit ring error\n");-hns3_put_ring_config(priv);--priv->ring_data=NULL;-hns3_uninit_mac_addr(netdev);returnret;
From: Fuyun Liang <redacted>
Actually, hclge_get_ring_chain_from_mbx is used to get ring type, tqp id,
and int_gl index from mailbox message. So the comments is incorrect. This
patch fixes it.
Fixes: dde1a86e93ca ("net: hns3: Add mailbox support to PF driver")
Signed-off-by: Fuyun Liang <redacted>
Signed-off-by: Peng Li <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
@@ -104,13 +104,15 @@ static void hclge_free_vector_ring_chain(struct hnae3_ring_chain_node *head)}}-/* hclge_get_ring_chain_from_mbx: get ring type & tqpid from mailbox message+/* hclge_get_ring_chain_from_mbx: get ring type & tqp id & int_gl idx+*frommailboxmessage*msg[0]:opcode*msg[1]:<notrelevanttothisfunction>*msg[2]:ring_num*msg[3]:firstringtype(TX|RX)*msg[4]:firsttqpid-*msg[5]~msg[14]:otherringtypeandtqpid+*msg[5]:firstint_glidx+*msg[6]~msg[14]:otherringtype,tqpidandint_glidx*/staticinthclge_get_ring_chain_from_mbx(structhclge_mbx_vf_to_pf_cmd*req,
From: Huazhong Tan <redacted>
When doing reset, netdev has not been brought up is not an error,
it means that we do not need do the stop operation, so just return
zero.
Fixes: 76ad4f0ee747 ("net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC")
Signed-off-by: Huazhong Tan <redacted>
Signed-off-by: Peng Li <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
From: Yunsheng Lin <redacted>
handle->reset_level is assigned to HNAE3_NONE_RESET when client is
initialized, if a tx timeout happens right after initialization,
then handle->reset_level is not resetted to HNAE3_FUNC_RESET in
hclge_reset_event, which will cause reset event not properly
handled problem.
This patch fixes it by setting handle->reset_level properly when
client is initialized.
Fixes: 6d4c3981a8d8 ("net: hns3: Changes to make enet watchdog timeout func common for PF/VF")
Signed-off-by: Yunsheng Lin <redacted>
Signed-off-by: Peng Li <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
@@ -3085,7 +3085,6 @@ static int hns3_client_init(struct hnae3_handle *handle)priv->dev=&pdev->dev;priv->netdev=netdev;priv->ae_handle=handle;-priv->ae_handle->reset_level=HNAE3_NONE_RESET;priv->ae_handle->last_reset_time=jiffies;priv->tx_timeout_count=0;
@@ -3106,6 +3105,11 @@ static int hns3_client_init(struct hnae3_handle *handle)/* Carrier off reporting is important to ethtool even BEFORE open */netif_carrier_off(netdev);+if(handle->flags&HNAE3_SUPPORT_VF)+handle->reset_level=HNAE3_VF_RESET;+else+handle->reset_level=HNAE3_FUNC_RESET;+ret=hns3_get_ring_config(priv);if(ret){ret=-ENOMEM;
From: Fuyun Liang <redacted>
HCLGE_INT_GL_IDX_M and HCLGE_INT_GL_IDX_S are used to set fireware
cmd. When getting int_gl value from mailbox message, we should use
HNAE3_RING_GL_IDX_M and HNAE3_RING_GL_IDX_S.
Fixes: 79eee4108541 ("net: hns3: add int_gl_idx setup for VF")
Signed-off-by: Fuyun Liang <redacted>
Signed-off-by: Peng Li <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
From: Huazhong Tan <redacted>
According to hardware's description, the head pointer register should
be written before the tail pointer register while doing command queue
initialization.
Signed-off-by: Huazhong Tan <redacted>
Signed-off-by: Peng Li <redacted>
Signed-off-by: Salil Mehta <redacted>
---
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
From: Sergei Shtylyov <hidden> Date: 2018-07-17 09:37:12
Hello!
On 7/16/2018 6:36 PM, Salil Mehta wrote:
From: Yunsheng Lin <redacted>
handle->reset_level is assigned to HNAE3_NONE_RESET when client is
initialized, if a tx timeout happens right after initialization,
then handle->reset_level is not resetted to HNAE3_FUNC_RESET in
s/resetted/reset/.
hclge_reset_event, which will cause reset event not properly
handled problem.
This patch fixes it by setting handle->reset_level properly when
client is initialized.
Fixes: 6d4c3981a8d8 ("net: hns3: Changes to make enet watchdog timeout func common for PF/VF")
Signed-off-by: Yunsheng Lin <redacted>
Signed-off-by: Peng Li <redacted>
Signed-off-by: Salil Mehta <redacted>
-----Original Message-----
From: netdev-owner@vger.kernel.org [mailto:netdev-
owner@vger.kernel.org] On Behalf Of Sergei Shtylyov
Sent: Tuesday, July 17, 2018 10:37 AM
To: Salil Mehta <redacted>; davem@davemloft.net
Cc: Zhuangyuzeng (Yisen) <redacted>; lipeng (Y)
[off-list ref]; mehta.salil@opnsrc.net; netdev@vger.kernel.org;
linux-kernel@vger.kernel.org; Linuxarm [off-list ref];
linyunsheng [off-list ref]
Subject: Re: [PATCH net-next 7/9] net: hns3: Fix for reset_level
default assignment probelm
Hello!
On 7/16/2018 6:36 PM, Salil Mehta wrote:
quoted
From: Yunsheng Lin <redacted>
handle->reset_level is assigned to HNAE3_NONE_RESET when client is
initialized, if a tx timeout happens right after initialization,
then handle->reset_level is not resetted to HNAE3_FUNC_RESET in
s/resetted/reset/.
Thanks for looking through. Will take care in future submissions.
Best regards
Salil
quoted
hclge_reset_event, which will cause reset event not properly
handled problem.
This patch fixes it by setting handle->reset_level properly when
client is initialized.
Fixes: 6d4c3981a8d8 ("net: hns3: Changes to make enet watchdog
timeout func common for PF/VF")
quoted
Signed-off-by: Yunsheng Lin <redacted>
Signed-off-by: Peng Li <redacted>
Signed-off-by: Salil Mehta <redacted>