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 70D23A034C for ; Mon, 30 May 2022 11:22:20 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 595C842B95; Mon, 30 May 2022 11:22:20 +0200 (CEST) Received: from smtpbg152.qq.com (smtpbg152.qq.com [13.245.186.79]) by mails.dpdk.org (Postfix) with ESMTP id 4E14942B8C for ; Mon, 30 May 2022 11:22:17 +0200 (CEST) X-QQ-mid: bizesmtp87t1653902532tw6anwq7 Received: from wxdbg.localdomain.com ( [183.129.236.74]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 30 May 2022 17:22:11 +0800 (CST) X-QQ-SSF: 01400000000000F0P000000A0000000 X-QQ-FEAT: AYaL7CbwjQ3qSWu47zP3YwNBws6atJcU0Wcz/hv5T003F5FAUs6Q8UDOHVshm hefgjJLQIyv68Zq+c7+haYcsfXIYO5E5hVyHZkyA19DL8ss3WvZyvyhwxs35GWVnOufW8rG GZLxeRJh+bbCJrbOA7JhC4iQxhPCgure3WwCDUu8xktg0w361Jxrnftk/AIO+SEclJtJQ7W lltCJAT9d/8uCmAaN8+mmD8n3bjfh7q/1WAmg/cFvOfbc/ZKj/ehTWJqTQUYtf4Ejfdt8jd I+5/I0fZo6nMYR9+omXced6cRStrjLH+MQPczAduIexTsco8mP4pHKA75Kxd1gFVeBgxOqF wMGi80FkubE/eqNSl0MuuPf79wbuSOTwaqzvvg4 X-QQ-GoodBg: 2 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 3/9] net/ngbe: fix occasional failure of reading PHY ID Date: Mon, 30 May 2022 17:30:10 +0800 Message-Id: <20220530093016.16326-4-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20220530093016.16326-1-jiawenwu@trustnetic.com> References: <20220530093016.16326-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybgforeign:qybgforeign9 X-QQ-Bgrelay: 1 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 Change to check low ID register to determine the valid PHY address, for yt8521s PHY with high ID register value 0. And fix polling register when expect value is 0, to complete MDIO read. Fixes: 44e97550ca68 ("net/ngbe: identify and reset PHY") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/base/ngbe_phy.c | 7 ++----- drivers/net/ngbe/base/ngbe_regs.h | 9 +++++++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/net/ngbe/base/ngbe_phy.c b/drivers/net/ngbe/base/ngbe_phy.c index 8199696428..1025d7d3a1 100644 --- a/drivers/net/ngbe/base/ngbe_phy.c +++ b/drivers/net/ngbe/base/ngbe_phy.c @@ -120,17 +120,14 @@ bool ngbe_validate_phy_addr(struct ngbe_hw *hw, u32 phy_addr) u16 phy_id = 0; bool valid = false; - if (hw->sub_device_id == NGBE_SUB_DEV_ID_EM_YT8521S_SFP) - return true; - hw->phy.addr = phy_addr; - hw->phy.read_reg(hw, NGBE_MD_PHY_ID_HIGH, + hw->phy.read_reg(hw, NGBE_MD_PHY_ID_LOW, NGBE_MD_DEV_PMA_PMD, &phy_id); if (phy_id != 0xFFFF && phy_id != 0x0) valid = true; - DEBUGOUT("PHY ID HIGH is 0x%04X", phy_id); + DEBUGOUT("PHY ID LOW is 0x%04X", phy_id); return valid; } diff --git a/drivers/net/ngbe/base/ngbe_regs.h b/drivers/net/ngbe/base/ngbe_regs.h index 6432ad8736..640e385990 100644 --- a/drivers/net/ngbe/base/ngbe_regs.h +++ b/drivers/net/ngbe/base/ngbe_regs.h @@ -1422,8 +1422,13 @@ po32m(struct ngbe_hw *hw, u32 reg, u32 mask, u32 expect, u32 *actual, } do { - all |= rd32(hw, reg); - value |= mask & all; + if (expect != 0) { + all |= rd32(hw, reg); + value |= mask & all; + } else { + all = rd32(hw, reg); + value = mask & all; + } if (value == expect) break; -- 2.27.0