Subject: Re: linux manual question consultation

From: Vinicius Costa Gomes <[email-masked]>
Date: Tue, 05 Jul 2022 15:45:17 -0700

Hi,

"Ascend~" <[email-masked]> writes:

> Hello, I am studying the linux manual, and I don't understand something, I don't know if it is written wrong, can you provide a little help? Questions are as follows:
> URL:https://www.mankier.com/8/tc-taprio
> I see "the txtime offload mode in taprio" gives an example like this:
>
>  # tc qdisc replace dev eth0 parent root handle 100 taprio \                      num_tc 3 \                      map 2 2 1 0 2 2 2 2 2 2 2 2 2 2 2 2 \                      queues 1@0 1@0 1@0 \                      base-time 1528743495910289987 \                      sched-entry S 01 300000 \                      sched-entry S 02 300000 \                      sched-entry S 04 400000 \                      flags 0x1 \                      txtime-delay 200000 \                      clockid CLOCK_TAI        # tc qdisc replace dev $IFACE parent 100:1 etf skip_skb_check \                      offload delta 200000 clockid CLOCK_TAI
>
> Why is count@offset written as queues 1@0 1@0 1@0 here?

A bit of background, txtime assisted mode is an implementation of the
enhancements for scheduled traffic state machines from IEEE 802.1Q-2018
using the "LaunchTime" (be able to specify a "precise" transmission time
of a packet) feature, using the ETF qdisc.

The current implementation has a limitation in the sense that it is only
able to use a single HW transmission queue, that's why, all traffic is
directed to a single HW queue.

> Is it mapping all traffic traffic types to queue 0?

Yes.

> If it is understood, is it meaningless to set "sched-entry"? If it is
> not understood this way, can you help me explain it? Thank you very
> much!

It's not meaningless, the traffic scheduling is done in terms of
"traffic classes" (the bit mask in 'sched-entry' are in reference to
traffic classes), "only" when sending packets down to the driver/NIC
that we use a single queue.

Note that this limitation is not a "hard" one, it most probably can be
solved with some time and better data structures in the taprio side.

Hope this answers your questions.

Cheers,
-- 
Vinicius