blob: 6adc01307bdd04016d965d81a98ec73e453d4ec2 [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};
Christopher Ferris9ce28842018-10-25 12:11:39 -070090#define SKBPRIO_MAX_PRIORITY 64
91struct tc_skbprio_qopt {
92 __u32 limit;
93};
Ben Cheng655a7c02013-10-16 16:09:24 -070094#define TCQ_PRIO_BANDS 16
Ben Cheng655a7c02013-10-16 16:09:24 -070095#define TCQ_MIN_PRIO_BANDS 2
96struct tc_prio_qopt {
Tao Baod7db5942015-01-28 10:07:51 -080097 int bands;
98 __u8 priomap[TC_PRIO_MAX + 1];
Ben Cheng655a7c02013-10-16 16:09:24 -070099};
100struct tc_multiq_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800101 __u16 bands;
102 __u16 max_bands;
Ben Cheng655a7c02013-10-16 16:09:24 -0700103};
104#define TCQ_PLUG_BUFFER 0
105#define TCQ_PLUG_RELEASE_ONE 1
106#define TCQ_PLUG_RELEASE_INDEFINITE 2
Ben Cheng655a7c02013-10-16 16:09:24 -0700107#define TCQ_PLUG_LIMIT 3
108struct tc_plug_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800109 int action;
110 __u32 limit;
Ben Cheng655a7c02013-10-16 16:09:24 -0700111};
112struct tc_tbf_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800113 struct tc_ratespec rate;
114 struct tc_ratespec peakrate;
Tao Baod7db5942015-01-28 10:07:51 -0800115 __u32 limit;
116 __u32 buffer;
117 __u32 mtu;
Ben Cheng655a7c02013-10-16 16:09:24 -0700118};
Ben Cheng655a7c02013-10-16 16:09:24 -0700119enum {
Tao Baod7db5942015-01-28 10:07:51 -0800120 TCA_TBF_UNSPEC,
121 TCA_TBF_PARMS,
122 TCA_TBF_RTAB,
Tao Baod7db5942015-01-28 10:07:51 -0800123 TCA_TBF_PTAB,
124 TCA_TBF_RATE64,
125 TCA_TBF_PRATE64,
126 TCA_TBF_BURST,
Tao Baod7db5942015-01-28 10:07:51 -0800127 TCA_TBF_PBURST,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700128 TCA_TBF_PAD,
Tao Baod7db5942015-01-28 10:07:51 -0800129 __TCA_TBF_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700130};
131#define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700132struct tc_sfq_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800133 unsigned quantum;
134 int perturb_period;
135 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800136 unsigned divisor;
137 unsigned flows;
Ben Cheng655a7c02013-10-16 16:09:24 -0700138};
139struct tc_sfqred_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800140 __u32 prob_drop;
141 __u32 forced_drop;
142 __u32 prob_mark;
143 __u32 forced_mark;
Tao Baod7db5942015-01-28 10:07:51 -0800144 __u32 prob_mark_head;
145 __u32 forced_mark_head;
Ben Cheng655a7c02013-10-16 16:09:24 -0700146};
147struct tc_sfq_qopt_v1 {
Tao Baod7db5942015-01-28 10:07:51 -0800148 struct tc_sfq_qopt v0;
149 unsigned int depth;
150 unsigned int headdrop;
151 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800152 __u32 qth_min;
153 __u32 qth_max;
154 unsigned char Wlog;
155 unsigned char Plog;
Tao Baod7db5942015-01-28 10:07:51 -0800156 unsigned char Scell_log;
157 unsigned char flags;
158 __u32 max_P;
159 struct tc_sfqred_stats stats;
Ben Cheng655a7c02013-10-16 16:09:24 -0700160};
161struct tc_sfq_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800162 __s32 allot;
Ben Cheng655a7c02013-10-16 16:09:24 -0700163};
Ben Cheng655a7c02013-10-16 16:09:24 -0700164enum {
Tao Baod7db5942015-01-28 10:07:51 -0800165 TCA_RED_UNSPEC,
166 TCA_RED_PARMS,
167 TCA_RED_STAB,
Tao Baod7db5942015-01-28 10:07:51 -0800168 TCA_RED_MAX_P,
169 __TCA_RED_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700170};
171#define TCA_RED_MAX (__TCA_RED_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700172struct tc_red_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800173 __u32 limit;
174 __u32 qth_min;
175 __u32 qth_max;
Tao Baod7db5942015-01-28 10:07:51 -0800176 unsigned char Wlog;
177 unsigned char Plog;
178 unsigned char Scell_log;
179 unsigned char flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700180#define TC_RED_ECN 1
181#define TC_RED_HARDDROP 2
182#define TC_RED_ADAPTATIVE 4
183};
Ben Cheng655a7c02013-10-16 16:09:24 -0700184struct tc_red_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800185 __u32 early;
186 __u32 pdrop;
187 __u32 other;
Tao Baod7db5942015-01-28 10:07:51 -0800188 __u32 marked;
Ben Cheng655a7c02013-10-16 16:09:24 -0700189};
190#define MAX_DPs 16
191enum {
Tao Baod7db5942015-01-28 10:07:51 -0800192 TCA_GRED_UNSPEC,
193 TCA_GRED_PARMS,
194 TCA_GRED_STAB,
195 TCA_GRED_DPS,
Tao Baod7db5942015-01-28 10:07:51 -0800196 TCA_GRED_MAX_P,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800197 TCA_GRED_LIMIT,
Christopher Ferrisd842e432019-03-07 10:21:59 -0800198 TCA_GRED_VQ_LIST,
Tao Baod7db5942015-01-28 10:07:51 -0800199 __TCA_GRED_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700200};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800201#define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
Christopher Ferrisd842e432019-03-07 10:21:59 -0800202enum {
203 TCA_GRED_VQ_ENTRY_UNSPEC,
204 TCA_GRED_VQ_ENTRY,
205 __TCA_GRED_VQ_ENTRY_MAX,
206};
207#define TCA_GRED_VQ_ENTRY_MAX (__TCA_GRED_VQ_ENTRY_MAX - 1)
208enum {
209 TCA_GRED_VQ_UNSPEC,
210 TCA_GRED_VQ_PAD,
211 TCA_GRED_VQ_DP,
212 TCA_GRED_VQ_STAT_BYTES,
213 TCA_GRED_VQ_STAT_PACKETS,
214 TCA_GRED_VQ_STAT_BACKLOG,
215 TCA_GRED_VQ_STAT_PROB_DROP,
216 TCA_GRED_VQ_STAT_PROB_MARK,
217 TCA_GRED_VQ_STAT_FORCED_DROP,
218 TCA_GRED_VQ_STAT_FORCED_MARK,
219 TCA_GRED_VQ_STAT_PDROP,
220 TCA_GRED_VQ_STAT_OTHER,
221 TCA_GRED_VQ_FLAGS,
222 __TCA_GRED_VQ_MAX
223};
224#define TCA_GRED_VQ_MAX (__TCA_GRED_VQ_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700225struct tc_gred_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800226 __u32 limit;
227 __u32 qth_min;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800228 __u32 qth_max;
Tao Baod7db5942015-01-28 10:07:51 -0800229 __u32 DP;
230 __u32 backlog;
231 __u32 qave;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800232 __u32 forced;
Tao Baod7db5942015-01-28 10:07:51 -0800233 __u32 early;
234 __u32 other;
235 __u32 pdrop;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800236 __u8 Wlog;
Tao Baod7db5942015-01-28 10:07:51 -0800237 __u8 Plog;
238 __u8 Scell_log;
239 __u8 prio;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800240 __u32 packets;
Tao Baod7db5942015-01-28 10:07:51 -0800241 __u32 bytesin;
Ben Cheng655a7c02013-10-16 16:09:24 -0700242};
243struct tc_gred_sopt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800244 __u32 DPs;
Tao Baod7db5942015-01-28 10:07:51 -0800245 __u32 def_DP;
246 __u8 grio;
247 __u8 flags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800248 __u16 pad1;
Ben Cheng655a7c02013-10-16 16:09:24 -0700249};
250enum {
Tao Baod7db5942015-01-28 10:07:51 -0800251 TCA_CHOKE_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800252 TCA_CHOKE_PARMS,
Tao Baod7db5942015-01-28 10:07:51 -0800253 TCA_CHOKE_STAB,
254 TCA_CHOKE_MAX_P,
255 __TCA_CHOKE_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800256};
Ben Cheng655a7c02013-10-16 16:09:24 -0700257#define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1)
258struct tc_choke_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800259 __u32 limit;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800260 __u32 qth_min;
Tao Baod7db5942015-01-28 10:07:51 -0800261 __u32 qth_max;
262 unsigned char Wlog;
263 unsigned char Plog;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800264 unsigned char Scell_log;
Tao Baod7db5942015-01-28 10:07:51 -0800265 unsigned char flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700266};
267struct tc_choke_xstats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800268 __u32 early;
Tao Baod7db5942015-01-28 10:07:51 -0800269 __u32 pdrop;
270 __u32 other;
271 __u32 marked;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800272 __u32 matched;
Ben Cheng655a7c02013-10-16 16:09:24 -0700273};
274#define TC_HTB_NUMPRIO 8
275#define TC_HTB_MAXDEPTH 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800276#define TC_HTB_PROTOVER 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700277struct tc_htb_opt {
Tao Baod7db5942015-01-28 10:07:51 -0800278 struct tc_ratespec rate;
279 struct tc_ratespec ceil;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800280 __u32 buffer;
Tao Baod7db5942015-01-28 10:07:51 -0800281 __u32 cbuffer;
282 __u32 quantum;
283 __u32 level;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800284 __u32 prio;
Ben Cheng655a7c02013-10-16 16:09:24 -0700285};
286struct tc_htb_glob {
Tao Baod7db5942015-01-28 10:07:51 -0800287 __u32 version;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800288 __u32 rate2quantum;
Tao Baod7db5942015-01-28 10:07:51 -0800289 __u32 defcls;
290 __u32 debug;
291 __u32 direct_pkts;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800292};
Ben Cheng655a7c02013-10-16 16:09:24 -0700293enum {
Tao Baod7db5942015-01-28 10:07:51 -0800294 TCA_HTB_UNSPEC,
295 TCA_HTB_PARMS,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800296 TCA_HTB_INIT,
Tao Baod7db5942015-01-28 10:07:51 -0800297 TCA_HTB_CTAB,
298 TCA_HTB_RTAB,
299 TCA_HTB_DIRECT_QLEN,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800300 TCA_HTB_RATE64,
Tao Baod7db5942015-01-28 10:07:51 -0800301 TCA_HTB_CEIL64,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700302 TCA_HTB_PAD,
Tao Baod7db5942015-01-28 10:07:51 -0800303 __TCA_HTB_MAX,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700304};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800305#define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700306struct tc_htb_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800307 __u32 lends;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700308 __u32 borrows;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800309 __u32 giants;
Christopher Ferris86a48372019-01-10 14:14:59 -0800310 __s32 tokens;
311 __s32 ctokens;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700312};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800313struct tc_hfsc_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800314 __u16 defcls;
Ben Cheng655a7c02013-10-16 16:09:24 -0700315};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700316struct tc_service_curve {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800317 __u32 m1;
Tao Baod7db5942015-01-28 10:07:51 -0800318 __u32 d;
319 __u32 m2;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700320};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800321struct tc_hfsc_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800322 __u64 work;
323 __u64 rtwork;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700324 __u32 period;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800325 __u32 level;
Ben Cheng655a7c02013-10-16 16:09:24 -0700326};
327enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700328 TCA_HFSC_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800329 TCA_HFSC_RSC,
Tao Baod7db5942015-01-28 10:07:51 -0800330 TCA_HFSC_FSC,
331 TCA_HFSC_USC,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700332 __TCA_HFSC_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800333};
Ben Cheng655a7c02013-10-16 16:09:24 -0700334#define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
335#define TC_CBQ_MAXPRIO 8
Christopher Ferris106b3a82016-08-24 12:15:38 -0700336#define TC_CBQ_MAXLEVEL 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800337#define TC_CBQ_DEF_EWMA 5
Ben Cheng655a7c02013-10-16 16:09:24 -0700338struct tc_cbq_lssopt {
Tao Baod7db5942015-01-28 10:07:51 -0800339 unsigned char change;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700340 unsigned char flags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800341#define TCF_CBQ_LSS_BOUNDED 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700342#define TCF_CBQ_LSS_ISOLATED 2
Tao Baod7db5942015-01-28 10:07:51 -0800343 unsigned char ewma_log;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700344 unsigned char level;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800345#define TCF_CBQ_LSS_FLAGS 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700346#define TCF_CBQ_LSS_EWMA 2
347#define TCF_CBQ_LSS_MAXIDLE 4
Christopher Ferris106b3a82016-08-24 12:15:38 -0700348#define TCF_CBQ_LSS_MINIDLE 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800349#define TCF_CBQ_LSS_OFFTIME 0x10
Ben Cheng655a7c02013-10-16 16:09:24 -0700350#define TCF_CBQ_LSS_AVPKT 0x20
Tao Baod7db5942015-01-28 10:07:51 -0800351 __u32 maxidle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700352 __u32 minidle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800353 __u32 offtime;
Tao Baod7db5942015-01-28 10:07:51 -0800354 __u32 avpkt;
Ben Cheng655a7c02013-10-16 16:09:24 -0700355};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700356struct tc_cbq_wrropt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800357 unsigned char flags;
Tao Baod7db5942015-01-28 10:07:51 -0800358 unsigned char priority;
359 unsigned char cpriority;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700360 unsigned char __reserved;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800361 __u32 allot;
Tao Baod7db5942015-01-28 10:07:51 -0800362 __u32 weight;
Ben Cheng655a7c02013-10-16 16:09:24 -0700363};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700364struct tc_cbq_ovl {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800365 unsigned char strategy;
Ben Cheng655a7c02013-10-16 16:09:24 -0700366#define TC_CBQ_OVL_CLASSIC 0
367#define TC_CBQ_OVL_DELAY 1
Christopher Ferris106b3a82016-08-24 12:15:38 -0700368#define TC_CBQ_OVL_LOWPRIO 2
Christopher Ferris05d08e92016-02-04 13:16:38 -0800369#define TC_CBQ_OVL_DROP 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700370#define TC_CBQ_OVL_RCLASSIC 4
Tao Baod7db5942015-01-28 10:07:51 -0800371 unsigned char priority2;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700372 __u16 pad;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800373 __u32 penalty;
Ben Cheng655a7c02013-10-16 16:09:24 -0700374};
375struct tc_cbq_police {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700376 unsigned char police;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800377 unsigned char __res1;
Tao Baod7db5942015-01-28 10:07:51 -0800378 unsigned short __res2;
Ben Cheng655a7c02013-10-16 16:09:24 -0700379};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700380struct tc_cbq_fopt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800381 __u32 split;
Tao Baod7db5942015-01-28 10:07:51 -0800382 __u32 defmap;
383 __u32 defchange;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700384};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800385struct tc_cbq_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800386 __u32 borrows;
387 __u32 overactions;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700388 __s32 avgidle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800389 __s32 undertime;
Ben Cheng655a7c02013-10-16 16:09:24 -0700390};
391enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700392 TCA_CBQ_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800393 TCA_CBQ_LSSOPT,
Tao Baod7db5942015-01-28 10:07:51 -0800394 TCA_CBQ_WRROPT,
395 TCA_CBQ_FOPT,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700396 TCA_CBQ_OVL_STRATEGY,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800397 TCA_CBQ_RATE,
Tao Baod7db5942015-01-28 10:07:51 -0800398 TCA_CBQ_RTAB,
399 TCA_CBQ_POLICE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700400 __TCA_CBQ_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800401};
Ben Cheng655a7c02013-10-16 16:09:24 -0700402#define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1)
403enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700404 TCA_DSMARK_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800405 TCA_DSMARK_INDICES,
Tao Baod7db5942015-01-28 10:07:51 -0800406 TCA_DSMARK_DEFAULT_INDEX,
407 TCA_DSMARK_SET_TC_INDEX,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700408 TCA_DSMARK_MASK,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800409 TCA_DSMARK_VALUE,
Tao Baod7db5942015-01-28 10:07:51 -0800410 __TCA_DSMARK_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700411};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700412#define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800413enum {
Tao Baod7db5942015-01-28 10:07:51 -0800414 TCA_ATM_UNSPEC,
415 TCA_ATM_FD,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700416 TCA_ATM_PTR,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800417 TCA_ATM_HDR,
Tao Baod7db5942015-01-28 10:07:51 -0800418 TCA_ATM_EXCESS,
419 TCA_ATM_ADDR,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700420 TCA_ATM_STATE,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800421 __TCA_ATM_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700422};
423#define TCA_ATM_MAX (__TCA_ATM_MAX - 1)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700424enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800425 TCA_NETEM_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800426 TCA_NETEM_CORR,
427 TCA_NETEM_DELAY_DIST,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700428 TCA_NETEM_REORDER,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800429 TCA_NETEM_CORRUPT,
Tao Baod7db5942015-01-28 10:07:51 -0800430 TCA_NETEM_LOSS,
431 TCA_NETEM_RATE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700432 TCA_NETEM_ECN,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800433 TCA_NETEM_RATE64,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700434 TCA_NETEM_PAD,
Christopher Ferris934ec942018-01-31 15:29:16 -0800435 TCA_NETEM_LATENCY64,
436 TCA_NETEM_JITTER64,
437 TCA_NETEM_SLOT,
Christopher Ferris9ce28842018-10-25 12:11:39 -0700438 TCA_NETEM_SLOT_DIST,
Tao Baod7db5942015-01-28 10:07:51 -0800439 __TCA_NETEM_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700440};
441#define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800442struct tc_netem_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800443 __u32 latency;
444 __u32 limit;
445 __u32 loss;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800446 __u32 gap;
Tao Baod7db5942015-01-28 10:07:51 -0800447 __u32 duplicate;
448 __u32 jitter;
Ben Cheng655a7c02013-10-16 16:09:24 -0700449};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800450struct tc_netem_corr {
Tao Baod7db5942015-01-28 10:07:51 -0800451 __u32 delay_corr;
452 __u32 loss_corr;
453 __u32 dup_corr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800454};
Ben Cheng655a7c02013-10-16 16:09:24 -0700455struct tc_netem_reorder {
Tao Baod7db5942015-01-28 10:07:51 -0800456 __u32 probability;
457 __u32 correlation;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800458};
Ben Cheng655a7c02013-10-16 16:09:24 -0700459struct tc_netem_corrupt {
Tao Baod7db5942015-01-28 10:07:51 -0800460 __u32 probability;
461 __u32 correlation;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800462};
Christopher Ferris38062f92014-07-09 15:33:25 -0700463struct tc_netem_rate {
Tao Baod7db5942015-01-28 10:07:51 -0800464 __u32 rate;
465 __s32 packet_overhead;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800466 __u32 cell_size;
Tao Baod7db5942015-01-28 10:07:51 -0800467 __s32 cell_overhead;
Ben Cheng655a7c02013-10-16 16:09:24 -0700468};
Christopher Ferris934ec942018-01-31 15:29:16 -0800469struct tc_netem_slot {
470 __s64 min_delay;
471 __s64 max_delay;
472 __s32 max_packets;
473 __s32 max_bytes;
Christopher Ferris9ce28842018-10-25 12:11:39 -0700474 __s64 dist_delay;
475 __s64 dist_jitter;
Christopher Ferris934ec942018-01-31 15:29:16 -0800476};
Ben Cheng655a7c02013-10-16 16:09:24 -0700477enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800478 NETEM_LOSS_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800479 NETEM_LOSS_GI,
480 NETEM_LOSS_GE,
481 __NETEM_LOSS_MAX
Christopher Ferris05d08e92016-02-04 13:16:38 -0800482};
Christopher Ferris38062f92014-07-09 15:33:25 -0700483#define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700484struct tc_netem_gimodel {
Tao Baod7db5942015-01-28 10:07:51 -0800485 __u32 p13;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800486 __u32 p31;
Tao Baod7db5942015-01-28 10:07:51 -0800487 __u32 p32;
488 __u32 p14;
489 __u32 p23;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800490};
Christopher Ferris38062f92014-07-09 15:33:25 -0700491struct tc_netem_gemodel {
Tao Baod7db5942015-01-28 10:07:51 -0800492 __u32 p;
493 __u32 r;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800494 __u32 h;
Tao Baod7db5942015-01-28 10:07:51 -0800495 __u32 k1;
Ben Cheng655a7c02013-10-16 16:09:24 -0700496};
497#define NETEM_DIST_SCALE 8192
Christopher Ferris05d08e92016-02-04 13:16:38 -0800498#define NETEM_DIST_MAX 16384
Christopher Ferris38062f92014-07-09 15:33:25 -0700499enum {
Tao Baod7db5942015-01-28 10:07:51 -0800500 TCA_DRR_UNSPEC,
501 TCA_DRR_QUANTUM,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800502 __TCA_DRR_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700503};
Ben Cheng655a7c02013-10-16 16:09:24 -0700504#define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
505struct tc_drr_stats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800506 __u32 deficit;
Christopher Ferris38062f92014-07-09 15:33:25 -0700507};
Ben Cheng655a7c02013-10-16 16:09:24 -0700508#define TC_QOPT_BITMASK 15
509#define TC_QOPT_MAX_QUEUE 16
Christopher Ferris525ce912017-07-26 13:12:53 -0700510enum {
511 TC_MQPRIO_HW_OFFLOAD_NONE,
512 TC_MQPRIO_HW_OFFLOAD_TCS,
513 __TC_MQPRIO_HW_OFFLOAD_MAX
514};
515#define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1)
Christopher Ferris934ec942018-01-31 15:29:16 -0800516enum {
517 TC_MQPRIO_MODE_DCB,
518 TC_MQPRIO_MODE_CHANNEL,
519 __TC_MQPRIO_MODE_MAX
520};
521#define __TC_MQPRIO_MODE_MAX (__TC_MQPRIO_MODE_MAX - 1)
522enum {
523 TC_MQPRIO_SHAPER_DCB,
524 TC_MQPRIO_SHAPER_BW_RATE,
525 __TC_MQPRIO_SHAPER_MAX
526};
527#define __TC_MQPRIO_SHAPER_MAX (__TC_MQPRIO_SHAPER_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800528struct tc_mqprio_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800529 __u8 num_tc;
530 __u8 prio_tc_map[TC_QOPT_BITMASK + 1];
531 __u8 hw;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800532 __u16 count[TC_QOPT_MAX_QUEUE];
Tao Baod7db5942015-01-28 10:07:51 -0800533 __u16 offset[TC_QOPT_MAX_QUEUE];
Ben Cheng655a7c02013-10-16 16:09:24 -0700534};
Christopher Ferris934ec942018-01-31 15:29:16 -0800535#define TC_MQPRIO_F_MODE 0x1
536#define TC_MQPRIO_F_SHAPER 0x2
537#define TC_MQPRIO_F_MIN_RATE 0x4
538#define TC_MQPRIO_F_MAX_RATE 0x8
539enum {
540 TCA_MQPRIO_UNSPEC,
541 TCA_MQPRIO_MODE,
542 TCA_MQPRIO_SHAPER,
543 TCA_MQPRIO_MIN_RATE64,
544 TCA_MQPRIO_MAX_RATE64,
545 __TCA_MQPRIO_MAX,
546};
547#define TCA_MQPRIO_MAX (__TCA_MQPRIO_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700548enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800549 TCA_SFB_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800550 TCA_SFB_PARMS,
551 __TCA_SFB_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700552};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800553#define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700554struct tc_sfb_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800555 __u32 rehash_interval;
556 __u32 warmup_time;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800557 __u32 max;
Tao Baod7db5942015-01-28 10:07:51 -0800558 __u32 bin_size;
559 __u32 increment;
560 __u32 decrement;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800561 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800562 __u32 penalty_rate;
563 __u32 penalty_burst;
Ben Cheng655a7c02013-10-16 16:09:24 -0700564};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800565struct tc_sfb_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800566 __u32 earlydrop;
567 __u32 penaltydrop;
568 __u32 bucketdrop;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800569 __u32 queuedrop;
Tao Baod7db5942015-01-28 10:07:51 -0800570 __u32 childdrop;
571 __u32 marked;
572 __u32 maxqlen;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800573 __u32 maxprob;
Tao Baod7db5942015-01-28 10:07:51 -0800574 __u32 avgprob;
Ben Cheng655a7c02013-10-16 16:09:24 -0700575};
576#define SFB_MAX_PROB 0xFFFF
Christopher Ferris05d08e92016-02-04 13:16:38 -0800577enum {
Tao Baod7db5942015-01-28 10:07:51 -0800578 TCA_QFQ_UNSPEC,
579 TCA_QFQ_WEIGHT,
580 TCA_QFQ_LMAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800581 __TCA_QFQ_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700582};
Ben Cheng655a7c02013-10-16 16:09:24 -0700583#define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1)
584struct tc_qfq_stats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800585 __u32 weight;
Tao Baod7db5942015-01-28 10:07:51 -0800586 __u32 lmax;
Ben Cheng655a7c02013-10-16 16:09:24 -0700587};
588enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800589 TCA_CODEL_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800590 TCA_CODEL_TARGET,
591 TCA_CODEL_LIMIT,
592 TCA_CODEL_INTERVAL,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800593 TCA_CODEL_ECN,
594 TCA_CODEL_CE_THRESHOLD,
Tao Baod7db5942015-01-28 10:07:51 -0800595 __TCA_CODEL_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700596};
597#define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700598struct tc_codel_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800599 __u32 maxpacket;
600 __u32 count;
601 __u32 lastcount;
602 __u32 ldelay;
Tao Baod7db5942015-01-28 10:07:51 -0800603 __s32 drop_next;
604 __u32 drop_overlimit;
605 __u32 ecn_mark;
606 __u32 dropping;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800607 __u32 ce_mark;
Christopher Ferris38062f92014-07-09 15:33:25 -0700608};
Ben Cheng655a7c02013-10-16 16:09:24 -0700609enum {
Tao Baod7db5942015-01-28 10:07:51 -0800610 TCA_FQ_CODEL_UNSPEC,
611 TCA_FQ_CODEL_TARGET,
Tao Baod7db5942015-01-28 10:07:51 -0800612 TCA_FQ_CODEL_LIMIT,
613 TCA_FQ_CODEL_INTERVAL,
614 TCA_FQ_CODEL_ECN,
615 TCA_FQ_CODEL_FLOWS,
Tao Baod7db5942015-01-28 10:07:51 -0800616 TCA_FQ_CODEL_QUANTUM,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800617 TCA_FQ_CODEL_CE_THRESHOLD,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700618 TCA_FQ_CODEL_DROP_BATCH_SIZE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700619 TCA_FQ_CODEL_MEMORY_LIMIT,
Tao Baod7db5942015-01-28 10:07:51 -0800620 __TCA_FQ_CODEL_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700621};
Ben Cheng655a7c02013-10-16 16:09:24 -0700622#define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700623enum {
Tao Baod7db5942015-01-28 10:07:51 -0800624 TCA_FQ_CODEL_XSTATS_QDISC,
625 TCA_FQ_CODEL_XSTATS_CLASS,
Ben Cheng655a7c02013-10-16 16:09:24 -0700626};
Christopher Ferris38062f92014-07-09 15:33:25 -0700627struct tc_fq_codel_qd_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800628 __u32 maxpacket;
629 __u32 drop_overlimit;
630 __u32 ecn_mark;
Tao Baod7db5942015-01-28 10:07:51 -0800631 __u32 new_flow_count;
632 __u32 new_flows_len;
633 __u32 old_flows_len;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800634 __u32 ce_mark;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700635 __u32 memory_usage;
636 __u32 drop_overmemory;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800637};
Christopher Ferris38062f92014-07-09 15:33:25 -0700638struct tc_fq_codel_cl_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800639 __s32 deficit;
640 __u32 ldelay;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800641 __u32 count;
Tao Baod7db5942015-01-28 10:07:51 -0800642 __u32 lastcount;
643 __u32 dropping;
644 __s32 drop_next;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800645};
Christopher Ferris38062f92014-07-09 15:33:25 -0700646struct tc_fq_codel_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800647 __u32 type;
648 union {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800649 struct tc_fq_codel_qd_stats qdisc_stats;
Tao Baod7db5942015-01-28 10:07:51 -0800650 struct tc_fq_codel_cl_stats class_stats;
651 };
Ben Cheng655a7c02013-10-16 16:09:24 -0700652};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800653enum {
Tao Baod7db5942015-01-28 10:07:51 -0800654 TCA_FQ_UNSPEC,
655 TCA_FQ_PLIMIT,
656 TCA_FQ_FLOW_PLIMIT,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800657 TCA_FQ_QUANTUM,
Tao Baod7db5942015-01-28 10:07:51 -0800658 TCA_FQ_INITIAL_QUANTUM,
659 TCA_FQ_RATE_ENABLE,
660 TCA_FQ_FLOW_DEFAULT_RATE,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800661 TCA_FQ_FLOW_MAX_RATE,
Tao Baod7db5942015-01-28 10:07:51 -0800662 TCA_FQ_BUCKETS_LOG,
663 TCA_FQ_FLOW_REFILL_DELAY,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800664 TCA_FQ_ORPHAN_MASK,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800665 TCA_FQ_LOW_RATE_THRESHOLD,
Christopher Ferrisd842e432019-03-07 10:21:59 -0800666 TCA_FQ_CE_THRESHOLD,
Tao Baod7db5942015-01-28 10:07:51 -0800667 __TCA_FQ_MAX
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800668};
Christopher Ferris38062f92014-07-09 15:33:25 -0700669#define TCA_FQ_MAX (__TCA_FQ_MAX - 1)
670struct tc_fq_qd_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800671 __u64 gc_flows;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800672 __u64 highprio_packets;
Tao Baod7db5942015-01-28 10:07:51 -0800673 __u64 tcp_retrans;
674 __u64 throttled;
675 __u64 flows_plimit;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800676 __u64 pkts_too_long;
Tao Baod7db5942015-01-28 10:07:51 -0800677 __u64 allocation_errors;
678 __s64 time_next_delayed_flow;
679 __u32 flows;
680 __u32 inactive_flows;
Tao Baod7db5942015-01-28 10:07:51 -0800681 __u32 throttled_flows;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800682 __u32 unthrottle_latency_ns;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800683 __u64 ce_mark;
Christopher Ferris38062f92014-07-09 15:33:25 -0700684};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800685enum {
Tao Baod7db5942015-01-28 10:07:51 -0800686 TCA_HHF_UNSPEC,
687 TCA_HHF_BACKLOG_LIMIT,
688 TCA_HHF_QUANTUM,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800689 TCA_HHF_HH_FLOWS_LIMIT,
Tao Baod7db5942015-01-28 10:07:51 -0800690 TCA_HHF_RESET_TIMEOUT,
691 TCA_HHF_ADMIT_BYTES,
692 TCA_HHF_EVICT_TIMEOUT,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800693 TCA_HHF_NON_HH_WEIGHT,
Tao Baod7db5942015-01-28 10:07:51 -0800694 __TCA_HHF_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700695};
696#define TCA_HHF_MAX (__TCA_HHF_MAX - 1)
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800697struct tc_hhf_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800698 __u32 drop_overlimit;
699 __u32 hh_overlimit;
700 __u32 hh_tot_count;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800701 __u32 hh_cur_count;
Christopher Ferris38062f92014-07-09 15:33:25 -0700702};
703enum {
Tao Baod7db5942015-01-28 10:07:51 -0800704 TCA_PIE_UNSPEC,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800705 TCA_PIE_TARGET,
Tao Baod7db5942015-01-28 10:07:51 -0800706 TCA_PIE_LIMIT,
707 TCA_PIE_TUPDATE,
708 TCA_PIE_ALPHA,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800709 TCA_PIE_BETA,
Tao Baod7db5942015-01-28 10:07:51 -0800710 TCA_PIE_ECN,
711 TCA_PIE_BYTEMODE,
712 __TCA_PIE_MAX
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800713};
Christopher Ferris38062f92014-07-09 15:33:25 -0700714#define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
715struct tc_pie_xstats {
Christopher Ferris24f97eb2019-05-20 12:58:13 -0700716 __u64 prob;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800717 __u32 delay;
Tao Baod7db5942015-01-28 10:07:51 -0800718 __u32 avg_dq_rate;
719 __u32 packets_in;
720 __u32 dropped;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800721 __u32 overlimit;
Tao Baod7db5942015-01-28 10:07:51 -0800722 __u32 maxq;
723 __u32 ecn_mark;
Christopher Ferris38062f92014-07-09 15:33:25 -0700724};
Christopher Ferris934ec942018-01-31 15:29:16 -0800725struct tc_cbs_qopt {
726 __u8 offload;
727 __u8 _pad[3];
728 __s32 hicredit;
729 __s32 locredit;
730 __s32 idleslope;
731 __s32 sendslope;
732};
733enum {
734 TCA_CBS_UNSPEC,
735 TCA_CBS_PARMS,
736 __TCA_CBS_MAX,
737};
738#define TCA_CBS_MAX (__TCA_CBS_MAX - 1)
Christopher Ferris9ce28842018-10-25 12:11:39 -0700739struct tc_etf_qopt {
740 __s32 delta;
741 __s32 clockid;
742 __u32 flags;
743#define TC_ETF_DEADLINE_MODE_ON BIT(0)
744#define TC_ETF_OFFLOAD_ON BIT(1)
745};
746enum {
747 TCA_ETF_UNSPEC,
748 TCA_ETF_PARMS,
749 __TCA_ETF_MAX,
750};
751#define TCA_ETF_MAX (__TCA_ETF_MAX - 1)
752enum {
753 TCA_CAKE_UNSPEC,
754 TCA_CAKE_PAD,
755 TCA_CAKE_BASE_RATE64,
756 TCA_CAKE_DIFFSERV_MODE,
757 TCA_CAKE_ATM,
758 TCA_CAKE_FLOW_MODE,
759 TCA_CAKE_OVERHEAD,
760 TCA_CAKE_RTT,
761 TCA_CAKE_TARGET,
762 TCA_CAKE_AUTORATE,
763 TCA_CAKE_MEMORY,
764 TCA_CAKE_NAT,
765 TCA_CAKE_RAW,
766 TCA_CAKE_WASH,
767 TCA_CAKE_MPU,
768 TCA_CAKE_INGRESS,
769 TCA_CAKE_ACK_FILTER,
770 TCA_CAKE_SPLIT_GSO,
Christopher Ferris24f97eb2019-05-20 12:58:13 -0700771 TCA_CAKE_FWMARK,
Christopher Ferris9ce28842018-10-25 12:11:39 -0700772 __TCA_CAKE_MAX
773};
774#define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1)
775enum {
776 __TCA_CAKE_STATS_INVALID,
777 TCA_CAKE_STATS_PAD,
778 TCA_CAKE_STATS_CAPACITY_ESTIMATE64,
779 TCA_CAKE_STATS_MEMORY_LIMIT,
780 TCA_CAKE_STATS_MEMORY_USED,
781 TCA_CAKE_STATS_AVG_NETOFF,
782 TCA_CAKE_STATS_MIN_NETLEN,
783 TCA_CAKE_STATS_MAX_NETLEN,
784 TCA_CAKE_STATS_MIN_ADJLEN,
785 TCA_CAKE_STATS_MAX_ADJLEN,
786 TCA_CAKE_STATS_TIN_STATS,
787 TCA_CAKE_STATS_DEFICIT,
788 TCA_CAKE_STATS_COBALT_COUNT,
789 TCA_CAKE_STATS_DROPPING,
790 TCA_CAKE_STATS_DROP_NEXT_US,
791 TCA_CAKE_STATS_P_DROP,
792 TCA_CAKE_STATS_BLUE_TIMER_US,
793 __TCA_CAKE_STATS_MAX
794};
795#define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1)
796enum {
797 __TCA_CAKE_TIN_STATS_INVALID,
798 TCA_CAKE_TIN_STATS_PAD,
799 TCA_CAKE_TIN_STATS_SENT_PACKETS,
800 TCA_CAKE_TIN_STATS_SENT_BYTES64,
801 TCA_CAKE_TIN_STATS_DROPPED_PACKETS,
802 TCA_CAKE_TIN_STATS_DROPPED_BYTES64,
803 TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS,
804 TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64,
805 TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS,
806 TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64,
807 TCA_CAKE_TIN_STATS_BACKLOG_PACKETS,
808 TCA_CAKE_TIN_STATS_BACKLOG_BYTES,
809 TCA_CAKE_TIN_STATS_THRESHOLD_RATE64,
810 TCA_CAKE_TIN_STATS_TARGET_US,
811 TCA_CAKE_TIN_STATS_INTERVAL_US,
812 TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS,
813 TCA_CAKE_TIN_STATS_WAY_MISSES,
814 TCA_CAKE_TIN_STATS_WAY_COLLISIONS,
815 TCA_CAKE_TIN_STATS_PEAK_DELAY_US,
816 TCA_CAKE_TIN_STATS_AVG_DELAY_US,
817 TCA_CAKE_TIN_STATS_BASE_DELAY_US,
818 TCA_CAKE_TIN_STATS_SPARSE_FLOWS,
819 TCA_CAKE_TIN_STATS_BULK_FLOWS,
820 TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS,
821 TCA_CAKE_TIN_STATS_MAX_SKBLEN,
822 TCA_CAKE_TIN_STATS_FLOW_QUANTUM,
823 __TCA_CAKE_TIN_STATS_MAX
824};
825#define TCA_CAKE_TIN_STATS_MAX (__TCA_CAKE_TIN_STATS_MAX - 1)
826#define TC_CAKE_MAX_TINS (8)
827enum {
828 CAKE_FLOW_NONE = 0,
829 CAKE_FLOW_SRC_IP,
830 CAKE_FLOW_DST_IP,
831 CAKE_FLOW_HOSTS,
832 CAKE_FLOW_FLOWS,
833 CAKE_FLOW_DUAL_SRC,
834 CAKE_FLOW_DUAL_DST,
835 CAKE_FLOW_TRIPLE,
836 CAKE_FLOW_MAX,
837};
838enum {
839 CAKE_DIFFSERV_DIFFSERV3 = 0,
840 CAKE_DIFFSERV_DIFFSERV4,
841 CAKE_DIFFSERV_DIFFSERV8,
842 CAKE_DIFFSERV_BESTEFFORT,
843 CAKE_DIFFSERV_PRECEDENCE,
844 CAKE_DIFFSERV_MAX
845};
846enum {
847 CAKE_ACK_NONE = 0,
848 CAKE_ACK_FILTER,
849 CAKE_ACK_AGGRESSIVE,
850 CAKE_ACK_MAX
851};
852enum {
853 CAKE_ATM_NONE = 0,
854 CAKE_ATM_ATM,
855 CAKE_ATM_PTM,
856 CAKE_ATM_MAX
857};
Christopher Ferris86a48372019-01-10 14:14:59 -0800858enum {
859 TC_TAPRIO_CMD_SET_GATES = 0x00,
860 TC_TAPRIO_CMD_SET_AND_HOLD = 0x01,
861 TC_TAPRIO_CMD_SET_AND_RELEASE = 0x02,
862};
863enum {
864 TCA_TAPRIO_SCHED_ENTRY_UNSPEC,
865 TCA_TAPRIO_SCHED_ENTRY_INDEX,
866 TCA_TAPRIO_SCHED_ENTRY_CMD,
867 TCA_TAPRIO_SCHED_ENTRY_GATE_MASK,
868 TCA_TAPRIO_SCHED_ENTRY_INTERVAL,
869 __TCA_TAPRIO_SCHED_ENTRY_MAX,
870};
871#define TCA_TAPRIO_SCHED_ENTRY_MAX (__TCA_TAPRIO_SCHED_ENTRY_MAX - 1)
872enum {
873 TCA_TAPRIO_SCHED_UNSPEC,
874 TCA_TAPRIO_SCHED_ENTRY,
875 __TCA_TAPRIO_SCHED_MAX,
876};
877#define TCA_TAPRIO_SCHED_MAX (__TCA_TAPRIO_SCHED_MAX - 1)
878enum {
879 TCA_TAPRIO_ATTR_UNSPEC,
880 TCA_TAPRIO_ATTR_PRIOMAP,
881 TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
882 TCA_TAPRIO_ATTR_SCHED_BASE_TIME,
883 TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY,
884 TCA_TAPRIO_ATTR_SCHED_CLOCKID,
885 TCA_TAPRIO_PAD,
886 __TCA_TAPRIO_ATTR_MAX,
887};
888#define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800889#endif