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