diff options
Diffstat (limited to 'net/sched/sch_dsmark.c')
-rw-r--r-- | net/sched/sch_dsmark.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/net/sched/sch_dsmark.c b/net/sched/sch_dsmark.c index 1c1a48582..76f2fc394 100644 --- a/net/sched/sch_dsmark.c +++ b/net/sched/sch_dsmark.c @@ -278,10 +278,16 @@ static struct sk_buff *dsmark_dequeue(struct Qdisc *sch) static int dsmark_requeue(struct sk_buff *skb,struct Qdisc *sch) { + int ret; struct dsmark_qdisc_data *p = PRIV(sch); D2PRINTK("dsmark_requeue(skb %p,sch %p,[qdisc %p])\n",skb,sch,p); - return p->q->ops->requeue(skb,p->q); + if ((ret = p->q->ops->requeue(skb, p->q)) == 0) { + sch->q.qlen++; + return 0; + } + sch->stats.drops++; + return ret; } |