net: remove dev_txq_stats_fold()
After recent changes, (percpu stats on vlan/tunnels...), we dont need
anymore per struct netdev_queue tx_bytes/tx_packets/tx_dropped counters.
Only remaining users are ixgbe, sch_teql, gianfar & macvlan :
1) ixgbe can be converted to use existing tx_ring counters.
2) macvlan incremented txq->tx_dropped, it can use the
dev->stats.tx_dropped counter.
3) sch_teql : almost revert ab35cd4b8f
(Use net_device internal stats)
Now we have ndo_get_stats64(), use it, even for "unsigned long"
fields (No need to bring back a struct net_device_stats)
4) gianfar adds a stats structure per tx queue to hold
tx_bytes/tx_packets
This removes a lockdep warning (and possible lockup) in rndis gadget,
calling dev_get_stats() from hard IRQ context.
Ref: http://www.spinics.net/lists/netdev/msg149202.html
Reported-by: Neil Jones <neiljay@gmail.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Jarek Poplawski <jarkao2@gmail.com>
CC: Alexander Duyck <alexander.h.duyck@intel.com>
CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
CC: Sandeep Gopalpet <sandeep.kumar@freescale.com>
CC: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
1949e084bf
commit
1ac9ad1394
@ -907,12 +907,21 @@ enum {
|
||||
MQ_MG_MODE
|
||||
};
|
||||
|
||||
/*
|
||||
* Per TX queue stats
|
||||
*/
|
||||
struct tx_q_stats {
|
||||
unsigned long tx_packets;
|
||||
unsigned long tx_bytes;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct gfar_priv_tx_q - per tx queue structure
|
||||
* @txlock: per queue tx spin lock
|
||||
* @tx_skbuff:skb pointers
|
||||
* @skb_curtx: to be used skb pointer
|
||||
* @skb_dirtytx:the last used skb pointer
|
||||
* @stats: bytes/packets stats
|
||||
* @qindex: index of this queue
|
||||
* @dev: back pointer to the dev structure
|
||||
* @grp: back pointer to the group to which this queue belongs
|
||||
@ -934,6 +943,7 @@ struct gfar_priv_tx_q {
|
||||
struct txbd8 *tx_bd_base;
|
||||
struct txbd8 *cur_tx;
|
||||
struct txbd8 *dirty_tx;
|
||||
struct tx_q_stats stats;
|
||||
struct net_device *dev;
|
||||
struct gfar_priv_grp *grp;
|
||||
u16 skb_curtx;
|
||||
|
Reference in New Issue
Block a user