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 BE82342CAC for ; Wed, 14 Jun 2023 04:37:10 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A943E42D16; Wed, 14 Jun 2023 04:37:10 +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 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz5a-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 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) -- 2.27.0