On 12/17/23 4:54 PM, claudiu beznea wrote: [...] >>> From: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx> >>> >>> Return the cached statistics in case the interface is down. There should be >>> no drawback to this, as most of the statistics are updated on the data path >>> and if runtime PM is enabled and the interface is down, the registers that >>> are explicitly read on ravb_get_stats() are zero anyway on most of the IP >>> variants. >>> >>> The commit prepares the code for the addition of runtime PM support. >>> >>> Suggested-by: Sergey Shtylyov <s.shtylyov@xxxxxx> >>> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx> >>> --- >>> >>> Changes in v2: >>> - none; this patch is new >>> >>> drivers/net/ethernet/renesas/ravb_main.c | 3 +++ >>> 1 file changed, 3 insertions(+) >>> >>> diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c >>> index a2a64c22ec41..1995cf7ff084 100644 >>> --- a/drivers/net/ethernet/renesas/ravb_main.c >>> +++ b/drivers/net/ethernet/renesas/ravb_main.c >>> @@ -2110,6 +2110,9 @@ static struct net_device_stats *ravb_get_stats(struct net_device *ndev) >>> const struct ravb_hw_info *info = priv->info; >>> struct net_device_stats *nstats, *stats0, *stats1; >>> >>> + if (!netif_running(ndev)) >> >> I'm afraid this is racy as __LINK_STATE_START bit gets set >> by __dev_open() before calling the ndo_open() method... :-( > > But (at least on my setup), both ndo_get_stats and ndo_open are called with > rtnl_mutex locked. Unfortunately, it's not always so -- see e.g. netstat_show() in net/core/net-sysfs.c... [...] MBR, Sergey