This series converts all callers of dev_get_stats() to be in sleepable context, so that we can do more work in the .ndo_get_stats64 method. The situation today is that if we have hardware that needs to be accessed through a slow bus like SPI, or through a firmware, we cannot do that directly in .ndo_get_stats64, so we have to poll counters periodically and return a cached (not up to date) copy in the atomic NDO callback. This is undesirable on both ends: more work than strictly needed is being done, and the end result is also worse (not guaranteed to be up to date). So converting the code paths to be compatible with sleeping seems to make more sense. Cc: Leon Romanovsky <leon@xxxxxxxxxx> Cc: Heiko Carstens <hca@xxxxxxxxxxxxx> Cc: Vasily Gorbik <gor@xxxxxxxxxxxxx> Cc: linux-s390@xxxxxxxxxxxxxxx Cc: Jay Vosburgh <j.vosburgh@xxxxxxxxx> Cc: Veaceslav Falico <vfalico@xxxxxxxxx> Cc: Andy Gospodarek <andy@xxxxxxxxxxxxx> Cc: Sridhar Samudrala <sridhar.samudrala@xxxxxxxxx> Cc: "James E.J. Bottomley" <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> Cc: Helge Deller <deller@xxxxxx> Cc: linux-parisc@xxxxxxxxxxxxxxx Cc: Christian Brauner <christian.brauner@xxxxxxxxxx> Vladimir Oltean (13): RDMA/mlx4: remove bogus dev_base_lock usage net: mark dev_base_lock for deprecation net: introduce a mutex for the netns interface lists s390/appldata_net_sum: hold the netdev lists lock when retrieving device statistics net: bonding: hold the netdev lists lock when retrieving device statistics net_failover: hold the netdev lists lock when retrieving device statistics parisc/led: remove trailing whitespaces parisc/led: reindent the code that gathers device statistics parisc/led: hold the netdev lists lock when retrieving device statistics net: procfs: hold the netdev lists lock when retrieving device statistics net: sysfs: don't hold dev_base_lock while retrieving device statistics net: mark ndo_get_stats64 as being able to sleep net: remove obsolete comments about ndo_get_stats64 context from eth drivers Documentation/networking/netdevices.rst | 4 +- Documentation/networking/statistics.rst | 9 +- arch/s390/appldata/appldata_net_sum.c | 8 +- drivers/infiniband/hw/mlx4/main.c | 3 - drivers/net/bonding/bond_main.c | 16 +- drivers/net/ethernet/cisco/enic/enic_main.c | 1 - drivers/net/ethernet/nvidia/forcedeth.c | 2 - drivers/net/ethernet/sfc/efx_common.c | 1 - drivers/net/ethernet/sfc/falcon/efx.c | 1 - drivers/net/net_failover.c | 15 +- drivers/parisc/led.c | 164 ++++++++++---------- include/net/bonding.h | 1 - include/net/net_failover.h | 3 - include/net/net_namespace.h | 5 + net/core/dev.c | 63 +++++--- net/core/net-procfs.c | 13 +- net/core/net-sysfs.c | 3 +- 17 files changed, 162 insertions(+), 150 deletions(-) -- 2.25.1