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/types.h>
22#define TC_PRIO_BESTEFFORT 0
23#define TC_PRIO_FILLER 1
24#define TC_PRIO_BULK 2
25#define TC_PRIO_INTERACTIVE_BULK 4
26#define TC_PRIO_INTERACTIVE 6
27#define TC_PRIO_CONTROL 7
28#define TC_PRIO_MAX 15
29struct tc_stats {
30  __u64 bytes;
31  __u32 packets;
32  __u32 drops;
33  __u32 overlimits;
34  __u32 bps;
35  __u32 pps;
36  __u32 qlen;
37  __u32 backlog;
38};
39struct tc_estimator {
40  signed char interval;
41  unsigned char ewma_log;
42};
43#define TC_H_MAJ_MASK (0xFFFF0000U)
44#define TC_H_MIN_MASK (0x0000FFFFU)
45#define TC_H_MAJ(h) ((h) & TC_H_MAJ_MASK)
46#define TC_H_MIN(h) ((h) & TC_H_MIN_MASK)
47#define TC_H_MAKE(maj,min) (((maj) & TC_H_MAJ_MASK) | ((min) & TC_H_MIN_MASK))
48#define TC_H_UNSPEC (0U)
49#define TC_H_ROOT (0xFFFFFFFFU)
50#define TC_H_INGRESS (0xFFFFFFF1U)
51#define TC_H_CLSACT TC_H_INGRESS
52#define TC_H_MIN_PRIORITY 0xFFE0U
53#define TC_H_MIN_INGRESS 0xFFF2U
54#define TC_H_MIN_EGRESS 0xFFF3U
55enum tc_link_layer {
56  TC_LINKLAYER_UNAWARE,
57  TC_LINKLAYER_ETHERNET,
58  TC_LINKLAYER_ATM,
59};
60#define TC_LINKLAYER_MASK 0x0F
61struct tc_ratespec {
62  unsigned char cell_log;
63  __u8 linklayer;
64  unsigned short overhead;
65  short cell_align;
66  unsigned short mpu;
67  __u32 rate;
68};
69#define TC_RTAB_SIZE 1024
70struct tc_sizespec {
71  unsigned char cell_log;
72  unsigned char size_log;
73  short cell_align;
74  int overhead;
75  unsigned int linklayer;
76  unsigned int mpu;
77  unsigned int mtu;
78  unsigned int tsize;
79};
80enum {
81  TCA_STAB_UNSPEC,
82  TCA_STAB_BASE,
83  TCA_STAB_DATA,
84  __TCA_STAB_MAX
85};
86#define TCA_STAB_MAX (__TCA_STAB_MAX - 1)
87struct tc_fifo_qopt {
88  __u32 limit;
89};
90#define TCQ_PRIO_BANDS 16
91#define TCQ_MIN_PRIO_BANDS 2
92struct tc_prio_qopt {
93  int bands;
94  __u8 priomap[TC_PRIO_MAX + 1];
95};
96struct tc_multiq_qopt {
97  __u16 bands;
98  __u16 max_bands;
99};
100#define TCQ_PLUG_BUFFER 0
101#define TCQ_PLUG_RELEASE_ONE 1
102#define TCQ_PLUG_RELEASE_INDEFINITE 2
103#define TCQ_PLUG_LIMIT 3
104struct tc_plug_qopt {
105  int action;
106  __u32 limit;
107};
108struct tc_tbf_qopt {
109  struct tc_ratespec rate;
110  struct tc_ratespec peakrate;
111  __u32 limit;
112  __u32 buffer;
113  __u32 mtu;
114};
115enum {
116  TCA_TBF_UNSPEC,
117  TCA_TBF_PARMS,
118  TCA_TBF_RTAB,
119  TCA_TBF_PTAB,
120  TCA_TBF_RATE64,
121  TCA_TBF_PRATE64,
122  TCA_TBF_BURST,
123  TCA_TBF_PBURST,
124  TCA_TBF_PAD,
125  __TCA_TBF_MAX,
126};
127#define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
128struct tc_sfq_qopt {
129  unsigned quantum;
130  int perturb_period;
131  __u32 limit;
132  unsigned divisor;
133  unsigned flows;
134};
135struct tc_sfqred_stats {
136  __u32 prob_drop;
137  __u32 forced_drop;
138  __u32 prob_mark;
139  __u32 forced_mark;
140  __u32 prob_mark_head;
141  __u32 forced_mark_head;
142};
143struct tc_sfq_qopt_v1 {
144  struct tc_sfq_qopt v0;
145  unsigned int depth;
146  unsigned int headdrop;
147  __u32 limit;
148  __u32 qth_min;
149  __u32 qth_max;
150  unsigned char Wlog;
151  unsigned char Plog;
152  unsigned char Scell_log;
153  unsigned char flags;
154  __u32 max_P;
155  struct tc_sfqred_stats stats;
156};
157struct tc_sfq_xstats {
158  __s32 allot;
159};
160enum {
161  TCA_RED_UNSPEC,
162  TCA_RED_PARMS,
163  TCA_RED_STAB,
164  TCA_RED_MAX_P,
165  __TCA_RED_MAX,
166};
167#define TCA_RED_MAX (__TCA_RED_MAX - 1)
168struct tc_red_qopt {
169  __u32 limit;
170  __u32 qth_min;
171  __u32 qth_max;
172  unsigned char Wlog;
173  unsigned char Plog;
174  unsigned char Scell_log;
175  unsigned char flags;
176#define TC_RED_ECN 1
177#define TC_RED_HARDDROP 2
178#define TC_RED_ADAPTATIVE 4
179};
180struct tc_red_xstats {
181  __u32 early;
182  __u32 pdrop;
183  __u32 other;
184  __u32 marked;
185};
186#define MAX_DPs 16
187enum {
188  TCA_GRED_UNSPEC,
189  TCA_GRED_PARMS,
190  TCA_GRED_STAB,
191  TCA_GRED_DPS,
192  TCA_GRED_MAX_P,
193  TCA_GRED_LIMIT,
194  __TCA_GRED_MAX,
195};
196#define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
197struct tc_gred_qopt {
198  __u32 limit;
199  __u32 qth_min;
200  __u32 qth_max;
201  __u32 DP;
202  __u32 backlog;
203  __u32 qave;
204  __u32 forced;
205  __u32 early;
206  __u32 other;
207  __u32 pdrop;
208  __u8 Wlog;
209  __u8 Plog;
210  __u8 Scell_log;
211  __u8 prio;
212  __u32 packets;
213  __u32 bytesin;
214};
215struct tc_gred_sopt {
216  __u32 DPs;
217  __u32 def_DP;
218  __u8 grio;
219  __u8 flags;
220  __u16 pad1;
221};
222enum {
223  TCA_CHOKE_UNSPEC,
224  TCA_CHOKE_PARMS,
225  TCA_CHOKE_STAB,
226  TCA_CHOKE_MAX_P,
227  __TCA_CHOKE_MAX,
228};
229#define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1)
230struct tc_choke_qopt {
231  __u32 limit;
232  __u32 qth_min;
233  __u32 qth_max;
234  unsigned char Wlog;
235  unsigned char Plog;
236  unsigned char Scell_log;
237  unsigned char flags;
238};
239struct tc_choke_xstats {
240  __u32 early;
241  __u32 pdrop;
242  __u32 other;
243  __u32 marked;
244  __u32 matched;
245};
246#define TC_HTB_NUMPRIO 8
247#define TC_HTB_MAXDEPTH 8
248#define TC_HTB_PROTOVER 3
249struct tc_htb_opt {
250  struct tc_ratespec rate;
251  struct tc_ratespec ceil;
252  __u32 buffer;
253  __u32 cbuffer;
254  __u32 quantum;
255  __u32 level;
256  __u32 prio;
257};
258struct tc_htb_glob {
259  __u32 version;
260  __u32 rate2quantum;
261  __u32 defcls;
262  __u32 debug;
263  __u32 direct_pkts;
264};
265enum {
266  TCA_HTB_UNSPEC,
267  TCA_HTB_PARMS,
268  TCA_HTB_INIT,
269  TCA_HTB_CTAB,
270  TCA_HTB_RTAB,
271  TCA_HTB_DIRECT_QLEN,
272  TCA_HTB_RATE64,
273  TCA_HTB_CEIL64,
274  TCA_HTB_PAD,
275  __TCA_HTB_MAX,
276};
277#define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
278struct tc_htb_xstats {
279  __u32 lends;
280  __u32 borrows;
281  __u32 giants;
282  __u32 tokens;
283  __u32 ctokens;
284};
285struct tc_hfsc_qopt {
286  __u16 defcls;
287};
288struct tc_service_curve {
289  __u32 m1;
290  __u32 d;
291  __u32 m2;
292};
293struct tc_hfsc_stats {
294  __u64 work;
295  __u64 rtwork;
296  __u32 period;
297  __u32 level;
298};
299enum {
300  TCA_HFSC_UNSPEC,
301  TCA_HFSC_RSC,
302  TCA_HFSC_FSC,
303  TCA_HFSC_USC,
304  __TCA_HFSC_MAX,
305};
306#define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
307#define TC_CBQ_MAXPRIO 8
308#define TC_CBQ_MAXLEVEL 8
309#define TC_CBQ_DEF_EWMA 5
310struct tc_cbq_lssopt {
311  unsigned char change;
312  unsigned char flags;
313#define TCF_CBQ_LSS_BOUNDED 1
314#define TCF_CBQ_LSS_ISOLATED 2
315  unsigned char ewma_log;
316  unsigned char level;
317#define TCF_CBQ_LSS_FLAGS 1
318#define TCF_CBQ_LSS_EWMA 2
319#define TCF_CBQ_LSS_MAXIDLE 4
320#define TCF_CBQ_LSS_MINIDLE 8
321#define TCF_CBQ_LSS_OFFTIME 0x10
322#define TCF_CBQ_LSS_AVPKT 0x20
323  __u32 maxidle;
324  __u32 minidle;
325  __u32 offtime;
326  __u32 avpkt;
327};
328struct tc_cbq_wrropt {
329  unsigned char flags;
330  unsigned char priority;
331  unsigned char cpriority;
332  unsigned char __reserved;
333  __u32 allot;
334  __u32 weight;
335};
336struct tc_cbq_ovl {
337  unsigned char strategy;
338#define TC_CBQ_OVL_CLASSIC 0
339#define TC_CBQ_OVL_DELAY 1
340#define TC_CBQ_OVL_LOWPRIO 2
341#define TC_CBQ_OVL_DROP 3
342#define TC_CBQ_OVL_RCLASSIC 4
343  unsigned char priority2;
344  __u16 pad;
345  __u32 penalty;
346};
347struct tc_cbq_police {
348  unsigned char police;
349  unsigned char __res1;
350  unsigned short __res2;
351};
352struct tc_cbq_fopt {
353  __u32 split;
354  __u32 defmap;
355  __u32 defchange;
356};
357struct tc_cbq_xstats {
358  __u32 borrows;
359  __u32 overactions;
360  __s32 avgidle;
361  __s32 undertime;
362};
363enum {
364  TCA_CBQ_UNSPEC,
365  TCA_CBQ_LSSOPT,
366  TCA_CBQ_WRROPT,
367  TCA_CBQ_FOPT,
368  TCA_CBQ_OVL_STRATEGY,
369  TCA_CBQ_RATE,
370  TCA_CBQ_RTAB,
371  TCA_CBQ_POLICE,
372  __TCA_CBQ_MAX,
373};
374#define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1)
375enum {
376  TCA_DSMARK_UNSPEC,
377  TCA_DSMARK_INDICES,
378  TCA_DSMARK_DEFAULT_INDEX,
379  TCA_DSMARK_SET_TC_INDEX,
380  TCA_DSMARK_MASK,
381  TCA_DSMARK_VALUE,
382  __TCA_DSMARK_MAX,
383};
384#define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
385enum {
386  TCA_ATM_UNSPEC,
387  TCA_ATM_FD,
388  TCA_ATM_PTR,
389  TCA_ATM_HDR,
390  TCA_ATM_EXCESS,
391  TCA_ATM_ADDR,
392  TCA_ATM_STATE,
393  __TCA_ATM_MAX,
394};
395#define TCA_ATM_MAX (__TCA_ATM_MAX - 1)
396enum {
397  TCA_NETEM_UNSPEC,
398  TCA_NETEM_CORR,
399  TCA_NETEM_DELAY_DIST,
400  TCA_NETEM_REORDER,
401  TCA_NETEM_CORRUPT,
402  TCA_NETEM_LOSS,
403  TCA_NETEM_RATE,
404  TCA_NETEM_ECN,
405  TCA_NETEM_RATE64,
406  TCA_NETEM_PAD,
407  TCA_NETEM_LATENCY64,
408  TCA_NETEM_JITTER64,
409  TCA_NETEM_SLOT,
410  __TCA_NETEM_MAX,
411};
412#define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
413struct tc_netem_qopt {
414  __u32 latency;
415  __u32 limit;
416  __u32 loss;
417  __u32 gap;
418  __u32 duplicate;
419  __u32 jitter;
420};
421struct tc_netem_corr {
422  __u32 delay_corr;
423  __u32 loss_corr;
424  __u32 dup_corr;
425};
426struct tc_netem_reorder {
427  __u32 probability;
428  __u32 correlation;
429};
430struct tc_netem_corrupt {
431  __u32 probability;
432  __u32 correlation;
433};
434struct tc_netem_rate {
435  __u32 rate;
436  __s32 packet_overhead;
437  __u32 cell_size;
438  __s32 cell_overhead;
439};
440struct tc_netem_slot {
441  __s64 min_delay;
442  __s64 max_delay;
443  __s32 max_packets;
444  __s32 max_bytes;
445};
446enum {
447  NETEM_LOSS_UNSPEC,
448  NETEM_LOSS_GI,
449  NETEM_LOSS_GE,
450  __NETEM_LOSS_MAX
451};
452#define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
453struct tc_netem_gimodel {
454  __u32 p13;
455  __u32 p31;
456  __u32 p32;
457  __u32 p14;
458  __u32 p23;
459};
460struct tc_netem_gemodel {
461  __u32 p;
462  __u32 r;
463  __u32 h;
464  __u32 k1;
465};
466#define NETEM_DIST_SCALE 8192
467#define NETEM_DIST_MAX 16384
468enum {
469  TCA_DRR_UNSPEC,
470  TCA_DRR_QUANTUM,
471  __TCA_DRR_MAX
472};
473#define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
474struct tc_drr_stats {
475  __u32 deficit;
476};
477#define TC_QOPT_BITMASK 15
478#define TC_QOPT_MAX_QUEUE 16
479enum {
480  TC_MQPRIO_HW_OFFLOAD_NONE,
481  TC_MQPRIO_HW_OFFLOAD_TCS,
482  __TC_MQPRIO_HW_OFFLOAD_MAX
483};
484#define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1)
485enum {
486  TC_MQPRIO_MODE_DCB,
487  TC_MQPRIO_MODE_CHANNEL,
488  __TC_MQPRIO_MODE_MAX
489};
490#define __TC_MQPRIO_MODE_MAX (__TC_MQPRIO_MODE_MAX - 1)
491enum {
492  TC_MQPRIO_SHAPER_DCB,
493  TC_MQPRIO_SHAPER_BW_RATE,
494  __TC_MQPRIO_SHAPER_MAX
495};
496#define __TC_MQPRIO_SHAPER_MAX (__TC_MQPRIO_SHAPER_MAX - 1)
497struct tc_mqprio_qopt {
498  __u8 num_tc;
499  __u8 prio_tc_map[TC_QOPT_BITMASK + 1];
500  __u8 hw;
501  __u16 count[TC_QOPT_MAX_QUEUE];
502  __u16 offset[TC_QOPT_MAX_QUEUE];
503};
504#define TC_MQPRIO_F_MODE 0x1
505#define TC_MQPRIO_F_SHAPER 0x2
506#define TC_MQPRIO_F_MIN_RATE 0x4
507#define TC_MQPRIO_F_MAX_RATE 0x8
508enum {
509  TCA_MQPRIO_UNSPEC,
510  TCA_MQPRIO_MODE,
511  TCA_MQPRIO_SHAPER,
512  TCA_MQPRIO_MIN_RATE64,
513  TCA_MQPRIO_MAX_RATE64,
514  __TCA_MQPRIO_MAX,
515};
516#define TCA_MQPRIO_MAX (__TCA_MQPRIO_MAX - 1)
517enum {
518  TCA_SFB_UNSPEC,
519  TCA_SFB_PARMS,
520  __TCA_SFB_MAX,
521};
522#define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
523struct tc_sfb_qopt {
524  __u32 rehash_interval;
525  __u32 warmup_time;
526  __u32 max;
527  __u32 bin_size;
528  __u32 increment;
529  __u32 decrement;
530  __u32 limit;
531  __u32 penalty_rate;
532  __u32 penalty_burst;
533};
534struct tc_sfb_xstats {
535  __u32 earlydrop;
536  __u32 penaltydrop;
537  __u32 bucketdrop;
538  __u32 queuedrop;
539  __u32 childdrop;
540  __u32 marked;
541  __u32 maxqlen;
542  __u32 maxprob;
543  __u32 avgprob;
544};
545#define SFB_MAX_PROB 0xFFFF
546enum {
547  TCA_QFQ_UNSPEC,
548  TCA_QFQ_WEIGHT,
549  TCA_QFQ_LMAX,
550  __TCA_QFQ_MAX
551};
552#define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1)
553struct tc_qfq_stats {
554  __u32 weight;
555  __u32 lmax;
556};
557enum {
558  TCA_CODEL_UNSPEC,
559  TCA_CODEL_TARGET,
560  TCA_CODEL_LIMIT,
561  TCA_CODEL_INTERVAL,
562  TCA_CODEL_ECN,
563  TCA_CODEL_CE_THRESHOLD,
564  __TCA_CODEL_MAX
565};
566#define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1)
567struct tc_codel_xstats {
568  __u32 maxpacket;
569  __u32 count;
570  __u32 lastcount;
571  __u32 ldelay;
572  __s32 drop_next;
573  __u32 drop_overlimit;
574  __u32 ecn_mark;
575  __u32 dropping;
576  __u32 ce_mark;
577};
578enum {
579  TCA_FQ_CODEL_UNSPEC,
580  TCA_FQ_CODEL_TARGET,
581  TCA_FQ_CODEL_LIMIT,
582  TCA_FQ_CODEL_INTERVAL,
583  TCA_FQ_CODEL_ECN,
584  TCA_FQ_CODEL_FLOWS,
585  TCA_FQ_CODEL_QUANTUM,
586  TCA_FQ_CODEL_CE_THRESHOLD,
587  TCA_FQ_CODEL_DROP_BATCH_SIZE,
588  TCA_FQ_CODEL_MEMORY_LIMIT,
589  __TCA_FQ_CODEL_MAX
590};
591#define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1)
592enum {
593  TCA_FQ_CODEL_XSTATS_QDISC,
594  TCA_FQ_CODEL_XSTATS_CLASS,
595};
596struct tc_fq_codel_qd_stats {
597  __u32 maxpacket;
598  __u32 drop_overlimit;
599  __u32 ecn_mark;
600  __u32 new_flow_count;
601  __u32 new_flows_len;
602  __u32 old_flows_len;
603  __u32 ce_mark;
604  __u32 memory_usage;
605  __u32 drop_overmemory;
606};
607struct tc_fq_codel_cl_stats {
608  __s32 deficit;
609  __u32 ldelay;
610  __u32 count;
611  __u32 lastcount;
612  __u32 dropping;
613  __s32 drop_next;
614};
615struct tc_fq_codel_xstats {
616  __u32 type;
617  union {
618    struct tc_fq_codel_qd_stats qdisc_stats;
619    struct tc_fq_codel_cl_stats class_stats;
620  };
621};
622enum {
623  TCA_FQ_UNSPEC,
624  TCA_FQ_PLIMIT,
625  TCA_FQ_FLOW_PLIMIT,
626  TCA_FQ_QUANTUM,
627  TCA_FQ_INITIAL_QUANTUM,
628  TCA_FQ_RATE_ENABLE,
629  TCA_FQ_FLOW_DEFAULT_RATE,
630  TCA_FQ_FLOW_MAX_RATE,
631  TCA_FQ_BUCKETS_LOG,
632  TCA_FQ_FLOW_REFILL_DELAY,
633  TCA_FQ_ORPHAN_MASK,
634  TCA_FQ_LOW_RATE_THRESHOLD,
635  __TCA_FQ_MAX
636};
637#define TCA_FQ_MAX (__TCA_FQ_MAX - 1)
638struct tc_fq_qd_stats {
639  __u64 gc_flows;
640  __u64 highprio_packets;
641  __u64 tcp_retrans;
642  __u64 throttled;
643  __u64 flows_plimit;
644  __u64 pkts_too_long;
645  __u64 allocation_errors;
646  __s64 time_next_delayed_flow;
647  __u32 flows;
648  __u32 inactive_flows;
649  __u32 throttled_flows;
650  __u32 unthrottle_latency_ns;
651};
652enum {
653  TCA_HHF_UNSPEC,
654  TCA_HHF_BACKLOG_LIMIT,
655  TCA_HHF_QUANTUM,
656  TCA_HHF_HH_FLOWS_LIMIT,
657  TCA_HHF_RESET_TIMEOUT,
658  TCA_HHF_ADMIT_BYTES,
659  TCA_HHF_EVICT_TIMEOUT,
660  TCA_HHF_NON_HH_WEIGHT,
661  __TCA_HHF_MAX
662};
663#define TCA_HHF_MAX (__TCA_HHF_MAX - 1)
664struct tc_hhf_xstats {
665  __u32 drop_overlimit;
666  __u32 hh_overlimit;
667  __u32 hh_tot_count;
668  __u32 hh_cur_count;
669};
670enum {
671  TCA_PIE_UNSPEC,
672  TCA_PIE_TARGET,
673  TCA_PIE_LIMIT,
674  TCA_PIE_TUPDATE,
675  TCA_PIE_ALPHA,
676  TCA_PIE_BETA,
677  TCA_PIE_ECN,
678  TCA_PIE_BYTEMODE,
679  __TCA_PIE_MAX
680};
681#define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
682struct tc_pie_xstats {
683  __u32 prob;
684  __u32 delay;
685  __u32 avg_dq_rate;
686  __u32 packets_in;
687  __u32 dropped;
688  __u32 overlimit;
689  __u32 maxq;
690  __u32 ecn_mark;
691};
692struct tc_cbs_qopt {
693  __u8 offload;
694  __u8 _pad[3];
695  __s32 hicredit;
696  __s32 locredit;
697  __s32 idleslope;
698  __s32 sendslope;
699};
700enum {
701  TCA_CBS_UNSPEC,
702  TCA_CBS_PARMS,
703  __TCA_CBS_MAX,
704};
705#define TCA_CBS_MAX (__TCA_CBS_MAX - 1)
706#endif
707