pkt_sched: Manage qdisc list inside of root qdisc.
Idea is from Patrick McHardy. Instead of managing the list of qdiscs on the device level, manage it in the root qdisc of a netdev_queue. This solves all kinds of visibility issues during qdisc destruction. The way to iterate over all qdiscs of a netdev_queue is to visit the netdev_queue->qdisc, and then traverse it's list. The only special case is to ignore builting qdiscs at the root when dumping or doing a qdisc_lookup(). That was not needed previously because builtin qdiscs were not added to the device's qdisc_list. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@ -3888,8 +3888,6 @@ int register_netdevice(struct net_device *dev)
|
||||
net = dev_net(dev);
|
||||
|
||||
spin_lock_init(&dev->addr_list_lock);
|
||||
spin_lock_init(&dev->qdisc_list_lock);
|
||||
INIT_LIST_HEAD(&dev->qdisc_list);
|
||||
netdev_init_queue_locks(dev);
|
||||
|
||||
dev->iflink = -1;
|
||||
|
Reference in New Issue
Block a user