aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/dummy.c6
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c4
-rw-r--r--drivers/net/ethernet/intel/igb/igb_main.c5
-rw-r--r--drivers/net/ethernet/intel/ixgbe/ixgbe_main.c4
-rw-r--r--drivers/net/ethernet/marvell/mvneta.c3
-rw-r--r--drivers/net/ethernet/marvell/sky2.c3
-rw-r--r--drivers/net/ethernet/neterion/vxge/vxge-main.c4
-rw-r--r--drivers/net/ethernet/nvidia/forcedeth.c2
-rw-r--r--drivers/net/ethernet/realtek/8139too.c3
-rw-r--r--drivers/net/ethernet/tile/tilepro.c2
-rw-r--r--drivers/net/ethernet/via/via-rhine.c3
-rw-r--r--drivers/net/ifb.c5
-rw-r--r--drivers/net/loopback.c6
-rw-r--r--drivers/net/macvlan.c7
-rw-r--r--drivers/net/nlmon.c8
-rw-r--r--drivers/net/team/team.c6
-rw-r--r--drivers/net/team/team_mode_loadbalance.c9
-rw-r--r--drivers/net/veth.c8
-rw-r--r--drivers/net/virtio_net.c7
-rw-r--r--drivers/net/vxlan.c8
-rw-r--r--drivers/net/xen-netfront.c6
21 files changed, 108 insertions, 1 deletions
diff --git a/drivers/net/dummy.c b/drivers/net/dummy.c
index b710c6b2d659..bd8f84b0b894 100644
--- a/drivers/net/dummy.c
+++ b/drivers/net/dummy.c
@@ -88,10 +88,16 @@ static netdev_tx_t dummy_xmit(struct sk_buff *skb, struct net_device *dev)
88 88
89static int dummy_dev_init(struct net_device *dev) 89static int dummy_dev_init(struct net_device *dev)
90{ 90{
91 int i;
91 dev->dstats = alloc_percpu(struct pcpu_dstats); 92 dev->dstats = alloc_percpu(struct pcpu_dstats);
92 if (!dev->dstats) 93 if (!dev->dstats)
93 return -ENOMEM; 94 return -ENOMEM;
94 95
96 for_each_possible_cpu(i) {
97 struct pcpu_dstats *dstats;
98 dstats = per_cpu_ptr(dev->dstats, i);
99 u64_stats_init(&dstats->syncp);
100 }
95 return 0; 101 return 0;
96} 102}
97 103
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index cb2bb6fccbc8..eaecaadfa8c5 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -2148,6 +2148,9 @@ static int be_tx_qs_create(struct be_adapter *adapter)
2148 if (status) 2148 if (status)
2149 return status; 2149 return status;
2150 2150
2151 u64_stats_init(&txo->stats.sync);
2152 u64_stats_init(&txo->stats.sync_compl);
2153
2151 /* If num_evt_qs is less than num_tx_qs, then more than 2154 /* If num_evt_qs is less than num_tx_qs, then more than
2152 * one txq share an eq 2155 * one txq share an eq
2153 */ 2156 */
@@ -2209,6 +2212,7 @@ static int be_rx_cqs_create(struct be_adapter *adapter)
2209 if (rc) 2212 if (rc)
2210 return rc; 2213 return rc;
2211 2214
2215 u64_stats_init(&rxo->stats.sync);
2212 eq = &adapter->eq_obj[i % adapter->num_evt_qs].q; 2216 eq = &adapter->eq_obj[i % adapter->num_evt_qs].q;
2213 rc = be_cmd_cq_create(adapter, cq, eq, false, 3); 2217 rc = be_cmd_cq_create(adapter, cq, eq, false, 3);
2214 if (rc) 2218 if (rc)
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index 2ac14bdd5fbb..025e5f4b7481 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -1224,6 +1224,9 @@ static int igb_alloc_q_vector(struct igb_adapter *adapter,
1224 ring->count = adapter->tx_ring_count; 1224 ring->count = adapter->tx_ring_count;
1225 ring->queue_index = txr_idx; 1225 ring->queue_index = txr_idx;
1226 1226
1227 u64_stats_init(&ring->tx_syncp);
1228 u64_stats_init(&ring->tx_syncp2);
1229
1227 /* assign ring to adapter */ 1230 /* assign ring to adapter */
1228 adapter->tx_ring[txr_idx] = ring; 1231 adapter->tx_ring[txr_idx] = ring;
1229 1232
@@ -1257,6 +1260,8 @@ static int igb_alloc_q_vector(struct igb_adapter *adapter,
1257 ring->count = adapter->rx_ring_count; 1260 ring->count = adapter->rx_ring_count;
1258 ring->queue_index = rxr_idx; 1261 ring->queue_index = rxr_idx;
1259 1262
1263 u64_stats_init(&ring->rx_syncp);
1264
1260 /* assign ring to adapter */ 1265 /* assign ring to adapter */
1261 adapter->rx_ring[rxr_idx] = ring; 1266 adapter->rx_ring[rxr_idx] = ring;
1262 } 1267 }
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 0066f0aefbfa..0c55079ebee3 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -5085,6 +5085,8 @@ int ixgbe_setup_tx_resources(struct ixgbe_ring *tx_ring)
5085 if (!tx_ring->tx_buffer_info) 5085 if (!tx_ring->tx_buffer_info)
5086 goto err; 5086 goto err;
5087 5087
5088 u64_stats_init(&tx_ring->syncp);
5089
5088 /* round up to nearest 4K */ 5090 /* round up to nearest 4K */
5089 tx_ring->size = tx_ring->count * sizeof(union ixgbe_adv_tx_desc); 5091 tx_ring->size = tx_ring->count * sizeof(union ixgbe_adv_tx_desc);
5090 tx_ring->size = ALIGN(tx_ring->size, 4096); 5092 tx_ring->size = ALIGN(tx_ring->size, 4096);
@@ -5167,6 +5169,8 @@ int ixgbe_setup_rx_resources(struct ixgbe_ring *rx_ring)
5167 if (!rx_ring->rx_buffer_info) 5169 if (!rx_ring->rx_buffer_info)
5168 goto err; 5170 goto err;
5169 5171
5172 u64_stats_init(&rx_ring->syncp);
5173
5170 /* Round up to nearest 4K */ 5174 /* Round up to nearest 4K */
5171 rx_ring->size = rx_ring->count * sizeof(union ixgbe_adv_rx_desc); 5175 rx_ring->size = rx_ring->count * sizeof(union ixgbe_adv_rx_desc);
5172 rx_ring->size = ALIGN(rx_ring->size, 4096); 5176 rx_ring->size = ALIGN(rx_ring->size, 4096);
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index 7d99e695a110..b8e232b4ea2d 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -2792,6 +2792,9 @@ static int mvneta_probe(struct platform_device *pdev)
2792 2792
2793 pp = netdev_priv(dev); 2793 pp = netdev_priv(dev);
2794 2794
2795 u64_stats_init(&pp->tx_stats.syncp);
2796 u64_stats_init(&pp->rx_stats.syncp);
2797
2795 pp->weight = MVNETA_RX_POLL_WEIGHT; 2798 pp->weight = MVNETA_RX_POLL_WEIGHT;
2796 pp->phy_node = phy_node; 2799 pp->phy_node = phy_node;
2797 pp->phy_interface = phy_mode; 2800 pp->phy_interface = phy_mode;
diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index a7df981d2123..43aa7acd84a6 100644
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -4763,6 +4763,9 @@ static struct net_device *sky2_init_netdev(struct sky2_hw *hw, unsigned port,
4763 sky2->hw = hw; 4763 sky2->hw = hw;
4764 sky2->msg_enable = netif_msg_init(debug, default_msg); 4764 sky2->msg_enable = netif_msg_init(debug, default_msg);
4765 4765
4766 u64_stats_init(&sky2->tx_stats.syncp);
4767 u64_stats_init(&sky2->rx_stats.syncp);
4768
4766 /* Auto speed and flow control */ 4769 /* Auto speed and flow control */
4767 sky2->flags = SKY2_FLAG_AUTO_SPEED | SKY2_FLAG_AUTO_PAUSE; 4770 sky2->flags = SKY2_FLAG_AUTO_SPEED | SKY2_FLAG_AUTO_PAUSE;
4768 if (hw->chip_id != CHIP_ID_YUKON_XL) 4771 if (hw->chip_id != CHIP_ID_YUKON_XL)
diff --git a/drivers/net/ethernet/neterion/vxge/vxge-main.c b/drivers/net/ethernet/neterion/vxge/vxge-main.c
index 8614eeb7de81..f9876ea8c8bf 100644
--- a/drivers/net/ethernet/neterion/vxge/vxge-main.c
+++ b/drivers/net/ethernet/neterion/vxge/vxge-main.c
@@ -2072,6 +2072,10 @@ static int vxge_open_vpaths(struct vxgedev *vdev)
2072 vdev->config.tx_steering_type; 2072 vdev->config.tx_steering_type;
2073 vpath->fifo.ndev = vdev->ndev; 2073 vpath->fifo.ndev = vdev->ndev;
2074 vpath->fifo.pdev = vdev->pdev; 2074 vpath->fifo.pdev = vdev->pdev;
2075
2076 u64_stats_init(&vpath->fifo.stats.syncp);
2077 u64_stats_init(&vpath->ring.stats.syncp);
2078
2075 if (vdev->config.tx_steering_type) 2079 if (vdev->config.tx_steering_type)
2076 vpath->fifo.txq = 2080 vpath->fifo.txq =
2077 netdev_get_tx_queue(vdev->ndev, i); 2081 netdev_get_tx_queue(vdev->ndev, i);
diff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c
index 098b96dad66f..2d045be4b5cf 100644
--- a/drivers/net/ethernet/nvidia/forcedeth.c
+++ b/drivers/net/ethernet/nvidia/forcedeth.c
@@ -5619,6 +5619,8 @@ static int nv_probe(struct pci_dev *pci_dev, const struct pci_device_id *id)
5619 spin_lock_init(&np->lock); 5619 spin_lock_init(&np->lock);
5620 spin_lock_init(&np->hwstats_lock); 5620 spin_lock_init(&np->hwstats_lock);
5621 SET_NETDEV_DEV(dev, &pci_dev->dev); 5621 SET_NETDEV_DEV(dev, &pci_dev->dev);
5622 u64_stats_init(&np->swstats_rx_syncp);
5623 u64_stats_init(&np->swstats_tx_syncp);
5622 5624
5623 init_timer(&np->oom_kick); 5625 init_timer(&np->oom_kick);
5624 np->oom_kick.data = (unsigned long) dev; 5626 np->oom_kick.data = (unsigned long) dev;
diff --git a/drivers/net/ethernet/realtek/8139too.c b/drivers/net/ethernet/realtek/8139too.c
index 50a92104dd0a..da5972eefdd2 100644
--- a/drivers/net/ethernet/realtek/8139too.c
+++ b/drivers/net/ethernet/realtek/8139too.c
@@ -790,6 +790,9 @@ static struct net_device *rtl8139_init_board(struct pci_dev *pdev)
790 790
791 pci_set_master (pdev); 791 pci_set_master (pdev);
792 792
793 u64_stats_init(&tp->rx_stats.syncp);
794 u64_stats_init(&tp->tx_stats.syncp);
795
793retry: 796retry:
794 /* PIO bar register comes first. */ 797 /* PIO bar register comes first. */
795 bar = !use_io; 798 bar = !use_io;
diff --git a/drivers/net/ethernet/tile/tilepro.c b/drivers/net/ethernet/tile/tilepro.c
index 106be47716e7..edb2e12a0fe2 100644
--- a/drivers/net/ethernet/tile/tilepro.c
+++ b/drivers/net/ethernet/tile/tilepro.c
@@ -1008,6 +1008,8 @@ static void tile_net_register(void *dev_ptr)
1008 info->egress_timer.data = (long)info; 1008 info->egress_timer.data = (long)info;
1009 info->egress_timer.function = tile_net_handle_egress_timer; 1009 info->egress_timer.function = tile_net_handle_egress_timer;
1010 1010
1011 u64_stats_init(&info->stats.syncp);
1012
1011 priv->cpu[my_cpu] = info; 1013 priv->cpu[my_cpu] = info;
1012 1014
1013 /* 1015 /*
diff --git a/drivers/net/ethernet/via/via-rhine.c b/drivers/net/ethernet/via/via-rhine.c
index 4a7293ed95e9..cce6c4bc556a 100644
--- a/drivers/net/ethernet/via/via-rhine.c
+++ b/drivers/net/ethernet/via/via-rhine.c
@@ -987,6 +987,9 @@ static int rhine_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
987 987
988 rp->base = ioaddr; 988 rp->base = ioaddr;
989 989
990 u64_stats_init(&rp->tx_stats.syncp);
991 u64_stats_init(&rp->rx_stats.syncp);
992
990 /* Get chip registers into a sane state */ 993 /* Get chip registers into a sane state */
991 rhine_power_init(dev); 994 rhine_power_init(dev);
992 rhine_hw_init(dev, pioaddr); 995 rhine_hw_init(dev, pioaddr);
diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
index a3bed28197d2..c14d39bf32d0 100644
--- a/drivers/net/ifb.c
+++ b/drivers/net/ifb.c
@@ -265,6 +265,7 @@ MODULE_PARM_DESC(numifbs, "Number of ifb devices");
265static int __init ifb_init_one(int index) 265static int __init ifb_init_one(int index)
266{ 266{
267 struct net_device *dev_ifb; 267 struct net_device *dev_ifb;
268 struct ifb_private *dp;
268 int err; 269 int err;
269 270
270 dev_ifb = alloc_netdev(sizeof(struct ifb_private), 271 dev_ifb = alloc_netdev(sizeof(struct ifb_private),
@@ -273,6 +274,10 @@ static int __init ifb_init_one(int index)
273 if (!dev_ifb) 274 if (!dev_ifb)
274 return -ENOMEM; 275 return -ENOMEM;
275 276
277 dp = netdev_priv(dev_ifb);
278 u64_stats_init(&dp->rsync);
279 u64_stats_init(&dp->tsync);
280
276 dev_ifb->rtnl_link_ops = &ifb_link_ops; 281 dev_ifb->rtnl_link_ops = &ifb_link_ops;
277 err = register_netdevice(dev_ifb); 282 err = register_netdevice(dev_ifb);
278 if (err < 0) 283 if (err < 0)
diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c
index a17d85a331f1..ac24c27b4b2d 100644
--- a/drivers/net/loopback.c
+++ b/drivers/net/loopback.c
@@ -137,10 +137,16 @@ static const struct ethtool_ops loopback_ethtool_ops = {
137 137
138static int loopback_dev_init(struct net_device *dev) 138static int loopback_dev_init(struct net_device *dev)
139{ 139{
140 int i;
140 dev->lstats = alloc_percpu(struct pcpu_lstats); 141 dev->lstats = alloc_percpu(struct pcpu_lstats);
141 if (!dev->lstats) 142 if (!dev->lstats)
142 return -ENOMEM; 143 return -ENOMEM;
143 144
145 for_each_possible_cpu(i) {
146 struct pcpu_lstats *lb_stats;
147 lb_stats = per_cpu_ptr(dev->lstats, i);
148 u64_stats_init(&lb_stats->syncp);
149 }
144 return 0; 150 return 0;
145} 151}
146 152
diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c
index af4aaa5893ff..acf93798dc67 100644
--- a/drivers/net/macvlan.c
+++ b/drivers/net/macvlan.c
@@ -534,6 +534,7 @@ static int macvlan_init(struct net_device *dev)
534{ 534{
535 struct macvlan_dev *vlan = netdev_priv(dev); 535 struct macvlan_dev *vlan = netdev_priv(dev);
536 const struct net_device *lowerdev = vlan->lowerdev; 536 const struct net_device *lowerdev = vlan->lowerdev;
537 int i;
537 538
538 dev->state = (dev->state & ~MACVLAN_STATE_MASK) | 539 dev->state = (dev->state & ~MACVLAN_STATE_MASK) |
539 (lowerdev->state & MACVLAN_STATE_MASK); 540 (lowerdev->state & MACVLAN_STATE_MASK);
@@ -549,6 +550,12 @@ static int macvlan_init(struct net_device *dev)
549 if (!vlan->pcpu_stats) 550 if (!vlan->pcpu_stats)
550 return -ENOMEM; 551 return -ENOMEM;
551 552
553 for_each_possible_cpu(i) {
554 struct macvlan_pcpu_stats *mvlstats;
555 mvlstats = per_cpu_ptr(vlan->pcpu_stats, i);
556 u64_stats_init(&mvlstats->syncp);
557 }
558
552 return 0; 559 return 0;
553} 560}
554 561
diff --git a/drivers/net/nlmon.c b/drivers/net/nlmon.c
index b57ce5f48962..d2bb12bfabd5 100644
--- a/drivers/net/nlmon.c
+++ b/drivers/net/nlmon.c
@@ -47,8 +47,16 @@ static int nlmon_change_mtu(struct net_device *dev, int new_mtu)
47 47
48static int nlmon_dev_init(struct net_device *dev) 48static int nlmon_dev_init(struct net_device *dev)
49{ 49{
50 int i;
51
50 dev->lstats = alloc_percpu(struct pcpu_lstats); 52 dev->lstats = alloc_percpu(struct pcpu_lstats);
51 53
54 for_each_possible_cpu(i) {
55 struct pcpu_lstats *nlmstats;
56 nlmstats = per_cpu_ptr(dev->lstats, i);
57 u64_stats_init(&nlmstats->syncp);
58 }
59
52 return dev->lstats == NULL ? -ENOMEM : 0; 60 return dev->lstats == NULL ? -ENOMEM : 0;
53} 61}
54 62
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 50e43e64d51d..6574eb8766f9 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -1540,6 +1540,12 @@ static int team_init(struct net_device *dev)
1540 if (!team->pcpu_stats) 1540 if (!team->pcpu_stats)
1541 return -ENOMEM; 1541 return -ENOMEM;
1542 1542
1543 for_each_possible_cpu(i) {
1544 struct team_pcpu_stats *team_stats;
1545 team_stats = per_cpu_ptr(team->pcpu_stats, i);
1546 u64_stats_init(&team_stats->syncp);
1547 }
1548
1543 for (i = 0; i < TEAM_PORT_HASHENTRIES; i++) 1549 for (i = 0; i < TEAM_PORT_HASHENTRIES; i++)
1544 INIT_HLIST_HEAD(&team->en_port_hlist[i]); 1550 INIT_HLIST_HEAD(&team->en_port_hlist[i]);
1545 INIT_LIST_HEAD(&team->port_list); 1551 INIT_LIST_HEAD(&team->port_list);
diff --git a/drivers/net/team/team_mode_loadbalance.c b/drivers/net/team/team_mode_loadbalance.c
index 829a9cd2b4da..d671fc3ac5ac 100644
--- a/drivers/net/team/team_mode_loadbalance.c
+++ b/drivers/net/team/team_mode_loadbalance.c
@@ -570,7 +570,7 @@ static int lb_init(struct team *team)
570{ 570{
571 struct lb_priv *lb_priv = get_lb_priv(team); 571 struct lb_priv *lb_priv = get_lb_priv(team);
572 lb_select_tx_port_func_t *func; 572 lb_select_tx_port_func_t *func;
573 int err; 573 int i, err;
574 574
575 /* set default tx port selector */ 575 /* set default tx port selector */
576 func = lb_select_tx_port_get_func("hash"); 576 func = lb_select_tx_port_get_func("hash");
@@ -588,6 +588,13 @@ static int lb_init(struct team *team)
588 goto err_alloc_pcpu_stats; 588 goto err_alloc_pcpu_stats;
589 } 589 }
590 590
591 for_each_possible_cpu(i) {
592 struct lb_pcpu_stats *team_lb_stats;
593 team_lb_stats = per_cpu_ptr(lb_priv->pcpu_stats, i);
594 u64_stats_init(&team_lb_stats->syncp);
595 }
596
597
591 INIT_DELAYED_WORK(&lb_priv->ex->stats.refresh_dw, lb_stats_refresh); 598 INIT_DELAYED_WORK(&lb_priv->ex->stats.refresh_dw, lb_stats_refresh);
592 599
593 err = team_options_register(team, lb_options, ARRAY_SIZE(lb_options)); 600 err = team_options_register(team, lb_options, ARRAY_SIZE(lb_options));
diff --git a/drivers/net/veth.c b/drivers/net/veth.c
index b24db7acbf12..2ec2041b62d4 100644
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -235,10 +235,18 @@ static int veth_change_mtu(struct net_device *dev, int new_mtu)
235 235
236static int veth_dev_init(struct net_device *dev) 236static int veth_dev_init(struct net_device *dev)
237{ 237{
238 int i;
239
238 dev->vstats = alloc_percpu(struct pcpu_vstats); 240 dev->vstats = alloc_percpu(struct pcpu_vstats);
239 if (!dev->vstats) 241 if (!dev->vstats)
240 return -ENOMEM; 242 return -ENOMEM;
241 243
244 for_each_possible_cpu(i) {
245 struct pcpu_vstats *veth_stats;
246 veth_stats = per_cpu_ptr(dev->vstats, i);
247 u64_stats_init(&veth_stats->syncp);
248 }
249
242 return 0; 250 return 0;
243} 251}
244 252
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 01f4eb5c8b78..bf7c734259ad 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -1576,6 +1576,13 @@ static int virtnet_probe(struct virtio_device *vdev)
1576 if (vi->stats == NULL) 1576 if (vi->stats == NULL)
1577 goto free; 1577 goto free;
1578 1578
1579 for_each_possible_cpu(i) {
1580 struct virtnet_stats *virtnet_stats;
1581 virtnet_stats = per_cpu_ptr(vi->stats, i);
1582 u64_stats_init(&virtnet_stats->tx_syncp);
1583 u64_stats_init(&virtnet_stats->rx_syncp);
1584 }
1585
1579 mutex_init(&vi->config_lock); 1586 mutex_init(&vi->config_lock);
1580 vi->config_enable = true; 1587 vi->config_enable = true;
1581 INIT_WORK(&vi->config_work, virtnet_config_changed_work); 1588 INIT_WORK(&vi->config_work, virtnet_config_changed_work);
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index 78df8f39e57c..0358c07f7669 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -1880,11 +1880,19 @@ static int vxlan_init(struct net_device *dev)
1880 struct vxlan_dev *vxlan = netdev_priv(dev); 1880 struct vxlan_dev *vxlan = netdev_priv(dev);
1881 struct vxlan_net *vn = net_generic(dev_net(dev), vxlan_net_id); 1881 struct vxlan_net *vn = net_generic(dev_net(dev), vxlan_net_id);
1882 struct vxlan_sock *vs; 1882 struct vxlan_sock *vs;
1883 int i;
1883 1884
1884 dev->tstats = alloc_percpu(struct pcpu_tstats); 1885 dev->tstats = alloc_percpu(struct pcpu_tstats);
1885 if (!dev->tstats) 1886 if (!dev->tstats)
1886 return -ENOMEM; 1887 return -ENOMEM;
1887 1888
1889 for_each_possible_cpu(i) {
1890 struct pcpu_tstats *vxlan_stats;
1891 vxlan_stats = per_cpu_ptr(dev->tstats, i);
1892 u64_stats_init(&vxlan_stats->syncp);
1893 }
1894
1895
1888 spin_lock(&vn->sock_lock); 1896 spin_lock(&vn->sock_lock);
1889 vs = vxlan_find_sock(dev_net(dev), vxlan->dst_port); 1897 vs = vxlan_find_sock(dev_net(dev), vxlan->dst_port);
1890 if (vs) { 1898 if (vs) {
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index dd1011e55cb5..d85e66979711 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -1340,6 +1340,12 @@ static struct net_device *xennet_create_dev(struct xenbus_device *dev)
1340 if (np->stats == NULL) 1340 if (np->stats == NULL)
1341 goto exit; 1341 goto exit;
1342 1342
1343 for_each_possible_cpu(i) {
1344 struct netfront_stats *xen_nf_stats;
1345 xen_nf_stats = per_cpu_ptr(np->stats, i);
1346 u64_stats_init(&xen_nf_stats->syncp);
1347 }
1348
1343 /* Initialise tx_skbs as a free chain containing every entry. */ 1349 /* Initialise tx_skbs as a free chain containing every entry. */
1344 np->tx_skb_freelist = 0; 1350 np->tx_skb_freelist = 0;
1345 for (i = 0; i < NET_TX_RING_SIZE; i++) { 1351 for (i = 0; i < NET_TX_RING_SIZE; i++) {