netdev: Create netdev_queue abstraction.
A netdev_queue is an entity managed by a qdisc. Currently there is one RX and one TX queue, and a netdev_queue merely contains a backpointer to the net_device. The Qdisc struct is augmented with a netdev_queue pointer as well. Eventually the 'dev' Qdisc member will go away and we will have the resulting hierarchy: net_device --> netdev_queue --> Qdisc Also, qdisc_alloc() and qdisc_create_dflt() now take a netdev_queue pointer argument. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@ -448,6 +448,10 @@ static inline void napi_synchronize(const struct napi_struct *n)
|
||||
# define napi_synchronize(n) barrier()
|
||||
#endif
|
||||
|
||||
struct netdev_queue {
|
||||
struct net_device *dev;
|
||||
};
|
||||
|
||||
/*
|
||||
* The DEVICE structure.
|
||||
* Actually, this whole structure is a big mistake. It mixes I/O
|
||||
@ -624,6 +628,9 @@ struct net_device
|
||||
|
||||
unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */
|
||||
|
||||
struct netdev_queue rx_queue;
|
||||
struct netdev_queue tx_queue;
|
||||
|
||||
/* ingress path synchronizer */
|
||||
spinlock_t ingress_lock;
|
||||
struct Qdisc *qdisc_ingress;
|
||||
|
Reference in New Issue
Block a user