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  ****************************************************************************
     11  ****************************************************************************/
     12 #ifndef __LINUX_PKT_SCHED_H
     13 #define __LINUX_PKT_SCHED_H
     14 
     15 #include <linux/types.h>
     16 
     17 #define TC_PRIO_BESTEFFORT 0
     18 #define TC_PRIO_FILLER 1
     19 #define TC_PRIO_BULK 2
     20 #define TC_PRIO_INTERACTIVE_BULK 4
     21 #define TC_PRIO_INTERACTIVE 6
     22 #define TC_PRIO_CONTROL 7
     23 
     24 #define TC_PRIO_MAX 15
     25 
     26 struct tc_stats
     27 {
     28  __u64 bytes;
     29  __u32 packets;
     30  __u32 drops;
     31  __u32 overlimits;
     32  __u32 bps;
     33  __u32 pps;
     34  __u32 qlen;
     35  __u32 backlog;
     36 };
     37 
     38 struct tc_estimator
     39 {
     40  signed char interval;
     41  unsigned char ewma_log;
     42 };
     43 
     44 #define TC_H_MAJ_MASK (0xFFFF0000U)
     45 #define TC_H_MIN_MASK (0x0000FFFFU)
     46 #define TC_H_MAJ(h) ((h)&TC_H_MAJ_MASK)
     47 #define TC_H_MIN(h) ((h)&TC_H_MIN_MASK)
     48 #define TC_H_MAKE(maj,min) (((maj)&TC_H_MAJ_MASK)|((min)&TC_H_MIN_MASK))
     49 
     50 #define TC_H_UNSPEC (0U)
     51 #define TC_H_ROOT (0xFFFFFFFFU)
     52 #define TC_H_INGRESS (0xFFFFFFF1U)
     53 
     54 struct tc_ratespec
     55 {
     56  unsigned char cell_log;
     57  unsigned char __reserved;
     58  unsigned short overhead;
     59  short cell_align;
     60  unsigned short mpu;
     61  __u32 rate;
     62 };
     63 
     64 #define TC_RTAB_SIZE 1024
     65 
     66 struct tc_sizespec {
     67  unsigned char cell_log;
     68  unsigned char size_log;
     69  short cell_align;
     70  int overhead;
     71  unsigned int linklayer;
     72  unsigned int mpu;
     73  unsigned int mtu;
     74  unsigned int tsize;
     75 };
     76 
     77 enum {
     78  TCA_STAB_UNSPEC,
     79  TCA_STAB_BASE,
     80  TCA_STAB_DATA,
     81  __TCA_STAB_MAX
     82 };
     83 
     84 #define TCA_STAB_MAX (__TCA_STAB_MAX - 1)
     85 
     86 struct tc_fifo_qopt
     87 {
     88  __u32 limit;
     89 };
     90 
     91 #define TCQ_PRIO_BANDS 16
     92 #define TCQ_MIN_PRIO_BANDS 2
     93 
     94 struct tc_prio_qopt
     95 {
     96  int bands;
     97  __u8 priomap[TC_PRIO_MAX+1];
     98 };
     99 
    100 struct tc_multiq_qopt {
    101  __u16 bands;
    102  __u16 max_bands;
    103 };
    104 
    105 struct tc_tbf_qopt
    106 {
    107  struct tc_ratespec rate;
    108  struct tc_ratespec peakrate;
    109  __u32 limit;
    110  __u32 buffer;
    111  __u32 mtu;
    112 };
    113 
    114 enum
    115 {
    116  TCA_TBF_UNSPEC,
    117  TCA_TBF_PARMS,
    118  TCA_TBF_RTAB,
    119  TCA_TBF_PTAB,
    120  __TCA_TBF_MAX,
    121 };
    122 
    123 #define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
    124 
    125 struct tc_sfq_qopt
    126 {
    127  unsigned quantum;
    128  int perturb_period;
    129  __u32 limit;
    130  unsigned divisor;
    131  unsigned flows;
    132 };
    133 
    134 struct tc_sfq_xstats
    135 {
    136  __s32 allot;
    137 };
    138 
    139 enum
    140 {
    141  TCA_RED_UNSPEC,
    142  TCA_RED_PARMS,
    143  TCA_RED_STAB,
    144  __TCA_RED_MAX,
    145 };
    146 
    147 #define TCA_RED_MAX (__TCA_RED_MAX - 1)
    148 
    149 struct tc_red_qopt
    150 {
    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 #define TC_RED_ECN 1
    159 #define TC_RED_HARDDROP 2
    160 };
    161 
    162 struct tc_red_xstats
    163 {
    164  __u32 early;
    165  __u32 pdrop;
    166  __u32 other;
    167  __u32 marked;
    168 };
    169 
    170 #define MAX_DPs 16
    171 
    172 enum
    173 {
    174  TCA_GRED_UNSPEC,
    175  TCA_GRED_PARMS,
    176  TCA_GRED_STAB,
    177  TCA_GRED_DPS,
    178  __TCA_GRED_MAX,
    179 };
    180 
    181 #define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
    182 
    183 struct tc_gred_qopt
    184 {
    185  __u32 limit;
    186  __u32 qth_min;
    187  __u32 qth_max;
    188  __u32 DP;
    189  __u32 backlog;
    190  __u32 qave;
    191  __u32 forced;
    192  __u32 early;
    193  __u32 other;
    194  __u32 pdrop;
    195  __u8 Wlog;
    196  __u8 Plog;
    197  __u8 Scell_log;
    198  __u8 prio;
    199  __u32 packets;
    200  __u32 bytesin;
    201 };
    202 
    203 struct tc_gred_sopt
    204 {
    205  __u32 DPs;
    206  __u32 def_DP;
    207  __u8 grio;
    208  __u8 flags;
    209  __u16 pad1;
    210 };
    211 
    212 #define TC_HTB_NUMPRIO 8
    213 #define TC_HTB_MAXDEPTH 8
    214 #define TC_HTB_PROTOVER 3
    215 
    216 struct tc_htb_opt
    217 {
    218  struct tc_ratespec rate;
    219  struct tc_ratespec ceil;
    220  __u32 buffer;
    221  __u32 cbuffer;
    222  __u32 quantum;
    223  __u32 level;
    224  __u32 prio;
    225 };
    226 struct tc_htb_glob
    227 {
    228  __u32 version;
    229  __u32 rate2quantum;
    230  __u32 defcls;
    231  __u32 debug;
    232 
    233  __u32 direct_pkts;
    234 };
    235 enum
    236 {
    237  TCA_HTB_UNSPEC,
    238  TCA_HTB_PARMS,
    239  TCA_HTB_INIT,
    240  TCA_HTB_CTAB,
    241  TCA_HTB_RTAB,
    242  __TCA_HTB_MAX,
    243 };
    244 
    245 #define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
    246 
    247 struct tc_htb_xstats
    248 {
    249  __u32 lends;
    250  __u32 borrows;
    251  __u32 giants;
    252  __u32 tokens;
    253  __u32 ctokens;
    254 };
    255 
    256 struct tc_hfsc_qopt
    257 {
    258  __u16 defcls;
    259 };
    260 
    261 struct tc_service_curve
    262 {
    263  __u32 m1;
    264  __u32 d;
    265  __u32 m2;
    266 };
    267 
    268 struct tc_hfsc_stats
    269 {
    270  __u64 work;
    271  __u64 rtwork;
    272  __u32 period;
    273  __u32 level;
    274 };
    275 
    276 enum
    277 {
    278  TCA_HFSC_UNSPEC,
    279  TCA_HFSC_RSC,
    280  TCA_HFSC_FSC,
    281  TCA_HFSC_USC,
    282  __TCA_HFSC_MAX,
    283 };
    284 
    285 #define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
    286 
    287 #define TC_CBQ_MAXPRIO 8
    288 #define TC_CBQ_MAXLEVEL 8
    289 #define TC_CBQ_DEF_EWMA 5
    290 
    291 struct tc_cbq_lssopt
    292 {
    293  unsigned char change;
    294  unsigned char flags;
    295 #define TCF_CBQ_LSS_BOUNDED 1
    296 #define TCF_CBQ_LSS_ISOLATED 2
    297  unsigned char ewma_log;
    298  unsigned char level;
    299 #define TCF_CBQ_LSS_FLAGS 1
    300 #define TCF_CBQ_LSS_EWMA 2
    301 #define TCF_CBQ_LSS_MAXIDLE 4
    302 #define TCF_CBQ_LSS_MINIDLE 8
    303 #define TCF_CBQ_LSS_OFFTIME 0x10
    304 #define TCF_CBQ_LSS_AVPKT 0x20
    305  __u32 maxidle;
    306  __u32 minidle;
    307  __u32 offtime;
    308  __u32 avpkt;
    309 };
    310 
    311 struct tc_cbq_wrropt
    312 {
    313  unsigned char flags;
    314  unsigned char priority;
    315  unsigned char cpriority;
    316  unsigned char __reserved;
    317  __u32 allot;
    318  __u32 weight;
    319 };
    320 
    321 struct tc_cbq_ovl
    322 {
    323  unsigned char strategy;
    324 #define TC_CBQ_OVL_CLASSIC 0
    325 #define TC_CBQ_OVL_DELAY 1
    326 #define TC_CBQ_OVL_LOWPRIO 2
    327 #define TC_CBQ_OVL_DROP 3
    328 #define TC_CBQ_OVL_RCLASSIC 4
    329  unsigned char priority2;
    330  __u16 pad;
    331  __u32 penalty;
    332 };
    333 
    334 struct tc_cbq_police
    335 {
    336  unsigned char police;
    337  unsigned char __res1;
    338  unsigned short __res2;
    339 };
    340 
    341 struct tc_cbq_fopt
    342 {
    343  __u32 split;
    344  __u32 defmap;
    345  __u32 defchange;
    346 };
    347 
    348 struct tc_cbq_xstats
    349 {
    350  __u32 borrows;
    351  __u32 overactions;
    352  __s32 avgidle;
    353  __s32 undertime;
    354 };
    355 
    356 enum
    357 {
    358  TCA_CBQ_UNSPEC,
    359  TCA_CBQ_LSSOPT,
    360  TCA_CBQ_WRROPT,
    361  TCA_CBQ_FOPT,
    362  TCA_CBQ_OVL_STRATEGY,
    363  TCA_CBQ_RATE,
    364  TCA_CBQ_RTAB,
    365  TCA_CBQ_POLICE,
    366  __TCA_CBQ_MAX,
    367 };
    368 
    369 #define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1)
    370 
    371 enum {
    372  TCA_DSMARK_UNSPEC,
    373  TCA_DSMARK_INDICES,
    374  TCA_DSMARK_DEFAULT_INDEX,
    375  TCA_DSMARK_SET_TC_INDEX,
    376  TCA_DSMARK_MASK,
    377  TCA_DSMARK_VALUE,
    378  __TCA_DSMARK_MAX,
    379 };
    380 
    381 #define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
    382 
    383 enum {
    384  TCA_ATM_UNSPEC,
    385  TCA_ATM_FD,
    386  TCA_ATM_PTR,
    387  TCA_ATM_HDR,
    388  TCA_ATM_EXCESS,
    389  TCA_ATM_ADDR,
    390  TCA_ATM_STATE,
    391  __TCA_ATM_MAX,
    392 };
    393 
    394 #define TCA_ATM_MAX (__TCA_ATM_MAX - 1)
    395 
    396 enum
    397 {
    398  TCA_NETEM_UNSPEC,
    399  TCA_NETEM_CORR,
    400  TCA_NETEM_DELAY_DIST,
    401  TCA_NETEM_REORDER,
    402  TCA_NETEM_CORRUPT,
    403  __TCA_NETEM_MAX,
    404 };
    405 
    406 #define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
    407 
    408 struct tc_netem_qopt
    409 {
    410  __u32 latency;
    411  __u32 limit;
    412  __u32 loss;
    413  __u32 gap;
    414  __u32 duplicate;
    415  __u32 jitter;
    416 };
    417 
    418 struct tc_netem_corr
    419 {
    420  __u32 delay_corr;
    421  __u32 loss_corr;
    422  __u32 dup_corr;
    423 };
    424 
    425 struct tc_netem_reorder
    426 {
    427  __u32 probability;
    428  __u32 correlation;
    429 };
    430 
    431 struct tc_netem_corrupt
    432 {
    433  __u32 probability;
    434  __u32 correlation;
    435 };
    436 
    437 #define NETEM_DIST_SCALE 8192
    438 
    439 enum
    440 {
    441  TCA_DRR_UNSPEC,
    442  TCA_DRR_QUANTUM,
    443  __TCA_DRR_MAX
    444 };
    445 
    446 #define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
    447 
    448 struct tc_drr_stats
    449 {
    450  __u32 deficit;
    451 };
    452 
    453 #endif
    454