diff options
| author | Patrick McHardy <kaber@trash.net> | 2004-12-13 19:09:16 -0800 |
|---|---|---|
| committer | David S. Miller <davem@nuts.davemloft.net> | 2004-12-13 19:09:16 -0800 |
| commit | 1de32ed1a82c9b013e0aaefa06bcb205bef59fef (patch) | |
| tree | e61bacc73d8c90dfd6b9d2873067fc054497913b | |
| parent | c1e98f7df57332a0669d44d82292c064a99b995d (diff) | |
[PKT_SCHED]: Keep netem queue running until inner qdisc is empty
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | include/net/pkt_sched.h | 6 | ||||
| -rw-r--r-- | net/core/dev.c | 7 | ||||
| -rw-r--r-- | net/sched/sch_netem.c | 2 |
3 files changed, 7 insertions, 8 deletions
diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h index 2ad20e79a4a3..87496e3aa330 100644 --- a/include/net/pkt_sched.h +++ b/include/net/pkt_sched.h @@ -228,6 +228,12 @@ extern void qdisc_put_rtab(struct qdisc_rate_table *tab); extern int qdisc_restart(struct net_device *dev); +static inline void qdisc_run(struct net_device *dev) +{ + while (!netif_queue_stopped(dev) && qdisc_restart(dev) < 0) + /* NOTHING */; +} + extern int tc_classify(struct sk_buff *skb, struct tcf_proto *tp, struct tcf_result *res); diff --git a/net/core/dev.c b/net/core/dev.c index ad6f08aeea80..8453a1afb036 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1202,13 +1202,6 @@ int __skb_linearize(struct sk_buff *skb, int gfp_mask) } \ } -static inline void qdisc_run(struct net_device *dev) -{ - while (!netif_queue_stopped(dev) && - qdisc_restart(dev)<0) - /* NOTHING */; -} - /** * dev_queue_xmit - transmit a buffer * @skb: buffer to transmit diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index e56c83e6c380..1e2deaf77783 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@ -287,7 +287,7 @@ static void netem_watchdog(unsigned long arg) else sch->q.qlen++; } - qdisc_restart(dev); + qdisc_run(dev); spin_unlock_bh(&dev->queue_lock); } |
