diff options
author | Thomas Graf <tgraf@suug.ch> | 2005-11-05 21:14:07 +0100 |
---|---|---|
committer | Thomas Graf <tgr@axs.localdomain> | 2005-11-05 22:02:25 +0100 |
commit | 6a1b63d467281eb6bd64aafbbf6130a1b42c8c2e (patch) | |
tree | 7137eda1a0d3ca6d6e6538cb0d2fb177b97bfb7f /net | |
parent | 9e178ff27cd9187babe86dc80ef766b722c88da6 (diff) | |
download | kernel-common-6a1b63d467281eb6bd64aafbbf6130a1b42c8c2e.tar.gz kernel-common-6a1b63d467281eb6bd64aafbbf6130a1b42c8c2e.tar.bz2 kernel-common-6a1b63d467281eb6bd64aafbbf6130a1b42c8c2e.zip |
[PKT_SCHED]: RED: Dont start idle periods while already idling
We should not interrupt and restart an idle period while idling already.
Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/sched/sch_red.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/sched/sch_red.c b/net/sched/sch_red.c index d5e934c33f96..76e8df8447d9 100644 --- a/net/sched/sch_red.c +++ b/net/sched/sch_red.c @@ -135,7 +135,7 @@ red_dequeue(struct Qdisc* sch) skb = qdisc_dequeue_head(sch); - if (skb == NULL) + if (skb == NULL && !red_is_idling(&q->parms)) red_start_of_idle_period(&q->parms); return skb; @@ -154,7 +154,9 @@ static unsigned int red_drop(struct Qdisc* sch) return len; } - red_start_of_idle_period(&q->parms); + if (!red_is_idling(&q->parms)) + red_start_of_idle_period(&q->parms); + return 0; } |