X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fnet%2Fpkt_sched.h;h=b94d1ad92c4d36c2f2cd6ff973db72ceb60a8345;hb=987b0145d94eecf292d8b301228356f44611ab7c;hp=75b5b9333fc75cc3b4289c80870b8a77ed6f0892;hpb=f7ed79d23a47594e7834d66a8f14449796d4f3e6;p=linux-2.6.git diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h index 75b5b9333..b94d1ad92 100644 --- a/include/net/pkt_sched.h +++ b/include/net/pkt_sched.h @@ -218,13 +218,12 @@ extern struct qdisc_rate_table *qdisc_get_rtab(struct tc_ratespec *r, struct rtattr *tab); extern void qdisc_put_rtab(struct qdisc_rate_table *tab); -extern void __qdisc_run(struct net_device *dev); +extern int qdisc_restart(struct net_device *dev); static inline void qdisc_run(struct net_device *dev) { - if (!netif_queue_stopped(dev) && - !test_and_set_bit(__LINK_STATE_QDISC_RUNNING, &dev->state)) - __qdisc_run(dev); + while (!netif_queue_stopped(dev) && qdisc_restart(dev) < 0) + /* NOTHING */; } extern int tc_classify(struct sk_buff *skb, struct tcf_proto *tp,