diff options
Diffstat (limited to 'net/sched/cls_api.c')
-rw-r--r-- | net/sched/cls_api.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index e2389f161e46..b483bbea6118 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c | |||
@@ -166,7 +166,8 @@ replay: | |||
166 | 166 | ||
167 | /* Find qdisc */ | 167 | /* Find qdisc */ |
168 | if (!parent) { | 168 | if (!parent) { |
169 | q = dev->qdisc_sleeping; | 169 | struct netdev_queue *dev_queue = &dev->tx_queue; |
170 | q = dev_queue->qdisc_sleeping; | ||
170 | parent = q->handle; | 171 | parent = q->handle; |
171 | } else { | 172 | } else { |
172 | q = qdisc_lookup(dev, TC_H_MAJ(t->tcm_parent)); | 173 | q = qdisc_lookup(dev, TC_H_MAJ(t->tcm_parent)); |
@@ -390,6 +391,7 @@ static int tcf_node_dump(struct tcf_proto *tp, unsigned long n, | |||
390 | static int tc_dump_tfilter(struct sk_buff *skb, struct netlink_callback *cb) | 391 | static int tc_dump_tfilter(struct sk_buff *skb, struct netlink_callback *cb) |
391 | { | 392 | { |
392 | struct net *net = sock_net(skb->sk); | 393 | struct net *net = sock_net(skb->sk); |
394 | struct netdev_queue *dev_queue; | ||
393 | int t; | 395 | int t; |
394 | int s_t; | 396 | int s_t; |
395 | struct net_device *dev; | 397 | struct net_device *dev; |
@@ -408,8 +410,9 @@ static int tc_dump_tfilter(struct sk_buff *skb, struct netlink_callback *cb) | |||
408 | if ((dev = dev_get_by_index(&init_net, tcm->tcm_ifindex)) == NULL) | 410 | if ((dev = dev_get_by_index(&init_net, tcm->tcm_ifindex)) == NULL) |
409 | return skb->len; | 411 | return skb->len; |
410 | 412 | ||
413 | dev_queue = &dev->tx_queue; | ||
411 | if (!tcm->tcm_parent) | 414 | if (!tcm->tcm_parent) |
412 | q = dev->qdisc_sleeping; | 415 | q = dev_queue->qdisc_sleeping; |
413 | else | 416 | else |
414 | q = qdisc_lookup(dev, TC_H_MAJ(tcm->tcm_parent)); | 417 | q = qdisc_lookup(dev, TC_H_MAJ(tcm->tcm_parent)); |
415 | if (!q) | 418 | if (!q) |