Home | History | Annotate | Download | only in linux
      1 /****************************************************************************
      2  ****************************************************************************
      3  ***
      4  ***   This header was automatically generated from a Linux kernel header
      5  ***   of the same name, to make information necessary for userspace to
      6  ***   call into the kernel available to libc.  It contains only constants,
      7  ***   structures, and macros generated from the original header, and thus,
      8  ***   contains no copyrightable information.
      9  ***
     10  ***   To edit the content of this header, modify the corresponding
     11  ***   source file (e.g. under external/kernel-headers/original/) then
     12  ***   run bionic/libc/kernel/tools/update_all.py
     13  ***
     14  ***   Any manual change here will be lost the next time this script will
     15  ***   be run. You've been warned!
     16  ***
     17  ****************************************************************************
     18  ****************************************************************************/
     19 #ifndef __LINUX_PKT_SCHED_H
     20 #define __LINUX_PKT_SCHED_H
     21 #include <linux/types.h>
     22 #define TC_PRIO_BESTEFFORT 0
     23 #define TC_PRIO_FILLER 1
     24 #define TC_PRIO_BULK 2
     25 #define TC_PRIO_INTERACTIVE_BULK 4
     26 #define TC_PRIO_INTERACTIVE 6
     27 #define TC_PRIO_CONTROL 7
     28 #define TC_PRIO_MAX 15
     29 struct tc_stats {
     30   __u64 bytes;
     31   __u32 packets;
     32   __u32 drops;
     33   __u32 overlimits;
     34   __u32 bps;
     35   __u32 pps;
     36   __u32 qlen;
     37   __u32 backlog;
     38 };
     39 struct tc_estimator {
     40   signed char interval;
     41   unsigned char ewma_log;
     42 };
     43 #define TC_H_MAJ_MASK (0xFFFF0000U)
     44 #define TC_H_MIN_MASK (0x0000FFFFU)
     45 #define TC_H_MAJ(h) ((h) & TC_H_MAJ_MASK)
     46 #define TC_H_MIN(h) ((h) & TC_H_MIN_MASK)
     47 #define TC_H_MAKE(maj,min) (((maj) & TC_H_MAJ_MASK) | ((min) & TC_H_MIN_MASK))
     48 #define TC_H_UNSPEC (0U)
     49 #define TC_H_ROOT (0xFFFFFFFFU)
     50 #define TC_H_INGRESS (0xFFFFFFF1U)
     51 #define TC_H_CLSACT TC_H_INGRESS
     52 #define TC_H_MIN_PRIORITY 0xFFE0U
     53 #define TC_H_MIN_INGRESS 0xFFF2U
     54 #define TC_H_MIN_EGRESS 0xFFF3U
     55 enum tc_link_layer {
     56   TC_LINKLAYER_UNAWARE,
     57   TC_LINKLAYER_ETHERNET,
     58   TC_LINKLAYER_ATM,
     59 };
     60 #define TC_LINKLAYER_MASK 0x0F
     61 struct tc_ratespec {
     62   unsigned char cell_log;
     63   __u8 linklayer;
     64   unsigned short overhead;
     65   short cell_align;
     66   unsigned short mpu;
     67   __u32 rate;
     68 };
     69 #define TC_RTAB_SIZE 1024
     70 struct tc_sizespec {
     71   unsigned char cell_log;
     72   unsigned char size_log;
     73   short cell_align;
     74   int overhead;
     75   unsigned int linklayer;
     76   unsigned int mpu;
     77   unsigned int mtu;
     78   unsigned int tsize;
     79 };
     80 enum {
     81   TCA_STAB_UNSPEC,
     82   TCA_STAB_BASE,
     83   TCA_STAB_DATA,
     84   __TCA_STAB_MAX
     85 };
     86 #define TCA_STAB_MAX (__TCA_STAB_MAX - 1)
     87 struct tc_fifo_qopt {
     88   __u32 limit;
     89 };
     90 #define SKBPRIO_MAX_PRIORITY 64
     91 struct tc_skbprio_qopt {
     92   __u32 limit;
     93 };
     94 #define TCQ_PRIO_BANDS 16
     95 #define TCQ_MIN_PRIO_BANDS 2
     96 struct tc_prio_qopt {
     97   int bands;
     98   __u8 priomap[TC_PRIO_MAX + 1];
     99 };
    100 struct tc_multiq_qopt {
    101   __u16 bands;
    102   __u16 max_bands;
    103 };
    104 #define TCQ_PLUG_BUFFER 0
    105 #define TCQ_PLUG_RELEASE_ONE 1
    106 #define TCQ_PLUG_RELEASE_INDEFINITE 2
    107 #define TCQ_PLUG_LIMIT 3
    108 struct tc_plug_qopt {
    109   int action;
    110   __u32 limit;
    111 };
    112 struct tc_tbf_qopt {
    113   struct tc_ratespec rate;
    114   struct tc_ratespec peakrate;
    115   __u32 limit;
    116   __u32 buffer;
    117   __u32 mtu;
    118 };
    119 enum {
    120   TCA_TBF_UNSPEC,
    121   TCA_TBF_PARMS,
    122   TCA_TBF_RTAB,
    123   TCA_TBF_PTAB,
    124   TCA_TBF_RATE64,
    125   TCA_TBF_PRATE64,
    126   TCA_TBF_BURST,
    127   TCA_TBF_PBURST,
    128   TCA_TBF_PAD,
    129   __TCA_TBF_MAX,
    130 };
    131 #define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
    132 struct tc_sfq_qopt {
    133   unsigned quantum;
    134   int perturb_period;
    135   __u32 limit;
    136   unsigned divisor;
    137   unsigned flows;
    138 };
    139 struct tc_sfqred_stats {
    140   __u32 prob_drop;
    141   __u32 forced_drop;
    142   __u32 prob_mark;
    143   __u32 forced_mark;
    144   __u32 prob_mark_head;
    145   __u32 forced_mark_head;
    146 };
    147 struct tc_sfq_qopt_v1 {
    148   struct tc_sfq_qopt v0;
    149   unsigned int depth;
    150   unsigned int headdrop;
    151   __u32 limit;
    152   __u32 qth_min;
    153   __u32 qth_max;
    154   unsigned char Wlog;
    155   unsigned char Plog;
    156   unsigned char Scell_log;
    157   unsigned char flags;
    158   __u32 max_P;
    159   struct tc_sfqred_stats stats;
    160 };
    161 struct tc_sfq_xstats {
    162   __s32 allot;
    163 };
    164 enum {
    165   TCA_RED_UNSPEC,
    166   TCA_RED_PARMS,
    167   TCA_RED_STAB,
    168   TCA_RED_MAX_P,
    169   __TCA_RED_MAX,
    170 };
    171 #define TCA_RED_MAX (__TCA_RED_MAX - 1)
    172 struct tc_red_qopt {
    173   __u32 limit;
    174   __u32 qth_min;
    175   __u32 qth_max;
    176   unsigned char Wlog;
    177   unsigned char Plog;
    178   unsigned char Scell_log;
    179   unsigned char flags;
    180 #define TC_RED_ECN 1
    181 #define TC_RED_HARDDROP 2
    182 #define TC_RED_ADAPTATIVE 4
    183 };
    184 struct tc_red_xstats {
    185   __u32 early;
    186   __u32 pdrop;
    187   __u32 other;
    188   __u32 marked;
    189 };
    190 #define MAX_DPs 16
    191 enum {
    192   TCA_GRED_UNSPEC,
    193   TCA_GRED_PARMS,
    194   TCA_GRED_STAB,
    195   TCA_GRED_DPS,
    196   TCA_GRED_MAX_P,
    197   TCA_GRED_LIMIT,
    198   TCA_GRED_VQ_LIST,
    199   __TCA_GRED_MAX,
    200 };
    201 #define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
    202 enum {
    203   TCA_GRED_VQ_ENTRY_UNSPEC,
    204   TCA_GRED_VQ_ENTRY,
    205   __TCA_GRED_VQ_ENTRY_MAX,
    206 };
    207 #define TCA_GRED_VQ_ENTRY_MAX (__TCA_GRED_VQ_ENTRY_MAX - 1)
    208 enum {
    209   TCA_GRED_VQ_UNSPEC,
    210   TCA_GRED_VQ_PAD,
    211   TCA_GRED_VQ_DP,
    212   TCA_GRED_VQ_STAT_BYTES,
    213   TCA_GRED_VQ_STAT_PACKETS,
    214   TCA_GRED_VQ_STAT_BACKLOG,
    215   TCA_GRED_VQ_STAT_PROB_DROP,
    216   TCA_GRED_VQ_STAT_PROB_MARK,
    217   TCA_GRED_VQ_STAT_FORCED_DROP,
    218   TCA_GRED_VQ_STAT_FORCED_MARK,
    219   TCA_GRED_VQ_STAT_PDROP,
    220   TCA_GRED_VQ_STAT_OTHER,
    221   TCA_GRED_VQ_FLAGS,
    222   __TCA_GRED_VQ_MAX
    223 };
    224 #define TCA_GRED_VQ_MAX (__TCA_GRED_VQ_MAX - 1)
    225 struct tc_gred_qopt {
    226   __u32 limit;
    227   __u32 qth_min;
    228   __u32 qth_max;
    229   __u32 DP;
    230   __u32 backlog;
    231   __u32 qave;
    232   __u32 forced;
    233   __u32 early;
    234   __u32 other;
    235   __u32 pdrop;
    236   __u8 Wlog;
    237   __u8 Plog;
    238   __u8 Scell_log;
    239   __u8 prio;
    240   __u32 packets;
    241   __u32 bytesin;
    242 };
    243 struct tc_gred_sopt {
    244   __u32 DPs;
    245   __u32 def_DP;
    246   __u8 grio;
    247   __u8 flags;
    248   __u16 pad1;
    249 };
    250 enum {
    251   TCA_CHOKE_UNSPEC,
    252   TCA_CHOKE_PARMS,
    253   TCA_CHOKE_STAB,
    254   TCA_CHOKE_MAX_P,
    255   __TCA_CHOKE_MAX,
    256 };
    257 #define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1)
    258 struct tc_choke_qopt {
    259   __u32 limit;
    260   __u32 qth_min;
    261   __u32 qth_max;
    262   unsigned char Wlog;
    263   unsigned char Plog;
    264   unsigned char Scell_log;
    265   unsigned char flags;
    266 };
    267 struct tc_choke_xstats {
    268   __u32 early;
    269   __u32 pdrop;
    270   __u32 other;
    271   __u32 marked;
    272   __u32 matched;
    273 };
    274 #define TC_HTB_NUMPRIO 8
    275 #define TC_HTB_MAXDEPTH 8
    276 #define TC_HTB_PROTOVER 3
    277 struct tc_htb_opt {
    278   struct tc_ratespec rate;
    279   struct tc_ratespec ceil;
    280   __u32 buffer;
    281   __u32 cbuffer;
    282   __u32 quantum;
    283   __u32 level;
    284   __u32 prio;
    285 };
    286 struct tc_htb_glob {
    287   __u32 version;
    288   __u32 rate2quantum;
    289   __u32 defcls;
    290   __u32 debug;
    291   __u32 direct_pkts;
    292 };
    293 enum {
    294   TCA_HTB_UNSPEC,
    295   TCA_HTB_PARMS,
    296   TCA_HTB_INIT,
    297   TCA_HTB_CTAB,
    298   TCA_HTB_RTAB,
    299   TCA_HTB_DIRECT_QLEN,
    300   TCA_HTB_RATE64,
    301   TCA_HTB_CEIL64,
    302   TCA_HTB_PAD,
    303   __TCA_HTB_MAX,
    304 };
    305 #define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
    306 struct tc_htb_xstats {
    307   __u32 lends;
    308   __u32 borrows;
    309   __u32 giants;
    310   __s32 tokens;
    311   __s32 ctokens;
    312 };
    313 struct tc_hfsc_qopt {
    314   __u16 defcls;
    315 };
    316 struct tc_service_curve {
    317   __u32 m1;
    318   __u32 d;
    319   __u32 m2;
    320 };
    321 struct tc_hfsc_stats {
    322   __u64 work;
    323   __u64 rtwork;
    324   __u32 period;
    325   __u32 level;
    326 };
    327 enum {
    328   TCA_HFSC_UNSPEC,
    329   TCA_HFSC_RSC,
    330   TCA_HFSC_FSC,
    331   TCA_HFSC_USC,
    332   __TCA_HFSC_MAX,
    333 };
    334 #define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
    335 #define TC_CBQ_MAXPRIO 8
    336 #define TC_CBQ_MAXLEVEL 8
    337 #define TC_CBQ_DEF_EWMA 5
    338 struct tc_cbq_lssopt {
    339   unsigned char change;
    340   unsigned char flags;
    341 #define TCF_CBQ_LSS_BOUNDED 1
    342 #define TCF_CBQ_LSS_ISOLATED 2
    343   unsigned char ewma_log;
    344   unsigned char level;
    345 #define TCF_CBQ_LSS_FLAGS 1
    346 #define TCF_CBQ_LSS_EWMA 2
    347 #define TCF_CBQ_LSS_MAXIDLE 4
    348 #define TCF_CBQ_LSS_MINIDLE 8
    349 #define TCF_CBQ_LSS_OFFTIME 0x10
    350 #define TCF_CBQ_LSS_AVPKT 0x20
    351   __u32 maxidle;
    352   __u32 minidle;
    353   __u32 offtime;
    354   __u32 avpkt;
    355 };
    356 struct tc_cbq_wrropt {
    357   unsigned char flags;
    358   unsigned char priority;
    359   unsigned char cpriority;
    360   unsigned char __reserved;
    361   __u32 allot;
    362   __u32 weight;
    363 };
    364 struct tc_cbq_ovl {
    365   unsigned char strategy;
    366 #define TC_CBQ_OVL_CLASSIC 0
    367 #define TC_CBQ_OVL_DELAY 1
    368 #define TC_CBQ_OVL_LOWPRIO 2
    369 #define TC_CBQ_OVL_DROP 3
    370 #define TC_CBQ_OVL_RCLASSIC 4
    371   unsigned char priority2;
    372   __u16 pad;
    373   __u32 penalty;
    374 };
    375 struct tc_cbq_police {
    376   unsigned char police;
    377   unsigned char __res1;
    378   unsigned short __res2;
    379 };
    380 struct tc_cbq_fopt {
    381   __u32 split;
    382   __u32 defmap;
    383   __u32 defchange;
    384 };
    385 struct tc_cbq_xstats {
    386   __u32 borrows;
    387   __u32 overactions;
    388   __s32 avgidle;
    389   __s32 undertime;
    390 };
    391 enum {
    392   TCA_CBQ_UNSPEC,
    393   TCA_CBQ_LSSOPT,
    394   TCA_CBQ_WRROPT,
    395   TCA_CBQ_FOPT,
    396   TCA_CBQ_OVL_STRATEGY,
    397   TCA_CBQ_RATE,
    398   TCA_CBQ_RTAB,
    399   TCA_CBQ_POLICE,
    400   __TCA_CBQ_MAX,
    401 };
    402 #define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1)
    403 enum {
    404   TCA_DSMARK_UNSPEC,
    405   TCA_DSMARK_INDICES,
    406   TCA_DSMARK_DEFAULT_INDEX,
    407   TCA_DSMARK_SET_TC_INDEX,
    408   TCA_DSMARK_MASK,
    409   TCA_DSMARK_VALUE,
    410   __TCA_DSMARK_MAX,
    411 };
    412 #define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
    413 enum {
    414   TCA_ATM_UNSPEC,
    415   TCA_ATM_FD,
    416   TCA_ATM_PTR,
    417   TCA_ATM_HDR,
    418   TCA_ATM_EXCESS,
    419   TCA_ATM_ADDR,
    420   TCA_ATM_STATE,
    421   __TCA_ATM_MAX,
    422 };
    423 #define TCA_ATM_MAX (__TCA_ATM_MAX - 1)
    424 enum {
    425   TCA_NETEM_UNSPEC,
    426   TCA_NETEM_CORR,
    427   TCA_NETEM_DELAY_DIST,
    428   TCA_NETEM_REORDER,
    429   TCA_NETEM_CORRUPT,
    430   TCA_NETEM_LOSS,
    431   TCA_NETEM_RATE,
    432   TCA_NETEM_ECN,
    433   TCA_NETEM_RATE64,
    434   TCA_NETEM_PAD,
    435   TCA_NETEM_LATENCY64,
    436   TCA_NETEM_JITTER64,
    437   TCA_NETEM_SLOT,
    438   TCA_NETEM_SLOT_DIST,
    439   __TCA_NETEM_MAX,
    440 };
    441 #define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
    442 struct tc_netem_qopt {
    443   __u32 latency;
    444   __u32 limit;
    445   __u32 loss;
    446   __u32 gap;
    447   __u32 duplicate;
    448   __u32 jitter;
    449 };
    450 struct tc_netem_corr {
    451   __u32 delay_corr;
    452   __u32 loss_corr;
    453   __u32 dup_corr;
    454 };
    455 struct tc_netem_reorder {
    456   __u32 probability;
    457   __u32 correlation;
    458 };
    459 struct tc_netem_corrupt {
    460   __u32 probability;
    461   __u32 correlation;
    462 };
    463 struct tc_netem_rate {
    464   __u32 rate;
    465   __s32 packet_overhead;
    466   __u32 cell_size;
    467   __s32 cell_overhead;
    468 };
    469 struct tc_netem_slot {
    470   __s64 min_delay;
    471   __s64 max_delay;
    472   __s32 max_packets;
    473   __s32 max_bytes;
    474   __s64 dist_delay;
    475   __s64 dist_jitter;
    476 };
    477 enum {
    478   NETEM_LOSS_UNSPEC,
    479   NETEM_LOSS_GI,
    480   NETEM_LOSS_GE,
    481   __NETEM_LOSS_MAX
    482 };
    483 #define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
    484 struct tc_netem_gimodel {
    485   __u32 p13;
    486   __u32 p31;
    487   __u32 p32;
    488   __u32 p14;
    489   __u32 p23;
    490 };
    491 struct tc_netem_gemodel {
    492   __u32 p;
    493   __u32 r;
    494   __u32 h;
    495   __u32 k1;
    496 };
    497 #define NETEM_DIST_SCALE 8192
    498 #define NETEM_DIST_MAX 16384
    499 enum {
    500   TCA_DRR_UNSPEC,
    501   TCA_DRR_QUANTUM,
    502   __TCA_DRR_MAX
    503 };
    504 #define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
    505 struct tc_drr_stats {
    506   __u32 deficit;
    507 };
    508 #define TC_QOPT_BITMASK 15
    509 #define TC_QOPT_MAX_QUEUE 16
    510 enum {
    511   TC_MQPRIO_HW_OFFLOAD_NONE,
    512   TC_MQPRIO_HW_OFFLOAD_TCS,
    513   __TC_MQPRIO_HW_OFFLOAD_MAX
    514 };
    515 #define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1)
    516 enum {
    517   TC_MQPRIO_MODE_DCB,
    518   TC_MQPRIO_MODE_CHANNEL,
    519   __TC_MQPRIO_MODE_MAX
    520 };
    521 #define __TC_MQPRIO_MODE_MAX (__TC_MQPRIO_MODE_MAX - 1)
    522 enum {
    523   TC_MQPRIO_SHAPER_DCB,
    524   TC_MQPRIO_SHAPER_BW_RATE,
    525   __TC_MQPRIO_SHAPER_MAX
    526 };
    527 #define __TC_MQPRIO_SHAPER_MAX (__TC_MQPRIO_SHAPER_MAX - 1)
    528 struct tc_mqprio_qopt {
    529   __u8 num_tc;
    530   __u8 prio_tc_map[TC_QOPT_BITMASK + 1];
    531   __u8 hw;
    532   __u16 count[TC_QOPT_MAX_QUEUE];
    533   __u16 offset[TC_QOPT_MAX_QUEUE];
    534 };
    535 #define TC_MQPRIO_F_MODE 0x1
    536 #define TC_MQPRIO_F_SHAPER 0x2
    537 #define TC_MQPRIO_F_MIN_RATE 0x4
    538 #define TC_MQPRIO_F_MAX_RATE 0x8
    539 enum {
    540   TCA_MQPRIO_UNSPEC,
    541   TCA_MQPRIO_MODE,
    542   TCA_MQPRIO_SHAPER,
    543   TCA_MQPRIO_MIN_RATE64,
    544   TCA_MQPRIO_MAX_RATE64,
    545   __TCA_MQPRIO_MAX,
    546 };
    547 #define TCA_MQPRIO_MAX (__TCA_MQPRIO_MAX - 1)
    548 enum {
    549   TCA_SFB_UNSPEC,
    550   TCA_SFB_PARMS,
    551   __TCA_SFB_MAX,
    552 };
    553 #define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
    554 struct tc_sfb_qopt {
    555   __u32 rehash_interval;
    556   __u32 warmup_time;
    557   __u32 max;
    558   __u32 bin_size;
    559   __u32 increment;
    560   __u32 decrement;
    561   __u32 limit;
    562   __u32 penalty_rate;
    563   __u32 penalty_burst;
    564 };
    565 struct tc_sfb_xstats {
    566   __u32 earlydrop;
    567   __u32 penaltydrop;
    568   __u32 bucketdrop;
    569   __u32 queuedrop;
    570   __u32 childdrop;
    571   __u32 marked;
    572   __u32 maxqlen;
    573   __u32 maxprob;
    574   __u32 avgprob;
    575 };
    576 #define SFB_MAX_PROB 0xFFFF
    577 enum {
    578   TCA_QFQ_UNSPEC,
    579   TCA_QFQ_WEIGHT,
    580   TCA_QFQ_LMAX,
    581   __TCA_QFQ_MAX
    582 };
    583 #define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1)
    584 struct tc_qfq_stats {
    585   __u32 weight;
    586   __u32 lmax;
    587 };
    588 enum {
    589   TCA_CODEL_UNSPEC,
    590   TCA_CODEL_TARGET,
    591   TCA_CODEL_LIMIT,
    592   TCA_CODEL_INTERVAL,
    593   TCA_CODEL_ECN,
    594   TCA_CODEL_CE_THRESHOLD,
    595   __TCA_CODEL_MAX
    596 };
    597 #define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1)
    598 struct tc_codel_xstats {
    599   __u32 maxpacket;
    600   __u32 count;
    601   __u32 lastcount;
    602   __u32 ldelay;
    603   __s32 drop_next;
    604   __u32 drop_overlimit;
    605   __u32 ecn_mark;
    606   __u32 dropping;
    607   __u32 ce_mark;
    608 };
    609 enum {
    610   TCA_FQ_CODEL_UNSPEC,
    611   TCA_FQ_CODEL_TARGET,
    612   TCA_FQ_CODEL_LIMIT,
    613   TCA_FQ_CODEL_INTERVAL,
    614   TCA_FQ_CODEL_ECN,
    615   TCA_FQ_CODEL_FLOWS,
    616   TCA_FQ_CODEL_QUANTUM,
    617   TCA_FQ_CODEL_CE_THRESHOLD,
    618   TCA_FQ_CODEL_DROP_BATCH_SIZE,
    619   TCA_FQ_CODEL_MEMORY_LIMIT,
    620   __TCA_FQ_CODEL_MAX
    621 };
    622 #define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1)
    623 enum {
    624   TCA_FQ_CODEL_XSTATS_QDISC,
    625   TCA_FQ_CODEL_XSTATS_CLASS,
    626 };
    627 struct tc_fq_codel_qd_stats {
    628   __u32 maxpacket;
    629   __u32 drop_overlimit;
    630   __u32 ecn_mark;
    631   __u32 new_flow_count;
    632   __u32 new_flows_len;
    633   __u32 old_flows_len;
    634   __u32 ce_mark;
    635   __u32 memory_usage;
    636   __u32 drop_overmemory;
    637 };
    638 struct tc_fq_codel_cl_stats {
    639   __s32 deficit;
    640   __u32 ldelay;
    641   __u32 count;
    642   __u32 lastcount;
    643   __u32 dropping;
    644   __s32 drop_next;
    645 };
    646 struct tc_fq_codel_xstats {
    647   __u32 type;
    648   union {
    649     struct tc_fq_codel_qd_stats qdisc_stats;
    650     struct tc_fq_codel_cl_stats class_stats;
    651   };
    652 };
    653 enum {
    654   TCA_FQ_UNSPEC,
    655   TCA_FQ_PLIMIT,
    656   TCA_FQ_FLOW_PLIMIT,
    657   TCA_FQ_QUANTUM,
    658   TCA_FQ_INITIAL_QUANTUM,
    659   TCA_FQ_RATE_ENABLE,
    660   TCA_FQ_FLOW_DEFAULT_RATE,
    661   TCA_FQ_FLOW_MAX_RATE,
    662   TCA_FQ_BUCKETS_LOG,
    663   TCA_FQ_FLOW_REFILL_DELAY,
    664   TCA_FQ_ORPHAN_MASK,
    665   TCA_FQ_LOW_RATE_THRESHOLD,
    666   TCA_FQ_CE_THRESHOLD,
    667   __TCA_FQ_MAX
    668 };
    669 #define TCA_FQ_MAX (__TCA_FQ_MAX - 1)
    670 struct tc_fq_qd_stats {
    671   __u64 gc_flows;
    672   __u64 highprio_packets;
    673   __u64 tcp_retrans;
    674   __u64 throttled;
    675   __u64 flows_plimit;
    676   __u64 pkts_too_long;
    677   __u64 allocation_errors;
    678   __s64 time_next_delayed_flow;
    679   __u32 flows;
    680   __u32 inactive_flows;
    681   __u32 throttled_flows;
    682   __u32 unthrottle_latency_ns;
    683   __u64 ce_mark;
    684 };
    685 enum {
    686   TCA_HHF_UNSPEC,
    687   TCA_HHF_BACKLOG_LIMIT,
    688   TCA_HHF_QUANTUM,
    689   TCA_HHF_HH_FLOWS_LIMIT,
    690   TCA_HHF_RESET_TIMEOUT,
    691   TCA_HHF_ADMIT_BYTES,
    692   TCA_HHF_EVICT_TIMEOUT,
    693   TCA_HHF_NON_HH_WEIGHT,
    694   __TCA_HHF_MAX
    695 };
    696 #define TCA_HHF_MAX (__TCA_HHF_MAX - 1)
    697 struct tc_hhf_xstats {
    698   __u32 drop_overlimit;
    699   __u32 hh_overlimit;
    700   __u32 hh_tot_count;
    701   __u32 hh_cur_count;
    702 };
    703 enum {
    704   TCA_PIE_UNSPEC,
    705   TCA_PIE_TARGET,
    706   TCA_PIE_LIMIT,
    707   TCA_PIE_TUPDATE,
    708   TCA_PIE_ALPHA,
    709   TCA_PIE_BETA,
    710   TCA_PIE_ECN,
    711   TCA_PIE_BYTEMODE,
    712   __TCA_PIE_MAX
    713 };
    714 #define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
    715 struct tc_pie_xstats {
    716   __u32 prob;
    717   __u32 delay;
    718   __u32 avg_dq_rate;
    719   __u32 packets_in;
    720   __u32 dropped;
    721   __u32 overlimit;
    722   __u32 maxq;
    723   __u32 ecn_mark;
    724 };
    725 struct tc_cbs_qopt {
    726   __u8 offload;
    727   __u8 _pad[3];
    728   __s32 hicredit;
    729   __s32 locredit;
    730   __s32 idleslope;
    731   __s32 sendslope;
    732 };
    733 enum {
    734   TCA_CBS_UNSPEC,
    735   TCA_CBS_PARMS,
    736   __TCA_CBS_MAX,
    737 };
    738 #define TCA_CBS_MAX (__TCA_CBS_MAX - 1)
    739 struct tc_etf_qopt {
    740   __s32 delta;
    741   __s32 clockid;
    742   __u32 flags;
    743 #define TC_ETF_DEADLINE_MODE_ON BIT(0)
    744 #define TC_ETF_OFFLOAD_ON BIT(1)
    745 };
    746 enum {
    747   TCA_ETF_UNSPEC,
    748   TCA_ETF_PARMS,
    749   __TCA_ETF_MAX,
    750 };
    751 #define TCA_ETF_MAX (__TCA_ETF_MAX - 1)
    752 enum {
    753   TCA_CAKE_UNSPEC,
    754   TCA_CAKE_PAD,
    755   TCA_CAKE_BASE_RATE64,
    756   TCA_CAKE_DIFFSERV_MODE,
    757   TCA_CAKE_ATM,
    758   TCA_CAKE_FLOW_MODE,
    759   TCA_CAKE_OVERHEAD,
    760   TCA_CAKE_RTT,
    761   TCA_CAKE_TARGET,
    762   TCA_CAKE_AUTORATE,
    763   TCA_CAKE_MEMORY,
    764   TCA_CAKE_NAT,
    765   TCA_CAKE_RAW,
    766   TCA_CAKE_WASH,
    767   TCA_CAKE_MPU,
    768   TCA_CAKE_INGRESS,
    769   TCA_CAKE_ACK_FILTER,
    770   TCA_CAKE_SPLIT_GSO,
    771   __TCA_CAKE_MAX
    772 };
    773 #define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1)
    774 enum {
    775   __TCA_CAKE_STATS_INVALID,
    776   TCA_CAKE_STATS_PAD,
    777   TCA_CAKE_STATS_CAPACITY_ESTIMATE64,
    778   TCA_CAKE_STATS_MEMORY_LIMIT,
    779   TCA_CAKE_STATS_MEMORY_USED,
    780   TCA_CAKE_STATS_AVG_NETOFF,
    781   TCA_CAKE_STATS_MIN_NETLEN,
    782   TCA_CAKE_STATS_MAX_NETLEN,
    783   TCA_CAKE_STATS_MIN_ADJLEN,
    784   TCA_CAKE_STATS_MAX_ADJLEN,
    785   TCA_CAKE_STATS_TIN_STATS,
    786   TCA_CAKE_STATS_DEFICIT,
    787   TCA_CAKE_STATS_COBALT_COUNT,
    788   TCA_CAKE_STATS_DROPPING,
    789   TCA_CAKE_STATS_DROP_NEXT_US,
    790   TCA_CAKE_STATS_P_DROP,
    791   TCA_CAKE_STATS_BLUE_TIMER_US,
    792   __TCA_CAKE_STATS_MAX
    793 };
    794 #define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1)
    795 enum {
    796   __TCA_CAKE_TIN_STATS_INVALID,
    797   TCA_CAKE_TIN_STATS_PAD,
    798   TCA_CAKE_TIN_STATS_SENT_PACKETS,
    799   TCA_CAKE_TIN_STATS_SENT_BYTES64,
    800   TCA_CAKE_TIN_STATS_DROPPED_PACKETS,
    801   TCA_CAKE_TIN_STATS_DROPPED_BYTES64,
    802   TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS,
    803   TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64,
    804   TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS,
    805   TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64,
    806   TCA_CAKE_TIN_STATS_BACKLOG_PACKETS,
    807   TCA_CAKE_TIN_STATS_BACKLOG_BYTES,
    808   TCA_CAKE_TIN_STATS_THRESHOLD_RATE64,
    809   TCA_CAKE_TIN_STATS_TARGET_US,
    810   TCA_CAKE_TIN_STATS_INTERVAL_US,
    811   TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS,
    812   TCA_CAKE_TIN_STATS_WAY_MISSES,
    813   TCA_CAKE_TIN_STATS_WAY_COLLISIONS,
    814   TCA_CAKE_TIN_STATS_PEAK_DELAY_US,
    815   TCA_CAKE_TIN_STATS_AVG_DELAY_US,
    816   TCA_CAKE_TIN_STATS_BASE_DELAY_US,
    817   TCA_CAKE_TIN_STATS_SPARSE_FLOWS,
    818   TCA_CAKE_TIN_STATS_BULK_FLOWS,
    819   TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS,
    820   TCA_CAKE_TIN_STATS_MAX_SKBLEN,
    821   TCA_CAKE_TIN_STATS_FLOW_QUANTUM,
    822   __TCA_CAKE_TIN_STATS_MAX
    823 };
    824 #define TCA_CAKE_TIN_STATS_MAX (__TCA_CAKE_TIN_STATS_MAX - 1)
    825 #define TC_CAKE_MAX_TINS (8)
    826 enum {
    827   CAKE_FLOW_NONE = 0,
    828   CAKE_FLOW_SRC_IP,
    829   CAKE_FLOW_DST_IP,
    830   CAKE_FLOW_HOSTS,
    831   CAKE_FLOW_FLOWS,
    832   CAKE_FLOW_DUAL_SRC,
    833   CAKE_FLOW_DUAL_DST,
    834   CAKE_FLOW_TRIPLE,
    835   CAKE_FLOW_MAX,
    836 };
    837 enum {
    838   CAKE_DIFFSERV_DIFFSERV3 = 0,
    839   CAKE_DIFFSERV_DIFFSERV4,
    840   CAKE_DIFFSERV_DIFFSERV8,
    841   CAKE_DIFFSERV_BESTEFFORT,
    842   CAKE_DIFFSERV_PRECEDENCE,
    843   CAKE_DIFFSERV_MAX
    844 };
    845 enum {
    846   CAKE_ACK_NONE = 0,
    847   CAKE_ACK_FILTER,
    848   CAKE_ACK_AGGRESSIVE,
    849   CAKE_ACK_MAX
    850 };
    851 enum {
    852   CAKE_ATM_NONE = 0,
    853   CAKE_ATM_ATM,
    854   CAKE_ATM_PTM,
    855   CAKE_ATM_MAX
    856 };
    857 enum {
    858   TC_TAPRIO_CMD_SET_GATES = 0x00,
    859   TC_TAPRIO_CMD_SET_AND_HOLD = 0x01,
    860   TC_TAPRIO_CMD_SET_AND_RELEASE = 0x02,
    861 };
    862 enum {
    863   TCA_TAPRIO_SCHED_ENTRY_UNSPEC,
    864   TCA_TAPRIO_SCHED_ENTRY_INDEX,
    865   TCA_TAPRIO_SCHED_ENTRY_CMD,
    866   TCA_TAPRIO_SCHED_ENTRY_GATE_MASK,
    867   TCA_TAPRIO_SCHED_ENTRY_INTERVAL,
    868   __TCA_TAPRIO_SCHED_ENTRY_MAX,
    869 };
    870 #define TCA_TAPRIO_SCHED_ENTRY_MAX (__TCA_TAPRIO_SCHED_ENTRY_MAX - 1)
    871 enum {
    872   TCA_TAPRIO_SCHED_UNSPEC,
    873   TCA_TAPRIO_SCHED_ENTRY,
    874   __TCA_TAPRIO_SCHED_MAX,
    875 };
    876 #define TCA_TAPRIO_SCHED_MAX (__TCA_TAPRIO_SCHED_MAX - 1)
    877 enum {
    878   TCA_TAPRIO_ATTR_UNSPEC,
    879   TCA_TAPRIO_ATTR_PRIOMAP,
    880   TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
    881   TCA_TAPRIO_ATTR_SCHED_BASE_TIME,
    882   TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY,
    883   TCA_TAPRIO_ATTR_SCHED_CLOCKID,
    884   TCA_TAPRIO_PAD,
    885   __TCA_TAPRIO_ATTR_MAX,
    886 };
    887 #define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
    888 #endif
    889