]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
amd-xgbe: reset retries and mode on RX adapt failures
authorRaju Rangoju <Raju.Rangoju@amd.com>
Mon, 15 Dec 2025 15:17:28 +0000 (20:47 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 8 Jan 2026 09:14:33 +0000 (10:14 +0100)
[ Upstream commit df60c332caf95d70f967aeace826e7e2f0847361 ]

During the stress tests, early RX adaptation handshakes can fail, such
as missing the RX_ADAPT ACK or not receiving a coefficient update before
block lock is established. Continuing to retry RX adaptation in this
state is often ineffective if the current mode selection is not viable.

Resetting the RX adaptation retry counter when an RX_ADAPT request fails
to receive ACK or a coefficient update prior to block lock, and clearing
mode_set so the next bring-up performs a fresh mode selection rather
than looping on a likely invalid configuration.

Fixes: 4f3b20bfbb75 ("amd-xgbe: add support for rx-adaptation")
Signed-off-by: Raju Rangoju <Raju.Rangoju@amd.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Link: https://patch.msgid.link/20251215151728.311713-1-Raju.Rangoju@amd.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c

index 32e633d11348438a0f36997f573d3f86ae901e86..6d2c401bb246e138469b01ce42eb7c42e20a3ea9 100644 (file)
@@ -2036,6 +2036,7 @@ static void xgbe_set_rx_adap_mode(struct xgbe_prv_data *pdata,
 {
        if (pdata->rx_adapt_retries++ >= MAX_RX_ADAPT_RETRIES) {
                pdata->rx_adapt_retries = 0;
+               pdata->mode_set = false;
                return;
        }
 
@@ -2082,6 +2083,7 @@ static void xgbe_rx_adaptation(struct xgbe_prv_data *pdata)
                 */
                netif_dbg(pdata, link, pdata->netdev, "Block_lock done");
                pdata->rx_adapt_done = true;
+               pdata->rx_adapt_retries = 0;
                pdata->mode_set = false;
                return;
        }