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>
65 lines
2.2 KiB
Diff
65 lines
2.2 KiB
Diff
From ee9d7f7372170853e7538256c5e764bf154f3132 Mon Sep 17 00:00:00 2001
|
|
From: Huisong Li <lihuisong@huawei.com>
|
|
Date: Tue, 30 Mar 2021 20:53:25 +0800
|
|
Subject: [PATCH 076/189] net/hns3: support wait in link update
|
|
|
|
There are two APIs in ethdev layer to get link status of device, namely,
|
|
"rte_eth_link_get" and "rte_eth_link_get_nowait". When the device link
|
|
is unstable or auto-negotiation is in progress, the first API supports
|
|
the function of waiting for the NIC to link up, and the maximum waiting
|
|
time is 9 seconds based on DPDK Documentation. For the hns3 PMD driver,
|
|
the link can be established within 2 seconds.
|
|
|
|
Signed-off-by: Huisong Li <lihuisong@huawei.com>
|
|
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
|
|
---
|
|
drivers/net/hns3/hns3_ethdev.c | 26 +++++++++++++++++++-------
|
|
1 file changed, 19 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c
|
|
index aef1ebf..05f199e 100644
|
|
--- a/drivers/net/hns3/hns3_ethdev.c
|
|
+++ b/drivers/net/hns3/hns3_ethdev.c
|
|
@@ -2779,19 +2779,31 @@ hns3_setup_linkstatus(struct rte_eth_dev *eth_dev,
|
|
}
|
|
|
|
static int
|
|
-hns3_dev_link_update(struct rte_eth_dev *eth_dev,
|
|
- __rte_unused int wait_to_complete)
|
|
+hns3_dev_link_update(struct rte_eth_dev *eth_dev, int wait_to_complete)
|
|
{
|
|
+#define HNS3_LINK_CHECK_INTERVAL 100 /* 100ms */
|
|
+#define HNS3_MAX_LINK_CHECK_TIMES 20 /* 2s (100 * 20ms) in total */
|
|
+
|
|
struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
|
|
+ uint32_t retry_cnt = HNS3_MAX_LINK_CHECK_TIMES;
|
|
struct hns3_mac *mac = &hw->mac;
|
|
struct rte_eth_link new_link;
|
|
int ret;
|
|
|
|
- ret = hns3_update_port_link_info(eth_dev);
|
|
- if (ret) {
|
|
- mac->link_status = ETH_LINK_DOWN;
|
|
- hns3_err(hw, "failed to get port link info, ret = %d.", ret);
|
|
- }
|
|
+ do {
|
|
+ ret = hns3_update_port_link_info(eth_dev);
|
|
+ if (ret) {
|
|
+ mac->link_status = ETH_LINK_DOWN;
|
|
+ hns3_err(hw, "failed to get port link info, ret = %d.",
|
|
+ ret);
|
|
+ break;
|
|
+ }
|
|
+
|
|
+ if (!wait_to_complete || mac->link_status == ETH_LINK_UP)
|
|
+ break;
|
|
+
|
|
+ rte_delay_ms(HNS3_LINK_CHECK_INTERVAL);
|
|
+ } while (retry_cnt--);
|
|
|
|
memset(&new_link, 0, sizeof(new_link));
|
|
hns3_setup_linkstatus(eth_dev, &new_link);
|
|
--
|
|
2.7.4
|
|
|