Merge branch 'net-Fix-64-bit-statistics-seqcount-init'
Florian Fainelli says: ==================== drivers: net: Fix 64-bit statistics seqcount init This patch series fixes a bunch of drivers to have their 64-bit statistics seqcount cookie be initialized correctly. Most of these drivers (except b44, gtp) are probably used on 64-bit only hosts and so the lockdep splat might have never been seen. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>hifive-unleashed-5.1
commit
12c5d0c048
|
@ -2368,6 +2368,7 @@ static int b44_init_one(struct ssb_device *sdev,
|
|||
bp->msg_enable = netif_msg_init(b44_debug, B44_DEF_MSG_ENABLE);
|
||||
|
||||
spin_lock_init(&bp->lock);
|
||||
u64_stats_init(&bp->hw_stats.syncp);
|
||||
|
||||
bp->rx_pending = B44_DEF_RX_RING_PENDING;
|
||||
bp->tx_pending = B44_DEF_TX_RING_PENDING;
|
||||
|
|
|
@ -1113,6 +1113,8 @@ int i40e_setup_tx_descriptors(struct i40e_ring *tx_ring)
|
|||
if (!tx_ring->tx_bi)
|
||||
goto err;
|
||||
|
||||
u64_stats_init(&tx_ring->syncp);
|
||||
|
||||
/* round up to nearest 4K */
|
||||
tx_ring->size = tx_ring->count * sizeof(struct i40e_tx_desc);
|
||||
/* add u32 for head writeback, align after this takes care of
|
||||
|
|
|
@ -2988,6 +2988,8 @@ int ixgbevf_setup_tx_resources(struct ixgbevf_ring *tx_ring)
|
|||
if (!tx_ring->tx_buffer_info)
|
||||
goto err;
|
||||
|
||||
u64_stats_init(&tx_ring->syncp);
|
||||
|
||||
/* round up to nearest 4K */
|
||||
tx_ring->size = tx_ring->count * sizeof(union ixgbe_adv_tx_desc);
|
||||
tx_ring->size = ALIGN(tx_ring->size, 4096);
|
||||
|
@ -3046,6 +3048,8 @@ int ixgbevf_setup_rx_resources(struct ixgbevf_ring *rx_ring)
|
|||
if (!rx_ring->rx_buffer_info)
|
||||
goto err;
|
||||
|
||||
u64_stats_init(&rx_ring->syncp);
|
||||
|
||||
/* Round up to nearest 4K */
|
||||
rx_ring->size = rx_ring->count * sizeof(union ixgbe_adv_rx_desc);
|
||||
rx_ring->size = ALIGN(rx_ring->size, 4096);
|
||||
|
|
|
@ -513,6 +513,7 @@ nfp_net_tx_ring_init(struct nfp_net_tx_ring *tx_ring,
|
|||
tx_ring->idx = idx;
|
||||
tx_ring->r_vec = r_vec;
|
||||
tx_ring->is_xdp = is_xdp;
|
||||
u64_stats_init(&tx_ring->r_vec->tx_sync);
|
||||
|
||||
tx_ring->qcidx = tx_ring->idx * nn->stride_tx;
|
||||
tx_ring->qcp_q = nn->tx_bar + NFP_QCP_QUEUE_OFF(tx_ring->qcidx);
|
||||
|
@ -532,6 +533,7 @@ nfp_net_rx_ring_init(struct nfp_net_rx_ring *rx_ring,
|
|||
|
||||
rx_ring->idx = idx;
|
||||
rx_ring->r_vec = r_vec;
|
||||
u64_stats_init(&rx_ring->r_vec->rx_sync);
|
||||
|
||||
rx_ring->fl_qcidx = rx_ring->idx * nn->stride_rx;
|
||||
rx_ring->qcp_fl = nn->rx_bar + NFP_QCP_QUEUE_OFF(rx_ring->fl_qcidx);
|
||||
|
|
|
@ -364,7 +364,7 @@ static int gtp_dev_init(struct net_device *dev)
|
|||
|
||||
gtp->dev = dev;
|
||||
|
||||
dev->tstats = alloc_percpu(struct pcpu_sw_netstats);
|
||||
dev->tstats = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats);
|
||||
if (!dev->tstats)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
|
@ -1302,6 +1302,8 @@ int netvsc_device_add(struct hv_device *device,
|
|||
struct netvsc_channel *nvchan = &net_device->chan_table[i];
|
||||
|
||||
nvchan->channel = device->channel;
|
||||
u64_stats_init(&nvchan->tx_stats.syncp);
|
||||
u64_stats_init(&nvchan->rx_stats.syncp);
|
||||
}
|
||||
|
||||
/* Enable NAPI handler before init callbacks */
|
||||
|
|
|
@ -192,7 +192,7 @@ static int ipvlan_init(struct net_device *dev)
|
|||
|
||||
netdev_lockdep_set_classes(dev);
|
||||
|
||||
ipvlan->pcpu_stats = alloc_percpu(struct ipvl_pcpu_stats);
|
||||
ipvlan->pcpu_stats = netdev_alloc_pcpu_stats(struct ipvl_pcpu_stats);
|
||||
if (!ipvlan->pcpu_stats)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
Loading…
Reference in New Issue