blob: a3f2adf1fd390f35fad52b0f4e07d021ffb474f4 [file] [log] [blame]
Ben Cheng655a7c02013-10-16 16:09:24 -07001/****************************************************************************
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
Ben Cheng655a7c02013-10-16 16:09:24 -070023#define TC_PRIO_FILLER 1
24#define TC_PRIO_BULK 2
25#define TC_PRIO_INTERACTIVE_BULK 4
26#define TC_PRIO_INTERACTIVE 6
Ben Cheng655a7c02013-10-16 16:09:24 -070027#define TC_PRIO_CONTROL 7
28#define TC_PRIO_MAX 15
29struct tc_stats {
Tao Baod7db5942015-01-28 10:07:51 -080030 __u64 bytes;
Tao Baod7db5942015-01-28 10:07:51 -080031 __u32 packets;
32 __u32 drops;
33 __u32 overlimits;
34 __u32 bps;
Tao Baod7db5942015-01-28 10:07:51 -080035 __u32 pps;
36 __u32 qlen;
37 __u32 backlog;
Ben Cheng655a7c02013-10-16 16:09:24 -070038};
Ben Cheng655a7c02013-10-16 16:09:24 -070039struct tc_estimator {
Tao Baod7db5942015-01-28 10:07:51 -080040 signed char interval;
41 unsigned char ewma_log;
Ben Cheng655a7c02013-10-16 16:09:24 -070042};
Ben Cheng655a7c02013-10-16 16:09:24 -070043#define TC_H_MAJ_MASK (0xFFFF0000U)
44#define TC_H_MIN_MASK (0x0000FFFFU)
Tao Baod7db5942015-01-28 10:07:51 -080045#define TC_H_MAJ(h) ((h) & TC_H_MAJ_MASK)
46#define TC_H_MIN(h) ((h) & TC_H_MIN_MASK)
Tao Baod7db5942015-01-28 10:07:51 -080047#define TC_H_MAKE(maj,min) (((maj) & TC_H_MAJ_MASK) | ((min) & TC_H_MIN_MASK))
Ben Cheng655a7c02013-10-16 16:09:24 -070048#define TC_H_UNSPEC (0U)
49#define TC_H_ROOT (0xFFFFFFFFU)
50#define TC_H_INGRESS (0xFFFFFFF1U)
Christopher Ferris106b3a82016-08-24 12:15:38 -070051#define TC_H_CLSACT TC_H_INGRESS
Christopher Ferris934ec942018-01-31 15:29:16 -080052#define TC_H_MIN_PRIORITY 0xFFE0U
Christopher Ferris106b3a82016-08-24 12:15:38 -070053#define TC_H_MIN_INGRESS 0xFFF2U
54#define TC_H_MIN_EGRESS 0xFFF3U
Christopher Ferris38062f92014-07-09 15:33:25 -070055enum tc_link_layer {
Tao Baod7db5942015-01-28 10:07:51 -080056 TC_LINKLAYER_UNAWARE,
57 TC_LINKLAYER_ETHERNET,
58 TC_LINKLAYER_ATM,
Christopher Ferris38062f92014-07-09 15:33:25 -070059};
60#define TC_LINKLAYER_MASK 0x0F
Ben Cheng655a7c02013-10-16 16:09:24 -070061struct tc_ratespec {
Tao Baod7db5942015-01-28 10:07:51 -080062 unsigned char cell_log;
Tao Baod7db5942015-01-28 10:07:51 -080063 __u8 linklayer;
64 unsigned short overhead;
65 short cell_align;
66 unsigned short mpu;
Tao Baod7db5942015-01-28 10:07:51 -080067 __u32 rate;
Ben Cheng655a7c02013-10-16 16:09:24 -070068};
69#define TC_RTAB_SIZE 1024
70struct tc_sizespec {
Tao Baod7db5942015-01-28 10:07:51 -080071 unsigned char cell_log;
72 unsigned char size_log;
73 short cell_align;
74 int overhead;
Tao Baod7db5942015-01-28 10:07:51 -080075 unsigned int linklayer;
76 unsigned int mpu;
77 unsigned int mtu;
78 unsigned int tsize;
Ben Cheng655a7c02013-10-16 16:09:24 -070079};
80enum {
Tao Baod7db5942015-01-28 10:07:51 -080081 TCA_STAB_UNSPEC,
82 TCA_STAB_BASE,
Tao Baod7db5942015-01-28 10:07:51 -080083 TCA_STAB_DATA,
84 __TCA_STAB_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -070085};
86#define TCA_STAB_MAX (__TCA_STAB_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -070087struct tc_fifo_qopt {
Tao Baod7db5942015-01-28 10:07:51 -080088 __u32 limit;
Ben Cheng655a7c02013-10-16 16:09:24 -070089};
90#define TCQ_PRIO_BANDS 16
Ben Cheng655a7c02013-10-16 16:09:24 -070091#define TCQ_MIN_PRIO_BANDS 2
92struct tc_prio_qopt {
Tao Baod7db5942015-01-28 10:07:51 -080093 int bands;
94 __u8 priomap[TC_PRIO_MAX + 1];
Ben Cheng655a7c02013-10-16 16:09:24 -070095};
96struct tc_multiq_qopt {
Tao Baod7db5942015-01-28 10:07:51 -080097 __u16 bands;
98 __u16 max_bands;
Ben Cheng655a7c02013-10-16 16:09:24 -070099};
100#define TCQ_PLUG_BUFFER 0
101#define TCQ_PLUG_RELEASE_ONE 1
102#define TCQ_PLUG_RELEASE_INDEFINITE 2
Ben Cheng655a7c02013-10-16 16:09:24 -0700103#define TCQ_PLUG_LIMIT 3
104struct tc_plug_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800105 int action;
106 __u32 limit;
Ben Cheng655a7c02013-10-16 16:09:24 -0700107};
108struct tc_tbf_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800109 struct tc_ratespec rate;
110 struct tc_ratespec peakrate;
Tao Baod7db5942015-01-28 10:07:51 -0800111 __u32 limit;
112 __u32 buffer;
113 __u32 mtu;
Ben Cheng655a7c02013-10-16 16:09:24 -0700114};
Ben Cheng655a7c02013-10-16 16:09:24 -0700115enum {
Tao Baod7db5942015-01-28 10:07:51 -0800116 TCA_TBF_UNSPEC,
117 TCA_TBF_PARMS,
118 TCA_TBF_RTAB,
Tao Baod7db5942015-01-28 10:07:51 -0800119 TCA_TBF_PTAB,
120 TCA_TBF_RATE64,
121 TCA_TBF_PRATE64,
122 TCA_TBF_BURST,
Tao Baod7db5942015-01-28 10:07:51 -0800123 TCA_TBF_PBURST,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700124 TCA_TBF_PAD,
Tao Baod7db5942015-01-28 10:07:51 -0800125 __TCA_TBF_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700126};
127#define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700128struct tc_sfq_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800129 unsigned quantum;
130 int perturb_period;
131 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800132 unsigned divisor;
133 unsigned flows;
Ben Cheng655a7c02013-10-16 16:09:24 -0700134};
135struct tc_sfqred_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800136 __u32 prob_drop;
137 __u32 forced_drop;
138 __u32 prob_mark;
139 __u32 forced_mark;
Tao Baod7db5942015-01-28 10:07:51 -0800140 __u32 prob_mark_head;
141 __u32 forced_mark_head;
Ben Cheng655a7c02013-10-16 16:09:24 -0700142};
143struct tc_sfq_qopt_v1 {
Tao Baod7db5942015-01-28 10:07:51 -0800144 struct tc_sfq_qopt v0;
145 unsigned int depth;
146 unsigned int headdrop;
147 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800148 __u32 qth_min;
149 __u32 qth_max;
150 unsigned char Wlog;
151 unsigned char Plog;
Tao Baod7db5942015-01-28 10:07:51 -0800152 unsigned char Scell_log;
153 unsigned char flags;
154 __u32 max_P;
155 struct tc_sfqred_stats stats;
Ben Cheng655a7c02013-10-16 16:09:24 -0700156};
157struct tc_sfq_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800158 __s32 allot;
Ben Cheng655a7c02013-10-16 16:09:24 -0700159};
Ben Cheng655a7c02013-10-16 16:09:24 -0700160enum {
Tao Baod7db5942015-01-28 10:07:51 -0800161 TCA_RED_UNSPEC,
162 TCA_RED_PARMS,
163 TCA_RED_STAB,
Tao Baod7db5942015-01-28 10:07:51 -0800164 TCA_RED_MAX_P,
165 __TCA_RED_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700166};
167#define TCA_RED_MAX (__TCA_RED_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700168struct tc_red_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800169 __u32 limit;
170 __u32 qth_min;
171 __u32 qth_max;
Tao Baod7db5942015-01-28 10:07:51 -0800172 unsigned char Wlog;
173 unsigned char Plog;
174 unsigned char Scell_log;
175 unsigned char flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700176#define TC_RED_ECN 1
177#define TC_RED_HARDDROP 2
178#define TC_RED_ADAPTATIVE 4
179};
Ben Cheng655a7c02013-10-16 16:09:24 -0700180struct tc_red_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800181 __u32 early;
182 __u32 pdrop;
183 __u32 other;
Tao Baod7db5942015-01-28 10:07:51 -0800184 __u32 marked;
Ben Cheng655a7c02013-10-16 16:09:24 -0700185};
186#define MAX_DPs 16
187enum {
Tao Baod7db5942015-01-28 10:07:51 -0800188 TCA_GRED_UNSPEC,
189 TCA_GRED_PARMS,
190 TCA_GRED_STAB,
191 TCA_GRED_DPS,
Tao Baod7db5942015-01-28 10:07:51 -0800192 TCA_GRED_MAX_P,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800193 TCA_GRED_LIMIT,
Tao Baod7db5942015-01-28 10:07:51 -0800194 __TCA_GRED_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700195};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800196#define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700197struct tc_gred_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800198 __u32 limit;
199 __u32 qth_min;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800200 __u32 qth_max;
Tao Baod7db5942015-01-28 10:07:51 -0800201 __u32 DP;
202 __u32 backlog;
203 __u32 qave;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800204 __u32 forced;
Tao Baod7db5942015-01-28 10:07:51 -0800205 __u32 early;
206 __u32 other;
207 __u32 pdrop;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800208 __u8 Wlog;
Tao Baod7db5942015-01-28 10:07:51 -0800209 __u8 Plog;
210 __u8 Scell_log;
211 __u8 prio;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800212 __u32 packets;
Tao Baod7db5942015-01-28 10:07:51 -0800213 __u32 bytesin;
Ben Cheng655a7c02013-10-16 16:09:24 -0700214};
215struct tc_gred_sopt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800216 __u32 DPs;
Tao Baod7db5942015-01-28 10:07:51 -0800217 __u32 def_DP;
218 __u8 grio;
219 __u8 flags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800220 __u16 pad1;
Ben Cheng655a7c02013-10-16 16:09:24 -0700221};
222enum {
Tao Baod7db5942015-01-28 10:07:51 -0800223 TCA_CHOKE_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800224 TCA_CHOKE_PARMS,
Tao Baod7db5942015-01-28 10:07:51 -0800225 TCA_CHOKE_STAB,
226 TCA_CHOKE_MAX_P,
227 __TCA_CHOKE_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800228};
Ben Cheng655a7c02013-10-16 16:09:24 -0700229#define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1)
230struct tc_choke_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800231 __u32 limit;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800232 __u32 qth_min;
Tao Baod7db5942015-01-28 10:07:51 -0800233 __u32 qth_max;
234 unsigned char Wlog;
235 unsigned char Plog;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800236 unsigned char Scell_log;
Tao Baod7db5942015-01-28 10:07:51 -0800237 unsigned char flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700238};
239struct tc_choke_xstats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800240 __u32 early;
Tao Baod7db5942015-01-28 10:07:51 -0800241 __u32 pdrop;
242 __u32 other;
243 __u32 marked;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800244 __u32 matched;
Ben Cheng655a7c02013-10-16 16:09:24 -0700245};
246#define TC_HTB_NUMPRIO 8
247#define TC_HTB_MAXDEPTH 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800248#define TC_HTB_PROTOVER 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700249struct tc_htb_opt {
Tao Baod7db5942015-01-28 10:07:51 -0800250 struct tc_ratespec rate;
251 struct tc_ratespec ceil;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800252 __u32 buffer;
Tao Baod7db5942015-01-28 10:07:51 -0800253 __u32 cbuffer;
254 __u32 quantum;
255 __u32 level;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800256 __u32 prio;
Ben Cheng655a7c02013-10-16 16:09:24 -0700257};
258struct tc_htb_glob {
Tao Baod7db5942015-01-28 10:07:51 -0800259 __u32 version;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800260 __u32 rate2quantum;
Tao Baod7db5942015-01-28 10:07:51 -0800261 __u32 defcls;
262 __u32 debug;
263 __u32 direct_pkts;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800264};
Ben Cheng655a7c02013-10-16 16:09:24 -0700265enum {
Tao Baod7db5942015-01-28 10:07:51 -0800266 TCA_HTB_UNSPEC,
267 TCA_HTB_PARMS,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800268 TCA_HTB_INIT,
Tao Baod7db5942015-01-28 10:07:51 -0800269 TCA_HTB_CTAB,
270 TCA_HTB_RTAB,
271 TCA_HTB_DIRECT_QLEN,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800272 TCA_HTB_RATE64,
Tao Baod7db5942015-01-28 10:07:51 -0800273 TCA_HTB_CEIL64,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700274 TCA_HTB_PAD,
Tao Baod7db5942015-01-28 10:07:51 -0800275 __TCA_HTB_MAX,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700276};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800277#define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700278struct tc_htb_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800279 __u32 lends;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700280 __u32 borrows;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800281 __u32 giants;
Tao Baod7db5942015-01-28 10:07:51 -0800282 __u32 tokens;
283 __u32 ctokens;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700284};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800285struct tc_hfsc_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800286 __u16 defcls;
Ben Cheng655a7c02013-10-16 16:09:24 -0700287};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700288struct tc_service_curve {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800289 __u32 m1;
Tao Baod7db5942015-01-28 10:07:51 -0800290 __u32 d;
291 __u32 m2;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700292};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800293struct tc_hfsc_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800294 __u64 work;
295 __u64 rtwork;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700296 __u32 period;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800297 __u32 level;
Ben Cheng655a7c02013-10-16 16:09:24 -0700298};
299enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700300 TCA_HFSC_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800301 TCA_HFSC_RSC,
Tao Baod7db5942015-01-28 10:07:51 -0800302 TCA_HFSC_FSC,
303 TCA_HFSC_USC,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700304 __TCA_HFSC_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800305};
Ben Cheng655a7c02013-10-16 16:09:24 -0700306#define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
307#define TC_CBQ_MAXPRIO 8
Christopher Ferris106b3a82016-08-24 12:15:38 -0700308#define TC_CBQ_MAXLEVEL 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800309#define TC_CBQ_DEF_EWMA 5
Ben Cheng655a7c02013-10-16 16:09:24 -0700310struct tc_cbq_lssopt {
Tao Baod7db5942015-01-28 10:07:51 -0800311 unsigned char change;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700312 unsigned char flags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800313#define TCF_CBQ_LSS_BOUNDED 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700314#define TCF_CBQ_LSS_ISOLATED 2
Tao Baod7db5942015-01-28 10:07:51 -0800315 unsigned char ewma_log;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700316 unsigned char level;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800317#define TCF_CBQ_LSS_FLAGS 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700318#define TCF_CBQ_LSS_EWMA 2
319#define TCF_CBQ_LSS_MAXIDLE 4
Christopher Ferris106b3a82016-08-24 12:15:38 -0700320#define TCF_CBQ_LSS_MINIDLE 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800321#define TCF_CBQ_LSS_OFFTIME 0x10
Ben Cheng655a7c02013-10-16 16:09:24 -0700322#define TCF_CBQ_LSS_AVPKT 0x20
Tao Baod7db5942015-01-28 10:07:51 -0800323 __u32 maxidle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700324 __u32 minidle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800325 __u32 offtime;
Tao Baod7db5942015-01-28 10:07:51 -0800326 __u32 avpkt;
Ben Cheng655a7c02013-10-16 16:09:24 -0700327};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700328struct tc_cbq_wrropt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800329 unsigned char flags;
Tao Baod7db5942015-01-28 10:07:51 -0800330 unsigned char priority;
331 unsigned char cpriority;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700332 unsigned char __reserved;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800333 __u32 allot;
Tao Baod7db5942015-01-28 10:07:51 -0800334 __u32 weight;
Ben Cheng655a7c02013-10-16 16:09:24 -0700335};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700336struct tc_cbq_ovl {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800337 unsigned char strategy;
Ben Cheng655a7c02013-10-16 16:09:24 -0700338#define TC_CBQ_OVL_CLASSIC 0
339#define TC_CBQ_OVL_DELAY 1
Christopher Ferris106b3a82016-08-24 12:15:38 -0700340#define TC_CBQ_OVL_LOWPRIO 2
Christopher Ferris05d08e92016-02-04 13:16:38 -0800341#define TC_CBQ_OVL_DROP 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700342#define TC_CBQ_OVL_RCLASSIC 4
Tao Baod7db5942015-01-28 10:07:51 -0800343 unsigned char priority2;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700344 __u16 pad;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800345 __u32 penalty;
Ben Cheng655a7c02013-10-16 16:09:24 -0700346};
347struct tc_cbq_police {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700348 unsigned char police;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800349 unsigned char __res1;
Tao Baod7db5942015-01-28 10:07:51 -0800350 unsigned short __res2;
Ben Cheng655a7c02013-10-16 16:09:24 -0700351};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700352struct tc_cbq_fopt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800353 __u32 split;
Tao Baod7db5942015-01-28 10:07:51 -0800354 __u32 defmap;
355 __u32 defchange;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700356};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800357struct tc_cbq_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800358 __u32 borrows;
359 __u32 overactions;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700360 __s32 avgidle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800361 __s32 undertime;
Ben Cheng655a7c02013-10-16 16:09:24 -0700362};
363enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700364 TCA_CBQ_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800365 TCA_CBQ_LSSOPT,
Tao Baod7db5942015-01-28 10:07:51 -0800366 TCA_CBQ_WRROPT,
367 TCA_CBQ_FOPT,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700368 TCA_CBQ_OVL_STRATEGY,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800369 TCA_CBQ_RATE,
Tao Baod7db5942015-01-28 10:07:51 -0800370 TCA_CBQ_RTAB,
371 TCA_CBQ_POLICE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700372 __TCA_CBQ_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800373};
Ben Cheng655a7c02013-10-16 16:09:24 -0700374#define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1)
375enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700376 TCA_DSMARK_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800377 TCA_DSMARK_INDICES,
Tao Baod7db5942015-01-28 10:07:51 -0800378 TCA_DSMARK_DEFAULT_INDEX,
379 TCA_DSMARK_SET_TC_INDEX,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700380 TCA_DSMARK_MASK,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800381 TCA_DSMARK_VALUE,
Tao Baod7db5942015-01-28 10:07:51 -0800382 __TCA_DSMARK_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700383};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700384#define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800385enum {
Tao Baod7db5942015-01-28 10:07:51 -0800386 TCA_ATM_UNSPEC,
387 TCA_ATM_FD,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700388 TCA_ATM_PTR,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800389 TCA_ATM_HDR,
Tao Baod7db5942015-01-28 10:07:51 -0800390 TCA_ATM_EXCESS,
391 TCA_ATM_ADDR,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700392 TCA_ATM_STATE,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800393 __TCA_ATM_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700394};
395#define TCA_ATM_MAX (__TCA_ATM_MAX - 1)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700396enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800397 TCA_NETEM_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800398 TCA_NETEM_CORR,
399 TCA_NETEM_DELAY_DIST,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700400 TCA_NETEM_REORDER,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800401 TCA_NETEM_CORRUPT,
Tao Baod7db5942015-01-28 10:07:51 -0800402 TCA_NETEM_LOSS,
403 TCA_NETEM_RATE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700404 TCA_NETEM_ECN,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800405 TCA_NETEM_RATE64,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700406 TCA_NETEM_PAD,
Christopher Ferris934ec942018-01-31 15:29:16 -0800407 TCA_NETEM_LATENCY64,
408 TCA_NETEM_JITTER64,
409 TCA_NETEM_SLOT,
Tao Baod7db5942015-01-28 10:07:51 -0800410 __TCA_NETEM_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700411};
412#define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800413struct tc_netem_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800414 __u32 latency;
415 __u32 limit;
416 __u32 loss;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800417 __u32 gap;
Tao Baod7db5942015-01-28 10:07:51 -0800418 __u32 duplicate;
419 __u32 jitter;
Ben Cheng655a7c02013-10-16 16:09:24 -0700420};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800421struct tc_netem_corr {
Tao Baod7db5942015-01-28 10:07:51 -0800422 __u32 delay_corr;
423 __u32 loss_corr;
424 __u32 dup_corr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800425};
Ben Cheng655a7c02013-10-16 16:09:24 -0700426struct tc_netem_reorder {
Tao Baod7db5942015-01-28 10:07:51 -0800427 __u32 probability;
428 __u32 correlation;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800429};
Ben Cheng655a7c02013-10-16 16:09:24 -0700430struct tc_netem_corrupt {
Tao Baod7db5942015-01-28 10:07:51 -0800431 __u32 probability;
432 __u32 correlation;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800433};
Christopher Ferris38062f92014-07-09 15:33:25 -0700434struct tc_netem_rate {
Tao Baod7db5942015-01-28 10:07:51 -0800435 __u32 rate;
436 __s32 packet_overhead;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800437 __u32 cell_size;
Tao Baod7db5942015-01-28 10:07:51 -0800438 __s32 cell_overhead;
Ben Cheng655a7c02013-10-16 16:09:24 -0700439};
Christopher Ferris934ec942018-01-31 15:29:16 -0800440struct tc_netem_slot {
441 __s64 min_delay;
442 __s64 max_delay;
443 __s32 max_packets;
444 __s32 max_bytes;
445};
Ben Cheng655a7c02013-10-16 16:09:24 -0700446enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800447 NETEM_LOSS_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800448 NETEM_LOSS_GI,
449 NETEM_LOSS_GE,
450 __NETEM_LOSS_MAX
Christopher Ferris05d08e92016-02-04 13:16:38 -0800451};
Christopher Ferris38062f92014-07-09 15:33:25 -0700452#define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700453struct tc_netem_gimodel {
Tao Baod7db5942015-01-28 10:07:51 -0800454 __u32 p13;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800455 __u32 p31;
Tao Baod7db5942015-01-28 10:07:51 -0800456 __u32 p32;
457 __u32 p14;
458 __u32 p23;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800459};
Christopher Ferris38062f92014-07-09 15:33:25 -0700460struct tc_netem_gemodel {
Tao Baod7db5942015-01-28 10:07:51 -0800461 __u32 p;
462 __u32 r;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800463 __u32 h;
Tao Baod7db5942015-01-28 10:07:51 -0800464 __u32 k1;
Ben Cheng655a7c02013-10-16 16:09:24 -0700465};
466#define NETEM_DIST_SCALE 8192
Christopher Ferris05d08e92016-02-04 13:16:38 -0800467#define NETEM_DIST_MAX 16384
Christopher Ferris38062f92014-07-09 15:33:25 -0700468enum {
Tao Baod7db5942015-01-28 10:07:51 -0800469 TCA_DRR_UNSPEC,
470 TCA_DRR_QUANTUM,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800471 __TCA_DRR_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700472};
Ben Cheng655a7c02013-10-16 16:09:24 -0700473#define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
474struct tc_drr_stats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800475 __u32 deficit;
Christopher Ferris38062f92014-07-09 15:33:25 -0700476};
Ben Cheng655a7c02013-10-16 16:09:24 -0700477#define TC_QOPT_BITMASK 15
478#define TC_QOPT_MAX_QUEUE 16
Christopher Ferris525ce912017-07-26 13:12:53 -0700479enum {
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)
Christopher Ferris934ec942018-01-31 15:29:16 -0800485enum {
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)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800497struct tc_mqprio_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800498 __u8 num_tc;
499 __u8 prio_tc_map[TC_QOPT_BITMASK + 1];
500 __u8 hw;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800501 __u16 count[TC_QOPT_MAX_QUEUE];
Tao Baod7db5942015-01-28 10:07:51 -0800502 __u16 offset[TC_QOPT_MAX_QUEUE];
Ben Cheng655a7c02013-10-16 16:09:24 -0700503};
Christopher Ferris934ec942018-01-31 15:29:16 -0800504#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)
Ben Cheng655a7c02013-10-16 16:09:24 -0700517enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800518 TCA_SFB_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800519 TCA_SFB_PARMS,
520 __TCA_SFB_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700521};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800522#define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700523struct tc_sfb_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800524 __u32 rehash_interval;
525 __u32 warmup_time;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800526 __u32 max;
Tao Baod7db5942015-01-28 10:07:51 -0800527 __u32 bin_size;
528 __u32 increment;
529 __u32 decrement;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800530 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800531 __u32 penalty_rate;
532 __u32 penalty_burst;
Ben Cheng655a7c02013-10-16 16:09:24 -0700533};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800534struct tc_sfb_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800535 __u32 earlydrop;
536 __u32 penaltydrop;
537 __u32 bucketdrop;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800538 __u32 queuedrop;
Tao Baod7db5942015-01-28 10:07:51 -0800539 __u32 childdrop;
540 __u32 marked;
541 __u32 maxqlen;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800542 __u32 maxprob;
Tao Baod7db5942015-01-28 10:07:51 -0800543 __u32 avgprob;
Ben Cheng655a7c02013-10-16 16:09:24 -0700544};
545#define SFB_MAX_PROB 0xFFFF
Christopher Ferris05d08e92016-02-04 13:16:38 -0800546enum {
Tao Baod7db5942015-01-28 10:07:51 -0800547 TCA_QFQ_UNSPEC,
548 TCA_QFQ_WEIGHT,
549 TCA_QFQ_LMAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800550 __TCA_QFQ_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700551};
Ben Cheng655a7c02013-10-16 16:09:24 -0700552#define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1)
553struct tc_qfq_stats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800554 __u32 weight;
Tao Baod7db5942015-01-28 10:07:51 -0800555 __u32 lmax;
Ben Cheng655a7c02013-10-16 16:09:24 -0700556};
557enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800558 TCA_CODEL_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800559 TCA_CODEL_TARGET,
560 TCA_CODEL_LIMIT,
561 TCA_CODEL_INTERVAL,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800562 TCA_CODEL_ECN,
563 TCA_CODEL_CE_THRESHOLD,
Tao Baod7db5942015-01-28 10:07:51 -0800564 __TCA_CODEL_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700565};
566#define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700567struct tc_codel_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800568 __u32 maxpacket;
569 __u32 count;
570 __u32 lastcount;
571 __u32 ldelay;
Tao Baod7db5942015-01-28 10:07:51 -0800572 __s32 drop_next;
573 __u32 drop_overlimit;
574 __u32 ecn_mark;
575 __u32 dropping;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800576 __u32 ce_mark;
Christopher Ferris38062f92014-07-09 15:33:25 -0700577};
Ben Cheng655a7c02013-10-16 16:09:24 -0700578enum {
Tao Baod7db5942015-01-28 10:07:51 -0800579 TCA_FQ_CODEL_UNSPEC,
580 TCA_FQ_CODEL_TARGET,
Tao Baod7db5942015-01-28 10:07:51 -0800581 TCA_FQ_CODEL_LIMIT,
582 TCA_FQ_CODEL_INTERVAL,
583 TCA_FQ_CODEL_ECN,
584 TCA_FQ_CODEL_FLOWS,
Tao Baod7db5942015-01-28 10:07:51 -0800585 TCA_FQ_CODEL_QUANTUM,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800586 TCA_FQ_CODEL_CE_THRESHOLD,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700587 TCA_FQ_CODEL_DROP_BATCH_SIZE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700588 TCA_FQ_CODEL_MEMORY_LIMIT,
Tao Baod7db5942015-01-28 10:07:51 -0800589 __TCA_FQ_CODEL_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700590};
Ben Cheng655a7c02013-10-16 16:09:24 -0700591#define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700592enum {
Tao Baod7db5942015-01-28 10:07:51 -0800593 TCA_FQ_CODEL_XSTATS_QDISC,
594 TCA_FQ_CODEL_XSTATS_CLASS,
Ben Cheng655a7c02013-10-16 16:09:24 -0700595};
Christopher Ferris38062f92014-07-09 15:33:25 -0700596struct tc_fq_codel_qd_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800597 __u32 maxpacket;
598 __u32 drop_overlimit;
599 __u32 ecn_mark;
Tao Baod7db5942015-01-28 10:07:51 -0800600 __u32 new_flow_count;
601 __u32 new_flows_len;
602 __u32 old_flows_len;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800603 __u32 ce_mark;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700604 __u32 memory_usage;
605 __u32 drop_overmemory;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800606};
Christopher Ferris38062f92014-07-09 15:33:25 -0700607struct tc_fq_codel_cl_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800608 __s32 deficit;
609 __u32 ldelay;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800610 __u32 count;
Tao Baod7db5942015-01-28 10:07:51 -0800611 __u32 lastcount;
612 __u32 dropping;
613 __s32 drop_next;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800614};
Christopher Ferris38062f92014-07-09 15:33:25 -0700615struct tc_fq_codel_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800616 __u32 type;
617 union {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800618 struct tc_fq_codel_qd_stats qdisc_stats;
Tao Baod7db5942015-01-28 10:07:51 -0800619 struct tc_fq_codel_cl_stats class_stats;
620 };
Ben Cheng655a7c02013-10-16 16:09:24 -0700621};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800622enum {
Tao Baod7db5942015-01-28 10:07:51 -0800623 TCA_FQ_UNSPEC,
624 TCA_FQ_PLIMIT,
625 TCA_FQ_FLOW_PLIMIT,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800626 TCA_FQ_QUANTUM,
Tao Baod7db5942015-01-28 10:07:51 -0800627 TCA_FQ_INITIAL_QUANTUM,
628 TCA_FQ_RATE_ENABLE,
629 TCA_FQ_FLOW_DEFAULT_RATE,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800630 TCA_FQ_FLOW_MAX_RATE,
Tao Baod7db5942015-01-28 10:07:51 -0800631 TCA_FQ_BUCKETS_LOG,
632 TCA_FQ_FLOW_REFILL_DELAY,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800633 TCA_FQ_ORPHAN_MASK,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800634 TCA_FQ_LOW_RATE_THRESHOLD,
Tao Baod7db5942015-01-28 10:07:51 -0800635 __TCA_FQ_MAX
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800636};
Christopher Ferris38062f92014-07-09 15:33:25 -0700637#define TCA_FQ_MAX (__TCA_FQ_MAX - 1)
638struct tc_fq_qd_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800639 __u64 gc_flows;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800640 __u64 highprio_packets;
Tao Baod7db5942015-01-28 10:07:51 -0800641 __u64 tcp_retrans;
642 __u64 throttled;
643 __u64 flows_plimit;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800644 __u64 pkts_too_long;
Tao Baod7db5942015-01-28 10:07:51 -0800645 __u64 allocation_errors;
646 __s64 time_next_delayed_flow;
647 __u32 flows;
648 __u32 inactive_flows;
Tao Baod7db5942015-01-28 10:07:51 -0800649 __u32 throttled_flows;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800650 __u32 unthrottle_latency_ns;
Christopher Ferris38062f92014-07-09 15:33:25 -0700651};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800652enum {
Tao Baod7db5942015-01-28 10:07:51 -0800653 TCA_HHF_UNSPEC,
654 TCA_HHF_BACKLOG_LIMIT,
655 TCA_HHF_QUANTUM,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800656 TCA_HHF_HH_FLOWS_LIMIT,
Tao Baod7db5942015-01-28 10:07:51 -0800657 TCA_HHF_RESET_TIMEOUT,
658 TCA_HHF_ADMIT_BYTES,
659 TCA_HHF_EVICT_TIMEOUT,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800660 TCA_HHF_NON_HH_WEIGHT,
Tao Baod7db5942015-01-28 10:07:51 -0800661 __TCA_HHF_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700662};
663#define TCA_HHF_MAX (__TCA_HHF_MAX - 1)
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800664struct tc_hhf_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800665 __u32 drop_overlimit;
666 __u32 hh_overlimit;
667 __u32 hh_tot_count;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800668 __u32 hh_cur_count;
Christopher Ferris38062f92014-07-09 15:33:25 -0700669};
670enum {
Tao Baod7db5942015-01-28 10:07:51 -0800671 TCA_PIE_UNSPEC,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800672 TCA_PIE_TARGET,
Tao Baod7db5942015-01-28 10:07:51 -0800673 TCA_PIE_LIMIT,
674 TCA_PIE_TUPDATE,
675 TCA_PIE_ALPHA,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800676 TCA_PIE_BETA,
Tao Baod7db5942015-01-28 10:07:51 -0800677 TCA_PIE_ECN,
678 TCA_PIE_BYTEMODE,
679 __TCA_PIE_MAX
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800680};
Christopher Ferris38062f92014-07-09 15:33:25 -0700681#define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
682struct tc_pie_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800683 __u32 prob;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800684 __u32 delay;
Tao Baod7db5942015-01-28 10:07:51 -0800685 __u32 avg_dq_rate;
686 __u32 packets_in;
687 __u32 dropped;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800688 __u32 overlimit;
Tao Baod7db5942015-01-28 10:07:51 -0800689 __u32 maxq;
690 __u32 ecn_mark;
Christopher Ferris38062f92014-07-09 15:33:25 -0700691};
Christopher Ferris934ec942018-01-31 15:29:16 -0800692struct 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)
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800706#endif