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 51779A0A02 for ; Mon, 17 May 2021 15:50:56 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2EBF7410F1; Mon, 17 May 2021 15:50:56 +0200 (CEST) Received: from szxga07-in.huawei.com (szxga07-in.huawei.com [45.249.212.35]) by mails.dpdk.org (Postfix) with ESMTP id 1DACD410EA for ; Mon, 17 May 2021 15:50:54 +0200 (CEST) Received: from dggems705-chm.china.huawei.com (unknown [172.30.72.58]) by szxga07-in.huawei.com (SkyGuard) with ESMTP id 4FkL795KwvzCsVV; Mon, 17 May 2021 21:48:05 +0800 (CST) Received: from dggeme756-chm.china.huawei.com (10.3.19.102) by dggems705-chm.china.huawei.com (10.3.19.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.2176.2; Mon, 17 May 2021 21:50:50 +0800 Received: from localhost.localdomain (10.69.192.56) by dggeme756-chm.china.huawei.com (10.3.19.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2176.2; Mon, 17 May 2021 21:50:50 +0800 From: "Min Hu (Connor)" To: CC: , Date: Mon, 17 May 2021 21:50:44 +0800 Message-ID: <1621259445-5182-3-git-send-email-humin29@huawei.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1621259445-5182-1-git-send-email-humin29@huawei.com> References: <1621259445-5182-1-git-send-email-humin29@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.69.192.56] X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To dggeme756-chm.china.huawei.com (10.3.19.102) X-CFilter-Loop: Reflected Subject: [dpdk-stable] [PATCH 20.11 3/4] net/hns3: fix timing in mailbox X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" From: Chengchang Tang [ upstream commit d566bfcff0c7bfe167f6c520d4fd5b0104130af6 ] Currently, when processing MBX messages, the system timestamp is obtained to determine whether timeout occurs. However, the gettimeofday function is not monotonically increasing. Therefore, this may lead to incorrect judgment or difficulty exiting the loop. And actually, in this scenario, it is not necessary to obtain the timestamp. This patch deletes the call to the gettimeofday function during MBX message processing. Fixes: 463e748964f5 ("net/hns3: support mailbox") Cc: stable@dpdk.org Signed-off-by: Chengchang Tang Signed-off-by: Min Hu (Connor) --- drivers/net/hns3/hns3_mbx.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c index 11e5235..2a479f2 100644 --- a/drivers/net/hns3/hns3_mbx.c +++ b/drivers/net/hns3/hns3_mbx.c @@ -61,13 +61,12 @@ static int hns3_get_mbx_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode, uint8_t *resp_data, uint16_t resp_len) { -#define HNS3_MAX_RETRY_MS 500 +#define HNS3_MAX_RETRY_US 500000 #define HNS3_WAIT_RESP_US 100 struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw); struct hns3_mbx_resp_status *mbx_resp; + uint32_t wait_time = 0; bool received; - uint64_t now; - uint64_t end; if (resp_len > HNS3_MBX_MAX_RESP_DATA_SIZE) { hns3_err(hw, "VF mbx response len(=%u) exceeds maximum(=%d)", @@ -75,9 +74,7 @@ hns3_get_mbx_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode, return -EINVAL; } - now = get_timeofday_ms(); - end = now + HNS3_MAX_RETRY_MS; - while (now < end) { + while (wait_time < HNS3_MAX_RETRY_US) { if (rte_atomic16_read(&hw->reset.disable_cmd)) { hns3_err(hw, "Don't wait for mbx respone because of " "disable_cmd"); @@ -103,10 +100,10 @@ hns3_get_mbx_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode, if (received) break; - now = get_timeofday_ms(); + wait_time += HNS3_WAIT_RESP_US; } hw->mbx_resp.req_msg_data = 0; - if (now >= end) { + if (wait_time >= HNS3_MAX_RETRY_US) { hns3_mbx_proc_timeout(hw, code, subcode); return -ETIME; } -- 2.7.4