• 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/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
29 struct 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 };
39 struct 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
55 enum tc_link_layer {
56   TC_LINKLAYER_UNAWARE,
57   TC_LINKLAYER_ETHERNET,
58   TC_LINKLAYER_ATM,
59 };
60 #define TC_LINKLAYER_MASK 0x0F
61 struct 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
70 struct 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 };
80 enum {
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)
87 struct tc_fifo_qopt {
88   __u32 limit;
89 };
90 #define TCQ_PRIO_BANDS 16
91 #define TCQ_MIN_PRIO_BANDS 2
92 struct tc_prio_qopt {
93   int bands;
94   __u8 priomap[TC_PRIO_MAX + 1];
95 };
96 struct 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
104 struct tc_plug_qopt {
105   int action;
106   __u32 limit;
107 };
108 struct tc_tbf_qopt {
109   struct tc_ratespec rate;
110   struct tc_ratespec peakrate;
111   __u32 limit;
112   __u32 buffer;
113   __u32 mtu;
114 };
115 enum {
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)
128 struct tc_sfq_qopt {
129   unsigned quantum;
130   int perturb_period;
131   __u32 limit;
132   unsigned divisor;
133   unsigned flows;
134 };
135 struct 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 };
143 struct 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 };
157 struct tc_sfq_xstats {
158   __s32 allot;
159 };
160 enum {
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)
168 struct 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 };
180 struct tc_red_xstats {
181   __u32 early;
182   __u32 pdrop;
183   __u32 other;
184   __u32 marked;
185 };
186 #define MAX_DPs 16
187 enum {
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)
197 struct 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 };
215 struct tc_gred_sopt {
216   __u32 DPs;
217   __u32 def_DP;
218   __u8 grio;
219   __u8 flags;
220   __u16 pad1;
221 };
222 enum {
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)
230 struct 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 };
239 struct 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
249 struct 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 };
258 struct tc_htb_glob {
259   __u32 version;
260   __u32 rate2quantum;
261   __u32 defcls;
262   __u32 debug;
263   __u32 direct_pkts;
264 };
265 enum {
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)
278 struct tc_htb_xstats {
279   __u32 lends;
280   __u32 borrows;
281   __u32 giants;
282   __u32 tokens;
283   __u32 ctokens;
284 };
285 struct tc_hfsc_qopt {
286   __u16 defcls;
287 };
288 struct tc_service_curve {
289   __u32 m1;
290   __u32 d;
291   __u32 m2;
292 };
293 struct tc_hfsc_stats {
294   __u64 work;
295   __u64 rtwork;
296   __u32 period;
297   __u32 level;
298 };
299 enum {
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
310 struct 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 };
328 struct 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 };
336 struct 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 };
347 struct tc_cbq_police {
348   unsigned char police;
349   unsigned char __res1;
350   unsigned short __res2;
351 };
352 struct tc_cbq_fopt {
353   __u32 split;
354   __u32 defmap;
355   __u32 defchange;
356 };
357 struct tc_cbq_xstats {
358   __u32 borrows;
359   __u32 overactions;
360   __s32 avgidle;
361   __s32 undertime;
362 };
363 enum {
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)
375 enum {
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)
385 enum {
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)
396 enum {
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)
413 struct tc_netem_qopt {
414   __u32 latency;
415   __u32 limit;
416   __u32 loss;
417   __u32 gap;
418   __u32 duplicate;
419   __u32 jitter;
420 };
421 struct tc_netem_corr {
422   __u32 delay_corr;
423   __u32 loss_corr;
424   __u32 dup_corr;
425 };
426 struct tc_netem_reorder {
427   __u32 probability;
428   __u32 correlation;
429 };
430 struct tc_netem_corrupt {
431   __u32 probability;
432   __u32 correlation;
433 };
434 struct tc_netem_rate {
435   __u32 rate;
436   __s32 packet_overhead;
437   __u32 cell_size;
438   __s32 cell_overhead;
439 };
440 struct tc_netem_slot {
441   __s64 min_delay;
442   __s64 max_delay;
443   __s32 max_packets;
444   __s32 max_bytes;
445 };
446 enum {
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)
453 struct tc_netem_gimodel {
454   __u32 p13;
455   __u32 p31;
456   __u32 p32;
457   __u32 p14;
458   __u32 p23;
459 };
460 struct 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
468 enum {
469   TCA_DRR_UNSPEC,
470   TCA_DRR_QUANTUM,
471   __TCA_DRR_MAX
472 };
473 #define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
474 struct tc_drr_stats {
475   __u32 deficit;
476 };
477 #define TC_QOPT_BITMASK 15
478 #define TC_QOPT_MAX_QUEUE 16
479 enum {
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)
485 enum {
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)
491 enum {
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)
497 struct 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
508 enum {
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)
517 enum {
518   TCA_SFB_UNSPEC,
519   TCA_SFB_PARMS,
520   __TCA_SFB_MAX,
521 };
522 #define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
523 struct 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 };
534 struct 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
546 enum {
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)
553 struct tc_qfq_stats {
554   __u32 weight;
555   __u32 lmax;
556 };
557 enum {
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)
567 struct 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 };
578 enum {
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)
592 enum {
593   TCA_FQ_CODEL_XSTATS_QDISC,
594   TCA_FQ_CODEL_XSTATS_CLASS,
595 };
596 struct 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 };
607 struct 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 };
615 struct 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 };
622 enum {
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)
638 struct 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 };
652 enum {
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)
664 struct tc_hhf_xstats {
665   __u32 drop_overlimit;
666   __u32 hh_overlimit;
667   __u32 hh_tot_count;
668   __u32 hh_cur_count;
669 };
670 enum {
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)
682 struct 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 };
692 struct tc_cbs_qopt {
693   __u8 offload;
694   __u8 _pad[3];
695   __s32 hicredit;
696   __s32 locredit;
697   __s32 idleslope;
698   __s32 sendslope;
699 };
700 enum {
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