From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 290F5A0547; Thu, 22 Apr 2021 03:55:51 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0017341C28; Thu, 22 Apr 2021 03:55:46 +0200 (CEST) Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) by mails.dpdk.org (Postfix) with ESMTP id 0345941C11 for ; Thu, 22 Apr 2021 03:55:44 +0200 (CEST) Received: from DGGEMS406-HUB.china.huawei.com (unknown [172.30.72.58]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4FQgRF0CgVzPt8f for ; Thu, 22 Apr 2021 09:52:41 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by DGGEMS406-HUB.china.huawei.com (10.3.19.206) with Microsoft SMTP Server id 14.3.498.0; Thu, 22 Apr 2021 09:55:41 +0800 From: "Min Hu (Connor)" To: CC: Date: Thu, 22 Apr 2021 09:55:50 +0800 Message-ID: <1619056552-43937-3-git-send-email-humin29@huawei.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1619056552-43937-1-git-send-email-humin29@huawei.com> References: <1619056552-43937-1-git-send-email-humin29@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.69.192.56] X-CFilter-Loop: Reflected Subject: [dpdk-dev] [PATCH 2/4] net/hns3: fix PF miss link status notify message X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Chengwen Feng 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 process mailbox message, so we add a judgment to make sure the PF messages will not filter out. Fixes: dbbbad23e380 ("net/hns3: fix VF handling LSC event in secondary process") Cc: stable@dpdk.org Signed-off-by: Chengwen Feng Signed-off-by: Min Hu (Connor) --- 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 3b35c02..ba04ac9 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