diff options
author | Asim Shankar <asimshankar@gmail.com> | 2005-05-03 23:39:33 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-05-03 23:39:33 +0200 |
commit | 033d899904792d3501b7dd469495ca9138424ec3 (patch) | |
tree | 62ed3ad46c42f30915990ee3dd234fa931f2e368 /net/sched | |
parent | [PPP]: remove redundant NULL pointer checks before kfree & vfree (diff) | |
download | linux-033d899904792d3501b7dd469495ca9138424ec3.tar.xz linux-033d899904792d3501b7dd469495ca9138424ec3.zip |
[PKT_SCHED]: HTB: Drop packet when direct queue is full
htb_enqueue(): Free skb and return NET_XMIT_DROP if a packet is
destined for the direct_queue but the direct_queue is full. (Before
this: erroneously returned NET_XMIT_SUCCESS even though the packet was
not enqueued)
Signed-off-by: Asim Shankar <asimshankar@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched')
-rw-r--r-- | net/sched/sch_htb.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c index a85935e7d53d..558cc087e602 100644 --- a/net/sched/sch_htb.c +++ b/net/sched/sch_htb.c @@ -717,6 +717,10 @@ static int htb_enqueue(struct sk_buff *skb, struct Qdisc *sch) if (q->direct_queue.qlen < q->direct_qlen) { __skb_queue_tail(&q->direct_queue, skb); q->direct_pkts++; + } else { + kfree_skb(skb); + sch->qstats.drops++; + return NET_XMIT_DROP; } #ifdef CONFIG_NET_CLS_ACT } else if (!cl) { |