From patchwork Wed Jun 14 02:34:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 128649 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id AD1AB42CAC; Wed, 14 Jun 2023 04:37:14 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 532D642D0B; Wed, 14 Jun 2023 04:37:09 +0200 (CEST) Received: from smtpbgbr1.qq.com (smtpbgbr1.qq.com [54.207.19.206]) by mails.dpdk.org (Postfix) with ESMTP id 2D54242670; Wed, 14 Jun 2023 04:37:03 +0200 (CEST) X-QQ-mid: bizesmtp73t1686710217t8yhg9uk Received: from wxdbg.localdomain.com ( [183.159.171.58]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 14 Jun 2023 10:36:57 +0800 (CST) X-QQ-SSF: 01400000000000J0Z000000A0000000 X-QQ-FEAT: K8frVKEvGxz9qdErGHP+R9EF93g6ahavv83YYltXOvh/RHNnhjUYUbC+VoaRb g28KL+BPqv4HsL3OZKuzqUIRlekfABIs7cQ/BcUSAemiN6Rjv6TT7UuphQLvJbrYDg9Ca8H /5HH16GCgeVDHAZnLmqYl9X3SuKVM7dCvUPl+wyS7Mi8Utp6m8pwEE7dtyakAlydaseK5E1 0GT6MKO1UAubTXiRxPL/pA6F6RuJBu1iQsVGC/0wD2+dIczpdGCKYDd/u4FxwnqUhdf8rJ0 c27009nigpAC1oiFQBmoMQ9zQIvlP94lsU0gzZhqHCvNAWAjozYXosiJ76483ZwDGhquYh2 law2jplJgQAZvdylFVqBgEppqF269g9oKmbiDDlCbawnKP9YiPcWuFXutdjXQ== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 14801292475638271721 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 1/9] net/txgbe: fix Tx failure with fiber hotplug Date: Wed, 14 Jun 2023 10:34:21 +0800 Message-Id: <20230614023429.1002071-2-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230614023429.1002071-1-jiawenwu@trustnetic.com> References: <20230614023429.1002071-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Under heavy traffic, unpluging and pluging fiber optic cables may cause Tx failure. The reason is that there is still traffic passing through at PCS VR reset, during txgbe_set_link_to_*. So totally disable Rx and Tx before PCS VR reset to fix it. Fixes: 01c3cf5c85a7 ("net/txgbe: add autoneg control read and write") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/base/txgbe_phy.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/drivers/net/txgbe/base/txgbe_phy.c b/drivers/net/txgbe/base/txgbe_phy.c index f4cadcc510..1eb45b068a 100644 --- a/drivers/net/txgbe/base/txgbe_phy.c +++ b/drivers/net/txgbe/base/txgbe_phy.c @@ -1541,8 +1541,9 @@ txgbe_set_link_to_kx4(struct txgbe_hw *hw, bool autoneg) goto out; } - wr32m(hw, TXGBE_MACTXCFG, TXGBE_MACTXCFG_TXE, - ~TXGBE_MACTXCFG_TXE); + wr32m(hw, TXGBE_MACTXCFG, TXGBE_MACTXCFG_TXE, ~TXGBE_MACTXCFG_TXE); + wr32m(hw, TXGBE_MACRXCFG, TXGBE_MACRXCFG_ENA, ~TXGBE_MACRXCFG_ENA); + hw->mac.disable_sec_tx_path(hw); /* 2. Disable xpcs AN-73 */ if (!autoneg) @@ -1756,8 +1757,9 @@ txgbe_set_link_to_kx(struct txgbe_hw *hw, goto out; } - wr32m(hw, TXGBE_MACTXCFG, TXGBE_MACTXCFG_TXE, - ~TXGBE_MACTXCFG_TXE); + wr32m(hw, TXGBE_MACTXCFG, TXGBE_MACTXCFG_TXE, ~TXGBE_MACTXCFG_TXE); + wr32m(hw, TXGBE_MACRXCFG, TXGBE_MACRXCFG_ENA, ~TXGBE_MACRXCFG_ENA); + hw->mac.disable_sec_tx_path(hw); /* 2. Disable xpcs AN-73 */ if (!autoneg) @@ -1963,8 +1965,9 @@ txgbe_set_link_to_sfi(struct txgbe_hw *hw, goto out; } - wr32m(hw, TXGBE_MACTXCFG, TXGBE_MACTXCFG_TXE, - ~TXGBE_MACTXCFG_TXE); + wr32m(hw, TXGBE_MACTXCFG, TXGBE_MACTXCFG_TXE, ~TXGBE_MACTXCFG_TXE); + wr32m(hw, TXGBE_MACRXCFG, TXGBE_MACRXCFG_ENA, ~TXGBE_MACRXCFG_ENA); + hw->mac.disable_sec_tx_path(hw); /* 2. Disable xpcs AN-73 */ wr32_epcs(hw, SR_AN_CTRL, 0x0); @@ -2315,6 +2318,8 @@ void txgbe_autoc_write(struct txgbe_hw *hw, u64 autoc) txgbe_set_sgmii_an37_ability(hw); } + hw->mac.enable_sec_tx_path(hw); + if (speed == TXGBE_LINK_SPEED_10GB_FULL) mactxcfg = TXGBE_MACTXCFG_SPEED_10G; else if (speed == TXGBE_LINK_SPEED_1GB_FULL) @@ -2324,6 +2329,7 @@ void txgbe_autoc_write(struct txgbe_hw *hw, u64 autoc) wr32m(hw, TXGBE_MACTXCFG, TXGBE_MACTXCFG_SPEED_MASK | TXGBE_MACTXCFG_TXE, mactxcfg | TXGBE_MACTXCFG_TXE); + wr32m(hw, TXGBE_MACRXCFG, TXGBE_MACRXCFG_ENA, TXGBE_MACRXCFG_ENA); } void txgbe_bp_down_event(struct txgbe_hw *hw) From patchwork Wed Jun 14 02:34:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 128648 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 66ED242CAC; Wed, 14 Jun 2023 04:37:08 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 408A042BFE; Wed, 14 Jun 2023 04:37:08 +0200 (CEST) Received: from smtpbg154.qq.com (smtpbg154.qq.com [15.184.224.54]) by mails.dpdk.org (Postfix) with ESMTP id 886304161A; Wed, 14 Jun 2023 04:37:04 +0200 (CEST) X-QQ-mid: bizesmtp73t1686710220tcb95mxe Received: from wxdbg.localdomain.com ( [183.159.171.58]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 14 Jun 2023 10:36:59 +0800 (CST) X-QQ-SSF: 01400000000000J0Z000000A0000000 X-QQ-FEAT: xqT8U4SkSpjbkpRKp9dOY9ap/A6TVAMMxc8oBW9RC3OH4VniQC4qAYxVvlPaG BKEagk2nDH7Dnb0XTryo8W58ReeYj/Fbx6bawKTm6eNOBxBwfs5ks9is++qgEuB1XvTW1d3 acc7xcGCWOGKKZf9k4xjC1bxWFWKAs7V3bVY2D7r07+SYAkkl82OoFflqKF/1MIx66lbp2O XvYP6KqChUxo1WITN/vxquAGklIm75MK0a2VCBzeWRdjTT1T87Og18Q2yKQG//eRjln/RiD vhj+9ZBLaIqG8ea+LnAf6JwRXxp4VqxXQIpX95QBsgbv/8UpHTPPbUcYIdTEyALfEcl7zXw rmsAhcDBpaJmZVp4vO1o0zFM8aFanzoCAEEEwe1zLgvrzhfD4m2vdDd5bWxrA== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 15441106242337967353 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 2/9] net/txgbe: fix interrupt enable mask Date: Wed, 14 Jun 2023 10:34:22 +0800 Message-Id: <20230614023429.1002071-3-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230614023429.1002071-1-jiawenwu@trustnetic.com> References: <20230614023429.1002071-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org When using no LSC mode, GPIO interrupt can still cause txgbe_dev_interrupt_delayed_handler() to be called, with TXGBE_FLAG_NEED_LINK_UPDATE to be set. So add a LSC condition on intr->mask_misc. Fixes: 2fc745e6b606 ("net/txgbe: add interrupt operation") Fixes: d3bb4a04eac1 ("net/txgbe: add SFP hotplug identification") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_ethdev.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index a3d7461951..5eff1a766e 100644 --- a/drivers/net/txgbe/txgbe_ethdev.c +++ b/drivers/net/txgbe/txgbe_ethdev.c @@ -3232,7 +3232,8 @@ txgbe_dev_interrupt_delayed_handler(void *param) } /* restore original mask */ - intr->mask_misc |= TXGBE_ICRMISC_LSC; + if (dev->data->dev_conf.intr_conf.lsc == 1) + intr->mask_misc |= TXGBE_ICRMISC_LSC; intr->mask = intr->mask_orig; intr->mask_orig = 0; From patchwork Wed Jun 14 02:34:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 128650 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9160C42CAC; Wed, 14 Jun 2023 04:37:21 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D354442D20; Wed, 14 Jun 2023 04:37:10 +0200 (CEST) Received: from smtpbg153.qq.com (smtpbg153.qq.com [13.245.218.24]) by mails.dpdk.org (Postfix) with ESMTP id 9A45B4161A; Wed, 14 Jun 2023 04:37:07 +0200 (CEST) X-QQ-mid: bizesmtp73t1686710223tro4wvuz Received: from wxdbg.localdomain.com ( [183.159.171.58]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 14 Jun 2023 10:37:02 +0800 (CST) X-QQ-SSF: 01400000000000J0Z000000A0000000 X-QQ-FEAT: DBLGDch1WOT4u7Mp9s8Vhmfj5NrzMSbujd9BNUGbRBvT/1JKPYqahnxlNvuWw SjNpJajmBjL/4gqrbRKDkAHAQuLJgL1q5Ybt7AW04ERWaQB4/UPaP1pnVNPpBO2TjMiPxTp 3cI6AARFhR5wF/FD8y62+YwY4mk8bWmwkfj/ncHex4s0AFdQS7mpeVWchVRD8GsNRH5uw1B 62A6PpnZsUpe3OlpBJ0vxIVGGSNiLsJFlvvK2vqC+TC/Q41RRksDDTmdotmyrV5nYre603i FucDMtqzgF9lYXrQQ0WFXpxatl001UAxOG0QoJvBjZNVv7/mFeX8hjRP8Hpww2vPxjmx4Ig m6lp3qxR4fDyqfFPYYuc2a9SwWneFdBY3ZX1lDOlYbBM6Mohte9afI3pHlV1w== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 5876781075020766163 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 3/9] net/txgbe: fix issues caused by MNG veto bit setting Date: Wed, 14 Jun 2023 10:34:23 +0800 Message-Id: <20230614023429.1002071-4-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230614023429.1002071-1-jiawenwu@trustnetic.com> References: <20230614023429.1002071-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org In the new firmware, MNG veto bit is set by default for new features. It leads to several issues, so driver makes the following changes: 1. Change the way by sending reset command to firmware to LAN reset. So that MNG domain will not be reset. 2. Change the hardware flush register since the original register cannot be read temporarily after LAN reset. 3. Remove checking of MNG veto bit when handling Tx laser. 4. Workaround for GPIO interrupt lost. Fixes: f58ae2fcfea6 ("net/txgbe: add HW init and reset operation") Fixes: e4c515a7bc7e ("net/txgbe: add multi-speed link setup") Fixes: d3bb4a04eac1 ("net/txgbe: add SFP hotplug identification") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/base/txgbe_hw.c | 23 +++-------------------- drivers/net/txgbe/base/txgbe_regs.h | 14 +++++++++++++- drivers/net/txgbe/txgbe_ethdev.c | 27 +++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 21 deletions(-) diff --git a/drivers/net/txgbe/base/txgbe_hw.c b/drivers/net/txgbe/base/txgbe_hw.c index e7c9754d26..2952c408fd 100644 --- a/drivers/net/txgbe/base/txgbe_hw.c +++ b/drivers/net/txgbe/base/txgbe_hw.c @@ -2988,10 +2988,6 @@ void txgbe_disable_tx_laser_multispeed_fiber(struct txgbe_hw *hw) { u32 esdp_reg = rd32(hw, TXGBE_GPIODATA); - /* Blocked by MNG FW so bail */ - if (txgbe_check_reset_blocked(hw)) - return; - if (txgbe_close_notify(hw)) txgbe_led_off(hw, TXGBE_LEDCTL_UP | TXGBE_LEDCTL_10G | TXGBE_LEDCTL_1G | TXGBE_LEDCTL_ACTIVE); @@ -3039,10 +3035,6 @@ void txgbe_enable_tx_laser_multispeed_fiber(struct txgbe_hw *hw) **/ void txgbe_flap_tx_laser_multispeed_fiber(struct txgbe_hw *hw) { - /* Blocked by MNG FW so bail */ - if (txgbe_check_reset_blocked(hw)) - return; - if (hw->mac.autotry_restart) { txgbe_disable_tx_laser_multispeed_fiber(hw); txgbe_enable_tx_laser_multispeed_fiber(hw); @@ -3433,18 +3425,9 @@ s32 txgbe_reset_hw(struct txgbe_hw *hw) autoc = hw->mac.autoc_read(hw); mac_reset_top: - /* - * Issue global reset to the MAC. Needs to be SW reset if link is up. - * If link reset is used when link is up, it might reset the PHY when - * mng is using it. If link is down or the flag to force full link - * reset is set, then perform link reset. - */ - if (txgbe_mng_present(hw)) { - txgbe_hic_reset(hw); - } else { - wr32(hw, TXGBE_RST, TXGBE_RST_LAN(hw->bus.lan_id)); - txgbe_flush(hw); - } + /* Do LAN reset, the MNG domain will not be reset. */ + wr32(hw, TXGBE_RST, TXGBE_RST_LAN(hw->bus.lan_id)); + txgbe_flush(hw); usec_delay(10); txgbe_reset_misc(hw); diff --git a/drivers/net/txgbe/base/txgbe_regs.h b/drivers/net/txgbe/base/txgbe_regs.h index bc2854b01a..79290a7afe 100644 --- a/drivers/net/txgbe/base/txgbe_regs.h +++ b/drivers/net/txgbe/base/txgbe_regs.h @@ -1885,7 +1885,19 @@ po32m(struct txgbe_hw *hw, u32 reg, u32 mask, u32 expect, u32 *actual, } /* flush all write operations */ -#define txgbe_flush(hw) rd32(hw, 0x00100C) +static inline void txgbe_flush(struct txgbe_hw *hw) +{ + switch (hw->mac.type) { + case txgbe_mac_raptor: + rd32(hw, TXGBE_PWR); + break; + case txgbe_mac_raptor_vf: + rd32(hw, TXGBE_VFSTATUS); + break; + default: + break; + } +} #define rd32a(hw, reg, idx) ( \ rd32((hw), (reg) + ((idx) << 2))) diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index 5eff1a766e..36c74d353d 100644 --- a/drivers/net/txgbe/txgbe_ethdev.c +++ b/drivers/net/txgbe/txgbe_ethdev.c @@ -1531,6 +1531,25 @@ txgbe_dev_configure(struct rte_eth_dev *dev) return 0; } +static void txgbe_reinit_gpio_intr(struct txgbe_hw *hw) +{ + u32 reg; + + wr32(hw, TXGBE_GPIOINTMASK, 0xFF); + reg = rd32(hw, TXGBE_GPIORAWINTSTAT); + + if (reg & TXGBE_GPIOBIT_2) + wr32(hw, TXGBE_GPIOEOI, TXGBE_GPIOBIT_2); + + if (reg & TXGBE_GPIOBIT_3) + wr32(hw, TXGBE_GPIOEOI, TXGBE_GPIOBIT_3); + + if (reg & TXGBE_GPIOBIT_6) + wr32(hw, TXGBE_GPIOEOI, TXGBE_GPIOBIT_6); + + wr32(hw, TXGBE_GPIOINTMASK, 0); +} + static void txgbe_dev_phy_intr_setup(struct rte_eth_dev *dev) { @@ -1680,6 +1699,10 @@ txgbe_dev_start(struct rte_eth_dev *dev) hw->mac.get_link_status = true; hw->dev_start = true; + /* workaround for GPIO intr lost when mng_veto bit is set */ + if (txgbe_check_reset_blocked(hw)) + txgbe_reinit_gpio_intr(hw); + /* configure PF module if SRIOV enabled */ txgbe_pf_host_configure(dev); @@ -1897,6 +1920,10 @@ txgbe_dev_stop(struct rte_eth_dev *dev) /* disable interrupts */ txgbe_disable_intr(hw); + /* workaround for GPIO intr lost when mng_veto bit is set */ + if (txgbe_check_reset_blocked(hw)) + txgbe_reinit_gpio_intr(hw); + /* reset the NIC */ txgbe_pf_reset_hw(hw); hw->adapter_stopped = 0; From patchwork Wed Jun 14 02:34:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 128651 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 21A9342CAC; Wed, 14 Jun 2023 04:37:32 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B10AB42D3F; Wed, 14 Jun 2023 04:37:12 +0200 (CEST) Received: from smtpbguseast1.qq.com (smtpbguseast1.qq.com [54.204.34.129]) by mails.dpdk.org (Postfix) with ESMTP id 076E64161A; Wed, 14 Jun 2023 04:37:09 +0200 (CEST) X-QQ-mid: bizesmtp73t1686710226tro16yvd Received: from wxdbg.localdomain.com ( [183.159.171.58]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 14 Jun 2023 10:37:05 +0800 (CST) X-QQ-SSF: 01400000000000J0Z000000A0000000 X-QQ-FEAT: r/cTxDoDoiG5iGsbgxDwetS+0x4gBTlBJA/c8W/emi8wUa6+50X5GB5Bofk8w Yxqvb6B4iv08R27injh0C2BZdrs9tu8rgDppl/zlgIGWPkX9z2aBn8mx+AF04y9Hh+CocV/ M33Qn7LkXu8sxCurv6IAfyaws6EZHdr+j/pEehVMovp0rQwyUvAdUEz3Ddu49cU21I9w53I /M2swXaNei7+SmqvREkp2tfQswsuZCbxFZiwnaizMVpERJ+i0v9o+cASo2Y7Pnmz16f9OsE o/zdLMNbCTQnUFHNq78m644f9MzUHWnCuGgiksekrcvgbMXGvBB5BkI4cyQaxWsGlXpmCJa 4dIazNDn0HWg/WZ+hIEhK3R/z78yhnVhV4EJBlcTRmH2RfMu2XPV1ImUm7pxV+MryJJWcmV X-QQ-GoodBg: 2 X-BIZMAIL-ID: 16049203608549177296 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 4/9] net/txgbe: fix to set autoneg for 1G speed Date: Wed, 14 Jun 2023 10:34:24 +0800 Message-Id: <20230614023429.1002071-5-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230614023429.1002071-1-jiawenwu@trustnetic.com> References: <20230614023429.1002071-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Autoneg was always on for 1G speed, fix to set autoneg off. Fixes: 01c3cf5c85a7 ("net/txgbe: add autoneg control read and write") Fixes: e4c515a7bc7e ("net/txgbe: add multi-speed link setup") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/base/txgbe_hw.c | 14 ++++++++++++++ drivers/net/txgbe/base/txgbe_phy.c | 4 +++- drivers/net/txgbe/base/txgbe_type.h | 1 + drivers/net/txgbe/txgbe_ethdev.c | 2 ++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/net/txgbe/base/txgbe_hw.c b/drivers/net/txgbe/base/txgbe_hw.c index 2952c408fd..d19fd0065d 100644 --- a/drivers/net/txgbe/base/txgbe_hw.c +++ b/drivers/net/txgbe/base/txgbe_hw.c @@ -2273,10 +2273,24 @@ s32 txgbe_setup_mac_link_multispeed_fiber(struct txgbe_hw *hw, } if (speed & TXGBE_LINK_SPEED_1GB_FULL) { + u32 curr_autoneg; + speedcnt++; if (highest_link_speed == TXGBE_LINK_SPEED_UNKNOWN) highest_link_speed = TXGBE_LINK_SPEED_1GB_FULL; + status = hw->mac.check_link(hw, &link_speed, &link_up, false); + if (status != 0) + return status; + + /* If we already have link at this speed, just jump out */ + if (link_speed == TXGBE_LINK_SPEED_1GB_FULL) { + curr_autoneg = rd32_epcs(hw, SR_MII_MMD_CTL); + if (link_up && (hw->autoneg == + !!(curr_autoneg & SR_MII_MMD_CTL_AN_EN))) + goto out; + } + /* Set the module link speed */ switch (hw->phy.media_type) { case txgbe_media_type_fiber: diff --git a/drivers/net/txgbe/base/txgbe_phy.c b/drivers/net/txgbe/base/txgbe_phy.c index 1eb45b068a..d87af656d5 100644 --- a/drivers/net/txgbe/base/txgbe_phy.c +++ b/drivers/net/txgbe/base/txgbe_phy.c @@ -1402,7 +1402,9 @@ txgbe_set_sgmii_an37_ability(struct txgbe_hw *hw) wr32_epcs(hw, SR_MII_MMD_AN_CTL, 0x0105); wr32_epcs(hw, SR_MII_MMD_DIGI_CTL, 0x0200); value = rd32_epcs(hw, SR_MII_MMD_CTL); - value = (value & ~0x1200) | (0x1 << 12) | (0x1 << 9); + value = (value & ~0x1200) | (0x1 << 9); + if (hw->autoneg) + value |= SR_MII_MMD_CTL_AN_EN; wr32_epcs(hw, SR_MII_MMD_CTL, value); } diff --git a/drivers/net/txgbe/base/txgbe_type.h b/drivers/net/txgbe/base/txgbe_type.h index c3486b472f..75e839b7de 100644 --- a/drivers/net/txgbe/base/txgbe_type.h +++ b/drivers/net/txgbe/base/txgbe_type.h @@ -783,6 +783,7 @@ struct txgbe_hw { bool allow_unsupported_sfp; bool need_crosstalk_fix; bool dev_start; + bool autoneg; struct txgbe_devargs devarg; uint64_t isb_dma; diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index 36c74d353d..962667acdc 100644 --- a/drivers/net/txgbe/txgbe_ethdev.c +++ b/drivers/net/txgbe/txgbe_ethdev.c @@ -1821,6 +1821,7 @@ txgbe_dev_start(struct rte_eth_dev *dev) speed = (TXGBE_LINK_SPEED_100M_FULL | TXGBE_LINK_SPEED_1GB_FULL | TXGBE_LINK_SPEED_10GB_FULL); + hw->autoneg = true; } else { if (*link_speeds & RTE_ETH_LINK_SPEED_10G) speed |= TXGBE_LINK_SPEED_10GB_FULL; @@ -1832,6 +1833,7 @@ txgbe_dev_start(struct rte_eth_dev *dev) speed |= TXGBE_LINK_SPEED_1GB_FULL; if (*link_speeds & RTE_ETH_LINK_SPEED_100M) speed |= TXGBE_LINK_SPEED_100M_FULL; + hw->autoneg = false; } err = hw->mac.setup_link(hw, speed, link_up); From patchwork Wed Jun 14 02:34:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 128652 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 665E742CAC; Wed, 14 Jun 2023 04:37:38 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DBF4E42D42; Wed, 14 Jun 2023 04:37:15 +0200 (CEST) Received: from smtpbgjp3.qq.com (smtpbgjp3.qq.com [54.92.39.34]) by mails.dpdk.org (Postfix) with ESMTP id 616B542D42; Wed, 14 Jun 2023 04:37:14 +0200 (CEST) X-QQ-mid: bizesmtp73t1686710228tgrnnbwg Received: from wxdbg.localdomain.com ( [183.159.171.58]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 14 Jun 2023 10:37:08 +0800 (CST) X-QQ-SSF: 01400000000000J0Z000000A0000000 X-QQ-FEAT: XP/G3A9iI6W7e9unNwswMJd2wnYz0VpcoIi9iZFMW6EAiecXDdHKuK9/Rq9/d NMDktVcsTYP/Btjed2xQZXIpDt8lB8vWqRpNb04E06aNmwDlkk9m/ENFja2vxI/+Ai0rpt5 XPKkr5jEz3lqC2CNOBvDSuCUjc8k3YJRNXrl3fsAcTMOY8/WlmJ0ciVi/5z67OlbfAXjFVn 8M6Dn3f+avZXG3JAq1Kchkmed0jrXCoxYM10p63WnSYbK51xrgihBzCcOEzIzxvRfd+IyQs bYdkYP4NPHxacy9AbuO73PPE1uEAjWC02SIhcQAh6vmmnPQjN5NH+ZVUAO5jVm8aS3AGNoV UC1dKpLe3gdhXa2JoGp3i2uvsHiYFFKV3eTFUtvEKee/VibbldTcP2KhoVjNw== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 224811166052055734 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 5/9] net/txgbe: fix device extended stats Date: Wed, 14 Jun 2023 10:34:25 +0800 Message-Id: <20230614023429.1002071-6-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230614023429.1002071-1-jiawenwu@trustnetic.com> References: <20230614023429.1002071-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Fix to show tx_broadcast_packets and tx_multicast_packets counters. Fixes: 91fe49c87d76 ("net/txgbe: support device xstats") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_ethdev.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c index 962667acdc..74765a469d 100644 --- a/drivers/net/txgbe/txgbe_ethdev.c +++ b/drivers/net/txgbe/txgbe_ethdev.c @@ -180,7 +180,9 @@ static const struct rte_txgbe_xstats_name_off rte_txgbe_stats_strings[] = { HW_XSTAT(tx_total_packets), HW_XSTAT(rx_total_missed_packets), HW_XSTAT(rx_broadcast_packets), + HW_XSTAT(tx_broadcast_packets), HW_XSTAT(rx_multicast_packets), + HW_XSTAT(tx_multicast_packets), HW_XSTAT(rx_management_packets), HW_XSTAT(tx_management_packets), HW_XSTAT(rx_management_dropped), From patchwork Wed Jun 14 02:34:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 128653 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 16C6B42CAC; Wed, 14 Jun 2023 04:37:46 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AFB1B42D4E; Wed, 14 Jun 2023 04:37:19 +0200 (CEST) Received: from smtpbg154.qq.com (smtpbg154.qq.com [15.184.224.54]) by mails.dpdk.org (Postfix) with ESMTP id 89DE642D44; Wed, 14 Jun 2023 04:37:16 +0200 (CEST) X-QQ-mid: bizesmtp73t1686710231tq0oxsjg Received: from wxdbg.localdomain.com ( [183.159.171.58]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 14 Jun 2023 10:37:11 +0800 (CST) X-QQ-SSF: 01400000000000J0Z000000A0000000 X-QQ-FEAT: +oIWmpEafD9vMfXmbF8MEqTY4ePujR0q4ThYvdo65f1eUKzsHvMQ/NKTUaZqh fi7lvqoLyrB5nK4zKgtUqKC0eKLWyVFym8JrrbGrAPm+DikfqREnhCjGg/UZZzxwMUDAVKC m+IF9Eh6m3n9cdA9tDspsZI0AQQWKmjRzTfldjs32SCIkv5NqBkSGx7mV1i6zKaUC00bxCG Pr154eSPlblZVRpPUAtpZ5ysxXQOBuOkUTwM5OL1Na0crQUzjZfHiIswxo+q4sg8oAgVP9x 0/2p2ujqBR7rqzXgdzMdveCp40Da9IbA3UML6HlFgt0Aga2McIrrILIJ2gLh5VCOxTPJk4l oswfwgPpuaYhXPtQZtefFclS1cNMnTAatJAQzf9ceKWFj6evIBRvT23yvZ3zSOY2mkn9i8A X-QQ-GoodBg: 2 X-BIZMAIL-ID: 955942532939820147 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 6/9] net/ngbe: fix device extended stats Date: Wed, 14 Jun 2023 10:34:26 +0800 Message-Id: <20230614023429.1002071-7-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230614023429.1002071-1-jiawenwu@trustnetic.com> References: <20230614023429.1002071-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Fix to show tx_broadcast_packets and tx_multicast_packets counters. Fixes: 8b433d04adc9 ("net/ngbe: support device xstats") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/ngbe_ethdev.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index c32d954769..836ecfa2da 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -160,7 +160,9 @@ static const struct rte_ngbe_xstats_name_off rte_ngbe_stats_strings[] = { HW_XSTAT(tx_total_packets), HW_XSTAT(rx_total_missed_packets), HW_XSTAT(rx_broadcast_packets), + HW_XSTAT(tx_broadcast_packets), HW_XSTAT(rx_multicast_packets), + HW_XSTAT(tx_multicast_packets), HW_XSTAT(rx_management_packets), HW_XSTAT(tx_management_packets), HW_XSTAT(rx_management_dropped), From patchwork Wed Jun 14 02:34:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 128654 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E6E0642CAC; Wed, 14 Jun 2023 04:37:51 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CD60D42D49; Wed, 14 Jun 2023 04:37:23 +0200 (CEST) Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com [54.207.22.56]) by mails.dpdk.org (Postfix) with ESMTP id 1187F42D46; Wed, 14 Jun 2023 04:37:19 +0200 (CEST) X-QQ-mid: bizesmtp73t1686710234twlp4e00 Received: from wxdbg.localdomain.com ( [183.159.171.58]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 14 Jun 2023 10:37:14 +0800 (CST) X-QQ-SSF: 01400000000000J0Z000000A0000000 X-QQ-FEAT: +oIWmpEafD/wskLuMHBH60FnOWGcU7m4xQ6LkUNFS7Sz/4Dxbgt4KYTo6yimZ B5Nr2A7AosS6DX5zY14SxQH2jnYhQGYSV13LGbkFaT/uS70GRcJrK19Rv7r77LLa0HwupXk Fmh34DNN8oQFTTUVHZzfxpv7ResHAb/KZvwGsEGe+HJZkqwYRs8lvR+qkgk13ADb1eothO6 1yBISecrmwovfNRNy7Bzg2OZHSuRihHXvon+v/o0eHJCT9QdnQ1RTmO5VDTvEV8y+/FbG9I c6wpt5YLgKMgMIKT9O1XA8J2ue25Hhnz6CO3goc2vBGe/oqVvNBJwTJP61la5OWU5sdUETz dMfekX2mb5Z1DVWHu4vM4m7UL6tASDaLKBLNUxEBRTRrVUwcXx5a9v9/2pnDDz6NZwrrtlZ X-QQ-GoodBg: 2 X-BIZMAIL-ID: 16514032978099383082 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 7/9] net/ngbe: fix issues caused by MNG veto bit setting Date: Wed, 14 Jun 2023 10:34:27 +0800 Message-Id: <20230614023429.1002071-8-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230614023429.1002071-1-jiawenwu@trustnetic.com> References: <20230614023429.1002071-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org In the new firmware, MNG veto bit is set by default for new features. It causes the PHY configuration not to be reset after LAN reset. So PHY power will be down after stopping device. The internal PHY then cannot be initialized successfully at device start. Add setting power on for internal PHY to fix this issue. Fixes: abea8974c7a6 ("net/ngbe: support link down/up") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/base/ngbe_phy_rtl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/ngbe/base/ngbe_phy_rtl.c b/drivers/net/ngbe/base/ngbe_phy_rtl.c index 9b323624ec..88bacec114 100644 --- a/drivers/net/ngbe/base/ngbe_phy_rtl.c +++ b/drivers/net/ngbe/base/ngbe_phy_rtl.c @@ -120,6 +120,8 @@ s32 ngbe_init_phy_rtl(struct ngbe_hw *hw) hw->init_phy = true; msec_delay(1); + hw->phy.set_phy_power(hw, true); + for (i = 0; i < 15; i++) { if (!rd32m(hw, NGBE_STAT, NGBE_STAT_GPHY_IN_RST(hw->bus.lan_id))) From patchwork Wed Jun 14 02:34:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 128655 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9617542CAC; Wed, 14 Jun 2023 04:37:58 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1169942D5A; Wed, 14 Jun 2023 04:37:26 +0200 (CEST) Received: from smtpbgbr1.qq.com (smtpbgbr1.qq.com [54.207.19.206]) by mails.dpdk.org (Postfix) with ESMTP id 280D542D1D; Wed, 14 Jun 2023 04:37:22 +0200 (CEST) X-QQ-mid: bizesmtp73t1686710237tiuk18eh Received: from wxdbg.localdomain.com ( [183.159.171.58]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 14 Jun 2023 10:37:17 +0800 (CST) X-QQ-SSF: 01400000000000J0Z000000A0000000 X-QQ-FEAT: Fc2LLDWeHZ9SR/5fCjYubokmj3vxQp7dnSK7RKSQuEYd6HElwGlqnb13J9/nE vwq1pUm3HzMZ8WM96meiPrUziW2O1ekyA/12lZcmwf1HCSegT4+ku38IeuQtVaG5hIROjDq tvZmGMI0KyJrf1ZAch6Kd30pzX6AaaNA7CoylDjcPQyMKOcwjAYravLWmyz+Bw5aGGQMDfW p4eky1z4Xw343O8R1miy5mlwk/Z6jsWqSD+ctJj4pfoDgX62EKtjjay7uF0BoOUQEtSn0eH T1hoMnIJlufc0jp8vUxz08rr7+QnxHUzFohpTzNewCXKGfpxX7pXa4BmG/WPZj08fJLF+1j EmZR2VVwt3z4BL61NPkDhHeE++n+Q28P9PtU7x8YRNJdQRm1O7DLgHCquT2IndHXEHhSqS2 X-QQ-GoodBg: 2 X-BIZMAIL-ID: 12661980187790439472 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 8/9] net/ngbe: fix link status in no LSC mode Date: Wed, 14 Jun 2023 10:34:28 +0800 Message-Id: <20230614023429.1002071-9-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230614023429.1002071-1-jiawenwu@trustnetic.com> References: <20230614023429.1002071-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org When using no LSC mode, device link status is sometimes get incorrectly. Introduce hw->lsc to fix this issue. Fixes: 3d0af7066759 ("net/ngbe: setup PHY link") Fixes: 3518df5774c7 ("net/ngbe: support device start/stop") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/base/ngbe_hw.c | 10 +++++++--- drivers/net/ngbe/base/ngbe_phy_rtl.c | 20 ++++++++++++++++++++ drivers/net/ngbe/base/ngbe_phy_rtl.h | 2 ++ drivers/net/ngbe/base/ngbe_phy_yt.c | 16 +++++++++------- drivers/net/ngbe/base/ngbe_type.h | 1 + drivers/net/ngbe/ngbe_ethdev.c | 2 ++ 6 files changed, 41 insertions(+), 10 deletions(-) diff --git a/drivers/net/ngbe/base/ngbe_hw.c b/drivers/net/ngbe/base/ngbe_hw.c index 283cdca367..27243d85c8 100644 --- a/drivers/net/ngbe/base/ngbe_hw.c +++ b/drivers/net/ngbe/base/ngbe_hw.c @@ -1541,11 +1541,15 @@ s32 ngbe_clear_vfta(struct ngbe_hw *hw) s32 ngbe_check_mac_link_em(struct ngbe_hw *hw, u32 *speed, bool *link_up, bool link_up_wait_to_complete) { - u32 i, reg; + u32 i; s32 status = 0; - reg = rd32(hw, NGBE_GPIOINTSTAT); - wr32(hw, NGBE_GPIOEOI, reg); + if (hw->lsc) { + u32 reg; + + reg = rd32(hw, NGBE_GPIOINTSTAT); + wr32(hw, NGBE_GPIOEOI, reg); + } if (link_up_wait_to_complete) { for (i = 0; i < hw->mac.max_link_up_time; i++) { diff --git a/drivers/net/ngbe/base/ngbe_phy_rtl.c b/drivers/net/ngbe/base/ngbe_phy_rtl.c index 88bacec114..b0eb6c97c0 100644 --- a/drivers/net/ngbe/base/ngbe_phy_rtl.c +++ b/drivers/net/ngbe/base/ngbe_phy_rtl.c @@ -392,6 +392,26 @@ s32 ngbe_check_phy_link_rtl(struct ngbe_hw *hw, u32 *speed, bool *link_up) *speed = NGBE_LINK_SPEED_10M_FULL; } + if (hw->lsc) + return status; + + /* + * Because of the slow speed of getting link state, RTL_PHYSR + * may still be up while the actual link state is down. + * So we read RTL_GBSR to get accurate state when speed is 1G + * in polling mode. + */ + if (*speed == NGBE_LINK_SPEED_1GB_FULL) { + status = hw->phy.read_reg(hw, RTL_GBSR, + RTL_DEV_ZERO, &phy_data); + phy_link = phy_data & RTL_GBSR_LRS; + + /* Only need to detect link down */ + if (!phy_link) { + *link_up = false; + *speed = NGBE_LINK_SPEED_UNKNOWN; + } + } return status; } diff --git a/drivers/net/ngbe/base/ngbe_phy_rtl.h b/drivers/net/ngbe/base/ngbe_phy_rtl.h index b2fbc4f74d..6093ee7d5c 100644 --- a/drivers/net/ngbe/base/ngbe_phy_rtl.h +++ b/drivers/net/ngbe/base/ngbe_phy_rtl.h @@ -35,6 +35,8 @@ #define RTL_ANLPAR_LP MS16(10, 0x3) #define RTL_GBCR 0x9 #define RTL_GBCR_1000F MS16(9, 0x1) +#define RTL_GBSR 0xA +#define RTL_GBSR_LRS MS16(13, 0x1) /* Page 0xa42*/ #define RTL_GSR 0x10 #define RTL_GSR_ST MS16(0, 0x7) diff --git a/drivers/net/ngbe/base/ngbe_phy_yt.c b/drivers/net/ngbe/base/ngbe_phy_yt.c index 726d6c8ef5..754faadd6a 100644 --- a/drivers/net/ngbe/base/ngbe_phy_yt.c +++ b/drivers/net/ngbe/base/ngbe_phy_yt.c @@ -102,13 +102,15 @@ s32 ngbe_init_phy_yt(struct ngbe_hw *hw) { rte_spinlock_init(&hw->phy_lock); - rte_spinlock_lock(&hw->phy_lock); - /* close sds area register */ - ngbe_write_phy_reg_ext_yt(hw, YT_SMI_PHY, 0, 0); - /* enable interrupts */ - ngbe_write_phy_reg_mdi(hw, YT_INTR, 0, - YT_INTR_ENA_MASK | YT_SDS_INTR_ENA_MASK); - rte_spinlock_unlock(&hw->phy_lock); + if (hw->lsc) { + rte_spinlock_lock(&hw->phy_lock); + /* close sds area register */ + ngbe_write_phy_reg_ext_yt(hw, YT_SMI_PHY, 0, 0); + /* enable interrupts */ + ngbe_write_phy_reg_mdi(hw, YT_INTR, 0, + YT_INTR_ENA_MASK | YT_SDS_INTR_ENA_MASK); + rte_spinlock_unlock(&hw->phy_lock); + } hw->phy.set_phy_power(hw, false); diff --git a/drivers/net/ngbe/base/ngbe_type.h b/drivers/net/ngbe/base/ngbe_type.h index 05804eeab7..37be288a74 100644 --- a/drivers/net/ngbe/base/ngbe_type.h +++ b/drivers/net/ngbe/base/ngbe_type.h @@ -431,6 +431,7 @@ struct ngbe_hw { bool offset_loaded; bool is_pf; bool gpio_ctl; + bool lsc; u32 led_conf; bool init_phy; rte_spinlock_t phy_lock; diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index 836ecfa2da..317ad6999c 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -1052,6 +1052,8 @@ ngbe_dev_start(struct rte_eth_dev *dev) if (hw->is_pf && dev->data->dev_conf.lpbk_mode) goto skip_link_setup; + hw->lsc = dev->data->dev_conf.intr_conf.lsc; + err = hw->mac.check_link(hw, &speed, &link_up, 0); if (err != 0) goto error; From patchwork Wed Jun 14 02:34:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiawen Wu X-Patchwork-Id: 128656 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 97FA142CAC; Wed, 14 Jun 2023 04:38:04 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 53F0942D55; Wed, 14 Jun 2023 04:37:28 +0200 (CEST) Received: from smtpbgeu1.qq.com (smtpbgeu1.qq.com [52.59.177.22]) by mails.dpdk.org (Postfix) with ESMTP id F241542D1D; Wed, 14 Jun 2023 04:37:25 +0200 (CEST) X-QQ-mid: bizesmtp73t1686710240tscfd40o Received: from wxdbg.localdomain.com ( [183.159.171.58]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 14 Jun 2023 10:37:20 +0800 (CST) X-QQ-SSF: 01400000000000J0Z000000A0000000 X-QQ-FEAT: r/cTxDoDoiFjl74n7Kz5T9qZVHvLSHS/xd5DpfBjoJ9KF7DaxsWu6f5S0btj/ 5oFUumW6mU+HL7mKFeyYBeGKGWP81dnTZCQDLYka7wDFdctASq7e90mIJbOn6AymALiJ0yy aFKck9+VeExUjDpivVcBicX6WvGXF6WOdjk9A7rqAEoClry1b5gHe5Z/DBG47uptMH5Dkv8 gsTQ7BNoRmCcpHyqk3uAnMTY7KMP11eHhoe1/l1DngQ5OZx7RFbOvSOFcW+SHW/ZXiuiCRX BwL88v0bU84qC7K3equVDD40TtvEqK9tLJ5vU8OV6UmRrR79M8BhHVVkHK+6PAQ1ytbp/8T HZRwae97VtCi6daoWKoiHpob5+cDk+kooxzRs41unWYWdDtoMbEyI6Vnym87eyomK7Nua0w X-QQ-GoodBg: 2 X-BIZMAIL-ID: 8237490454165844769 From: Jiawen Wu To: dev@dpdk.org Cc: Jiawen Wu , stable@dpdk.org Subject: [PATCH 9/9] net/ngbe: remove redundant codes Date: Wed, 14 Jun 2023 10:34:29 +0800 Message-Id: <20230614023429.1002071-10-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230614023429.1002071-1-jiawenwu@trustnetic.com> References: <20230614023429.1002071-1-jiawenwu@trustnetic.com> MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-1 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Remove redundant function ngbe_dev_setup_link_alarm_handler() and related codes. Fixes: b9246b8fa280 ("net/ngbe: support link update") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/ngbe/ngbe_ethdev.c | 28 ---------------------------- drivers/net/ngbe/ngbe_ethdev.h | 1 - 2 files changed, 29 deletions(-) diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index 317ad6999c..af77081d9a 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -974,9 +974,6 @@ ngbe_dev_start(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); - /* Stop the link setup handler before resetting the HW. */ - rte_eal_alarm_cancel(ngbe_dev_setup_link_alarm_handler, dev); - /* disable uio/vfio intr/eventfd mapping */ rte_intr_disable(intr_handle); @@ -1172,8 +1169,6 @@ ngbe_dev_stop(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); - rte_eal_alarm_cancel(ngbe_dev_setup_link_alarm_handler, dev); - if (hw->gpio_ctl) { /* gpio0 is used to power on/off control*/ wr32(hw, NGBE_GPIODATA, NGBE_GPIOBIT_0); @@ -1895,24 +1890,6 @@ ngbe_dev_overheat(struct rte_eth_dev *dev) } } -void -ngbe_dev_setup_link_alarm_handler(void *param) -{ - struct rte_eth_dev *dev = (struct rte_eth_dev *)param; - struct ngbe_hw *hw = ngbe_dev_hw(dev); - struct ngbe_interrupt *intr = ngbe_dev_intr(dev); - u32 speed; - bool autoneg = false; - - speed = hw->phy.autoneg_advertised; - if (!speed) - hw->mac.get_link_capabilities(hw, &speed, &autoneg); - - hw->mac.setup_link(hw, speed, true); - - intr->flags &= ~NGBE_FLAG_NEED_LINK_CONFIG; -} - /* return 0 means link status changed, -1 means not changed */ int ngbe_dev_link_update_share(struct rte_eth_dev *dev, @@ -1922,7 +1899,6 @@ ngbe_dev_link_update_share(struct rte_eth_dev *dev, struct rte_eth_link link; u32 link_speed = NGBE_LINK_SPEED_UNKNOWN; u32 lan_speed = 0; - struct ngbe_interrupt *intr = ngbe_dev_intr(dev); bool link_up; int err; int wait = 1; @@ -1936,9 +1912,6 @@ ngbe_dev_link_update_share(struct rte_eth_dev *dev, hw->mac.get_link_status = true; - if (intr->flags & NGBE_FLAG_NEED_LINK_CONFIG) - return rte_eth_linkstatus_set(dev, &link); - /* check if it needs to wait to complete, if lsc interrupt is enabled */ if (wait_to_complete == 0 || dev->data->dev_conf.intr_conf.lsc != 0) wait = 0; @@ -1953,7 +1926,6 @@ ngbe_dev_link_update_share(struct rte_eth_dev *dev, if (!link_up) return rte_eth_linkstatus_set(dev, &link); - intr->flags &= ~NGBE_FLAG_NEED_LINK_CONFIG; link.link_status = RTE_ETH_LINK_UP; link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX; diff --git a/drivers/net/ngbe/ngbe_ethdev.h b/drivers/net/ngbe/ngbe_ethdev.h index 330f476f6f..3cde7c8750 100644 --- a/drivers/net/ngbe/ngbe_ethdev.h +++ b/drivers/net/ngbe/ngbe_ethdev.h @@ -342,7 +342,6 @@ void ngbe_vlan_hw_strip_bitmap_set(struct rte_eth_dev *dev, uint16_t queue, bool on); void ngbe_config_vlan_strip_on_all_queues(struct rte_eth_dev *dev, int mask); -void ngbe_dev_setup_link_alarm_handler(void *param); void ngbe_read_stats_registers(struct ngbe_hw *hw, struct ngbe_hw_stats *hw_stats);