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