.. SPDX-License-Identifier: GPL-2.0
.. NOTE: This document was auto-generated.


===================================
Family ``tc`` netlink specification
===================================


.. contents:: :depth: 3


-------
Summary
-------


Netlink raw family for tc qdisc, chain, class and filter configuration over rtnetlink.

----------
Operations
----------


.. _tc-operation-newqdisc:

newqdisc
========
Create new tc qdisc.

:attribute-set: :ref:`tc-attribute-set-tc-attrs`
:fixed-header: :ref:`tc-definition-tcmsg`
:do:
    **request**
        :attributes: [``kind``, ``options``, ``rate``, ``chain``, ``ingress-block``, ``egress-block``]



.. _tc-operation-delqdisc:

delqdisc
========
Delete existing tc qdisc.

:attribute-set: :ref:`tc-attribute-set-tc-attrs`
:fixed-header: :ref:`tc-definition-tcmsg`
:do:
    **request**




.. _tc-operation-getqdisc:

getqdisc
========
Get / dump tc qdisc information.

:attribute-set: :ref:`tc-attribute-set-tc-attrs`
:fixed-header: :ref:`tc-definition-tcmsg`
:do:
    **request**
        :attributes: [``dump-invisible``]

    **reply**
        :attributes: [``kind``, ``options``, ``stats``, ``xstats``, ``rate``, ``fcnt``, ``stats2``, ``stab``, ``chain``, ``ingress-block``, ``egress-block``]



.. _tc-operation-newtclass:

newtclass
=========
Get / dump tc traffic class information.

:attribute-set: :ref:`tc-attribute-set-tc-attrs`
:fixed-header: :ref:`tc-definition-tcmsg`
:do:
    **request**
        :attributes: [``kind``, ``options``, ``rate``, ``chain``, ``ingress-block``, ``egress-block``]



.. _tc-operation-deltclass:

deltclass
=========
Get / dump tc traffic class information.

:attribute-set: :ref:`tc-attribute-set-tc-attrs`
:fixed-header: :ref:`tc-definition-tcmsg`
:do:
    **request**




.. _tc-operation-gettclass:

gettclass
=========
Get / dump tc traffic class information.

:attribute-set: :ref:`tc-attribute-set-tc-attrs`
:fixed-header: :ref:`tc-definition-tcmsg`
:do:
    **request**


    **reply**
        :attributes: [``kind``, ``options``, ``stats``, ``xstats``, ``rate``, ``fcnt``, ``stats2``, ``stab``, ``chain``, ``ingress-block``, ``egress-block``]



.. _tc-operation-newtfilter:

newtfilter
==========
Get / dump tc filter information.

:attribute-set: :ref:`tc-attribute-set-tc-attrs`
:fixed-header: :ref:`tc-definition-tcmsg`
:do:
    **request**
        :attributes: [``kind``, ``options``, ``rate``, ``chain``, ``ingress-block``, ``egress-block``]



.. _tc-operation-deltfilter:

deltfilter
==========
Get / dump tc filter information.

:attribute-set: :ref:`tc-attribute-set-tc-attrs`
:fixed-header: :ref:`tc-definition-tcmsg`
:do:
    **request**
        :attributes: [``chain``, ``kind``]



.. _tc-operation-gettfilter:

gettfilter
==========
Get / dump tc filter information.

:attribute-set: :ref:`tc-attribute-set-tc-attrs`
:fixed-header: :ref:`tc-definition-tcmsg`
:do:
    **request**
        :attributes: [``chain``, ``kind``]

    **reply**
        :attributes: [``kind``, ``options``, ``stats``, ``xstats``, ``rate``, ``fcnt``, ``stats2``, ``stab``, ``chain``, ``ingress-block``, ``egress-block``]

:dump:
    **request**
        :attributes: [``chain``, ``dump-flags``]

    **reply**
        :attributes: [``kind``, ``options``, ``stats``, ``xstats``, ``rate``, ``fcnt``, ``stats2``, ``stab``, ``chain``, ``ingress-block``, ``egress-block``]



.. _tc-operation-newchain:

newchain
========
Get / dump tc chain information.

:attribute-set: :ref:`tc-attribute-set-tc-attrs`
:fixed-header: :ref:`tc-definition-tcmsg`
:do:
    **request**
        :attributes: [``kind``, ``options``, ``rate``, ``chain``, ``ingress-block``, ``egress-block``]



.. _tc-operation-delchain:

delchain
========
Get / dump tc chain information.

:attribute-set: :ref:`tc-attribute-set-tc-attrs`
:fixed-header: :ref:`tc-definition-tcmsg`
:do:
    **request**
        :attributes: [``chain``]



.. _tc-operation-getchain:

getchain
========
Get / dump tc chain information.

:attribute-set: :ref:`tc-attribute-set-tc-attrs`
:fixed-header: :ref:`tc-definition-tcmsg`
:do:
    **request**
        :attributes: [``chain``]

    **reply**
        :attributes: [``kind``, ``options``, ``stats``, ``xstats``, ``rate``, ``fcnt``, ``stats2``, ``stab``, ``chain``, ``ingress-block``, ``egress-block``]




----------------
Multicast groups
----------------


- rtnlgrp-tc

-----------
Definitions
-----------


.. _tc-definition-tcmsg:

tcmsg
=====
:type: struct


:members:
    :family (``u8``): 
    :ifindex (``s32``): 
    :handle (``u32``): 
    :parent (``u32``): 
    :info (``u32``): 


.. _tc-definition-tc-cls-flags:

tc-cls-flags
============
:type: flags


:entries:
    - ``skip-hw``
    - ``skip-sw``
    - ``in-hw``
    - ``not-in-nw``
    - ``verbose``


.. _tc-definition-tc-flower-key-ctrl-flags:

tc-flower-key-ctrl-flags
========================
:type: flags


:entries:
    - ``frag``
    - ``firstfrag``
    - ``tuncsum``
    - ``tundf``
    - ``tunoam``
    - ``tuncrit``


.. _tc-definition-tc-stats:

tc-stats
========
:type: struct


:members:
    :bytes (``u64``): Number of enqueued bytes
    :packets (``u32``): Number of enqueued packets
    :drops (``u32``): Packets dropped because of lack of resources
    :overlimits (``u32``): Number of throttle events when this flow goes out of allocated bandwidth
    :bps (``u32``): Current flow byte rate
    :pps (``u32``): Current flow packet rate
    :qlen (``u32``): 
    :backlog (``u32``): 


.. _tc-definition-tc-cbs-qopt:

tc-cbs-qopt
===========
:type: struct


:members:
    :offload (``u8``): 
    :hicredit (``s32``): 
    :locredit (``s32``): 
    :idleslope (``s32``): 
    :sendslope (``s32``): 


.. _tc-definition-tc-etf-qopt:

tc-etf-qopt
===========
:type: struct


:members:
    :delta (``s32``): 
    :clockid (``s32``): 
    :flags (``s32``): 


.. _tc-definition-tc-fifo-qopt:

tc-fifo-qopt
============
:type: struct


:members:
    :limit (``u32``): Queue length; bytes for bfifo, packets for pfifo


.. _tc-definition-tc-htb-opt:

tc-htb-opt
==========
:type: struct


:members:
    :rate (``binary``): 
    :ceil (``binary``): 
    :buffer (``u32``): 
    :cbuffer (``u32``): 
    :quantum (``u32``): 
    :level (``u32``): 
    :prio (``u32``): 


.. _tc-definition-tc-htb-glob:

tc-htb-glob
===========
:type: struct


:members:
    :version (``u32``): 
    :rate2quantum (``u32``): bps->quantum divisor
    :defcls (``u32``): Default class number
    :debug (``u32``): Debug flags
    :direct-pkts (``u32``): Count of non shaped packets


.. _tc-definition-tc-gred-qopt:

tc-gred-qopt
============
:type: struct


:members:
    :limit (``u32``): HARD maximal queue length in bytes
    :qth-min (``u32``): Min average length threshold in bytes
    :qth-max (``u32``): Max average length threshold in bytes
    :DP (``u32``): Up to 2^32 DPs
    :backlog (``u32``): 
    :qave (``u32``): 
    :forced (``u32``): 
    :early (``u32``): 
    :other (``u32``): 
    :pdrop (``u32``): 
    :Wlog (``u8``): log(W)
    :Plog (``u8``): log(P_max / (qth-max - qth-min))
    :Scell_log (``u8``): cell size for idle damping
    :prio (``u8``): Priority of this VQ
    :packets (``u32``): 
    :bytesin (``u32``): 


.. _tc-definition-tc-gred-sopt:

tc-gred-sopt
============
:type: struct


:members:
    :DPs (``u32``): 
    :def_DP (``u32``): 
    :grio (``u8``): 
    :flags (``u8``): 


.. _tc-definition-tc-hfsc-qopt:

tc-hfsc-qopt
============
:type: struct


:members:
    :defcls (``u16``): 


.. _tc-definition-tc-mqprio-qopt:

