diff options
author | David S. Miller <davem@davemloft.net> | 2008-07-31 16:58:50 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-07-31 16:58:50 -0700 |
commit | c3f26a269c2421f97f10cf8ed05d5099b573af4d (patch) | |
tree | d0602cbb48742b3e39ab6bdcaa08c342d4cd2cae /net/core/netpoll.c | |
parent | 967ab999a090b1a4e7d3c7febfd6d89b42fb4cf4 (diff) | |
download | op-kernel-dev-c3f26a269c2421f97f10cf8ed05d5099b573af4d.zip op-kernel-dev-c3f26a269c2421f97f10cf8ed05d5099b573af4d.tar.gz |
netdev: Fix lockdep warnings in multiqueue configurations.
When support for multiple TX queues were added, the
netif_tx_lock() routines we converted to iterate over
all TX queues and grab each queue's spinlock.
This causes heartburn for lockdep and it's not a healthy
thing to do with lots of TX queues anyways.
So modify this to use a top-level lock and a "frozen"
state for the individual TX queues.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/netpoll.c')
-rw-r--r-- | net/core/netpoll.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index c127208..6c7af39 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c @@ -70,6 +70,7 @@ static void queue_process(struct work_struct *work) local_irq_save(flags); __netif_tx_lock(txq, smp_processor_id()); if (netif_tx_queue_stopped(txq) || + netif_tx_queue_frozen(txq) || dev->hard_start_xmit(skb, dev) != NETDEV_TX_OK) { skb_queue_head(&npinfo->txq, skb); __netif_tx_unlock(txq); |