Message ID | 20240307010115.3054770-7-shaojijie@huawei.com (mailing list archive) |
---|---|
State | Superseded |
Commit | 216bc415d6631e769e2bd2266e2017f89a8b78f9 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | There are some bugfix for the HNS3 ethernet driver | expand |
> -----Original Message----- > From: Jijie Shao <shaojijie@huawei.com> > Sent: Thursday, March 7, 2024 6:31 AM > To: yisen.zhuang@huawei.com; salil.mehta@huawei.com; > davem@davemloft.net; edumazet@google.com; kuba@kernel.org; > pabeni@redhat.com > Cc: shenjian15@huawei.com; wangjie125@huawei.com; > liuyonglong@huawei.com; shaojijie@huawei.com; netdev@vger.kernel.org; > linux-kernel@vger.kernel.org > Subject: [EXTERNAL] [PATCH net 6/8] net: hns3: fix reset timeout under full > functions and queues > > From: Peiyang Wang <wangpeiyang1@huawei.com> > > The cmdq reset command times out when all VFs are enabled and the > queue is full. The hardware processing time exceeds the timeout set by the > driver. > In order to avoid the above extreme situations, the driver extends the reset > timeout to 1 second. > Reviewed-by: Sunil Goutham <sgoutham@marvell.com> But one observation, loop of udelay(1) for 1sec seems a lot, probably better to use usleep_range().
on 2024/3/7 19:24, Sunil Kovvuri Goutham wrote: >> In order to avoid the above extreme situations, the driver extends the reset >> timeout to 1 second. >> > Reviewed-by: Sunil Goutham <sgoutham@marvell.com> > > But one observation, loop of udelay(1) for 1sec seems a lot, probably better to use usleep_range(). but this is protected by splock, so cannot use usleep_range().
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_cmd.c b/drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_cmd.c index d92ad6082d8e..652d71326231 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_cmd.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_cmd.c @@ -351,7 +351,7 @@ static int hclge_comm_cmd_csq_done(struct hclge_comm_hw *hw) static u32 hclge_get_cmdq_tx_timeout(u16 opcode, u32 tx_timeout) { static const struct hclge_cmdq_tx_timeout_map cmdq_tx_timeout_map[] = { - {HCLGE_OPC_CFG_RST_TRIGGER, HCLGE_COMM_CMDQ_TX_TIMEOUT_500MS}, + {HCLGE_OPC_CFG_RST_TRIGGER, HCLGE_COMM_CMDQ_CFG_RST_TIMEOUT}, }; u32 i; diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_cmd.h b/drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_cmd.h index 533c19d25e4f..552396518e08 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_cmd.h +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_common/hclge_comm_cmd.h @@ -55,7 +55,7 @@ #define HCLGE_COMM_NIC_CMQ_DESC_NUM_S 3 #define HCLGE_COMM_NIC_CMQ_DESC_NUM 1024 #define HCLGE_COMM_CMDQ_TX_TIMEOUT_DEFAULT 30000 -#define HCLGE_COMM_CMDQ_TX_TIMEOUT_500MS 500000 +#define HCLGE_COMM_CMDQ_CFG_RST_TIMEOUT 1000000 enum hclge_opcode_type { /* Generic commands */