]> git.ipfire.org Git - thirdparty/linux.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)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 23 Dec 2025 09:35:15 +0000 (10:35 +0100)
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>
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c

index a68757e8fd22c4ab4011bf7c1e59ab12c7639365..c63ddb12237eaa0f8685e729e4a084ce5d0a94fa 100644 (file)
@@ -1928,6 +1928,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;
        }
 
@@ -1974,6 +1975,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;
        }