multiq: requeue should rewind the current_band
Currently dequeueing a packet and requeueing the same packet will cause a different packet to be pulled on the next dequeue. This change forces requeue to rewind the current_band. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
618d9f2554
commit
a574420ff4
|
@ -97,6 +97,7 @@ static int
|
||||||
multiq_requeue(struct sk_buff *skb, struct Qdisc *sch)
|
multiq_requeue(struct sk_buff *skb, struct Qdisc *sch)
|
||||||
{
|
{
|
||||||
struct Qdisc *qdisc;
|
struct Qdisc *qdisc;
|
||||||
|
struct multiq_sched_data *q = qdisc_priv(sch);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
qdisc = multiq_classify(skb, sch, &ret);
|
qdisc = multiq_classify(skb, sch, &ret);
|
||||||
|
@ -113,6 +114,10 @@ multiq_requeue(struct sk_buff *skb, struct Qdisc *sch)
|
||||||
if (ret == NET_XMIT_SUCCESS) {
|
if (ret == NET_XMIT_SUCCESS) {
|
||||||
sch->q.qlen++;
|
sch->q.qlen++;
|
||||||
sch->qstats.requeues++;
|
sch->qstats.requeues++;
|
||||||
|
if (q->curband)
|
||||||
|
q->curband--;
|
||||||
|
else
|
||||||
|
q->curband = q->bands - 1;
|
||||||
return NET_XMIT_SUCCESS;
|
return NET_XMIT_SUCCESS;
|
||||||
}
|
}
|
||||||
if (net_xmit_drop_count(ret))
|
if (net_xmit_drop_count(ret))
|
||||||
|
|
Loading…
Reference in New Issue