blob: 7d3ff9677f864e3fc7a7657533359e8377cfdfda [file] [log] [blame]
Ben Cheng655a7c02013-10-16 16:09:24 -07001/****************************************************************************
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
Ben Cheng655a7c02013-10-16 16:09:24 -070023#define TC_PRIO_FILLER 1
24#define TC_PRIO_BULK 2
25#define TC_PRIO_INTERACTIVE_BULK 4
26#define TC_PRIO_INTERACTIVE 6
Ben Cheng655a7c02013-10-16 16:09:24 -070027#define TC_PRIO_CONTROL 7
28#define TC_PRIO_MAX 15
29struct tc_stats {
Tao Baod7db5942015-01-28 10:07:51 -080030 __u64 bytes;
Tao Baod7db5942015-01-28 10:07:51 -080031 __u32 packets;
32 __u32 drops;
33 __u32 overlimits;
34 __u32 bps;
Tao Baod7db5942015-01-28 10:07:51 -080035 __u32 pps;
36 __u32 qlen;
37 __u32 backlog;
Ben Cheng655a7c02013-10-16 16:09:24 -070038};
Ben Cheng655a7c02013-10-16 16:09:24 -070039struct tc_estimator {
Tao Baod7db5942015-01-28 10:07:51 -080040 signed char interval;
41 unsigned char ewma_log;
Ben Cheng655a7c02013-10-16 16:09:24 -070042};
Ben Cheng655a7c02013-10-16 16:09:24 -070043#define TC_H_MAJ_MASK (0xFFFF0000U)
44#define TC_H_MIN_MASK (0x0000FFFFU)
Tao Baod7db5942015-01-28 10:07:51 -080045#define TC_H_MAJ(h) ((h) & TC_H_MAJ_MASK)
46#define TC_H_MIN(h) ((h) & TC_H_MIN_MASK)
Tao Baod7db5942015-01-28 10:07:51 -080047#define TC_H_MAKE(maj,min) (((maj) & TC_H_MAJ_MASK) | ((min) & TC_H_MIN_MASK))
Ben Cheng655a7c02013-10-16 16:09:24 -070048#define TC_H_UNSPEC (0U)
49#define TC_H_ROOT (0xFFFFFFFFU)
50#define TC_H_INGRESS (0xFFFFFFF1U)
Christopher Ferris106b3a82016-08-24 12:15:38 -070051#define TC_H_CLSACT TC_H_INGRESS
52#define TC_H_MIN_INGRESS 0xFFF2U
53#define TC_H_MIN_EGRESS 0xFFF3U
Christopher Ferris38062f92014-07-09 15:33:25 -070054enum tc_link_layer {
Tao Baod7db5942015-01-28 10:07:51 -080055 TC_LINKLAYER_UNAWARE,
56 TC_LINKLAYER_ETHERNET,
57 TC_LINKLAYER_ATM,
Christopher Ferris38062f92014-07-09 15:33:25 -070058};
59#define TC_LINKLAYER_MASK 0x0F
Ben Cheng655a7c02013-10-16 16:09:24 -070060struct tc_ratespec {
Tao Baod7db5942015-01-28 10:07:51 -080061 unsigned char cell_log;
Tao Baod7db5942015-01-28 10:07:51 -080062 __u8 linklayer;
63 unsigned short overhead;
64 short cell_align;
65 unsigned short mpu;
Tao Baod7db5942015-01-28 10:07:51 -080066 __u32 rate;
Ben Cheng655a7c02013-10-16 16:09:24 -070067};
68#define TC_RTAB_SIZE 1024
69struct tc_sizespec {
Tao Baod7db5942015-01-28 10:07:51 -080070 unsigned char cell_log;
71 unsigned char size_log;
72 short cell_align;
73 int overhead;
Tao Baod7db5942015-01-28 10:07:51 -080074 unsigned int linklayer;
75 unsigned int mpu;
76 unsigned int mtu;
77 unsigned int tsize;
Ben Cheng655a7c02013-10-16 16:09:24 -070078};
79enum {
Tao Baod7db5942015-01-28 10:07:51 -080080 TCA_STAB_UNSPEC,
81 TCA_STAB_BASE,
Tao Baod7db5942015-01-28 10:07:51 -080082 TCA_STAB_DATA,
83 __TCA_STAB_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -070084};
85#define TCA_STAB_MAX (__TCA_STAB_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -070086struct tc_fifo_qopt {
Tao Baod7db5942015-01-28 10:07:51 -080087 __u32 limit;
Ben Cheng655a7c02013-10-16 16:09:24 -070088};
89#define TCQ_PRIO_BANDS 16
Ben Cheng655a7c02013-10-16 16:09:24 -070090#define TCQ_MIN_PRIO_BANDS 2
91struct tc_prio_qopt {
Tao Baod7db5942015-01-28 10:07:51 -080092 int bands;
93 __u8 priomap[TC_PRIO_MAX + 1];
Ben Cheng655a7c02013-10-16 16:09:24 -070094};
95struct tc_multiq_qopt {
Tao Baod7db5942015-01-28 10:07:51 -080096 __u16 bands;
97 __u16 max_bands;
Ben Cheng655a7c02013-10-16 16:09:24 -070098};
99#define TCQ_PLUG_BUFFER 0
100#define TCQ_PLUG_RELEASE_ONE 1
101#define TCQ_PLUG_RELEASE_INDEFINITE 2
Ben Cheng655a7c02013-10-16 16:09:24 -0700102#define TCQ_PLUG_LIMIT 3
103struct tc_plug_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800104 int action;
105 __u32 limit;
Ben Cheng655a7c02013-10-16 16:09:24 -0700106};
107struct tc_tbf_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800108 struct tc_ratespec rate;
109 struct tc_ratespec peakrate;
Tao Baod7db5942015-01-28 10:07:51 -0800110 __u32 limit;
111 __u32 buffer;
112 __u32 mtu;
Ben Cheng655a7c02013-10-16 16:09:24 -0700113};
Ben Cheng655a7c02013-10-16 16:09:24 -0700114enum {
Tao Baod7db5942015-01-28 10:07:51 -0800115 TCA_TBF_UNSPEC,
116 TCA_TBF_PARMS,
117 TCA_TBF_RTAB,
Tao Baod7db5942015-01-28 10:07:51 -0800118 TCA_TBF_PTAB,
119 TCA_TBF_RATE64,
120 TCA_TBF_PRATE64,
121 TCA_TBF_BURST,
Tao Baod7db5942015-01-28 10:07:51 -0800122 TCA_TBF_PBURST,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700123 TCA_TBF_PAD,
Tao Baod7db5942015-01-28 10:07:51 -0800124 __TCA_TBF_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700125};
126#define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700127struct tc_sfq_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800128 unsigned quantum;
129 int perturb_period;
130 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800131 unsigned divisor;
132 unsigned flows;
Ben Cheng655a7c02013-10-16 16:09:24 -0700133};
134struct tc_sfqred_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800135 __u32 prob_drop;
136 __u32 forced_drop;
137 __u32 prob_mark;
138 __u32 forced_mark;
Tao Baod7db5942015-01-28 10:07:51 -0800139 __u32 prob_mark_head;
140 __u32 forced_mark_head;
Ben Cheng655a7c02013-10-16 16:09:24 -0700141};
142struct tc_sfq_qopt_v1 {
Tao Baod7db5942015-01-28 10:07:51 -0800143 struct tc_sfq_qopt v0;
144 unsigned int depth;
145 unsigned int headdrop;
146 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800147 __u32 qth_min;
148 __u32 qth_max;
149 unsigned char Wlog;
150 unsigned char Plog;
Tao Baod7db5942015-01-28 10:07:51 -0800151 unsigned char Scell_log;
152 unsigned char flags;
153 __u32 max_P;
154 struct tc_sfqred_stats stats;
Ben Cheng655a7c02013-10-16 16:09:24 -0700155};
156struct tc_sfq_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800157 __s32 allot;
Ben Cheng655a7c02013-10-16 16:09:24 -0700158};
Ben Cheng655a7c02013-10-16 16:09:24 -0700159enum {
Tao Baod7db5942015-01-28 10:07:51 -0800160 TCA_RED_UNSPEC,
161 TCA_RED_PARMS,
162 TCA_RED_STAB,
Tao Baod7db5942015-01-28 10:07:51 -0800163 TCA_RED_MAX_P,
164 __TCA_RED_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700165};
166#define TCA_RED_MAX (__TCA_RED_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700167struct tc_red_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800168 __u32 limit;
169 __u32 qth_min;
170 __u32 qth_max;
Tao Baod7db5942015-01-28 10:07:51 -0800171 unsigned char Wlog;
172 unsigned char Plog;
173 unsigned char Scell_log;
174 unsigned char flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700175#define TC_RED_ECN 1
176#define TC_RED_HARDDROP 2
177#define TC_RED_ADAPTATIVE 4
178};
Ben Cheng655a7c02013-10-16 16:09:24 -0700179struct tc_red_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800180 __u32 early;
181 __u32 pdrop;
182 __u32 other;
Tao Baod7db5942015-01-28 10:07:51 -0800183 __u32 marked;
Ben Cheng655a7c02013-10-16 16:09:24 -0700184};
185#define MAX_DPs 16
186enum {
Tao Baod7db5942015-01-28 10:07:51 -0800187 TCA_GRED_UNSPEC,
188 TCA_GRED_PARMS,
189 TCA_GRED_STAB,
190 TCA_GRED_DPS,
Tao Baod7db5942015-01-28 10:07:51 -0800191 TCA_GRED_MAX_P,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800192 TCA_GRED_LIMIT,
Tao Baod7db5942015-01-28 10:07:51 -0800193 __TCA_GRED_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700194};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800195#define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700196struct tc_gred_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800197 __u32 limit;
198 __u32 qth_min;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800199 __u32 qth_max;
Tao Baod7db5942015-01-28 10:07:51 -0800200 __u32 DP;
201 __u32 backlog;
202 __u32 qave;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800203 __u32 forced;
Tao Baod7db5942015-01-28 10:07:51 -0800204 __u32 early;
205 __u32 other;
206 __u32 pdrop;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800207 __u8 Wlog;
Tao Baod7db5942015-01-28 10:07:51 -0800208 __u8 Plog;
209 __u8 Scell_log;
210 __u8 prio;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800211 __u32 packets;
Tao Baod7db5942015-01-28 10:07:51 -0800212 __u32 bytesin;
Ben Cheng655a7c02013-10-16 16:09:24 -0700213};
214struct tc_gred_sopt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800215 __u32 DPs;
Tao Baod7db5942015-01-28 10:07:51 -0800216 __u32 def_DP;
217 __u8 grio;
218 __u8 flags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800219 __u16 pad1;
Ben Cheng655a7c02013-10-16 16:09:24 -0700220};
221enum {
Tao Baod7db5942015-01-28 10:07:51 -0800222 TCA_CHOKE_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800223 TCA_CHOKE_PARMS,
Tao Baod7db5942015-01-28 10:07:51 -0800224 TCA_CHOKE_STAB,
225 TCA_CHOKE_MAX_P,
226 __TCA_CHOKE_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800227};
Ben Cheng655a7c02013-10-16 16:09:24 -0700228#define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1)
229struct tc_choke_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800230 __u32 limit;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800231 __u32 qth_min;
Tao Baod7db5942015-01-28 10:07:51 -0800232 __u32 qth_max;
233 unsigned char Wlog;
234 unsigned char Plog;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800235 unsigned char Scell_log;
Tao Baod7db5942015-01-28 10:07:51 -0800236 unsigned char flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700237};
238struct tc_choke_xstats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800239 __u32 early;
Tao Baod7db5942015-01-28 10:07:51 -0800240 __u32 pdrop;
241 __u32 other;
242 __u32 marked;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800243 __u32 matched;
Ben Cheng655a7c02013-10-16 16:09:24 -0700244};
245#define TC_HTB_NUMPRIO 8
246#define TC_HTB_MAXDEPTH 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800247#define TC_HTB_PROTOVER 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700248struct tc_htb_opt {
Tao Baod7db5942015-01-28 10:07:51 -0800249 struct tc_ratespec rate;
250 struct tc_ratespec ceil;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800251 __u32 buffer;
Tao Baod7db5942015-01-28 10:07:51 -0800252 __u32 cbuffer;
253 __u32 quantum;
254 __u32 level;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800255 __u32 prio;
Ben Cheng655a7c02013-10-16 16:09:24 -0700256};
257struct tc_htb_glob {
Tao Baod7db5942015-01-28 10:07:51 -0800258 __u32 version;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800259 __u32 rate2quantum;
Tao Baod7db5942015-01-28 10:07:51 -0800260 __u32 defcls;
261 __u32 debug;
262 __u32 direct_pkts;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800263};
Ben Cheng655a7c02013-10-16 16:09:24 -0700264enum {
Tao Baod7db5942015-01-28 10:07:51 -0800265 TCA_HTB_UNSPEC,
266 TCA_HTB_PARMS,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800267 TCA_HTB_INIT,
Tao Baod7db5942015-01-28 10:07:51 -0800268 TCA_HTB_CTAB,
269 TCA_HTB_RTAB,
270 TCA_HTB_DIRECT_QLEN,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800271 TCA_HTB_RATE64,
Tao Baod7db5942015-01-28 10:07:51 -0800272 TCA_HTB_CEIL64,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700273 TCA_HTB_PAD,
Tao Baod7db5942015-01-28 10:07:51 -0800274 __TCA_HTB_MAX,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700275};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800276#define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700277struct tc_htb_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800278 __u32 lends;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700279 __u32 borrows;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800280 __u32 giants;
Tao Baod7db5942015-01-28 10:07:51 -0800281 __u32 tokens;
282 __u32 ctokens;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700283};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800284struct tc_hfsc_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800285 __u16 defcls;
Ben Cheng655a7c02013-10-16 16:09:24 -0700286};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700287struct tc_service_curve {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800288 __u32 m1;
Tao Baod7db5942015-01-28 10:07:51 -0800289 __u32 d;
290 __u32 m2;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700291};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800292struct tc_hfsc_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800293 __u64 work;
294 __u64 rtwork;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700295 __u32 period;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800296 __u32 level;
Ben Cheng655a7c02013-10-16 16:09:24 -0700297};
298enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700299 TCA_HFSC_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800300 TCA_HFSC_RSC,
Tao Baod7db5942015-01-28 10:07:51 -0800301 TCA_HFSC_FSC,
302 TCA_HFSC_USC,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700303 __TCA_HFSC_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800304};
Ben Cheng655a7c02013-10-16 16:09:24 -0700305#define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
306#define TC_CBQ_MAXPRIO 8
Christopher Ferris106b3a82016-08-24 12:15:38 -0700307#define TC_CBQ_MAXLEVEL 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800308#define TC_CBQ_DEF_EWMA 5
Ben Cheng655a7c02013-10-16 16:09:24 -0700309struct tc_cbq_lssopt {
Tao Baod7db5942015-01-28 10:07:51 -0800310 unsigned char change;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700311 unsigned char flags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800312#define TCF_CBQ_LSS_BOUNDED 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700313#define TCF_CBQ_LSS_ISOLATED 2
Tao Baod7db5942015-01-28 10:07:51 -0800314 unsigned char ewma_log;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700315 unsigned char level;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800316#define TCF_CBQ_LSS_FLAGS 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700317#define TCF_CBQ_LSS_EWMA 2
318#define TCF_CBQ_LSS_MAXIDLE 4
Christopher Ferris106b3a82016-08-24 12:15:38 -0700319#define TCF_CBQ_LSS_MINIDLE 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800320#define TCF_CBQ_LSS_OFFTIME 0x10
Ben Cheng655a7c02013-10-16 16:09:24 -0700321#define TCF_CBQ_LSS_AVPKT 0x20
Tao Baod7db5942015-01-28 10:07:51 -0800322 __u32 maxidle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700323 __u32 minidle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800324 __u32 offtime;
Tao Baod7db5942015-01-28 10:07:51 -0800325 __u32 avpkt;
Ben Cheng655a7c02013-10-16 16:09:24 -0700326};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700327struct tc_cbq_wrropt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800328 unsigned char flags;
Tao Baod7db5942015-01-28 10:07:51 -0800329 unsigned char priority;
330 unsigned char cpriority;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700331 unsigned char __reserved;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800332 __u32 allot;
Tao Baod7db5942015-01-28 10:07:51 -0800333 __u32 weight;
Ben Cheng655a7c02013-10-16 16:09:24 -0700334};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700335struct tc_cbq_ovl {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800336 unsigned char strategy;
Ben Cheng655a7c02013-10-16 16:09:24 -0700337#define TC_CBQ_OVL_CLASSIC 0
338#define TC_CBQ_OVL_DELAY 1
Christopher Ferris106b3a82016-08-24 12:15:38 -0700339#define TC_CBQ_OVL_LOWPRIO 2
Christopher Ferris05d08e92016-02-04 13:16:38 -0800340#define TC_CBQ_OVL_DROP 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700341#define TC_CBQ_OVL_RCLASSIC 4
Tao Baod7db5942015-01-28 10:07:51 -0800342 unsigned char priority2;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700343 __u16 pad;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800344 __u32 penalty;
Ben Cheng655a7c02013-10-16 16:09:24 -0700345};
346struct tc_cbq_police {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700347 unsigned char police;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800348 unsigned char __res1;
Tao Baod7db5942015-01-28 10:07:51 -0800349 unsigned short __res2;
Ben Cheng655a7c02013-10-16 16:09:24 -0700350};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700351struct tc_cbq_fopt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800352 __u32 split;
Tao Baod7db5942015-01-28 10:07:51 -0800353 __u32 defmap;
354 __u32 defchange;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700355};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800356struct tc_cbq_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800357 __u32 borrows;
358 __u32 overactions;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700359 __s32 avgidle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800360 __s32 undertime;
Ben Cheng655a7c02013-10-16 16:09:24 -0700361};
362enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700363 TCA_CBQ_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800364 TCA_CBQ_LSSOPT,
Tao Baod7db5942015-01-28 10:07:51 -0800365 TCA_CBQ_WRROPT,
366 TCA_CBQ_FOPT,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700367 TCA_CBQ_OVL_STRATEGY,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800368 TCA_CBQ_RATE,
Tao Baod7db5942015-01-28 10:07:51 -0800369 TCA_CBQ_RTAB,
370 TCA_CBQ_POLICE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700371 __TCA_CBQ_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800372};
Ben Cheng655a7c02013-10-16 16:09:24 -0700373#define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1)
374enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700375 TCA_DSMARK_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800376 TCA_DSMARK_INDICES,
Tao Baod7db5942015-01-28 10:07:51 -0800377 TCA_DSMARK_DEFAULT_INDEX,
378 TCA_DSMARK_SET_TC_INDEX,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700379 TCA_DSMARK_MASK,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800380 TCA_DSMARK_VALUE,
Tao Baod7db5942015-01-28 10:07:51 -0800381 __TCA_DSMARK_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700382};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700383#define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800384enum {
Tao Baod7db5942015-01-28 10:07:51 -0800385 TCA_ATM_UNSPEC,
386 TCA_ATM_FD,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700387 TCA_ATM_PTR,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800388 TCA_ATM_HDR,
Tao Baod7db5942015-01-28 10:07:51 -0800389 TCA_ATM_EXCESS,
390 TCA_ATM_ADDR,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700391 TCA_ATM_STATE,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800392 __TCA_ATM_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700393};
394#define TCA_ATM_MAX (__TCA_ATM_MAX - 1)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700395enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800396 TCA_NETEM_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800397 TCA_NETEM_CORR,
398 TCA_NETEM_DELAY_DIST,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700399 TCA_NETEM_REORDER,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800400 TCA_NETEM_CORRUPT,
Tao Baod7db5942015-01-28 10:07:51 -0800401 TCA_NETEM_LOSS,
402 TCA_NETEM_RATE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700403 TCA_NETEM_ECN,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800404 TCA_NETEM_RATE64,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700405 TCA_NETEM_PAD,
Tao Baod7db5942015-01-28 10:07:51 -0800406 __TCA_NETEM_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700407};
408#define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800409struct tc_netem_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800410 __u32 latency;
411 __u32 limit;
412 __u32 loss;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800413 __u32 gap;
Tao Baod7db5942015-01-28 10:07:51 -0800414 __u32 duplicate;
415 __u32 jitter;
Ben Cheng655a7c02013-10-16 16:09:24 -0700416};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800417struct tc_netem_corr {
Tao Baod7db5942015-01-28 10:07:51 -0800418 __u32 delay_corr;
419 __u32 loss_corr;
420 __u32 dup_corr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800421};
Ben Cheng655a7c02013-10-16 16:09:24 -0700422struct tc_netem_reorder {
Tao Baod7db5942015-01-28 10:07:51 -0800423 __u32 probability;
424 __u32 correlation;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800425};
Ben Cheng655a7c02013-10-16 16:09:24 -0700426struct tc_netem_corrupt {
Tao Baod7db5942015-01-28 10:07:51 -0800427 __u32 probability;
428 __u32 correlation;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800429};
Christopher Ferris38062f92014-07-09 15:33:25 -0700430struct tc_netem_rate {
Tao Baod7db5942015-01-28 10:07:51 -0800431 __u32 rate;
432 __s32 packet_overhead;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800433 __u32 cell_size;
Tao Baod7db5942015-01-28 10:07:51 -0800434 __s32 cell_overhead;
Ben Cheng655a7c02013-10-16 16:09:24 -0700435};
436enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800437 NETEM_LOSS_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800438 NETEM_LOSS_GI,
439 NETEM_LOSS_GE,
440 __NETEM_LOSS_MAX
Christopher Ferris05d08e92016-02-04 13:16:38 -0800441};
Christopher Ferris38062f92014-07-09 15:33:25 -0700442#define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700443struct tc_netem_gimodel {
Tao Baod7db5942015-01-28 10:07:51 -0800444 __u32 p13;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800445 __u32 p31;
Tao Baod7db5942015-01-28 10:07:51 -0800446 __u32 p32;
447 __u32 p14;
448 __u32 p23;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800449};
Christopher Ferris38062f92014-07-09 15:33:25 -0700450struct tc_netem_gemodel {
Tao Baod7db5942015-01-28 10:07:51 -0800451 __u32 p;
452 __u32 r;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800453 __u32 h;
Tao Baod7db5942015-01-28 10:07:51 -0800454 __u32 k1;
Ben Cheng655a7c02013-10-16 16:09:24 -0700455};
456#define NETEM_DIST_SCALE 8192
Christopher Ferris05d08e92016-02-04 13:16:38 -0800457#define NETEM_DIST_MAX 16384
Christopher Ferris38062f92014-07-09 15:33:25 -0700458enum {
Tao Baod7db5942015-01-28 10:07:51 -0800459 TCA_DRR_UNSPEC,
460 TCA_DRR_QUANTUM,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800461 __TCA_DRR_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700462};
Ben Cheng655a7c02013-10-16 16:09:24 -0700463#define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
464struct tc_drr_stats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800465 __u32 deficit;
Christopher Ferris38062f92014-07-09 15:33:25 -0700466};
Ben Cheng655a7c02013-10-16 16:09:24 -0700467#define TC_QOPT_BITMASK 15
468#define TC_QOPT_MAX_QUEUE 16
Christopher Ferris525ce912017-07-26 13:12:53 -0700469enum {
470 TC_MQPRIO_HW_OFFLOAD_NONE,
471 TC_MQPRIO_HW_OFFLOAD_TCS,
472 __TC_MQPRIO_HW_OFFLOAD_MAX
473};
474#define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800475struct tc_mqprio_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800476 __u8 num_tc;
477 __u8 prio_tc_map[TC_QOPT_BITMASK + 1];
478 __u8 hw;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800479 __u16 count[TC_QOPT_MAX_QUEUE];
Tao Baod7db5942015-01-28 10:07:51 -0800480 __u16 offset[TC_QOPT_MAX_QUEUE];
Ben Cheng655a7c02013-10-16 16:09:24 -0700481};
482enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800483 TCA_SFB_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800484 TCA_SFB_PARMS,
485 __TCA_SFB_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700486};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800487#define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700488struct tc_sfb_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800489 __u32 rehash_interval;
490 __u32 warmup_time;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800491 __u32 max;
Tao Baod7db5942015-01-28 10:07:51 -0800492 __u32 bin_size;
493 __u32 increment;
494 __u32 decrement;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800495 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800496 __u32 penalty_rate;
497 __u32 penalty_burst;
Ben Cheng655a7c02013-10-16 16:09:24 -0700498};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800499struct tc_sfb_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800500 __u32 earlydrop;
501 __u32 penaltydrop;
502 __u32 bucketdrop;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800503 __u32 queuedrop;
Tao Baod7db5942015-01-28 10:07:51 -0800504 __u32 childdrop;
505 __u32 marked;
506 __u32 maxqlen;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800507 __u32 maxprob;
Tao Baod7db5942015-01-28 10:07:51 -0800508 __u32 avgprob;
Ben Cheng655a7c02013-10-16 16:09:24 -0700509};
510#define SFB_MAX_PROB 0xFFFF
Christopher Ferris05d08e92016-02-04 13:16:38 -0800511enum {
Tao Baod7db5942015-01-28 10:07:51 -0800512 TCA_QFQ_UNSPEC,
513 TCA_QFQ_WEIGHT,
514 TCA_QFQ_LMAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800515 __TCA_QFQ_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700516};
Ben Cheng655a7c02013-10-16 16:09:24 -0700517#define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1)
518struct tc_qfq_stats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800519 __u32 weight;
Tao Baod7db5942015-01-28 10:07:51 -0800520 __u32 lmax;
Ben Cheng655a7c02013-10-16 16:09:24 -0700521};
522enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800523 TCA_CODEL_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800524 TCA_CODEL_TARGET,
525 TCA_CODEL_LIMIT,
526 TCA_CODEL_INTERVAL,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800527 TCA_CODEL_ECN,
528 TCA_CODEL_CE_THRESHOLD,
Tao Baod7db5942015-01-28 10:07:51 -0800529 __TCA_CODEL_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700530};
531#define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700532struct tc_codel_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800533 __u32 maxpacket;
534 __u32 count;
535 __u32 lastcount;
536 __u32 ldelay;
Tao Baod7db5942015-01-28 10:07:51 -0800537 __s32 drop_next;
538 __u32 drop_overlimit;
539 __u32 ecn_mark;
540 __u32 dropping;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800541 __u32 ce_mark;
Christopher Ferris38062f92014-07-09 15:33:25 -0700542};
Ben Cheng655a7c02013-10-16 16:09:24 -0700543enum {
Tao Baod7db5942015-01-28 10:07:51 -0800544 TCA_FQ_CODEL_UNSPEC,
545 TCA_FQ_CODEL_TARGET,
Tao Baod7db5942015-01-28 10:07:51 -0800546 TCA_FQ_CODEL_LIMIT,
547 TCA_FQ_CODEL_INTERVAL,
548 TCA_FQ_CODEL_ECN,
549 TCA_FQ_CODEL_FLOWS,
Tao Baod7db5942015-01-28 10:07:51 -0800550 TCA_FQ_CODEL_QUANTUM,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800551 TCA_FQ_CODEL_CE_THRESHOLD,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700552 TCA_FQ_CODEL_DROP_BATCH_SIZE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700553 TCA_FQ_CODEL_MEMORY_LIMIT,
Tao Baod7db5942015-01-28 10:07:51 -0800554 __TCA_FQ_CODEL_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700555};
Ben Cheng655a7c02013-10-16 16:09:24 -0700556#define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700557enum {
Tao Baod7db5942015-01-28 10:07:51 -0800558 TCA_FQ_CODEL_XSTATS_QDISC,
559 TCA_FQ_CODEL_XSTATS_CLASS,
Ben Cheng655a7c02013-10-16 16:09:24 -0700560};
Christopher Ferris38062f92014-07-09 15:33:25 -0700561struct tc_fq_codel_qd_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800562 __u32 maxpacket;
563 __u32 drop_overlimit;
564 __u32 ecn_mark;
Tao Baod7db5942015-01-28 10:07:51 -0800565 __u32 new_flow_count;
566 __u32 new_flows_len;
567 __u32 old_flows_len;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800568 __u32 ce_mark;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700569 __u32 memory_usage;
570 __u32 drop_overmemory;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800571};
Christopher Ferris38062f92014-07-09 15:33:25 -0700572struct tc_fq_codel_cl_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800573 __s32 deficit;
574 __u32 ldelay;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800575 __u32 count;
Tao Baod7db5942015-01-28 10:07:51 -0800576 __u32 lastcount;
577 __u32 dropping;
578 __s32 drop_next;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800579};
Christopher Ferris38062f92014-07-09 15:33:25 -0700580struct tc_fq_codel_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800581 __u32 type;
582 union {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800583 struct tc_fq_codel_qd_stats qdisc_stats;
Tao Baod7db5942015-01-28 10:07:51 -0800584 struct tc_fq_codel_cl_stats class_stats;
585 };
Ben Cheng655a7c02013-10-16 16:09:24 -0700586};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800587enum {
Tao Baod7db5942015-01-28 10:07:51 -0800588 TCA_FQ_UNSPEC,
589 TCA_FQ_PLIMIT,
590 TCA_FQ_FLOW_PLIMIT,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800591 TCA_FQ_QUANTUM,
Tao Baod7db5942015-01-28 10:07:51 -0800592 TCA_FQ_INITIAL_QUANTUM,
593 TCA_FQ_RATE_ENABLE,
594 TCA_FQ_FLOW_DEFAULT_RATE,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800595 TCA_FQ_FLOW_MAX_RATE,
Tao Baod7db5942015-01-28 10:07:51 -0800596 TCA_FQ_BUCKETS_LOG,
597 TCA_FQ_FLOW_REFILL_DELAY,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800598 TCA_FQ_ORPHAN_MASK,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800599 TCA_FQ_LOW_RATE_THRESHOLD,
Tao Baod7db5942015-01-28 10:07:51 -0800600 __TCA_FQ_MAX
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800601};
Christopher Ferris38062f92014-07-09 15:33:25 -0700602#define TCA_FQ_MAX (__TCA_FQ_MAX - 1)
603struct tc_fq_qd_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800604 __u64 gc_flows;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800605 __u64 highprio_packets;
Tao Baod7db5942015-01-28 10:07:51 -0800606 __u64 tcp_retrans;
607 __u64 throttled;
608 __u64 flows_plimit;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800609 __u64 pkts_too_long;
Tao Baod7db5942015-01-28 10:07:51 -0800610 __u64 allocation_errors;
611 __s64 time_next_delayed_flow;
612 __u32 flows;
613 __u32 inactive_flows;
Tao Baod7db5942015-01-28 10:07:51 -0800614 __u32 throttled_flows;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800615 __u32 unthrottle_latency_ns;
Christopher Ferris38062f92014-07-09 15:33:25 -0700616};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800617enum {
Tao Baod7db5942015-01-28 10:07:51 -0800618 TCA_HHF_UNSPEC,
619 TCA_HHF_BACKLOG_LIMIT,
620 TCA_HHF_QUANTUM,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800621 TCA_HHF_HH_FLOWS_LIMIT,
Tao Baod7db5942015-01-28 10:07:51 -0800622 TCA_HHF_RESET_TIMEOUT,
623 TCA_HHF_ADMIT_BYTES,
624 TCA_HHF_EVICT_TIMEOUT,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800625 TCA_HHF_NON_HH_WEIGHT,
Tao Baod7db5942015-01-28 10:07:51 -0800626 __TCA_HHF_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700627};
628#define TCA_HHF_MAX (__TCA_HHF_MAX - 1)
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800629struct tc_hhf_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800630 __u32 drop_overlimit;
631 __u32 hh_overlimit;
632 __u32 hh_tot_count;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800633 __u32 hh_cur_count;
Christopher Ferris38062f92014-07-09 15:33:25 -0700634};
635enum {
Tao Baod7db5942015-01-28 10:07:51 -0800636 TCA_PIE_UNSPEC,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800637 TCA_PIE_TARGET,
Tao Baod7db5942015-01-28 10:07:51 -0800638 TCA_PIE_LIMIT,
639 TCA_PIE_TUPDATE,
640 TCA_PIE_ALPHA,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800641 TCA_PIE_BETA,
Tao Baod7db5942015-01-28 10:07:51 -0800642 TCA_PIE_ECN,
643 TCA_PIE_BYTEMODE,
644 __TCA_PIE_MAX
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800645};
Christopher Ferris38062f92014-07-09 15:33:25 -0700646#define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
647struct tc_pie_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800648 __u32 prob;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800649 __u32 delay;
Tao Baod7db5942015-01-28 10:07:51 -0800650 __u32 avg_dq_rate;
651 __u32 packets_in;
652 __u32 dropped;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800653 __u32 overlimit;
Tao Baod7db5942015-01-28 10:07:51 -0800654 __u32 maxq;
655 __u32 ecn_mark;
Christopher Ferris38062f92014-07-09 15:33:25 -0700656};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800657#endif