From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Rybchenko Subject: [PATCH 3/4] net/sfc: report correct link status when port is not started Date: Thu, 12 Jan 2017 09:03:22 +0000 Message-ID: <1484211803-21449-4-git-send-email-arybchenko@solarflare.com> References: <1484211803-21449-1-git-send-email-arybchenko@solarflare.com> Mime-Version: 1.0 Content-Type: text/plain To: Return-path: Received: from nbfkord-smmo02.seg.att.com (nbfkord-smmo02.seg.att.com [209.65.160.78]) by dpdk.org (Postfix) with ESMTP id C5F50592C for ; Thu, 12 Jan 2017 10:04:13 +0100 (CET) Received: from uklogin.uk.solarflarecom.com (uklogin.uk.solarflarecom.com [10.17.10.10]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id v0C93fQT031678 for ; Thu, 12 Jan 2017 09:03:41 GMT Received: from uklogin.uk.solarflarecom.com (localhost.localdomain [127.0.0.1]) by uklogin.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id v0C93fkY021496 for ; Thu, 12 Jan 2017 09:03:41 GMT In-Reply-To: <1484211803-21449-1-git-send-email-arybchenko@solarflare.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Fixes: 215e8b89d8a8 ("net/sfc: implement device operation to retrieve link info") Signed-off-by: Andrew Rybchenko Reviewed-by: Andrew Lee --- 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, ¤t_link); + if (!rte_atomic64_cmpset((volatile uint64_t *)dev_link, + *(uint64_t *)&old_link, + *(uint64_t *)¤t_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