Sync some patchs from upstreaming and modifies are as follow: - net/hns3: fix mailbox sync - net/hns3: report maximum buffer size - ethdev: add maximum Rx buffer size - app/procinfo: show RSS hash algorithm - ethdev: get RSS algorithm names - app/procinfo: adjust format of RSS info - app/procinfo: fix RSS info - net/hns3: support setting and querying RSS hash function - net/hns3: report RSS hash algorithms capability - ethdev: set and query RSS hash algorithm - ethdev: clarify RSS related fields usage - net/hns3: fix uninitialized hash algo value - net/hns3: keep set/get algo key functions local - net/hns3: fix some error logs - net/hns3: fix some return values - net/hns3: fix LRO offload to report - net/hns3: fix setting DCB capability - app/testpmd: ease configuring all offloads - net/hns3: refactor interrupt state query - net/hns3: fix IMP or global reset - net/hns3: fix multiple reset detected log - net/hns3: remove reset log in secondary - net/hns3: fix double stats for IMP and global reset - net/hns3: fix crash for NEON and SVE - net/hns3: fix unchecked Rx free threshold - net/hns3: fix typo in function name - net/hns3: fix build warning - telemetry: fix repeat display when callback don't init dict Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
62 lines
2.5 KiB
Diff
62 lines
2.5 KiB
Diff
From 9406299efd12990e91299d6abbe1b191d0360101 Mon Sep 17 00:00:00 2001
|
|
From: Dengdui Huang <huangdengdui@huawei.com>
|
|
Date: Fri, 27 Oct 2023 14:09:42 +0800
|
|
Subject: [PATCH 372/394] net/hns3: fix double stats for IMP and global reset
|
|
|
|
[ upstream commit c48e74370c5eafbe8db5c826a797344e4fdf8f49 ]
|
|
|
|
There is a stats counter for IMP and global reset in PF driver.
|
|
hns3 driver has two following task to detect reset event:
|
|
(1) interrupt handled task(A): triggered by interrupt and detect
|
|
which reset level. And the reset service will be executed
|
|
after 10us.
|
|
(2) polling task(B): scan reset source register to detect if
|
|
driver has to do reset. And the reset service will be executed
|
|
after deferred 3s.
|
|
|
|
They'll both count the number of one reset plus 1.
|
|
Task(A) adds it before doing the reset service. And in the reset service,
|
|
task(B) adds it if hw->reset.schedule is 'SCHEDULE_REQUESTED'.
|
|
Normally, this reset counter is just added by 1 once. Unfortunately,
|
|
this counter is added by 2 in the following case:
|
|
1. Task(B) detect the reset event, like IMP. hw->reset.schedule is
|
|
set to 'SCHEDULE_REQUESTED'.
|
|
2. Task(A) is just triggered before running the reset service of task(B).
|
|
Note: the reset counter is added by 1 at this moment before running
|
|
the reset service of task(A). Additionally, the reset service of
|
|
task(B) is canceled in task(A) because of schedule status being
|
|
'SCHEDULE_REQUESTED'.
|
|
3. Then the reset service of task(A) is executed at last.
|
|
Note: The reset counter is added by 1 again in this step because of
|
|
schedule status still being 'SCHEDULE_REQUESTED'.
|
|
|
|
So this patch fix it by setting the scheduling status to
|
|
'SCHEDULE_REQUESTED' in step 2.
|
|
|
|
Fixes: 2790c6464725 ("net/hns3: support device reset")
|
|
Cc: stable@dpdk.org
|
|
|
|
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
|
|
---
|
|
drivers/net/hns3/hns3_intr.c | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/net/hns3/hns3_intr.c b/drivers/net/hns3/hns3_intr.c
|
|
index 57679254ee..51711244b5 100644
|
|
--- a/drivers/net/hns3/hns3_intr.c
|
|
+++ b/drivers/net/hns3/hns3_intr.c
|
|
@@ -2413,8 +2413,8 @@ hns3_schedule_reset(struct hns3_adapter *hns)
|
|
if (__atomic_load_n(&hw->reset.schedule, __ATOMIC_RELAXED) ==
|
|
SCHEDULE_DEFERRED)
|
|
rte_eal_alarm_cancel(hw->reset.ops->reset_service, hns);
|
|
- else
|
|
- __atomic_store_n(&hw->reset.schedule, SCHEDULE_REQUESTED,
|
|
+
|
|
+ __atomic_store_n(&hw->reset.schedule, SCHEDULE_REQUESTED,
|
|
__ATOMIC_RELAXED);
|
|
|
|
rte_eal_alarm_set(SWITCH_CONTEXT_US, hw->reset.ops->reset_service, hns);
|
|
--
|
|
2.23.0
|
|
|