aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ifb.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-07-17 03:53:03 -0400
committerDavid S. Miller <davem@davemloft.net>2008-07-17 22:21:30 -0400
commit83874000929ed63aef30b44083a9f713135ff040 (patch)
tree7646fd185751cad8665eca19aa3f87d13c37eade /drivers/net/ifb.c
parentc7e4f3bbb4ba4e48ab3b529d5016e454cee1ccd6 (diff)
pkt_sched: Kill netdev_queue lock.
We can simply use the qdisc->q.lock for all of the qdisc tree synchronization. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ifb.c')
-rw-r--r--drivers/net/ifb.c20
1 files changed, 0 insertions, 20 deletions
diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c
index 897b05e79ed0..0960e69b2da4 100644
--- a/drivers/net/ifb.c
+++ b/drivers/net/ifb.c
@@ -35,7 +35,6 @@
35#include <linux/moduleparam.h> 35#include <linux/moduleparam.h>
36#include <net/pkt_sched.h> 36#include <net/pkt_sched.h>
37#include <net/net_namespace.h> 37#include <net/net_namespace.h>
38#include <linux/lockdep.h>
39 38
40#define TX_TIMEOUT (2*HZ) 39#define TX_TIMEOUT (2*HZ)
41 40
@@ -228,22 +227,6 @@ static struct rtnl_link_ops ifb_link_ops __read_mostly = {
228module_param(numifbs, int, 0); 227module_param(numifbs, int, 0);
229MODULE_PARM_DESC(numifbs, "Number of ifb devices"); 228MODULE_PARM_DESC(numifbs, "Number of ifb devices");
230 229
231/*
232 * dev_ifb's TX queue lock is usually taken after dev->rx_queue.lock,
233 * reversely to e.g. qdisc_lock_tree(). It should be safe until
234 * ifb doesn't take dev's TX queue lock with dev_ifb->rx_queue.lock.
235 * But lockdep should know that ifb has different locks from dev.
236 */
237static struct lock_class_key ifb_tx_queue_lock_key;
238static struct lock_class_key ifb_rx_queue_lock_key;
239
240static void set_tx_lockdep_key(struct net_device *dev,
241 struct netdev_queue *txq,
242 void *_unused)
243{
244 lockdep_set_class(&txq->lock, &ifb_tx_queue_lock_key);
245}
246
247static int __init ifb_init_one(int index) 230static int __init ifb_init_one(int index)
248{ 231{
249 struct net_device *dev_ifb; 232 struct net_device *dev_ifb;
@@ -264,9 +247,6 @@ static int __init ifb_init_one(int index)
264 if (err < 0) 247 if (err < 0)
265 goto err; 248 goto err;
266 249
267 netdev_for_each_tx_queue(dev_ifb, set_tx_lockdep_key, NULL);
268 lockdep_set_class(&dev_ifb->rx_queue.lock, &ifb_rx_queue_lock_key);
269
270 return 0; 250 return 0;
271 251
272err: 252err: