Provided by: iproute2_5.5.0-1ubuntu1_amd64 bug

NAME

       TAPRIO - Time Aware Priority Shaper

SYNOPSIS

       tc qdisc ... dev dev parent classid [ handle major: ] taprio num_tc tcs
               map P0 P1 P2 ...  queues count1@offset1 count2@offset2 ...
               base-time base-time clockid clockid
               sched-entry <command 1> <gate mask 1> <interval 1>
               sched-entry <command 2> <gate mask 2> <interval 2>
               sched-entry <command 3> <gate mask 3> <interval 3>
               sched-entry <command N> <gate mask N> <interval N>

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 mqprio(8) and so the  map
       and 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).

PARAMETERS

       num_tc  Number of traffic classes to use. Up to 16 classes supported.

       map
              The priority to traffic class map. Maps priorities 0..15  to  a  specified  traffic
              class. See mqprio(8) for more details.

       queues
              Provide  count  and  offset  of  queue range for each traffic class. In the format,
              count@offset.  Queue ranges for each traffic classes cannot overlap and must  be  a
              contiguous range of queues.

       base-time
              Specifies  the instant in nanoseconds, using the reference of 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;

       clockid
              Specifies the clock to be used by qdisc's internal timer  for  measuring  time  and
              scheduling events.

       sched-entry
              There may multiple 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.

       flags
              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 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.

       txtime-delay
              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 etf(8) qdisc.

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.

       # 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

       Following is an example to enable the txtime offload mode in taprio. See etf(8)  for  more
       information about configuring the ETF qdisc.

       # 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

AUTHORS

       Vinicius Costa Gomes <vinicius.gomes@intel.com>