mirror of
				https://git.proxmox.com/git/mirror_iproute2
				synced 2025-11-04 02:56:43 +00:00 
			
		
		
		
	Add documentation for the latest options, flags and txtime-delay, to the taprio manpage. This also adds an example to run tc in txtime offload mode. Signed-off-by: Vedang Patel <vedang.patel@intel.com> Signed-off-by: David Ahern <dsahern@gmail.com>
		
			
				
	
	
		
			183 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			183 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.TH TAPRIO 8 "25 Sept 2018" "iproute2" "Linux"
 | 
						|
.SH NAME
 | 
						|
TAPRIO \- Time Aware Priority Shaper
 | 
						|
.SH SYNOPSIS
 | 
						|
.B tc qdisc ... dev
 | 
						|
dev
 | 
						|
.B parent
 | 
						|
classid
 | 
						|
.B [ handle
 | 
						|
major:
 | 
						|
.B ] taprio num_tc
 | 
						|
tcs
 | 
						|
.ti +8
 | 
						|
.B map
 | 
						|
P0 P1 P2 ...
 | 
						|
.B queues
 | 
						|
count1@offset1 count2@offset2 ...
 | 
						|
.ti +8
 | 
						|
.B base-time
 | 
						|
base-time
 | 
						|
.B clockid
 | 
						|
clockid
 | 
						|
.ti +8
 | 
						|
.B sched-entry
 | 
						|
<command 1> <gate mask 1> <interval 1>
 | 
						|
.ti +8
 | 
						|
.B sched-entry
 | 
						|
<command 2> <gate mask 2> <interval 2>
 | 
						|
.ti +8
 | 
						|
.B sched-entry
 | 
						|
<command 3> <gate mask 3> <interval 3>
 | 
						|
.ti +8
 | 
						|
.B sched-entry
 | 
						|
<command N> <gate mask N> <interval N>
 | 
						|
 | 
						|
.SH DESCRIPTION
 | 
						|
The TAPRIO qdisc implements a simplified version of the scheduling
 | 
						|
state machine defined by IEEE 802.1Q-2018 Section 8.6.9, which allows
 | 
						|
configuration of a sequence of gate states, where each gate state
 | 
						|
allows outgoing traffic for a subset (potentially empty) of traffic
 | 
						|
classes.
 | 
						|
 | 
						|
How traffic is mapped to different hardware queues is similar to
 | 
						|
.BR mqprio(8)
 | 
						|
and so the
 | 
						|
.B map
 | 
						|
and
 | 
						|
.B queues
 | 
						|
parameters have the same meaning.
 | 
						|
 | 
						|
The other parameters specify the schedule, and at what point in time
 | 
						|
it should start (it can behave as the schedule started in the past).
 | 
						|
 | 
						|
.SH PARAMETERS
 | 
						|
.TP
 | 
						|
num_tc
 | 
						|
.BR
 | 
						|
Number of traffic classes to use. Up to 16 classes supported.
 | 
						|
 | 
						|
.TP
 | 
						|
map
 | 
						|
.br
 | 
						|
The priority to traffic class map. Maps priorities 0..15 to a specified
 | 
						|
traffic class. See
 | 
						|
.BR mqprio(8)
 | 
						|
for more details.
 | 
						|
 | 
						|
.TP
 | 
						|
queues
 | 
						|
.br
 | 
						|
Provide count and offset of queue range for each traffic class. In the
 | 
						|
format,
 | 
						|
.B count@offset.
 | 
						|
Queue ranges for each traffic classes cannot overlap and must be a
 | 
						|
contiguous range of queues.
 | 
						|
 | 
						|
.TP
 | 
						|
base-time
 | 
						|
.br
 | 
						|
Specifies the instant in nanoseconds, using the reference of
 | 
						|
.B clockid,
 | 
						|
defining the time when the schedule starts. If 'base-time' is a time
 | 
						|
in the past, the schedule will start at
 | 
						|
 | 
						|
base-time + (N * cycle-time)
 | 
						|
 | 
						|
where N is the smallest integer so the resulting time is greater than
 | 
						|
"now", and "cycle-time" is the sum of all the intervals of the entries
 | 
						|
in the schedule;
 | 
						|
 | 
						|
.TP
 | 
						|
clockid
 | 
						|
.br
 | 
						|
Specifies the clock to be used by qdisc's internal timer for measuring
 | 
						|
time and scheduling events.
 | 
						|
 | 
						|
.TP
 | 
						|
sched-entry
 | 
						|
.br
 | 
						|
There may multiple
 | 
						|
.B sched-entry
 | 
						|
parameters in a single schedule. Each one has the
 | 
						|
 | 
						|
sched-entry <command> <gatemask> <interval>
 | 
						|
 | 
						|
format. The only supported <command> is "S", which
 | 
						|
means "SetGateStates", following the IEEE 802.1Q-2018 definition
 | 
						|
(Table 8-7). <gate mask> is a bitmask where each bit is a associated
 | 
						|
with a traffic class, so bit 0 (the least significant bit) being "on"
 | 
						|
means that traffic class 0 is "active" for that schedule entry.
 | 
						|
<interval> is a time duration, in nanoseconds, that specifies for how
 | 
						|
long that state defined by <command> and <gate mask> should be held
 | 
						|
before moving to the next entry.
 | 
						|
 | 
						|
.TP
 | 
						|
flags
 | 
						|
.br
 | 
						|
Specifies different modes for taprio. Currently, only txtime-assist is
 | 
						|
supported which can be enabled by setting it to 0x1. In this mode, taprio will
 | 
						|
set the transmit timestamp depending on the interval in which the packet needs
 | 
						|
to be transmitted. It will then utililize the
 | 
						|
.BR etf(8)
 | 
						|
qdisc to sort and transmit the packets at the right time. The second example
 | 
						|
can be used as a reference to configure this mode.
 | 
						|
 | 
						|
.TP
 | 
						|
txtime-delay
 | 
						|
.br
 | 
						|
This parameter is specific to the txtime offload mode. It specifies the maximum
 | 
						|
time a packet might take to reach the network card from the taprio qdisc. The
 | 
						|
value should always be greater than the delta specified in the
 | 
						|
.BR etf(8)
 | 
						|
qdisc.
 | 
						|
 | 
						|
.SH EXAMPLES
 | 
						|
 | 
						|
The following example shows how an traffic schedule with three traffic
 | 
						|
classes ("num_tc 3"), which are separated different traffic classes,
 | 
						|
we are going to call these TC 0, TC 1 and TC 2. We could read the
 | 
						|
"map" parameter below as: traffic with priority 3 is classified as TC
 | 
						|
0, priority 2 is classified as TC 1 and the rest is classified as TC
 | 
						|
2.
 | 
						|
 | 
						|
The schedule will start at instant 1528743495910289987 using the
 | 
						|
reference CLOCK_TAI. The schedule is composed of three entries each of
 | 
						|
300us duration.
 | 
						|
 | 
						|
.EX
 | 
						|
# 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@1 2@2 \\
 | 
						|
              base-time 1528743495910289987 \\
 | 
						|
              sched-entry S 01 300000 \\
 | 
						|
              sched-entry S 02 300000 \\
 | 
						|
              sched-entry S 04 300000 \\
 | 
						|
              clockid CLOCK_TAI
 | 
						|
.EE
 | 
						|
 | 
						|
Following is an example to enable the txtime offload mode in taprio. See
 | 
						|
.BR etf(8)
 | 
						|
for more information about configuring the ETF qdisc.
 | 
						|
 | 
						|
.EX
 | 
						|
# 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
 | 
						|
.EE
 | 
						|
 | 
						|
.SH AUTHORS
 | 
						|
Vinicius Costa Gomes <vinicius.gomes@intel.com>
 |