blob: c3488c26fd17dcf8efb746f30168d932757b6f84 [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)
Christopher Ferris106b3a82016-08-24 12:15:38 -0700330enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800331 TCA_NETEM_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800332 TCA_NETEM_CORR,
333 TCA_NETEM_DELAY_DIST,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700334 TCA_NETEM_REORDER,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800335 TCA_NETEM_CORRUPT,
Tao Baod7db5942015-01-28 10:07:51 -0800336 TCA_NETEM_LOSS,
337 TCA_NETEM_RATE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700338 TCA_NETEM_ECN,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800339 TCA_NETEM_RATE64,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700340 TCA_NETEM_PAD,
Christopher Ferris934ec942018-01-31 15:29:16 -0800341 TCA_NETEM_LATENCY64,
342 TCA_NETEM_JITTER64,
343 TCA_NETEM_SLOT,
Christopher Ferris9ce28842018-10-25 12:11:39 -0700344 TCA_NETEM_SLOT_DIST,
Christopher Ferris67d1e5e2023-10-31 13:36:37 -0700345 TCA_NETEM_PRNG_SEED,
Tao Baod7db5942015-01-28 10:07:51 -0800346 __TCA_NETEM_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700347};
348#define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
Christopher Ferris05d08e92016-02-04 13:16:38 -0800349struct tc_netem_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800350 __u32 latency;
351 __u32 limit;
352 __u32 loss;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800353 __u32 gap;
Tao Baod7db5942015-01-28 10:07:51 -0800354 __u32 duplicate;
355 __u32 jitter;
Ben Cheng655a7c02013-10-16 16:09:24 -0700356};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800357struct tc_netem_corr {
Tao Baod7db5942015-01-28 10:07:51 -0800358 __u32 delay_corr;
359 __u32 loss_corr;
360 __u32 dup_corr;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800361};
Ben Cheng655a7c02013-10-16 16:09:24 -0700362struct tc_netem_reorder {
Tao Baod7db5942015-01-28 10:07:51 -0800363 __u32 probability;
364 __u32 correlation;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800365};
Ben Cheng655a7c02013-10-16 16:09:24 -0700366struct tc_netem_corrupt {
Tao Baod7db5942015-01-28 10:07:51 -0800367 __u32 probability;
368 __u32 correlation;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800369};
Christopher Ferris38062f92014-07-09 15:33:25 -0700370struct tc_netem_rate {
Tao Baod7db5942015-01-28 10:07:51 -0800371 __u32 rate;
372 __s32 packet_overhead;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800373 __u32 cell_size;
Tao Baod7db5942015-01-28 10:07:51 -0800374 __s32 cell_overhead;
Ben Cheng655a7c02013-10-16 16:09:24 -0700375};
Christopher Ferris934ec942018-01-31 15:29:16 -0800376struct tc_netem_slot {
377 __s64 min_delay;
378 __s64 max_delay;
379 __s32 max_packets;
380 __s32 max_bytes;
Christopher Ferris9ce28842018-10-25 12:11:39 -0700381 __s64 dist_delay;
382 __s64 dist_jitter;
Christopher Ferris934ec942018-01-31 15:29:16 -0800383};
Ben Cheng655a7c02013-10-16 16:09:24 -0700384enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800385 NETEM_LOSS_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800386 NETEM_LOSS_GI,
387 NETEM_LOSS_GE,
388 __NETEM_LOSS_MAX
Christopher Ferris05d08e92016-02-04 13:16:38 -0800389};
Christopher Ferris38062f92014-07-09 15:33:25 -0700390#define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700391struct tc_netem_gimodel {
Tao Baod7db5942015-01-28 10:07:51 -0800392 __u32 p13;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800393 __u32 p31;
Tao Baod7db5942015-01-28 10:07:51 -0800394 __u32 p32;
395 __u32 p14;
396 __u32 p23;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800397};
Christopher Ferris38062f92014-07-09 15:33:25 -0700398struct tc_netem_gemodel {
Tao Baod7db5942015-01-28 10:07:51 -0800399 __u32 p;
400 __u32 r;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800401 __u32 h;
Tao Baod7db5942015-01-28 10:07:51 -0800402 __u32 k1;
Ben Cheng655a7c02013-10-16 16:09:24 -0700403};
404#define NETEM_DIST_SCALE 8192
Christopher Ferris05d08e92016-02-04 13:16:38 -0800405#define NETEM_DIST_MAX 16384
Christopher Ferris38062f92014-07-09 15:33:25 -0700406enum {
Tao Baod7db5942015-01-28 10:07:51 -0800407 TCA_DRR_UNSPEC,
408 TCA_DRR_QUANTUM,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800409 __TCA_DRR_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700410};
Ben Cheng655a7c02013-10-16 16:09:24 -0700411#define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
412struct tc_drr_stats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800413 __u32 deficit;
Christopher Ferris38062f92014-07-09 15:33:25 -0700414};
Ben Cheng655a7c02013-10-16 16:09:24 -0700415#define TC_QOPT_BITMASK 15
416#define TC_QOPT_MAX_QUEUE 16
Christopher Ferris525ce912017-07-26 13:12:53 -0700417enum {
418 TC_MQPRIO_HW_OFFLOAD_NONE,
419 TC_MQPRIO_HW_OFFLOAD_TCS,
420 __TC_MQPRIO_HW_OFFLOAD_MAX
421};
422#define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1)
Christopher Ferris934ec942018-01-31 15:29:16 -0800423enum {
424 TC_MQPRIO_MODE_DCB,
425 TC_MQPRIO_MODE_CHANNEL,
426 __TC_MQPRIO_MODE_MAX
427};
428#define __TC_MQPRIO_MODE_MAX (__TC_MQPRIO_MODE_MAX - 1)
429enum {
430 TC_MQPRIO_SHAPER_DCB,
431 TC_MQPRIO_SHAPER_BW_RATE,
432 __TC_MQPRIO_SHAPER_MAX
433};
434#define __TC_MQPRIO_SHAPER_MAX (__TC_MQPRIO_SHAPER_MAX - 1)
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700435enum {
436 TC_FP_EXPRESS = 1,
437 TC_FP_PREEMPTIBLE = 2,
438};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800439struct tc_mqprio_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800440 __u8 num_tc;
441 __u8 prio_tc_map[TC_QOPT_BITMASK + 1];
442 __u8 hw;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800443 __u16 count[TC_QOPT_MAX_QUEUE];
Tao Baod7db5942015-01-28 10:07:51 -0800444 __u16 offset[TC_QOPT_MAX_QUEUE];
Ben Cheng655a7c02013-10-16 16:09:24 -0700445};
Christopher Ferris934ec942018-01-31 15:29:16 -0800446#define TC_MQPRIO_F_MODE 0x1
447#define TC_MQPRIO_F_SHAPER 0x2
448#define TC_MQPRIO_F_MIN_RATE 0x4
449#define TC_MQPRIO_F_MAX_RATE 0x8
450enum {
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700451 TCA_MQPRIO_TC_ENTRY_UNSPEC,
452 TCA_MQPRIO_TC_ENTRY_INDEX,
453 TCA_MQPRIO_TC_ENTRY_FP,
454 __TCA_MQPRIO_TC_ENTRY_CNT,
455 TCA_MQPRIO_TC_ENTRY_MAX = (__TCA_MQPRIO_TC_ENTRY_CNT - 1)
456};
457enum {
Christopher Ferris934ec942018-01-31 15:29:16 -0800458 TCA_MQPRIO_UNSPEC,
459 TCA_MQPRIO_MODE,
460 TCA_MQPRIO_SHAPER,
461 TCA_MQPRIO_MIN_RATE64,
462 TCA_MQPRIO_MAX_RATE64,
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700463 TCA_MQPRIO_TC_ENTRY,
Christopher Ferris934ec942018-01-31 15:29:16 -0800464 __TCA_MQPRIO_MAX,
465};
466#define TCA_MQPRIO_MAX (__TCA_MQPRIO_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700467enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800468 TCA_SFB_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800469 TCA_SFB_PARMS,
470 __TCA_SFB_MAX,
Ben Cheng655a7c02013-10-16 16:09:24 -0700471};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800472#define TCA_SFB_MAX (__TCA_SFB_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700473struct tc_sfb_qopt {
Tao Baod7db5942015-01-28 10:07:51 -0800474 __u32 rehash_interval;
475 __u32 warmup_time;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800476 __u32 max;
Tao Baod7db5942015-01-28 10:07:51 -0800477 __u32 bin_size;
478 __u32 increment;
479 __u32 decrement;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800480 __u32 limit;
Tao Baod7db5942015-01-28 10:07:51 -0800481 __u32 penalty_rate;
482 __u32 penalty_burst;
Ben Cheng655a7c02013-10-16 16:09:24 -0700483};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800484struct tc_sfb_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800485 __u32 earlydrop;
486 __u32 penaltydrop;
487 __u32 bucketdrop;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800488 __u32 queuedrop;
Tao Baod7db5942015-01-28 10:07:51 -0800489 __u32 childdrop;
490 __u32 marked;
491 __u32 maxqlen;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800492 __u32 maxprob;
Tao Baod7db5942015-01-28 10:07:51 -0800493 __u32 avgprob;
Ben Cheng655a7c02013-10-16 16:09:24 -0700494};
495#define SFB_MAX_PROB 0xFFFF
Christopher Ferris05d08e92016-02-04 13:16:38 -0800496enum {
Tao Baod7db5942015-01-28 10:07:51 -0800497 TCA_QFQ_UNSPEC,
498 TCA_QFQ_WEIGHT,
499 TCA_QFQ_LMAX,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800500 __TCA_QFQ_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700501};
Ben Cheng655a7c02013-10-16 16:09:24 -0700502#define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1)
503struct tc_qfq_stats {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800504 __u32 weight;
Tao Baod7db5942015-01-28 10:07:51 -0800505 __u32 lmax;
Ben Cheng655a7c02013-10-16 16:09:24 -0700506};
507enum {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800508 TCA_CODEL_UNSPEC,
Tao Baod7db5942015-01-28 10:07:51 -0800509 TCA_CODEL_TARGET,
510 TCA_CODEL_LIMIT,
511 TCA_CODEL_INTERVAL,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800512 TCA_CODEL_ECN,
513 TCA_CODEL_CE_THRESHOLD,
Tao Baod7db5942015-01-28 10:07:51 -0800514 __TCA_CODEL_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700515};
516#define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1)
Ben Cheng655a7c02013-10-16 16:09:24 -0700517struct tc_codel_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800518 __u32 maxpacket;
519 __u32 count;
520 __u32 lastcount;
521 __u32 ldelay;
Tao Baod7db5942015-01-28 10:07:51 -0800522 __s32 drop_next;
523 __u32 drop_overlimit;
524 __u32 ecn_mark;
525 __u32 dropping;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800526 __u32 ce_mark;
Christopher Ferris38062f92014-07-09 15:33:25 -0700527};
Christopher Ferris2abfa9e2021-11-01 16:26:06 -0700528#define FQ_CODEL_QUANTUM_MAX (1 << 20)
Ben Cheng655a7c02013-10-16 16:09:24 -0700529enum {
Tao Baod7db5942015-01-28 10:07:51 -0800530 TCA_FQ_CODEL_UNSPEC,
531 TCA_FQ_CODEL_TARGET,
Tao Baod7db5942015-01-28 10:07:51 -0800532 TCA_FQ_CODEL_LIMIT,
533 TCA_FQ_CODEL_INTERVAL,
534 TCA_FQ_CODEL_ECN,
535 TCA_FQ_CODEL_FLOWS,
Tao Baod7db5942015-01-28 10:07:51 -0800536 TCA_FQ_CODEL_QUANTUM,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800537 TCA_FQ_CODEL_CE_THRESHOLD,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700538 TCA_FQ_CODEL_DROP_BATCH_SIZE,
Christopher Ferris106b3a82016-08-24 12:15:38 -0700539 TCA_FQ_CODEL_MEMORY_LIMIT,
Christopher Ferrisa4792612022-01-10 13:51:15 -0800540 TCA_FQ_CODEL_CE_THRESHOLD_SELECTOR,
541 TCA_FQ_CODEL_CE_THRESHOLD_MASK,
Tao Baod7db5942015-01-28 10:07:51 -0800542 __TCA_FQ_CODEL_MAX
Ben Cheng655a7c02013-10-16 16:09:24 -0700543};
Ben Cheng655a7c02013-10-16 16:09:24 -0700544#define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1)
Christopher Ferris38062f92014-07-09 15:33:25 -0700545enum {
Tao Baod7db5942015-01-28 10:07:51 -0800546 TCA_FQ_CODEL_XSTATS_QDISC,
547 TCA_FQ_CODEL_XSTATS_CLASS,
Ben Cheng655a7c02013-10-16 16:09:24 -0700548};
Christopher Ferris38062f92014-07-09 15:33:25 -0700549struct tc_fq_codel_qd_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800550 __u32 maxpacket;
551 __u32 drop_overlimit;
552 __u32 ecn_mark;
Tao Baod7db5942015-01-28 10:07:51 -0800553 __u32 new_flow_count;
554 __u32 new_flows_len;
555 __u32 old_flows_len;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800556 __u32 ce_mark;
Christopher Ferris106b3a82016-08-24 12:15:38 -0700557 __u32 memory_usage;
558 __u32 drop_overmemory;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800559};
Christopher Ferris38062f92014-07-09 15:33:25 -0700560struct tc_fq_codel_cl_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800561 __s32 deficit;
562 __u32 ldelay;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800563 __u32 count;
Tao Baod7db5942015-01-28 10:07:51 -0800564 __u32 lastcount;
565 __u32 dropping;
566 __s32 drop_next;
Christopher Ferris05d08e92016-02-04 13:16:38 -0800567};
Christopher Ferris38062f92014-07-09 15:33:25 -0700568struct tc_fq_codel_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800569 __u32 type;
570 union {
Christopher Ferris05d08e92016-02-04 13:16:38 -0800571 struct tc_fq_codel_qd_stats qdisc_stats;
Tao Baod7db5942015-01-28 10:07:51 -0800572 struct tc_fq_codel_cl_stats class_stats;
573 };
Ben Cheng655a7c02013-10-16 16:09:24 -0700574};
Christopher Ferris05d08e92016-02-04 13:16:38 -0800575enum {
Tao Baod7db5942015-01-28 10:07:51 -0800576 TCA_FQ_UNSPEC,
577 TCA_FQ_PLIMIT,
578 TCA_FQ_FLOW_PLIMIT,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800579 TCA_FQ_QUANTUM,
Tao Baod7db5942015-01-28 10:07:51 -0800580 TCA_FQ_INITIAL_QUANTUM,
581 TCA_FQ_RATE_ENABLE,
582 TCA_FQ_FLOW_DEFAULT_RATE,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800583 TCA_FQ_FLOW_MAX_RATE,
Tao Baod7db5942015-01-28 10:07:51 -0800584 TCA_FQ_BUCKETS_LOG,
585 TCA_FQ_FLOW_REFILL_DELAY,
Christopher Ferris05d08e92016-02-04 13:16:38 -0800586 TCA_FQ_ORPHAN_MASK,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800587 TCA_FQ_LOW_RATE_THRESHOLD,
Christopher Ferrisd842e432019-03-07 10:21:59 -0800588 TCA_FQ_CE_THRESHOLD,
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700589 TCA_FQ_TIMER_SLACK,
Christopher Ferris8177cdf2020-08-03 11:53:55 -0700590 TCA_FQ_HORIZON,
591 TCA_FQ_HORIZON_DROP,
Christopher Ferris0f795212024-01-17 14:17:28 -0800592 TCA_FQ_PRIOMAP,
593 TCA_FQ_WEIGHTS,
Tao Baod7db5942015-01-28 10:07:51 -0800594 __TCA_FQ_MAX
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800595};
Christopher Ferris38062f92014-07-09 15:33:25 -0700596#define TCA_FQ_MAX (__TCA_FQ_MAX - 1)
Christopher Ferris0f795212024-01-17 14:17:28 -0800597#define FQ_BANDS 3
598#define FQ_MIN_WEIGHT 16384
Christopher Ferris38062f92014-07-09 15:33:25 -0700599struct tc_fq_qd_stats {
Tao Baod7db5942015-01-28 10:07:51 -0800600 __u64 gc_flows;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800601 __u64 highprio_packets;
Tao Baod7db5942015-01-28 10:07:51 -0800602 __u64 tcp_retrans;
603 __u64 throttled;
604 __u64 flows_plimit;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800605 __u64 pkts_too_long;
Tao Baod7db5942015-01-28 10:07:51 -0800606 __u64 allocation_errors;
607 __s64 time_next_delayed_flow;
608 __u32 flows;
609 __u32 inactive_flows;
Tao Baod7db5942015-01-28 10:07:51 -0800610 __u32 throttled_flows;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800611 __u32 unthrottle_latency_ns;
Christopher Ferrisd842e432019-03-07 10:21:59 -0800612 __u64 ce_mark;
Christopher Ferris8177cdf2020-08-03 11:53:55 -0700613 __u64 horizon_drops;
614 __u64 horizon_caps;
Christopher Ferris0f795212024-01-17 14:17:28 -0800615 __u64 fastpath_packets;
616 __u64 band_drops[FQ_BANDS];
617 __u32 band_pkt_count[FQ_BANDS];
618 __u32 pad;
Christopher Ferris38062f92014-07-09 15:33:25 -0700619};
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800620enum {
Tao Baod7db5942015-01-28 10:07:51 -0800621 TCA_HHF_UNSPEC,
622 TCA_HHF_BACKLOG_LIMIT,
623 TCA_HHF_QUANTUM,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800624 TCA_HHF_HH_FLOWS_LIMIT,
Tao Baod7db5942015-01-28 10:07:51 -0800625 TCA_HHF_RESET_TIMEOUT,
626 TCA_HHF_ADMIT_BYTES,
627 TCA_HHF_EVICT_TIMEOUT,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800628 TCA_HHF_NON_HH_WEIGHT,
Tao Baod7db5942015-01-28 10:07:51 -0800629 __TCA_HHF_MAX
Christopher Ferris38062f92014-07-09 15:33:25 -0700630};
631#define TCA_HHF_MAX (__TCA_HHF_MAX - 1)
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800632struct tc_hhf_xstats {
Tao Baod7db5942015-01-28 10:07:51 -0800633 __u32 drop_overlimit;
634 __u32 hh_overlimit;
635 __u32 hh_tot_count;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800636 __u32 hh_cur_count;
Christopher Ferris38062f92014-07-09 15:33:25 -0700637};
638enum {
Tao Baod7db5942015-01-28 10:07:51 -0800639 TCA_PIE_UNSPEC,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800640 TCA_PIE_TARGET,
Tao Baod7db5942015-01-28 10:07:51 -0800641 TCA_PIE_LIMIT,
642 TCA_PIE_TUPDATE,
643 TCA_PIE_ALPHA,
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800644 TCA_PIE_BETA,
Tao Baod7db5942015-01-28 10:07:51 -0800645 TCA_PIE_ECN,
646 TCA_PIE_BYTEMODE,
Christopher Ferrisd32ca142020-02-04 16:16:51 -0800647 TCA_PIE_DQ_RATE_ESTIMATOR,
Tao Baod7db5942015-01-28 10:07:51 -0800648 __TCA_PIE_MAX
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800649};
Christopher Ferris38062f92014-07-09 15:33:25 -0700650#define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
651struct tc_pie_xstats {
Christopher Ferris24f97eb2019-05-20 12:58:13 -0700652 __u64 prob;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800653 __u32 delay;
Tao Baod7db5942015-01-28 10:07:51 -0800654 __u32 avg_dq_rate;
Christopher Ferrisd32ca142020-02-04 16:16:51 -0800655 __u32 dq_rate_estimating;
Tao Baod7db5942015-01-28 10:07:51 -0800656 __u32 packets_in;
657 __u32 dropped;
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800658 __u32 overlimit;
Tao Baod7db5942015-01-28 10:07:51 -0800659 __u32 maxq;
660 __u32 ecn_mark;
Christopher Ferris38062f92014-07-09 15:33:25 -0700661};
Christopher Ferrisbb9fcb42020-04-06 11:38:04 -0700662enum {
663 TCA_FQ_PIE_UNSPEC,
664 TCA_FQ_PIE_LIMIT,
665 TCA_FQ_PIE_FLOWS,
666 TCA_FQ_PIE_TARGET,
667 TCA_FQ_PIE_TUPDATE,
668 TCA_FQ_PIE_ALPHA,
669 TCA_FQ_PIE_BETA,
670 TCA_FQ_PIE_QUANTUM,
671 TCA_FQ_PIE_MEMORY_LIMIT,
672 TCA_FQ_PIE_ECN_PROB,
673 TCA_FQ_PIE_ECN,
674 TCA_FQ_PIE_BYTEMODE,
675 TCA_FQ_PIE_DQ_RATE_ESTIMATOR,
676 __TCA_FQ_PIE_MAX
677};
678#define TCA_FQ_PIE_MAX (__TCA_FQ_PIE_MAX - 1)
679struct tc_fq_pie_xstats {
680 __u32 packets_in;
681 __u32 dropped;
682 __u32 overlimit;
683 __u32 overmemory;
684 __u32 ecn_mark;
685 __u32 new_flow_count;
686 __u32 new_flows_len;
687 __u32 old_flows_len;
688 __u32 memory_usage;
689};
Christopher Ferris934ec942018-01-31 15:29:16 -0800690struct tc_cbs_qopt {
691 __u8 offload;
692 __u8 _pad[3];
693 __s32 hicredit;
694 __s32 locredit;
695 __s32 idleslope;
696 __s32 sendslope;
697};
698enum {
699 TCA_CBS_UNSPEC,
700 TCA_CBS_PARMS,
701 __TCA_CBS_MAX,
702};
703#define TCA_CBS_MAX (__TCA_CBS_MAX - 1)
Christopher Ferris9ce28842018-10-25 12:11:39 -0700704struct tc_etf_qopt {
705 __s32 delta;
706 __s32 clockid;
707 __u32 flags;
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700708#define TC_ETF_DEADLINE_MODE_ON _BITUL(0)
709#define TC_ETF_OFFLOAD_ON _BITUL(1)
710#define TC_ETF_SKIP_SOCK_CHECK _BITUL(2)
Christopher Ferris9ce28842018-10-25 12:11:39 -0700711};
712enum {
713 TCA_ETF_UNSPEC,
714 TCA_ETF_PARMS,
715 __TCA_ETF_MAX,
716};
717#define TCA_ETF_MAX (__TCA_ETF_MAX - 1)
718enum {
719 TCA_CAKE_UNSPEC,
720 TCA_CAKE_PAD,
721 TCA_CAKE_BASE_RATE64,
722 TCA_CAKE_DIFFSERV_MODE,
723 TCA_CAKE_ATM,
724 TCA_CAKE_FLOW_MODE,
725 TCA_CAKE_OVERHEAD,
726 TCA_CAKE_RTT,
727 TCA_CAKE_TARGET,
728 TCA_CAKE_AUTORATE,
729 TCA_CAKE_MEMORY,
730 TCA_CAKE_NAT,
731 TCA_CAKE_RAW,
732 TCA_CAKE_WASH,
733 TCA_CAKE_MPU,
734 TCA_CAKE_INGRESS,
735 TCA_CAKE_ACK_FILTER,
736 TCA_CAKE_SPLIT_GSO,
Christopher Ferris24f97eb2019-05-20 12:58:13 -0700737 TCA_CAKE_FWMARK,
Christopher Ferris9ce28842018-10-25 12:11:39 -0700738 __TCA_CAKE_MAX
739};
740#define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1)
741enum {
742 __TCA_CAKE_STATS_INVALID,
743 TCA_CAKE_STATS_PAD,
744 TCA_CAKE_STATS_CAPACITY_ESTIMATE64,
745 TCA_CAKE_STATS_MEMORY_LIMIT,
746 TCA_CAKE_STATS_MEMORY_USED,
747 TCA_CAKE_STATS_AVG_NETOFF,
748 TCA_CAKE_STATS_MIN_NETLEN,
749 TCA_CAKE_STATS_MAX_NETLEN,
750 TCA_CAKE_STATS_MIN_ADJLEN,
751 TCA_CAKE_STATS_MAX_ADJLEN,
752 TCA_CAKE_STATS_TIN_STATS,
753 TCA_CAKE_STATS_DEFICIT,
754 TCA_CAKE_STATS_COBALT_COUNT,
755 TCA_CAKE_STATS_DROPPING,
756 TCA_CAKE_STATS_DROP_NEXT_US,
757 TCA_CAKE_STATS_P_DROP,
758 TCA_CAKE_STATS_BLUE_TIMER_US,
759 __TCA_CAKE_STATS_MAX
760};
761#define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1)
762enum {
763 __TCA_CAKE_TIN_STATS_INVALID,
764 TCA_CAKE_TIN_STATS_PAD,
765 TCA_CAKE_TIN_STATS_SENT_PACKETS,
766 TCA_CAKE_TIN_STATS_SENT_BYTES64,
767 TCA_CAKE_TIN_STATS_DROPPED_PACKETS,
768 TCA_CAKE_TIN_STATS_DROPPED_BYTES64,
769 TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS,
770 TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64,
771 TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS,
772 TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64,
773 TCA_CAKE_TIN_STATS_BACKLOG_PACKETS,
774 TCA_CAKE_TIN_STATS_BACKLOG_BYTES,
775 TCA_CAKE_TIN_STATS_THRESHOLD_RATE64,
776 TCA_CAKE_TIN_STATS_TARGET_US,
777 TCA_CAKE_TIN_STATS_INTERVAL_US,
778 TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS,
779 TCA_CAKE_TIN_STATS_WAY_MISSES,
780 TCA_CAKE_TIN_STATS_WAY_COLLISIONS,
781 TCA_CAKE_TIN_STATS_PEAK_DELAY_US,
782 TCA_CAKE_TIN_STATS_AVG_DELAY_US,
783 TCA_CAKE_TIN_STATS_BASE_DELAY_US,
784 TCA_CAKE_TIN_STATS_SPARSE_FLOWS,
785 TCA_CAKE_TIN_STATS_BULK_FLOWS,
786 TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS,
787 TCA_CAKE_TIN_STATS_MAX_SKBLEN,
788 TCA_CAKE_TIN_STATS_FLOW_QUANTUM,
789 __TCA_CAKE_TIN_STATS_MAX
790};
791#define TCA_CAKE_TIN_STATS_MAX (__TCA_CAKE_TIN_STATS_MAX - 1)
792#define TC_CAKE_MAX_TINS (8)
793enum {
794 CAKE_FLOW_NONE = 0,
795 CAKE_FLOW_SRC_IP,
796 CAKE_FLOW_DST_IP,
797 CAKE_FLOW_HOSTS,
798 CAKE_FLOW_FLOWS,
799 CAKE_FLOW_DUAL_SRC,
800 CAKE_FLOW_DUAL_DST,
801 CAKE_FLOW_TRIPLE,
802 CAKE_FLOW_MAX,
803};
804enum {
805 CAKE_DIFFSERV_DIFFSERV3 = 0,
806 CAKE_DIFFSERV_DIFFSERV4,
807 CAKE_DIFFSERV_DIFFSERV8,
808 CAKE_DIFFSERV_BESTEFFORT,
809 CAKE_DIFFSERV_PRECEDENCE,
810 CAKE_DIFFSERV_MAX
811};
812enum {
813 CAKE_ACK_NONE = 0,
814 CAKE_ACK_FILTER,
815 CAKE_ACK_AGGRESSIVE,
816 CAKE_ACK_MAX
817};
818enum {
819 CAKE_ATM_NONE = 0,
820 CAKE_ATM_ATM,
821 CAKE_ATM_PTM,
822 CAKE_ATM_MAX
823};
Christopher Ferris86a48372019-01-10 14:14:59 -0800824enum {
825 TC_TAPRIO_CMD_SET_GATES = 0x00,
826 TC_TAPRIO_CMD_SET_AND_HOLD = 0x01,
827 TC_TAPRIO_CMD_SET_AND_RELEASE = 0x02,
828};
829enum {
830 TCA_TAPRIO_SCHED_ENTRY_UNSPEC,
831 TCA_TAPRIO_SCHED_ENTRY_INDEX,
832 TCA_TAPRIO_SCHED_ENTRY_CMD,
833 TCA_TAPRIO_SCHED_ENTRY_GATE_MASK,
834 TCA_TAPRIO_SCHED_ENTRY_INTERVAL,
835 __TCA_TAPRIO_SCHED_ENTRY_MAX,
836};
837#define TCA_TAPRIO_SCHED_ENTRY_MAX (__TCA_TAPRIO_SCHED_ENTRY_MAX - 1)
838enum {
839 TCA_TAPRIO_SCHED_UNSPEC,
840 TCA_TAPRIO_SCHED_ENTRY,
841 __TCA_TAPRIO_SCHED_MAX,
842};
843#define TCA_TAPRIO_SCHED_MAX (__TCA_TAPRIO_SCHED_MAX - 1)
Christopher Ferrisaf09c702020-06-01 20:29:29 -0700844#define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0)
845#define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1)
Christopher Ferris86a48372019-01-10 14:14:59 -0800846enum {
Christopher Ferris6cd53a52022-12-12 23:39:16 +0000847 TCA_TAPRIO_TC_ENTRY_UNSPEC,
848 TCA_TAPRIO_TC_ENTRY_INDEX,
849 TCA_TAPRIO_TC_ENTRY_MAX_SDU,
Christopher Ferris37c3f3c2023-07-10 10:59:05 -0700850 TCA_TAPRIO_TC_ENTRY_FP,
Christopher Ferris6cd53a52022-12-12 23:39:16 +0000851 __TCA_TAPRIO_TC_ENTRY_CNT,
852 TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1)
853};
854enum {
Christopher Ferris8666d042023-09-06 14:55:31 -0700855 TCA_TAPRIO_OFFLOAD_STATS_PAD = 1,
856 TCA_TAPRIO_OFFLOAD_STATS_WINDOW_DROPS,
857 TCA_TAPRIO_OFFLOAD_STATS_TX_OVERRUNS,
858 __TCA_TAPRIO_OFFLOAD_STATS_CNT,
859 TCA_TAPRIO_OFFLOAD_STATS_MAX = (__TCA_TAPRIO_OFFLOAD_STATS_CNT - 1)
860};
861enum {
Christopher Ferris86a48372019-01-10 14:14:59 -0800862 TCA_TAPRIO_ATTR_UNSPEC,
863 TCA_TAPRIO_ATTR_PRIOMAP,
864 TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
865 TCA_TAPRIO_ATTR_SCHED_BASE_TIME,
866 TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY,
867 TCA_TAPRIO_ATTR_SCHED_CLOCKID,
868 TCA_TAPRIO_PAD,
Christopher Ferrisaeddbcf2019-07-08 12:45:46 -0700869 TCA_TAPRIO_ATTR_ADMIN_SCHED,
870 TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME,
871 TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,
Christopher Ferrisb8a95e22019-10-02 18:29:20 -0700872 TCA_TAPRIO_ATTR_FLAGS,
873 TCA_TAPRIO_ATTR_TXTIME_DELAY,
Christopher Ferris6cd53a52022-12-12 23:39:16 +0000874 TCA_TAPRIO_ATTR_TC_ENTRY,
Christopher Ferris86a48372019-01-10 14:14:59 -0800875 __TCA_TAPRIO_ATTR_MAX,
876};
877#define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
Christopher Ferrisbb9fcb42020-04-06 11:38:04 -0700878#define TCQ_ETS_MAX_BANDS 16
879enum {
880 TCA_ETS_UNSPEC,
881 TCA_ETS_NBANDS,
882 TCA_ETS_NSTRICT,
883 TCA_ETS_QUANTA,
884 TCA_ETS_QUANTA_BAND,
885 TCA_ETS_PRIOMAP,
886 TCA_ETS_PRIOMAP_BAND,
887 __TCA_ETS_MAX,
888};
889#define TCA_ETS_MAX (__TCA_ETS_MAX - 1)
Christopher Ferris6a9755d2017-01-13 14:09:31 -0800890#endif