Re: [PATCH net-next v3 18/19] net: ravb: Do not apply RX CSUM settings to hardware if the interface is down

From: Sergey Shtylyov
Date: Mon Jan 08 2024 - 15:34:53 EST


On 1/5/24 11:23 AM, Claudiu wrote:

> From: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>
>
> Do not apply the RX CSUM settings to hardware if the interface is down. In
> case runtime PM is enabled, and while the interface is down, the IP will be
> in reset mode (as for some platforms disabling the clocks will switch the
> IP to reset mode, which will lead to losing registers content) and applying
> settings in reset mode is not an option. Instead, cache the RX CSUM
> settings and apply them in ravb_open() though ravb_emac_init().
>
> Commit prepares for the addition of runtime PM.
>
> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>
[...]

> diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
> index 168b6208db37..e909960fbc30 100644
> --- a/drivers/net/ethernet/renesas/ravb_main.c
> +++ b/drivers/net/ethernet/renesas/ravb_main.c
> @@ -2342,6 +2342,9 @@ static void ravb_set_rx_csum(struct net_device *ndev, bool enable)
> struct ravb_private *priv = netdev_priv(ndev);
> unsigned long flags;
>
> + if (!(ndev->flags & IFF_UP))

Well, I guess it's even OK to even write EDCMR in the reset mode... BUT
again, won't this race with pm_runtime_put_autosuspend() when its call gets
added to ravb_close()?

> + return;
> +
> spin_lock_irqsave(&priv->lock, flags);
>
> /* Disable TX and RX */

MBR, Sergey