[dpdk-dev] [PATCH 3/4] net/sfc: report correct link status when port is not started

Andrew Rybchenko arybchenko at solarflare.com
Thu Jan 12 10:03:22 CET 2017


Fixes: 215e8b89d8a8 ("net/sfc: implement device operation to retrieve link info")

Signed-off-by: Andrew Rybchenko <arybchenko at solarflare.com>
Reviewed-by: Andrew Lee <alee at solarflare.com>
---
 drivers/net/sfc/sfc_ethdev.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c
index d13b6d6..3ad9ada 100644
--- a/drivers/net/sfc/sfc_ethdev.c
+++ b/drivers/net/sfc/sfc_ethdev.c
@@ -188,14 +188,17 @@
 
 	sfc_log_init(sa, "entry");
 
-	if (sa->state != SFC_ADAPTER_STARTED)
-		return 0;
-
 retry:
 	EFX_STATIC_ASSERT(sizeof(*dev_link) == sizeof(rte_atomic64_t));
 	*(int64_t *)&old_link = rte_atomic64_read((rte_atomic64_t *)dev_link);
 
-	if (wait_to_complete) {
+	if (sa->state != SFC_ADAPTER_STARTED) {
+		sfc_port_link_mode_to_info(EFX_LINK_UNKNOWN, &current_link);
+		if (!rte_atomic64_cmpset((volatile uint64_t *)dev_link,
+					 *(uint64_t *)&old_link,
+					 *(uint64_t *)&current_link))
+			goto retry;
+	} else if (wait_to_complete) {
 		efx_link_mode_t link_mode;
 
 		if (efx_port_poll(sa->nic, &link_mode) != 0)
-- 
1.8.2.3



More information about the dev mailing list