aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstephen hemminger <stephen@networkplumber.org>2017-01-06 22:12:52 -0500
committerDavid S. Miller <davem@davemloft.net>2017-01-08 17:51:44 -0500
commitbc1f44709cf27fb2a5766cadafe7e2ad5e9cb221 (patch)
tree10f4199c962083956bb3f2928e144b20be23ffe7
parent63c64de7be1f762b8c6c224f2994cf5769b542ae (diff)
net: make ndo_get_stats64 a void function
The network device operation for reading statistics is only called in one place, and it ignores the return value. Having a structure return value is potentially confusing because some future driver could incorrectly assume that the return value was used. Fix all drivers with ndo_get_stats64 to have a void function. Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/bonding/bond_main.c10
-rw-r--r--drivers/net/dummy.c5
-rw-r--r--drivers/net/ethernet/alacritech/slicoss.c6
-rw-r--r--drivers/net/ethernet/amazon/ena/ena_netdev.c10
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-drv.c6
-rw-r--r--drivers/net/ethernet/apm/xgene/xgene_enet_main.c4
-rw-r--r--drivers/net/ethernet/atheros/alx/main.c6
-rw-r--r--drivers/net/ethernet/broadcom/b44.c5
-rw-r--r--drivers/net/ethernet/broadcom/bnx2.c5
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt.c6
-rw-r--r--drivers/net/ethernet/broadcom/tg3.c8
-rw-r--r--drivers/net/ethernet/brocade/bna/bnad.c6
-rw-r--r--drivers/net/ethernet/calxeda/xgmac.c5
-rw-r--r--drivers/net/ethernet/cavium/thunder/nicvf_main.c5
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c7
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_main.c8
-rw-r--r--drivers/net/ethernet/ec_bhf.c4
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c5
-rw-r--r--drivers/net/ethernet/freescale/dpaa/dpaa_eth.c6
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_enet.c6
-rw-r--r--drivers/net/ethernet/ibm/ehea/ehea_main.c5
-rw-r--r--drivers/net/ethernet/intel/e1000e/e1000.h4
-rw-r--r--drivers/net/ethernet/intel/e1000e/netdev.c5
-rw-r--r--drivers/net/ethernet/intel/fm10k/fm10k_netdev.c6
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e.h5
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_main.c18
-rw-r--r--drivers/net/ethernet/intel/igb/igb_main.c10
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c7
-rw-r--r--drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c6
-rw-r--r--drivers/net/ethernet/marvell/mvneta.c4
-rw-r--r--drivers/net/ethernet/marvell/mvpp2.c4
-rw-r--r--drivers/net/ethernet/marvell/sky2.c6
-rw-r--r--drivers/net/ethernet/mediatek/mtk_eth_soc.c6
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_netdev.c4
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_main.c3
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_rep.c3
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum.c4
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/switchx2.c3
-rw-r--r--drivers/net/ethernet/myricom/myri10ge/myri10ge.c9
-rw-r--r--drivers/net/ethernet/neterion/vxge/vxge-main.c4
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfp_net_common.c6
-rw-r--r--drivers/net/ethernet/nvidia/forcedeth.c4
-rw-r--r--drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c10
-rw-r--r--drivers/net/ethernet/qlogic/qede/qede_main.c7
-rw-r--r--drivers/net/ethernet/qualcomm/emac/emac.c6
-rw-r--r--drivers/net/ethernet/realtek/8139too.c9
-rw-r--r--drivers/net/ethernet/realtek/r8169.c4
-rw-r--r--drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c8
-rw-r--r--drivers/net/ethernet/sfc/efx.c6
-rw-r--r--drivers/net/ethernet/sfc/falcon/efx.c6
-rw-r--r--drivers/net/ethernet/sun/niu.c6
-rw-r--r--drivers/net/ethernet/synopsys/dwc_eth_qos.c4
-rw-r--r--drivers/net/ethernet/tile/tilepro.c4
-rw-r--r--drivers/net/ethernet/via/via-rhine.c8
-rw-r--r--drivers/net/fjes/fjes_main.c7
-rw-r--r--drivers/net/hyperv/netvsc_drv.c6
-rw-r--r--drivers/net/ifb.c6
-rw-r--r--drivers/net/ipvlan/ipvlan_main.c5
-rw-r--r--drivers/net/loopback.c5
-rw-r--r--drivers/net/macsec.c8
-rw-r--r--drivers/net/macvlan.c5
-rw-r--r--drivers/net/nlmon.c4
-rw-r--r--drivers/net/ppp/ppp_generic.c4
-rw-r--r--drivers/net/slip/slip.c3
-rw-r--r--drivers/net/team/team.c3
-rw-r--r--drivers/net/tun.c3
-rw-r--r--drivers/net/veth.c6
-rw-r--r--drivers/net/virtio_net.c6
-rw-r--r--drivers/net/vmxnet3/vmxnet3_ethtool.c4
-rw-r--r--drivers/net/vmxnet3/vmxnet3_int.h4
-rw-r--r--drivers/net/vrf.c5
-rw-r--r--drivers/net/xen-netfront.c6
-rw-r--r--drivers/staging/netlogic/xlr_net.c10
-rw-r--r--include/linux/netdevice.h8
-rw-r--r--include/net/ip_tunnels.h4
-rw-r--r--net/8021q/vlan_dev.c5
-rw-r--r--net/bridge/br_device.c6
-rw-r--r--net/ipv4/ip_tunnel_core.c6
-rw-r--r--net/l2tp/l2tp_eth.c6
-rw-r--r--net/mac80211/iface.c4
-rw-r--r--net/openvswitch/vport-internal_dev.c4
-rw-r--r--net/sched/sch_teql.c5
82 files changed, 166 insertions, 309 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 8029dd4912b6..36919221b3f0 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -211,8 +211,8 @@ static int lacp_fast;
211 211
212static int bond_init(struct net_device *bond_dev); 212static int bond_init(struct net_device *bond_dev);
213static void bond_uninit(struct net_device *bond_dev); 213static void bond_uninit(struct net_device *bond_dev);
214static struct rtnl_link_stats64 *bond_get_stats(struct net_device *bond_dev, 214static void bond_get_stats(struct net_device *bond_dev,
215 struct rtnl_link_stats64 *stats); 215 struct rtnl_link_stats64 *stats);
216static void bond_slave_arr_handler(struct work_struct *work); 216static void bond_slave_arr_handler(struct work_struct *work);
217static bool bond_time_in_interval(struct bonding *bond, unsigned long last_act, 217static bool bond_time_in_interval(struct bonding *bond, unsigned long last_act,
218 int mod); 218 int mod);
@@ -3337,8 +3337,8 @@ static void bond_fold_stats(struct rtnl_link_stats64 *_res,
3337 } 3337 }
3338} 3338}
3339 3339
3340static struct rtnl_link_stats64 *bond_get_stats(struct net_device *bond_dev, 3340static void bond_get_stats(struct net_device *bond_dev,
3341 struct rtnl_link_stats64 *stats) 3341 struct rtnl_link_stats64 *stats)
3342{ 3342{
3343 struct bonding *bond = netdev_priv(bond_dev); 3343 struct bonding *bond = netdev_priv(bond_dev);
3344 struct rtnl_link_stats64 temp; 3344 struct rtnl_link_stats64 temp;
@@ -3362,8 +3362,6 @@ static struct rtnl_link_stats64 *bond_get_stats(struct net_device *bond_dev,
3362 3362
3363 memcpy(&bond->bond_stats, stats, sizeof(*stats)); 3363 memcpy(&bond->bond_stats, stats, sizeof(*stats));
3364 spin_unlock(&bond->stats_lock); 3364 spin_unlock(&bond->stats_lock);
3365
3366 return stats;
3367} 3365}
3368 3366
3369static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd) 3367static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd)
diff --git a/drivers/net/dummy.c b/drivers/net/dummy.c
index 6421835f11b7..1f2de4e8207c 100644
--- a/drivers/net/dummy.c
+++ b/drivers/net/dummy.c
@@ -54,8 +54,8 @@ struct pcpu_dstats {
54 struct u64_stats_sync syncp; 54 struct u64_stats_sync syncp;
55}; 55};
56 56
57static struct rtnl_link_stats64 *dummy_get_stats64(struct net_device *dev, 57static void dummy_get_stats64(struct net_device *dev,
58 struct rtnl_link_stats64 *stats) 58 struct rtnl_link_stats64 *stats)
59{ 59{
60 int i; 60 int i;
61 61
@@ -73,7 +73,6 @@ static struct rtnl_link_stats64 *dummy_get_stats64(struct net_device *dev,
73 stats->tx_bytes += tbytes; 73 stats->tx_bytes += tbytes;
74 stats->tx_packets += tpackets; 74 stats->tx_packets += tpackets;
75 } 75 }
76 return stats;
77} 76}
78 77
79static netdev_tx_t dummy_xmit(struct sk_buff *skb, struct net_device *dev) 78static netdev_tx_t dummy_xmit(struct sk_buff *skb, struct net_device *dev)
diff --git a/drivers/net/ethernet/alacritech/slicoss.c b/drivers/net/ethernet/alacritech/slicoss.c
index b21d8aa8d653..15a8096c60df 100644
--- a/drivers/net/ethernet/alacritech/slicoss.c
+++ b/drivers/net/ethernet/alacritech/slicoss.c
@@ -1471,8 +1471,8 @@ drop_skb:
1471 return NETDEV_TX_OK; 1471 return NETDEV_TX_OK;
1472} 1472}
1473 1473
1474static struct rtnl_link_stats64 *slic_get_stats(struct net_device *dev, 1474static void slic_get_stats(struct net_device *dev,
1475 struct rtnl_link_stats64 *lst) 1475 struct rtnl_link_stats64 *lst)
1476{ 1476{
1477 struct slic_device *sdev = netdev_priv(dev); 1477 struct slic_device *sdev = netdev_priv(dev);
1478 struct slic_stats *stats = &sdev->stats; 1478 struct slic_stats *stats = &sdev->stats;
@@ -1489,8 +1489,6 @@ static struct rtnl_link_stats64 *slic_get_stats(struct net_device *dev,
1489 SLIC_GET_STATS_COUNTER(lst->rx_crc_errors, stats, rx_crc); 1489 SLIC_GET_STATS_COUNTER(lst->rx_crc_errors, stats, rx_crc);
1490 SLIC_GET_STATS_COUNTER(lst->rx_fifo_errors, stats, rx_oflow802); 1490 SLIC_GET_STATS_COUNTER(lst->rx_fifo_errors, stats, rx_oflow802);
1491 SLIC_GET_STATS_COUNTER(lst->tx_carrier_errors, stats, tx_carrier); 1491 SLIC_GET_STATS_COUNTER(lst->tx_carrier_errors, stats, tx_carrier);
1492
1493 return lst;
1494} 1492}
1495 1493
1496static int slic_get_sset_count(struct net_device *dev, int sset) 1494static int slic_get_sset_count(struct net_device *dev, int sset)
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
index cc8b13ebfa75..aca95b397393 100644
--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
@@ -2165,19 +2165,19 @@ err:
2165 ena_com_delete_debug_area(adapter->ena_dev); 2165 ena_com_delete_debug_area(adapter->ena_dev);
2166} 2166}
2167 2167
2168static struct rtnl_link_stats64 *ena_get_stats64(struct net_device *netdev, 2168static void ena_get_stats64(struct net_device *netdev,
2169 struct rtnl_link_stats64 *stats) 2169 struct rtnl_link_stats64 *stats)
2170{ 2170{
2171 struct ena_adapter *adapter = netdev_priv(netdev); 2171 struct ena_adapter *adapter = netdev_priv(netdev);
2172 struct ena_admin_basic_stats ena_stats; 2172 struct ena_admin_basic_stats ena_stats;
2173 int rc; 2173 int rc;
2174 2174
2175 if (!test_bit(ENA_FLAG_DEV_UP, &adapter->flags)) 2175 if (!test_bit(ENA_FLAG_DEV_UP, &adapter->flags))
2176 return NULL; 2176 return;
2177 2177
2178 rc = ena_com_get_dev_basic_stats(adapter->ena_dev, &ena_stats); 2178 rc = ena_com_get_dev_basic_stats(adapter->ena_dev, &ena_stats);
2179 if (rc) 2179 if (rc)
2180 return NULL; 2180 return;
2181 2181
2182 stats->tx_bytes = ((u64)ena_stats.tx_bytes_high << 32) | 2182 stats->tx_bytes = ((u64)ena_stats.tx_bytes_high << 32) |
2183 ena_stats.tx_bytes_low; 2183 ena_stats.tx_bytes_low;
@@ -2204,8 +2204,6 @@ static struct rtnl_link_stats64 *ena_get_stats64(struct net_device *netdev,
2204 2204
2205 stats->rx_errors = 0; 2205 stats->rx_errors = 0;
2206 stats->tx_errors = 0; 2206 stats->tx_errors = 0;
2207
2208 return stats;
2209} 2207}
2210 2208
2211static const struct net_device_ops ena_netdev_ops = { 2209static const struct net_device_ops ena_netdev_ops = {
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
index 155190db682d..130de11fa553 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
@@ -1759,8 +1759,8 @@ static void xgbe_tx_timeout(struct net_device *netdev)
1759 schedule_work(&pdata->restart_work); 1759 schedule_work(&pdata->restart_work);
1760} 1760}
1761 1761
1762static struct rtnl_link_stats64 *xgbe_get_stats64(struct net_device *netdev, 1762static void xgbe_get_stats64(struct net_device *netdev,
1763 struct rtnl_link_stats64 *s) 1763 struct rtnl_link_stats64 *s)
1764{ 1764{
1765 struct xgbe_prv_data *pdata = netdev_priv(netdev); 1765 struct xgbe_prv_data *pdata = netdev_priv(netdev);
1766 struct xgbe_mmc_stats *pstats = &pdata->mmc_stats; 1766 struct xgbe_mmc_stats *pstats = &pdata->mmc_stats;
@@ -1786,8 +1786,6 @@ static struct rtnl_link_stats64 *xgbe_get_stats64(struct net_device *netdev,
1786 s->tx_dropped = netdev->stats.tx_dropped; 1786 s->tx_dropped = netdev->stats.tx_dropped;
1787 1787
1788 DBGPR("<--%s\n", __func__); 1788 DBGPR("<--%s\n", __func__);
1789
1790 return s;
1791} 1789}
1792 1790
1793static int xgbe_vlan_rx_add_vid(struct net_device *netdev, __be16 proto, 1791static int xgbe_vlan_rx_add_vid(struct net_device *netdev, __be16 proto,
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
index 523b8eff6d7b..45f2204e6695 100644
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
@@ -1453,7 +1453,7 @@ err:
1453 return ret; 1453 return ret;
1454} 1454}
1455 1455
1456static struct rtnl_link_stats64 *xgene_enet_get_stats64( 1456static void xgene_enet_get_stats64(
1457 struct net_device *ndev, 1457 struct net_device *ndev,
1458 struct rtnl_link_stats64 *storage) 1458 struct rtnl_link_stats64 *storage)
1459{ 1459{
@@ -1484,8 +1484,6 @@ static struct rtnl_link_stats64 *xgene_enet_get_stats64(
1484 } 1484 }
1485 } 1485 }
1486 memcpy(storage, stats, sizeof(struct rtnl_link_stats64)); 1486 memcpy(storage, stats, sizeof(struct rtnl_link_stats64));
1487
1488 return storage;
1489} 1487}
1490 1488
1491static int xgene_enet_set_mac_address(struct net_device *ndev, void *addr) 1489static int xgene_enet_set_mac_address(struct net_device *ndev, void *addr)
diff --git a/drivers/net/ethernet/atheros/alx/main.c b/drivers/net/ethernet/atheros/alx/main.c
index c8f525574d68..c66195d00ed4 100644
--- a/drivers/net/ethernet/atheros/alx/main.c
+++ b/drivers/net/ethernet/atheros/alx/main.c
@@ -1643,8 +1643,8 @@ static void alx_poll_controller(struct net_device *netdev)
1643} 1643}
1644#endif 1644#endif
1645 1645
1646static struct rtnl_link_stats64 *alx_get_stats64(struct net_device *dev, 1646static void alx_get_stats64(struct net_device *dev,
1647 struct rtnl_link_stats64 *net_stats) 1647 struct rtnl_link_stats64 *net_stats)
1648{ 1648{
1649 struct alx_priv *alx = netdev_priv(dev); 1649 struct alx_priv *alx = netdev_priv(dev);
1650 struct alx_hw_stats *hw_stats = &alx->hw.stats; 1650 struct alx_hw_stats *hw_stats = &alx->hw.stats;
@@ -1688,8 +1688,6 @@ static struct rtnl_link_stats64 *alx_get_stats64(struct net_device *dev,
1688 net_stats->rx_packets = hw_stats->rx_ok + net_stats->rx_errors; 1688 net_stats->rx_packets = hw_stats->rx_ok + net_stats->rx_errors;
1689 1689
1690 spin_unlock(&alx->stats_lock); 1690 spin_unlock(&alx->stats_lock);
1691
1692 return net_stats;
1693} 1691}
1694 1692
1695static const struct net_device_ops alx_netdev_ops = { 1693static const struct net_device_ops alx_netdev_ops = {
diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c
index 48707ed76ffc..7aef70f7d8ef 100644
--- a/drivers/net/ethernet/broadcom/b44.c
+++ b/drivers/net/ethernet/broadcom/b44.c
@@ -1674,8 +1674,8 @@ static int b44_close(struct net_device *dev)
1674 return 0; 1674 return 0;
1675} 1675}
1676 1676
1677static struct rtnl_link_stats64 *b44_get_stats64(struct net_device *dev, 1677static void b44_get_stats64(struct net_device *dev,
1678 struct rtnl_link_stats64 *nstat) 1678 struct rtnl_link_stats64 *nstat)
1679{ 1679{
1680 struct b44 *bp = netdev_priv(dev); 1680 struct b44 *bp = netdev_priv(dev);
1681 struct b44_hw_stats *hwstat = &bp->hw_stats; 1681 struct b44_hw_stats *hwstat = &bp->hw_stats;
@@ -1718,7 +1718,6 @@ static struct rtnl_link_stats64 *b44_get_stats64(struct net_device *dev,
1718#endif 1718#endif
1719 } while (u64_stats_fetch_retry_irq(&hwstat->syncp, start)); 1719 } while (u64_stats_fetch_retry_irq(&hwstat->syncp, start));
1720 1720
1721 return nstat;
1722} 1721}
1723 1722
1724static int __b44_load_mcast(struct b44 *bp, struct net_device *dev) 1723static int __b44_load_mcast(struct b44 *bp, struct net_device *dev)
diff --git a/drivers/net/ethernet/broadcom/bnx2.c b/drivers/net/ethernet/broadcom/bnx2.c
index d5d1026be4b7..de1d07c08495 100644
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -6821,13 +6821,13 @@ bnx2_save_stats(struct bnx2 *bp)
6821 (unsigned long) (bp->stats_blk->ctr + \ 6821 (unsigned long) (bp->stats_blk->ctr + \
6822 bp->temp_stats_blk->ctr) 6822 bp->temp_stats_blk->ctr)
6823 6823
6824static struct rtnl_link_stats64 * 6824static void
6825bnx2_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *net_stats) 6825bnx2_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *net_stats)
6826{ 6826{
6827 struct bnx2 *bp = netdev_priv(dev); 6827 struct bnx2 *bp = netdev_priv(dev);
6828 6828
6829 if (bp->stats_blk == NULL) 6829 if (bp->stats_blk == NULL)
6830 return net_stats; 6830 return;
6831 6831
6832 net_stats->rx_packets = 6832 net_stats->rx_packets =
6833 GET_64BIT_NET_STATS(stat_IfHCInUcastPkts) + 6833 GET_64BIT_NET_STATS(stat_IfHCInUcastPkts) +
@@ -6891,7 +6891,6 @@ bnx2_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *net_stats)
6891 GET_32BIT_NET_STATS(stat_IfInMBUFDiscards) + 6891 GET_32BIT_NET_STATS(stat_IfInMBUFDiscards) +
6892 GET_32BIT_NET_STATS(stat_FwRxDrop); 6892 GET_32BIT_NET_STATS(stat_FwRxDrop);
6893 6893
6894 return net_stats;
6895} 6894}
6896 6895
6897/* All ethtool functions called with rtnl_lock */ 6896/* All ethtool functions called with rtnl_lock */
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 98e948489700..e5f458396e1a 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -5879,7 +5879,7 @@ static int bnxt_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
5879 return -EOPNOTSUPP; 5879 return -EOPNOTSUPP;
5880} 5880}
5881 5881
5882static struct rtnl_link_stats64 * 5882static void
5883bnxt_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) 5883bnxt_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
5884{ 5884{
5885 u32 i; 5885 u32 i;
@@ -5888,7 +5888,7 @@ bnxt_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
5888 memset(stats, 0, sizeof(struct rtnl_link_stats64)); 5888 memset(stats, 0, sizeof(struct rtnl_link_stats64));
5889 5889
5890 if (!bp->bnapi) 5890 if (!bp->bnapi)
5891 return stats; 5891 return;
5892 5892
5893 /* TODO check if we need to synchronize with bnxt_close path */ 5893 /* TODO check if we need to synchronize with bnxt_close path */
5894 for (i = 0; i < bp->cp_nr_rings; i++) { 5894 for (i = 0; i < bp->cp_nr_rings; i++) {
@@ -5935,8 +5935,6 @@ bnxt_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
5935 stats->tx_fifo_errors = le64_to_cpu(tx->tx_fifo_underruns); 5935 stats->tx_fifo_errors = le64_to_cpu(tx->tx_fifo_underruns);
5936 stats->tx_errors = le64_to_cpu(tx->tx_err); 5936 stats->tx_errors = le64_to_cpu(tx->tx_err);
5937 } 5937 }
5938
5939 return stats;
5940} 5938}
5941 5939
5942static bool bnxt_mc_list_updated(struct bnxt *bp, u32 *rx_mask) 5940static bool bnxt_mc_list_updated(struct bnxt *bp, u32 *rx_mask)
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c
index 185e9e047aa9..800328f562fa 100644
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -14142,8 +14142,8 @@ static const struct ethtool_ops tg3_ethtool_ops = {
14142 .set_link_ksettings = tg3_set_link_ksettings, 14142 .set_link_ksettings = tg3_set_link_ksettings,
14143}; 14143};
14144 14144
14145static struct rtnl_link_stats64 *tg3_get_stats64(struct net_device *dev, 14145static void tg3_get_stats64(struct net_device *dev,
14146 struct rtnl_link_stats64 *stats) 14146 struct rtnl_link_stats64 *stats)
14147{ 14147{
14148 struct tg3 *tp = netdev_priv(dev); 14148 struct tg3 *tp = netdev_priv(dev);
14149 14149
@@ -14151,13 +14151,11 @@ static struct rtnl_link_stats64 *tg3_get_stats64(struct net_device *dev,
14151 if (!tp->hw_stats) { 14151 if (!tp->hw_stats) {
14152 *stats = tp->net_stats_prev; 14152 *stats = tp->net_stats_prev;
14153 spin_unlock_bh(&tp->lock); 14153 spin_unlock_bh(&tp->lock);
14154 return stats; 14154 return;
14155 } 14155 }
14156 14156
14157 tg3_get_nstats(tp, stats); 14157 tg3_get_nstats(tp, stats);
14158 spin_unlock_bh(&tp->lock); 14158 spin_unlock_bh(&tp->lock);
14159
14160 return stats;
14161} 14159}
14162 14160
14163static void tg3_set_rx_mode(struct net_device *dev) 14161static void tg3_set_rx_mode(struct net_device *dev)
diff --git a/drivers/net/ethernet/brocade/bna/bnad.c b/drivers/net/ethernet/brocade/bna/bnad.c
index 112030828c4b..73a94113db1f 100644
--- a/drivers/net/ethernet/brocade/bna/bnad.c
+++ b/drivers/net/ethernet/brocade/bna/bnad.c
@@ -3111,7 +3111,7 @@ bnad_start_xmit(struct sk_buff *skb, struct net_device *netdev)
3111 * Used spin_lock to synchronize reading of stats structures, which 3111 * Used spin_lock to synchronize reading of stats structures, which
3112 * is written by BNA under the same lock. 3112 * is written by BNA under the same lock.
3113 */ 3113 */
3114static struct rtnl_link_stats64 * 3114static void
3115bnad_get_stats64(struct net_device *netdev, struct rtnl_link_stats64 *stats) 3115bnad_get_stats64(struct net_device *netdev, struct rtnl_link_stats64 *stats)
3116{ 3116{
3117 struct bnad *bnad = netdev_priv(netdev); 3117 struct bnad *bnad = netdev_priv(netdev);
@@ -3123,8 +3123,6 @@ bnad_get_stats64(struct net_device *netdev, struct rtnl_link_stats64 *stats)
3123 bnad_netdev_hwstats_fill(bnad, stats); 3123 bnad_netdev_hwstats_fill(bnad, stats);
3124 3124
3125 spin_unlock_irqrestore(&bnad->bna_lock, flags); 3125 spin_unlock_irqrestore(&bnad->bna_lock, flags);
3126
3127 return stats;
3128} 3126}
3129 3127
3130static void 3128static void
@@ -3427,7 +3425,7 @@ static const struct net_device_ops bnad_netdev_ops = {
3427 .ndo_open = bnad_open, 3425 .ndo_open = bnad_open,
3428 .ndo_stop = bnad_stop, 3426 .ndo_stop = bnad_stop,
3429 .ndo_start_xmit = bnad_start_xmit, 3427 .ndo_start_xmit = bnad_start_xmit,
3430 .ndo_get_stats64 = bnad_get_stats64, 3428 .ndo_get_stats64 = bnad_get_stats64,
3431 .ndo_set_rx_mode = bnad_set_rx_mode, 3429 .ndo_set_rx_mode = bnad_set_rx_mode,
3432 .ndo_validate_addr = eth_validate_addr, 3430 .ndo_validate_addr = eth_validate_addr,
3433 .ndo_set_mac_address = bnad_set_mac_address, 3431 .ndo_set_mac_address = bnad_set_mac_address,
diff --git a/drivers/net/ethernet/calxeda/xgmac.c b/drivers/net/ethernet/calxeda/xgmac.c
index ce7de6f72512..b0540658afad 100644
--- a/drivers/net/ethernet/calxeda/xgmac.c
+++ b/drivers/net/ethernet/calxeda/xgmac.c
@@ -1446,9 +1446,9 @@ static void xgmac_poll_controller(struct net_device *dev)
1446} 1446}
1447#endif 1447#endif
1448 1448
1449static struct rtnl_link_stats64 * 1449static void
1450xgmac_get_stats64(struct net_device *dev, 1450xgmac_get_stats64(struct net_device *dev,
1451 struct rtnl_link_stats64 *storage) 1451 struct rtnl_link_stats64 *storage)
1452{ 1452{
1453 struct xgmac_priv *priv = netdev_priv(dev); 1453 struct xgmac_priv *priv = netdev_priv(dev);
1454 void __iomem *base = priv->base; 1454 void __iomem *base = priv->base;
@@ -1476,7 +1476,6 @@ xgmac_get_stats64(struct net_device *dev,
1476 1476
1477 writel(0, base + XGMAC_MMC_CTRL); 1477 writel(0, base + XGMAC_MMC_CTRL);
1478 spin_unlock_bh(&priv->stats_lock); 1478 spin_unlock_bh(&priv->stats_lock);
1479 return storage;
1480} 1479}
1481 1480
1482static int xgmac_set_mac_address(struct net_device *dev, void *p) 1481static int xgmac_set_mac_address(struct net_device *dev, void *p)
diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
index 2006f58b14b1..273eafdb1c57 100644
--- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
+++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
@@ -1461,8 +1461,8 @@ void nicvf_update_stats(struct nicvf *nic)
1461 nicvf_update_sq_stats(nic, qidx); 1461 nicvf_update_sq_stats(nic, qidx);
1462} 1462}
1463 1463
1464static struct rtnl_link_stats64 *nicvf_get_stats64(struct net_device *netdev, 1464static void nicvf_get_stats64(struct net_device *netdev,
1465 struct rtnl_link_stats64 *stats) 1465 struct rtnl_link_stats64 *stats)
1466{ 1466{
1467 struct nicvf *nic = netdev_priv(netdev); 1467 struct nicvf *nic = netdev_priv(netdev);
1468 struct nicvf_hw_stats *hw_stats = &nic->hw_stats; 1468 struct nicvf_hw_stats *hw_stats = &nic->hw_stats;
@@ -1478,7 +1478,6 @@ static struct rtnl_link_stats64 *nicvf_get_stats64(struct net_device *netdev,
1478 stats->tx_packets = hw_stats->tx_frames; 1478 stats->tx_packets = hw_stats->tx_frames;
1479 stats->tx_dropped = hw_stats->tx_drops; 1479 stats->tx_dropped = hw_stats->tx_drops;
1480 1480
1481 return stats;
1482} 1481}
1483 1482
1484static void nicvf_tx_timeout(struct net_device *dev) 1483static void nicvf_tx_timeout(struct net_device *dev)
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
index 629b11879ceb..3349e1f376c3 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
@@ -2375,8 +2375,8 @@ int cxgb4_remove_server_filter(const struct net_device *dev, unsigned int stid,
2375} 2375}
2376EXPORT_SYMBOL(cxgb4_remove_server_filter); 2376EXPORT_SYMBOL(cxgb4_remove_server_filter);
2377 2377
2378static struct rtnl_link_stats64 *cxgb_get_stats(struct net_device *dev, 2378static void cxgb_get_stats(struct net_device *dev,
2379 struct rtnl_link_stats64 *ns) 2379 struct rtnl_link_stats64 *ns)
2380{ 2380{
2381 struct port_stats stats; 2381 struct port_stats stats;
2382 struct port_info *p = netdev_priv(dev); 2382 struct port_info *p = netdev_priv(dev);
@@ -2389,7 +2389,7 @@ static struct rtnl_link_stats64 *cxgb_get_stats(struct net_device *dev,
2389 spin_lock(&adapter->stats_lock); 2389 spin_lock(&adapter->stats_lock);
2390 if (!netif_device_present(dev)) { 2390 if (!netif_device_present(dev)) {
2391 spin_unlock(&adapter->stats_lock); 2391 spin_unlock(&adapter->stats_lock);
2392 return ns; 2392 return;
2393 } 2393 }
2394 t4_get_port_stats_offset(adapter, p->tx_chan, &stats, 2394 t4_get_port_stats_offset(adapter, p->tx_chan, &stats,
2395 &p->stats_base); 2395 &p->stats_base);
@@ -2423,7 +2423,6 @@ static struct rtnl_link_stats64 *cxgb_get_stats(struct net_device *dev,
2423 ns->tx_errors = stats.tx_error_frames; 2423 ns->tx_errors = stats.tx_error_frames;
2424 ns->rx_errors = stats.rx_symbol_err + stats.rx_fcs_err + 2424 ns->rx_errors = stats.rx_symbol_err + stats.rx_fcs_err +
2425 ns->rx_length_errors + stats.rx_len_err + ns->rx_fifo_errors; 2425 ns->rx_length_errors + stats.rx_len_err + ns->rx_fifo_errors;
2426 return ns;
2427} 2426}
2428 2427
2429static int cxgb_ioctl(struct net_device *dev, struct ifreq *req, int cmd) 2428static int cxgb_ioctl(struct net_device *dev, struct ifreq *req, int cmd)
diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index cdd7a1a59aa7..c5842c525eed 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -680,8 +680,8 @@ static netdev_tx_t enic_hard_start_xmit(struct sk_buff *skb,
680} 680}
681 681
682/* dev_base_lock rwlock held, nominally process context */ 682/* dev_base_lock rwlock held, nominally process context */
683static struct rtnl_link_stats64 *enic_get_stats(struct net_device *netdev, 683static void enic_get_stats(struct net_device *netdev,
684 struct rtnl_link_stats64 *net_stats) 684 struct rtnl_link_stats64 *net_stats)
685{ 685{
686 struct enic *enic = netdev_priv(netdev); 686 struct enic *enic = netdev_priv(netdev);
687 struct vnic_stats *stats; 687 struct vnic_stats *stats;
@@ -693,7 +693,7 @@ static struct rtnl_link_stats64 *enic_get_stats(struct net_device *netdev,
693 * recorded stats. 693 * recorded stats.
694 */ 694 */
695 if (err == -ENOMEM) 695 if (err == -ENOMEM)
696 return net_stats; 696 return;
697 697
698 net_stats->tx_packets = stats->tx.tx_frames_ok; 698 net_stats->tx_packets = stats->tx.tx_frames_ok;
699 net_stats->tx_bytes = stats->tx.tx_bytes_ok; 699 net_stats->tx_bytes = stats->tx.tx_bytes_ok;
@@ -707,8 +707,6 @@ static struct rtnl_link_stats64 *enic_get_stats(struct net_device *netdev,
707 net_stats->rx_over_errors = enic->rq_truncated_pkts; 707 net_stats->rx_over_errors = enic->rq_truncated_pkts;
708 net_stats->rx_crc_errors = enic->rq_bad_fcs; 708 net_stats->rx_crc_errors = enic->rq_bad_fcs;
709 net_stats->rx_dropped = stats->rx.rx_no_bufs + stats->rx.rx_drop; 709 net_stats->rx_dropped = stats->rx.rx_no_bufs + stats->rx.rx_drop;
710
711 return net_stats;
712} 710}
713 711
714static int enic_mc_sync(struct net_device *netdev, const u8 *mc_addr) 712static int enic_mc_sync(struct net_device *netdev, const u8 *mc_addr)
diff --git a/drivers/net/ethernet/ec_bhf.c b/drivers/net/ethernet/ec_bhf.c
index 7bf78a0d322c..278f139f2a22 100644
--- a/drivers/net/ethernet/ec_bhf.c
+++ b/drivers/net/ethernet/ec_bhf.c
@@ -457,7 +457,7 @@ static int ec_bhf_stop(struct net_device *net_dev)
457 return 0; 457 return 0;
458} 458}
459 459
460static struct rtnl_link_stats64 * 460static void
461ec_bhf_get_stats(struct net_device *net_dev, 461ec_bhf_get_stats(struct net_device *net_dev,
462 struct rtnl_link_stats64 *stats) 462 struct rtnl_link_stats64 *stats)
463{ 463{
@@ -472,8 +472,6 @@ ec_bhf_get_stats(struct net_device *net_dev,
472 472
473 stats->tx_bytes = priv->stat_tx_bytes; 473 stats->tx_bytes = priv->stat_tx_bytes;
474 stats->rx_bytes = priv->stat_rx_bytes; 474 stats->rx_bytes = priv->stat_rx_bytes;
475
476 return stats;
477} 475}
478 476
479static const struct net_device_ops ec_bhf_netdev_ops = { 477static const struct net_device_ops ec_bhf_netdev_ops = {
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 225e9a4877d7..0a679d2eaeee 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -639,8 +639,8 @@ void be_parse_stats(struct be_adapter *adapter)
639 } 639 }
640} 640}
641 641
642static struct rtnl_link_stats64 *be_get_stats64(struct net_device *netdev, 642static void be_get_stats64(struct net_device *netdev,
643 struct rtnl_link_stats64 *stats) 643 struct rtnl_link_stats64 *stats)
644{ 644{
645 struct be_adapter *adapter = netdev_priv(netdev); 645 struct be_adapter *adapter = netdev_priv(netdev);
646 struct be_drv_stats *drvs = &adapter->drv_stats; 646 struct be_drv_stats *drvs = &adapter->drv_stats;
@@ -704,7 +704,6 @@ static struct rtnl_link_stats64 *be_get_stats64(struct net_device *netdev,
704 stats->rx_fifo_errors = drvs->rxpp_fifo_overflow_drop + 704 stats->rx_fifo_errors = drvs->rxpp_fifo_overflow_drop +
705 drvs->rx_input_fifo_overflow_drop + 705 drvs->rx_input_fifo_overflow_drop +
706 drvs->rx_drops_no_pbuf; 706 drvs->rx_drops_no_pbuf;
707 return stats;
708} 707}
709 708
710void be_link_status_update(struct be_adapter *adapter, u8 link_status) 709void be_link_status_update(struct be_adapter *adapter, u8 link_status)
diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
index c9b7ad65e563..b7cbc26a0911 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
@@ -313,8 +313,8 @@ static void dpaa_tx_timeout(struct net_device *net_dev)
313/* Calculates the statistics for the given device by adding the statistics 313/* Calculates the statistics for the given device by adding the statistics
314 * collected by each CPU. 314 * collected by each CPU.
315 */ 315 */
316static struct rtnl_link_stats64 *dpaa_get_stats64(struct net_device *net_dev, 316static void dpaa_get_stats64(struct net_device *net_dev,
317 struct rtnl_link_stats64 *s) 317 struct rtnl_link_stats64 *s)
318{ 318{
319 int numstats = sizeof(struct rtnl_link_stats64) / sizeof(u64); 319 int numstats = sizeof(struct rtnl_link_stats64) / sizeof(u64);
320 struct dpaa_priv *priv = netdev_priv(net_dev); 320 struct dpaa_priv *priv = netdev_priv(net_dev);
@@ -332,8 +332,6 @@ static struct rtnl_link_stats64 *dpaa_get_stats64(struct net_device *net_dev,
332 for (j = 0; j < numstats; j++) 332 for (j = 0; j < numstats; j++)
333 netstats[j] += cpustats[j]; 333 netstats[j] += cpustats[j];
334 } 334 }
335
336 return s;
337} 335}
338 336
339static struct mac_device *dpaa_mac_dev_get(struct platform_device *pdev) 337static struct mac_device *dpaa_mac_dev_get(struct platform_device *pdev)
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
index 672b64606321..b7cb61385ad8 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
@@ -1625,8 +1625,8 @@ void hns_nic_set_rx_mode(struct net_device *ndev)
1625 netdev_err(ndev, "sync uc address fail\n"); 1625 netdev_err(ndev, "sync uc address fail\n");
1626} 1626}
1627 1627
1628struct rtnl_link_stats64 *hns_nic_get_stats64(struct net_device *ndev, 1628static void hns_nic_get_stats64(struct net_device *ndev,
1629 struct rtnl_link_stats64 *stats) 1629 struct rtnl_link_stats64 *stats)
1630{ 1630{
1631 int idx = 0; 1631 int idx = 0;
1632 u64 tx_bytes = 0; 1632 u64 tx_bytes = 0;
@@ -1668,8 +1668,6 @@ struct rtnl_link_stats64 *hns_nic_get_stats64(struct net_device *ndev,
1668 stats->tx_window_errors = ndev->stats.tx_window_errors; 1668 stats->tx_window_errors = ndev->stats.tx_window_errors;
1669 stats->rx_compressed = ndev->stats.rx_compressed; 1669 stats->rx_compressed = ndev->stats.rx_compressed;
1670 stats->tx_compressed = ndev->stats.tx_compressed; 1670 stats->tx_compressed = ndev->stats.tx_compressed;
1671
1672 return stats;
1673} 1671}
1674 1672
1675static u16 1673static u16
diff --git a/drivers/net/ethernet/ibm/ehea/ehea_main.c b/drivers/net/ethernet/ibm/ehea/ehea_main.c
index 702446a93697..1e53d7a82675 100644
--- a/drivers/net/ethernet/ibm/ehea/ehea_main.c
+++ b/drivers/net/ethernet/ibm/ehea/ehea_main.c
@@ -328,8 +328,8 @@ out:
328 spin_unlock_irqrestore(&ehea_bcmc_regs.lock, flags); 328 spin_unlock_irqrestore(&ehea_bcmc_regs.lock, flags);
329} 329}
330 330
331static struct rtnl_link_stats64 *ehea_get_stats64(struct net_device *dev, 331static void ehea_get_stats64(struct net_device *dev,
332 struct rtnl_link_stats64 *stats) 332 struct rtnl_link_stats64 *stats)
333{ 333{
334 struct ehea_port *port = netdev_priv(dev); 334 struct ehea_port *port = netdev_priv(dev);
335 u64 rx_packets = 0, tx_packets = 0, rx_bytes = 0, tx_bytes = 0; 335 u64 rx_packets = 0, tx_packets = 0, rx_bytes = 0, tx_bytes = 0;
@@ -352,7 +352,6 @@ static struct rtnl_link_stats64 *ehea_get_stats64(struct net_device *dev,
352 352
353 stats->multicast = port->stats.multicast; 353 stats->multicast = port->stats.multicast;
354 stats->rx_errors = port->stats.rx_errors; 354 stats->rx_errors = port->stats.rx_errors;
355 return stats;
356} 355}
357 356
358static void ehea_update_stats(struct work_struct *work) 357static void ehea_update_stats(struct work_struct *work)
diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h
index 879cca47b021..a29b12e80855 100644
--- a/drivers/net/ethernet/intel/e1000e/e1000.h
+++ b/drivers/net/ethernet/intel/e1000e/e1000.h
@@ -493,8 +493,8 @@ int e1000e_setup_rx_resources(struct e1000_ring *ring);
493int e1000e_setup_tx_resources(struct e1000_ring *ring); 493int e1000e_setup_tx_resources(struct e1000_ring *ring);
494void e1000e_free_rx_resources(struct e1000_ring *ring); 494void e1000e_free_rx_resources(struct e1000_ring *ring);
495void e1000e_free_tx_resources(struct e1000_ring *ring); 495void e1000e_free_tx_resources(struct e1000_ring *ring);
496struct rtnl_link_stats64 *e1000e_get_stats64(struct net_device *netdev, 496void e1000e_get_stats64(struct net_device *netdev,
497 struct rtnl_link_stats64 *stats); 497 struct rtnl_link_stats64 *stats);
498void e1000e_set_interrupt_capability(struct e1000_adapter *adapter); 498void e1000e_set_interrupt_capability(struct e1000_adapter *adapter);
499void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter); 499void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter);
500void e1000e_get_hw_control(struct e1000_adapter *adapter); 500void e1000e_get_hw_control(struct e1000_adapter *adapter);
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index af3960853a32..723025b317cc 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -5920,8 +5920,8 @@ static void e1000_reset_task(struct work_struct *work)
5920 * 5920 *
5921 * Returns the address of the device statistics structure. 5921 * Returns the address of the device statistics structure.
5922 **/ 5922 **/
5923struct rtnl_link_stats64 *e1000e_get_stats64(struct net_device *netdev, 5923void e1000e_get_stats64(struct net_device *netdev,
5924 struct rtnl_link_stats64 *stats) 5924 struct rtnl_link_stats64 *stats)
5925{ 5925{
5926 struct e1000_adapter *adapter = netdev_priv(netdev); 5926 struct e1000_adapter *adapter = netdev_priv(netdev);
5927 5927
@@ -5958,7 +5958,6 @@ struct rtnl_link_stats64 *e1000e_get_stats64(struct net_device *netdev,
5958 /* Tx Dropped needs to be maintained elsewhere */ 5958 /* Tx Dropped needs to be maintained elsewhere */
5959 5959
5960 spin_unlock(&adapter->stats64_lock); 5960 spin_unlock(&adapter->stats64_lock);
5961 return stats;
5962} 5961}
5963 5962
5964/** 5963/**
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
index bc5ef6eb3dd6..01db688cf539 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
@@ -1118,8 +1118,8 @@ void fm10k_reset_rx_state(struct fm10k_intfc *interface)
1118 * Returns 64bit statistics, for use in the ndo_get_stats64 callback. This 1118 * Returns 64bit statistics, for use in the ndo_get_stats64 callback. This
1119 * function replaces fm10k_get_stats for kernels which support it. 1119 * function replaces fm10k_get_stats for kernels which support it.
1120 */ 1120 */
1121static struct rtnl_link_stats64 *fm10k_get_stats64(struct net_device *netdev, 1121static void fm10k_get_stats64(struct net_device *netdev,
1122 struct rtnl_link_stats64 *stats) 1122 struct rtnl_link_stats64 *stats)
1123{ 1123{
1124 struct fm10k_intfc *interface = netdev_priv(netdev); 1124 struct fm10k_intfc *interface = netdev_priv(netdev);
1125 struct fm10k_ring *ring; 1125 struct fm10k_ring *ring;
@@ -1164,8 +1164,6 @@ static struct rtnl_link_stats64 *fm10k_get_stats64(struct net_device *netdev,
1164 1164
1165 /* following stats updated by fm10k_service_task() */ 1165 /* following stats updated by fm10k_service_task() */
1166 stats->rx_missed_errors = netdev->stats.rx_missed_errors; 1166 stats->rx_missed_errors = netdev->stats.rx_missed_errors;
1167
1168 return stats;
1169} 1167}
1170 1168
1171int fm10k_setup_tc(struct net_device *dev, u8 tc) 1169int fm10k_setup_tc(struct net_device *dev, u8 tc)
diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index ba8d30984bee..342007df4663 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -834,9 +834,8 @@ static inline void i40e_irq_dynamic_enable(struct i40e_vsi *vsi, int vector)
834void i40e_irq_dynamic_disable_icr0(struct i40e_pf *pf); 834void i40e_irq_dynamic_disable_icr0(struct i40e_pf *pf);
835void i40e_irq_dynamic_enable_icr0(struct i40e_pf *pf, bool clearpba); 835void i40e_irq_dynamic_enable_icr0(struct i40e_pf *pf, bool clearpba);
836#ifdef I40E_FCOE 836#ifdef I40E_FCOE
837struct rtnl_link_stats64 *i40e_get_netdev_stats_struct( 837void i40e_get_netdev_stats_struct(struct net_device *netdev,
838 struct net_device *netdev, 838 struct rtnl_link_stats64 *storage);
839 struct rtnl_link_stats64 *storage);
840int i40e_set_mac(struct net_device *netdev, void *p); 839int i40e_set_mac(struct net_device *netdev, void *p);
841void i40e_set_rx_mode(struct net_device *netdev); 840void i40e_set_rx_mode(struct net_device *netdev);
842#endif 841#endif
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index ad4cf639430e..b2f76d24000d 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -409,15 +409,11 @@ struct rtnl_link_stats64 *i40e_get_vsi_stats_struct(struct i40e_vsi *vsi)
409 * Returns the address of the device statistics structure. 409 * Returns the address of the device statistics structure.
410 * The statistics are actually updated from the service task. 410 * The statistics are actually updated from the service task.
411 **/ 411 **/
412#ifdef I40E_FCOE 412#ifndef I40E_FCOE
413struct rtnl_link_stats64 *i40e_get_netdev_stats_struct( 413static
414 struct net_device *netdev,
415 struct rtnl_link_stats64 *stats)
416#else
417static struct rtnl_link_stats64 *i40e_get_netdev_stats_struct(
418 struct net_device *netdev,
419 struct rtnl_link_stats64 *stats)
420#endif 414#endif
415void i40e_get_netdev_stats_struct(struct net_device *netdev,
416 struct rtnl_link_stats64 *stats)
421{ 417{
422 struct i40e_netdev_priv *np = netdev_priv(netdev); 418 struct i40e_netdev_priv *np = netdev_priv(netdev);
423 struct i40e_ring *tx_ring, *rx_ring; 419 struct i40e_ring *tx_ring, *rx_ring;
@@ -426,10 +422,10 @@ static struct rtnl_link_stats64 *i40e_get_netdev_stats_struct(
426 int i; 422 int i;
427 423
428 if (test_bit(__I40E_DOWN, &vsi->state)) 424 if (test_bit(__I40E_DOWN, &vsi->state))
429 return stats; 425 return;
430 426
431 if (!vsi->tx_rings) 427 if (!vsi->tx_rings)
432 return stats; 428 return;
433 429
434 rcu_read_lock(); 430 rcu_read_lock();
435 for (i = 0; i < vsi->num_queue_pairs; i++) { 431 for (i = 0; i < vsi->num_queue_pairs; i++) {
@@ -469,8 +465,6 @@ static struct rtnl_link_stats64 *i40e_get_netdev_stats_struct(
469 stats->rx_dropped = vsi_stats->rx_dropped; 465 stats->rx_dropped = vsi_stats->rx_dropped;
470 stats->rx_crc_errors = vsi_stats->rx_crc_errors; 466 stats->rx_crc_errors = vsi_stats->rx_crc_errors;
471 stats->rx_length_errors = vsi_stats->rx_length_errors; 467 stats->rx_length_errors = vsi_stats->rx_length_errors;
472
473 return stats;
474} 468}
475 469
476/** 470/**
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 594604e09f8d..7546109d4980 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -137,8 +137,8 @@ static void igb_update_phy_info(unsigned long);
137static void igb_watchdog(unsigned long); 137static void igb_watchdog(unsigned long);
138static void igb_watchdog_task(struct work_struct *); 138static void igb_watchdog_task(struct work_struct *);
139static netdev_tx_t igb_xmit_frame(struct sk_buff *skb, struct net_device *); 139static netdev_tx_t igb_xmit_frame(struct sk_buff *skb, struct net_device *);
140static struct rtnl_link_stats64 *igb_get_stats64(struct net_device *dev, 140static void igb_get_stats64(struct net_device *dev,
141 struct rtnl_link_stats64 *stats); 141 struct rtnl_link_stats64 *stats);
142static int igb_change_mtu(struct net_device *, int); 142static int igb_change_mtu(struct net_device *, int);
143static int igb_set_mac(struct net_device *, void *); 143static int igb_set_mac(struct net_device *, void *);
144static void igb_set_uta(struct igb_adapter *adapter, bool set); 144static void igb_set_uta(struct igb_adapter *adapter, bool set);
@@ -5404,8 +5404,8 @@ static void igb_reset_task(struct work_struct *work)
5404 * @netdev: network interface device structure 5404 * @netdev: network interface device structure
5405 * @stats: rtnl_link_stats64 pointer 5405 * @stats: rtnl_link_stats64 pointer
5406 **/ 5406 **/
5407static struct rtnl_link_stats64 *igb_get_stats64(struct net_device *netdev, 5407static void igb_get_stats64(struct net_device *netdev,
5408 struct rtnl_link_stats64 *stats) 5408 struct rtnl_link_stats64 *stats)
5409{ 5409{
5410 struct igb_adapter *adapter = netdev_priv(netdev); 5410 struct igb_adapter *adapter = netdev_priv(netdev);
5411 5411
@@ -5413,8 +5413,6 @@ static struct rtnl_link_stats64 *igb_get_stats64(struct net_device *netdev,
5413 igb_update_stats(adapter, &adapter->stats64); 5413 igb_update_stats(adapter, &adapter->stats64);
5414 memcpy(stats, &adapter->stats64, sizeof(*stats)); 5414 memcpy(stats, &adapter->stats64, sizeof(*stats));
5415 spin_unlock(&adapter->stats64_lock); 5415 spin_unlock(&adapter->stats64_lock);
5416
5417 return stats;
5418} 5416}
5419 5417
5420/** 5418/**
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 0c6eca570791..ffe7d940d9ff 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -8173,8 +8173,9 @@ static void ixgbe_netpoll(struct net_device *netdev)
8173} 8173}
8174 8174
8175#endif 8175#endif
8176static struct rtnl_link_stats64 *ixgbe_get_stats64(struct net_device *netdev, 8176
8177 struct rtnl_link_stats64 *stats) 8177static void ixgbe_get_stats64(struct net_device *netdev,
8178 struct rtnl_link_stats64 *stats)
8178{ 8179{
8179 struct ixgbe_adapter *adapter = netdev_priv(netdev); 8180 struct ixgbe_adapter *adapter = netdev_priv(netdev);
8180 int i; 8181 int i;
@@ -8212,13 +8213,13 @@ static struct rtnl_link_stats64 *ixgbe_get_stats64(struct net_device *netdev,
8212 } 8213 }
8213 } 8214 }
8214 rcu_read_unlock(); 8215 rcu_read_unlock();
8216
8215 /* following stats updated by ixgbe_watchdog_task() */ 8217 /* following stats updated by ixgbe_watchdog_task() */
8216 stats->multicast = netdev->stats.multicast; 8218 stats->multicast = netdev->stats.multicast;
8217 stats->rx_errors = netdev->stats.rx_errors; 8219 stats->rx_errors = netdev->stats.rx_errors;
8218 stats->rx_length_errors = netdev->stats.rx_length_errors; 8220 stats->rx_length_errors = netdev->stats.rx_length_errors;
8219 stats->rx_crc_errors = netdev->stats.rx_crc_errors; 8221 stats->rx_crc_errors = netdev->stats.rx_crc_errors;
8220 stats->rx_missed_errors = netdev->stats.rx_missed_errors; 8222 stats->rx_missed_errors = netdev->stats.rx_missed_errors;
8221 return stats;
8222} 8223}
8223 8224
8224#ifdef CONFIG_IXGBE_DCB 8225#ifdef CONFIG_IXGBE_DCB
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index 1a28349114f8..b06863560c7d 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -3896,8 +3896,8 @@ static void ixgbevf_shutdown(struct pci_dev *pdev)
3896 ixgbevf_suspend(pdev, PMSG_SUSPEND); 3896 ixgbevf_suspend(pdev, PMSG_SUSPEND);
3897} 3897}
3898 3898
3899static struct rtnl_link_stats64 *ixgbevf_get_stats(struct net_device *netdev, 3899static void ixgbevf_get_stats(struct net_device *netdev,
3900 struct rtnl_link_stats64 *stats) 3900 struct rtnl_link_stats64 *stats)
3901{ 3901{
3902 struct ixgbevf_adapter *adapter = netdev_priv(netdev); 3902 struct ixgbevf_adapter *adapter = netdev_priv(netdev);
3903 unsigned int start; 3903 unsigned int start;
@@ -3930,8 +3930,6 @@ static struct rtnl_link_stats64 *ixgbevf_get_stats(struct net_device *netdev,
3930 stats->tx_bytes += bytes; 3930 stats->tx_bytes += bytes;
3931 stats->tx_packets += packets; 3931 stats->tx_packets += packets;
3932 } 3932 }
3933
3934 return stats;
3935} 3933}
3936 3934
3937#define IXGBEVF_MAX_MAC_HDR_LEN 127 3935#define IXGBEVF_MAX_MAC_HDR_LEN 127
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index e05e22705cf7..3607d8febbcf 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -652,7 +652,7 @@ static void mvneta_mib_counters_clear(struct mvneta_port *pp)
652} 652}
653 653
654/* Get System Network Statistics */ 654/* Get System Network Statistics */
655static struct rtnl_link_stats64 * 655static void
656mvneta_get_stats64(struct net_device *dev, 656mvneta_get_stats64(struct net_device *dev,
657 struct rtnl_link_stats64 *stats) 657 struct rtnl_link_stats64 *stats)
658{ 658{
@@ -686,8 +686,6 @@ mvneta_get_stats64(struct net_device *dev,
686 stats->rx_dropped = dev->stats.rx_dropped; 686 stats->rx_dropped = dev->stats.rx_dropped;
687 687
688 stats->tx_dropped = dev->stats.tx_dropped; 688 stats->tx_dropped = dev->stats.tx_dropped;
689
690 return stats;
691} 689}
692 690
693/* Rx descriptors helper methods */ 691/* Rx descriptors helper methods */
diff --git a/drivers/net/ethernet/marvell/mvpp2.c b/drivers/net/ethernet/marvell/mvpp2.c
index 4fe430ceb194..69db40e1a4e1 100644
--- a/drivers/net/ethernet/marvell/mvpp2.c
+++ b/drivers/net/ethernet/marvell/mvpp2.c
@@ -5739,7 +5739,7 @@ error:
5739 return err; 5739 return err;
5740} 5740}
5741 5741
5742static struct rtnl_link_stats64 * 5742static void
5743mvpp2_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) 5743mvpp2_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
5744{ 5744{
5745 struct mvpp2_port *port = netdev_priv(dev); 5745 struct mvpp2_port *port = netdev_priv(dev);
@@ -5771,8 +5771,6 @@ mvpp2_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
5771 stats->rx_errors = dev->stats.rx_errors; 5771 stats->rx_errors = dev->stats.rx_errors;
5772 stats->rx_dropped = dev->stats.rx_dropped; 5772 stats->rx_dropped = dev->stats.rx_dropped;
5773 stats->tx_dropped = dev->stats.tx_dropped; 5773 stats->tx_dropped = dev->stats.tx_dropped;
5774
5775 return stats;
5776} 5774}
5777 5775
5778static int mvpp2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) 5776static int mvpp2_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index b60ad0e56a9f..18d6336fa162 100644
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -3888,8 +3888,8 @@ static void sky2_set_multicast(struct net_device *dev)
3888 gma_write16(hw, port, GM_RX_CTRL, reg); 3888 gma_write16(hw, port, GM_RX_CTRL, reg);
3889} 3889}
3890 3890
3891static struct rtnl_link_stats64 *sky2_get_stats(struct net_device *dev, 3891static void sky2_get_stats(struct net_device *dev,
3892 struct rtnl_link_stats64 *stats) 3892 struct rtnl_link_stats64 *stats)
3893{ 3893{
3894 struct sky2_port *sky2 = netdev_priv(dev); 3894 struct sky2_port *sky2 = netdev_priv(dev);
3895 struct sky2_hw *hw = sky2->hw; 3895 struct sky2_hw *hw = sky2->hw;
@@ -3929,8 +3929,6 @@ static struct rtnl_link_stats64 *sky2_get_stats(struct net_device *dev,
3929 stats->rx_dropped = dev->stats.rx_dropped; 3929 stats->rx_dropped = dev->stats.rx_dropped;
3930 stats->rx_fifo_errors = dev->stats.rx_fifo_errors; 3930 stats->rx_fifo_errors = dev->stats.rx_fifo_errors;
3931 stats->tx_fifo_errors = dev->stats.tx_fifo_errors; 3931 stats->tx_fifo_errors = dev->stats.tx_fifo_errors;
3932
3933 return stats;
3934} 3932}
3935 3933
3936/* Can have one global because blinking is controlled by 3934/* Can have one global because blinking is controlled by
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 3dd87889e67e..25ae0c5bce3a 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -462,8 +462,8 @@ static void mtk_stats_update(struct mtk_eth *eth)
462 } 462 }
463} 463}
464 464
465static struct rtnl_link_stats64 *mtk_get_stats64(struct net_device *dev, 465static void mtk_get_stats64(struct net_device *dev,
466 struct rtnl_link_stats64 *storage) 466 struct rtnl_link_stats64 *storage)
467{ 467{
468 struct mtk_mac *mac = netdev_priv(dev); 468 struct mtk_mac *mac = netdev_priv(dev);
469 struct mtk_hw_stats *hw_stats = mac->hw_stats; 469 struct mtk_hw_stats *hw_stats = mac->hw_stats;
@@ -494,8 +494,6 @@ static struct rtnl_link_stats64 *mtk_get_stats64(struct net_device *dev,
494 storage->tx_errors = dev->stats.tx_errors; 494 storage->tx_errors = dev->stats.tx_errors;
495 storage->rx_dropped = dev->stats.rx_dropped; 495 storage->rx_dropped = dev->stats.rx_dropped;
496 storage->tx_dropped = dev->stats.tx_dropped; 496 storage->tx_dropped = dev->stats.tx_dropped;
497
498 return storage;
499} 497}
500 498
501static inline int mtk_max_frag_size(int mtu) 499static inline int mtk_max_frag_size(int mtu)
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
index edbe200ac2fa..06ef23f040a4 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
@@ -1321,7 +1321,7 @@ static void mlx4_en_tx_timeout(struct net_device *dev)
1321} 1321}
1322 1322
1323 1323
1324static struct rtnl_link_stats64 * 1324static void
1325mlx4_en_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) 1325mlx4_en_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
1326{ 1326{
1327 struct mlx4_en_priv *priv = netdev_priv(dev); 1327 struct mlx4_en_priv *priv = netdev_priv(dev);
@@ -1330,8 +1330,6 @@ mlx4_en_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
1330 mlx4_en_fold_software_stats(dev); 1330 mlx4_en_fold_software_stats(dev);
1331 netdev_stats_to_stats64(stats, &dev->stats); 1331 netdev_stats_to_stats64(stats, &dev->stats);
1332 spin_unlock_bh(&priv->stats_lock); 1332 spin_unlock_bh(&priv->stats_lock);
1333
1334 return stats;
1335} 1333}
1336 1334
1337static void mlx4_en_set_default_moderation(struct mlx4_en_priv *priv) 1335static void mlx4_en_set_default_moderation(struct mlx4_en_priv *priv)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index 88dd731bb8cb..60e5670452a1 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -2686,7 +2686,7 @@ mqprio:
2686 return mlx5e_setup_tc(dev, tc->tc); 2686 return mlx5e_setup_tc(dev, tc->tc);
2687} 2687}
2688 2688
2689static struct rtnl_link_stats64 * 2689static void
2690mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats) 2690mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
2691{ 2691{
2692 struct mlx5e_priv *priv = netdev_priv(dev); 2692 struct mlx5e_priv *priv = netdev_priv(dev);
@@ -2729,7 +2729,6 @@ mlx5e_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
2729 stats->multicast = 2729 stats->multicast =
2730 VPORT_COUNTER_GET(vstats, received_eth_multicast.packets); 2730 VPORT_COUNTER_GET(vstats, received_eth_multicast.packets);
2731 2731
2732 return stats;
2733} 2732}
2734 2733
2735static void mlx5e_set_rx_mode(struct net_device *dev) 2734static void mlx5e_set_rx_mode(struct net_device *dev)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
index 850378893b25..2c864574a9d5 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
@@ -374,13 +374,12 @@ int mlx5e_get_offload_stats(int attr_id, const struct net_device *dev,
374 return -EINVAL; 374 return -EINVAL;
375} 375}
376 376
377static struct rtnl_link_stats64 * 377static void
378mlx5e_rep_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats) 378mlx5e_rep_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
379{ 379{
380 struct mlx5e_priv *priv = netdev_priv(dev); 380 struct mlx5e_priv *priv = netdev_priv(dev);
381 381
382 memcpy(stats, &priv->stats.vf_vport, sizeof(*stats)); 382 memcpy(stats, &priv->stats.vf_vport, sizeof(*stats));
383 return stats;
384} 383}
385 384
386static const struct switchdev_ops mlx5e_rep_switchdev_ops = { 385static const struct switchdev_ops mlx5e_rep_switchdev_ops = {
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
index d768c7b6c6d6..46c53a042e6b 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
@@ -947,15 +947,13 @@ out:
947/* Return the stats from a cache that is updated periodically, 947/* Return the stats from a cache that is updated periodically,
948 * as this function might get called in an atomic context. 948 * as this function might get called in an atomic context.
949 */ 949 */
950static struct rtnl_link_stats64 * 950static void
951mlxsw_sp_port_get_stats64(struct net_device *dev, 951mlxsw_sp_port_get_stats64(struct net_device *dev,
952 struct rtnl_link_stats64 *stats) 952 struct rtnl_link_stats64 *stats)
953{ 953{
954 struct mlxsw_sp_port *mlxsw_sp_port = netdev_priv(dev); 954 struct mlxsw_sp_port *mlxsw_sp_port = netdev_priv(dev);
955 955
956 memcpy(stats, mlxsw_sp_port->hw_stats.cache, sizeof(*stats)); 956 memcpy(stats, mlxsw_sp_port->hw_stats.cache, sizeof(*stats));
957
958 return stats;
959} 957}
960 958
961int mlxsw_sp_port_vlan_set(struct mlxsw_sp_port *mlxsw_sp_port, u16 vid_begin, 959int mlxsw_sp_port_vlan_set(struct mlxsw_sp_port *mlxsw_sp_port, u16 vid_begin,
diff --git a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c
index 150ccf5192a9..696d40612d28 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c
@@ -381,7 +381,7 @@ static int mlxsw_sx_port_change_mtu(struct net_device *dev, int mtu)
381 return 0; 381 return 0;
382} 382}
383 383
384static struct rtnl_link_stats64 * 384static void
385mlxsw_sx_port_get_stats64(struct net_device *dev, 385mlxsw_sx_port_get_stats64(struct net_device *dev,
386 struct rtnl_link_stats64 *stats) 386 struct rtnl_link_stats64 *stats)
387{ 387{
@@ -410,7 +410,6 @@ mlxsw_sx_port_get_stats64(struct net_device *dev,
410 tx_dropped += p->tx_dropped; 410 tx_dropped += p->tx_dropped;
411 } 411 }
412 stats->tx_dropped = tx_dropped; 412 stats->tx_dropped = tx_dropped;
413 return stats;
414} 413}
415 414
416static int mlxsw_sx_port_get_phys_port_name(struct net_device *dev, char *name, 415static int mlxsw_sx_port_get_phys_port_name(struct net_device *dev, char *name,
diff --git a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
index e506ca876d0d..db297cfce6f4 100644
--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
@@ -378,8 +378,8 @@ static inline void put_be32(__be32 val, __be32 __iomem * p)
378 __raw_writel((__force __u32) val, (__force void __iomem *)p); 378 __raw_writel((__force __u32) val, (__force void __iomem *)p);
379} 379}
380 380
381static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev, 381static void myri10ge_get_stats(struct net_device *dev,
382 struct rtnl_link_stats64 *stats); 382 struct rtnl_link_stats64 *stats);
383 383
384static void set_fw_name(struct myri10ge_priv *mgp, char *name, bool allocated) 384static void set_fw_name(struct myri10ge_priv *mgp, char *name, bool allocated)
385{ 385{
@@ -3119,8 +3119,8 @@ drop:
3119 return NETDEV_TX_OK; 3119 return NETDEV_TX_OK;
3120} 3120}
3121 3121
3122static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev, 3122static void myri10ge_get_stats(struct net_device *dev,
3123 struct rtnl_link_stats64 *stats) 3123 struct rtnl_link_stats64 *stats)
3124{ 3124{
3125 const struct myri10ge_priv *mgp = netdev_priv(dev); 3125 const struct myri10ge_priv *mgp = netdev_priv(dev);
3126 const struct myri10ge_slice_netstats *slice_stats; 3126 const struct myri10ge_slice_netstats *slice_stats;
@@ -3135,7 +3135,6 @@ static struct rtnl_link_stats64 *myri10ge_get_stats(struct net_device *dev,
3135 stats->rx_dropped += slice_stats->rx_dropped; 3135 stats->rx_dropped += slice_stats->rx_dropped;
3136 stats->tx_dropped += slice_stats->tx_dropped; 3136 stats->tx_dropped += slice_stats->tx_dropped;
3137 } 3137 }
3138 return stats;
3139} 3138}
3140 3139
3141static void myri10ge_set_multicast_list(struct net_device *dev) 3140static void myri10ge_set_multicast_list(struct net_device *dev)
diff --git a/drivers/net/ethernet/neterion/vxge/vxge-main.c b/drivers/net/ethernet/neterion/vxge/vxge-main.c
index e07b936f64ec..f364502229db 100644
--- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
+++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
@@ -3111,7 +3111,7 @@ static int vxge_change_mtu(struct net_device *dev, int new_mtu)
3111 * @stats: pointer to struct rtnl_link_stats64 3111 * @stats: pointer to struct rtnl_link_stats64
3112 * 3112 *
3113 */ 3113 */
3114static struct rtnl_link_stats64 * 3114static void
3115vxge_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *net_stats) 3115vxge_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *net_stats)
3116{ 3116{
3117 struct vxgedev *vdev = netdev_priv(dev); 3117 struct vxgedev *vdev = netdev_priv(dev);
@@ -3150,8 +3150,6 @@ vxge_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *net_stats)
3150 net_stats->tx_bytes += bytes; 3150 net_stats->tx_bytes += bytes;
3151 net_stats->tx_errors += txstats->tx_errors; 3151 net_stats->tx_errors += txstats->tx_errors;
3152 } 3152 }
3153
3154 return net_stats;
3155} 3153}
3156 3154
3157static enum vxge_hw_status vxge_timestamp_config(struct __vxge_hw_device *devh) 3155static enum vxge_hw_status vxge_timestamp_config(struct __vxge_hw_device *devh)
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
index e8d448109e03..67afd95ffb93 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
@@ -2638,8 +2638,8 @@ static int nfp_net_change_mtu(struct net_device *netdev, int new_mtu)
2638 return nfp_net_ring_reconfig(nn, &nn->xdp_prog, &rx, NULL); 2638 return nfp_net_ring_reconfig(nn, &nn->xdp_prog, &rx, NULL);
2639} 2639}
2640 2640
2641static struct rtnl_link_stats64 *nfp_net_stat64(struct net_device *netdev, 2641static void nfp_net_stat64(struct net_device *netdev,
2642 struct rtnl_link_stats64 *stats) 2642 struct rtnl_link_stats64 *stats)
2643{ 2643{
2644 struct nfp_net *nn = netdev_priv(netdev); 2644 struct nfp_net *nn = netdev_priv(netdev);
2645 int r; 2645 int r;
@@ -2669,8 +2669,6 @@ static struct rtnl_link_stats64 *nfp_net_stat64(struct net_device *netdev,
2669 stats->tx_bytes += data[1]; 2669 stats->tx_bytes += data[1];
2670 stats->tx_errors += data[2]; 2670 stats->tx_errors += data[2];
2671 } 2671 }
2672
2673 return stats;
2674} 2672}
2675 2673
2676static bool nfp_net_ebpf_capable(struct nfp_net *nn) 2674static bool nfp_net_ebpf_capable(struct nfp_net *nn)
diff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c
index 3913f07279d2..dfc2c8149d22 100644
--- a/drivers/net/ethernet/nvidia/forcedeth.c
+++ b/drivers/net/ethernet/nvidia/forcedeth.c
@@ -1733,7 +1733,7 @@ static void nv_update_stats(struct net_device *dev)
1733 * Called with read_lock(&dev_base_lock) held for read - 1733 * Called with read_lock(&dev_base_lock) held for read -
1734 * only synchronized against unregister_netdevice. 1734 * only synchronized against unregister_netdevice.
1735 */ 1735 */
1736static struct rtnl_link_stats64* 1736static void
1737nv_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *storage) 1737nv_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *storage)
1738 __acquires(&netdev_priv(dev)->hwstats_lock) 1738 __acquires(&netdev_priv(dev)->hwstats_lock)
1739 __releases(&netdev_priv(dev)->hwstats_lock) 1739 __releases(&netdev_priv(dev)->hwstats_lock)
@@ -1793,8 +1793,6 @@ nv_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *storage)
1793 1793
1794 spin_unlock_bh(&np->hwstats_lock); 1794 spin_unlock_bh(&np->hwstats_lock);
1795 } 1795 }
1796
1797 return storage;
1798} 1796}
1799 1797
1800/* 1798/*
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
index 561fb94c7267..86fb9d3df700 100644
--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
@@ -90,8 +90,8 @@ static irqreturn_t netxen_msix_intr(int irq, void *data);
90 90
91static void netxen_free_ip_list(struct netxen_adapter *, bool); 91static void netxen_free_ip_list(struct netxen_adapter *, bool);
92static void netxen_restore_indev_addr(struct net_device *dev, unsigned long); 92static void netxen_restore_indev_addr(struct net_device *dev, unsigned long);
93static struct rtnl_link_stats64 *netxen_nic_get_stats(struct net_device *dev, 93static void netxen_nic_get_stats(struct net_device *dev,
94 struct rtnl_link_stats64 *stats); 94 struct rtnl_link_stats64 *stats);
95static int netxen_nic_set_mac(struct net_device *netdev, void *p); 95static int netxen_nic_set_mac(struct net_device *netdev, void *p);
96 96
97/* PCI Device ID Table */ 97/* PCI Device ID Table */
@@ -2302,8 +2302,8 @@ request_reset:
2302 clear_bit(__NX_RESETTING, &adapter->state); 2302 clear_bit(__NX_RESETTING, &adapter->state);
2303} 2303}
2304 2304
2305static struct rtnl_link_stats64 *netxen_nic_get_stats(struct net_device *netdev, 2305static void netxen_nic_get_stats(struct net_device *netdev,
2306 struct rtnl_link_stats64 *stats) 2306 struct rtnl_link_stats64 *stats)
2307{ 2307{
2308 struct netxen_adapter *adapter = netdev_priv(netdev); 2308 struct netxen_adapter *adapter = netdev_priv(netdev);
2309 2309
@@ -2313,8 +2313,6 @@ static struct rtnl_link_stats64 *netxen_nic_get_stats(struct net_device *netdev,
2313 stats->tx_bytes = adapter->stats.txbytes; 2313 stats->tx_bytes = adapter->stats.txbytes;
2314 stats->rx_dropped = adapter->stats.rxdropped; 2314 stats->rx_dropped = adapter->stats.rxdropped;
2315 stats->tx_dropped = adapter->stats.txdropped; 2315 stats->tx_dropped = adapter->stats.txdropped;
2316
2317 return stats;
2318} 2316}
2319 2317
2320static irqreturn_t netxen_intr(int irq, void *data) 2318static irqreturn_t netxen_intr(int irq, void *data)
diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
index b58509feecd5..40a76a1d5973 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
@@ -398,9 +398,8 @@ void qede_fill_by_demand_stats(struct qede_dev *edev)
398 edev->stats.tx_mac_ctrl_frames = stats.tx_mac_ctrl_frames; 398 edev->stats.tx_mac_ctrl_frames = stats.tx_mac_ctrl_frames;
399} 399}
400 400
401static 401static void qede_get_stats64(struct net_device *dev,
402struct rtnl_link_stats64 *qede_get_stats64(struct net_device *dev, 402 struct rtnl_link_stats64 *stats)
403 struct rtnl_link_stats64 *stats)
404{ 403{
405 struct qede_dev *edev = netdev_priv(dev); 404 struct qede_dev *edev = netdev_priv(dev);
406 405
@@ -430,8 +429,6 @@ struct rtnl_link_stats64 *qede_get_stats64(struct net_device *dev,
430 stats->collisions = edev->stats.tx_total_collisions; 429 stats->collisions = edev->stats.tx_total_collisions;
431 stats->rx_crc_errors = edev->stats.rx_crc_errors; 430 stats->rx_crc_errors = edev->stats.rx_crc_errors;
432 stats->rx_frame_errors = edev->stats.rx_align_errors; 431 stats->rx_frame_errors = edev->stats.rx_align_errors;
433
434 return stats;
435} 432}
436 433
437#ifdef CONFIG_QED_SRIOV 434#ifdef CONFIG_QED_SRIOV
diff --git a/drivers/net/ethernet/qualcomm/emac/emac.c b/drivers/net/ethernet/qualcomm/emac/emac.c
index 422289c232bc..40ebe010b06f 100644
--- a/drivers/net/ethernet/qualcomm/emac/emac.c
+++ b/drivers/net/ethernet/qualcomm/emac/emac.c
@@ -312,8 +312,8 @@ static int emac_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
312} 312}
313 313
314/* Provide network statistics info for the interface */ 314/* Provide network statistics info for the interface */
315static struct rtnl_link_stats64 *emac_get_stats64(struct net_device *netdev, 315static void emac_get_stats64(struct net_device *netdev,
316 struct rtnl_link_stats64 *net_stats) 316 struct rtnl_link_stats64 *net_stats)
317{ 317{
318 struct emac_adapter *adpt = netdev_priv(netdev); 318 struct emac_adapter *adpt = netdev_priv(netdev);
319 unsigned int addr = REG_MAC_RX_STATUS_BIN; 319 unsigned int addr = REG_MAC_RX_STATUS_BIN;
@@ -377,8 +377,6 @@ static struct rtnl_link_stats64 *emac_get_stats64(struct net_device *netdev,
377 net_stats->tx_window_errors = stats->tx_late_col; 377 net_stats->tx_window_errors = stats->tx_late_col;
378 378
379 spin_unlock(&stats->lock); 379 spin_unlock(&stats->lock);
380
381 return net_stats;
382} 380}
383 381
384static const struct net_device_ops emac_netdev_ops = { 382static const struct net_device_ops emac_netdev_ops = {
diff --git a/drivers/net/ethernet/realtek/8139too.c b/drivers/net/ethernet/realtek/8139too.c
index 9bc047ac883b..5ad59c6d29a4 100644
--- a/drivers/net/ethernet/realtek/8139too.c
+++ b/drivers/net/ethernet/realtek/8139too.c
@@ -653,9 +653,8 @@ static int rtl8139_poll(struct napi_struct *napi, int budget);
653static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance); 653static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance);
654static int rtl8139_close (struct net_device *dev); 654static int rtl8139_close (struct net_device *dev);
655static int netdev_ioctl (struct net_device *dev, struct ifreq *rq, int cmd); 655static int netdev_ioctl (struct net_device *dev, struct ifreq *rq, int cmd);
656static struct rtnl_link_stats64 *rtl8139_get_stats64(struct net_device *dev, 656static void rtl8139_get_stats64(struct net_device *dev,
657 struct rtnl_link_stats64 657 struct rtnl_link_stats64 *stats);
658 *stats);
659static void rtl8139_set_rx_mode (struct net_device *dev); 658static void rtl8139_set_rx_mode (struct net_device *dev);
660static void __set_rx_mode (struct net_device *dev); 659static void __set_rx_mode (struct net_device *dev);
661static void rtl8139_hw_start (struct net_device *dev); 660static void rtl8139_hw_start (struct net_device *dev);
@@ -2516,7 +2515,7 @@ static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
2516} 2515}
2517 2516
2518 2517
2519static struct rtnl_link_stats64 * 2518static void
2520rtl8139_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) 2519rtl8139_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
2521{ 2520{
2522 struct rtl8139_private *tp = netdev_priv(dev); 2521 struct rtl8139_private *tp = netdev_priv(dev);
@@ -2544,8 +2543,6 @@ rtl8139_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
2544 stats->tx_packets = tp->tx_stats.packets; 2543 stats->tx_packets = tp->tx_stats.packets;
2545 stats->tx_bytes = tp->tx_stats.bytes; 2544 stats->tx_bytes = tp->tx_stats.bytes;
2546 } while (u64_stats_fetch_retry_irq(&tp->tx_stats.syncp, start)); 2545 } while (u64_stats_fetch_retry_irq(&tp->tx_stats.syncp, start));
2547
2548 return stats;
2549} 2546}
2550 2547
2551/* Set or clear the multicast filter for this adaptor. 2548/* Set or clear the multicast filter for this adaptor.
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
index 44389c90056a..858f4554de11 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -7755,7 +7755,7 @@ err_pm_runtime_put:
7755 goto out; 7755 goto out;
7756} 7756}
7757 7757
7758static struct rtnl_link_stats64 * 7758static void
7759rtl8169_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) 7759rtl8169_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
7760{ 7760{
7761 struct rtl8169_private *tp = netdev_priv(dev); 7761 struct rtl8169_private *tp = netdev_priv(dev);
@@ -7809,8 +7809,6 @@ rtl8169_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
7809 le16_to_cpu(tp->tc_offset.tx_aborted); 7809 le16_to_cpu(tp->tc_offset.tx_aborted);
7810 7810
7811 pm_runtime_put_noidle(&pdev->dev); 7811 pm_runtime_put_noidle(&pdev->dev);
7812
7813 return stats;
7814} 7812}
7815 7813
7816static void rtl8169_net_suspend(struct net_device *dev) 7814static void rtl8169_net_suspend(struct net_device *dev)
diff --git a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
index cddcff5a00a7..07074d9bc45d 100644
--- a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
+++ b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
@@ -1706,11 +1706,9 @@ static inline u64 sxgbe_get_stat64(void __iomem *ioaddr, int reg_lo, int reg_hi)
1706 * This function is a driver entry point whenever ifconfig command gets 1706 * This function is a driver entry point whenever ifconfig command gets
1707 * executed to see device statistics. Statistics are number of 1707 * executed to see device statistics. Statistics are number of
1708 * bytes sent or received, errors occurred etc. 1708 * bytes sent or received, errors occurred etc.
1709 * Return value:
1710 * This function returns various statistical information of device.
1711 */ 1709 */
1712static struct rtnl_link_stats64 *sxgbe_get_stats64(struct net_device *dev, 1710static void sxgbe_get_stats64(struct net_device *dev,
1713 struct rtnl_link_stats64 *stats) 1711 struct rtnl_link_stats64 *stats)
1714{ 1712{
1715 struct sxgbe_priv_data *priv = netdev_priv(dev); 1713 struct sxgbe_priv_data *priv = netdev_priv(dev);
1716 void __iomem *ioaddr = priv->ioaddr; 1714 void __iomem *ioaddr = priv->ioaddr;
@@ -1761,8 +1759,6 @@ static struct rtnl_link_stats64 *sxgbe_get_stats64(struct net_device *dev,
1761 SXGBE_MMC_TXUFLWHI_GBCNT_REG); 1759 SXGBE_MMC_TXUFLWHI_GBCNT_REG);
1762 writel(0, ioaddr + SXGBE_MMC_CTL_REG); 1760 writel(0, ioaddr + SXGBE_MMC_CTL_REG);
1763 spin_unlock(&priv->stats_lock); 1761 spin_unlock(&priv->stats_lock);
1764
1765 return stats;
1766} 1762}
1767 1763
1768/* sxgbe_set_features - entry point to set offload features of the device. 1764/* sxgbe_set_features - entry point to set offload features of the device.
diff --git a/drivers/net/ethernet/sfc/efx.c b/drivers/net/ethernet/sfc/efx.c
index bbbed2e84de8..ebeecb8fed45 100644
--- a/drivers/net/ethernet/sfc/efx.c
+++ b/drivers/net/ethernet/sfc/efx.c
@@ -2219,16 +2219,14 @@ int efx_net_stop(struct net_device *net_dev)
2219} 2219}
2220 2220
2221/* Context: process, dev_base_lock or RTNL held, non-blocking. */ 2221/* Context: process, dev_base_lock or RTNL held, non-blocking. */
2222static struct rtnl_link_stats64 *efx_net_stats(struct net_device *net_dev, 2222static void efx_net_stats(struct net_device *net_dev,
2223 struct rtnl_link_stats64 *stats) 2223 struct rtnl_link_stats64 *stats)
2224{ 2224{
2225 struct efx_nic *efx = netdev_priv(net_dev); 2225 struct efx_nic *efx = netdev_priv(net_dev);
2226 2226
2227 spin_lock_bh(&efx->stats_lock); 2227 spin_lock_bh(&efx->stats_lock);
2228 efx->type->update_stats(efx, NULL, stats); 2228 efx->type->update_stats(efx, NULL, stats);
2229 spin_unlock_bh(&efx->stats_lock); 2229 spin_unlock_bh(&efx->stats_lock);
2230
2231 return stats;
2232} 2230}
2233 2231
2234/* Context: netif_tx_lock held, BHs disabled. */ 2232/* Context: netif_tx_lock held, BHs disabled. */
diff --git a/drivers/net/ethernet/sfc/falcon/efx.c b/drivers/net/ethernet/sfc/falcon/efx.c
index ec3ac0e45cc9..8cfbe01e1ddf 100644
--- a/drivers/net/ethernet/sfc/falcon/efx.c
+++ b/drivers/net/ethernet/sfc/falcon/efx.c
@@ -2158,16 +2158,14 @@ int ef4_net_stop(struct net_device *net_dev)
2158} 2158}
2159 2159
2160/* Context: process, dev_base_lock or RTNL held, non-blocking. */ 2160/* Context: process, dev_base_lock or RTNL held, non-blocking. */
2161static struct rtnl_link_stats64 *ef4_net_stats(struct net_device *net_dev, 2161static void ef4_net_stats(struct net_device *net_dev,
2162 struct rtnl_link_stats64 *stats) 2162 struct rtnl_link_stats64 *stats)
2163{ 2163{
2164 struct ef4_nic *efx = netdev_priv(net_dev); 2164 struct ef4_nic *efx = netdev_priv(net_dev);
2165 2165
2166 spin_lock_bh(&efx->stats_lock); 2166 spin_lock_bh(&efx->stats_lock);
2167 efx->type->update_stats(efx, NULL, stats); 2167 efx->type->update_stats(efx, NULL, stats);
2168 spin_unlock_bh(&efx->stats_lock); 2168 spin_unlock_bh(&efx->stats_lock);
2169
2170 return stats;
2171} 2169}
2172 2170
2173/* Context: netif_tx_lock held, BHs disabled. */ 2171/* Context: netif_tx_lock held, BHs disabled. */
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
index f90d1af6d390..e557a3290a25 100644
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
@@ -6294,8 +6294,8 @@ no_rings:
6294 stats->tx_errors = errors; 6294 stats->tx_errors = errors;
6295} 6295}
6296 6296
6297static struct rtnl_link_stats64 *niu_get_stats(struct net_device *dev, 6297static void niu_get_stats(struct net_device *dev,
6298 struct rtnl_link_stats64 *stats) 6298 struct rtnl_link_stats64 *stats)
6299{ 6299{
6300 struct niu *np = netdev_priv(dev); 6300 struct niu *np = netdev_priv(dev);
6301 6301
@@ -6303,8 +6303,6 @@ static struct rtnl_link_stats64 *niu_get_stats(struct net_device *dev,
6303 niu_get_rx_stats(np, stats); 6303 niu_get_rx_stats(np, stats);
6304 niu_get_tx_stats(np, stats); 6304 niu_get_tx_stats(np, stats);
6305 } 6305 }
6306
6307 return stats;
6308} 6306}
6309 6307
6310static void niu_load_hash_xmac(struct niu *np, u16 *hash) 6308static void niu_load_hash_xmac(struct niu *np, u16 *hash)
diff --git a/drivers/net/ethernet/synopsys/dwc_eth_qos.c b/drivers/net/ethernet/synopsys/dwc_eth_qos.c
index 09f5a67da35e..467dcc53f5e1 100644
--- a/drivers/net/ethernet/synopsys/dwc_eth_qos.c
+++ b/drivers/net/ethernet/synopsys/dwc_eth_qos.c
@@ -2490,7 +2490,7 @@ static void dwceqos_read_mmc_counters(struct net_local *lp, u32 rx_mask,
2490 dwceqos_read(lp, DWC_MMC_RXPACKETCOUNT_GB); 2490 dwceqos_read(lp, DWC_MMC_RXPACKETCOUNT_GB);
2491} 2491}
2492 2492
2493static struct rtnl_link_stats64* 2493static void
2494dwceqos_get_stats64(struct net_device *ndev, struct rtnl_link_stats64 *s) 2494dwceqos_get_stats64(struct net_device *ndev, struct rtnl_link_stats64 *s)
2495{ 2495{
2496 unsigned long flags; 2496 unsigned long flags;
@@ -2522,8 +2522,6 @@ dwceqos_get_stats64(struct net_device *ndev, struct rtnl_link_stats64 *s)
2522 else 2522 else
2523 s->tx_errors = hwstats->txunderflowerror + 2523 s->tx_errors = hwstats->txunderflowerror +
2524 hwstats->txcarriererror; 2524 hwstats->txcarriererror;
2525
2526 return s;
2527} 2525}
2528 2526
2529static void 2527static void
diff --git a/drivers/net/ethernet/tile/tilepro.c b/drivers/net/ethernet/tile/tilepro.c
index 0a3b7dafa3ba..30cfea62a356 100644
--- a/drivers/net/ethernet/tile/tilepro.c
+++ b/drivers/net/ethernet/tile/tilepro.c
@@ -2047,8 +2047,8 @@ static int tile_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
2047 * 2047 *
2048 * Returns the address of the device statistics structure. 2048 * Returns the address of the device statistics structure.
2049 */ 2049 */
2050static struct rtnl_link_stats64 *tile_net_get_stats64(struct net_device *dev, 2050static void tile_net_get_stats64(struct net_device *dev,
2051 struct rtnl_link_stats64 *stats) 2051 struct rtnl_link_stats64 *stats)
2052{ 2052{
2053 struct tile_net_priv *priv = netdev_priv(dev); 2053 struct tile_net_priv *priv = netdev_priv(dev);
2054 u64 rx_packets = 0, tx_packets = 0; 2054 u64 rx_packets = 0, tx_packets = 0;
diff --git a/drivers/net/ethernet/via/via-rhine.c b/drivers/net/ethernet/via/via-rhine.c
index 0a6c4e804eed..453a1fad560c 100644
--- a/drivers/net/ethernet/via/via-rhine.c
+++ b/drivers/net/ethernet/via/via-rhine.c
@@ -513,8 +513,8 @@ static irqreturn_t rhine_interrupt(int irq, void *dev_instance);
513static void rhine_tx(struct net_device *dev); 513static void rhine_tx(struct net_device *dev);
514static int rhine_rx(struct net_device *dev, int limit); 514static int rhine_rx(struct net_device *dev, int limit);
515static void rhine_set_rx_mode(struct net_device *dev); 515static void rhine_set_rx_mode(struct net_device *dev);
516static struct rtnl_link_stats64 *rhine_get_stats64(struct net_device *dev, 516static void rhine_get_stats64(struct net_device *dev,
517 struct rtnl_link_stats64 *stats); 517 struct rtnl_link_stats64 *stats);
518static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 518static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
519static const struct ethtool_ops netdev_ethtool_ops; 519static const struct ethtool_ops netdev_ethtool_ops;
520static int rhine_close(struct net_device *dev); 520static int rhine_close(struct net_device *dev);
@@ -2221,7 +2221,7 @@ out_unlock:
2221 mutex_unlock(&rp->task_lock); 2221 mutex_unlock(&rp->task_lock);
2222} 2222}
2223 2223
2224static struct rtnl_link_stats64 * 2224static void
2225rhine_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) 2225rhine_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
2226{ 2226{
2227 struct rhine_private *rp = netdev_priv(dev); 2227 struct rhine_private *rp = netdev_priv(dev);
@@ -2244,8 +2244,6 @@ rhine_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
2244 stats->tx_packets = rp->tx_stats.packets; 2244 stats->tx_packets = rp->tx_stats.packets;
2245 stats->tx_bytes = rp->tx_stats.bytes; 2245 stats->tx_bytes = rp->tx_stats.bytes;
2246 } while (u64_stats_fetch_retry_irq(&rp->tx_stats.syncp, start)); 2246 } while (u64_stats_fetch_retry_irq(&rp->tx_stats.syncp, start));
2247
2248 return stats;
2249} 2247}
2250 2248
2251static void rhine_set_rx_mode(struct net_device *dev) 2249static void rhine_set_rx_mode(struct net_device *dev)
diff --git a/drivers/net/fjes/fjes_main.c b/drivers/net/fjes/fjes_main.c
index b77e4ecf3cf2..5028001429c7 100644
--- a/drivers/net/fjes/fjes_main.c
+++ b/drivers/net/fjes/fjes_main.c
@@ -57,8 +57,7 @@ static void fjes_raise_intr_rxdata_task(struct work_struct *);
57static void fjes_tx_stall_task(struct work_struct *); 57static void fjes_tx_stall_task(struct work_struct *);
58static void fjes_force_close_task(struct work_struct *); 58static void fjes_force_close_task(struct work_struct *);
59static irqreturn_t fjes_intr(int, void*); 59static irqreturn_t fjes_intr(int, void*);
60static struct rtnl_link_stats64 * 60static void fjes_get_stats64(struct net_device *, struct rtnl_link_stats64 *);
61fjes_get_stats64(struct net_device *, struct rtnl_link_stats64 *);
62static int fjes_change_mtu(struct net_device *, int); 61static int fjes_change_mtu(struct net_device *, int);
63static int fjes_vlan_rx_add_vid(struct net_device *, __be16 proto, u16); 62static int fjes_vlan_rx_add_vid(struct net_device *, __be16 proto, u16);
64static int fjes_vlan_rx_kill_vid(struct net_device *, __be16 proto, u16); 63static int fjes_vlan_rx_kill_vid(struct net_device *, __be16 proto, u16);
@@ -782,14 +781,12 @@ static void fjes_tx_retry(struct net_device *netdev)
782 netif_tx_wake_queue(queue); 781 netif_tx_wake_queue(queue);
783} 782}
784 783
785static struct rtnl_link_stats64 * 784static void
786fjes_get_stats64(struct net_device *netdev, struct rtnl_link_stats64 *stats) 785fjes_get_stats64(struct net_device *netdev, struct rtnl_link_stats64 *stats)
787{ 786{
788 struct fjes_adapter *adapter = netdev_priv(netdev); 787 struct fjes_adapter *adapter = netdev_priv(netdev);
789 788
790 memcpy(stats, &adapter->stats64, sizeof(struct rtnl_link_stats64)); 789 memcpy(stats, &adapter->stats64, sizeof(struct rtnl_link_stats64));
791
792 return stats;
793} 790}
794 791
795static int fjes_change_mtu(struct net_device *netdev, int new_mtu) 792static int fjes_change_mtu(struct net_device *netdev, int new_mtu)
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index c9414c054852..05374fce7da4 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -908,8 +908,8 @@ out:
908 return ret; 908 return ret;
909} 909}
910 910
911static struct rtnl_link_stats64 *netvsc_get_stats64(struct net_device *net, 911static void netvsc_get_stats64(struct net_device *net,
912 struct rtnl_link_stats64 *t) 912 struct rtnl_link_stats64 *t)
913{ 913{
914 struct net_device_context *ndev_ctx = netdev_priv(net); 914 struct net_device_context *ndev_ctx = netdev_priv(net);
915 int cpu; 915 int cpu;
@@ -947,8 +947,6 @@ static struct rtnl_link_stats64 *netvsc_get_stats64(struct net_device *net,
947 947
948 t->rx_dropped = net->stats.rx_dropped; 948 t->rx_dropped = net->stats.rx_dropped;
949 t->rx_errors = net->stats.rx_errors; 949 t->rx_errors = net->stats.rx_errors;
950
951 return t;
952} 950}
953 951
954static int netvsc_set_mac_addr(struct net_device *ndev, void *p) 952static int netvsc_set_mac_addr(struct net_device *ndev, void *p)
diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
index 66c0eeafcb5d..082534e187fc 100644
--- a/drivers/net/ifb.c
+++ b/drivers/net/ifb.c
@@ -129,8 +129,8 @@ resched:
129 129
130} 130}
131 131
132static struct rtnl_link_stats64 *ifb_stats64(struct net_device *dev, 132static void ifb_stats64(struct net_device *dev,
133 struct rtnl_link_stats64 *stats) 133 struct rtnl_link_stats64 *stats)
134{ 134{
135 struct ifb_dev_private *dp = netdev_priv(dev); 135 struct ifb_dev_private *dp = netdev_priv(dev);
136 struct ifb_q_private *txp = dp->tx_private; 136 struct ifb_q_private *txp = dp->tx_private;
@@ -157,8 +157,6 @@ static struct rtnl_link_stats64 *ifb_stats64(struct net_device *dev,
157 } 157 }
158 stats->rx_dropped = dev->stats.rx_dropped; 158 stats->rx_dropped = dev->stats.rx_dropped;
159 stats->tx_dropped = dev->stats.tx_dropped; 159 stats->tx_dropped = dev->stats.tx_dropped;
160
161 return stats;
162} 160}
163 161
164static int ifb_dev_init(struct net_device *dev) 162static int ifb_dev_init(struct net_device *dev)
diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c
index ce7ca6a5aa8a..1cdb8c5ec403 100644
--- a/drivers/net/ipvlan/ipvlan_main.c
+++ b/drivers/net/ipvlan/ipvlan_main.c
@@ -303,8 +303,8 @@ static void ipvlan_set_multicast_mac_filter(struct net_device *dev)
303 dev_mc_sync(ipvlan->phy_dev, dev); 303 dev_mc_sync(ipvlan->phy_dev, dev);
304} 304}
305 305
306static struct rtnl_link_stats64 *ipvlan_get_stats64(struct net_device *dev, 306static void ipvlan_get_stats64(struct net_device *dev,
307 struct rtnl_link_stats64 *s) 307 struct rtnl_link_stats64 *s)
308{ 308{
309 struct ipvl_dev *ipvlan = netdev_priv(dev); 309 struct ipvl_dev *ipvlan = netdev_priv(dev);
310 310
@@ -341,7 +341,6 @@ static struct rtnl_link_stats64 *ipvlan_get_stats64(struct net_device *dev,
341 s->rx_dropped = rx_errs; 341 s->rx_dropped = rx_errs;
342 s->tx_dropped = tx_drps; 342 s->tx_dropped = tx_drps;
343 } 343 }
344 return s;
345} 344}
346 345
347static int ipvlan_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid) 346static int ipvlan_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid)
diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c
index 1e05b7c2d157..30a493936e63 100644
--- a/drivers/net/loopback.c
+++ b/drivers/net/loopback.c
@@ -97,8 +97,8 @@ static netdev_tx_t loopback_xmit(struct sk_buff *skb,
97 return NETDEV_TX_OK; 97 return NETDEV_TX_OK;
98} 98}
99 99
100static struct rtnl_link_stats64 *loopback_get_stats64(struct net_device *dev, 100static void loopback_get_stats64(struct net_device *dev,
101 struct rtnl_link_stats64 *stats) 101 struct rtnl_link_stats64 *stats)
102{ 102{
103 u64 bytes = 0; 103 u64 bytes = 0;
104 u64 packets = 0; 104 u64 packets = 0;
@@ -122,7 +122,6 @@ static struct rtnl_link_stats64 *loopback_get_stats64(struct net_device *dev,
122 stats->tx_packets = packets; 122 stats->tx_packets = packets;
123 stats->rx_bytes = bytes; 123 stats->rx_bytes = bytes;
124 stats->tx_bytes = bytes; 124 stats->tx_bytes = bytes;
125 return stats;
126} 125}
127 126
128static u32 always_on(struct net_device *dev) 127static u32 always_on(struct net_device *dev)
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
index f83cf6696820..778a77303c49 100644
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -2888,13 +2888,13 @@ static int macsec_change_mtu(struct net_device *dev, int new_mtu)
2888 return 0; 2888 return 0;
2889} 2889}
2890 2890
2891static struct rtnl_link_stats64 *macsec_get_stats64(struct net_device *dev, 2891static void macsec_get_stats64(struct net_device *dev,
2892 struct rtnl_link_stats64 *s) 2892 struct rtnl_link_stats64 *s)
2893{ 2893{
2894 int cpu; 2894 int cpu;
2895 2895
2896 if (!dev->tstats) 2896 if (!dev->tstats)
2897 return s; 2897 return;
2898 2898
2899 for_each_possible_cpu(cpu) { 2899 for_each_possible_cpu(cpu) {
2900 struct pcpu_sw_netstats *stats; 2900 struct pcpu_sw_netstats *stats;
@@ -2918,8 +2918,6 @@ static struct rtnl_link_stats64 *macsec_get_stats64(struct net_device *dev,
2918 2918
2919 s->rx_dropped = dev->stats.rx_dropped; 2919 s->rx_dropped = dev->stats.rx_dropped;
2920 s->tx_dropped = dev->stats.tx_dropped; 2920 s->tx_dropped = dev->stats.tx_dropped;
2921
2922 return s;
2923} 2921}
2924 2922
2925static int macsec_get_iflink(const struct net_device *dev) 2923static int macsec_get_iflink(const struct net_device *dev)
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index 20b3fdf282c5..440ab3d8adf7 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -855,8 +855,8 @@ static void macvlan_uninit(struct net_device *dev)
855 macvlan_port_destroy(port->dev); 855 macvlan_port_destroy(port->dev);
856} 856}
857 857
858static struct rtnl_link_stats64 *macvlan_dev_get_stats64(struct net_device *dev, 858static void macvlan_dev_get_stats64(struct net_device *dev,
859 struct rtnl_link_stats64 *stats) 859 struct rtnl_link_stats64 *stats)
860{ 860{
861 struct macvlan_dev *vlan = netdev_priv(dev); 861 struct macvlan_dev *vlan = netdev_priv(dev);
862 862
@@ -893,7 +893,6 @@ static struct rtnl_link_stats64 *macvlan_dev_get_stats64(struct net_device *dev,
893 stats->rx_dropped = rx_errors; 893 stats->rx_dropped = rx_errors;
894 stats->tx_dropped = tx_dropped; 894 stats->tx_dropped = tx_dropped;
895 } 895 }
896 return stats;
897} 896}
898 897
899static int macvlan_vlan_rx_add_vid(struct net_device *dev, 898static int macvlan_vlan_rx_add_vid(struct net_device *dev,
diff --git a/drivers/net/nlmon.c b/drivers/net/nlmon.c
index 2de7faee9b19..b91603835d26 100644
--- a/drivers/net/nlmon.c
+++ b/drivers/net/nlmon.c
@@ -58,7 +58,7 @@ static int nlmon_close(struct net_device *dev)
58 return netlink_remove_tap(&nlmon->nt); 58 return netlink_remove_tap(&nlmon->nt);
59} 59}
60 60
61static struct rtnl_link_stats64 * 61static void
62nlmon_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) 62nlmon_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
63{ 63{
64 int i; 64 int i;
@@ -86,8 +86,6 @@ nlmon_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
86 86
87 stats->rx_bytes = bytes; 87 stats->rx_bytes = bytes;
88 stats->tx_bytes = 0; 88 stats->tx_bytes = 0;
89
90 return stats;
91} 89}
92 90
93static u32 always_on(struct net_device *dev) 91static u32 always_on(struct net_device *dev)
diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
index 3d3b1f4339ef..a411b43a69eb 100644
--- a/drivers/net/ppp/ppp_generic.c
+++ b/drivers/net/ppp/ppp_generic.c
@@ -1297,7 +1297,7 @@ ppp_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
1297 return err; 1297 return err;
1298} 1298}
1299 1299
1300static struct rtnl_link_stats64* 1300static void
1301ppp_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats64) 1301ppp_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats64)
1302{ 1302{
1303 struct ppp *ppp = netdev_priv(dev); 1303 struct ppp *ppp = netdev_priv(dev);
@@ -1317,8 +1317,6 @@ ppp_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats64)
1317 stats64->rx_dropped = dev->stats.rx_dropped; 1317 stats64->rx_dropped = dev->stats.rx_dropped;
1318 stats64->tx_dropped = dev->stats.tx_dropped; 1318 stats64->tx_dropped = dev->stats.tx_dropped;
1319 stats64->rx_length_errors = dev->stats.rx_length_errors; 1319 stats64->rx_length_errors = dev->stats.rx_length_errors;
1320
1321 return stats64;
1322} 1320}
1323 1321
1324static int ppp_dev_init(struct net_device *dev) 1322static int ppp_dev_init(struct net_device *dev)
diff --git a/drivers/net/slip/slip.c b/drivers/net/slip/slip.c
index 9841f3dc0682..08db4d687533 100644
--- a/drivers/net/slip/slip.c
+++ b/drivers/net/slip/slip.c
@@ -566,7 +566,7 @@ static int sl_change_mtu(struct net_device *dev, int new_mtu)
566 566
567/* Netdevice get statistics request */ 567/* Netdevice get statistics request */
568 568
569static struct rtnl_link_stats64 * 569static void
570sl_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) 570sl_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
571{ 571{
572 struct net_device_stats *devstats = &dev->stats; 572 struct net_device_stats *devstats = &dev->stats;
@@ -597,7 +597,6 @@ sl_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
597 stats->collisions += comp->sls_o_misses; 597 stats->collisions += comp->sls_o_misses;
598 } 598 }
599#endif 599#endif
600 return stats;
601} 600}
602 601
603/* Netdevice register callback */ 602/* Netdevice register callback */
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index bdc58567d10e..a3711769544b 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -1798,7 +1798,7 @@ unwind:
1798 return err; 1798 return err;
1799} 1799}
1800 1800
1801static struct rtnl_link_stats64 * 1801static void
1802team_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) 1802team_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
1803{ 1803{
1804 struct team *team = netdev_priv(dev); 1804 struct team *team = netdev_priv(dev);
@@ -1835,7 +1835,6 @@ team_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
1835 stats->rx_dropped = rx_dropped; 1835 stats->rx_dropped = rx_dropped;
1836 stats->tx_dropped = tx_dropped; 1836 stats->tx_dropped = tx_dropped;
1837 stats->rx_nohandler = rx_nohandler; 1837 stats->rx_nohandler = rx_nohandler;
1838 return stats;
1839} 1838}
1840 1839
1841static int team_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid) 1840static int team_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid)
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index cd8e02c94be0..8c1d3bd6b4d0 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -953,7 +953,7 @@ static void tun_set_headroom(struct net_device *dev, int new_hr)
953 tun->align = new_hr; 953 tun->align = new_hr;
954} 954}
955 955
956static struct rtnl_link_stats64 * 956static void
957tun_net_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) 957tun_net_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
958{ 958{
959 u32 rx_dropped = 0, tx_dropped = 0, rx_frame_errors = 0; 959 u32 rx_dropped = 0, tx_dropped = 0, rx_frame_errors = 0;
@@ -987,7 +987,6 @@ tun_net_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
987 stats->rx_dropped = rx_dropped; 987 stats->rx_dropped = rx_dropped;
988 stats->rx_frame_errors = rx_frame_errors; 988 stats->rx_frame_errors = rx_frame_errors;
989 stats->tx_dropped = tx_dropped; 989 stats->tx_dropped = tx_dropped;
990 return stats;
991} 990}
992 991
993static const struct net_device_ops tun_netdev_ops = { 992static const struct net_device_ops tun_netdev_ops = {
diff --git a/drivers/net/veth.c b/drivers/net/veth.c
index 0520952aa096..8c39d6d690e5 100644
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -158,8 +158,8 @@ static u64 veth_stats_one(struct pcpu_vstats *result, struct net_device *dev)
158 return atomic64_read(&priv->dropped); 158 return atomic64_read(&priv->dropped);
159} 159}
160 160
161static struct rtnl_link_stats64 *veth_get_stats64(struct net_device *dev, 161static void veth_get_stats64(struct net_device *dev,
162 struct rtnl_link_stats64 *tot) 162 struct rtnl_link_stats64 *tot)
163{ 163{
164 struct veth_priv *priv = netdev_priv(dev); 164 struct veth_priv *priv = netdev_priv(dev);
165 struct net_device *peer; 165 struct net_device *peer;
@@ -177,8 +177,6 @@ static struct rtnl_link_stats64 *veth_get_stats64(struct net_device *dev,
177 tot->rx_packets = one.packets; 177 tot->rx_packets = one.packets;
178 } 178 }
179 rcu_read_unlock(); 179 rcu_read_unlock();
180
181 return tot;
182} 180}
183 181
184/* fake multicast ability */ 182/* fake multicast ability */
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 2cea022e6e6e..37db91d1a0a3 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -1272,8 +1272,8 @@ out:
1272 return ret; 1272 return ret;
1273} 1273}
1274 1274
1275static struct rtnl_link_stats64 *virtnet_stats(struct net_device *dev, 1275static void virtnet_stats(struct net_device *dev,
1276 struct rtnl_link_stats64 *tot) 1276 struct rtnl_link_stats64 *tot)
1277{ 1277{
1278 struct virtnet_info *vi = netdev_priv(dev); 1278 struct virtnet_info *vi = netdev_priv(dev);
1279 int cpu; 1279 int cpu;
@@ -1306,8 +1306,6 @@ static struct rtnl_link_stats64 *virtnet_stats(struct net_device *dev,
1306 tot->rx_dropped = dev->stats.rx_dropped; 1306 tot->rx_dropped = dev->stats.rx_dropped;
1307 tot->rx_length_errors = dev->stats.rx_length_errors; 1307 tot->rx_length_errors = dev->stats.rx_length_errors;
1308 tot->rx_frame_errors = dev->stats.rx_frame_errors; 1308 tot->rx_frame_errors = dev->stats.rx_frame_errors;
1309
1310 return tot;
1311} 1309}
1312 1310
1313#ifdef CONFIG_NET_POLL_CONTROLLER 1311#ifdef CONFIG_NET_POLL_CONTROLLER
diff --git a/drivers/net/vmxnet3/vmxnet3_ethtool.c b/drivers/net/vmxnet3/vmxnet3_ethtool.c
index aabc6ef366b4..f88ffafebfbf 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethtool.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethtool.c
@@ -113,7 +113,7 @@ vmxnet3_global_stats[] = {
113}; 113};
114 114
115 115
116struct rtnl_link_stats64 * 116void
117vmxnet3_get_stats64(struct net_device *netdev, 117vmxnet3_get_stats64(struct net_device *netdev,
118 struct rtnl_link_stats64 *stats) 118 struct rtnl_link_stats64 *stats)
119{ 119{
@@ -160,8 +160,6 @@ vmxnet3_get_stats64(struct net_device *netdev,
160 stats->rx_dropped += drvRxStats->drop_total; 160 stats->rx_dropped += drvRxStats->drop_total;
161 stats->multicast += devRxStats->mcastPktsRxOK; 161 stats->multicast += devRxStats->mcastPktsRxOK;
162 } 162 }
163
164 return stats;
165} 163}
166 164
167static int 165static int
diff --git a/drivers/net/vmxnet3/vmxnet3_int.h b/drivers/net/vmxnet3/vmxnet3_int.h
index 59e077be8829..ba1c9f93592b 100644
--- a/drivers/net/vmxnet3/vmxnet3_int.h
+++ b/drivers/net/vmxnet3/vmxnet3_int.h
@@ -465,8 +465,8 @@ vmxnet3_create_queues(struct vmxnet3_adapter *adapter,
465 465
466void vmxnet3_set_ethtool_ops(struct net_device *netdev); 466void vmxnet3_set_ethtool_ops(struct net_device *netdev);
467 467
468struct rtnl_link_stats64 * 468void vmxnet3_get_stats64(struct net_device *dev,
469vmxnet3_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats); 469 struct rtnl_link_stats64 *stats);
470 470
471extern char vmxnet3_driver_name[]; 471extern char vmxnet3_driver_name[];
472#endif 472#endif
diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c
index 23dfb0eac098..895e3e258543 100644
--- a/drivers/net/vrf.c
+++ b/drivers/net/vrf.c
@@ -77,8 +77,8 @@ static void vrf_tx_error(struct net_device *vrf_dev, struct sk_buff *skb)
77 kfree_skb(skb); 77 kfree_skb(skb);
78} 78}
79 79
80static struct rtnl_link_stats64 *vrf_get_stats64(struct net_device *dev, 80static void vrf_get_stats64(struct net_device *dev,
81 struct rtnl_link_stats64 *stats) 81 struct rtnl_link_stats64 *stats)
82{ 82{
83 int i; 83 int i;
84 84
@@ -102,7 +102,6 @@ static struct rtnl_link_stats64 *vrf_get_stats64(struct net_device *dev,
102 stats->rx_bytes += rbytes; 102 stats->rx_bytes += rbytes;
103 stats->rx_packets += rpkts; 103 stats->rx_packets += rpkts;
104 } 104 }
105 return stats;
106} 105}
107 106
108/* Local traffic destined to local address. Reinsert the packet to rx 107/* Local traffic destined to local address. Reinsert the packet to rx
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index a479cd99911d..40f26b69beb1 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -1073,8 +1073,8 @@ static int xennet_change_mtu(struct net_device *dev, int mtu)
1073 return 0; 1073 return 0;
1074} 1074}
1075 1075
1076static struct rtnl_link_stats64 *xennet_get_stats64(struct net_device *dev, 1076static void xennet_get_stats64(struct net_device *dev,
1077 struct rtnl_link_stats64 *tot) 1077 struct rtnl_link_stats64 *tot)
1078{ 1078{
1079 struct netfront_info *np = netdev_priv(dev); 1079 struct netfront_info *np = netdev_priv(dev);
1080 int cpu; 1080 int cpu;
@@ -1105,8 +1105,6 @@ static struct rtnl_link_stats64 *xennet_get_stats64(struct net_device *dev,
1105 1105
1106 tot->rx_errors = dev->stats.rx_errors; 1106 tot->rx_errors = dev->stats.rx_errors;
1107 tot->tx_dropped = dev->stats.tx_dropped; 1107 tot->tx_dropped = dev->stats.tx_dropped;
1108
1109 return tot;
1110} 1108}
1111 1109
1112static void xennet_release_tx_bufs(struct netfront_queue *queue) 1110static void xennet_release_tx_bufs(struct netfront_queue *queue)
diff --git a/drivers/staging/netlogic/xlr_net.c b/drivers/staging/netlogic/xlr_net.c
index fb0928a4fb97..f84069ffa8c6 100644
--- a/drivers/staging/netlogic/xlr_net.c
+++ b/drivers/staging/netlogic/xlr_net.c
@@ -397,14 +397,6 @@ static void xlr_stats(struct net_device *ndev, struct rtnl_link_stats64 *stats)
397 TX_DROP_FRAME_COUNTER); 397 TX_DROP_FRAME_COUNTER);
398} 398}
399 399
400static struct rtnl_link_stats64 *xlr_get_stats64(struct net_device *ndev,
401 struct rtnl_link_stats64 *stats
402 )
403{
404 xlr_stats(ndev, stats);
405 return stats;
406}
407
408static const struct net_device_ops xlr_netdev_ops = { 400static const struct net_device_ops xlr_netdev_ops = {
409 .ndo_open = xlr_net_open, 401 .ndo_open = xlr_net_open,
410 .ndo_stop = xlr_net_stop, 402 .ndo_stop = xlr_net_stop,
@@ -412,7 +404,7 @@ static const struct net_device_ops xlr_netdev_ops = {
412 .ndo_select_queue = xlr_net_select_queue, 404 .ndo_select_queue = xlr_net_select_queue,
413 .ndo_set_mac_address = xlr_net_set_mac_addr, 405 .ndo_set_mac_address = xlr_net_set_mac_addr,
414 .ndo_set_rx_mode = xlr_set_rx_mode, 406 .ndo_set_rx_mode = xlr_set_rx_mode,
415 .ndo_get_stats64 = xlr_get_stats64, 407 .ndo_get_stats64 = xlr_stats,
416}; 408};
417 409
418/* 410/*
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index ecd78b3c9aba..b14ad9c139d7 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -913,8 +913,8 @@ struct netdev_xdp {
913 * Callback used when the transmitter has not made any progress 913 * Callback used when the transmitter has not made any progress
914 * for dev->watchdog ticks. 914 * for dev->watchdog ticks.
915 * 915 *
916 * struct rtnl_link_stats64* (*ndo_get_stats64)(struct net_device *dev, 916 * void (*ndo_get_stats64)(struct net_device *dev,
917 * struct rtnl_link_stats64 *storage); 917 * struct rtnl_link_stats64 *storage);
918 * struct net_device_stats* (*ndo_get_stats)(struct net_device *dev); 918 * struct net_device_stats* (*ndo_get_stats)(struct net_device *dev);
919 * Called when a user wants to get the network device usage 919 * Called when a user wants to get the network device usage
920 * statistics. Drivers must do one of the following: 920 * statistics. Drivers must do one of the following:
@@ -1165,8 +1165,8 @@ struct net_device_ops {
1165 struct neigh_parms *); 1165 struct neigh_parms *);
1166 void (*ndo_tx_timeout) (struct net_device *dev); 1166 void (*ndo_tx_timeout) (struct net_device *dev);
1167 1167
1168 struct rtnl_link_stats64* (*ndo_get_stats64)(struct net_device *dev, 1168 void (*ndo_get_stats64)(struct net_device *dev,
1169 struct rtnl_link_stats64 *storage); 1169 struct rtnl_link_stats64 *storage);
1170 bool (*ndo_has_offload_stats)(const struct net_device *dev, int attr_id); 1170 bool (*ndo_has_offload_stats)(const struct net_device *dev, int attr_id);
1171 int (*ndo_get_offload_stats)(int attr_id, 1171 int (*ndo_get_offload_stats)(int attr_id,
1172 const struct net_device *dev, 1172 const struct net_device *dev,
diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h
index e893fe43dd13..3d4ca4df1209 100644
--- a/include/net/ip_tunnels.h
+++ b/include/net/ip_tunnels.h
@@ -261,8 +261,8 @@ int ip_tunnel_ioctl(struct net_device *dev, struct ip_tunnel_parm *p, int cmd);
261int __ip_tunnel_change_mtu(struct net_device *dev, int new_mtu, bool strict); 261int __ip_tunnel_change_mtu(struct net_device *dev, int new_mtu, bool strict);
262int ip_tunnel_change_mtu(struct net_device *dev, int new_mtu); 262int ip_tunnel_change_mtu(struct net_device *dev, int new_mtu);
263 263
264struct rtnl_link_stats64 *ip_tunnel_get_stats64(struct net_device *dev, 264void ip_tunnel_get_stats64(struct net_device *dev,
265 struct rtnl_link_stats64 *tot); 265 struct rtnl_link_stats64 *tot);
266struct ip_tunnel *ip_tunnel_lookup(struct ip_tunnel_net *itn, 266struct ip_tunnel *ip_tunnel_lookup(struct ip_tunnel_net *itn,
267 int link, __be16 flags, 267 int link, __be16 flags,
268 __be32 remote, __be32 local, 268 __be32 remote, __be32 local,
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 10da6c588bf8..116455ac3db5 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -671,7 +671,8 @@ static int vlan_ethtool_get_ts_info(struct net_device *dev,
671 return 0; 671 return 0;
672} 672}
673 673
674static struct rtnl_link_stats64 *vlan_dev_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) 674static void vlan_dev_get_stats64(struct net_device *dev,
675 struct rtnl_link_stats64 *stats)
675{ 676{
676 struct vlan_pcpu_stats *p; 677 struct vlan_pcpu_stats *p;
677 u32 rx_errors = 0, tx_dropped = 0; 678 u32 rx_errors = 0, tx_dropped = 0;
@@ -702,8 +703,6 @@ static struct rtnl_link_stats64 *vlan_dev_get_stats64(struct net_device *dev, st
702 } 703 }
703 stats->rx_errors = rx_errors; 704 stats->rx_errors = rx_errors;
704 stats->tx_dropped = tx_dropped; 705 stats->tx_dropped = tx_dropped;
705
706 return stats;
707} 706}
708 707
709#ifdef CONFIG_NET_POLL_CONTROLLER 708#ifdef CONFIG_NET_POLL_CONTROLLER
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index ed3b3192fb00..6c46d1b4cdbb 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -153,8 +153,8 @@ static int br_dev_stop(struct net_device *dev)
153 return 0; 153 return 0;
154} 154}
155 155
156static struct rtnl_link_stats64 *br_get_stats64(struct net_device *dev, 156static void br_get_stats64(struct net_device *dev,
157 struct rtnl_link_stats64 *stats) 157 struct rtnl_link_stats64 *stats)
158{ 158{
159 struct net_bridge *br = netdev_priv(dev); 159 struct net_bridge *br = netdev_priv(dev);
160 struct pcpu_sw_netstats tmp, sum = { 0 }; 160 struct pcpu_sw_netstats tmp, sum = { 0 };
@@ -178,8 +178,6 @@ static struct rtnl_link_stats64 *br_get_stats64(struct net_device *dev,
178 stats->tx_packets = sum.tx_packets; 178 stats->tx_packets = sum.tx_packets;
179 stats->rx_bytes = sum.rx_bytes; 179 stats->rx_bytes = sum.rx_bytes;
180 stats->rx_packets = sum.rx_packets; 180 stats->rx_packets = sum.rx_packets;
181
182 return stats;
183} 181}
184 182
185static int br_change_mtu(struct net_device *dev, int new_mtu) 183static int br_change_mtu(struct net_device *dev, int new_mtu)
diff --git a/net/ipv4/ip_tunnel_core.c b/net/ipv4/ip_tunnel_core.c
index fed3d29f9eb3..5476110598f7 100644
--- a/net/ipv4/ip_tunnel_core.c
+++ b/net/ipv4/ip_tunnel_core.c
@@ -188,8 +188,8 @@ int iptunnel_handle_offloads(struct sk_buff *skb,
188EXPORT_SYMBOL_GPL(iptunnel_handle_offloads); 188EXPORT_SYMBOL_GPL(iptunnel_handle_offloads);
189 189
190/* Often modified stats are per cpu, other are shared (netdev->stats) */ 190/* Often modified stats are per cpu, other are shared (netdev->stats) */
191struct rtnl_link_stats64 *ip_tunnel_get_stats64(struct net_device *dev, 191void ip_tunnel_get_stats64(struct net_device *dev,
192 struct rtnl_link_stats64 *tot) 192 struct rtnl_link_stats64 *tot)
193{ 193{
194 int i; 194 int i;
195 195
@@ -214,8 +214,6 @@ struct rtnl_link_stats64 *ip_tunnel_get_stats64(struct net_device *dev,
214 tot->rx_bytes += rx_bytes; 214 tot->rx_bytes += rx_bytes;
215 tot->tx_bytes += tx_bytes; 215 tot->tx_bytes += tx_bytes;
216 } 216 }
217
218 return tot;
219} 217}
220EXPORT_SYMBOL_GPL(ip_tunnel_get_stats64); 218EXPORT_SYMBOL_GPL(ip_tunnel_get_stats64);
221 219
diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c
index e2c6ae024565..8bf18a5f66e0 100644
--- a/net/l2tp/l2tp_eth.c
+++ b/net/l2tp/l2tp_eth.c
@@ -106,8 +106,8 @@ static int l2tp_eth_dev_xmit(struct sk_buff *skb, struct net_device *dev)
106 return NETDEV_TX_OK; 106 return NETDEV_TX_OK;
107} 107}
108 108
109static struct rtnl_link_stats64 *l2tp_eth_get_stats64(struct net_device *dev, 109static void l2tp_eth_get_stats64(struct net_device *dev,
110 struct rtnl_link_stats64 *stats) 110 struct rtnl_link_stats64 *stats)
111{ 111{
112 struct l2tp_eth *priv = netdev_priv(dev); 112 struct l2tp_eth *priv = netdev_priv(dev);
113 113
@@ -117,10 +117,8 @@ static struct rtnl_link_stats64 *l2tp_eth_get_stats64(struct net_device *dev,
117 stats->rx_bytes = atomic_long_read(&priv->rx_bytes); 117 stats->rx_bytes = atomic_long_read(&priv->rx_bytes);
118 stats->rx_packets = atomic_long_read(&priv->rx_packets); 118 stats->rx_packets = atomic_long_read(&priv->rx_packets);
119 stats->rx_errors = atomic_long_read(&priv->rx_errors); 119 stats->rx_errors = atomic_long_read(&priv->rx_errors);
120 return stats;
121} 120}
122 121
123
124static const struct net_device_ops l2tp_eth_netdev_ops = { 122static const struct net_device_ops l2tp_eth_netdev_ops = {
125 .ndo_init = l2tp_eth_dev_init, 123 .ndo_init = l2tp_eth_dev_init,
126 .ndo_uninit = l2tp_eth_dev_uninit, 124 .ndo_uninit = l2tp_eth_dev_uninit,
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 41497b670e2b..77e8a42225f9 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -1122,7 +1122,7 @@ static u16 ieee80211_netdev_select_queue(struct net_device *dev,
1122 return ieee80211_select_queue(IEEE80211_DEV_TO_SUB_IF(dev), skb); 1122 return ieee80211_select_queue(IEEE80211_DEV_TO_SUB_IF(dev), skb);
1123} 1123}
1124 1124
1125static struct rtnl_link_stats64 * 1125static void
1126ieee80211_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) 1126ieee80211_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
1127{ 1127{
1128 int i; 1128 int i;
@@ -1147,8 +1147,6 @@ ieee80211_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
1147 stats->rx_bytes += rx_bytes; 1147 stats->rx_bytes += rx_bytes;
1148 stats->tx_bytes += tx_bytes; 1148 stats->tx_bytes += tx_bytes;
1149 } 1149 }
1150
1151 return stats;
1152} 1150}
1153 1151
1154static const struct net_device_ops ieee80211_dataif_ops = { 1152static const struct net_device_ops ieee80211_dataif_ops = {
diff --git a/net/openvswitch/vport-internal_dev.c b/net/openvswitch/vport-internal_dev.c
index d5d6caecd072..09141a18ee2d 100644
--- a/net/openvswitch/vport-internal_dev.c
+++ b/net/openvswitch/vport-internal_dev.c
@@ -97,7 +97,7 @@ static void internal_dev_destructor(struct net_device *dev)
97 free_netdev(dev); 97 free_netdev(dev);
98} 98}
99 99
100static struct rtnl_link_stats64 * 100static void
101internal_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats) 101internal_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
102{ 102{
103 int i; 103 int i;
@@ -125,8 +125,6 @@ internal_get_stats(struct net_device *dev, struct rtnl_link_stats64 *stats)
125 stats->tx_bytes += local_stats.tx_bytes; 125 stats->tx_bytes += local_stats.tx_bytes;
126 stats->tx_packets += local_stats.tx_packets; 126 stats->tx_packets += local_stats.tx_packets;
127 } 127 }
128
129 return stats;
130} 128}
131 129
132static void internal_set_rx_headroom(struct net_device *dev, int new_hr) 130static void internal_set_rx_headroom(struct net_device *dev, int new_hr)
diff --git a/net/sched/sch_teql.c b/net/sched/sch_teql.c
index b0196366d58d..9fe6b427afed 100644
--- a/net/sched/sch_teql.c
+++ b/net/sched/sch_teql.c
@@ -401,8 +401,8 @@ static int teql_master_close(struct net_device *dev)
401 return 0; 401 return 0;
402} 402}
403 403
404static struct rtnl_link_stats64 *teql_master_stats64(struct net_device *dev, 404static void teql_master_stats64(struct net_device *dev,
405 struct rtnl_link_stats64 *stats) 405 struct rtnl_link_stats64 *stats)
406{ 406{
407 struct teql_master *m = netdev_priv(dev); 407 struct teql_master *m = netdev_priv(dev);
408 408
@@ -410,7 +410,6 @@ static struct rtnl_link_stats64 *teql_master_stats64(struct net_device *dev,
410 stats->tx_bytes = m->tx_bytes; 410 stats->tx_bytes = m->tx_bytes;
411 stats->tx_errors = m->tx_errors; 411 stats->tx_errors = m->tx_errors;
412 stats->tx_dropped = m->tx_dropped; 412 stats->tx_dropped = m->tx_dropped;
413 return stats;
414} 413}
415 414
416static int teql_master_mtu(struct net_device *dev, int new_mtu) 415static int teql_master_mtu(struct net_device *dev, int new_mtu)