111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   This header was automatically generated from a Linux kernel header
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   of the same name, to make information necessary for userspace to
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   call into the kernel available to libc.  It contains only constants,
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   structures, and macros generated from the original header, and thus,
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   contains no copyrightable information.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef __LINUX_PKT_SCHED_H
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __LINUX_PKT_SCHED_H
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_PRIO_BESTEFFORT 0
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_PRIO_FILLER 1
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_PRIO_BULK 2
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_PRIO_INTERACTIVE_BULK 4
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_PRIO_INTERACTIVE 6
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_PRIO_CONTROL 7
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_PRIO_MAX 15
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_stats
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 bytes;
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 packets;
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 drops;
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 overlimits;
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 bps;
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 pps;
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 qlen;
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 backlog;
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_estimator
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert signed char interval;
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char ewma_log;
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_H_MAJ_MASK (0xFFFF0000U)
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_H_MIN_MASK (0x0000FFFFU)
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_H_MAJ(h) ((h)&TC_H_MAJ_MASK)
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_H_MIN(h) ((h)&TC_H_MIN_MASK)
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_H_MAKE(maj,min) (((maj)&TC_H_MAJ_MASK)|((min)&TC_H_MIN_MASK))
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_H_UNSPEC (0U)
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_H_ROOT (0xFFFFFFFFU)
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_H_INGRESS (0xFFFFFFF1U)
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_ratespec
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char cell_log;
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char __reserved;
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short feature;
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert short addend;
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short mpu;
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rate;
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_fifo_qopt
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 limit;
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCQ_PRIO_BANDS 16
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCQ_MIN_PRIO_BANDS 2
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_prio_qopt
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int bands;
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 priomap[TC_PRIO_MAX+1];
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_tbf_qopt
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct tc_ratespec rate;
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct tc_ratespec peakrate;
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 limit;
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 buffer;
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 mtu;
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_TBF_UNSPEC,
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_TBF_PARMS,
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_TBF_RTAB,
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_TBF_PTAB,
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __TCA_TBF_MAX,
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_sfq_qopt
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned quantum;
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int perturb_period;
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 limit;
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned divisor;
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned flows;
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_RED_UNSPEC,
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_RED_PARMS,
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_RED_STAB,
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __TCA_RED_MAX,
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCA_RED_MAX (__TCA_RED_MAX - 1)
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_red_qopt
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 limit;
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 qth_min;
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 qth_max;
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char Wlog;
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char Plog;
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char Scell_log;
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char flags;
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_RED_ECN 1
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_RED_HARDDROP 2
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_red_xstats
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 early;
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 pdrop;
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 other;
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 marked;
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MAX_DPs 16
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_GRED_UNSPEC,
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_GRED_PARMS,
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_GRED_STAB,
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_GRED_DPS,
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __TCA_GRED_MAX,
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_gred_qopt
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 limit;
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 qth_min;
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 qth_max;
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 DP;
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 backlog;
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 qave;
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 forced;
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 early;
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 other;
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 pdrop;
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 Wlog;
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 Plog;
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 Scell_log;
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 prio;
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 packets;
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 bytesin;
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_gred_sopt
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 DPs;
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 def_DP;
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 grio;
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 flags;
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 pad1;
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_HTB_NUMPRIO 8
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_HTB_MAXDEPTH 8
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_HTB_PROTOVER 3
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_htb_opt
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct tc_ratespec rate;
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct tc_ratespec ceil;
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 buffer;
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 cbuffer;
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 quantum;
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 level;
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 prio;
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_htb_glob
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 version;
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 rate2quantum;
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 defcls;
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 debug;
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 direct_pkts;
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_HTB_UNSPEC,
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_HTB_PARMS,
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_HTB_INIT,
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_HTB_CTAB,
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_HTB_RTAB,
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __TCA_HTB_MAX,
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_htb_xstats
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 lends;
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 borrows;
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 giants;
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tokens;
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ctokens;
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_hfsc_qopt
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 defcls;
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_service_curve
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 m1;
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 d;
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 m2;
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_hfsc_stats
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 work;
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 rtwork;
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 period;
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 level;
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_HFSC_UNSPEC,
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_HFSC_RSC,
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_HFSC_FSC,
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_HFSC_USC,
24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __TCA_HFSC_MAX,
24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_CBQ_MAXPRIO 8
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_CBQ_MAXLEVEL 8
25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_CBQ_DEF_EWMA 5
25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_cbq_lssopt
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char change;
26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char flags;
26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCF_CBQ_LSS_BOUNDED 1
26211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCF_CBQ_LSS_ISOLATED 2
26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char ewma_log;
26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char level;
26511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCF_CBQ_LSS_FLAGS 1
26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCF_CBQ_LSS_EWMA 2
26711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCF_CBQ_LSS_MAXIDLE 4
26811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCF_CBQ_LSS_MINIDLE 8
26911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCF_CBQ_LSS_OFFTIME 0x10
27011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCF_CBQ_LSS_AVPKT 0x20
27111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 maxidle;
27211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 minidle;
27311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 offtime;
27411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 avpkt;
27511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
27611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
27711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_cbq_wrropt
27811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
27911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char flags;
28011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char priority;
28111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char cpriority;
28211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char __reserved;
28311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 allot;
28411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 weight;
28511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
28611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
28711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_cbq_ovl
28811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
28911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char strategy;
29011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_CBQ_OVL_CLASSIC 0
29111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_CBQ_OVL_DELAY 1
29211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_CBQ_OVL_LOWPRIO 2
29311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_CBQ_OVL_DROP 3
29411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TC_CBQ_OVL_RCLASSIC 4
29511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char priority2;
29611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 pad;
29711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 penalty;
29811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
29911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
30011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_cbq_police
30111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
30211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char police;
30311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char __res1;
30411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short __res2;
30511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
30611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
30711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_cbq_fopt
30811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
30911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 split;
31011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 defmap;
31111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 defchange;
31211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
31311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
31411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_cbq_xstats
31511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
31611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 borrows;
31711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 overactions;
31811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __s32 avgidle;
31911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __s32 undertime;
32011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
32111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
32211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
32311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
32411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_CBQ_UNSPEC,
32511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_CBQ_LSSOPT,
32611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_CBQ_WRROPT,
32711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_CBQ_FOPT,
32811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_CBQ_OVL_STRATEGY,
32911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_CBQ_RATE,
33011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_CBQ_RTAB,
33111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_CBQ_POLICE,
33211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __TCA_CBQ_MAX,
33311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
33411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
33511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1)
33611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
33711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum {
33811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_DSMARK_UNSPEC,
33911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_DSMARK_INDICES,
34011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_DSMARK_DEFAULT_INDEX,
34111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_DSMARK_SET_TC_INDEX,
34211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_DSMARK_MASK,
34311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_DSMARK_VALUE,
34411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __TCA_DSMARK_MAX,
34511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
34611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
34711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
34811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
34911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum {
35011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_ATM_UNSPEC,
35111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_ATM_FD,
35211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_ATM_PTR,
35311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_ATM_HDR,
35411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_ATM_EXCESS,
35511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_ATM_ADDR,
35611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_ATM_STATE,
35711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __TCA_ATM_MAX,
35811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
35911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
36011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCA_ATM_MAX (__TCA_ATM_MAX - 1)
36111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
36211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum
36311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
36411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_NETEM_UNSPEC,
36511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_NETEM_CORR,
36611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_NETEM_DELAY_DIST,
36711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_NETEM_REORDER,
36811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCA_NETEM_CORRUPT,
36911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __TCA_NETEM_MAX,
37011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
37111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
37311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_netem_qopt
37511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
37611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 latency;
37711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 limit;
37811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 loss;
37911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 gap;
38011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 duplicate;
38111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 jitter;
38211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
38311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_netem_corr
38511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
38611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 delay_corr;
38711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 loss_corr;
38811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 dup_corr;
38911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
39011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
39111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_netem_reorder
39211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
39311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 probability;
39411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 correlation;
39511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
39611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
39711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tc_netem_corrupt
39811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
39911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 probability;
40011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 correlation;
40111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
40211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
40311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define NETEM_DIST_SCALE 8192
40411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
40511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
406