[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250817172344.449992-1-will@willsroot.io>
Date: Sun, 17 Aug 2025 17:24:17 +0000
From: William Liu <will@...lsroot.io>
To: netdev@...r.kernel.org
Cc: toke@...e.dk, jhs@...atatu.com, xiyou.wangcong@...il.com, pabeni@...hat.com, kuba@...nel.org, savy@...t3mfailure.io, jiri@...nulli.us, davem@...emloft.net, edumazet@...gle.com, horms@...nel.org, cake@...ts.bufferbloat.net, William Liu <will@...lsroot.io>
Subject: [PATCH net 1/2] net/sched: Make cake_enqueue return NET_XMIT_CN when past buffer_limit
The following setup can trigger a WARNING in htb_activate due to
the condition: !cl->leaf.q->q.qlen
tc qdisc del dev lo root
tc qdisc add dev lo root handle 1: htb default 1
tc class add dev lo parent 1: classid 1:1 \
htb rate 64bit
tc qdisc add dev lo parent 1:1 handle f: \
cake memlimit 1b
ping -I lo -f -c1 -s64 -W0.001 127.0.0.1
This is because the low memlimit leads to a low buffer_limit, which
causes packet dropping. However, cake_enqueue still returns
NET_XMIT_SUCCESS, causing htb_enqueue to call htb_activate with an
empty child qdisc.
I do not believe return value of NET_XMIT_CN is necessary for packet
drops in the case of ack filtering, as that is meant to optimize
performance, not to signal congestion.
Fixes: 046f6fd5daef ("sched: Add Common Applications Kept Enhanced (cake) qdisc")
Signed-off-by: William Liu <will@...lsroot.io>
Reviewed-by: Savino Dicanosa <savy@...t3mfailure.io>
---
net/sched/sch_cake.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/net/sched/sch_cake.c b/net/sched/sch_cake.c
index dbcfb948c867..40814449f17a 100644
--- a/net/sched/sch_cake.c
+++ b/net/sched/sch_cake.c
@@ -1934,6 +1934,9 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch,
cake_drop(sch, to_free);
}
b->drop_overlimit += dropped;
+
+ if (dropped)
+ return NET_XMIT_CN;
}
return NET_XMIT_SUCCESS;
}
--
2.43.0
Powered by blists - more mailing lists