blob: 9047c8e509dd15db8c9d47b9253a20eef44debb7 [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Ben Cheng655a7c02013-10-16 16:09:24 -07007#ifndef __LINUX_PKT_SCHED_H
8#define __LINUX_PKT_SCHED_H
Christopher Ferrisb8a95e22019-10-02 18:29:20 -07009#include <linux/const.h>
Ben Cheng655a7c02013-10-16 16:09:24 -070010#include <linux/types.h>
11#define TC_PRIO_BESTEFFORT 0
Ben Cheng655a7c02013-10-16 16:09:24 -070012#define TC_PRIO_FILLER 1
13#define TC_PRIO_BULK 2
14#define TC_PRIO_INTERACTIVE_BULK 4
15#define TC_PRIO_INTERACTIVE 6
Ben Cheng655a7c02013-10-16 16:09:24 -070016#define TC_PRIO_CONTROL 7
17#define TC_PRIO_MAX 15
18struct tc_stats {
Tao Baod7db5942015-01-28 10:07:51 -080019 __u64 bytes;
Tao Baod7db5942015-01-28 10:07:51 -080020 __u32 packets;
21 __u32 drops;
22 __u32 overlimits;
23 __u32 bps;
Tao Baod7db5942015-01-28 10:07:51 -080024 __u32 pps;
25 __u32 qlen;
26 __u32 backlog;
Ben Cheng655a7c02013-10-16 16:09:24 -070027};
Ben Cheng655a7c02013-10-16 16:09:24 -070028struct tc_estimator {
Tao Baod7db5942015-01-28 10:07:51 -080029 signed char interval;
30 unsigned char ewma_log;
Ben Cheng655a7c02013-10-16 16:09:24 -070031};
Ben Cheng655a7c02013-10-16 16:09:24 -070032#define TC_H_MAJ_MASK (0xFFFF0000U)
33#define TC_H_MIN_MASK (0x0000FFFFU)
Tao Baod7db5942015-01-28 10:07:51 -080034#define TC_H_MAJ(h) ((h) & TC_H_MAJ_MASK)
35#define TC_H_MIN(h) ((h) & TC_H_MIN_MASK)
Tao Baod7db5942015-01-28 10:07:51 -080036#define TC_H_MAKE(maj,min) (((maj) & TC_H_MAJ_MASK) | ((min) & TC_H_MIN_MASK))
Ben Cheng655a7c02013-10-16 16:09:24 -070037#define TC_H_UNSPEC (0U)
38#define TC_H_ROOT (0xFFFFFFFFU)
39#define TC_H_INGRESS (0xFFFFFFF1U)
Christopher Ferris106b3a82016-08-24 12:15:38 -070040#define TC_H_CLSACT TC_H_INGRESS
Christopher Ferris934ec942018-01-31 15:29:16 -080041#define TC_H_MIN_PRIORITY 0xFFE0U
Christopher Ferris106b3a82016-08-24 12:15:38 -070042#define TC_H_MIN_INGRESS 0xFFF2U
43#define TC_H_MIN_EGRESS 0xFFF3U
Christopher Ferris38062f92014-07-09 15:33:25 -070044enum tc_link_layer {
Tao Baod7db5942015-01-28 10:07:51 -080045 TC_LINKLAYER_UNAWARE,
46 TC_LINKLAYER_ETHERNET,
47 TC_LINKLAYER_ATM,
Christopher Ferris38062f92014-07-09 15:33:25 -070048};
49#define TC_LINKLAYER_MASK 0x0F
Ben Cheng655a7c02013-10-16 16:09:24 -070050struct tc_ratespec {
Tao Baod7db5942015-01-28 10:07:51 -080051 unsigned char cell_log;
Tao Baod7db5942015-01-28 10:07:51 -080052 __u8 linklayer;
53 unsigned short overhead;
54 short cell_align;
55 unsigned short mpu;
Tao Baod7db5942015-01-28 10:07:51 -080056 __u32 rate;
Ben Cheng655a7c02013-10-16 16:09:24 -070057};
58#define TC_RTAB_SIZE 1024
59struct tc_sizespec {
Tao Baod7db5942015-01-28 10:07:51 -080060 unsigned char cell_log;
61 unsigned char size_log;
62 short cell_align;
63 int overhead;
Tao Baod7db5942015-01-28 10:07:51 -080064 unsigned int linklayer;
65 unsigned int mpu;
66 unsigned int mtu;
67 unsigned int tsize;
Ben Cheng655a7c02013-10-16 16:09:24 -070068};
69enum {
Tao Baod7db5942015-01-28 10:07:51 -080070 TCA_STAB_UNSPEC,
71 TCA_STAB_BASE,
Tao Baod7db5942015-01-28 10:07:51 -080072 TCA_STAB_DATA,
73 __TCA_STAB_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -070074};
75#define TCA_STAB_MAX (__TCA_STAB_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -070076struct tc_fifo_qopt {
Tao Baod7db5942015-01-28 10:07:51 -080077 __u32 limit;
Ben Cheng655a7c02013-10-16 16:09:24 -070078};
Christopher Ferris9ce28842018-10-25 12:11:39 -070079#define SKBPRIO_MAX_PRIORITY 64
80struct tc_skbprio_qopt {
81 __u32 limit;
82};
Ben Cheng655a7c02013-10-16 16:09:24 -070083#define TCQ_PRIO_BANDS 16
Ben Cheng655a7c02013-10-16 16:09:24 -070084#define TCQ_MIN_PRIO_BANDS 2
85struct tc_prio_qopt {
Tao Baod7db5942015-01-28 10:07:51 -080086 int bands;
87 __u8 priomap[TC_PRIO_MAX + 1];
Ben Cheng655a7c02013-10-16 16:09:24 -070088};
89struct tc_multiq_qopt {
Tao Baod7db5942015-01-28 10:07:51 -080090 __u16 bands;
91 __u16 max_bands;
Ben Cheng655a7c02013-10-16 16:09:24 -070092};
93#define TCQ_PLUG_BUFFER 0
94#define TCQ_PLUG_RELEASE_ONE 1
95#define TCQ_PLUG_RELEASE_INDEFINITE 2
Ben Cheng655a7c02013-10-16 16:09:24 -070096#define TCQ_PLUG_LIMIT 3
97struct tc_plug_qopt {
Tao Baod7db5942015-01-28 10:07:51 -080098 int action;
99 __u32 limit;
Ben Cheng655a7c02013-10-16 16:09:24 -0700100};
101struct tc_tbf_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800102 struct tc_ratespec rate;
103 struct tc_ratespec peakrate;
Tao Baod7db5942015-01-28 10:07:51 -0800104 __u32 limit;
105 __u32 buffer;
106 __u32 mtu;
Ben Cheng655a7c02013-10-16 16:09:24 -0700107};
Ben Cheng655a7c02013-10-16 16:09:24 -0700108enum {
Tao Baod7db5942015-01-28 10:07:51 -0800109 TCA_TBF_UNSPEC,
110 TCA_TBF_PARMS,
111 TCA_TBF_RTAB,
Tao Baod7db5942015-01-28 10:07:51 -0800112 TCA_TBF_PTAB,
113 TCA_TBF_RATE64,
114 TCA_TBF_PRATE64,
115 TCA_TBF_BURST,
Tao Baod7db5942015-01-28 10:07:51 -0800116 TCA_TBF_PBURST,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700117 TCA_TBF_PAD,
Tao Baod7db5942015-01-28 10:07:51 -0800118 __TCA_TBF_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700119};
120#define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700121struct tc_sfq_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800122 unsigned quantum;
123 int perturb_period;
124 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800125 unsigned divisor;
126 unsigned flows;
Ben Cheng655a7c02013-10-16 16:09:24 -0700127};
128struct tc_sfqred_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800129 __u32 prob_drop;
130 __u32 forced_drop;
131 __u32 prob_mark;
132 __u32 forced_mark;
Tao Baod7db5942015-01-28 10:07:51 -0800133 __u32 prob_mark_head;
134 __u32 forced_mark_head;
Ben Cheng655a7c02013-10-16 16:09:24 -0700135};
136struct tc_sfq_qopt_v1 {
Tao Baod7db5942015-01-28 10:07:51 -0800137 struct tc_sfq_qopt v0;
138 unsigned int depth;
139 unsigned int headdrop;
140 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800141 __u32 qth_min;
142 __u32 qth_max;
143 unsigned char Wlog;
144 unsigned char Plog;
Tao Baod7db5942015-01-28 10:07:51 -0800145 unsigned char Scell_log;
146 unsigned char flags;
147 __u32 max_P;
148 struct tc_sfqred_stats stats;
Ben Cheng655a7c02013-10-16 16:09:24 -0700149};
150struct tc_sfq_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800151 __s32 allot;
Ben Cheng655a7c02013-10-16 16:09:24 -0700152};
Ben Cheng655a7c02013-10-16 16:09:24 -0700153enum {
Tao Baod7db5942015-01-28 10:07:51 -0800154 TCA_RED_UNSPEC,
155 TCA_RED_PARMS,
156 TCA_RED_STAB,
Tao Baod7db5942015-01-28 10:07:51 -0800157 TCA_RED_MAX_P,
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700158 TCA_RED_FLAGS,
Christopher Ferris25c18d42020-10-14 17:42:58 -0700159 TCA_RED_EARLY_DROP_BLOCK,
160 TCA_RED_MARK_BLOCK,
Tao Baod7db5942015-01-28 10:07:51 -0800161 __TCA_RED_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700162};
163#define TCA_RED_MAX (__TCA_RED_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700164struct tc_red_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800165 __u32 limit;
166 __u32 qth_min;
167 __u32 qth_max;
Tao Baod7db5942015-01-28 10:07:51 -0800168 unsigned char Wlog;
169 unsigned char Plog;
170 unsigned char Scell_log;
171 unsigned char flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700172#define TC_RED_ECN 1
173#define TC_RED_HARDDROP 2
174#define TC_RED_ADAPTATIVE 4
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700175#define TC_RED_NODROP 8
Ben Cheng655a7c02013-10-16 16:09:24 -0700176};
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700177#define TC_RED_HISTORIC_FLAGS (TC_RED_ECN | TC_RED_HARDDROP | TC_RED_ADAPTATIVE)
Ben Cheng655a7c02013-10-16 16:09:24 -0700178struct tc_red_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800179 __u32 early;
180 __u32 pdrop;
181 __u32 other;
Tao Baod7db5942015-01-28 10:07:51 -0800182 __u32 marked;
Ben Cheng655a7c02013-10-16 16:09:24 -0700183};
184#define MAX_DPs 16
185enum {
Tao Baod7db5942015-01-28 10:07:51 -0800186 TCA_GRED_UNSPEC,
187 TCA_GRED_PARMS,
188 TCA_GRED_STAB,
189 TCA_GRED_DPS,
Tao Baod7db5942015-01-28 10:07:51 -0800190 TCA_GRED_MAX_P,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800191 TCA_GRED_LIMIT,
Christopher Ferrisd842e432019-03-07 10:21:59 -0800192 TCA_GRED_VQ_LIST,
Tao Baod7db5942015-01-28 10:07:51 -0800193 __TCA_GRED_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700194};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800195#define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
Christopher Ferrisd842e432019-03-07 10:21:59 -0800196enum {
197 TCA_GRED_VQ_ENTRY_UNSPEC,
198 TCA_GRED_VQ_ENTRY,
199 __TCA_GRED_VQ_ENTRY_MAX,
200};
201#define TCA_GRED_VQ_ENTRY_MAX (__TCA_GRED_VQ_ENTRY_MAX - 1)
202enum {
203 TCA_GRED_VQ_UNSPEC,
204 TCA_GRED_VQ_PAD,
205 TCA_GRED_VQ_DP,
206 TCA_GRED_VQ_STAT_BYTES,
207 TCA_GRED_VQ_STAT_PACKETS,
208 TCA_GRED_VQ_STAT_BACKLOG,
209 TCA_GRED_VQ_STAT_PROB_DROP,
210 TCA_GRED_VQ_STAT_PROB_MARK,
211 TCA_GRED_VQ_STAT_FORCED_DROP,
212 TCA_GRED_VQ_STAT_FORCED_MARK,
213 TCA_GRED_VQ_STAT_PDROP,
214 TCA_GRED_VQ_STAT_OTHER,
215 TCA_GRED_VQ_FLAGS,
216 __TCA_GRED_VQ_MAX
217};
218#define TCA_GRED_VQ_MAX (__TCA_GRED_VQ_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700219struct tc_gred_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800220 __u32 limit;
221 __u32 qth_min;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800222 __u32 qth_max;
Tao Baod7db5942015-01-28 10:07:51 -0800223 __u32 DP;
224 __u32 backlog;
225 __u32 qave;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800226 __u32 forced;
Tao Baod7db5942015-01-28 10:07:51 -0800227 __u32 early;
228 __u32 other;
229 __u32 pdrop;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800230 __u8 Wlog;
Tao Baod7db5942015-01-28 10:07:51 -0800231 __u8 Plog;
232 __u8 Scell_log;
233 __u8 prio;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800234 __u32 packets;
Tao Baod7db5942015-01-28 10:07:51 -0800235 __u32 bytesin;
Ben Cheng655a7c02013-10-16 16:09:24 -0700236};
237struct tc_gred_sopt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800238 __u32 DPs;
Tao Baod7db5942015-01-28 10:07:51 -0800239 __u32 def_DP;
240 __u8 grio;
241 __u8 flags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800242 __u16 pad1;
Ben Cheng655a7c02013-10-16 16:09:24 -0700243};
244enum {
Tao Baod7db5942015-01-28 10:07:51 -0800245 TCA_CHOKE_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800246 TCA_CHOKE_PARMS,
Tao Baod7db5942015-01-28 10:07:51 -0800247 TCA_CHOKE_STAB,
248 TCA_CHOKE_MAX_P,
249 __TCA_CHOKE_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800250};
Ben Cheng655a7c02013-10-16 16:09:24 -0700251#define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1)
252struct tc_choke_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800253 __u32 limit;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800254 __u32 qth_min;
Tao Baod7db5942015-01-28 10:07:51 -0800255 __u32 qth_max;
256 unsigned char Wlog;
257 unsigned char Plog;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800258 unsigned char Scell_log;
Tao Baod7db5942015-01-28 10:07:51 -0800259 unsigned char flags;
Ben Cheng655a7c02013-10-16 16:09:24 -0700260};
261struct tc_choke_xstats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800262 __u32 early;
Tao Baod7db5942015-01-28 10:07:51 -0800263 __u32 pdrop;
264 __u32 other;
265 __u32 marked;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800266 __u32 matched;
Ben Cheng655a7c02013-10-16 16:09:24 -0700267};
268#define TC_HTB_NUMPRIO 8
269#define TC_HTB_MAXDEPTH 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800270#define TC_HTB_PROTOVER 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700271struct tc_htb_opt {
Tao Baod7db5942015-01-28 10:07:51 -0800272 struct tc_ratespec rate;
273 struct tc_ratespec ceil;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800274 __u32 buffer;
Tao Baod7db5942015-01-28 10:07:51 -0800275 __u32 cbuffer;
276 __u32 quantum;
277 __u32 level;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800278 __u32 prio;
Ben Cheng655a7c02013-10-16 16:09:24 -0700279};
280struct tc_htb_glob {
Tao Baod7db5942015-01-28 10:07:51 -0800281 __u32 version;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800282 __u32 rate2quantum;
Tao Baod7db5942015-01-28 10:07:51 -0800283 __u32 defcls;
284 __u32 debug;
285 __u32 direct_pkts;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800286};
Ben Cheng655a7c02013-10-16 16:09:24 -0700287enum {
Tao Baod7db5942015-01-28 10:07:51 -0800288 TCA_HTB_UNSPEC,
289 TCA_HTB_PARMS,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800290 TCA_HTB_INIT,
Tao Baod7db5942015-01-28 10:07:51 -0800291 TCA_HTB_CTAB,
292 TCA_HTB_RTAB,
293 TCA_HTB_DIRECT_QLEN,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800294 TCA_HTB_RATE64,
Tao Baod7db5942015-01-28 10:07:51 -0800295 TCA_HTB_CEIL64,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700296 TCA_HTB_PAD,
Christopher Ferrisa9750ed2021-05-03 14:02:49 -0700297 TCA_HTB_OFFLOAD,
Tao Baod7db5942015-01-28 10:07:51 -0800298 __TCA_HTB_MAX,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700299};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800300#define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700301struct tc_htb_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800302 __u32 lends;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700303 __u32 borrows;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800304 __u32 giants;
Christopher Ferris86a48372019-01-10 14:14:59 -0800305 __s32 tokens;
306 __s32 ctokens;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700307};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800308struct tc_hfsc_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800309 __u16 defcls;
Ben Cheng655a7c02013-10-16 16:09:24 -0700310};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700311struct tc_service_curve {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800312 __u32 m1;
Tao Baod7db5942015-01-28 10:07:51 -0800313 __u32 d;
314 __u32 m2;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700315};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800316struct tc_hfsc_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800317 __u64 work;
318 __u64 rtwork;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700319 __u32 period;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800320 __u32 level;
Ben Cheng655a7c02013-10-16 16:09:24 -0700321};
322enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700323 TCA_HFSC_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800324 TCA_HFSC_RSC,
Tao Baod7db5942015-01-28 10:07:51 -0800325 TCA_HFSC_FSC,
326 TCA_HFSC_USC,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700327 __TCA_HFSC_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800328};
Ben Cheng655a7c02013-10-16 16:09:24 -0700329#define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
330#define TC_CBQ_MAXPRIO 8
Christopher Ferris106b3a82016-08-24 12:15:38 -0700331#define TC_CBQ_MAXLEVEL 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800332#define TC_CBQ_DEF_EWMA 5
Ben Cheng655a7c02013-10-16 16:09:24 -0700333struct tc_cbq_lssopt {
Tao Baod7db5942015-01-28 10:07:51 -0800334 unsigned char change;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700335 unsigned char flags;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800336#define TCF_CBQ_LSS_BOUNDED 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700337#define TCF_CBQ_LSS_ISOLATED 2
Tao Baod7db5942015-01-28 10:07:51 -0800338 unsigned char ewma_log;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700339 unsigned char level;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800340#define TCF_CBQ_LSS_FLAGS 1
Ben Cheng655a7c02013-10-16 16:09:24 -0700341#define TCF_CBQ_LSS_EWMA 2
342#define TCF_CBQ_LSS_MAXIDLE 4
Christopher Ferris106b3a82016-08-24 12:15:38 -0700343#define TCF_CBQ_LSS_MINIDLE 8
Christopher Ferris05d08e92016-02-04 13:16:38 -0800344#define TCF_CBQ_LSS_OFFTIME 0x10
Ben Cheng655a7c02013-10-16 16:09:24 -0700345#define TCF_CBQ_LSS_AVPKT 0x20
Tao Baod7db5942015-01-28 10:07:51 -0800346 __u32 maxidle;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700347 __u32 minidle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800348 __u32 offtime;
Tao Baod7db5942015-01-28 10:07:51 -0800349 __u32 avpkt;
Ben Cheng655a7c02013-10-16 16:09:24 -0700350};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700351struct tc_cbq_wrropt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800352 unsigned char flags;
Tao Baod7db5942015-01-28 10:07:51 -0800353 unsigned char priority;
354 unsigned char cpriority;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700355 unsigned char __reserved;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800356 __u32 allot;
Tao Baod7db5942015-01-28 10:07:51 -0800357 __u32 weight;
Ben Cheng655a7c02013-10-16 16:09:24 -0700358};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700359struct tc_cbq_ovl {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800360 unsigned char strategy;
Ben Cheng655a7c02013-10-16 16:09:24 -0700361#define TC_CBQ_OVL_CLASSIC 0
362#define TC_CBQ_OVL_DELAY 1
Christopher Ferris106b3a82016-08-24 12:15:38 -0700363#define TC_CBQ_OVL_LOWPRIO 2
Christopher Ferris05d08e92016-02-04 13:16:38 -0800364#define TC_CBQ_OVL_DROP 3
Ben Cheng655a7c02013-10-16 16:09:24 -0700365#define TC_CBQ_OVL_RCLASSIC 4
Tao Baod7db5942015-01-28 10:07:51 -0800366 unsigned char priority2;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700367 __u16 pad;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800368 __u32 penalty;
Ben Cheng655a7c02013-10-16 16:09:24 -0700369};
370struct tc_cbq_police {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700371 unsigned char police;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800372 unsigned char __res1;
Tao Baod7db5942015-01-28 10:07:51 -0800373 unsigned short __res2;
Ben Cheng655a7c02013-10-16 16:09:24 -0700374};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700375struct tc_cbq_fopt {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800376 __u32 split;
Tao Baod7db5942015-01-28 10:07:51 -0800377 __u32 defmap;
378 __u32 defchange;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700379};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800380struct tc_cbq_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800381 __u32 borrows;
382 __u32 overactions;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700383 __s32 avgidle;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800384 __s32 undertime;
Ben Cheng655a7c02013-10-16 16:09:24 -0700385};
386enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700387 TCA_CBQ_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800388 TCA_CBQ_LSSOPT,
Tao Baod7db5942015-01-28 10:07:51 -0800389 TCA_CBQ_WRROPT,
390 TCA_CBQ_FOPT,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700391 TCA_CBQ_OVL_STRATEGY,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800392 TCA_CBQ_RATE,
Tao Baod7db5942015-01-28 10:07:51 -0800393 TCA_CBQ_RTAB,
394 TCA_CBQ_POLICE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700395 __TCA_CBQ_MAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800396};
Ben Cheng655a7c02013-10-16 16:09:24 -0700397#define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1)
398enum {
Christopher Ferris106b3a82016-08-24 12:15:38 -0700399 TCA_DSMARK_UNSPEC,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800400 TCA_DSMARK_INDICES,
Tao Baod7db5942015-01-28 10:07:51 -0800401 TCA_DSMARK_DEFAULT_INDEX,
402 TCA_DSMARK_SET_TC_INDEX,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700403 TCA_DSMARK_MASK,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800404 TCA_DSMARK_VALUE,
Tao Baod7db5942015-01-28 10:07:51 -0800405 __TCA_DSMARK_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700406};
Christopher Ferris106b3a82016-08-24 12:15:38 -0700407#define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800408enum {
Tao Baod7db5942015-01-28 10:07:51 -0800409 TCA_ATM_UNSPEC,
410 TCA_ATM_FD,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700411 TCA_ATM_PTR,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800412 TCA_ATM_HDR,
Tao Baod7db5942015-01-28 10:07:51 -0800413 TCA_ATM_EXCESS,
414 TCA_ATM_ADDR,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700415 TCA_ATM_STATE,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800416 __TCA_ATM_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700417};
418#define TCA_ATM_MAX (__TCA_ATM_MAX - 1)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700419enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800420 TCA_NETEM_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800421 TCA_NETEM_CORR,
422 TCA_NETEM_DELAY_DIST,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700423 TCA_NETEM_REORDER,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800424 TCA_NETEM_CORRUPT,
Tao Baod7db5942015-01-28 10:07:51 -0800425 TCA_NETEM_LOSS,
426 TCA_NETEM_RATE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700427 TCA_NETEM_ECN,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800428 TCA_NETEM_RATE64,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700429 TCA_NETEM_PAD,
Christopher Ferris934ec942018-01-31 15:29:16 -0800430 TCA_NETEM_LATENCY64,
431 TCA_NETEM_JITTER64,
432 TCA_NETEM_SLOT,
Christopher Ferris9ce28842018-10-25 12:11:39 -0700433 TCA_NETEM_SLOT_DIST,
Christopher Ferris67d1e5e2023-10-31 13:36:37 -0700434 TCA_NETEM_PRNG_SEED,
Tao Baod7db5942015-01-28 10:07:51 -0800435 __TCA_NETEM_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700436};
437#define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800438struct tc_netem_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800439 __u32 latency;
440 __u32 limit;
441 __u32 loss;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800442 __u32 gap;
Tao Baod7db5942015-01-28 10:07:51 -0800443 __u32 duplicate;
444 __u32 jitter;
Ben Cheng655a7c02013-10-16 16:09:24 -0700445};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800446struct tc_netem_corr {
Tao Baod7db5942015-01-28 10:07:51 -0800447 __u32 delay_corr;
448 __u32 loss_corr;
449 __u32 dup_corr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800450};
Ben Cheng655a7c02013-10-16 16:09:24 -0700451struct tc_netem_reorder {
Tao Baod7db5942015-01-28 10:07:51 -0800452 __u32 probability;
453 __u32 correlation;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800454};
Ben Cheng655a7c02013-10-16 16:09:24 -0700455struct tc_netem_corrupt {
Tao Baod7db5942015-01-28 10:07:51 -0800456 __u32 probability;
457 __u32 correlation;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800458};
Christopher Ferris38062f92014-07-09 15:33:25 -0700459struct tc_netem_rate {
Tao Baod7db5942015-01-28 10:07:51 -0800460 __u32 rate;
461 __s32 packet_overhead;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800462 __u32 cell_size;
Tao Baod7db5942015-01-28 10:07:51 -0800463 __s32 cell_overhead;
Ben Cheng655a7c02013-10-16 16:09:24 -0700464};
Christopher Ferris934ec942018-01-31 15:29:16 -0800465struct tc_netem_slot {
466 __s64 min_delay;
467 __s64 max_delay;
468 __s32 max_packets;
469 __s32 max_bytes;
Christopher Ferris9ce28842018-10-25 12:11:39 -0700470 __s64 dist_delay;
471 __s64 dist_jitter;
Christopher Ferris934ec942018-01-31 15:29:16 -0800472};
Ben Cheng655a7c02013-10-16 16:09:24 -0700473enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800474 NETEM_LOSS_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800475 NETEM_LOSS_GI,
476 NETEM_LOSS_GE,
477 __NETEM_LOSS_MAX
Christopher Ferris05d08e92016-02-04 13:16:38 -0800478};
Christopher Ferris38062f92014-07-09 15:33:25 -0700479#define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700480struct tc_netem_gimodel {
Tao Baod7db5942015-01-28 10:07:51 -0800481 __u32 p13;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800482 __u32 p31;
Tao Baod7db5942015-01-28 10:07:51 -0800483 __u32 p32;
484 __u32 p14;
485 __u32 p23;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800486};
Christopher Ferris38062f92014-07-09 15:33:25 -0700487struct tc_netem_gemodel {
Tao Baod7db5942015-01-28 10:07:51 -0800488 __u32 p;
489 __u32 r;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800490 __u32 h;
Tao Baod7db5942015-01-28 10:07:51 -0800491 __u32 k1;
Ben Cheng655a7c02013-10-16 16:09:24 -0700492};
493#define NETEM_DIST_SCALE 8192
Christopher Ferris05d08e92016-02-04 13:16:38 -0800494#define NETEM_DIST_MAX 16384
Christopher Ferris38062f92014-07-09 15:33:25 -0700495enum {
Tao Baod7db5942015-01-28 10:07:51 -0800496 TCA_DRR_UNSPEC,
497 TCA_DRR_QUANTUM,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800498 __TCA_DRR_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700499};
Ben Cheng655a7c02013-10-16 16:09:24 -0700500#define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
501struct tc_drr_stats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800502 __u32 deficit;
Christopher Ferris38062f92014-07-09 15:33:25 -0700503};
Ben Cheng655a7c02013-10-16 16:09:24 -0700504#define TC_QOPT_BITMASK 15
505#define TC_QOPT_MAX_QUEUE 16
Christopher Ferris525ce912017-07-26 13:12:53 -0700506enum {
507 TC_MQPRIO_HW_OFFLOAD_NONE,
508 TC_MQPRIO_HW_OFFLOAD_TCS,
509 __TC_MQPRIO_HW_OFFLOAD_MAX
510};
511#define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1)
Christopher Ferris934ec942018-01-31 15:29:16 -0800512enum {
513 TC_MQPRIO_MODE_DCB,
514 TC_MQPRIO_MODE_CHANNEL,
515 __TC_MQPRIO_MODE_MAX
516};
517#define __TC_MQPRIO_MODE_MAX (__TC_MQPRIO_MODE_MAX - 1)
518enum {
519 TC_MQPRIO_SHAPER_DCB,
520 TC_MQPRIO_SHAPER_BW_RATE,
521 __TC_MQPRIO_SHAPER_MAX
522};
523#define __TC_MQPRIO_SHAPER_MAX (__TC_MQPRIO_SHAPER_MAX - 1)
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700524enum {
525 TC_FP_EXPRESS = 1,
526 TC_FP_PREEMPTIBLE = 2,
527};
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 {
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700540 TCA_MQPRIO_TC_ENTRY_UNSPEC,
541 TCA_MQPRIO_TC_ENTRY_INDEX,
542 TCA_MQPRIO_TC_ENTRY_FP,
543 __TCA_MQPRIO_TC_ENTRY_CNT,
544 TCA_MQPRIO_TC_ENTRY_MAX = (__TCA_MQPRIO_TC_ENTRY_CNT - 1)
545};
546enum {
Christopher Ferris934ec942018-01-31 15:29:16 -0800547 TCA_MQPRIO_UNSPEC,
548 TCA_MQPRIO_MODE,
549 TCA_MQPRIO_SHAPER,
550 TCA_MQPRIO_MIN_RATE64,
551 TCA_MQPRIO_MAX_RATE64,
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700552 TCA_MQPRIO_TC_ENTRY,
Christopher Ferris934ec942018-01-31 15:29:16 -0800553 __TCA_MQPRIO_MAX,
554};
555#define TCA_MQPRIO_MAX (__TCA_MQPRIO_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700556enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800557 TCA_SFB_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800558 TCA_SFB_PARMS,
559 __TCA_SFB_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700560};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800561#define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700562struct tc_sfb_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800563 __u32 rehash_interval;
564 __u32 warmup_time;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800565 __u32 max;
Tao Baod7db5942015-01-28 10:07:51 -0800566 __u32 bin_size;
567 __u32 increment;
568 __u32 decrement;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800569 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800570 __u32 penalty_rate;
571 __u32 penalty_burst;
Ben Cheng655a7c02013-10-16 16:09:24 -0700572};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800573struct tc_sfb_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800574 __u32 earlydrop;
575 __u32 penaltydrop;
576 __u32 bucketdrop;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800577 __u32 queuedrop;
Tao Baod7db5942015-01-28 10:07:51 -0800578 __u32 childdrop;
579 __u32 marked;
580 __u32 maxqlen;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800581 __u32 maxprob;
Tao Baod7db5942015-01-28 10:07:51 -0800582 __u32 avgprob;
Ben Cheng655a7c02013-10-16 16:09:24 -0700583};
584#define SFB_MAX_PROB 0xFFFF
Christopher Ferris05d08e92016-02-04 13:16:38 -0800585enum {
Tao Baod7db5942015-01-28 10:07:51 -0800586 TCA_QFQ_UNSPEC,
587 TCA_QFQ_WEIGHT,
588 TCA_QFQ_LMAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800589 __TCA_QFQ_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700590};
Ben Cheng655a7c02013-10-16 16:09:24 -0700591#define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1)
592struct tc_qfq_stats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800593 __u32 weight;
Tao Baod7db5942015-01-28 10:07:51 -0800594 __u32 lmax;
Ben Cheng655a7c02013-10-16 16:09:24 -0700595};
596enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800597 TCA_CODEL_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800598 TCA_CODEL_TARGET,
599 TCA_CODEL_LIMIT,
600 TCA_CODEL_INTERVAL,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800601 TCA_CODEL_ECN,
602 TCA_CODEL_CE_THRESHOLD,
Tao Baod7db5942015-01-28 10:07:51 -0800603 __TCA_CODEL_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700604};
605#define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700606struct tc_codel_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800607 __u32 maxpacket;
608 __u32 count;
609 __u32 lastcount;
610 __u32 ldelay;
Tao Baod7db5942015-01-28 10:07:51 -0800611 __s32 drop_next;
612 __u32 drop_overlimit;
613 __u32 ecn_mark;
614 __u32 dropping;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800615 __u32 ce_mark;
Christopher Ferris38062f92014-07-09 15:33:25 -0700616};
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700617#define FQ_CODEL_QUANTUM_MAX (1 << 20)
Ben Cheng655a7c02013-10-16 16:09:24 -0700618enum {
Tao Baod7db5942015-01-28 10:07:51 -0800619 TCA_FQ_CODEL_UNSPEC,
620 TCA_FQ_CODEL_TARGET,
Tao Baod7db5942015-01-28 10:07:51 -0800621 TCA_FQ_CODEL_LIMIT,
622 TCA_FQ_CODEL_INTERVAL,
623 TCA_FQ_CODEL_ECN,
624 TCA_FQ_CODEL_FLOWS,
Tao Baod7db5942015-01-28 10:07:51 -0800625 TCA_FQ_CODEL_QUANTUM,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800626 TCA_FQ_CODEL_CE_THRESHOLD,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700627 TCA_FQ_CODEL_DROP_BATCH_SIZE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700628 TCA_FQ_CODEL_MEMORY_LIMIT,
Christopher Ferrisa4792612022-01-10 13:51:15 -0800629 TCA_FQ_CODEL_CE_THRESHOLD_SELECTOR,
630 TCA_FQ_CODEL_CE_THRESHOLD_MASK,
Tao Baod7db5942015-01-28 10:07:51 -0800631 __TCA_FQ_CODEL_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700632};
Ben Cheng655a7c02013-10-16 16:09:24 -0700633#define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700634enum {
Tao Baod7db5942015-01-28 10:07:51 -0800635 TCA_FQ_CODEL_XSTATS_QDISC,
636 TCA_FQ_CODEL_XSTATS_CLASS,
Ben Cheng655a7c02013-10-16 16:09:24 -0700637};
Christopher Ferris38062f92014-07-09 15:33:25 -0700638struct tc_fq_codel_qd_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800639 __u32 maxpacket;
640 __u32 drop_overlimit;
641 __u32 ecn_mark;
Tao Baod7db5942015-01-28 10:07:51 -0800642 __u32 new_flow_count;
643 __u32 new_flows_len;
644 __u32 old_flows_len;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800645 __u32 ce_mark;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700646 __u32 memory_usage;
647 __u32 drop_overmemory;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800648};
Christopher Ferris38062f92014-07-09 15:33:25 -0700649struct tc_fq_codel_cl_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800650 __s32 deficit;
651 __u32 ldelay;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800652 __u32 count;
Tao Baod7db5942015-01-28 10:07:51 -0800653 __u32 lastcount;
654 __u32 dropping;
655 __s32 drop_next;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800656};
Christopher Ferris38062f92014-07-09 15:33:25 -0700657struct tc_fq_codel_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800658 __u32 type;
659 union {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800660 struct tc_fq_codel_qd_stats qdisc_stats;
Tao Baod7db5942015-01-28 10:07:51 -0800661 struct tc_fq_codel_cl_stats class_stats;
662 };
Ben Cheng655a7c02013-10-16 16:09:24 -0700663};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800664enum {
Tao Baod7db5942015-01-28 10:07:51 -0800665 TCA_FQ_UNSPEC,
666 TCA_FQ_PLIMIT,
667 TCA_FQ_FLOW_PLIMIT,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800668 TCA_FQ_QUANTUM,
Tao Baod7db5942015-01-28 10:07:51 -0800669 TCA_FQ_INITIAL_QUANTUM,
670 TCA_FQ_RATE_ENABLE,
671 TCA_FQ_FLOW_DEFAULT_RATE,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800672 TCA_FQ_FLOW_MAX_RATE,
Tao Baod7db5942015-01-28 10:07:51 -0800673 TCA_FQ_BUCKETS_LOG,
674 TCA_FQ_FLOW_REFILL_DELAY,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800675 TCA_FQ_ORPHAN_MASK,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800676 TCA_FQ_LOW_RATE_THRESHOLD,
Christopher Ferrisd842e432019-03-07 10:21:59 -0800677 TCA_FQ_CE_THRESHOLD,
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700678 TCA_FQ_TIMER_SLACK,
Christopher Ferris8177cdf2020-08-03 11:53:55 -0700679 TCA_FQ_HORIZON,
680 TCA_FQ_HORIZON_DROP,
Christopher Ferris0f795212024-01-17 14:17:28 -0800681 TCA_FQ_PRIOMAP,
682 TCA_FQ_WEIGHTS,
Tao Baod7db5942015-01-28 10:07:51 -0800683 __TCA_FQ_MAX
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800684};
Christopher Ferris38062f92014-07-09 15:33:25 -0700685#define TCA_FQ_MAX (__TCA_FQ_MAX - 1)
Christopher Ferris0f795212024-01-17 14:17:28 -0800686#define FQ_BANDS 3
687#define FQ_MIN_WEIGHT 16384
Christopher Ferris38062f92014-07-09 15:33:25 -0700688struct tc_fq_qd_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800689 __u64 gc_flows;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800690 __u64 highprio_packets;
Tao Baod7db5942015-01-28 10:07:51 -0800691 __u64 tcp_retrans;
692 __u64 throttled;
693 __u64 flows_plimit;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800694 __u64 pkts_too_long;
Tao Baod7db5942015-01-28 10:07:51 -0800695 __u64 allocation_errors;
696 __s64 time_next_delayed_flow;
697 __u32 flows;
698 __u32 inactive_flows;
Tao Baod7db5942015-01-28 10:07:51 -0800699 __u32 throttled_flows;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800700 __u32 unthrottle_latency_ns;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800701 __u64 ce_mark;
Christopher Ferris8177cdf2020-08-03 11:53:55 -0700702 __u64 horizon_drops;
703 __u64 horizon_caps;
Christopher Ferris0f795212024-01-17 14:17:28 -0800704 __u64 fastpath_packets;
705 __u64 band_drops[FQ_BANDS];
706 __u32 band_pkt_count[FQ_BANDS];
707 __u32 pad;
Christopher Ferris38062f92014-07-09 15:33:25 -0700708};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800709enum {
Tao Baod7db5942015-01-28 10:07:51 -0800710 TCA_HHF_UNSPEC,
711 TCA_HHF_BACKLOG_LIMIT,
712 TCA_HHF_QUANTUM,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800713 TCA_HHF_HH_FLOWS_LIMIT,
Tao Baod7db5942015-01-28 10:07:51 -0800714 TCA_HHF_RESET_TIMEOUT,
715 TCA_HHF_ADMIT_BYTES,
716 TCA_HHF_EVICT_TIMEOUT,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800717 TCA_HHF_NON_HH_WEIGHT,
Tao Baod7db5942015-01-28 10:07:51 -0800718 __TCA_HHF_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700719};
720#define TCA_HHF_MAX (__TCA_HHF_MAX - 1)
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800721struct tc_hhf_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800722 __u32 drop_overlimit;
723 __u32 hh_overlimit;
724 __u32 hh_tot_count;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800725 __u32 hh_cur_count;
Christopher Ferris38062f92014-07-09 15:33:25 -0700726};
727enum {
Tao Baod7db5942015-01-28 10:07:51 -0800728 TCA_PIE_UNSPEC,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800729 TCA_PIE_TARGET,
Tao Baod7db5942015-01-28 10:07:51 -0800730 TCA_PIE_LIMIT,
731 TCA_PIE_TUPDATE,
732 TCA_PIE_ALPHA,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800733 TCA_PIE_BETA,
Tao Baod7db5942015-01-28 10:07:51 -0800734 TCA_PIE_ECN,
735 TCA_PIE_BYTEMODE,
Christopher Ferrisd32ca142020-02-04 16:16:51 -0800736 TCA_PIE_DQ_RATE_ESTIMATOR,
Tao Baod7db5942015-01-28 10:07:51 -0800737 __TCA_PIE_MAX
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800738};
Christopher Ferris38062f92014-07-09 15:33:25 -0700739#define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
740struct tc_pie_xstats {
Christopher Ferris24f97eb2019-05-20 12:58:13 -0700741 __u64 prob;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800742 __u32 delay;
Tao Baod7db5942015-01-28 10:07:51 -0800743 __u32 avg_dq_rate;
Christopher Ferrisd32ca142020-02-04 16:16:51 -0800744 __u32 dq_rate_estimating;
Tao Baod7db5942015-01-28 10:07:51 -0800745 __u32 packets_in;
746 __u32 dropped;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800747 __u32 overlimit;
Tao Baod7db5942015-01-28 10:07:51 -0800748 __u32 maxq;
749 __u32 ecn_mark;
Christopher Ferris38062f92014-07-09 15:33:25 -0700750};
Christopher Ferrisbb9fcb42020-04-06 11:38:04 -0700751enum {
752 TCA_FQ_PIE_UNSPEC,
753 TCA_FQ_PIE_LIMIT,
754 TCA_FQ_PIE_FLOWS,
755 TCA_FQ_PIE_TARGET,
756 TCA_FQ_PIE_TUPDATE,
757 TCA_FQ_PIE_ALPHA,
758 TCA_FQ_PIE_BETA,
759 TCA_FQ_PIE_QUANTUM,
760 TCA_FQ_PIE_MEMORY_LIMIT,
761 TCA_FQ_PIE_ECN_PROB,
762 TCA_FQ_PIE_ECN,
763 TCA_FQ_PIE_BYTEMODE,
764 TCA_FQ_PIE_DQ_RATE_ESTIMATOR,
765 __TCA_FQ_PIE_MAX
766};
767#define TCA_FQ_PIE_MAX (__TCA_FQ_PIE_MAX - 1)
768struct tc_fq_pie_xstats {
769 __u32 packets_in;
770 __u32 dropped;
771 __u32 overlimit;
772 __u32 overmemory;
773 __u32 ecn_mark;
774 __u32 new_flow_count;
775 __u32 new_flows_len;
776 __u32 old_flows_len;
777 __u32 memory_usage;
778};
Christopher Ferris934ec942018-01-31 15:29:16 -0800779struct tc_cbs_qopt {
780 __u8 offload;
781 __u8 _pad[3];
782 __s32 hicredit;
783 __s32 locredit;
784 __s32 idleslope;
785 __s32 sendslope;
786};
787enum {
788 TCA_CBS_UNSPEC,
789 TCA_CBS_PARMS,
790 __TCA_CBS_MAX,
791};
792#define TCA_CBS_MAX (__TCA_CBS_MAX - 1)
Christopher Ferris9ce28842018-10-25 12:11:39 -0700793struct tc_etf_qopt {
794 __s32 delta;
795 __s32 clockid;
796 __u32 flags;
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700797#define TC_ETF_DEADLINE_MODE_ON _BITUL(0)
798#define TC_ETF_OFFLOAD_ON _BITUL(1)
799#define TC_ETF_SKIP_SOCK_CHECK _BITUL(2)
Christopher Ferris9ce28842018-10-25 12:11:39 -0700800};
801enum {
802 TCA_ETF_UNSPEC,
803 TCA_ETF_PARMS,
804 __TCA_ETF_MAX,
805};
806#define TCA_ETF_MAX (__TCA_ETF_MAX - 1)
807enum {
808 TCA_CAKE_UNSPEC,
809 TCA_CAKE_PAD,
810 TCA_CAKE_BASE_RATE64,
811 TCA_CAKE_DIFFSERV_MODE,
812 TCA_CAKE_ATM,
813 TCA_CAKE_FLOW_MODE,
814 TCA_CAKE_OVERHEAD,
815 TCA_CAKE_RTT,
816 TCA_CAKE_TARGET,
817 TCA_CAKE_AUTORATE,
818 TCA_CAKE_MEMORY,
819 TCA_CAKE_NAT,
820 TCA_CAKE_RAW,
821 TCA_CAKE_WASH,
822 TCA_CAKE_MPU,
823 TCA_CAKE_INGRESS,
824 TCA_CAKE_ACK_FILTER,
825 TCA_CAKE_SPLIT_GSO,
Christopher Ferris24f97eb2019-05-20 12:58:13 -0700826 TCA_CAKE_FWMARK,
Christopher Ferris9ce28842018-10-25 12:11:39 -0700827 __TCA_CAKE_MAX
828};
829#define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1)
830enum {
831 __TCA_CAKE_STATS_INVALID,
832 TCA_CAKE_STATS_PAD,
833 TCA_CAKE_STATS_CAPACITY_ESTIMATE64,
834 TCA_CAKE_STATS_MEMORY_LIMIT,
835 TCA_CAKE_STATS_MEMORY_USED,
836 TCA_CAKE_STATS_AVG_NETOFF,
837 TCA_CAKE_STATS_MIN_NETLEN,
838 TCA_CAKE_STATS_MAX_NETLEN,
839 TCA_CAKE_STATS_MIN_ADJLEN,
840 TCA_CAKE_STATS_MAX_ADJLEN,
841 TCA_CAKE_STATS_TIN_STATS,
842 TCA_CAKE_STATS_DEFICIT,
843 TCA_CAKE_STATS_COBALT_COUNT,
844 TCA_CAKE_STATS_DROPPING,
845 TCA_CAKE_STATS_DROP_NEXT_US,
846 TCA_CAKE_STATS_P_DROP,
847 TCA_CAKE_STATS_BLUE_TIMER_US,
848 __TCA_CAKE_STATS_MAX
849};
850#define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1)
851enum {
852 __TCA_CAKE_TIN_STATS_INVALID,
853 TCA_CAKE_TIN_STATS_PAD,
854 TCA_CAKE_TIN_STATS_SENT_PACKETS,
855 TCA_CAKE_TIN_STATS_SENT_BYTES64,
856 TCA_CAKE_TIN_STATS_DROPPED_PACKETS,
857 TCA_CAKE_TIN_STATS_DROPPED_BYTES64,
858 TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS,
859 TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64,
860 TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS,
861 TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64,
862 TCA_CAKE_TIN_STATS_BACKLOG_PACKETS,
863 TCA_CAKE_TIN_STATS_BACKLOG_BYTES,
864 TCA_CAKE_TIN_STATS_THRESHOLD_RATE64,
865 TCA_CAKE_TIN_STATS_TARGET_US,
866 TCA_CAKE_TIN_STATS_INTERVAL_US,
867 TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS,
868 TCA_CAKE_TIN_STATS_WAY_MISSES,
869 TCA_CAKE_TIN_STATS_WAY_COLLISIONS,
870 TCA_CAKE_TIN_STATS_PEAK_DELAY_US,
871 TCA_CAKE_TIN_STATS_AVG_DELAY_US,
872 TCA_CAKE_TIN_STATS_BASE_DELAY_US,
873 TCA_CAKE_TIN_STATS_SPARSE_FLOWS,
874 TCA_CAKE_TIN_STATS_BULK_FLOWS,
875 TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS,
876 TCA_CAKE_TIN_STATS_MAX_SKBLEN,
877 TCA_CAKE_TIN_STATS_FLOW_QUANTUM,
878 __TCA_CAKE_TIN_STATS_MAX
879};
880#define TCA_CAKE_TIN_STATS_MAX (__TCA_CAKE_TIN_STATS_MAX - 1)
881#define TC_CAKE_MAX_TINS (8)
882enum {
883 CAKE_FLOW_NONE = 0,
884 CAKE_FLOW_SRC_IP,
885 CAKE_FLOW_DST_IP,
886 CAKE_FLOW_HOSTS,
887 CAKE_FLOW_FLOWS,
888 CAKE_FLOW_DUAL_SRC,
889 CAKE_FLOW_DUAL_DST,
890 CAKE_FLOW_TRIPLE,
891 CAKE_FLOW_MAX,
892};
893enum {
894 CAKE_DIFFSERV_DIFFSERV3 = 0,
895 CAKE_DIFFSERV_DIFFSERV4,
896 CAKE_DIFFSERV_DIFFSERV8,
897 CAKE_DIFFSERV_BESTEFFORT,
898 CAKE_DIFFSERV_PRECEDENCE,
899 CAKE_DIFFSERV_MAX
900};
901enum {
902 CAKE_ACK_NONE = 0,
903 CAKE_ACK_FILTER,
904 CAKE_ACK_AGGRESSIVE,
905 CAKE_ACK_MAX
906};
907enum {
908 CAKE_ATM_NONE = 0,
909 CAKE_ATM_ATM,
910 CAKE_ATM_PTM,
911 CAKE_ATM_MAX
912};
Christopher Ferris86a48372019-01-10 14:14:59 -0800913enum {
914 TC_TAPRIO_CMD_SET_GATES = 0x00,
915 TC_TAPRIO_CMD_SET_AND_HOLD = 0x01,
916 TC_TAPRIO_CMD_SET_AND_RELEASE = 0x02,
917};
918enum {
919 TCA_TAPRIO_SCHED_ENTRY_UNSPEC,
920 TCA_TAPRIO_SCHED_ENTRY_INDEX,
921 TCA_TAPRIO_SCHED_ENTRY_CMD,
922 TCA_TAPRIO_SCHED_ENTRY_GATE_MASK,
923 TCA_TAPRIO_SCHED_ENTRY_INTERVAL,
924 __TCA_TAPRIO_SCHED_ENTRY_MAX,
925};
926#define TCA_TAPRIO_SCHED_ENTRY_MAX (__TCA_TAPRIO_SCHED_ENTRY_MAX - 1)
927enum {
928 TCA_TAPRIO_SCHED_UNSPEC,
929 TCA_TAPRIO_SCHED_ENTRY,
930 __TCA_TAPRIO_SCHED_MAX,
931};
932#define TCA_TAPRIO_SCHED_MAX (__TCA_TAPRIO_SCHED_MAX - 1)
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700933#define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0)
934#define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1)
Christopher Ferris86a48372019-01-10 14:14:59 -0800935enum {
Christopher Ferris6cd53a52022-12-12 23:39:16 +0000936 TCA_TAPRIO_TC_ENTRY_UNSPEC,
937 TCA_TAPRIO_TC_ENTRY_INDEX,
938 TCA_TAPRIO_TC_ENTRY_MAX_SDU,
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700939 TCA_TAPRIO_TC_ENTRY_FP,
Christopher Ferris6cd53a52022-12-12 23:39:16 +0000940 __TCA_TAPRIO_TC_ENTRY_CNT,
941 TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1)
942};
943enum {
Christopher Ferris8666d042023-09-06 14:55:31 -0700944 TCA_TAPRIO_OFFLOAD_STATS_PAD = 1,
945 TCA_TAPRIO_OFFLOAD_STATS_WINDOW_DROPS,
946 TCA_TAPRIO_OFFLOAD_STATS_TX_OVERRUNS,
947 __TCA_TAPRIO_OFFLOAD_STATS_CNT,
948 TCA_TAPRIO_OFFLOAD_STATS_MAX = (__TCA_TAPRIO_OFFLOAD_STATS_CNT - 1)
949};
950enum {
Christopher Ferris86a48372019-01-10 14:14:59 -0800951 TCA_TAPRIO_ATTR_UNSPEC,
952 TCA_TAPRIO_ATTR_PRIOMAP,
953 TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
954 TCA_TAPRIO_ATTR_SCHED_BASE_TIME,
955 TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY,
956 TCA_TAPRIO_ATTR_SCHED_CLOCKID,
957 TCA_TAPRIO_PAD,
Christopher Ferrisaeddbcf2019-07-08 12:45:46 -0700958 TCA_TAPRIO_ATTR_ADMIN_SCHED,
959 TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME,
960 TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700961 TCA_TAPRIO_ATTR_FLAGS,
962 TCA_TAPRIO_ATTR_TXTIME_DELAY,
Christopher Ferris6cd53a52022-12-12 23:39:16 +0000963 TCA_TAPRIO_ATTR_TC_ENTRY,
Christopher Ferris86a48372019-01-10 14:14:59 -0800964 __TCA_TAPRIO_ATTR_MAX,
965};
966#define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
Christopher Ferrisbb9fcb42020-04-06 11:38:04 -0700967#define TCQ_ETS_MAX_BANDS 16
968enum {
969 TCA_ETS_UNSPEC,
970 TCA_ETS_NBANDS,
971 TCA_ETS_NSTRICT,
972 TCA_ETS_QUANTA,
973 TCA_ETS_QUANTA_BAND,
974 TCA_ETS_PRIOMAP,
975 TCA_ETS_PRIOMAP_BAND,
976 __TCA_ETS_MAX,
977};
978#define TCA_ETS_MAX (__TCA_ETS_MAX - 1)
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800979#endif