From: Vladimir Oltean <vladimir.oltean@xxxxxxx> Changes in v2: - Addressed the recursion issues in .ndo_get_stats64 from bonding and net_failover. - Renamed netdev_lists_lock to netif_lists_lock - Stopped taking netif_lists_lock from drivers as much as possible. 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. This is marked as Request For Comments for a reason. 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 (12): net: mark dev_base_lock for deprecation net: introduce a mutex for the netns interface lists net: procfs: hold netif_lists_lock when retrieving device statistics net: sysfs: don't hold dev_base_lock while retrieving device statistics s390/appldata_net_sum: hold the netdev lists lock when retrieving device statistics parisc/led: reindent the code that gathers device statistics parisc/led: hold the netdev lists lock when retrieving device statistics net: make dev_get_stats return void net: net_failover: ensure .ndo_get_stats64 can sleep net: bonding: ensure .ndo_get_stats64 can sleep 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 | 8 +- Documentation/networking/statistics.rst | 9 +- arch/s390/appldata/appldata_net_sum.c | 33 ++--- drivers/leds/trigger/ledtrig-netdev.c | 9 +- drivers/net/bonding/bond_main.c | 121 +++++++++--------- drivers/net/ethernet/cisco/enic/enic_main.c | 1 - .../net/ethernet/hisilicon/hns/hns_ethtool.c | 51 ++++---- .../net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 7 +- drivers/net/ethernet/intel/ixgbevf/ethtool.c | 7 +- 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 | 63 ++++++--- drivers/parisc/led.c | 37 +++--- drivers/scsi/fcoe/fcoe_transport.c | 6 +- drivers/usb/gadget/function/rndis.c | 45 +++---- include/linux/netdevice.h | 13 +- include/net/bonding.h | 52 +++++++- include/net/net_failover.h | 9 +- include/net/net_namespace.h | 6 + net/8021q/vlanproc.c | 15 +-- net/core/dev.c | 69 ++++++---- net/core/net-procfs.c | 48 +++---- net/core/net-sysfs.c | 10 +- net/openvswitch/vport.c | 25 ++-- 25 files changed, 372 insertions(+), 276 deletions(-) -- 2.25.1