1 /* 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 */ 7 #ifndef __LINUX_PKT_SCHED_H 8 #define __LINUX_PKT_SCHED_H 9 #include <linux/const.h> 10 #include <linux/types.h> 11 #define TC_PRIO_BESTEFFORT 0 12 #define TC_PRIO_FILLER 1 13 #define TC_PRIO_BULK 2 14 #define TC_PRIO_INTERACTIVE_BULK 4 15 #define TC_PRIO_INTERACTIVE 6 16 #define TC_PRIO_CONTROL 7 17 #define TC_PRIO_MAX 15 18 struct tc_stats { 19 __u64 bytes; 20 __u32 packets; 21 __u32 drops; 22 __u32 overlimits; 23 __u32 bps; 24 __u32 pps; 25 __u32 qlen; 26 __u32 backlog; 27 }; 28 struct tc_estimator { 29 signed char interval; 30 unsigned char ewma_log; 31 }; 32 #define TC_H_MAJ_MASK (0xFFFF0000U) 33 #define TC_H_MIN_MASK (0x0000FFFFU) 34 #define TC_H_MAJ(h) ((h) & TC_H_MAJ_MASK) 35 #define TC_H_MIN(h) ((h) & TC_H_MIN_MASK) 36 #define TC_H_MAKE(maj,min) (((maj) & TC_H_MAJ_MASK) | ((min) & TC_H_MIN_MASK)) 37 #define TC_H_UNSPEC (0U) 38 #define TC_H_ROOT (0xFFFFFFFFU) 39 #define TC_H_INGRESS (0xFFFFFFF1U) 40 #define TC_H_CLSACT TC_H_INGRESS 41 #define TC_H_MIN_PRIORITY 0xFFE0U 42 #define TC_H_MIN_INGRESS 0xFFF2U 43 #define TC_H_MIN_EGRESS 0xFFF3U 44 enum tc_link_layer { 45 TC_LINKLAYER_UNAWARE, 46 TC_LINKLAYER_ETHERNET, 47 TC_LINKLAYER_ATM, 48 }; 49 #define TC_LINKLAYER_MASK 0x0F 50 struct tc_ratespec { 51 unsigned char cell_log; 52 __u8 linklayer; 53 unsigned short overhead; 54 short cell_align; 55 unsigned short mpu; 56 __u32 rate; 57 }; 58 #define TC_RTAB_SIZE 1024 59 struct tc_sizespec { 60 unsigned char cell_log; 61 unsigned char size_log; 62 short cell_align; 63 int overhead; 64 unsigned int linklayer; 65 unsigned int mpu; 66 unsigned int mtu; 67 unsigned int tsize; 68 }; 69 enum { 70 TCA_STAB_UNSPEC, 71 TCA_STAB_BASE, 72 TCA_STAB_DATA, 73 __TCA_STAB_MAX 74 }; 75 #define TCA_STAB_MAX (__TCA_STAB_MAX - 1) 76 struct tc_fifo_qopt { 77 __u32 limit; 78 }; 79 #define SKBPRIO_MAX_PRIORITY 64 80 struct tc_skbprio_qopt { 81 __u32 limit; 82 }; 83 #define TCQ_PRIO_BANDS 16 84 #define TCQ_MIN_PRIO_BANDS 2 85 struct tc_prio_qopt { 86 int bands; 87 __u8 priomap[TC_PRIO_MAX + 1]; 88 }; 89 struct tc_multiq_qopt { 90 __u16 bands; 91 __u16 max_bands; 92 }; 93 #define TCQ_PLUG_BUFFER 0 94 #define TCQ_PLUG_RELEASE_ONE 1 95 #define TCQ_PLUG_RELEASE_INDEFINITE 2 96 #define TCQ_PLUG_LIMIT 3 97 struct tc_plug_qopt { 98 int action; 99 __u32 limit; 100 }; 101 struct tc_tbf_qopt { 102 struct tc_ratespec rate; 103 struct tc_ratespec peakrate; 104 __u32 limit; 105 __u32 buffer; 106 __u32 mtu; 107 }; 108 enum { 109 TCA_TBF_UNSPEC, 110 TCA_TBF_PARMS, 111 TCA_TBF_RTAB, 112 TCA_TBF_PTAB, 113 TCA_TBF_RATE64, 114 TCA_TBF_PRATE64, 115 TCA_TBF_BURST, 116 TCA_TBF_PBURST, 117 TCA_TBF_PAD, 118 __TCA_TBF_MAX, 119 }; 120 #define TCA_TBF_MAX (__TCA_TBF_MAX - 1) 121 struct tc_sfq_qopt { 122 unsigned quantum; 123 int perturb_period; 124 __u32 limit; 125 unsigned divisor; 126 unsigned flows; 127 }; 128 struct tc_sfqred_stats { 129 __u32 prob_drop; 130 __u32 forced_drop; 131 __u32 prob_mark; 132 __u32 forced_mark; 133 __u32 prob_mark_head; 134 __u32 forced_mark_head; 135 }; 136 struct tc_sfq_qopt_v1 { 137 struct tc_sfq_qopt v0; 138 unsigned int depth; 139 unsigned int headdrop; 140 __u32 limit; 141 __u32 qth_min; 142 __u32 qth_max; 143 unsigned char Wlog; 144 unsigned char Plog; 145 unsigned char Scell_log; 146 unsigned char flags; 147 __u32 max_P; 148 struct tc_sfqred_stats stats; 149 }; 150 struct tc_sfq_xstats { 151 __s32 allot; 152 }; 153 enum { 154 TCA_RED_UNSPEC, 155 TCA_RED_PARMS, 156 TCA_RED_STAB, 157 TCA_RED_MAX_P, 158 TCA_RED_FLAGS, 159 TCA_RED_EARLY_DROP_BLOCK, 160 TCA_RED_MARK_BLOCK, 161 __TCA_RED_MAX, 162 }; 163 #define TCA_RED_MAX (__TCA_RED_MAX - 1) 164 struct tc_red_qopt { 165 __u32 limit; 166 __u32 qth_min; 167 __u32 qth_max; 168 unsigned char Wlog; 169 unsigned char Plog; 170 unsigned char Scell_log; 171 unsigned char flags; 172 #define TC_RED_ECN 1 173 #define TC_RED_HARDDROP 2 174 #define TC_RED_ADAPTATIVE 4 175 #define TC_RED_NODROP 8 176 }; 177 #define TC_RED_HISTORIC_FLAGS (TC_RED_ECN | TC_RED_HARDDROP | TC_RED_ADAPTATIVE) 178 struct tc_red_xstats { 179 __u32 early; 180 __u32 pdrop; 181 __u32 other; 182 __u32 marked; 183 }; 184 #define MAX_DPs 16 185 enum { 186 TCA_GRED_UNSPEC, 187 TCA_GRED_PARMS, 188 TCA_GRED_STAB, 189 TCA_GRED_DPS, 190 TCA_GRED_MAX_P, 191 TCA_GRED_LIMIT, 192 TCA_GRED_VQ_LIST, 193 __TCA_GRED_MAX, 194 }; 195 #define TCA_GRED_MAX (__TCA_GRED_MAX - 1) 196 enum { 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) 202 enum { 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) 219 struct tc_gred_qopt { 220 __u32 limit; 221 __u32 qth_min; 222 __u32 qth_max; 223 __u32 DP; 224 __u32 backlog; 225 __u32 qave; 226 __u32 forced; 227 __u32 early; 228 __u32 other; 229 __u32 pdrop; 230 __u8 Wlog; 231 __u8 Plog; 232 __u8 Scell_log; 233 __u8 prio; 234 __u32 packets; 235 __u32 bytesin; 236 }; 237 struct tc_gred_sopt { 238 __u32 DPs; 239 __u32 def_DP; 240 __u8 grio; 241 __u8 flags; 242 __u16 pad1; 243 }; 244 enum { 245 TCA_CHOKE_UNSPEC, 246 TCA_CHOKE_PARMS, 247 TCA_CHOKE_STAB, 248 TCA_CHOKE_MAX_P, 249 __TCA_CHOKE_MAX, 250 }; 251 #define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1) 252 struct tc_choke_qopt { 253 __u32 limit; 254 __u32 qth_min; 255 __u32 qth_max; 256 unsigned char Wlog; 257 unsigned char Plog; 258 unsigned char Scell_log; 259 unsigned char flags; 260 }; 261 struct tc_choke_xstats { 262 __u32 early; 263 __u32 pdrop; 264 __u32 other; 265 __u32 marked; 266 __u32 matched; 267 }; 268 #define TC_HTB_NUMPRIO 8 269 #define TC_HTB_MAXDEPTH 8 270 #define TC_HTB_PROTOVER 3 271 struct tc_htb_opt { 272 struct tc_ratespec rate; 273 struct tc_ratespec ceil; 274 __u32 buffer; 275 __u32 cbuffer; 276 __u32 quantum; 277 __u32 level; 278 __u32 prio; 279 }; 280 struct tc_htb_glob { 281 __u32 version; 282 __u32 rate2quantum; 283 __u32 defcls; 284 __u32 debug; 285 __u32 direct_pkts; 286 }; 287 enum { 288 TCA_HTB_UNSPEC, 289 TCA_HTB_PARMS, 290 TCA_HTB_INIT, 291 TCA_HTB_CTAB, 292 TCA_HTB_RTAB, 293 TCA_HTB_DIRECT_QLEN, 294 TCA_HTB_RATE64, 295 TCA_HTB_CEIL64, 296 TCA_HTB_PAD, 297 TCA_HTB_OFFLOAD, 298 __TCA_HTB_MAX, 299 }; 300 #define TCA_HTB_MAX (__TCA_HTB_MAX - 1) 301 struct tc_htb_xstats { 302 __u32 lends; 303 __u32 borrows; 304 __u32 giants; 305 __s32 tokens; 306 __s32 ctokens; 307 }; 308 struct tc_hfsc_qopt { 309 __u16 defcls; 310 }; 311 struct tc_service_curve { 312 __u32 m1; 313 __u32 d; 314 __u32 m2; 315 }; 316 struct tc_hfsc_stats { 317 __u64 work; 318 __u64 rtwork; 319 __u32 period; 320 __u32 level; 321 }; 322 enum { 323 TCA_HFSC_UNSPEC, 324 TCA_HFSC_RSC, 325 TCA_HFSC_FSC, 326 TCA_HFSC_USC, 327 __TCA_HFSC_MAX, 328 }; 329 #define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1) 330 enum { 331 TCA_NETEM_UNSPEC, 332 TCA_NETEM_CORR, 333 TCA_NETEM_DELAY_DIST, 334 TCA_NETEM_REORDER, 335 TCA_NETEM_CORRUPT, 336 TCA_NETEM_LOSS, 337 TCA_NETEM_RATE, 338 TCA_NETEM_ECN, 339 TCA_NETEM_RATE64, 340 TCA_NETEM_PAD, 341 TCA_NETEM_LATENCY64, 342 TCA_NETEM_JITTER64, 343 TCA_NETEM_SLOT, 344 TCA_NETEM_SLOT_DIST, 345 TCA_NETEM_PRNG_SEED, 346 __TCA_NETEM_MAX, 347 }; 348 #define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1) 349 struct tc_netem_qopt { 350 __u32 latency; 351 __u32 limit; 352 __u32 loss; 353 __u32 gap; 354 __u32 duplicate; 355 __u32 jitter; 356 }; 357 struct tc_netem_corr { 358 __u32 delay_corr; 359 __u32 loss_corr; 360 __u32 dup_corr; 361 }; 362 struct tc_netem_reorder { 363 __u32 probability; 364 __u32 correlation; 365 }; 366 struct tc_netem_corrupt { 367 __u32 probability; 368 __u32 correlation; 369 }; 370 struct tc_netem_rate { 371 __u32 rate; 372 __s32 packet_overhead; 373 __u32 cell_size; 374 __s32 cell_overhead; 375 }; 376 struct tc_netem_slot { 377 __s64 min_delay; 378 __s64 max_delay; 379 __s32 max_packets; 380 __s32 max_bytes; 381 __s64 dist_delay; 382 __s64 dist_jitter; 383 }; 384 enum { 385 NETEM_LOSS_UNSPEC, 386 NETEM_LOSS_GI, 387 NETEM_LOSS_GE, 388 __NETEM_LOSS_MAX 389 }; 390 #define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1) 391 struct tc_netem_gimodel { 392 __u32 p13; 393 __u32 p31; 394 __u32 p32; 395 __u32 p14; 396 __u32 p23; 397 }; 398 struct tc_netem_gemodel { 399 __u32 p; 400 __u32 r; 401 __u32 h; 402 __u32 k1; 403 }; 404 #define NETEM_DIST_SCALE 8192 405 #define NETEM_DIST_MAX 16384 406 enum { 407 TCA_DRR_UNSPEC, 408 TCA_DRR_QUANTUM, 409 __TCA_DRR_MAX 410 }; 411 #define TCA_DRR_MAX (__TCA_DRR_MAX - 1) 412 struct tc_drr_stats { 413 __u32 deficit; 414 }; 415 #define TC_QOPT_BITMASK 15 416 #define TC_QOPT_MAX_QUEUE 16 417 enum { 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) 423 enum { 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) 429 enum { 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) 435 enum { 436 TC_FP_EXPRESS = 1, 437 TC_FP_PREEMPTIBLE = 2, 438 }; 439 struct tc_mqprio_qopt { 440 __u8 num_tc; 441 __u8 prio_tc_map[TC_QOPT_BITMASK + 1]; 442 __u8 hw; 443 __u16 count[TC_QOPT_MAX_QUEUE]; 444 __u16 offset[TC_QOPT_MAX_QUEUE]; 445 }; 446 #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 450 enum { 451 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 }; 457 enum { 458 TCA_MQPRIO_UNSPEC, 459 TCA_MQPRIO_MODE, 460 TCA_MQPRIO_SHAPER, 461 TCA_MQPRIO_MIN_RATE64, 462 TCA_MQPRIO_MAX_RATE64, 463 TCA_MQPRIO_TC_ENTRY, 464 __TCA_MQPRIO_MAX, 465 }; 466 #define TCA_MQPRIO_MAX (__TCA_MQPRIO_MAX - 1) 467 enum { 468 TCA_SFB_UNSPEC, 469 TCA_SFB_PARMS, 470 __TCA_SFB_MAX, 471 }; 472 #define TCA_SFB_MAX (__TCA_SFB_MAX - 1) 473 struct tc_sfb_qopt { 474 __u32 rehash_interval; 475 __u32 warmup_time; 476 __u32 max; 477 __u32 bin_size; 478 __u32 increment; 479 __u32 decrement; 480 __u32 limit; 481 __u32 penalty_rate; 482 __u32 penalty_burst; 483 }; 484 struct tc_sfb_xstats { 485 __u32 earlydrop; 486 __u32 penaltydrop; 487 __u32 bucketdrop; 488 __u32 queuedrop; 489 __u32 childdrop; 490 __u32 marked; 491 __u32 maxqlen; 492 __u32 maxprob; 493 __u32 avgprob; 494 }; 495 #define SFB_MAX_PROB 0xFFFF 496 enum { 497 TCA_QFQ_UNSPEC, 498 TCA_QFQ_WEIGHT, 499 TCA_QFQ_LMAX, 500 __TCA_QFQ_MAX 501 }; 502 #define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1) 503 struct tc_qfq_stats { 504 __u32 weight; 505 __u32 lmax; 506 }; 507 enum { 508 TCA_CODEL_UNSPEC, 509 TCA_CODEL_TARGET, 510 TCA_CODEL_LIMIT, 511 TCA_CODEL_INTERVAL, 512 TCA_CODEL_ECN, 513 TCA_CODEL_CE_THRESHOLD, 514 __TCA_CODEL_MAX 515 }; 516 #define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1) 517 struct tc_codel_xstats { 518 __u32 maxpacket; 519 __u32 count; 520 __u32 lastcount; 521 __u32 ldelay; 522 __s32 drop_next; 523 __u32 drop_overlimit; 524 __u32 ecn_mark; 525 __u32 dropping; 526 __u32 ce_mark; 527 }; 528 #define FQ_CODEL_QUANTUM_MAX (1 << 20) 529 enum { 530 TCA_FQ_CODEL_UNSPEC, 531 TCA_FQ_CODEL_TARGET, 532 TCA_FQ_CODEL_LIMIT, 533 TCA_FQ_CODEL_INTERVAL, 534 TCA_FQ_CODEL_ECN, 535 TCA_FQ_CODEL_FLOWS, 536 TCA_FQ_CODEL_QUANTUM, 537 TCA_FQ_CODEL_CE_THRESHOLD, 538 TCA_FQ_CODEL_DROP_BATCH_SIZE, 539 TCA_FQ_CODEL_MEMORY_LIMIT, 540 TCA_FQ_CODEL_CE_THRESHOLD_SELECTOR, 541 TCA_FQ_CODEL_CE_THRESHOLD_MASK, 542 __TCA_FQ_CODEL_MAX 543 }; 544 #define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1) 545 enum { 546 TCA_FQ_CODEL_XSTATS_QDISC, 547 TCA_FQ_CODEL_XSTATS_CLASS, 548 }; 549 struct tc_fq_codel_qd_stats { 550 __u32 maxpacket; 551 __u32 drop_overlimit; 552 __u32 ecn_mark; 553 __u32 new_flow_count; 554 __u32 new_flows_len; 555 __u32 old_flows_len; 556 __u32 ce_mark; 557 __u32 memory_usage; 558 __u32 drop_overmemory; 559 }; 560 struct tc_fq_codel_cl_stats { 561 __s32 deficit; 562 __u32 ldelay; 563 __u32 count; 564 __u32 lastcount; 565 __u32 dropping; 566 __s32 drop_next; 567 }; 568 struct tc_fq_codel_xstats { 569 __u32 type; 570 union { 571 struct tc_fq_codel_qd_stats qdisc_stats; 572 struct tc_fq_codel_cl_stats class_stats; 573 }; 574 }; 575 enum { 576 TCA_FQ_UNSPEC, 577 TCA_FQ_PLIMIT, 578 TCA_FQ_FLOW_PLIMIT, 579 TCA_FQ_QUANTUM, 580 TCA_FQ_INITIAL_QUANTUM, 581 TCA_FQ_RATE_ENABLE, 582 TCA_FQ_FLOW_DEFAULT_RATE, 583 TCA_FQ_FLOW_MAX_RATE, 584 TCA_FQ_BUCKETS_LOG, 585 TCA_FQ_FLOW_REFILL_DELAY, 586 TCA_FQ_ORPHAN_MASK, 587 TCA_FQ_LOW_RATE_THRESHOLD, 588 TCA_FQ_CE_THRESHOLD, 589 TCA_FQ_TIMER_SLACK, 590 TCA_FQ_HORIZON, 591 TCA_FQ_HORIZON_DROP, 592 TCA_FQ_PRIOMAP, 593 TCA_FQ_WEIGHTS, 594 __TCA_FQ_MAX 595 }; 596 #define TCA_FQ_MAX (__TCA_FQ_MAX - 1) 597 #define FQ_BANDS 3 598 #define FQ_MIN_WEIGHT 16384 599 struct tc_fq_qd_stats { 600 __u64 gc_flows; 601 __u64 highprio_packets; 602 __u64 tcp_retrans; 603 __u64 throttled; 604 __u64 flows_plimit; 605 __u64 pkts_too_long; 606 __u64 allocation_errors; 607 __s64 time_next_delayed_flow; 608 __u32 flows; 609 __u32 inactive_flows; 610 __u32 throttled_flows; 611 __u32 unthrottle_latency_ns; 612 __u64 ce_mark; 613 __u64 horizon_drops; 614 __u64 horizon_caps; 615 __u64 fastpath_packets; 616 __u64 band_drops[FQ_BANDS]; 617 __u32 band_pkt_count[FQ_BANDS]; 618 __u32 pad; 619 }; 620 enum { 621 TCA_HHF_UNSPEC, 622 TCA_HHF_BACKLOG_LIMIT, 623 TCA_HHF_QUANTUM, 624 TCA_HHF_HH_FLOWS_LIMIT, 625 TCA_HHF_RESET_TIMEOUT, 626 TCA_HHF_ADMIT_BYTES, 627 TCA_HHF_EVICT_TIMEOUT, 628 TCA_HHF_NON_HH_WEIGHT, 629 __TCA_HHF_MAX 630 }; 631 #define TCA_HHF_MAX (__TCA_HHF_MAX - 1) 632 struct tc_hhf_xstats { 633 __u32 drop_overlimit; 634 __u32 hh_overlimit; 635 __u32 hh_tot_count; 636 __u32 hh_cur_count; 637 }; 638 enum { 639 TCA_PIE_UNSPEC, 640 TCA_PIE_TARGET, 641 TCA_PIE_LIMIT, 642 TCA_PIE_TUPDATE, 643 TCA_PIE_ALPHA, 644 TCA_PIE_BETA, 645 TCA_PIE_ECN, 646 TCA_PIE_BYTEMODE, 647 TCA_PIE_DQ_RATE_ESTIMATOR, 648 __TCA_PIE_MAX 649 }; 650 #define TCA_PIE_MAX (__TCA_PIE_MAX - 1) 651 struct tc_pie_xstats { 652 __u64 prob; 653 __u32 delay; 654 __u32 avg_dq_rate; 655 __u32 dq_rate_estimating; 656 __u32 packets_in; 657 __u32 dropped; 658 __u32 overlimit; 659 __u32 maxq; 660 __u32 ecn_mark; 661 }; 662 enum { 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) 679 struct 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 }; 690 struct tc_cbs_qopt { 691 __u8 offload; 692 __u8 _pad[3]; 693 __s32 hicredit; 694 __s32 locredit; 695 __s32 idleslope; 696 __s32 sendslope; 697 }; 698 enum { 699 TCA_CBS_UNSPEC, 700 TCA_CBS_PARMS, 701 __TCA_CBS_MAX, 702 }; 703 #define TCA_CBS_MAX (__TCA_CBS_MAX - 1) 704 struct tc_etf_qopt { 705 __s32 delta; 706 __s32 clockid; 707 __u32 flags; 708 #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) 711 }; 712 enum { 713 TCA_ETF_UNSPEC, 714 TCA_ETF_PARMS, 715 __TCA_ETF_MAX, 716 }; 717 #define TCA_ETF_MAX (__TCA_ETF_MAX - 1) 718 enum { 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, 737 TCA_CAKE_FWMARK, 738 __TCA_CAKE_MAX 739 }; 740 #define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1) 741 enum { 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) 762 enum { 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) 793 enum { 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 }; 804 enum { 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 }; 812 enum { 813 CAKE_ACK_NONE = 0, 814 CAKE_ACK_FILTER, 815 CAKE_ACK_AGGRESSIVE, 816 CAKE_ACK_MAX 817 }; 818 enum { 819 CAKE_ATM_NONE = 0, 820 CAKE_ATM_ATM, 821 CAKE_ATM_PTM, 822 CAKE_ATM_MAX 823 }; 824 enum { 825 TC_TAPRIO_CMD_SET_GATES = 0x00, 826 TC_TAPRIO_CMD_SET_AND_HOLD = 0x01, 827 TC_TAPRIO_CMD_SET_AND_RELEASE = 0x02, 828 }; 829 enum { 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) 838 enum { 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) 844 #define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0) 845 #define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1) 846 enum { 847 TCA_TAPRIO_TC_ENTRY_UNSPEC, 848 TCA_TAPRIO_TC_ENTRY_INDEX, 849 TCA_TAPRIO_TC_ENTRY_MAX_SDU, 850 TCA_TAPRIO_TC_ENTRY_FP, 851 __TCA_TAPRIO_TC_ENTRY_CNT, 852 TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1) 853 }; 854 enum { 855 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 }; 861 enum { 862 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, 869 TCA_TAPRIO_ATTR_ADMIN_SCHED, 870 TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME, 871 TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION, 872 TCA_TAPRIO_ATTR_FLAGS, 873 TCA_TAPRIO_ATTR_TXTIME_DELAY, 874 TCA_TAPRIO_ATTR_TC_ENTRY, 875 __TCA_TAPRIO_ATTR_MAX, 876 }; 877 #define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1) 878 #define TCQ_ETS_MAX_BANDS 16 879 enum { 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) 890 #endif 891