Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a574420f authored by Alexander Duyck's avatar Alexander Duyck Committed by David S. Miller
Browse files

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: default avatarAlexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 618d9f25
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -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))