Update DPDK version from 19.11 to 20.11 and also support hns3 PMD for Kunpeng 920 and Kunpeng 930. Signed-off-by: speech_white <humin29@huawei.com>
58 lines
2.0 KiB
Diff
58 lines
2.0 KiB
Diff
From f66e027f9088852b8047f3e6c0e6ff3535c4c172 Mon Sep 17 00:00:00 2001
|
|
From: Hongbo Zheng <zhenghongbo3@huawei.com>
|
|
Date: Wed, 31 Mar 2021 18:01:37 +0800
|
|
Subject: [PATCH 079/189] net/hns3: fix FLR miss detection
|
|
|
|
When FLR occurs, the head pointer register of
|
|
the command queue will be cleared, resulting in
|
|
abnormal detection of the head pointer register
|
|
of the command queue. At present, FLR is detected
|
|
in this way, and the reset recovery process is
|
|
executed.
|
|
|
|
However, when FLR occurs, the header pointer
|
|
register of the command queue is not necessarily
|
|
abnormal. For example, when the driver runs
|
|
normally, the value of the header pointer register
|
|
of the command queue may also be 0, which will
|
|
lead to the miss detection of FLR.
|
|
|
|
Therefore, the judgment that whether the base
|
|
address register of command queue is 0 is added
|
|
to ensure that FLR not miss detection.
|
|
|
|
Fixes: 2790c6464725 ("net/hns3: support device reset")
|
|
Cc: stable@dpdk.org
|
|
|
|
Signed-off-by: Hongbo Zheng <zhenghongbo3@huawei.com>
|
|
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
|
|
---
|
|
drivers/net/hns3/hns3_cmd.c | 8 +++++---
|
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/net/hns3/hns3_cmd.c b/drivers/net/hns3/hns3_cmd.c
|
|
index f8d8b0a..1bf1c32 100644
|
|
--- a/drivers/net/hns3/hns3_cmd.c
|
|
+++ b/drivers/net/hns3/hns3_cmd.c
|
|
@@ -195,12 +195,14 @@ hns3_cmd_csq_clean(struct hns3_hw *hw)
|
|
{
|
|
struct hns3_cmq_ring *csq = &hw->cmq.csq;
|
|
uint32_t head;
|
|
+ uint32_t addr;
|
|
int clean;
|
|
|
|
head = hns3_read_dev(hw, HNS3_CMDQ_TX_HEAD_REG);
|
|
- if (!is_valid_csq_clean_head(csq, head)) {
|
|
- hns3_err(hw, "wrong cmd head (%u, %u-%u)", head,
|
|
- csq->next_to_use, csq->next_to_clean);
|
|
+ addr = hns3_read_dev(hw, HNS3_CMDQ_TX_ADDR_L_REG);
|
|
+ if (!is_valid_csq_clean_head(csq, head) || addr == 0) {
|
|
+ hns3_err(hw, "wrong cmd addr(%0x) head (%u, %u-%u)", addr, head,
|
|
+ csq->next_to_use, csq->next_to_clean);
|
|
if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
|
|
__atomic_store_n(&hw->reset.disable_cmd, 1,
|
|
__ATOMIC_RELAXED);
|
|
--
|
|
2.7.4
|
|
|