dpdk/0133-net-hns3-fix-processing-link-status-message-on-PF.patch
speech_white 3a8995b1ad Update DPDK baseline version
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>
2021-06-28 00:52:34 +00:00

62 lines
2.1 KiB
Diff

From 34cf459a8af7788e68e9614c82a1cbcd38d5f55c Mon Sep 17 00:00:00 2001
From: Chengwen Feng <fengchengwen@huawei.com>
Date: Thu, 22 Apr 2021 09:55:50 +0800
Subject: [PATCH 133/189] net/hns3: fix processing link status message on PF
The opcode of the link status notification message reported by the
firmware is zero, it will be filtered out because driver treats it as
already processed message. As a result, the PF can't update the link
status in a timely manner.
Because only VF can set opcode to zero when processing mailbox message,
we add a judgment to make sure the PF messages will not be filtered out.
Fixes: dbbbad23e380 ("net/hns3: fix VF handling LSC event in secondary process")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
drivers/net/hns3/hns3_mbx.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
index 6203af5..ea6c0c3 100644
--- a/drivers/net/hns3/hns3_mbx.c
+++ b/drivers/net/hns3/hns3_mbx.c
@@ -438,16 +438,19 @@ hns3_handle_mbx_msg_out_intr(struct hns3_hw *hw)
void
hns3_dev_handle_mbx_msg(struct hns3_hw *hw)
{
+ struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
struct hns3_cmq_ring *crq = &hw->cmq.crq;
struct hns3_mbx_pf_to_vf_cmd *req;
struct hns3_cmd_desc *desc;
+ bool handle_out;
uint8_t opcode;
uint16_t flag;
rte_spinlock_lock(&hw->cmq.crq.lock);
- if (rte_eal_process_type() != RTE_PROC_PRIMARY ||
- !rte_thread_is_intr()) {
+ handle_out = (rte_eal_process_type() != RTE_PROC_PRIMARY ||
+ !rte_thread_is_intr()) && hns->is_vf;
+ if (handle_out) {
/*
* Currently, any threads in the primary and secondary processes
* could send mailbox sync request, so it will need to process
@@ -491,7 +494,8 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)
continue;
}
- if (desc->opcode == 0) {
+ handle_out = hns->is_vf && desc->opcode == 0;
+ if (handle_out) {
/* Message already processed by other thread */
crq->desc[crq->next_to_use].flag = 0;
hns3_mbx_ring_ptr_move_crq(crq);
--
2.7.4