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