From 906dc6251698c96a23cd695458c55269f203a27f Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Tue, 13 Mar 2012 18:04:25 +0000 Subject: [PATCH] --- yaml --- r: 288520 b: refs/heads/master c: cc34eb672eedb5ff248ac3bf9971a76f141fd141 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/sched/sch_sfq.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 79557dfba8d3..3001dae86790 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 122bdf67f15a22bcabf6c2cab3a545d17ccf68dc +refs/heads/master: cc34eb672eedb5ff248ac3bf9971a76f141fd141 diff --git a/trunk/net/sched/sch_sfq.c b/trunk/net/sched/sch_sfq.c index 60d47180f043..02a21abea65e 100644 --- a/trunk/net/sched/sch_sfq.c +++ b/trunk/net/sched/sch_sfq.c @@ -469,11 +469,15 @@ sfq_enqueue(struct sk_buff *skb, struct Qdisc *sch) if (slot->qlen == 1) { /* The flow is new */ if (q->tail == NULL) { /* It is the first flow */ slot->next = x; - q->tail = slot; } else { slot->next = q->tail->next; q->tail->next = x; } + /* We put this flow at the end of our flow list. + * This might sound unfair for a new flow to wait after old ones, + * but we could endup servicing new flows only, and freeze old ones. + */ + q->tail = slot; /* We could use a bigger initial quantum for new flows */ slot->allot = q->scaled_quantum; }