diff options
author | David S. Miller <davem@davemloft.net> | 2008-07-17 03:34:19 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-07-17 22:21:00 -0400 |
commit | e8a0464cc950972824e2e128028ae3db666ec1ed (patch) | |
tree | 5022b95396c0f3b313531bc39b19543c03551b9a /net/8021q | |
parent | 070825b3840a743e21ebcc44f8279708a4fed977 (diff) |
netdev: Allocate multiple queues for TX.
alloc_netdev_mq() now allocates an array of netdev_queue
structures for TX, based upon the queue_count argument.
Furthermore, all accesses to the TX queues are now vectored
through the netdev_get_tx_queue() and netdev_for_each_tx_queue()
interfaces. This makes it easy to grep the tree for all
things that want to get to a TX queue of a net device.
Problem spots which are not really multiqueue aware yet, and
only work with one queue, can easily be spotted by grepping
for all netdev_get_tx_queue() calls that pass in a zero index.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/8021q')
-rw-r--r-- | net/8021q/vlan_dev.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index 6b985f23fd9f..f42bc2b26b85 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c | |||
@@ -570,16 +570,18 @@ static void vlan_dev_set_rx_mode(struct net_device *vlan_dev) | |||
570 | */ | 570 | */ |
571 | static struct lock_class_key vlan_netdev_xmit_lock_key; | 571 | static struct lock_class_key vlan_netdev_xmit_lock_key; |
572 | 572 | ||
573 | static void vlan_dev_set_lockdep_one(struct netdev_queue *txq, | 573 | static void vlan_dev_set_lockdep_one(struct net_device *dev, |
574 | int subclass) | 574 | struct netdev_queue *txq, |
575 | void *_subclass) | ||
575 | { | 576 | { |
576 | lockdep_set_class_and_subclass(&txq->_xmit_lock, | 577 | lockdep_set_class_and_subclass(&txq->_xmit_lock, |
577 | &vlan_netdev_xmit_lock_key, subclass); | 578 | &vlan_netdev_xmit_lock_key, |
579 | *(int *)_subclass); | ||
578 | } | 580 | } |
579 | 581 | ||
580 | static void vlan_dev_set_lockdep_class(struct net_device *dev, int subclass) | 582 | static void vlan_dev_set_lockdep_class(struct net_device *dev, int subclass) |
581 | { | 583 | { |
582 | vlan_dev_set_lockdep_one(&dev->tx_queue, subclass); | 584 | netdev_for_each_tx_queue(dev, vlan_dev_set_lockdep_one, &subclass); |
583 | } | 585 | } |
584 | 586 | ||
585 | static const struct header_ops vlan_header_ops = { | 587 | static const struct header_ops vlan_header_ops = { |