From: Jesper Dangaard Brouer <hawk@kernel.org>
To: David Ahern <dsahern@kernel.org>,
netdev@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>
Cc: bpf@vger.kernel.org, tom@herbertland.com,
"Eric Dumazet" <eric.dumazet@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
"Paolo Abeni" <pabeni@redhat.com>,
"Toke Høiland-Jørgensen" <toke@toke.dk>,
makita.toshiaki@lab.ntt.co.jp, kernel-team@cloudflare.com,
phil@nwl.cc
Subject: Re: [PATCH net-next V4 1/2] net: sched: generalize check for no-queue qdisc on TX queue
Date: Tue, 15 Apr 2025 18:30:38 +0200 [thread overview]
Message-ID: <a9af244c-37c5-460a-9128-c020173c591d@kernel.org> (raw)
In-Reply-To: <f448fcb8-6330-4517-863f-4bf0a2242313@kernel.org>
On 15/04/2025 17.43, David Ahern wrote:
> On 4/15/25 7:44 AM, Jesper Dangaard Brouer wrote:
>> The "noqueue" qdisc can either be directly attached, or get default
>> attached if net_device priv_flags has IFF_NO_QUEUE. In both cases, the
>> allocated Qdisc structure gets it's enqueue function pointer reset to
>> NULL by noqueue_init() via noqueue_qdisc_ops.
>>
>> This is a common case for software virtual net_devices. For these devices
>> with no-queue, the transmission path in __dev_queue_xmit() will bypass
>> the qdisc layer. Directly invoking device drivers ndo_start_xmit (via
>> dev_hard_start_xmit). In this mode the device driver is not allowed to
>> ask for packets to be queued (either via returning NETDEV_TX_BUSY or
>> stopping the TXQ).
>>
>> The simplest and most reliable way to identify this no-queue case is by
>> checking if enqueue == NULL.
>>
>> The vrf driver currently open-codes this check (!qdisc->enqueue). While
>> functionally correct, this low-level detail is better encapsulated in a
>> dedicated helper for clarity and long-term maintainability.
>>
>> To make this behavior more explicit and reusable, this patch introduce a
>> new helper: qdisc_txq_has_no_queue(). Helper will also be used by the
>> veth driver in the next patch, which introduces optional qdisc-based
>> backpressure.
>>
>> This is a non-functional change.
>>
>> Signed-off-by: Jesper Dangaard Brouer <hawk@kernel.org>
>> ---
>> drivers/net/vrf.c | 4 +---
>> include/net/sch_generic.h | 8 ++++++++
>> 2 files changed, 9 insertions(+), 3 deletions(-)
>>
>
>
>> /* Local traffic destined to local address. Reinsert the packet to rx
>> diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
>> index d48c657191cd..b6c177f7141c 100644
>> --- a/include/net/sch_generic.h
>> +++ b/include/net/sch_generic.h
>> @@ -803,6 +803,14 @@ static inline bool qdisc_tx_changing(const struct net_device *dev)
>> return false;
>> }
>>
>> +/* "noqueue" qdisc identified by not having any enqueue, see noqueue_init() */
>> +static inline bool qdisc_txq_has_no_queue(const struct netdev_queue *txq)
>> +{
>> + struct Qdisc *qdisc = rcu_access_pointer(txq->qdisc);
>> +
>> + return qdisc->enqueue == NULL;
>
> Did checkpatch not complain that this should be '!qdisc->enqueue' ?
>
Nope:
./scripts/checkpatch.pl
patches-veth_pushback_to_qdisc03/01-0001-net-sched-generalize-noop.patch
total: 0 errors, 0 warnings, 30 lines checked
patches-veth_pushback_to_qdisc03/01-0001-net-sched-generalize-noop.patch
has no obvious style problems and is ready for submission.
>
> Reviewed-by: David Ahern <dsahern@kernel.org>
Thx for review :-)
--Jesper
next prev parent reply other threads:[~2025-04-15 16:30 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-15 13:44 [PATCH net-next V4 0/2] veth: qdisc backpressure and qdisc check refactor Jesper Dangaard Brouer
2025-04-15 13:44 ` [PATCH net-next V4 1/2] net: sched: generalize check for no-queue qdisc on TX queue Jesper Dangaard Brouer
2025-04-15 15:43 ` David Ahern
2025-04-15 16:30 ` Jesper Dangaard Brouer [this message]
2025-04-16 13:32 ` Toke Høiland-Jørgensen
2025-04-15 13:45 ` [PATCH net-next V4 2/2] veth: apply qdisc backpressure on full ptr_ring to reduce TX drops Jesper Dangaard Brouer
2025-04-16 12:44 ` Toshiaki Makita
2025-04-17 13:00 ` Jesper Dangaard Brouer
2025-04-16 13:38 ` Jakub Kicinski
2025-04-16 13:58 ` Toke Høiland-Jørgensen
2025-04-17 10:02 ` Jesper Dangaard Brouer
2025-04-16 13:56 ` Toke Høiland-Jørgensen
2025-04-17 9:32 ` Jesper Dangaard Brouer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a9af244c-37c5-460a-9128-c020173c591d@kernel.org \
--to=hawk@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=eric.dumazet@gmail.com \
--cc=kernel-team@cloudflare.com \
--cc=kuba@kernel.org \
--cc=makita.toshiaki@lab.ntt.co.jp \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=phil@nwl.cc \
--cc=toke@toke.dk \
--cc=tom@herbertland.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).