From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; dkim=pass header.d=toke.dk; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=toke.dk policy.dmarc=reject From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=toke.dk; s=20161023; t=1755512356; bh=f30jZL5cYWfUn1vWNWyTFBHLrGVCX1FnWqrPVRvaIe8=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=oHmj8Jkx7+QX4TFX9u+mNGH9lll/6ZJxEolXYC/ijdyXwxR2C+5597fmAdVFwYCOr ZfA26R7i466ABzXTkI3LTnGLsXgC8alK9BqPbZFRabZgbNT+mKOerox65QxXMvhLl6 /918zRCr9t734sZaaOjGSMl8CNum1iAwoNAVmesHtQ11E8l6OgPKV/zKdAXh5Oy+f9 JX3t/4YLPo8rwNl6JDiXuSctqZG0/DhdqntT5As4Wylw37nNOY9MbL3z8g01IQ9VeF UzEmZhCPJXXFGbbmeVga7OphjBIKJ+/CgBmTBXgZcxaK1ror7Y6QcMtY7Q0Vp+2fY/ DIDodlQTvZMtQ== To: William Liu , netdev@vger.kernel.org Cc: jhs@mojatatu.com, xiyou.wangcong@gmail.com, pabeni@redhat.com, kuba@kernel.org, savy@syst3mfailure.io, jiri@resnulli.us, davem@davemloft.net, edumazet@google.com, horms@kernel.org, cake@lists.bufferbloat.net, William Liu In-Reply-To: <20250817172344.449992-1-will@willsroot.io> References: <20250817172344.449992-1-will@willsroot.io> Date: Mon, 18 Aug 2025 12:19:16 +0200 X-Clacks-Overhead: GNU Terry Pratchett Message-ID: <87a53xj5jv.fsf@toke.dk> MIME-Version: 1.0 Content-Type: text/plain Message-ID-Hash: SCYH7JC3YXVABOIWIMS7TWCVTSHWXQGA X-Message-ID-Hash: SCYH7JC3YXVABOIWIMS7TWCVTSHWXQGA X-MailFrom: toke@toke.dk X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Subject: [Cake] Re: [PATCH net 1/2] net/sched: Make cake_enqueue return NET_XMIT_CN when past buffer_limit List-Id: Cake - FQ_codel the next generation Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: William Liu writes: > 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 > Reviewed-by: Savino Dicanosa > --- > net/sched/sch_cake.c | 3 +++ > 1 file changed, 3 i > nsertions(+) > > 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; cake_drop() may drop from a different flow, so we can't unconditionally return NET_XMIT_CN. We'll have to check the return code of cake_drop() and only return NET_XMIT_CN if it's the same flow we just enqueued a packet to (which is also what fq_codel does, BTW). -Toke