tc-mqprio-qopt
==============
:type: struct


:members:
    :num-tc (``u8``): 
    :prio-tc-map (``binary``): 
    :hw (``u8``): 
    :count (``binary``): 
    :offset (``binary``): 


.. _tc-definition-tc-multiq-qopt:

tc-multiq-qopt
==============
:type: struct


:members:
    :bands (``u16``): Number of bands
    :max-bands (``u16``): Maximum number of queues


.. _tc-definition-tc-netem-qopt:

tc-netem-qopt
=============
:type: struct


:members:
    :latency (``u32``): Added delay in microseconds
    :limit (``u32``): Fifo limit in packets
    :loss (``u32``): Random packet loss (0=none, ~0=100%)
    :gap (``u32``): Re-ordering gap (0 for none)
    :duplicate (``u32``): Random packet duplication (0=none, ~0=100%)
    :jitter (``u32``): Random jitter latency in microseconds


.. _tc-definition-tc-netem-gimodel:

tc-netem-gimodel
================
:doc: State transition probabilities for 4 state model
:type: struct


:members:
    :p13 (``u32``): 
    :p31 (``u32``): 
    :p32 (``u32``): 
    :p14 (``u32``): 
    :p23 (``u32``): 


.. _tc-definition-tc-netem-gemodel:

tc-netem-gemodel
================
:doc: Gilbert-Elliot models
:type: struct


:members:
    :p (``u32``): 
    :r (``u32``): 
    :h (``u32``): 
    :k1 (``u32``): 


.. _tc-definition-tc-netem-corr:

tc-netem-corr
=============
:type: struct


:members:
    :delay-corr (``u32``): Delay correlation
    :loss-corr (``u32``): Packet loss correlation
    :dup-corr (``u32``): Duplicate correlation


.. _tc-definition-tc-netem-reorder:

tc-netem-reorder
================
:type: struct


:members:
    :probability (``u32``): 
    :correlation (``u32``): 


.. _tc-definition-tc-netem-corrupt:

tc-netem-corrupt
================
:type: struct


:members:
    :probability (``u32``): 
    :correlation (``u32``): 


.. _tc-definition-tc-netem-rate:

tc-netem-rate
=============
:type: struct


:members:
    :rate (``u32``): 
    :packet-overhead (``s32``): 
    :cell-size (``u32``): 
    :cell-overhead (``s32``): 


.. _tc-definition-tc-netem-slot:

tc-netem-slot
=============
:type: struct


:members:
    :min-delay (``s64``): 
    :max-delay (``s64``): 
    :max-packets (``s32``): 
    :max-bytes (``s32``): 
    :dist-delay (``s64``): 
    :dist-jitter (``s64``): 


.. _tc-definition-tc-plug-qopt:

tc-plug-qopt
============
:type: struct


:members:
    :action (``s32``): 
    :limit (``u32``): 


.. _tc-definition-tc-prio-qopt:

tc-prio-qopt
============
:type: struct


:members:
    :bands (``u32``): Number of bands
    :priomap (``binary``): Map of logical priority -> PRIO band


.. _tc-definition-tc-red-qopt:

tc-red-qopt
===========
:type: struct


:members:
    :limit (``u32``): Hard queue length in packets
    :qth-min (``u32``): Min average threshold in packets
    :qth-max (``u32``): Max average threshold in packets
    :Wlog (``u8``): log(W)
    :Plog (``u8``): log(P_max / (qth-max - qth-min))
    :Scell-log (``u8``): Cell size for idle damping
    :flags (``u8``): 


.. _tc-definition-tc-sfb-qopt:

tc-sfb-qopt
===========
:type: struct


:members:
    :rehash-interval (``u32``): 
    :warmup-time (``u32``): 
    :max (``u32``): 
    :bin-size (``u32``): 
    :increment (``u32``): 
    :decrement (``u32``): 
    :limit (``u32``): 
    :penalty-rate (``u32``): 
    :penalty-burst (``u32``): 


.. _tc-definition-tc-sfq-qopt:

tc-sfq-qopt
===========
:type: struct


:members:
    :quantum (``u32``): Bytes per round allocated to flow
    :perturb-period (``s32``): Period of hash perturbation
    :limit (``u32``): Maximal packets in queue
    :divisor (``u32``): Hash divisor
    :flows (``u32``): Maximal number of flows


.. _tc-definition-tc-sfqred-stats:

tc-sfqred-stats
===============
:type: struct


:members:
    :prob-drop (``u32``): Early drops, below max threshold
    :forced-drop (``u32``): Early drops, after max threshold
    :prob-mark (``u32``): Marked packets, below max threshold
    :forced-mark (``u32``): Marked packets, after max threshold
    :prob-mark-head (``u32``): Marked packets, below max threshold
    :forced-mark-head (``u32``): Marked packets, after max threshold


.. _tc-definition-tc-sfq-qopt-v1:

tc-sfq-qopt-v1
==============
:type: struct


:members:
    :v0 (``binary``): 
    :depth (``u32``): Maximum number of packets per flow
    :headdrop (``u32``): 
    :limit (``u32``): HARD maximal flow queue length in bytes
    :qth-min (``u32``): Min average length threshold in bytes
    :qth-max (``u32``): Max average length threshold in bytes
    :Wlog (``u8``): log(W)
    :Plog (``u8``): log(P_max / (qth-max - qth-min))
    :Scell-log (``u8``): Cell size for idle damping
    :flags (``u8``): 
    :max-P (``u32``): probabilty, high resolution
    :stats (``binary``): 


.. _tc-definition-tc-ratespec:

tc-ratespec
===========
:type: struct


:members:
    :cell-log (``u8``): 
    :linklayer (``u8``): 
    :overhead (``u8``): 
    :cell-align (``u8``): 
    :mpu (``u8``): 
    :rate (``u32``): 


.. _tc-definition-tc-tbf-qopt:

tc-tbf-qopt
===========
:type: struct


:members:
    :rate (``binary``): 
    :peakrate (``binary``): 
    :limit (``u32``): 
    :buffer (``u32``): 
    :mtu (``u32``): 


.. _tc-definition-tc-sizespec:

tc-sizespec
===========
:type: struct


:members:
    :cell-log (``u8``): 
    :size-log (``u8``): 
    :cell-align (``s16``): 
    :overhead (``s32``): 
    :linklayer (``u32``): 
    :mpu (``u32``): 
    :mtu (``u32``): 
    :tsize (``u32``): 


.. _tc-definition-gnet-estimator:

gnet-estimator
==============
:type: struct


:members:
    :interval (``s8``): Sampling period
    :ewma-log (``u8``): The log() of measurement window weight


.. _tc-definition-tc-choke-xstats:

tc-choke-xstats
===============
:type: struct


:members:
    :early (``u32``): Early drops
    :pdrop (``u32``): Drops due to queue limits
    :other (``u32``): Drops due to drop() calls
    :marked (``u32``): Marked packets
    :matched (``u32``): Drops due to flow match


.. _tc-definition-tc-codel-xstats:

tc-codel-xstats
===============
:type: struct


:members:
    :maxpacket (``u32``): Largest packet we've seen so far
    :count (``u32``): How many drops we've done since the last time we entered dropping state
    :lastcount (``u32``): Count at entry to dropping state
    :ldelay (``u32``): in-queue delay seen by most recently dequeued packet
    :drop-next (``s32``): Time to drop next packet
    :drop-overlimit (``u32``): Number of times max qdisc packet limit was hit
    :ecn-mark (``u32``): Number of packets we've ECN marked instead of dropped
    :dropping (``u32``): Are we in a dropping state?
    :ce-mark (``u32``): Number of CE marked packets because of ce-threshold


.. _tc-definition-tc-fq-codel-xstats:

tc-fq-codel-xstats
==================
:type: struct


:members:
    :type (``u32``): 
    :maxpacket (``u32``): Largest packet we've seen so far
    :drop-overlimit (``u32``): Number of times max qdisc packet limit was hit
    :ecn-mark (``u32``): Number of packets we ECN marked instead of being dropped
    :new-flow-count (``u32``): Number of times packets created a new flow
    :new-flows-len (``u32``): Count of flows in new list
    :old-flows-len (``u32``): Count of flows in old list
    :ce-mark (``u32``): Packets above ce-threshold
    :memory-usage (``u32``): Memory usage in bytes
    :drop-overmemory (``u32``): 


.. _tc-definition-tc-fq-pie-xstats:

tc-fq-pie-xstats
================
:type: struct


:members:
    :packets-in (``u32``): Total number of packets enqueued
    :dropped (``u32``): Packets dropped due to fq_pie_action
    :overlimit (``u32``): Dropped due to lack of space in queue
    :overmemory (``u32``): Dropped due to lack of memory in queue
    :ecn-mark (``u32``): Packets marked with ecn
    :new-flow-count (``u32``): Count of new flows created by packets
    :new-flows-len (``u32``): Count of flows in new list
    :old-flows-len (``u32``): Count of flows in old list
    :memory-usage (``u32``): Total memory across all queues


