]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: ethernet: ravb: Do not check URAM suspension when WoL is active
authorNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Sun, 10 May 2026 10:30:17 +0000 (12:30 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 13 May 2026 01:46:19 +0000 (18:46 -0700)
When updating the driver to match latest datasheet to suspend access to
URAM when suspending DMA transfers a corner-case was missed, URAM access
will not be suspended if WoL is enabled. This lead to the error message
(correctly) being triggered as URAM access is not suspended even tho
it's requested as part of stopping DMA.

Avoid checking if URAM access is suspended and printing the error
message if WoL is enabled when we suspend the system, as we know it will
not be.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Closes: https://lore.kernel.org/all/CAMuHMdWnjV%3DHGE1o08zLhUfTgOSene5fYx1J5GG10mB%2BToq8qg@mail.gmail.com/
Fixes: 353d8e7989b6 ("net: ethernet: ravb: Suspend and resume the transmission flow")
Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Sai Krishna <saikrishnag@marvell.com>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/renesas/ravb_main.c

index 1dbfadb2a88145b5e006d106b8f6c0edfb469865..5f88733094d0fcb45b4af50243b83bb841c26f22 100644 (file)
@@ -1108,9 +1108,12 @@ static int ravb_stop_dma(struct net_device *ndev)
 
        /* Request for transmission suspension */
        ravb_modify(ndev, CCC, CCC_DTSR, CCC_DTSR);
-       error = ravb_wait(ndev, CSR, CSR_DTS, CSR_DTS);
-       if (error)
-               netdev_err(ndev, "failed to stop AXI BUS\n");
+       /* Access to URAM will not be suspended if WoL is enabled. */
+       if (!priv->wol_enabled) {
+               error = ravb_wait(ndev, CSR, CSR_DTS, CSR_DTS);
+               if (error)
+                       netdev_err(ndev, "failed to stop AXI BUS\n");
+       }
 
        /* Stop AVB-DMAC process */
        return ravb_set_opmode(ndev, CCC_OPC_CONFIG);