diff options
author | Kevin Hilman <khilman@linaro.org> | 2015-08-14 10:39:12 -0700 |
---|---|---|
committer | Kevin Hilman <khilman@linaro.org> | 2015-08-14 10:39:12 -0700 |
commit | 373cea9e2c9c6495a80efdae55cf2114f384a75b (patch) | |
tree | 7a8c31aff389cd60937edf7d311c2d93d42a3c7d /net/sched/sch_api.c | |
parent | ea64087da6e7655f5acac074a70496b50b310a29 (diff) | |
parent | 8a7eb06341c73248d152a2a12e4f00f472295de7 (diff) |
Merge branch 'linux-linaro-lsk-v3.14' into linux-linaro-lsk-v3.14-rtlsk-v3.14-15.08-rt
Diffstat (limited to 'net/sched/sch_api.c')
-rw-r--r-- | net/sched/sch_api.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c index 98532cfa7823..bdaed3130029 100644 --- a/net/sched/sch_api.c +++ b/net/sched/sch_api.c @@ -812,10 +812,8 @@ static int qdisc_graft(struct net_device *dev, struct Qdisc *parent, if (dev->flags & IFF_UP) dev_deactivate(dev); - if (new && new->ops->attach) { - new->ops->attach(new); - num_q = 0; - } + if (new && new->ops->attach) + goto skip; for (i = 0; i < num_q; i++) { struct netdev_queue *dev_queue = dev_ingress_queue(dev); @@ -831,12 +829,16 @@ static int qdisc_graft(struct net_device *dev, struct Qdisc *parent, qdisc_destroy(old); } +skip: if (!ingress) { notify_and_destroy(net, skb, n, classid, dev->qdisc, new); if (new && !new->ops->attach) atomic_inc(&new->refcnt); dev->qdisc = new ? : &noop_qdisc; + + if (new && new->ops->attach) + new->ops->attach(new); } else { notify_and_destroy(net, skb, n, classid, old, new); } |