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