summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Oltean <vladimir.oltean@nxp.com>2023-02-07 15:54:27 +0200
committerDavid S. Miller <davem@davemloft.net>2023-02-08 09:48:52 +0000
commit1638bbbe4ececa615b273497d347d59ad71060a2 (patch)
tree6cd4947aed94f394161f53612e4e90ac7d832227
parentecc0cc98632ac80ead7821997fdd5ad9cdede9de (diff)
downloadlwn-1638bbbe4ececa615b273497d347d59ad71060a2.tar.gz
lwn-1638bbbe4ececa615b273497d347d59ad71060a2.zip
net/sched: taprio: continue with other TXQs if one dequeue() failed
This changes the handling of an unlikely condition to not stop dequeuing if taprio failed to dequeue the peeked skb in taprio_dequeue(). I've no idea when this can happen, but the only side effect seems to be that the atomic_sub_return() call right above will have consumed some budget. This isn't a big deal, since either that made us remain without any budget (and therefore, we'd exit on the next peeked skb anyway), or we could send some packets from other TXQs. I'm making this change because in a future patch I'll be refactoring the dequeue procedure to simplify it, and this corner case will have to go away. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Kurt Kanzenbach <kurt@linutronix.de> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/sched/sch_taprio.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/sched/sch_taprio.c b/net/sched/sch_taprio.c
index d9e26ddaa7f2..0fde303978a5 100644
--- a/net/sched/sch_taprio.c
+++ b/net/sched/sch_taprio.c
@@ -587,7 +587,7 @@ static struct sk_buff *taprio_dequeue(struct Qdisc *sch)
skb = child->ops->dequeue(child);
if (unlikely(!skb))
- goto done;
+ continue;
skb_found:
qdisc_bstats_update(sch, skb);