.. _tc-definition-tc-fq-qd-stats:

tc-fq-qd-stats
==============
:type: struct


:members:
    :gc-flows (``u64``): 
    :highprio-packets (``u64``): obsolete
    :tcp-retrans (``u64``): obsolete
    :throttled (``u64``): 
    :flows-plimit (``u64``): 
    :pkts-too-long (``u64``): 
    :allocation-errors (``u64``): 
    :time-next-delayed-flow (``s64``): 
    :flows (``u32``): 
    :inactive-flows (``u32``): 
    :throttled-flows (``u32``): 
    :unthrottle-latency-ns (``u32``): 
    :ce-mark (``u64``): Packets above ce-threshold
    :horizon-drops (``u64``): 
    :horizon-caps (``u64``): 
    :fastpath-packets (``u64``): 
    :band-drops (``binary``): 
    :band-pkt-count (``binary``): 


.. _tc-definition-tc-hhf-xstats:

tc-hhf-xstats
=============
:type: struct


:members:
    :drop-overlimit (``u32``): Number of times max qdisc packet limit was hit
    :hh-overlimit (``u32``): Number of times max heavy-hitters was hit
    :hh-tot-count (``u32``): Number of captured heavy-hitters so far
    :hh-cur-count (``u32``): Number of current heavy-hitters


.. _tc-definition-tc-pie-xstats:

tc-pie-xstats
=============
:type: struct


:members:
    :prob (``u64``): Current probability
    :delay (``u32``): Current delay in ms
    :avg-dq-rate (``u32``): Current average dq rate in bits/pie-time
    :dq-rate-estimating (``u32``): Is avg-dq-rate being calculated?
    :packets-in (``u32``): Total number of packets enqueued
    :dropped (``u32``): Packets dropped due to pie action
    :overlimit (``u32``): Dropped due to lack of space in queue
    :maxq (``u32``): Maximum queue size
    :ecn-mark (``u32``): Packets marked with ecn


.. _tc-definition-tc-red-xstats:

tc-red-xstats
=============
:type: struct


:members:
    :early (``u32``): Early drops
    :pdrop (``u32``): Drops due to queue limits
    :other (``u32``): Drops due to drop() calls
    :marked (``u32``): Marked packets


.. _tc-definition-tc-sfb-xstats:

tc-sfb-xstats
=============
:type: struct


:members:
    :earlydrop (``u32``): 
    :penaltydrop (``u32``): 
    :bucketdrop (``u32``): 
    :queuedrop (``u32``): 
    :childdrop (``u32``): drops in child qdisc
    :marked (``u32``): 
    :maxqlen (``u32``): 
    :maxprob (``u32``): 
    :avgprob (``u32``): 


.. _tc-definition-tc-sfq-xstats:

tc-sfq-xstats
=============
:type: struct


:members:
    :allot (``s32``): 


.. _tc-definition-gnet-stats-basic:

gnet-stats-basic
================
:type: struct


:members:
    :bytes (``u64``): 
    :packets (``u32``): 


.. _tc-definition-gnet-stats-rate-est:

gnet-stats-rate-est
===================
:type: struct


:members:
    :bps (``u32``): 
    :pps (``u32``): 


.. _tc-definition-gnet-stats-rate-est64:

gnet-stats-rate-est64
=====================
:type: struct


:members:
    :bps (``u64``): 
    :pps (``u64``): 


.. _tc-definition-gnet-stats-queue:

gnet-stats-queue
================
:type: struct


:members:
    :qlen (``u32``): 
    :backlog (``u32``): 
    :drops (``u32``): 
    :requeues (``u32``): 
    :overlimits (``u32``): 


.. _tc-definition-tc-u32-key:

tc-u32-key
==========
:type: struct


:members:
    :mask (``u32``): 
    :val (``u32``): 
    :off (``s32``): 
    :offmask (``s32``): 


.. _tc-definition-tc-u32-mark:

tc-u32-mark
===========
:type: struct


:members:
    :val (``u32``): 
    :mask (``u32``): 
    :success (``u32``): 


.. _tc-definition-tc-u32-sel:

tc-u32-sel
==========
:type: struct


:members:
    :flags (``u8``): 
    :offshift (``u8``): 
    :nkeys (``u8``): 
    :offmask (``u16``): 
    :off (``u16``): 
    :offoff (``s16``): 
    :hoff (``s16``): 
    :hmask (``u32``): 
    :keys (``binary``): 


.. _tc-definition-tc-u32-pcnt:

tc-u32-pcnt
===========
:type: struct


:members:
    :rcnt (``u64``): 
    :rhit (``u64``): 
    :kcnts (``u64``): 


.. _tc-definition-tcf-t:

tcf-t
=====
:type: struct


:members:
    :install (``u64``): 
    :lastuse (``u64``): 
    :expires (``u64``): 
    :firstuse (``u64``): 


.. _tc-definition-tc-gen:

tc-gen
======
:type: struct


:members:
    :index (``u32``): 
    :capab (``u32``): 
    :action (``s32``): 
    :refcnt (``s32``): 
    :bindcnt (``s32``): 


.. _tc-definition-tc-gact-p:

tc-gact-p
=========
:type: struct


:members:
    :ptype (``u16``): 
    :pval (``u16``): 
    :paction (``s32``): 


.. _tc-definition-tcf-ematch-tree-hdr:

tcf-ematch-tree-hdr
===================
:type: struct


:members:
    :nmatches (``u16``): 
    :progid (``u16``): 


.. _tc-definition-tc-basic-pcnt:

tc-basic-pcnt
=============
:type: struct


:members:
    :rcnt (``u64``): 
    :rhit (``u64``): 


.. _tc-definition-tc-matchall-pcnt:

tc-matchall-pcnt
================
:type: struct


:members:
    :rhit (``u64``): 


.. _tc-definition-tc-mpls:

tc-mpls
=======
:type: struct


:members:
    :index (``u32``): 
    :capab (``u32``): 
    :action (``s32``): 
    :refcnt (``s32``): 
    :bindcnt (``s32``): 
    :m-action (``s32``): 


.. _tc-definition-tc-police:

tc-police
=========
:type: struct


:members:
    :index (``u32``): 
    :action (``s32``): 
    :limit (``u32``): 
    :burst (``u32``): 
    :mtu (``u32``): 
    :rate (``binary``): 
    :peakrate (``binary``): 
    :refcnt (``s32``): 
    :bindcnt (``s32``): 
    :capab (``u32``): 


.. _tc-definition-tc-pedit-sel:

tc-pedit-sel
============
:type: struct


:members:
    :index (``u32``): 
    :capab (``u32``): 
    :action (``s32``): 
    :refcnt (``s32``): 
    :bindcnt (``s32``): 
    :nkeys (``u8``): 
    :flags (``u8``): 
    :keys (``binary``): 


.. _tc-definition-tc-pedit-key:

tc-pedit-key
============
:type: struct


:members:
    :mask (``u32``): 
    :val (``u32``): 
    :off (``u32``): 
    :at (``u32``): 
    :offmask (``u32``): 
    :shift (``u32``): 


.. _tc-definition-tc-vlan:

tc-vlan
=======
:type: struct


:members:
    :index (``u32``): 
    :capab (``u32``): 
    :action (``s32``): 
    :refcnt (``s32``): 
    :bindcnt (``s32``): 
    :v-action (``s32``): 



--------------
Attribute sets
--------------


.. _tc-attribute-set-tc-attrs:

tc-attrs
========
kind (``string``)
~~~~~~~~~~~~~~~~~


options (``sub-message``)
~~~~~~~~~~~~~~~~~~~~~~~~~
:sub-message: :ref:`tc-sub-message-tc-options-msg`
:selector: kind


