• 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_MAX,
171 };
172 #define TCA_RED_MAX (__TCA_RED_MAX - 1)
173 struct tc_red_qopt {
174   __u32 limit;
175   __u32 qth_min;
176   __u32 qth_max;
177   unsigned char Wlog;
178   unsigned char Plog;
179   unsigned char Scell_log;
180   unsigned char flags;
181 #define TC_RED_ECN 1
182 #define TC_RED_HARDDROP 2
183 #define TC_RED_ADAPTATIVE 4
184 };
185 struct tc_red_xstats {
186   __u32 early;
187   __u32 pdrop;
188   __u32 other;
189   __u32 marked;
190 };
191 #define MAX_DPs 16
192 enum {
193   TCA_GRED_UNSPEC,
194   TCA_GRED_PARMS,
195   TCA_GRED_STAB,
196   TCA_GRED_DPS,
197   TCA_GRED_MAX_P,
198   TCA_GRED_LIMIT,
199   TCA_GRED_VQ_LIST,
200   __TCA_GRED_MAX,
201 };
202 #define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
203 enum {
204   TCA_GRED_VQ_ENTRY_UNSPEC,
205   TCA_GRED_VQ_ENTRY,
206   __TCA_GRED_VQ_ENTRY_MAX,
207 };
208 #define TCA_GRED_VQ_ENTRY_MAX (__TCA_GRED_VQ_ENTRY_MAX - 1)
209 enum {
210   TCA_GRED_VQ_UNSPEC,
211   TCA_GRED_VQ_PAD,
212   TCA_GRED_VQ_DP,
213   TCA_GRED_VQ_STAT_BYTES,
214   TCA_GRED_VQ_STAT_PACKETS,
215   TCA_GRED_VQ_STAT_BACKLOG,
216   TCA_GRED_VQ_STAT_PROB_DROP,
217   TCA_GRED_VQ_STAT_PROB_MARK,
218   TCA_GRED_VQ_STAT_FORCED_DROP,
219   TCA_GRED_VQ_STAT_FORCED_MARK,
220   TCA_GRED_VQ_STAT_PDROP,
221   TCA_GRED_VQ_STAT_OTHER,
222   TCA_GRED_VQ_FLAGS,
223   __TCA_GRED_VQ_MAX
224 };
225 #define TCA_GRED_VQ_MAX (__TCA_GRED_VQ_MAX - 1)
226 struct tc_gred_qopt {
227   __u32 limit;
228   __u32 qth_min;
229   __u32 qth_max;
230   __u32 DP;
231   __u32 backlog;
232   __u32 qave;
233   __u32 forced;
234   __u32 early;
235   __u32 other;
236   __u32 pdrop;
237   __u8 Wlog;
238   __u8 Plog;
239   __u8 Scell_log;
240   __u8 prio;
241   __u32 packets;
242   __u32 bytesin;
243 };
244 struct tc_gred_sopt {
245   __u32 DPs;
246   __u32 def_DP;
247   __u8 grio;
248   __u8 flags;
249   __u16 pad1;
250 };
251 enum {
252   TCA_CHOKE_UNSPEC,
253   TCA_CHOKE_PARMS,
254   TCA_CHOKE_STAB,
255   TCA_CHOKE_MAX_P,
256   __TCA_CHOKE_MAX,
257 };
258 #define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1)
259 struct tc_choke_qopt {
260   __u32 limit;
261   __u32 qth_min;
262   __u32 qth_max;
263   unsigned char Wlog;
264   unsigned char Plog;
265   unsigned char Scell_log;
266   unsigned char flags;
267 };
268 struct tc_choke_xstats {
269   __u32 early;
270   __u32 pdrop;
271   __u32 other;
272   __u32 marked;
273   __u32 matched;
274 };
275 #define TC_HTB_NUMPRIO 8
276 #define TC_HTB_MAXDEPTH 8
277 #define TC_HTB_PROTOVER 3
278 struct tc_htb_opt {
279   struct tc_ratespec rate;
280   struct tc_ratespec ceil;
281   __u32 buffer;
282   __u32 cbuffer;
283   __u32 quantum;
284   __u32 level;
285   __u32 prio;
286 };
287 struct tc_htb_glob {
288   __u32 version;
289   __u32 rate2quantum;
290   __u32 defcls;
291   __u32 debug;
292   __u32 direct_pkts;
293 };
294 enum {
295   TCA_HTB_UNSPEC,
296   TCA_HTB_PARMS,
297   TCA_HTB_INIT,
298   TCA_HTB_CTAB,
299   TCA_HTB_RTAB,
300   TCA_HTB_DIRECT_QLEN,
301   TCA_HTB_RATE64,
302   TCA_HTB_CEIL64,
303   TCA_HTB_PAD,
304   __TCA_HTB_MAX,
305 };
306 #define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
307 struct tc_htb_xstats {
308   __u32 lends;
309   __u32 borrows;
310   __u32 giants;
311   __s32 tokens;
312   __s32 ctokens;
313 };
314 struct tc_hfsc_qopt {
315   __u16 defcls;
316 };
317 struct tc_service_curve {
318   __u32 m1;
319   __u32 d;
320   __u32 m2;
321 };
322 struct tc_hfsc_stats {
323   __u64 work;
324   __u64 rtwork;
325   __u32 period;
326   __u32 level;
327 };
328 enum {
329   TCA_HFSC_UNSPEC,
330   TCA_HFSC_RSC,
331   TCA_HFSC_FSC,
332   TCA_HFSC_USC,
333   __TCA_HFSC_MAX,
334 };
335 #define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
336 #define TC_CBQ_MAXPRIO 8
337 #define TC_CBQ_MAXLEVEL 8
338 #define TC_CBQ_DEF_EWMA 5
339 struct tc_cbq_lssopt {
340   unsigned char change;
341   unsigned char flags;
342 #define TCF_CBQ_LSS_BOUNDED 1
343 #define TCF_CBQ_LSS_ISOLATED 2
344   unsigned char ewma_log;
345   unsigned char level;
346 #define TCF_CBQ_LSS_FLAGS 1
347 #define TCF_CBQ_LSS_EWMA 2
348 #define TCF_CBQ_LSS_MAXIDLE 4
349 #define TCF_CBQ_LSS_MINIDLE 8
350 #define TCF_CBQ_LSS_OFFTIME 0x10
351 #define TCF_CBQ_LSS_AVPKT 0x20
352   __u32 maxidle;
353   __u32 minidle;
354   __u32 offtime;
355   __u32 avpkt;
356 };
357 struct tc_cbq_wrropt {
358   unsigned char flags;
359   unsigned char priority;
360   unsigned char cpriority;
361   unsigned char __reserved;
362   __u32 allot;
363   __u32 weight;
364 };
365 struct tc_cbq_ovl {
366   unsigned char strategy;
367 #define TC_CBQ_OVL_CLASSIC 0
368 #define TC_CBQ_OVL_DELAY 1
369 #define TC_CBQ_OVL_LOWPRIO 2
370 #define TC_CBQ_OVL_DROP 3
371 #define TC_CBQ_OVL_RCLASSIC 4
372   unsigned char priority2;
373   __u16 pad;
374   __u32 penalty;
375 };
376 struct tc_cbq_police {
377   unsigned char police;
378   unsigned char __res1;
379   unsigned short __res2;
380 };
381 struct tc_cbq_fopt {
382   __u32 split;
383   __u32 defmap;
384   __u32 defchange;
385 };
386 struct tc_cbq_xstats {
387   __u32 borrows;
388   __u32 overactions;
389   __s32 avgidle;
390   __s32 undertime;
391 };
392 enum {
393   TCA_CBQ_UNSPEC,
394   TCA_CBQ_LSSOPT,
395   TCA_CBQ_WRROPT,
396   TCA_CBQ_FOPT,
397   TCA_CBQ_OVL_STRATEGY,
398   TCA_CBQ_RATE,
399   TCA_CBQ_RTAB,
400   TCA_CBQ_POLICE,
401   __TCA_CBQ_MAX,
402 };
403 #define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1)
404 enum {
405   TCA_DSMARK_UNSPEC,
406   TCA_DSMARK_INDICES,
407   TCA_DSMARK_DEFAULT_INDEX,
408   TCA_DSMARK_SET_TC_INDEX,
409   TCA_DSMARK_MASK,
410   TCA_DSMARK_VALUE,
411   __TCA_DSMARK_MAX,
412 };
413 #define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
414 enum {
415   TCA_ATM_UNSPEC,
416   TCA_ATM_FD,
417   TCA_ATM_PTR,
418   TCA_ATM_HDR,
419   TCA_ATM_EXCESS,
420   TCA_ATM_ADDR,
421   TCA_ATM_STATE,
422   __TCA_ATM_MAX,
423 };
424 #define TCA_ATM_MAX (__TCA_ATM_MAX - 1)
425 enum {
426   TCA_NETEM_UNSPEC,
427   TCA_NETEM_CORR,
428   TCA_NETEM_DELAY_DIST,
429   TCA_NETEM_REORDER,
430   TCA_NETEM_CORRUPT,
431   TCA_NETEM_LOSS,
432   TCA_NETEM_RATE,
433   TCA_NETEM_ECN,
434   TCA_NETEM_RATE64,
435   TCA_NETEM_PAD,
436   TCA_NETEM_LATENCY64,
437   TCA_NETEM_JITTER64,
438   TCA_NETEM_SLOT,
439   TCA_NETEM_SLOT_DIST,
440   __TCA_NETEM_MAX,
441 };
442 #define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
443 struct tc_netem_qopt {
444   __u32 latency;
445   __u32 limit;
446   __u32 loss;
447   __u32 gap;
448   __u32 duplicate;
449   __u32 jitter;
450 };
451 struct tc_netem_corr {
452   __u32 delay_corr;
453   __u32 loss_corr;
454   __u32 dup_corr;
455 };
456 struct tc_netem_reorder {
457   __u32 probability;
458   __u32 correlation;
459 };
460 struct tc_netem_corrupt {
461   __u32 probability;
462   __u32 correlation;
463 };
464 struct tc_netem_rate {
465   __u32 rate;
466   __s32 packet_overhead;
467   __u32 cell_size;
468   __s32 cell_overhead;
469 };
470 struct tc_netem_slot {
471   __s64 min_delay;
472   __s64 max_delay;
473   __s32 max_packets;
474   __s32 max_bytes;
475   __s64 dist_delay;
476   __s64 dist_jitter;
477 };
478 enum {
479   NETEM_LOSS_UNSPEC,
480   NETEM_LOSS_GI,
481   NETEM_LOSS_GE,
482   __NETEM_LOSS_MAX
483 };
484 #define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
485 struct tc_netem_gimodel {
486   __u32 p13;
487   __u32 p31;
488   __u32 p32;
489   __u32 p14;
490   __u32 p23;
491 };
492 struct tc_netem_gemodel {
493   __u32 p;
494   __u32 r;
495   __u32 h;
496   __u32 k1;
497 };
498 #define NETEM_DIST_SCALE 8192
499 #define NETEM_DIST_MAX 16384
500 enum {
501   TCA_DRR_UNSPEC,
502   TCA_DRR_QUANTUM,
503   __TCA_DRR_MAX
504 };
505 #define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
506 struct tc_drr_stats {
507   __u32 deficit;
508 };
509 #define TC_QOPT_BITMASK 15
510 #define TC_QOPT_MAX_QUEUE 16
511 enum {
512   TC_MQPRIO_HW_OFFLOAD_NONE,
513   TC_MQPRIO_HW_OFFLOAD_TCS,
514   __TC_MQPRIO_HW_OFFLOAD_MAX
515 };
516 #define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1)
517 enum {
518   TC_MQPRIO_MODE_DCB,
519   TC_MQPRIO_MODE_CHANNEL,
520   __TC_MQPRIO_MODE_MAX
521 };
522 #define __TC_MQPRIO_MODE_MAX (__TC_MQPRIO_MODE_MAX - 1)
523 enum {
524   TC_MQPRIO_SHAPER_DCB,
525   TC_MQPRIO_SHAPER_BW_RATE,
526   __TC_MQPRIO_SHAPER_MAX
527 };
528 #define __TC_MQPRIO_SHAPER_MAX (__TC_MQPRIO_SHAPER_MAX - 1)
529 struct tc_mqprio_qopt {
530   __u8 num_tc;
531   __u8 prio_tc_map[TC_QOPT_BITMASK + 1];
532   __u8 hw;
533   __u16 count[TC_QOPT_MAX_QUEUE];
534   __u16 offset[TC_QOPT_MAX_QUEUE];
535 };
536 #define TC_MQPRIO_F_MODE 0x1
537 #define TC_MQPRIO_F_SHAPER 0x2
538 #define TC_MQPRIO_F_MIN_RATE 0x4
539 #define TC_MQPRIO_F_MAX_RATE 0x8
540 enum {
541   TCA_MQPRIO_UNSPEC,
542   TCA_MQPRIO_MODE,
543   TCA_MQPRIO_SHAPER,
544   TCA_MQPRIO_MIN_RATE64,
545   TCA_MQPRIO_MAX_RATE64,
546   __TCA_MQPRIO_MAX,
547 };
548 #define TCA_MQPRIO_MAX (__TCA_MQPRIO_MAX - 1)
549 enum {
550   TCA_SFB_UNSPEC,
551   TCA_SFB_PARMS,
552   __TCA_SFB_MAX,
553 };
554 #define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
555 struct tc_sfb_qopt {
556   __u32 rehash_interval;
557   __u32 warmup_time;
558   __u32 max;
559   __u32 bin_size;
560   __u32 increment;
561   __u32 decrement;
562   __u32 limit;
563   __u32 penalty_rate;
564   __u32 penalty_burst;
565 };
566 struct tc_sfb_xstats {
567   __u32 earlydrop;
568   __u32 penaltydrop;
569   __u32 bucketdrop;
570   __u32 queuedrop;
571   __u32 childdrop;
572   __u32 marked;
573   __u32 maxqlen;
574   __u32 maxprob;
575   __u32 avgprob;
576 };
577 #define SFB_MAX_PROB 0xFFFF
578 enum {
579   TCA_QFQ_UNSPEC,
580   TCA_QFQ_WEIGHT,
581   TCA_QFQ_LMAX,
582   __TCA_QFQ_MAX
583 };
584 #define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1)
585 struct tc_qfq_stats {
586   __u32 weight;
587   __u32 lmax;
588 };
589 enum {
590   TCA_CODEL_UNSPEC,
591   TCA_CODEL_TARGET,
592   TCA_CODEL_LIMIT,
593   TCA_CODEL_INTERVAL,
594   TCA_CODEL_ECN,
595   TCA_CODEL_CE_THRESHOLD,
596   __TCA_CODEL_MAX
597 };
598 #define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1)
599 struct tc_codel_xstats {
600   __u32 maxpacket;
601   __u32 count;
602   __u32 lastcount;
603   __u32 ldelay;
604   __s32 drop_next;
605   __u32 drop_overlimit;
606   __u32 ecn_mark;
607   __u32 dropping;
608   __u32 ce_mark;
609 };
610 enum {
611   TCA_FQ_CODEL_UNSPEC,
612   TCA_FQ_CODEL_TARGET,
613   TCA_FQ_CODEL_LIMIT,
614   TCA_FQ_CODEL_INTERVAL,
615   TCA_FQ_CODEL_ECN,
616   TCA_FQ_CODEL_FLOWS,
617   TCA_FQ_CODEL_QUANTUM,
618   TCA_FQ_CODEL_CE_THRESHOLD,
619   TCA_FQ_CODEL_DROP_BATCH_SIZE,
620   TCA_FQ_CODEL_MEMORY_LIMIT,
621   __TCA_FQ_CODEL_MAX
622 };
623 #define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1)
624 enum {
625   TCA_FQ_CODEL_XSTATS_QDISC,
626   TCA_FQ_CODEL_XSTATS_CLASS,
627 };
628 struct tc_fq_codel_qd_stats {
629   __u32 maxpacket;
630   __u32 drop_overlimit;
631   __u32 ecn_mark;
632   __u32 new_flow_count;
633   __u32 new_flows_len;
634   __u32 old_flows_len;
635   __u32 ce_mark;
636   __u32 memory_usage;
637   __u32 drop_overmemory;
638 };
639 struct tc_fq_codel_cl_stats {
640   __s32 deficit;
641   __u32 ldelay;
642   __u32 count;
643   __u32 lastcount;
644   __u32 dropping;
645   __s32 drop_next;
646 };
647 struct tc_fq_codel_xstats {
648   __u32 type;
649   union {
650     struct tc_fq_codel_qd_stats qdisc_stats;
651     struct tc_fq_codel_cl_stats class_stats;
652   };
653 };
654 enum {
655   TCA_FQ_UNSPEC,
656   TCA_FQ_PLIMIT,
657   TCA_FQ_FLOW_PLIMIT,
658   TCA_FQ_QUANTUM,
659   TCA_FQ_INITIAL_QUANTUM,
660   TCA_FQ_RATE_ENABLE,
661   TCA_FQ_FLOW_DEFAULT_RATE,
662   TCA_FQ_FLOW_MAX_RATE,
663   TCA_FQ_BUCKETS_LOG,
664   TCA_FQ_FLOW_REFILL_DELAY,
665   TCA_FQ_ORPHAN_MASK,
666   TCA_FQ_LOW_RATE_THRESHOLD,
667   TCA_FQ_CE_THRESHOLD,
668   __TCA_FQ_MAX
669 };
670 #define TCA_FQ_MAX (__TCA_FQ_MAX - 1)
671 struct tc_fq_qd_stats {
672   __u64 gc_flows;
673   __u64 highprio_packets;
674   __u64 tcp_retrans;
675   __u64 throttled;
676   __u64 flows_plimit;
677   __u64 pkts_too_long;
678   __u64 allocation_errors;
679   __s64 time_next_delayed_flow;
680   __u32 flows;
681   __u32 inactive_flows;
682   __u32 throttled_flows;
683   __u32 unthrottle_latency_ns;
684   __u64 ce_mark;
685 };
686 enum {
687   TCA_HHF_UNSPEC,
688   TCA_HHF_BACKLOG_LIMIT,
689   TCA_HHF_QUANTUM,
690   TCA_HHF_HH_FLOWS_LIMIT,
691   TCA_HHF_RESET_TIMEOUT,
692   TCA_HHF_ADMIT_BYTES,
693   TCA_HHF_EVICT_TIMEOUT,
694   TCA_HHF_NON_HH_WEIGHT,
695   __TCA_HHF_MAX
696 };
697 #define TCA_HHF_MAX (__TCA_HHF_MAX - 1)
698 struct tc_hhf_xstats {
699   __u32 drop_overlimit;
700   __u32 hh_overlimit;
701   __u32 hh_tot_count;
702   __u32 hh_cur_count;
703 };
704 enum {
705   TCA_PIE_UNSPEC,
706   TCA_PIE_TARGET,
707   TCA_PIE_LIMIT,
708   TCA_PIE_TUPDATE,
709   TCA_PIE_ALPHA,
710   TCA_PIE_BETA,
711   TCA_PIE_ECN,
712   TCA_PIE_BYTEMODE,
713   TCA_PIE_DQ_RATE_ESTIMATOR,
714   __TCA_PIE_MAX
715 };
716 #define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
717 struct tc_pie_xstats {
718   __u64 prob;
719   __u32 delay;
720   __u32 avg_dq_rate;
721   __u32 dq_rate_estimating;
722   __u32 packets_in;
723   __u32 dropped;
724   __u32 overlimit;
725   __u32 maxq;
726   __u32 ecn_mark;
727 };
728 struct tc_cbs_qopt {
729   __u8 offload;
730   __u8 _pad[3];
731   __s32 hicredit;
732   __s32 locredit;
733   __s32 idleslope;
734   __s32 sendslope;
735 };
736 enum {
737   TCA_CBS_UNSPEC,
738   TCA_CBS_PARMS,
739   __TCA_CBS_MAX,
740 };
741 #define TCA_CBS_MAX (__TCA_CBS_MAX - 1)
742 struct tc_etf_qopt {
743   __s32 delta;
744   __s32 clockid;
745   __u32 flags;
746 #define TC_ETF_DEADLINE_MODE_ON _BITUL(0)
747 #define TC_ETF_OFFLOAD_ON _BITUL(1)
748 #define TC_ETF_SKIP_SOCK_CHECK _BITUL(2)
749 };
750 enum {
751   TCA_ETF_UNSPEC,
752   TCA_ETF_PARMS,
753   __TCA_ETF_MAX,
754 };
755 #define TCA_ETF_MAX (__TCA_ETF_MAX - 1)
756 enum {
757   TCA_CAKE_UNSPEC,
758   TCA_CAKE_PAD,
759   TCA_CAKE_BASE_RATE64,
760   TCA_CAKE_DIFFSERV_MODE,
761   TCA_CAKE_ATM,
762   TCA_CAKE_FLOW_MODE,
763   TCA_CAKE_OVERHEAD,
764   TCA_CAKE_RTT,
765   TCA_CAKE_TARGET,
766   TCA_CAKE_AUTORATE,
767   TCA_CAKE_MEMORY,
768   TCA_CAKE_NAT,
769   TCA_CAKE_RAW,
770   TCA_CAKE_WASH,
771   TCA_CAKE_MPU,
772   TCA_CAKE_INGRESS,
773   TCA_CAKE_ACK_FILTER,
774   TCA_CAKE_SPLIT_GSO,
775   TCA_CAKE_FWMARK,
776   __TCA_CAKE_MAX
777 };
778 #define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1)
779 enum {
780   __TCA_CAKE_STATS_INVALID,
781   TCA_CAKE_STATS_PAD,
782   TCA_CAKE_STATS_CAPACITY_ESTIMATE64,
783   TCA_CAKE_STATS_MEMORY_LIMIT,
784   TCA_CAKE_STATS_MEMORY_USED,
785   TCA_CAKE_STATS_AVG_NETOFF,
786   TCA_CAKE_STATS_MIN_NETLEN,
787   TCA_CAKE_STATS_MAX_NETLEN,
788   TCA_CAKE_STATS_MIN_ADJLEN,
789   TCA_CAKE_STATS_MAX_ADJLEN,
790   TCA_CAKE_STATS_TIN_STATS,
791   TCA_CAKE_STATS_DEFICIT,
792   TCA_CAKE_STATS_COBALT_COUNT,
793   TCA_CAKE_STATS_DROPPING,
794   TCA_CAKE_STATS_DROP_NEXT_US,
795   TCA_CAKE_STATS_P_DROP,
796   TCA_CAKE_STATS_BLUE_TIMER_US,
797   __TCA_CAKE_STATS_MAX
798 };
799 #define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1)
800 enum {
801   __TCA_CAKE_TIN_STATS_INVALID,
802   TCA_CAKE_TIN_STATS_PAD,
803   TCA_CAKE_TIN_STATS_SENT_PACKETS,
804   TCA_CAKE_TIN_STATS_SENT_BYTES64,
805   TCA_CAKE_TIN_STATS_DROPPED_PACKETS,
806   TCA_CAKE_TIN_STATS_DROPPED_BYTES64,
807   TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS,
808   TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64,
809   TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS,
810   TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64,
811   TCA_CAKE_TIN_STATS_BACKLOG_PACKETS,
812   TCA_CAKE_TIN_STATS_BACKLOG_BYTES,
813   TCA_CAKE_TIN_STATS_THRESHOLD_RATE64,
814   TCA_CAKE_TIN_STATS_TARGET_US,
815   TCA_CAKE_TIN_STATS_INTERVAL_US,
816   TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS,
817   TCA_CAKE_TIN_STATS_WAY_MISSES,
818   TCA_CAKE_TIN_STATS_WAY_COLLISIONS,
819   TCA_CAKE_TIN_STATS_PEAK_DELAY_US,
820   TCA_CAKE_TIN_STATS_AVG_DELAY_US,
821   TCA_CAKE_TIN_STATS_BASE_DELAY_US,
822   TCA_CAKE_TIN_STATS_SPARSE_FLOWS,
823   TCA_CAKE_TIN_STATS_BULK_FLOWS,
824   TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS,
825   TCA_CAKE_TIN_STATS_MAX_SKBLEN,
826   TCA_CAKE_TIN_STATS_FLOW_QUANTUM,
827   __TCA_CAKE_TIN_STATS_MAX
828 };
829 #define TCA_CAKE_TIN_STATS_MAX (__TCA_CAKE_TIN_STATS_MAX - 1)
830 #define TC_CAKE_MAX_TINS (8)
831 enum {
832   CAKE_FLOW_NONE = 0,
833   CAKE_FLOW_SRC_IP,
834   CAKE_FLOW_DST_IP,
835   CAKE_FLOW_HOSTS,
836   CAKE_FLOW_FLOWS,
837   CAKE_FLOW_DUAL_SRC,
838   CAKE_FLOW_DUAL_DST,
839   CAKE_FLOW_TRIPLE,
840   CAKE_FLOW_MAX,
841 };
842 enum {
843   CAKE_DIFFSERV_DIFFSERV3 = 0,
844   CAKE_DIFFSERV_DIFFSERV4,
845   CAKE_DIFFSERV_DIFFSERV8,
846   CAKE_DIFFSERV_BESTEFFORT,
847   CAKE_DIFFSERV_PRECEDENCE,
848   CAKE_DIFFSERV_MAX
849 };
850 enum {
851   CAKE_ACK_NONE = 0,
852   CAKE_ACK_FILTER,
853   CAKE_ACK_AGGRESSIVE,
854   CAKE_ACK_MAX
855 };
856 enum {
857   CAKE_ATM_NONE = 0,
858   CAKE_ATM_ATM,
859   CAKE_ATM_PTM,
860   CAKE_ATM_MAX
861 };
862 enum {
863   TC_TAPRIO_CMD_SET_GATES = 0x00,
864   TC_TAPRIO_CMD_SET_AND_HOLD = 0x01,
865   TC_TAPRIO_CMD_SET_AND_RELEASE = 0x02,
866 };
867 enum {
868   TCA_TAPRIO_SCHED_ENTRY_UNSPEC,
869   TCA_TAPRIO_SCHED_ENTRY_INDEX,
870   TCA_TAPRIO_SCHED_ENTRY_CMD,
871   TCA_TAPRIO_SCHED_ENTRY_GATE_MASK,
872   TCA_TAPRIO_SCHED_ENTRY_INTERVAL,
873   __TCA_TAPRIO_SCHED_ENTRY_MAX,
874 };
875 #define TCA_TAPRIO_SCHED_ENTRY_MAX (__TCA_TAPRIO_SCHED_ENTRY_MAX - 1)
876 enum {
877   TCA_TAPRIO_SCHED_UNSPEC,
878   TCA_TAPRIO_SCHED_ENTRY,
879   __TCA_TAPRIO_SCHED_MAX,
880 };
881 #define TCA_TAPRIO_SCHED_MAX (__TCA_TAPRIO_SCHED_MAX - 1)
882 #define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST BIT(0)
883 #define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD BIT(1)
884 enum {
885   TCA_TAPRIO_ATTR_UNSPEC,
886   TCA_TAPRIO_ATTR_PRIOMAP,
887   TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
888   TCA_TAPRIO_ATTR_SCHED_BASE_TIME,
889   TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY,
890   TCA_TAPRIO_ATTR_SCHED_CLOCKID,
891   TCA_TAPRIO_PAD,
892   TCA_TAPRIO_ATTR_ADMIN_SCHED,
893   TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME,
894   TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,
895   TCA_TAPRIO_ATTR_FLAGS,
896   TCA_TAPRIO_ATTR_TXTIME_DELAY,
897   __TCA_TAPRIO_ATTR_MAX,
898 };
899 #define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
900 #endif
901