Re: [PATCH RESEND net-next 0/5] Improve the taprio qdisc's relationship with its children

From: Jamal Hadi Salim
Date: Mon Jun 05 2023 - 11:46:31 EST


On Fri, Jun 2, 2023 at 6:38 AM Vladimir Oltean <vladimir.oltean@xxxxxxx> wrote:
>
> [ Original patch set was lost due to an apparent transient problem with
> kernel.org's DNSBL setup. This is an identical resend. ]
>
> Prompted by Vinicius' request to consolidate some child Qdisc
> dereferences in taprio:
> https://lore.kernel.org/netdev/87edmxv7x2.fsf@xxxxxxxxx/
>
> I remembered that I had left some unfinished work in this Qdisc, namely
> commit af7b29b1deaa ("Revert "net/sched: taprio: make qdisc_leaf() see
> the per-netdev-queue pfifo child qdiscs"").
>
> This patch set represents another stab at, essentially, what's in the
> title. Not only does taprio not properly detect when it's grafted as a
> non-root qdisc, but it also returns incorrect per-class stats.
> Eventually, Vinicius' request is addressed too, although in a different
> form than the one he requested (which was purely cosmetic).
>
> Review from people more experienced with Qdiscs than me would be
> appreciated. I tried my best to explain what I consider to be problems.

I havent been following - but if you show me sample intended tc
configs for both s/w and hardware offloads i can comment.

In my cursory look i assumed you wanted to go along the path of mqprio
where nothing much happens in the s/w datapath other than requeues
when the tx hardware path is busy (notice it is missing an
enqueue/deque ops). In that case the hardware selection is essentially
of a DMA ring based on skb tags. It seems you took it up a notch by
infact having a choice of whether to have pure s/w or offload path.

cheers,
jamal
> I am deliberately targeting net-next because the changes are too
> invasive for net - they were reverted from stable once already.
>
> Vladimir Oltean (5):
> net/sched: taprio: don't access q->qdiscs[] in unoffloaded mode during
> attach()
> net/sched: taprio: keep child Qdisc refcount elevated at 2 in offload
> mode
> net/sched: taprio: try again to report q->qdiscs[] to qdisc_leaf()
> net/sched: taprio: delete misleading comment about preallocating child
> qdiscs
> net/sched: taprio: dump class stats for the actual q->qdiscs[]
>
> net/sched/sch_taprio.c | 60 ++++++++++++++++++++++++------------------
> 1 file changed, 35 insertions(+), 25 deletions(-)
>
> --
> 2.34.1
>