stats (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-stats`


xstats (``sub-message``)
~~~~~~~~~~~~~~~~~~~~~~~~
:sub-message: :ref:`tc-sub-message-tca-stats-app-msg`
:selector: kind


rate (``binary``)
~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-gnet-estimator`


fcnt (``u32``)
~~~~~~~~~~~~~~


stats2 (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tca-stats-attrs`


stab (``nest``)
~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tca-stab-attrs`


pad (``pad``)
~~~~~~~~~~~~~


dump-invisible (``flag``)
~~~~~~~~~~~~~~~~~~~~~~~~~


chain (``u32``)
~~~~~~~~~~~~~~~


hw-offload (``u8``)
~~~~~~~~~~~~~~~~~~~


ingress-block (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


egress-block (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


dump-flags (``bitfield32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


ext-warn-msg (``string``)
~~~~~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-attrs:

tc-act-attrs
============
kind (``string``)
~~~~~~~~~~~~~~~~~


options (``sub-message``)
~~~~~~~~~~~~~~~~~~~~~~~~~
:sub-message: :ref:`tc-sub-message-tc-act-options-msg`
:selector: kind


index (``u32``)
~~~~~~~~~~~~~~~


stats (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-act-stats-attrs`


pad (``pad``)
~~~~~~~~~~~~~


cookie (``binary``)
~~~~~~~~~~~~~~~~~~~


flags (``bitfield32``)
~~~~~~~~~~~~~~~~~~~~~~


hw-stats (``bitfield32``)
~~~~~~~~~~~~~~~~~~~~~~~~~


used-hw-stats (``bitfield32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


in-hw-count (``u32``)
~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-stats-attrs:

tc-act-stats-attrs
==================
basic (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-gnet-stats-basic`


rate-est (``binary``)
~~~~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-gnet-stats-rate-est`


queue (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-gnet-stats-queue`


app (``binary``)
~~~~~~~~~~~~~~~~


rate-est64 (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-gnet-stats-rate-est64`


pad (``pad``)
~~~~~~~~~~~~~


basic-hw (``binary``)
~~~~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-gnet-stats-basic`


pkt64 (``u64``)
~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-bpf-attrs:

tc-act-bpf-attrs
================
tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


parms (``binary``)
~~~~~~~~~~~~~~~~~~


ops-len (``u16``)
~~~~~~~~~~~~~~~~~


ops (``binary``)
~~~~~~~~~~~~~~~~


fd (``u32``)
~~~~~~~~~~~~


name (``string``)
~~~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


tag (``binary``)
~~~~~~~~~~~~~~~~


id (``binary``)
~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-connmark-attrs:

tc-act-connmark-attrs
=====================
parms (``binary``)
~~~~~~~~~~~~~~~~~~


tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


pad (``pad``)
~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-csum-attrs:

tc-act-csum-attrs
=================
parms (``binary``)
~~~~~~~~~~~~~~~~~~


tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


pad (``pad``)
~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-ct-attrs:

tc-act-ct-attrs
===============
parms (``binary``)
~~~~~~~~~~~~~~~~~~


tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


action (``u16``)
~~~~~~~~~~~~~~~~


zone (``u16``)
~~~~~~~~~~~~~~


mark (``u32``)
~~~~~~~~~~~~~~


mark-mask (``u32``)
~~~~~~~~~~~~~~~~~~~


labels (``binary``)
~~~~~~~~~~~~~~~~~~~


labels-mask (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~


nat-ipv4-min (``u32``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


nat-ipv4-max (``u32``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


nat-ipv6-min (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~


nat-ipv6-max (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~


nat-port-min (``u16``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


nat-port-max (``u16``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


pad (``pad``)
~~~~~~~~~~~~~


helper-name (``string``)
~~~~~~~~~~~~~~~~~~~~~~~~


helper-family (``u8``)
~~~~~~~~~~~~~~~~~~~~~~


helper-proto (``u8``)
~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-ctinfo-attrs:

tc-act-ctinfo-attrs
===================
pad (``pad``)
~~~~~~~~~~~~~


tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


act (``binary``)
~~~~~~~~~~~~~~~~


zone (``u16``)
~~~~~~~~~~~~~~


parms-dscp-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~


parms-dscp-statemask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


parms-cpmark-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


stats-dscp-set (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~


stats-dscp-error (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


stats-cpmark-set (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-gate-attrs:

tc-act-gate-attrs
=================
tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


parms (``binary``)
~~~~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


priority (``s32``)
~~~~~~~~~~~~~~~~~~


entry-list (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~


base-time (``u64``)
~~~~~~~~~~~~~~~~~~~


cycle-time (``u64``)
~~~~~~~~~~~~~~~~~~~~


cycle-time-ext (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~


flags (``u32``)
~~~~~~~~~~~~~~~


clockid (``s32``)
~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-ife-attrs:

tc-act-ife-attrs
================
parms (``binary``)
~~~~~~~~~~~~~~~~~~


tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


dmac (``binary``)
~~~~~~~~~~~~~~~~~


smac (``binary``)
~~~~~~~~~~~~~~~~~


type (``u16``)
~~~~~~~~~~~~~~


metalst (``binary``)
~~~~~~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-mirred-attrs:

tc-act-mirred-attrs
===================
tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


parms (``binary``)
~~~~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


blockid (``binary``)
~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-mpls-attrs:

tc-act-mpls-attrs
=================
tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


parms (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-mpls`


pad (``pad``)
~~~~~~~~~~~~~


proto (``u16``)
~~~~~~~~~~~~~~~
:byte-order: big-endian


label (``u32``)
~~~~~~~~~~~~~~~


tc (``u8``)
~~~~~~~~~~~


ttl (``u8``)
~~~~~~~~~~~~


bos (``u8``)
~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-nat-attrs:

tc-act-nat-attrs
================
parms (``binary``)
~~~~~~~~~~~~~~~~~~


tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


pad (``pad``)
~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-pedit-attrs:

tc-act-pedit-attrs
==================
tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


parms (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-pedit-sel`


pad (``pad``)
~~~~~~~~~~~~~


parms-ex (``binary``)
~~~~~~~~~~~~~~~~~~~~~


keys-ex (``binary``)
~~~~~~~~~~~~~~~~~~~~


key-ex (``binary``)
~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-police-attrs:

tc-act-police-attrs
===================
tbf (``binary``)
~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-police`


rate (``binary``)
~~~~~~~~~~~~~~~~~


peakrate (``binary``)
~~~~~~~~~~~~~~~~~~~~~


avrate (``u32``)
~~~~~~~~~~~~~~~~


result (``u32``)
~~~~~~~~~~~~~~~~


tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


pad (``pad``)
~~~~~~~~~~~~~


rate64 (``u64``)
~~~~~~~~~~~~~~~~


peakrate64 (``u64``)
~~~~~~~~~~~~~~~~~~~~


pktrate64 (``u64``)
~~~~~~~~~~~~~~~~~~~


pktburst64 (``u64``)
~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-simple-attrs:

tc-act-simple-attrs
===================
tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


parms (``binary``)
~~~~~~~~~~~~~~~~~~


data (``binary``)
~~~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-skbedit-attrs:

tc-act-skbedit-attrs
====================
tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


parms (``binary``)
~~~~~~~~~~~~~~~~~~


priority (``u32``)
~~~~~~~~~~~~~~~~~~


queue-mapping (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~


mark (``u32``)
~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


ptype (``u16``)
~~~~~~~~~~~~~~~


mask (``u32``)
~~~~~~~~~~~~~~


flags (``u64``)
~~~~~~~~~~~~~~~


queue-mapping-max (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-skbmod-attrs:

tc-act-skbmod-attrs
===================
tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


parms (``binary``)
~~~~~~~~~~~~~~~~~~


dmac (``binary``)
~~~~~~~~~~~~~~~~~


smac (``binary``)
~~~~~~~~~~~~~~~~~


etype (``binary``)
~~~~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-tunnel-key-attrs:

tc-act-tunnel-key-attrs
=======================
tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


parms (``binary``)
~~~~~~~~~~~~~~~~~~


enc-ipv4-src (``u32``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


enc-ipv4-dst (``u32``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


enc-ipv6-src (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~


enc-ipv6-dst (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~


enc-key-id (``u64``)
~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


pad (``pad``)
~~~~~~~~~~~~~


enc-dst-port (``u16``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


no-csum (``u8``)
~~~~~~~~~~~~~~~~


enc-opts (``binary``)
~~~~~~~~~~~~~~~~~~~~~


enc-tos (``u8``)
~~~~~~~~~~~~~~~~


enc-ttl (``u8``)
~~~~~~~~~~~~~~~~


no-frag (``flag``)
~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-vlan-attrs:

tc-act-vlan-attrs
=================
tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


parms (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-vlan`


push-vlan-id (``u16``)
~~~~~~~~~~~~~~~~~~~~~~


push-vlan-protocol (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


push-vlan-priority (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


push-eth-dst (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~


push-eth-src (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-basic-attrs:

tc-basic-attrs
==============
classid (``u32``)
~~~~~~~~~~~~~~~~~


ematches (``nest``)
~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-ematch-attrs`


act (``indexed-array``)
~~~~~~~~~~~~~~~~~~~~~~~
:sub-type: nest
:nested-attributes: :ref:`tc-attribute-set-tc-act-attrs`


police (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-police-attrs`


pcnt (``binary``)
~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-basic-pcnt`


pad (``pad``)
~~~~~~~~~~~~~


.. _tc-attribute-set-tc-bpf-attrs:

tc-bpf-attrs
============
act (``nest``)
~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-act-attrs`


police (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-police-attrs`


classid (``u32``)
~~~~~~~~~~~~~~~~~


ops-len (``u16``)
~~~~~~~~~~~~~~~~~


ops (``binary``)
~~~~~~~~~~~~~~~~


fd (``u32``)
~~~~~~~~~~~~


name (``string``)
~~~~~~~~~~~~~~~~~


flags (``u32``)
~~~~~~~~~~~~~~~


flags-gen (``u32``)
~~~~~~~~~~~~~~~~~~~


tag (``binary``)
~~~~~~~~~~~~~~~~


id (``u32``)
~~~~~~~~~~~~


.. _tc-attribute-set-tc-cake-attrs:

tc-cake-attrs
=============
pad (``pad``)
~~~~~~~~~~~~~


base-rate64 (``u64``)
~~~~~~~~~~~~~~~~~~~~~


diffserv-mode (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


atm (``u32``)
~~~~~~~~~~~~~


flow-mode (``u32``)
~~~~~~~~~~~~~~~~~~~


overhead (``u32``)
~~~~~~~~~~~~~~~~~~


rtt (``u32``)
~~~~~~~~~~~~~


target (``u32``)
~~~~~~~~~~~~~~~~


autorate (``u32``)
~~~~~~~~~~~~~~~~~~


memory (``u32``)
~~~~~~~~~~~~~~~~


nat (``u32``)
~~~~~~~~~~~~~


raw (``u32``)
~~~~~~~~~~~~~


wash (``u32``)
~~~~~~~~~~~~~~


mpu (``u32``)
~~~~~~~~~~~~~


ingress (``u32``)
~~~~~~~~~~~~~~~~~


ack-filter (``u32``)
~~~~~~~~~~~~~~~~~~~~


split-gso (``u32``)
~~~~~~~~~~~~~~~~~~~


fwmark (``u32``)
~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-cake-stats-attrs:

tc-cake-stats-attrs
===================
pad (``pad``)
~~~~~~~~~~~~~


capacity-estimate64 (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


memory-limit (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


memory-used (``u32``)
~~~~~~~~~~~~~~~~~~~~~


avg-netoff (``u32``)
~~~~~~~~~~~~~~~~~~~~


min-netlen (``u32``)
~~~~~~~~~~~~~~~~~~~~


max-netlen (``u32``)
~~~~~~~~~~~~~~~~~~~~


min-adjlen (``u32``)
~~~~~~~~~~~~~~~~~~~~


max-adjlen (``u32``)
~~~~~~~~~~~~~~~~~~~~


tin-stats (``indexed-array``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:sub-type: nest
:nested-attributes: :ref:`tc-attribute-set-tc-cake-tin-stats-attrs`


deficit (``s32``)
~~~~~~~~~~~~~~~~~


cobalt-count (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


dropping (``u32``)
~~~~~~~~~~~~~~~~~~


drop-next-us (``s32``)
~~~~~~~~~~~~~~~~~~~~~~


p-drop (``u32``)
~~~~~~~~~~~~~~~~


blue-timer-us (``s32``)
~~~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-cake-tin-stats-attrs:

tc-cake-tin-stats-attrs
=======================
pad (``pad``)
~~~~~~~~~~~~~


sent-packets (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


sent-bytes64 (``u64``)
~~~~~~~~~~~~~~~~~~~~~~


dropped-packets (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~


dropped-bytes64 (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~~


acks-dropped-packets (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


acks-dropped-bytes64 (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


ecn-marked-packets (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~


ecn-marked-bytes64 (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~


backlog-packets (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~


backlog-bytes (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


threshold-rate64 (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


target-us (``u32``)
~~~~~~~~~~~~~~~~~~~


interval-us (``u32``)
~~~~~~~~~~~~~~~~~~~~~


way-indirect-hits (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


way-misses (``u32``)
~~~~~~~~~~~~~~~~~~~~


way-collisions (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~


peak-delay-us (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


avg-delay-us (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


base-delay-us (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


sparse-flows (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


bulk-flows (``u32``)
~~~~~~~~~~~~~~~~~~~~


unresponsive-flows (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~


max-skblen (``u32``)
~~~~~~~~~~~~~~~~~~~~


flow-quantum (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-cbs-attrs:

tc-cbs-attrs
============
parms (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-cbs-qopt`


.. _tc-attribute-set-tc-cgroup-attrs:

tc-cgroup-attrs
===============
act (``nest``)
~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-act-attrs`


police (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-police-attrs`


ematches (``binary``)
~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-choke-attrs:

tc-choke-attrs
==============
parms (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-red-qopt`


stab (``binary``)
~~~~~~~~~~~~~~~~~


max-p (``u32``)
~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-codel-attrs:

tc-codel-attrs
==============
target (``u32``)
~~~~~~~~~~~~~~~~


limit (``u32``)
~~~~~~~~~~~~~~~


interval (``u32``)
~~~~~~~~~~~~~~~~~~


ecn (``u32``)
~~~~~~~~~~~~~


ce-threshold (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-drr-attrs:

tc-drr-attrs
============
quantum (``u32``)
~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-ematch-attrs:

tc-ematch-attrs
===============
tree-hdr (``binary``)
~~~~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-ematch-tree-hdr`


tree-list (``binary``)
~~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-flow-attrs:

tc-flow-attrs
=============
keys (``u32``)
~~~~~~~~~~~~~~


mode (``u32``)
~~~~~~~~~~~~~~


baseclass (``u32``)
~~~~~~~~~~~~~~~~~~~


rshift (``u32``)
~~~~~~~~~~~~~~~~


addend (``u32``)
~~~~~~~~~~~~~~~~


mask (``u32``)
~~~~~~~~~~~~~~


xor (``u32``)
~~~~~~~~~~~~~


divisor (``u32``)
~~~~~~~~~~~~~~~~~


act (``binary``)
~~~~~~~~~~~~~~~~


police (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-police-attrs`


ematches (``binary``)
~~~~~~~~~~~~~~~~~~~~~


perturb (``u32``)
~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-flower-attrs:

tc-flower-attrs
===============
classid (``u32``)
~~~~~~~~~~~~~~~~~


indev (``string``)
~~~~~~~~~~~~~~~~~~


act (``indexed-array``)
~~~~~~~~~~~~~~~~~~~~~~~
:sub-type: nest
:nested-attributes: :ref:`tc-attribute-set-tc-act-attrs`


key-eth-dst (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: mac


key-eth-dst-mask (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: mac


key-eth-src (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: mac


key-eth-src-mask (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: mac


key-eth-type (``u16``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-ip-proto (``u8``)
~~~~~~~~~~~~~~~~~~~~~


key-ipv4-src (``u32``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian
:display-hint: ipv4


key-ipv4-src-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian
:display-hint: ipv4


key-ipv4-dst (``u32``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian
:display-hint: ipv4


key-ipv4-dst-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian
:display-hint: ipv4


key-ipv6-src (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: ipv6


key-ipv6-src-mask (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: ipv6


key-ipv6-dst (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: ipv6


key-ipv6-dst-mask (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: ipv6


key-tcp-src (``u16``)
~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-tcp-dst (``u16``)
~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-udp-src (``u16``)
~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-udp-dst (``u16``)
~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


flags (``u32``)
~~~~~~~~~~~~~~~
:enum: :ref:`tc-definition-tc-cls-flags`
:enum-as-flags: True


key-vlan-id (``u16``)
~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-vlan-prio (``u8``)
~~~~~~~~~~~~~~~~~~~~~~


key-vlan-eth-type (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-enc-key-id (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-enc-ipv4-src (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian
:display-hint: ipv4


key-enc-ipv4-src-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian
:display-hint: ipv4


key-enc-ipv4-dst (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian
:display-hint: ipv4


key-enc-ipv4-dst-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian
:display-hint: ipv4


key-enc-ipv6-src (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: ipv6


key-enc-ipv6-src-mask (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: ipv6


key-enc-ipv6-dst (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: ipv6


key-enc-ipv6-dst-mask (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: ipv6


key-tcp-src-mask (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-tcp-dst-mask (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-udp-src-mask (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-udp-dst-mask (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-sctp-src-mask (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-sctp-dst-mask (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-sctp-src (``u16``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-sctp-dst (``u16``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-enc-udp-src-port (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-enc-udp-src-port-mask (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-enc-udp-dst-port (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-enc-udp-dst-port-mask (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-flags (``u32``)
~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian
:enum: :ref:`tc-definition-tc-flower-key-ctrl-flags`
:enum-as-flags: True


key-flags-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian
:enum: :ref:`tc-definition-tc-flower-key-ctrl-flags`
:enum-as-flags: True


key-icmpv4-code (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~


key-icmpv4-code-mask (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


key-icmpv4-type (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~


key-icmpv4-type-mask (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


key-icmpv6-code (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~


key-icmpv6-code-mask (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


key-icmpv6-type (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~


key-icmpv6-type-mask (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


key-arp-sip (``u32``)
~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-arp-sip-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-arp-tip (``u32``)
~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-arp-tip-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-arp-op (``u8``)
~~~~~~~~~~~~~~~~~~~


key-arp-op-mask (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~


key-arp-sha (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: mac


key-arp-sha-mask (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: mac


key-arp-tha (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: mac


key-arp-tha-mask (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:display-hint: mac


key-mpls-ttl (``u8``)
~~~~~~~~~~~~~~~~~~~~~


key-mpls-bos (``u8``)
~~~~~~~~~~~~~~~~~~~~~


key-mpls-tc (``u8``)
~~~~~~~~~~~~~~~~~~~~


key-mpls-label (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-tcp-flags (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-tcp-flags-mask (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-ip-tos (``u8``)
~~~~~~~~~~~~~~~~~~~


key-ip-tos-mask (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~


key-ip-ttl (``u8``)
~~~~~~~~~~~~~~~~~~~


key-ip-ttl-mask (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~


key-cvlan-id (``u16``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-cvlan-prio (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~


key-cvlan-eth-type (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-enc-ip-tos (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~


key-enc-ip-tos-mask (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~


key-enc-ip-ttl (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~


key-enc-ip-ttl-mask (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~


key-enc-opts (``nest``)
~~~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-flower-key-enc-opts-attrs`


key-enc-opts-mask (``nest``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-flower-key-enc-opts-attrs`


in-hw-count (``u32``)
~~~~~~~~~~~~~~~~~~~~~


key-port-src-min (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-port-src-max (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-port-dst-min (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-port-dst-max (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-ct-state (``u16``)
~~~~~~~~~~~~~~~~~~~~~~


key-ct-state-mask (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


key-ct-zone (``u16``)
~~~~~~~~~~~~~~~~~~~~~


key-ct-zone-mask (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


key-ct-mark (``u32``)
~~~~~~~~~~~~~~~~~~~~~


key-ct-mark-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


key-ct-labels (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


key-ct-labels-mask (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


key-mpls-opts (``nest``)
~~~~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-flower-key-mpls-opt-attrs`


key-hash (``u32``)
~~~~~~~~~~~~~~~~~~


key-hash-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


key-num-of-vlans (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~~


key-pppoe-sid (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-ppp-proto (``u16``)
~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-l2-tpv3-sid (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


l2-miss (``u8``)
~~~~~~~~~~~~~~~~


key-cfm (``nest``)
~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-flower-key-cfm-attrs`


key-spi (``u32``)
~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-spi-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian


key-enc-flags (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian
:enum: :ref:`tc-definition-tc-flower-key-ctrl-flags`
:enum-as-flags: True


key-enc-flags-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:byte-order: big-endian
:enum: :ref:`tc-definition-tc-flower-key-ctrl-flags`
:enum-as-flags: True


.. _tc-attribute-set-tc-flower-key-enc-opts-attrs:

tc-flower-key-enc-opts-attrs
============================
geneve (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-flower-key-enc-opt-geneve-attrs`


vxlan (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-flower-key-enc-opt-vxlan-attrs`


erspan (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-flower-key-enc-opt-erspan-attrs`


gtp (``nest``)
~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-flower-key-enc-opt-gtp-attrs`


.. _tc-attribute-set-tc-flower-key-enc-opt-geneve-attrs:

tc-flower-key-enc-opt-geneve-attrs
==================================
class (``u16``)
~~~~~~~~~~~~~~~


type (``u8``)
~~~~~~~~~~~~~


data (``binary``)
~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-flower-key-enc-opt-vxlan-attrs:

tc-flower-key-enc-opt-vxlan-attrs
=================================
gbp (``u32``)
~~~~~~~~~~~~~


.. _tc-attribute-set-tc-flower-key-enc-opt-erspan-attrs:

tc-flower-key-enc-opt-erspan-attrs
==================================
ver (``u8``)
~~~~~~~~~~~~


index (``u32``)
~~~~~~~~~~~~~~~


dir (``u8``)
~~~~~~~~~~~~


hwid (``u8``)
~~~~~~~~~~~~~


.. _tc-attribute-set-tc-flower-key-enc-opt-gtp-attrs:

tc-flower-key-enc-opt-gtp-attrs
===============================
pdu-type (``u8``)
~~~~~~~~~~~~~~~~~


qfi (``u8``)
~~~~~~~~~~~~


.. _tc-attribute-set-tc-flower-key-mpls-opt-attrs:

tc-flower-key-mpls-opt-attrs
============================
lse-depth (``u8``)
~~~~~~~~~~~~~~~~~~


lse-ttl (``u8``)
~~~~~~~~~~~~~~~~


lse-bos (``u8``)
~~~~~~~~~~~~~~~~


lse-tc (``u8``)
~~~~~~~~~~~~~~~


lse-label (``u32``)
~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-flower-key-cfm-attrs:

tc-flower-key-cfm-attrs
=======================
md-level (``u8``)
~~~~~~~~~~~~~~~~~


opcode (``u8``)
~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-fw-attrs:

tc-fw-attrs
===========
classid (``u32``)
~~~~~~~~~~~~~~~~~


police (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-police-attrs`


indev (``string``)
~~~~~~~~~~~~~~~~~~


act (``indexed-array``)
~~~~~~~~~~~~~~~~~~~~~~~
:sub-type: nest
:nested-attributes: :ref:`tc-attribute-set-tc-act-attrs`


mask (``u32``)
~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-gred-attrs:

tc-gred-attrs
=============
parms (``binary``)
~~~~~~~~~~~~~~~~~~


stab (``binary``)
~~~~~~~~~~~~~~~~~
:sub-type: u8


dps (``binary``)
~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-gred-sopt`


max-p (``binary``)
~~~~~~~~~~~~~~~~~~
:sub-type: u32


limit (``u32``)
~~~~~~~~~~~~~~~


vq-list (``nest``)
~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tca-gred-vq-list-attrs`


.. _tc-attribute-set-tca-gred-vq-list-attrs:

tca-gred-vq-list-attrs
======================
entry (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tca-gred-vq-entry-attrs`
:multi-attr: True


.. _tc-attribute-set-tca-gred-vq-entry-attrs:

tca-gred-vq-entry-attrs
=======================
pad (``pad``)
~~~~~~~~~~~~~


dp (``u32``)
~~~~~~~~~~~~


stat-bytes (``u64``)
~~~~~~~~~~~~~~~~~~~~


stat-packets (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


stat-backlog (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


stat-prob-drop (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~


stat-prob-mark (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~


stat-forced-drop (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


stat-forced-mark (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


stat-pdrop (``u32``)
~~~~~~~~~~~~~~~~~~~~


stat-other (``u32``)
~~~~~~~~~~~~~~~~~~~~


flags (``u32``)
~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-hfsc-attrs:

tc-hfsc-attrs
=============
rsc (``binary``)
~~~~~~~~~~~~~~~~


fsc (``binary``)
~~~~~~~~~~~~~~~~


usc (``binary``)
~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-hhf-attrs:

tc-hhf-attrs
============
backlog-limit (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


quantum (``u32``)
~~~~~~~~~~~~~~~~~


hh-flows-limit (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~


reset-timeout (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


admit-bytes (``u32``)
~~~~~~~~~~~~~~~~~~~~~


evict-timeout (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


non-hh-weight (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-htb-attrs:

tc-htb-attrs
============
parms (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-htb-opt`


init (``binary``)
~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-htb-glob`


ctab (``binary``)
~~~~~~~~~~~~~~~~~


rtab (``binary``)
~~~~~~~~~~~~~~~~~


direct-qlen (``u32``)
~~~~~~~~~~~~~~~~~~~~~


rate64 (``u64``)
~~~~~~~~~~~~~~~~


ceil64 (``u64``)
~~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


offload (``flag``)
~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-matchall-attrs:

tc-matchall-attrs
=================
classid (``u32``)
~~~~~~~~~~~~~~~~~


act (``indexed-array``)
~~~~~~~~~~~~~~~~~~~~~~~
:sub-type: nest
:nested-attributes: :ref:`tc-attribute-set-tc-act-attrs`


flags (``u32``)
~~~~~~~~~~~~~~~


pcnt (``binary``)
~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-matchall-pcnt`


pad (``pad``)
~~~~~~~~~~~~~


.. _tc-attribute-set-tc-etf-attrs:

tc-etf-attrs
============
parms (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-etf-qopt`


.. _tc-attribute-set-tc-ets-attrs:

tc-ets-attrs
============
nbands (``u8``)
~~~~~~~~~~~~~~~


nstrict (``u8``)
~~~~~~~~~~~~~~~~


quanta (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-ets-attrs`


quanta-band (``u32``)
~~~~~~~~~~~~~~~~~~~~~
:multi-attr: True


priomap (``nest``)
~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-ets-attrs`


priomap-band (``u8``)
~~~~~~~~~~~~~~~~~~~~~
:multi-attr: True


.. _tc-attribute-set-tc-fq-attrs:

tc-fq-attrs
===========
plimit (``u32``)
~~~~~~~~~~~~~~~~
:doc: Limit of total number of packets in queue


flow-plimit (``u32``)
~~~~~~~~~~~~~~~~~~~~~
:doc: Limit of packets per flow


quantum (``u32``)
~~~~~~~~~~~~~~~~~
:doc: RR quantum


initial-quantum (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~
:doc: RR quantum for new flow


rate-enable (``u32``)
~~~~~~~~~~~~~~~~~~~~~
:doc: Enable / disable rate limiting


flow-default-rate (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:doc: Obsolete, do not use


flow-max-rate (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~
:doc: Per flow max rate


buckets-log (``u32``)
~~~~~~~~~~~~~~~~~~~~~
:doc: log2(number of buckets)


flow-refill-delay (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:doc: Flow credit refill delay in usec


orphan-mask (``u32``)
~~~~~~~~~~~~~~~~~~~~~
:doc: Mask applied to orphaned skb hashes


low-rate-threshold (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:doc: Per packet delay under this rate


ce-threshold (``u32``)
~~~~~~~~~~~~~~~~~~~~~~
:doc: DCTCP-like CE marking threshold


timer-slack (``u32``)
~~~~~~~~~~~~~~~~~~~~~


horizon (``u32``)
~~~~~~~~~~~~~~~~~
:doc: Time horizon in usec


horizon-drop (``u8``)
~~~~~~~~~~~~~~~~~~~~~
:doc: Drop packets beyond horizon, or cap their EDT


priomap (``binary``)
~~~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-prio-qopt`


weights (``binary``)
~~~~~~~~~~~~~~~~~~~~
:sub-type: s32
:doc: Weights for each band


.. _tc-attribute-set-tc-fq-codel-attrs:

tc-fq-codel-attrs
=================
target (``u32``)
~~~~~~~~~~~~~~~~


limit (``u32``)
~~~~~~~~~~~~~~~


interval (``u32``)
~~~~~~~~~~~~~~~~~~


ecn (``u32``)
~~~~~~~~~~~~~


flows (``u32``)
~~~~~~~~~~~~~~~


quantum (``u32``)
~~~~~~~~~~~~~~~~~


ce-threshold (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


drop-batch-size (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~


memory-limit (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


ce-threshold-selector (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


ce-threshold-mask (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-fq-pie-attrs:

tc-fq-pie-attrs
===============
limit (``u32``)
~~~~~~~~~~~~~~~


flows (``u32``)
~~~~~~~~~~~~~~~


target (``u32``)
~~~~~~~~~~~~~~~~


tupdate (``u32``)
~~~~~~~~~~~~~~~~~


alpha (``u32``)
~~~~~~~~~~~~~~~


beta (``u32``)
~~~~~~~~~~~~~~


quantum (``u32``)
~~~~~~~~~~~~~~~~~


memory-limit (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


ecn-prob (``u32``)
~~~~~~~~~~~~~~~~~~


ecn (``u32``)
~~~~~~~~~~~~~


bytemode (``u32``)
~~~~~~~~~~~~~~~~~~


dq-rate-estimator (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-netem-attrs:

tc-netem-attrs
==============
corr (``binary``)
~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-netem-corr`


delay-dist (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~
:sub-type: s16


reorder (``binary``)
~~~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-netem-reorder`


corrupt (``binary``)
~~~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-netem-corrupt`


loss (``nest``)
~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-netem-loss-attrs`


rate (``binary``)
~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-netem-rate`


ecn (``u32``)
~~~~~~~~~~~~~


rate64 (``u64``)
~~~~~~~~~~~~~~~~


pad (``u32``)
~~~~~~~~~~~~~


latency64 (``s64``)
~~~~~~~~~~~~~~~~~~~


jitter64 (``s64``)
~~~~~~~~~~~~~~~~~~


slot (``binary``)
~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-netem-slot`


slot-dist (``binary``)
~~~~~~~~~~~~~~~~~~~~~~
:sub-type: s16


prng-seed (``u64``)
~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-netem-loss-attrs:

tc-netem-loss-attrs
===================
gi (``binary``)
~~~~~~~~~~~~~~~
:doc: General Intuitive - 4 state model
:struct: :ref:`tc-definition-tc-netem-gimodel`


ge (``binary``)
~~~~~~~~~~~~~~~
:doc: Gilbert Elliot models
:struct: :ref:`tc-definition-tc-netem-gemodel`


.. _tc-attribute-set-tc-pie-attrs:

tc-pie-attrs
============
target (``u32``)
~~~~~~~~~~~~~~~~


limit (``u32``)
~~~~~~~~~~~~~~~


tupdate (``u32``)
~~~~~~~~~~~~~~~~~


alpha (``u32``)
~~~~~~~~~~~~~~~


beta (``u32``)
~~~~~~~~~~~~~~


ecn (``u32``)
~~~~~~~~~~~~~


bytemode (``u32``)
~~~~~~~~~~~~~~~~~~


dq-rate-estimator (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-police-attrs:

tc-police-attrs
===============
tbf (``binary``)
~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-police`


rate (``binary``)
~~~~~~~~~~~~~~~~~


peakrate (``binary``)
~~~~~~~~~~~~~~~~~~~~~


avrate (``u32``)
~~~~~~~~~~~~~~~~


result (``u32``)
~~~~~~~~~~~~~~~~


tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


pad (``pad``)
~~~~~~~~~~~~~


rate64 (``u64``)
~~~~~~~~~~~~~~~~


peakrate64 (``u64``)
~~~~~~~~~~~~~~~~~~~~


pktrate64 (``u64``)
~~~~~~~~~~~~~~~~~~~


pktburst64 (``u64``)
~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-qfq-attrs:

tc-qfq-attrs
============
weight (``u32``)
~~~~~~~~~~~~~~~~


lmax (``u32``)
~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-red-attrs:

tc-red-attrs
============
parms (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-red-qopt`


stab (``binary``)
~~~~~~~~~~~~~~~~~


max-p (``u32``)
~~~~~~~~~~~~~~~


flags (``bitfield32``)
~~~~~~~~~~~~~~~~~~~~~~


early-drop-block (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


mark-block (``u32``)
~~~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-route-attrs:

tc-route-attrs
==============
classid (``u32``)
~~~~~~~~~~~~~~~~~


to (``u32``)
~~~~~~~~~~~~


from (``u32``)
~~~~~~~~~~~~~~


iif (``u32``)
~~~~~~~~~~~~~


police (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-police-attrs`


act (``indexed-array``)
~~~~~~~~~~~~~~~~~~~~~~~
:sub-type: nest
:nested-attributes: :ref:`tc-attribute-set-tc-act-attrs`


.. _tc-attribute-set-tc-taprio-attrs:

tc-taprio-attrs
===============
priomap (``binary``)
~~~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-mqprio-qopt`


sched-entry-list (``nest``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-taprio-sched-entry-list`


sched-base-time (``s64``)
~~~~~~~~~~~~~~~~~~~~~~~~~


sched-single-entry (``nest``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-taprio-sched-entry`


sched-clockid (``s32``)
~~~~~~~~~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


admin-sched (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~~


sched-cycle-time (``s64``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


sched-cycle-time-extension (``s64``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


flags (``u32``)
~~~~~~~~~~~~~~~


txtime-delay (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


tc-entry (``nest``)
~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-taprio-tc-entry-attrs`


.. _tc-attribute-set-tc-taprio-sched-entry-list:

tc-taprio-sched-entry-list
==========================
entry (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-taprio-sched-entry`
:multi-attr: True


.. _tc-attribute-set-tc-taprio-sched-entry:

tc-taprio-sched-entry
=====================
index (``u32``)
~~~~~~~~~~~~~~~


cmd (``u8``)
~~~~~~~~~~~~


gate-mask (``u32``)
~~~~~~~~~~~~~~~~~~~


interval (``u32``)
~~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-taprio-tc-entry-attrs:

tc-taprio-tc-entry-attrs
========================
index (``u32``)
~~~~~~~~~~~~~~~


max-sdu (``u32``)
~~~~~~~~~~~~~~~~~


fp (``u32``)
~~~~~~~~~~~~


.. _tc-attribute-set-tc-tbf-attrs:

tc-tbf-attrs
============
parms (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-tbf-qopt`


rtab (``binary``)
~~~~~~~~~~~~~~~~~


ptab (``binary``)
~~~~~~~~~~~~~~~~~


rate64 (``u64``)
~~~~~~~~~~~~~~~~


prate4 (``u64``)
~~~~~~~~~~~~~~~~


burst (``u32``)
~~~~~~~~~~~~~~~


pburst (``u32``)
~~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-sample-attrs:

tc-act-sample-attrs
===================
tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


parms (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-gen`


rate (``u32``)
~~~~~~~~~~~~~~


trunc-size (``u32``)
~~~~~~~~~~~~~~~~~~~~


psample-group (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~


.. _tc-attribute-set-tc-act-gact-attrs:

tc-act-gact-attrs
=================
tm (``binary``)
~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tcf-t`


parms (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-gen`


prob (``binary``)
~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-gact-p`


pad (``pad``)
~~~~~~~~~~~~~


.. _tc-attribute-set-tca-stab-attrs:

tca-stab-attrs
==============
base (``binary``)
~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-sizespec`


data (``binary``)
~~~~~~~~~~~~~~~~~


.. _tc-attribute-set-tca-stats-attrs:

tca-stats-attrs
===============
basic (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-gnet-stats-basic`


rate-est (``binary``)
~~~~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-gnet-stats-rate-est`


queue (``binary``)
~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-gnet-stats-queue`


app (``sub-message``)
~~~~~~~~~~~~~~~~~~~~~
:sub-message: :ref:`tc-sub-message-tca-stats-app-msg`
:selector: kind


rate-est64 (``binary``)
~~~~~~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-gnet-stats-rate-est64`


pad (``pad``)
~~~~~~~~~~~~~


basic-hw (``binary``)
~~~~~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-gnet-stats-basic`


pkt64 (``u64``)
~~~~~~~~~~~~~~~


.. _tc-attribute-set-tc-u32-attrs:

tc-u32-attrs
============
classid (``u32``)
~~~~~~~~~~~~~~~~~


hash (``u32``)
~~~~~~~~~~~~~~


link (``u32``)
~~~~~~~~~~~~~~


divisor (``u32``)
~~~~~~~~~~~~~~~~~


sel (``binary``)
~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-u32-sel`


police (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`tc-attribute-set-tc-police-attrs`


act (``indexed-array``)
~~~~~~~~~~~~~~~~~~~~~~~
:sub-type: nest
:nested-attributes: :ref:`tc-attribute-set-tc-act-attrs`


indev (``string``)
~~~~~~~~~~~~~~~~~~


pcnt (``binary``)
~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-u32-pcnt`


mark (``binary``)
~~~~~~~~~~~~~~~~~
:struct: :ref:`tc-definition-tc-u32-mark`


flags (``u32``)
~~~~~~~~~~~~~~~


pad (``pad``)
~~~~~~~~~~~~~



------------
Sub-messages
------------


.. _tc-sub-message-tc-options-msg:

tc-options-msg
==============
- **basic**
    :attribute-set: :ref:`tc-attribute-set-tc-basic-attrs`


- **bpf**
    :attribute-set: :ref:`tc-attribute-set-tc-bpf-attrs`


- **bfifo**
    :fixed-header: :ref:`tc-definition-tc-fifo-qopt`


- **cake**
    :attribute-set: :ref:`tc-attribute-set-tc-cake-attrs`


- **cbs**
    :attribute-set: :ref:`tc-attribute-set-tc-cbs-attrs`


- **cgroup**
    :attribute-set: :ref:`tc-attribute-set-tc-cgroup-attrs`


- **choke**
    :attribute-set: :ref:`tc-attribute-set-tc-choke-attrs`


- **clsact**


- **codel**
    :attribute-set: :ref:`tc-attribute-set-tc-codel-attrs`


- **drr**
    :attribute-set: :ref:`tc-attribute-set-tc-drr-attrs`


- **etf**
    :attribute-set: :ref:`tc-attribute-set-tc-etf-attrs`


- **ets**
    :attribute-set: :ref:`tc-attribute-set-tc-ets-attrs`


- **flow**
    :attribute-set: :ref:`tc-attribute-set-tc-flow-attrs`


- **flower**
    :attribute-set: :ref:`tc-attribute-set-tc-flower-attrs`


- **fq**
    :attribute-set: :ref:`tc-attribute-set-tc-fq-attrs`


- **fq_codel**
    :attribute-set: :ref:`tc-attribute-set-tc-fq-codel-attrs`


- **fq_pie**
    :attribute-set: :ref:`tc-attribute-set-tc-fq-pie-attrs`


- **fw**
    :attribute-set: :ref:`tc-attribute-set-tc-fw-attrs`


- **gred**
    :attribute-set: :ref:`tc-attribute-set-tc-gred-attrs`


- **hfsc**
    :fixed-header: :ref:`tc-definition-tc-hfsc-qopt`


- **hhf**
    :attribute-set: :ref:`tc-attribute-set-tc-hhf-attrs`


- **htb**
    :attribute-set: :ref:`tc-attribute-set-tc-htb-attrs`


- **ingress**


- **matchall**
    :attribute-set: :ref:`tc-attribute-set-tc-matchall-attrs`


- **mq**


- **mqprio**
    :fixed-header: :ref:`tc-definition-tc-mqprio-qopt`


- **multiq**
    :fixed-header: :ref:`tc-definition-tc-multiq-qopt`


- **netem**
    :fixed-header: :ref:`tc-definition-tc-netem-qopt`
    :attribute-set: :ref:`tc-attribute-set-tc-netem-attrs`


- **pfifo**
    :fixed-header: :ref:`tc-definition-tc-fifo-qopt`


- **pfifo_fast**
    :fixed-header: :ref:`tc-definition-tc-prio-qopt`


- **pfifo_head_drop**
    :fixed-header: :ref:`tc-definition-tc-fifo-qopt`


- **pie**
    :attribute-set: :ref:`tc-attribute-set-tc-pie-attrs`


- **plug**
    :fixed-header: :ref:`tc-definition-tc-plug-qopt`


- **prio**
    :fixed-header: :ref:`tc-definition-tc-prio-qopt`


- **qfq**
    :attribute-set: :ref:`tc-attribute-set-tc-qfq-attrs`


- **red**
    :attribute-set: :ref:`tc-attribute-set-tc-red-attrs`


- **route**
    :attribute-set: :ref:`tc-attribute-set-tc-route-attrs`


- **sfb**
    :fixed-header: :ref:`tc-definition-tc-sfb-qopt`


- **sfq**
    :fixed-header: :ref:`tc-definition-tc-sfq-qopt-v1`


- **taprio**
    :attribute-set: :ref:`tc-attribute-set-tc-taprio-attrs`


- **tbf**
    :attribute-set: :ref:`tc-attribute-set-tc-tbf-attrs`


- **u32**
    :attribute-set: :ref:`tc-attribute-set-tc-u32-attrs`


.. _tc-sub-message-tc-act-options-msg:

tc-act-options-msg
==================
- **bpf**
    :attribute-set: :ref:`tc-attribute-set-tc-act-bpf-attrs`


- **connmark**
    :attribute-set: :ref:`tc-attribute-set-tc-act-connmark-attrs`


- **csum**
    :attribute-set: :ref:`tc-attribute-set-tc-act-csum-attrs`


- **ct**
    :attribute-set: :ref:`tc-attribute-set-tc-act-ct-attrs`


- **ctinfo**
    :attribute-set: :ref:`tc-attribute-set-tc-act-ctinfo-attrs`


- **gact**
    :attribute-set: :ref:`tc-attribute-set-tc-act-gact-attrs`


- **gate**
    :attribute-set: :ref:`tc-attribute-set-tc-act-gate-attrs`


- **ife**
    :attribute-set: :ref:`tc-attribute-set-tc-act-ife-attrs`


- **mirred**
    :attribute-set: :ref:`tc-attribute-set-tc-act-mirred-attrs`


- **mpls**
    :attribute-set: :ref:`tc-attribute-set-tc-act-mpls-attrs`


- **nat**
    :attribute-set: :ref:`tc-attribute-set-tc-act-nat-attrs`


- **pedit**
    :attribute-set: :ref:`tc-attribute-set-tc-act-pedit-attrs`


- **police**
    :attribute-set: :ref:`tc-attribute-set-tc-act-police-attrs`


- **sample**
    :attribute-set: :ref:`tc-attribute-set-tc-act-sample-attrs`


- **simple**
    :attribute-set: :ref:`tc-attribute-set-tc-act-simple-attrs`


- **skbedit**
    :attribute-set: :ref:`tc-attribute-set-tc-act-skbedit-attrs`


- **skbmod**
    :attribute-set: :ref:`tc-attribute-set-tc-act-skbmod-attrs`


- **tunnel_key**
    :attribute-set: :ref:`tc-attribute-set-tc-act-tunnel-key-attrs`


- **vlan**
    :attribute-set: :ref:`tc-attribute-set-tc-act-vlan-attrs`


.. _tc-sub-message-tca-stats-app-msg:

tca-stats-app-msg
=================
- **cake**
    :attribute-set: :ref:`tc-attribute-set-tc-cake-stats-attrs`


- **choke**
    :fixed-header: :ref:`tc-definition-tc-choke-xstats`


- **codel**
    :fixed-header: :ref:`tc-definition-tc-codel-xstats`


- **fq**
    :fixed-header: :ref:`tc-definition-tc-fq-qd-stats`


- **fq_codel**
    :fixed-header: :ref:`tc-definition-tc-fq-codel-xstats`


- **fq_pie**
    :fixed-header: :ref:`tc-definition-tc-fq-pie-xstats`


- **hhf**
    :fixed-header: :ref:`tc-definition-tc-hhf-xstats`


- **pie**
    :fixed-header: :ref:`tc-definition-tc-pie-xstats`


- **red**
    :fixed-header: :ref:`tc-definition-tc-red-xstats`


- **sfb**
    :fixed-header: :ref:`tc-definition-tc-sfb-xstats`


- **sfq**
    :fixed-header: :ref:`tc-definition-tc-sfq-xstats`