blob: e15168ad456cb5d79a6cd278083f7fd7d9655df1 [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
Christopher Ferrisb8a95e22019-10-02 18:29:20 -070021#include <linux/const.h>
Ben Cheng655a7c02013-10-16 16:09:24 -070022#include <linux/types.h>
23#define TC_PRIO_BESTEFFORT 0
Ben Cheng655a7c02013-10-16 16:09:24 -070024#define TC_PRIO_FILLER 1
25#define TC_PRIO_BULK 2
26#define TC_PRIO_INTERACTIVE_BULK 4
27#define TC_PRIO_INTERACTIVE 6
Ben Cheng655a7c02013-10-16 16:09:24 -070028#define TC_PRIO_CONTROL 7
29#define TC_PRIO_MAX 15
30struct tc_stats {
Tao Baod7db5942015-01-28 10:07:51 -080031 __u64 bytes;
Tao Baod7db5942015-01-28 10:07:51 -080032 __u32 packets;
33 __u32 drops;
34 __u32 overlimits;
35 __u32 bps;
Tao Baod7db5942015-01-28 10:07:51 -080036 __u32 pps;
37 __u32 qlen;
38 __u32 backlog;
Ben Cheng655a7c02013-10-16 16:09:24 -070039};
Ben Cheng655a7c02013-10-16 16:09:24 -070040struct tc_estimator {
Tao Baod7db5942015-01-28 10:07:51 -080041 signed char interval;
42 unsigned char ewma_log;
Ben Cheng655a7c02013-10-16 16:09:24 -070043};
Ben Cheng655a7c02013-10-16 16:09:24 -070044#define TC_H_MAJ_MASK (0xFFFF0000U)
45#define TC_H_MIN_MASK (0x0000FFFFU)
Tao Baod7db5942015-01-28 10:07:51 -080046#define TC_H_MAJ(h) ((h) & TC_H_MAJ_MASK)
47#define TC_H_MIN(h) ((h) & TC_H_MIN_MASK)
Tao Baod7db5942015-01-28 10:07:51 -080048#define TC_H_MAKE(maj,min) (((maj) & TC_H_MAJ_MASK) | ((min) & TC_H_MIN_MASK))
Ben Cheng655a7c02013-10-16 16:09:24 -070049#define TC_H_UNSPEC (0U)
50#define TC_H_ROOT (0xFFFFFFFFU)
51#define TC_H_INGRESS (0xFFFFFFF1U)
Christopher Ferris106b3a82016-08-24 12:15:38 -070052#define TC_H_CLSACT TC_H_INGRESS
Christopher Ferris934ec942018-01-31 15:29:16 -080053#define TC_H_MIN_PRIORITY 0xFFE0U
Christopher Ferris106b3a82016-08-24 12:15:38 -070054#define TC_H_MIN_INGRESS 0xFFF2U
55#define TC_H_MIN_EGRESS 0xFFF3U
Christopher Ferris38062f92014-07-09 15:33:25 -070056enum tc_link_layer {
Tao Baod7db5942015-01-28 10:07:51 -080057 TC_LINKLAYER_UNAWARE,
58 TC_LINKLAYER_ETHERNET,
59 TC_LINKLAYER_ATM,
Christopher Ferris38062f92014-07-09 15:33:25 -070060};
61#define TC_LINKLAYER_MASK 0x0F
Ben Cheng655a7c02013-10-16 16:09:24 -070062struct tc_ratespec {
Tao Baod7db5942015-01-28 10:07:51 -080063 unsigned char cell_log;
Tao Baod7db5942015-01-28 10:07:51 -080064 __u8 linklayer;
65 unsigned short overhead;
66 short cell_align;
67 unsigned short mpu;
Tao Baod7db5942015-01-28 10:07:51 -080068 __u32 rate;
Ben Cheng655a7c02013-10-16 16:09:24 -070069};
70#define TC_RTAB_SIZE 1024
71struct tc_sizespec {
Tao Baod7db5942015-01-28 10:07:51 -080072 unsigned char cell_log;
73 unsigned char size_log;
74 short cell_align;
75 int overhead;
Tao Baod7db5942015-01-28 10:07:51 -080076 unsigned int linklayer;
77 unsigned int mpu;
78 unsigned int mtu;
79 unsigned int tsize;
Ben Cheng655a7c02013-10-16 16:09:24 -070080};
81enum {
Tao Baod7db5942015-01-28 10:07:51 -080082 TCA_STAB_UNSPEC,
83 TCA_STAB_BASE,
Tao Baod7db5942015-01-28 10:07:51 -080084 TCA_STAB_DATA,
85 __TCA_STAB_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -070086};
87#define TCA_STAB_MAX (__TCA_STAB_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -070088struct tc_fifo_qopt {
Tao Baod7db5942015-01-28 10:07:51 -080089 __u32 limit;
Ben Cheng655a7c02013-10-16 16:09:24 -070090};
Christopher Ferris9ce28842018-10-25 12:11:39 -070091#define SKBPRIO_MAX_PRIORITY 64
92struct tc_skbprio_qopt {
93 __u32 limit;
94};
Ben Cheng655a7c02013-10-16 16:09:24 -070095#define TCQ_PRIO_BANDS 16
Ben Cheng655a7c02013-10-16 16:09:24 -070096#define TCQ_MIN_PRIO_BANDS 2
97struct tc_prio_qopt {
Tao Baod7db5942015-01-28 10:07:51 -080098 int bands;
99 __u8 priomap[TC_PRIO_MAX + 1];
Ben Cheng655a7c02013-10-16 16:09:24 -0700100};
101struct tc_multiq_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800102 __u16 bands;
103 __u16 max_bands;
Ben Cheng655a7c02013-10-16 16:09:24 -0700104};
105#define TCQ_PLUG_BUFFER 0
106#define TCQ_PLUG_RELEASE_ONE 1
107#define TCQ_PLUG_RELEASE_INDEFINITE 2
Ben Cheng655a7c02013-10-16 16:09:24 -0700108#define TCQ_PLUG_LIMIT 3
109struct tc_plug_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800110 int action;
111 __u32 limit;
Ben Cheng655a7c02013-10-16 16:09:24 -0700112};
113struct tc_tbf_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800114 struct tc_ratespec rate;
115 struct tc_ratespec peakrate;
Tao Baod7db5942015-01-28 10:07:51 -0800116 __u32 limit;
117 __u32 buffer;
118 __u32 mtu;
Ben Cheng655a7c02013-10-16 16:09:24 -0700119};
Ben Cheng655a7c02013-10-16 16:09:24 -0700120enum {
Tao Baod7db5942015-01-28 10:07:51 -0800121 TCA_TBF_UNSPEC,
122 TCA_TBF_PARMS,
123 TCA_TBF_RTAB,
Tao Baod7db5942015-01-28 10:07:51 -0800124 TCA_TBF_PTAB,
125 TCA_TBF_RATE64,
126 TCA_TBF_PRATE64,
127 TCA_TBF_BURST,
Tao Baod7db5942015-01-28 10:07:51 -0800128 TCA_TBF_PBURST,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700129 TCA_TBF_PAD,
Tao Baod7db5942015-01-28 10:07:51 -0800130 __TCA_TBF_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700131};
132#define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700133struct tc_sfq_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800134 unsigned quantum;
135 int perturb_period;
136 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800137 unsigned divisor;
138 unsigned flows;
Ben Cheng655a7c02013-10-16 16:09:24 -0700139};
140struct tc_sfqred_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800141 __u32 prob_drop;
142 __u32 forced_drop;
143 __u32 prob_mark;
144 __u32 forced_mark;
Tao Baod7db5942015-01-28 10:07:51 -0800145 __u32 prob_mark_head;
146 __u32 forced_mark_head;
Ben Cheng655a7c02013-10-16 16:09:24 -0700147};
148struct tc_sfq_qopt_v1 {
Tao Baod7db5942015-01-28 10:07:51 -0800149 struct tc_sfq_qopt v0;
150 unsigned int depth;
151 unsigned int headdrop;
152 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800153 __u32 qth_min;
154 __u32 qth_max;
155 unsigned char Wlog;
156 unsigned char Plog;
Tao Baod7db5942015-01-28 10:07:51 -0800157 unsigned char Scell_log;
158 unsigned char flags;
159 __u32 max_P;
160 struct tc_sfqred_stats stats;
Ben Cheng655a7c02013-10-16 16:09:24 -0700161};
162struct tc_sfq_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800163 __s32 allot;
Ben Cheng655a7c02013-10-16 16:09:24 -0700164};
Ben Cheng655a7c02013-10-16 16:09:24 -0700165enum {
Tao Baod7db5942015-01-28 10:07:51 -0800166 TCA_RED_UNSPEC,
167 TCA_RED_PARMS,
168 TCA_RED_STAB,
Tao Baod7db5942015-01-28 10:07:51 -0800169 TCA_RED_MAX_P,
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700170 TCA_RED_FLAGS,
Christopher Ferris25c18d42020-10-14 17:42:58 -0700171 TCA_RED_EARLY_DROP_BLOCK,
172 TCA_RED_MARK_BLOCK,
Tao Baod7db5942015-01-28 10:07:51 -0800173 __TCA_RED_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700174};
175#define TCA_RED_MAX (__TCA_RED_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700176struct tc_red_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800177 __u32 limit;
178 __u32 qth_min;
179 __u32 qth_max;
Tao Baod7db5942015-01-28 10:07:51 -0800180 unsigned char Wlog;
181 unsigned char Plog;
182 unsigned char Scell_log;
183 unsigned char flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700184#define TC_RED_ECN 1
185#define TC_RED_HARDDROP 2
186#define TC_RED_ADAPTATIVE 4
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700187#define TC_RED_NODROP 8
Ben Cheng655a7c02013-10-16 16:09:24 -0700188};
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700189#define TC_RED_HISTORIC_FLAGS (TC_RED_ECN | TC_RED_HARDDROP | TC_RED_ADAPTATIVE)
Ben Cheng655a7c02013-10-16 16:09:24 -0700190struct tc_red_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800191 __u32 early;
192 __u32 pdrop;
193 __u32 other;
Tao Baod7db5942015-01-28 10:07:51 -0800194 __u32 marked;
Ben Cheng655a7c02013-10-16 16:09:24 -0700195};
196#define MAX_DPs 16
197enum {
Tao Baod7db5942015-01-28 10:07:51 -0800198 TCA_GRED_UNSPEC,
199 TCA_GRED_PARMS,
200 TCA_GRED_STAB,
201 TCA_GRED_DPS,
Tao Baod7db5942015-01-28 10:07:51 -0800202 TCA_GRED_MAX_P,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800203 TCA_GRED_LIMIT,
Christopher Ferrisd842e432019-03-07 10:21:59 -0800204 TCA_GRED_VQ_LIST,
Tao Baod7db5942015-01-28 10:07:51 -0800205 __TCA_GRED_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700206};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800207#define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
Christopher Ferrisd842e432019-03-07 10:21:59 -0800208enum {
209 TCA_GRED_VQ_ENTRY_UNSPEC,
210 TCA_GRED_VQ_ENTRY,
211 __TCA_GRED_VQ_ENTRY_MAX,
212};
213#define TCA_GRED_VQ_ENTRY_MAX (__TCA_GRED_VQ_ENTRY_MAX - 1)
214enum {
215 TCA_GRED_VQ_UNSPEC,
216 TCA_GRED_VQ_PAD,
217 TCA_GRED_VQ_DP,
218 TCA_GRED_VQ_STAT_BYTES,
219 TCA_GRED_VQ_STAT_PACKETS,
220 TCA_GRED_VQ_STAT_BACKLOG,
221 TCA_GRED_VQ_STAT_PROB_DROP,
222 TCA_GRED_VQ_STAT_PROB_MARK,
223 TCA_GRED_VQ_STAT_FORCED_DROP,
224 TCA_GRED_VQ_STAT_FORCED_MARK,
225 TCA_GRED_VQ_STAT_PDROP,
226 TCA_GRED_VQ_STAT_OTHER,
227 TCA_GRED_VQ_FLAGS,
228 __TCA_GRED_VQ_MAX
229};
230#define TCA_GRED_VQ_MAX (__TCA_GRED_VQ_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700231struct tc_gred_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800232 __u32 limit;
233 __u32 qth_min;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800234 __u32 qth_max;
Tao Baod7db5942015-01-28 10:07:51 -0800235 __u32 DP;
236 __u32 backlog;
237 __u32 qave;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800238 __u32 forced;
Tao Baod7db5942015-01-28 10:07:51 -0800239 __u32 early;
240 __u32 other;
241 __u32 pdrop;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800242 __u8 Wlog;
Tao Baod7db5942015-01-28 10:07:51 -0800243 __u8 Plog;
244 __u8 Scell_log;
245 __u8 prio;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800246 __u32 packets;
Tao Baod7db5942015-01-28 10:07:51 -0800247 __u32 bytesin;
Ben Cheng655a7c02013-10-16 16:09:24 -0700248};
249struct tc_gred_sopt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800250 __u32 DPs;
Tao Baod7db5942015-01-28 10:07:51 -0800251 __u32 def_DP;
252 __u8 grio;
253 __u8 flags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800254 __u16 pad1;
Ben Cheng655a7c02013-10-16 16:09:24 -0700255};
256enum {
Tao Baod7db5942015-01-28 10:07:51 -0800257 TCA_CHOKE_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800258 TCA_CHOKE_PARMS,
Tao Baod7db5942015-01-28 10:07:51 -0800259 TCA_CHOKE_STAB,
260 TCA_CHOKE_MAX_P,
261 __TCA_CHOKE_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800262};
Ben Cheng655a7c02013-10-16 16:09:24 -0700263#define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1)
264struct tc_choke_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800265 __u32 limit;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800266 __u32 qth_min;
Tao Baod7db5942015-01-28 10:07:51 -0800267 __u32 qth_max;
268 unsigned char Wlog;
269 unsigned char Plog;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800270 unsigned char Scell_log;
Tao Baod7db5942015-01-28 10:07:51 -0800271 unsigned char flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700272};
273struct tc_choke_xstats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800274 __u32 early;
Tao Baod7db5942015-01-28 10:07:51 -0800275 __u32 pdrop;
276 __u32 other;
277 __u32 marked;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800278 __u32 matched;
Ben Cheng655a7c02013-10-16 16:09:24 -0700279};
280#define TC_HTB_NUMPRIO 8
281#define TC_HTB_MAXDEPTH 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800282#define TC_HTB_PROTOVER 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700283struct tc_htb_opt {
Tao Baod7db5942015-01-28 10:07:51 -0800284 struct tc_ratespec rate;
285 struct tc_ratespec ceil;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800286 __u32 buffer;
Tao Baod7db5942015-01-28 10:07:51 -0800287 __u32 cbuffer;
288 __u32 quantum;
289 __u32 level;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800290 __u32 prio;
Ben Cheng655a7c02013-10-16 16:09:24 -0700291};
292struct tc_htb_glob {
Tao Baod7db5942015-01-28 10:07:51 -0800293 __u32 version;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800294 __u32 rate2quantum;
Tao Baod7db5942015-01-28 10:07:51 -0800295 __u32 defcls;
296 __u32 debug;
297 __u32 direct_pkts;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800298};
Ben Cheng655a7c02013-10-16 16:09:24 -0700299enum {
Tao Baod7db5942015-01-28 10:07:51 -0800300 TCA_HTB_UNSPEC,
301 TCA_HTB_PARMS,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800302 TCA_HTB_INIT,
Tao Baod7db5942015-01-28 10:07:51 -0800303 TCA_HTB_CTAB,
304 TCA_HTB_RTAB,
305 TCA_HTB_DIRECT_QLEN,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800306 TCA_HTB_RATE64,
Tao Baod7db5942015-01-28 10:07:51 -0800307 TCA_HTB_CEIL64,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700308 TCA_HTB_PAD,
Christopher Ferrisa9750ed2021-05-03 14:02:49 -0700309 TCA_HTB_OFFLOAD,
Tao Baod7db5942015-01-28 10:07:51 -0800310 __TCA_HTB_MAX,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700311};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800312#define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700313struct tc_htb_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800314 __u32 lends;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700315 __u32 borrows;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800316 __u32 giants;
Christopher Ferris86a48372019-01-10 14:14:59 -0800317 __s32 tokens;
318 __s32 ctokens;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700319};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800320struct tc_hfsc_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800321 __u16 defcls;
Ben Cheng655a7c02013-10-16 16:09:24 -0700322};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700323struct tc_service_curve {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800324 __u32 m1;
Tao Baod7db5942015-01-28 10:07:51 -0800325 __u32 d;
326 __u32 m2;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700327};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800328struct tc_hfsc_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800329 __u64 work;
330 __u64 rtwork;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700331 __u32 period;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800332 __u32 level;
Ben Cheng655a7c02013-10-16 16:09:24 -0700333};
334enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700335 TCA_HFSC_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800336 TCA_HFSC_RSC,
Tao Baod7db5942015-01-28 10:07:51 -0800337 TCA_HFSC_FSC,
338 TCA_HFSC_USC,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700339 __TCA_HFSC_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800340};
Ben Cheng655a7c02013-10-16 16:09:24 -0700341#define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
342#define TC_CBQ_MAXPRIO 8
Christopher Ferris106b3a82016-08-24 12:15:38 -0700343#define TC_CBQ_MAXLEVEL 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800344#define TC_CBQ_DEF_EWMA 5
Ben Cheng655a7c02013-10-16 16:09:24 -0700345struct tc_cbq_lssopt {
Tao Baod7db5942015-01-28 10:07:51 -0800346 unsigned char change;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700347 unsigned char flags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800348#define TCF_CBQ_LSS_BOUNDED 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700349#define TCF_CBQ_LSS_ISOLATED 2
Tao Baod7db5942015-01-28 10:07:51 -0800350 unsigned char ewma_log;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700351 unsigned char level;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800352#define TCF_CBQ_LSS_FLAGS 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700353#define TCF_CBQ_LSS_EWMA 2
354#define TCF_CBQ_LSS_MAXIDLE 4
Christopher Ferris106b3a82016-08-24 12:15:38 -0700355#define TCF_CBQ_LSS_MINIDLE 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800356#define TCF_CBQ_LSS_OFFTIME 0x10
Ben Cheng655a7c02013-10-16 16:09:24 -0700357#define TCF_CBQ_LSS_AVPKT 0x20
Tao Baod7db5942015-01-28 10:07:51 -0800358 __u32 maxidle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700359 __u32 minidle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800360 __u32 offtime;
Tao Baod7db5942015-01-28 10:07:51 -0800361 __u32 avpkt;
Ben Cheng655a7c02013-10-16 16:09:24 -0700362};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700363struct tc_cbq_wrropt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800364 unsigned char flags;
Tao Baod7db5942015-01-28 10:07:51 -0800365 unsigned char priority;
366 unsigned char cpriority;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700367 unsigned char __reserved;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800368 __u32 allot;
Tao Baod7db5942015-01-28 10:07:51 -0800369 __u32 weight;
Ben Cheng655a7c02013-10-16 16:09:24 -0700370};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700371struct tc_cbq_ovl {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800372 unsigned char strategy;
Ben Cheng655a7c02013-10-16 16:09:24 -0700373#define TC_CBQ_OVL_CLASSIC 0
374#define TC_CBQ_OVL_DELAY 1
Christopher Ferris106b3a82016-08-24 12:15:38 -0700375#define TC_CBQ_OVL_LOWPRIO 2
Christopher Ferris05d08e92016-02-04 13:16:38 -0800376#define TC_CBQ_OVL_DROP 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700377#define TC_CBQ_OVL_RCLASSIC 4
Tao Baod7db5942015-01-28 10:07:51 -0800378 unsigned char priority2;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700379 __u16 pad;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800380 __u32 penalty;
Ben Cheng655a7c02013-10-16 16:09:24 -0700381};
382struct tc_cbq_police {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700383 unsigned char police;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800384 unsigned char __res1;
Tao Baod7db5942015-01-28 10:07:51 -0800385 unsigned short __res2;
Ben Cheng655a7c02013-10-16 16:09:24 -0700386};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700387struct tc_cbq_fopt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800388 __u32 split;
Tao Baod7db5942015-01-28 10:07:51 -0800389 __u32 defmap;
390 __u32 defchange;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700391};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800392struct tc_cbq_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800393 __u32 borrows;
394 __u32 overactions;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700395 __s32 avgidle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800396 __s32 undertime;
Ben Cheng655a7c02013-10-16 16:09:24 -0700397};
398enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700399 TCA_CBQ_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800400 TCA_CBQ_LSSOPT,
Tao Baod7db5942015-01-28 10:07:51 -0800401 TCA_CBQ_WRROPT,
402 TCA_CBQ_FOPT,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700403 TCA_CBQ_OVL_STRATEGY,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800404 TCA_CBQ_RATE,
Tao Baod7db5942015-01-28 10:07:51 -0800405 TCA_CBQ_RTAB,
406 TCA_CBQ_POLICE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700407 __TCA_CBQ_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800408};
Ben Cheng655a7c02013-10-16 16:09:24 -0700409#define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1)
410enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700411 TCA_DSMARK_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800412 TCA_DSMARK_INDICES,
Tao Baod7db5942015-01-28 10:07:51 -0800413 TCA_DSMARK_DEFAULT_INDEX,
414 TCA_DSMARK_SET_TC_INDEX,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700415 TCA_DSMARK_MASK,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800416 TCA_DSMARK_VALUE,
Tao Baod7db5942015-01-28 10:07:51 -0800417 __TCA_DSMARK_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700418};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700419#define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800420enum {
Tao Baod7db5942015-01-28 10:07:51 -0800421 TCA_ATM_UNSPEC,
422 TCA_ATM_FD,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700423 TCA_ATM_PTR,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800424 TCA_ATM_HDR,
Tao Baod7db5942015-01-28 10:07:51 -0800425 TCA_ATM_EXCESS,
426 TCA_ATM_ADDR,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700427 TCA_ATM_STATE,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800428 __TCA_ATM_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700429};
430#define TCA_ATM_MAX (__TCA_ATM_MAX - 1)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700431enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800432 TCA_NETEM_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800433 TCA_NETEM_CORR,
434 TCA_NETEM_DELAY_DIST,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700435 TCA_NETEM_REORDER,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800436 TCA_NETEM_CORRUPT,
Tao Baod7db5942015-01-28 10:07:51 -0800437 TCA_NETEM_LOSS,
438 TCA_NETEM_RATE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700439 TCA_NETEM_ECN,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800440 TCA_NETEM_RATE64,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700441 TCA_NETEM_PAD,
Christopher Ferris934ec942018-01-31 15:29:16 -0800442 TCA_NETEM_LATENCY64,
443 TCA_NETEM_JITTER64,
444 TCA_NETEM_SLOT,
Christopher Ferris9ce28842018-10-25 12:11:39 -0700445 TCA_NETEM_SLOT_DIST,
Christopher Ferris67d1e5e2023-10-31 13:36:37 -0700446 TCA_NETEM_PRNG_SEED,
Tao Baod7db5942015-01-28 10:07:51 -0800447 __TCA_NETEM_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700448};
449#define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800450struct tc_netem_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800451 __u32 latency;
452 __u32 limit;
453 __u32 loss;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800454 __u32 gap;
Tao Baod7db5942015-01-28 10:07:51 -0800455 __u32 duplicate;
456 __u32 jitter;
Ben Cheng655a7c02013-10-16 16:09:24 -0700457};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800458struct tc_netem_corr {
Tao Baod7db5942015-01-28 10:07:51 -0800459 __u32 delay_corr;
460 __u32 loss_corr;
461 __u32 dup_corr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800462};
Ben Cheng655a7c02013-10-16 16:09:24 -0700463struct tc_netem_reorder {
Tao Baod7db5942015-01-28 10:07:51 -0800464 __u32 probability;
465 __u32 correlation;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800466};
Ben Cheng655a7c02013-10-16 16:09:24 -0700467struct tc_netem_corrupt {
Tao Baod7db5942015-01-28 10:07:51 -0800468 __u32 probability;
469 __u32 correlation;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800470};
Christopher Ferris38062f92014-07-09 15:33:25 -0700471struct tc_netem_rate {
Tao Baod7db5942015-01-28 10:07:51 -0800472 __u32 rate;
473 __s32 packet_overhead;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800474 __u32 cell_size;
Tao Baod7db5942015-01-28 10:07:51 -0800475 __s32 cell_overhead;
Ben Cheng655a7c02013-10-16 16:09:24 -0700476};
Christopher Ferris934ec942018-01-31 15:29:16 -0800477struct tc_netem_slot {
478 __s64 min_delay;
479 __s64 max_delay;
480 __s32 max_packets;
481 __s32 max_bytes;
Christopher Ferris9ce28842018-10-25 12:11:39 -0700482 __s64 dist_delay;
483 __s64 dist_jitter;
Christopher Ferris934ec942018-01-31 15:29:16 -0800484};
Ben Cheng655a7c02013-10-16 16:09:24 -0700485enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800486 NETEM_LOSS_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800487 NETEM_LOSS_GI,
488 NETEM_LOSS_GE,
489 __NETEM_LOSS_MAX
Christopher Ferris05d08e92016-02-04 13:16:38 -0800490};
Christopher Ferris38062f92014-07-09 15:33:25 -0700491#define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700492struct tc_netem_gimodel {
Tao Baod7db5942015-01-28 10:07:51 -0800493 __u32 p13;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800494 __u32 p31;
Tao Baod7db5942015-01-28 10:07:51 -0800495 __u32 p32;
496 __u32 p14;
497 __u32 p23;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800498};
Christopher Ferris38062f92014-07-09 15:33:25 -0700499struct tc_netem_gemodel {
Tao Baod7db5942015-01-28 10:07:51 -0800500 __u32 p;
501 __u32 r;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800502 __u32 h;
Tao Baod7db5942015-01-28 10:07:51 -0800503 __u32 k1;
Ben Cheng655a7c02013-10-16 16:09:24 -0700504};
505#define NETEM_DIST_SCALE 8192
Christopher Ferris05d08e92016-02-04 13:16:38 -0800506#define NETEM_DIST_MAX 16384
Christopher Ferris38062f92014-07-09 15:33:25 -0700507enum {
Tao Baod7db5942015-01-28 10:07:51 -0800508 TCA_DRR_UNSPEC,
509 TCA_DRR_QUANTUM,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800510 __TCA_DRR_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700511};
Ben Cheng655a7c02013-10-16 16:09:24 -0700512#define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
513struct tc_drr_stats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800514 __u32 deficit;
Christopher Ferris38062f92014-07-09 15:33:25 -0700515};
Ben Cheng655a7c02013-10-16 16:09:24 -0700516#define TC_QOPT_BITMASK 15
517#define TC_QOPT_MAX_QUEUE 16
Christopher Ferris525ce912017-07-26 13:12:53 -0700518enum {
519 TC_MQPRIO_HW_OFFLOAD_NONE,
520 TC_MQPRIO_HW_OFFLOAD_TCS,
521 __TC_MQPRIO_HW_OFFLOAD_MAX
522};
523#define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1)
Christopher Ferris934ec942018-01-31 15:29:16 -0800524enum {
525 TC_MQPRIO_MODE_DCB,
526 TC_MQPRIO_MODE_CHANNEL,
527 __TC_MQPRIO_MODE_MAX
528};
529#define __TC_MQPRIO_MODE_MAX (__TC_MQPRIO_MODE_MAX - 1)
530enum {
531 TC_MQPRIO_SHAPER_DCB,
532 TC_MQPRIO_SHAPER_BW_RATE,
533 __TC_MQPRIO_SHAPER_MAX
534};
535#define __TC_MQPRIO_SHAPER_MAX (__TC_MQPRIO_SHAPER_MAX - 1)
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700536enum {
537 TC_FP_EXPRESS = 1,
538 TC_FP_PREEMPTIBLE = 2,
539};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800540struct tc_mqprio_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800541 __u8 num_tc;
542 __u8 prio_tc_map[TC_QOPT_BITMASK + 1];
543 __u8 hw;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800544 __u16 count[TC_QOPT_MAX_QUEUE];
Tao Baod7db5942015-01-28 10:07:51 -0800545 __u16 offset[TC_QOPT_MAX_QUEUE];
Ben Cheng655a7c02013-10-16 16:09:24 -0700546};
Christopher Ferris934ec942018-01-31 15:29:16 -0800547#define TC_MQPRIO_F_MODE 0x1
548#define TC_MQPRIO_F_SHAPER 0x2
549#define TC_MQPRIO_F_MIN_RATE 0x4
550#define TC_MQPRIO_F_MAX_RATE 0x8
551enum {
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700552 TCA_MQPRIO_TC_ENTRY_UNSPEC,
553 TCA_MQPRIO_TC_ENTRY_INDEX,
554 TCA_MQPRIO_TC_ENTRY_FP,
555 __TCA_MQPRIO_TC_ENTRY_CNT,
556 TCA_MQPRIO_TC_ENTRY_MAX = (__TCA_MQPRIO_TC_ENTRY_CNT - 1)
557};
558enum {
Christopher Ferris934ec942018-01-31 15:29:16 -0800559 TCA_MQPRIO_UNSPEC,
560 TCA_MQPRIO_MODE,
561 TCA_MQPRIO_SHAPER,
562 TCA_MQPRIO_MIN_RATE64,
563 TCA_MQPRIO_MAX_RATE64,
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700564 TCA_MQPRIO_TC_ENTRY,
Christopher Ferris934ec942018-01-31 15:29:16 -0800565 __TCA_MQPRIO_MAX,
566};
567#define TCA_MQPRIO_MAX (__TCA_MQPRIO_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700568enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800569 TCA_SFB_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800570 TCA_SFB_PARMS,
571 __TCA_SFB_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700572};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800573#define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700574struct tc_sfb_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800575 __u32 rehash_interval;
576 __u32 warmup_time;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800577 __u32 max;
Tao Baod7db5942015-01-28 10:07:51 -0800578 __u32 bin_size;
579 __u32 increment;
580 __u32 decrement;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800581 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800582 __u32 penalty_rate;
583 __u32 penalty_burst;
Ben Cheng655a7c02013-10-16 16:09:24 -0700584};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800585struct tc_sfb_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800586 __u32 earlydrop;
587 __u32 penaltydrop;
588 __u32 bucketdrop;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800589 __u32 queuedrop;
Tao Baod7db5942015-01-28 10:07:51 -0800590 __u32 childdrop;
591 __u32 marked;
592 __u32 maxqlen;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800593 __u32 maxprob;
Tao Baod7db5942015-01-28 10:07:51 -0800594 __u32 avgprob;
Ben Cheng655a7c02013-10-16 16:09:24 -0700595};
596#define SFB_MAX_PROB 0xFFFF
Christopher Ferris05d08e92016-02-04 13:16:38 -0800597enum {
Tao Baod7db5942015-01-28 10:07:51 -0800598 TCA_QFQ_UNSPEC,
599 TCA_QFQ_WEIGHT,
600 TCA_QFQ_LMAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800601 __TCA_QFQ_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700602};
Ben Cheng655a7c02013-10-16 16:09:24 -0700603#define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1)
604struct tc_qfq_stats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800605 __u32 weight;
Tao Baod7db5942015-01-28 10:07:51 -0800606 __u32 lmax;
Ben Cheng655a7c02013-10-16 16:09:24 -0700607};
608enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800609 TCA_CODEL_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800610 TCA_CODEL_TARGET,
611 TCA_CODEL_LIMIT,
612 TCA_CODEL_INTERVAL,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800613 TCA_CODEL_ECN,
614 TCA_CODEL_CE_THRESHOLD,
Tao Baod7db5942015-01-28 10:07:51 -0800615 __TCA_CODEL_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700616};
617#define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700618struct tc_codel_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800619 __u32 maxpacket;
620 __u32 count;
621 __u32 lastcount;
622 __u32 ldelay;
Tao Baod7db5942015-01-28 10:07:51 -0800623 __s32 drop_next;
624 __u32 drop_overlimit;
625 __u32 ecn_mark;
626 __u32 dropping;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800627 __u32 ce_mark;
Christopher Ferris38062f92014-07-09 15:33:25 -0700628};
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700629#define FQ_CODEL_QUANTUM_MAX (1 << 20)
Ben Cheng655a7c02013-10-16 16:09:24 -0700630enum {
Tao Baod7db5942015-01-28 10:07:51 -0800631 TCA_FQ_CODEL_UNSPEC,
632 TCA_FQ_CODEL_TARGET,
Tao Baod7db5942015-01-28 10:07:51 -0800633 TCA_FQ_CODEL_LIMIT,
634 TCA_FQ_CODEL_INTERVAL,
635 TCA_FQ_CODEL_ECN,
636 TCA_FQ_CODEL_FLOWS,
Tao Baod7db5942015-01-28 10:07:51 -0800637 TCA_FQ_CODEL_QUANTUM,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800638 TCA_FQ_CODEL_CE_THRESHOLD,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700639 TCA_FQ_CODEL_DROP_BATCH_SIZE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700640 TCA_FQ_CODEL_MEMORY_LIMIT,
Christopher Ferrisa4792612022-01-10 13:51:15 -0800641 TCA_FQ_CODEL_CE_THRESHOLD_SELECTOR,
642 TCA_FQ_CODEL_CE_THRESHOLD_MASK,
Tao Baod7db5942015-01-28 10:07:51 -0800643 __TCA_FQ_CODEL_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700644};
Ben Cheng655a7c02013-10-16 16:09:24 -0700645#define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700646enum {
Tao Baod7db5942015-01-28 10:07:51 -0800647 TCA_FQ_CODEL_XSTATS_QDISC,
648 TCA_FQ_CODEL_XSTATS_CLASS,
Ben Cheng655a7c02013-10-16 16:09:24 -0700649};
Christopher Ferris38062f92014-07-09 15:33:25 -0700650struct tc_fq_codel_qd_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800651 __u32 maxpacket;
652 __u32 drop_overlimit;
653 __u32 ecn_mark;
Tao Baod7db5942015-01-28 10:07:51 -0800654 __u32 new_flow_count;
655 __u32 new_flows_len;
656 __u32 old_flows_len;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800657 __u32 ce_mark;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700658 __u32 memory_usage;
659 __u32 drop_overmemory;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800660};
Christopher Ferris38062f92014-07-09 15:33:25 -0700661struct tc_fq_codel_cl_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800662 __s32 deficit;
663 __u32 ldelay;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800664 __u32 count;
Tao Baod7db5942015-01-28 10:07:51 -0800665 __u32 lastcount;
666 __u32 dropping;
667 __s32 drop_next;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800668};
Christopher Ferris38062f92014-07-09 15:33:25 -0700669struct tc_fq_codel_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800670 __u32 type;
671 union {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800672 struct tc_fq_codel_qd_stats qdisc_stats;
Tao Baod7db5942015-01-28 10:07:51 -0800673 struct tc_fq_codel_cl_stats class_stats;
674 };
Ben Cheng655a7c02013-10-16 16:09:24 -0700675};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800676enum {
Tao Baod7db5942015-01-28 10:07:51 -0800677 TCA_FQ_UNSPEC,
678 TCA_FQ_PLIMIT,
679 TCA_FQ_FLOW_PLIMIT,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800680 TCA_FQ_QUANTUM,
Tao Baod7db5942015-01-28 10:07:51 -0800681 TCA_FQ_INITIAL_QUANTUM,
682 TCA_FQ_RATE_ENABLE,
683 TCA_FQ_FLOW_DEFAULT_RATE,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800684 TCA_FQ_FLOW_MAX_RATE,
Tao Baod7db5942015-01-28 10:07:51 -0800685 TCA_FQ_BUCKETS_LOG,
686 TCA_FQ_FLOW_REFILL_DELAY,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800687 TCA_FQ_ORPHAN_MASK,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800688 TCA_FQ_LOW_RATE_THRESHOLD,
Christopher Ferrisd842e432019-03-07 10:21:59 -0800689 TCA_FQ_CE_THRESHOLD,
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700690 TCA_FQ_TIMER_SLACK,
Christopher Ferris8177cdf2020-08-03 11:53:55 -0700691 TCA_FQ_HORIZON,
692 TCA_FQ_HORIZON_DROP,
Tao Baod7db5942015-01-28 10:07:51 -0800693 __TCA_FQ_MAX
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800694};
Christopher Ferris38062f92014-07-09 15:33:25 -0700695#define TCA_FQ_MAX (__TCA_FQ_MAX - 1)
696struct tc_fq_qd_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800697 __u64 gc_flows;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800698 __u64 highprio_packets;
Tao Baod7db5942015-01-28 10:07:51 -0800699 __u64 tcp_retrans;
700 __u64 throttled;
701 __u64 flows_plimit;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800702 __u64 pkts_too_long;
Tao Baod7db5942015-01-28 10:07:51 -0800703 __u64 allocation_errors;
704 __s64 time_next_delayed_flow;
705 __u32 flows;
706 __u32 inactive_flows;
Tao Baod7db5942015-01-28 10:07:51 -0800707 __u32 throttled_flows;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800708 __u32 unthrottle_latency_ns;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800709 __u64 ce_mark;
Christopher Ferris8177cdf2020-08-03 11:53:55 -0700710 __u64 horizon_drops;
711 __u64 horizon_caps;
Christopher Ferris38062f92014-07-09 15:33:25 -0700712};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800713enum {
Tao Baod7db5942015-01-28 10:07:51 -0800714 TCA_HHF_UNSPEC,
715 TCA_HHF_BACKLOG_LIMIT,
716 TCA_HHF_QUANTUM,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800717 TCA_HHF_HH_FLOWS_LIMIT,
Tao Baod7db5942015-01-28 10:07:51 -0800718 TCA_HHF_RESET_TIMEOUT,
719 TCA_HHF_ADMIT_BYTES,
720 TCA_HHF_EVICT_TIMEOUT,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800721 TCA_HHF_NON_HH_WEIGHT,
Tao Baod7db5942015-01-28 10:07:51 -0800722 __TCA_HHF_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700723};
724#define TCA_HHF_MAX (__TCA_HHF_MAX - 1)
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800725struct tc_hhf_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800726 __u32 drop_overlimit;
727 __u32 hh_overlimit;
728 __u32 hh_tot_count;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800729 __u32 hh_cur_count;
Christopher Ferris38062f92014-07-09 15:33:25 -0700730};
731enum {
Tao Baod7db5942015-01-28 10:07:51 -0800732 TCA_PIE_UNSPEC,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800733 TCA_PIE_TARGET,
Tao Baod7db5942015-01-28 10:07:51 -0800734 TCA_PIE_LIMIT,
735 TCA_PIE_TUPDATE,
736 TCA_PIE_ALPHA,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800737 TCA_PIE_BETA,
Tao Baod7db5942015-01-28 10:07:51 -0800738 TCA_PIE_ECN,
739 TCA_PIE_BYTEMODE,
Christopher Ferrisd32ca142020-02-04 16:16:51 -0800740 TCA_PIE_DQ_RATE_ESTIMATOR,
Tao Baod7db5942015-01-28 10:07:51 -0800741 __TCA_PIE_MAX
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800742};
Christopher Ferris38062f92014-07-09 15:33:25 -0700743#define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
744struct tc_pie_xstats {
Christopher Ferris24f97eb2019-05-20 12:58:13 -0700745 __u64 prob;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800746 __u32 delay;
Tao Baod7db5942015-01-28 10:07:51 -0800747 __u32 avg_dq_rate;
Christopher Ferrisd32ca142020-02-04 16:16:51 -0800748 __u32 dq_rate_estimating;
Tao Baod7db5942015-01-28 10:07:51 -0800749 __u32 packets_in;
750 __u32 dropped;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800751 __u32 overlimit;
Tao Baod7db5942015-01-28 10:07:51 -0800752 __u32 maxq;
753 __u32 ecn_mark;
Christopher Ferris38062f92014-07-09 15:33:25 -0700754};
Christopher Ferrisbb9fcb42020-04-06 11:38:04 -0700755enum {
756 TCA_FQ_PIE_UNSPEC,
757 TCA_FQ_PIE_LIMIT,
758 TCA_FQ_PIE_FLOWS,
759 TCA_FQ_PIE_TARGET,
760 TCA_FQ_PIE_TUPDATE,
761 TCA_FQ_PIE_ALPHA,
762 TCA_FQ_PIE_BETA,
763 TCA_FQ_PIE_QUANTUM,
764 TCA_FQ_PIE_MEMORY_LIMIT,
765 TCA_FQ_PIE_ECN_PROB,
766 TCA_FQ_PIE_ECN,
767 TCA_FQ_PIE_BYTEMODE,
768 TCA_FQ_PIE_DQ_RATE_ESTIMATOR,
769 __TCA_FQ_PIE_MAX
770};
771#define TCA_FQ_PIE_MAX (__TCA_FQ_PIE_MAX - 1)
772struct tc_fq_pie_xstats {
773 __u32 packets_in;
774 __u32 dropped;
775 __u32 overlimit;
776 __u32 overmemory;
777 __u32 ecn_mark;
778 __u32 new_flow_count;
779 __u32 new_flows_len;
780 __u32 old_flows_len;
781 __u32 memory_usage;
782};
Christopher Ferris934ec942018-01-31 15:29:16 -0800783struct tc_cbs_qopt {
784 __u8 offload;
785 __u8 _pad[3];
786 __s32 hicredit;
787 __s32 locredit;
788 __s32 idleslope;
789 __s32 sendslope;
790};
791enum {
792 TCA_CBS_UNSPEC,
793 TCA_CBS_PARMS,
794 __TCA_CBS_MAX,
795};
796#define TCA_CBS_MAX (__TCA_CBS_MAX - 1)
Christopher Ferris9ce28842018-10-25 12:11:39 -0700797struct tc_etf_qopt {
798 __s32 delta;
799 __s32 clockid;
800 __u32 flags;
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700801#define TC_ETF_DEADLINE_MODE_ON _BITUL(0)
802#define TC_ETF_OFFLOAD_ON _BITUL(1)
803#define TC_ETF_SKIP_SOCK_CHECK _BITUL(2)
Christopher Ferris9ce28842018-10-25 12:11:39 -0700804};
805enum {
806 TCA_ETF_UNSPEC,
807 TCA_ETF_PARMS,
808 __TCA_ETF_MAX,
809};
810#define TCA_ETF_MAX (__TCA_ETF_MAX - 1)
811enum {
812 TCA_CAKE_UNSPEC,
813 TCA_CAKE_PAD,
814 TCA_CAKE_BASE_RATE64,
815 TCA_CAKE_DIFFSERV_MODE,
816 TCA_CAKE_ATM,
817 TCA_CAKE_FLOW_MODE,
818 TCA_CAKE_OVERHEAD,
819 TCA_CAKE_RTT,
820 TCA_CAKE_TARGET,
821 TCA_CAKE_AUTORATE,
822 TCA_CAKE_MEMORY,
823 TCA_CAKE_NAT,
824 TCA_CAKE_RAW,
825 TCA_CAKE_WASH,
826 TCA_CAKE_MPU,
827 TCA_CAKE_INGRESS,
828 TCA_CAKE_ACK_FILTER,
829 TCA_CAKE_SPLIT_GSO,
Christopher Ferris24f97eb2019-05-20 12:58:13 -0700830 TCA_CAKE_FWMARK,
Christopher Ferris9ce28842018-10-25 12:11:39 -0700831 __TCA_CAKE_MAX
832};
833#define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1)
834enum {
835 __TCA_CAKE_STATS_INVALID,
836 TCA_CAKE_STATS_PAD,
837 TCA_CAKE_STATS_CAPACITY_ESTIMATE64,
838 TCA_CAKE_STATS_MEMORY_LIMIT,
839 TCA_CAKE_STATS_MEMORY_USED,
840 TCA_CAKE_STATS_AVG_NETOFF,
841 TCA_CAKE_STATS_MIN_NETLEN,
842 TCA_CAKE_STATS_MAX_NETLEN,
843 TCA_CAKE_STATS_MIN_ADJLEN,
844 TCA_CAKE_STATS_MAX_ADJLEN,
845 TCA_CAKE_STATS_TIN_STATS,
846 TCA_CAKE_STATS_DEFICIT,
847 TCA_CAKE_STATS_COBALT_COUNT,
848 TCA_CAKE_STATS_DROPPING,
849 TCA_CAKE_STATS_DROP_NEXT_US,
850 TCA_CAKE_STATS_P_DROP,
851 TCA_CAKE_STATS_BLUE_TIMER_US,
852 __TCA_CAKE_STATS_MAX
853};
854#define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1)
855enum {
856 __TCA_CAKE_TIN_STATS_INVALID,
857 TCA_CAKE_TIN_STATS_PAD,
858 TCA_CAKE_TIN_STATS_SENT_PACKETS,
859 TCA_CAKE_TIN_STATS_SENT_BYTES64,
860 TCA_CAKE_TIN_STATS_DROPPED_PACKETS,
861 TCA_CAKE_TIN_STATS_DROPPED_BYTES64,
862 TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS,
863 TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64,
864 TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS,
865 TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64,
866 TCA_CAKE_TIN_STATS_BACKLOG_PACKETS,
867 TCA_CAKE_TIN_STATS_BACKLOG_BYTES,
868 TCA_CAKE_TIN_STATS_THRESHOLD_RATE64,
869 TCA_CAKE_TIN_STATS_TARGET_US,
870 TCA_CAKE_TIN_STATS_INTERVAL_US,
871 TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS,
872 TCA_CAKE_TIN_STATS_WAY_MISSES,
873 TCA_CAKE_TIN_STATS_WAY_COLLISIONS,
874 TCA_CAKE_TIN_STATS_PEAK_DELAY_US,
875 TCA_CAKE_TIN_STATS_AVG_DELAY_US,
876 TCA_CAKE_TIN_STATS_BASE_DELAY_US,
877 TCA_CAKE_TIN_STATS_SPARSE_FLOWS,
878 TCA_CAKE_TIN_STATS_BULK_FLOWS,
879 TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS,
880 TCA_CAKE_TIN_STATS_MAX_SKBLEN,
881 TCA_CAKE_TIN_STATS_FLOW_QUANTUM,
882 __TCA_CAKE_TIN_STATS_MAX
883};
884#define TCA_CAKE_TIN_STATS_MAX (__TCA_CAKE_TIN_STATS_MAX - 1)
885#define TC_CAKE_MAX_TINS (8)
886enum {
887 CAKE_FLOW_NONE = 0,
888 CAKE_FLOW_SRC_IP,
889 CAKE_FLOW_DST_IP,
890 CAKE_FLOW_HOSTS,
891 CAKE_FLOW_FLOWS,
892 CAKE_FLOW_DUAL_SRC,
893 CAKE_FLOW_DUAL_DST,
894 CAKE_FLOW_TRIPLE,
895 CAKE_FLOW_MAX,
896};
897enum {
898 CAKE_DIFFSERV_DIFFSERV3 = 0,
899 CAKE_DIFFSERV_DIFFSERV4,
900 CAKE_DIFFSERV_DIFFSERV8,
901 CAKE_DIFFSERV_BESTEFFORT,
902 CAKE_DIFFSERV_PRECEDENCE,
903 CAKE_DIFFSERV_MAX
904};
905enum {
906 CAKE_ACK_NONE = 0,
907 CAKE_ACK_FILTER,
908 CAKE_ACK_AGGRESSIVE,
909 CAKE_ACK_MAX
910};
911enum {
912 CAKE_ATM_NONE = 0,
913 CAKE_ATM_ATM,
914 CAKE_ATM_PTM,
915 CAKE_ATM_MAX
916};
Christopher Ferris86a48372019-01-10 14:14:59 -0800917enum {
918 TC_TAPRIO_CMD_SET_GATES = 0x00,
919 TC_TAPRIO_CMD_SET_AND_HOLD = 0x01,
920 TC_TAPRIO_CMD_SET_AND_RELEASE = 0x02,
921};
922enum {
923 TCA_TAPRIO_SCHED_ENTRY_UNSPEC,
924 TCA_TAPRIO_SCHED_ENTRY_INDEX,
925 TCA_TAPRIO_SCHED_ENTRY_CMD,
926 TCA_TAPRIO_SCHED_ENTRY_GATE_MASK,
927 TCA_TAPRIO_SCHED_ENTRY_INTERVAL,
928 __TCA_TAPRIO_SCHED_ENTRY_MAX,
929};
930#define TCA_TAPRIO_SCHED_ENTRY_MAX (__TCA_TAPRIO_SCHED_ENTRY_MAX - 1)
931enum {
932 TCA_TAPRIO_SCHED_UNSPEC,
933 TCA_TAPRIO_SCHED_ENTRY,
934 __TCA_TAPRIO_SCHED_MAX,
935};
936#define TCA_TAPRIO_SCHED_MAX (__TCA_TAPRIO_SCHED_MAX - 1)
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700937#define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0)
938#define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1)
Christopher Ferris86a48372019-01-10 14:14:59 -0800939enum {
Christopher Ferris6cd53a52022-12-12 23:39:16 +0000940 TCA_TAPRIO_TC_ENTRY_UNSPEC,
941 TCA_TAPRIO_TC_ENTRY_INDEX,
942 TCA_TAPRIO_TC_ENTRY_MAX_SDU,
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700943 TCA_TAPRIO_TC_ENTRY_FP,
Christopher Ferris6cd53a52022-12-12 23:39:16 +0000944 __TCA_TAPRIO_TC_ENTRY_CNT,
945 TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1)
946};
947enum {
Christopher Ferris8666d042023-09-06 14:55:31 -0700948 TCA_TAPRIO_OFFLOAD_STATS_PAD = 1,
949 TCA_TAPRIO_OFFLOAD_STATS_WINDOW_DROPS,
950 TCA_TAPRIO_OFFLOAD_STATS_TX_OVERRUNS,
951 __TCA_TAPRIO_OFFLOAD_STATS_CNT,
952 TCA_TAPRIO_OFFLOAD_STATS_MAX = (__TCA_TAPRIO_OFFLOAD_STATS_CNT - 1)
953};
954enum {
Christopher Ferris86a48372019-01-10 14:14:59 -0800955 TCA_TAPRIO_ATTR_UNSPEC,
956 TCA_TAPRIO_ATTR_PRIOMAP,
957 TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
958 TCA_TAPRIO_ATTR_SCHED_BASE_TIME,
959 TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY,
960 TCA_TAPRIO_ATTR_SCHED_CLOCKID,
961 TCA_TAPRIO_PAD,
Christopher Ferrisaeddbcf2019-07-08 12:45:46 -0700962 TCA_TAPRIO_ATTR_ADMIN_SCHED,
963 TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME,
964 TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700965 TCA_TAPRIO_ATTR_FLAGS,
966 TCA_TAPRIO_ATTR_TXTIME_DELAY,
Christopher Ferris6cd53a52022-12-12 23:39:16 +0000967 TCA_TAPRIO_ATTR_TC_ENTRY,
Christopher Ferris86a48372019-01-10 14:14:59 -0800968 __TCA_TAPRIO_ATTR_MAX,
969};
970#define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
Christopher Ferrisbb9fcb42020-04-06 11:38:04 -0700971#define TCQ_ETS_MAX_BANDS 16
972enum {
973 TCA_ETS_UNSPEC,
974 TCA_ETS_NBANDS,
975 TCA_ETS_NSTRICT,
976 TCA_ETS_QUANTA,
977 TCA_ETS_QUANTA_BAND,
978 TCA_ETS_PRIOMAP,
979 TCA_ETS_PRIOMAP_BAND,
980 __TCA_ETS_MAX,
981};
982#define TCA_ETS_MAX (__TCA_ETS_MAX - 1)
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800983#endif