pkt_sched: Add and use qdisc_root() and qdisc_root_lock().
When code wants to lock the qdisc tree state, the logic operation it's doing is locking the top-level qdisc that sits of the root of the netdev_queue. Add qdisc_root_lock() to represent this and convert the easiest cases. In order for this to work out in all cases, we have to hook up the noop_qdisc to a dummy netdev_queue. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -161,6 +161,18 @@ struct tcf_proto
|
||||
struct tcf_proto_ops *ops;
|
||||
};
|
||||
|
||||
static inline struct Qdisc *qdisc_root(struct Qdisc *qdisc)
|
||||
{
|
||||
return qdisc->dev_queue->qdisc;
|
||||
}
|
||||
|
||||
static inline spinlock_t *qdisc_root_lock(struct Qdisc *qdisc)
|
||||
{
|
||||
struct Qdisc *root = qdisc_root(qdisc);
|
||||
|
||||
return &root->dev_queue->lock;
|
||||
}
|
||||
|
||||
static inline struct net_device *qdisc_dev(struct Qdisc *qdisc)
|
||||
{
|
||||
return qdisc->dev_queue->dev;
|
||||
|
||||
Reference in New Issue
Block a user