1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19 #ifndef __LINUX_PKT_SCHED_H 20 #define __LINUX_PKT_SCHED_H 21 #include <linux/const.h> 22 #include <linux/types.h> 23 #define TC_PRIO_BESTEFFORT 0 24 #define TC_PRIO_FILLER 1 25 #define TC_PRIO_BULK 2 26 #define TC_PRIO_INTERACTIVE_BULK 4 27 #define TC_PRIO_INTERACTIVE 6 28 #define TC_PRIO_CONTROL 7 29 #define TC_PRIO_MAX 15 30 struct tc_stats { 31 __u64 bytes; 32 __u32 packets; 33 __u32 drops; 34 __u32 overlimits; 35 __u32 bps; 36 __u32 pps; 37 __u32 qlen; 38 __u32 backlog; 39 }; 40 struct tc_estimator { 41 signed char interval; 42 unsigned char ewma_log; 43 }; 44 #define TC_H_MAJ_MASK (0xFFFF0000U) 45 #define TC_H_MIN_MASK (0x0000FFFFU) 46 #define TC_H_MAJ(h) ((h) & TC_H_MAJ_MASK) 47 #define TC_H_MIN(h) ((h) & TC_H_MIN_MASK) 48 #define TC_H_MAKE(maj,min) (((maj) & TC_H_MAJ_MASK) | ((min) & TC_H_MIN_MASK)) 49 #define TC_H_UNSPEC (0U) 50 #define TC_H_ROOT (0xFFFFFFFFU) 51 #define TC_H_INGRESS (0xFFFFFFF1U) 52 #define TC_H_CLSACT TC_H_INGRESS 53 #define TC_H_MIN_PRIORITY 0xFFE0U 54 #define TC_H_MIN_INGRESS 0xFFF2U 55 #define TC_H_MIN_EGRESS 0xFFF3U 56 enum tc_link_layer { 57 TC_LINKLAYER_UNAWARE, 58 TC_LINKLAYER_ETHERNET, 59 TC_LINKLAYER_ATM, 60 }; 61 #define TC_LINKLAYER_MASK 0x0F 62 struct tc_ratespec { 63 unsigned char cell_log; 64 __u8 linklayer; 65 unsigned short overhead; 66 short cell_align; 67 unsigned short mpu; 68 __u32 rate; 69 }; 70 #define TC_RTAB_SIZE 1024 71 struct tc_sizespec { 72 unsigned char cell_log; 73 unsigned char size_log; 74 short cell_align; 75 int overhead; 76 unsigned int linklayer; 77 unsigned int mpu; 78 unsigned int mtu; 79 unsigned int tsize; 80 }; 81 enum { 82 TCA_STAB_UNSPEC, 83 TCA_STAB_BASE, 84 TCA_STAB_DATA, 85 __TCA_STAB_MAX 86 }; 87 #define TCA_STAB_MAX (__TCA_STAB_MAX - 1) 88 struct tc_fifo_qopt { 89 __u32 limit; 90 }; 91 #define SKBPRIO_MAX_PRIORITY 64 92 struct tc_skbprio_qopt { 93 __u32 limit; 94 }; 95 #define TCQ_PRIO_BANDS 16 96 #define TCQ_MIN_PRIO_BANDS 2 97 struct tc_prio_qopt { 98 int bands; 99 __u8 priomap[TC_PRIO_MAX + 1]; 100 }; 101 struct tc_multiq_qopt { 102 __u16 bands; 103 __u16 max_bands; 104 }; 105 #define TCQ_PLUG_BUFFER 0 106 #define TCQ_PLUG_RELEASE_ONE 1 107 #define TCQ_PLUG_RELEASE_INDEFINITE 2 108 #define TCQ_PLUG_LIMIT 3 109 struct tc_plug_qopt { 110 int action; 111 __u32 limit; 112 }; 113 struct tc_tbf_qopt { 114 struct tc_ratespec rate; 115 struct tc_ratespec peakrate; 116 __u32 limit; 117 __u32 buffer; 118 __u32 mtu; 119 }; 120 enum { 121 TCA_TBF_UNSPEC, 122 TCA_TBF_PARMS, 123 TCA_TBF_RTAB, 124 TCA_TBF_PTAB, 125 TCA_TBF_RATE64, 126 TCA_TBF_PRATE64, 127 TCA_TBF_BURST, 128 TCA_TBF_PBURST, 129 TCA_TBF_PAD, 130 __TCA_TBF_MAX, 131 }; 132 #define TCA_TBF_MAX (__TCA_TBF_MAX - 1) 133 struct tc_sfq_qopt { 134 unsigned quantum; 135 int perturb_period; 136 __u32 limit; 137 unsigned divisor; 138 unsigned flows; 139 }; 140 struct tc_sfqred_stats { 141 __u32 prob_drop; 142 __u32 forced_drop; 143 __u32 prob_mark; 144 __u32 forced_mark; 145 __u32 prob_mark_head; 146 __u32 forced_mark_head; 147 }; 148 struct tc_sfq_qopt_v1 { 149 struct tc_sfq_qopt v0; 150 unsigned int depth; 151 unsigned int headdrop; 152 __u32 limit; 153 __u32 qth_min; 154 __u32 qth_max; 155 unsigned char Wlog; 156 unsigned char Plog; 157 unsigned char Scell_log; 158 unsigned char flags; 159 __u32 max_P; 160 struct tc_sfqred_stats stats; 161 }; 162 struct tc_sfq_xstats { 163 __s32 allot; 164 }; 165 enum { 166 TCA_RED_UNSPEC, 167 TCA_RED_PARMS, 168 TCA_RED_STAB, 169 TCA_RED_MAX_P, 170 TCA_RED_FLAGS, 171 TCA_RED_EARLY_DROP_BLOCK, 172 TCA_RED_MARK_BLOCK, 173 __TCA_RED_MAX, 174 }; 175 #define TCA_RED_MAX (__TCA_RED_MAX - 1) 176 struct tc_red_qopt { 177 __u32 limit; 178 __u32 qth_min; 179 __u32 qth_max; 180 unsigned char Wlog; 181 unsigned char Plog; 182 unsigned char Scell_log; 183 unsigned char flags; 184 #define TC_RED_ECN 1 185 #define TC_RED_HARDDROP 2 186 #define TC_RED_ADAPTATIVE 4 187 #define TC_RED_NODROP 8 188 }; 189 #define TC_RED_HISTORIC_FLAGS (TC_RED_ECN | TC_RED_HARDDROP | TC_RED_ADAPTATIVE) 190 struct tc_red_xstats { 191 __u32 early; 192 __u32 pdrop; 193 __u32 other; 194 __u32 marked; 195 }; 196 #define MAX_DPs 16 197 enum { 198 TCA_GRED_UNSPEC, 199 TCA_GRED_PARMS, 200 TCA_GRED_STAB, 201 TCA_GRED_DPS, 202 TCA_GRED_MAX_P, 203 TCA_GRED_LIMIT, 204 TCA_GRED_VQ_LIST, 205 __TCA_GRED_MAX, 206 }; 207 #define TCA_GRED_MAX (__TCA_GRED_MAX - 1) 208 enum { 209 TCA_GRED_VQ_ENTRY_UNSPEC, 210 TCA_GRED_VQ_ENTRY, 211 __TCA_GRED_VQ_ENTRY_MAX, 212 }; 213 #define TCA_GRED_VQ_ENTRY_MAX (__TCA_GRED_VQ_ENTRY_MAX - 1) 214 enum { 215 TCA_GRED_VQ_UNSPEC, 216 TCA_GRED_VQ_PAD, 217 TCA_GRED_VQ_DP, 218 TCA_GRED_VQ_STAT_BYTES, 219 TCA_GRED_VQ_STAT_PACKETS, 220 TCA_GRED_VQ_STAT_BACKLOG, 221 TCA_GRED_VQ_STAT_PROB_DROP, 222 TCA_GRED_VQ_STAT_PROB_MARK, 223 TCA_GRED_VQ_STAT_FORCED_DROP, 224 TCA_GRED_VQ_STAT_FORCED_MARK, 225 TCA_GRED_VQ_STAT_PDROP, 226 TCA_GRED_VQ_STAT_OTHER, 227 TCA_GRED_VQ_FLAGS, 228 __TCA_GRED_VQ_MAX 229 }; 230 #define TCA_GRED_VQ_MAX (__TCA_GRED_VQ_MAX - 1) 231 struct tc_gred_qopt { 232 __u32 limit; 233 __u32 qth_min; 234 __u32 qth_max; 235 __u32 DP; 236 __u32 backlog; 237 __u32 qave; 238 __u32 forced; 239 __u32 early; 240 __u32 other; 241 __u32 pdrop; 242 __u8 Wlog; 243 __u8 Plog; 244 __u8 Scell_log; 245 __u8 prio; 246 __u32 packets; 247 __u32 bytesin; 248 }; 249 struct tc_gred_sopt { 250 __u32 DPs; 251 __u32 def_DP; 252 __u8 grio; 253 __u8 flags; 254 __u16 pad1; 255 }; 256 enum { 257 TCA_CHOKE_UNSPEC, 258 TCA_CHOKE_PARMS, 259 TCA_CHOKE_STAB, 260 TCA_CHOKE_MAX_P, 261 __TCA_CHOKE_MAX, 262 }; 263 #define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1) 264 struct tc_choke_qopt { 265 __u32 limit; 266 __u32 qth_min; 267 __u32 qth_max; 268 unsigned char Wlog; 269 unsigned char Plog; 270 unsigned char Scell_log; 271 unsigned char flags; 272 }; 273 struct tc_choke_xstats { 274 __u32 early; 275 __u32 pdrop; 276 __u32 other; 277 __u32 marked; 278 __u32 matched; 279 }; 280 #define TC_HTB_NUMPRIO 8 281 #define TC_HTB_MAXDEPTH 8 282 #define TC_HTB_PROTOVER 3 283 struct tc_htb_opt { 284 struct tc_ratespec rate; 285 struct tc_ratespec ceil; 286 __u32 buffer; 287 __u32 cbuffer; 288 __u32 quantum; 289 __u32 level; 290 __u32 prio; 291 }; 292 struct tc_htb_glob { 293 __u32 version; 294 __u32 rate2quantum; 295 __u32 defcls; 296 __u32 debug; 297 __u32 direct_pkts; 298 }; 299 enum { 300 TCA_HTB_UNSPEC, 301 TCA_HTB_PARMS, 302 TCA_HTB_INIT, 303 TCA_HTB_CTAB, 304 TCA_HTB_RTAB, 305 TCA_HTB_DIRECT_QLEN, 306 TCA_HTB_RATE64, 307 TCA_HTB_CEIL64, 308 TCA_HTB_PAD, 309 TCA_HTB_OFFLOAD, 310 __TCA_HTB_MAX, 311 }; 312 #define TCA_HTB_MAX (__TCA_HTB_MAX - 1) 313 struct tc_htb_xstats { 314 __u32 lends; 315 __u32 borrows; 316 __u32 giants; 317 __s32 tokens; 318 __s32 ctokens; 319 }; 320 struct tc_hfsc_qopt { 321 __u16 defcls; 322 }; 323 struct tc_service_curve { 324 __u32 m1; 325 __u32 d; 326 __u32 m2; 327 }; 328 struct tc_hfsc_stats { 329 __u64 work; 330 __u64 rtwork; 331 __u32 period; 332 __u32 level; 333 }; 334 enum { 335 TCA_HFSC_UNSPEC, 336 TCA_HFSC_RSC, 337 TCA_HFSC_FSC, 338 TCA_HFSC_USC, 339 __TCA_HFSC_MAX, 340 }; 341 #define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1) 342 #define TC_CBQ_MAXPRIO 8 343 #define TC_CBQ_MAXLEVEL 8 344 #define TC_CBQ_DEF_EWMA 5 345 struct tc_cbq_lssopt { 346 unsigned char change; 347 unsigned char flags; 348 #define TCF_CBQ_LSS_BOUNDED 1 349 #define TCF_CBQ_LSS_ISOLATED 2 350 unsigned char ewma_log; 351 unsigned char level; 352 #define TCF_CBQ_LSS_FLAGS 1 353 #define TCF_CBQ_LSS_EWMA 2 354 #define TCF_CBQ_LSS_MAXIDLE 4 355 #define TCF_CBQ_LSS_MINIDLE 8 356 #define TCF_CBQ_LSS_OFFTIME 0x10 357 #define TCF_CBQ_LSS_AVPKT 0x20 358 __u32 maxidle; 359 __u32 minidle; 360 __u32 offtime; 361 __u32 avpkt; 362 }; 363 struct tc_cbq_wrropt { 364 unsigned char flags; 365 unsigned char priority; 366 unsigned char cpriority; 367 unsigned char __reserved; 368 __u32 allot; 369 __u32 weight; 370 }; 371 struct tc_cbq_ovl { 372 unsigned char strategy; 373 #define TC_CBQ_OVL_CLASSIC 0 374 #define TC_CBQ_OVL_DELAY 1 375 #define TC_CBQ_OVL_LOWPRIO 2 376 #define TC_CBQ_OVL_DROP 3 377 #define TC_CBQ_OVL_RCLASSIC 4 378 unsigned char priority2; 379 __u16 pad; 380 __u32 penalty; 381 }; 382 struct tc_cbq_police { 383 unsigned char police; 384 unsigned char __res1; 385 unsigned short __res2; 386 }; 387 struct tc_cbq_fopt { 388 __u32 split; 389 __u32 defmap; 390 __u32 defchange; 391 }; 392 struct tc_cbq_xstats { 393 __u32 borrows; 394 __u32 overactions; 395 __s32 avgidle; 396 __s32 undertime; 397 }; 398 enum { 399 TCA_CBQ_UNSPEC, 400 TCA_CBQ_LSSOPT, 401 TCA_CBQ_WRROPT, 402 TCA_CBQ_FOPT, 403 TCA_CBQ_OVL_STRATEGY, 404 TCA_CBQ_RATE, 405 TCA_CBQ_RTAB, 406 TCA_CBQ_POLICE, 407 __TCA_CBQ_MAX, 408 }; 409 #define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1) 410 enum { 411 TCA_DSMARK_UNSPEC, 412 TCA_DSMARK_INDICES, 413 TCA_DSMARK_DEFAULT_INDEX, 414 TCA_DSMARK_SET_TC_INDEX, 415 TCA_DSMARK_MASK, 416 TCA_DSMARK_VALUE, 417 __TCA_DSMARK_MAX, 418 }; 419 #define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1) 420 enum { 421 TCA_ATM_UNSPEC, 422 TCA_ATM_FD, 423 TCA_ATM_PTR, 424 TCA_ATM_HDR, 425 TCA_ATM_EXCESS, 426 TCA_ATM_ADDR, 427 TCA_ATM_STATE, 428 __TCA_ATM_MAX, 429 }; 430 #define TCA_ATM_MAX (__TCA_ATM_MAX - 1) 431 enum { 432 TCA_NETEM_UNSPEC, 433 TCA_NETEM_CORR, 434 TCA_NETEM_DELAY_DIST, 435 TCA_NETEM_REORDER, 436 TCA_NETEM_CORRUPT, 437 TCA_NETEM_LOSS, 438 TCA_NETEM_RATE, 439 TCA_NETEM_ECN, 440 TCA_NETEM_RATE64, 441 TCA_NETEM_PAD, 442 TCA_NETEM_LATENCY64, 443 TCA_NETEM_JITTER64, 444 TCA_NETEM_SLOT, 445 TCA_NETEM_SLOT_DIST, 446 __TCA_NETEM_MAX, 447 }; 448 #define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1) 449 struct tc_netem_qopt { 450 __u32 latency; 451 __u32 limit; 452 __u32 loss; 453 __u32 gap; 454 __u32 duplicate; 455 __u32 jitter; 456 }; 457 struct tc_netem_corr { 458 __u32 delay_corr; 459 __u32 loss_corr; 460 __u32 dup_corr; 461 }; 462 struct tc_netem_reorder { 463 __u32 probability; 464 __u32 correlation; 465 }; 466 struct tc_netem_corrupt { 467 __u32 probability; 468 __u32 correlation; 469 }; 470 struct tc_netem_rate { 471 __u32 rate; 472 __s32 packet_overhead; 473 __u32 cell_size; 474 __s32 cell_overhead; 475 }; 476 struct tc_netem_slot { 477 __s64 min_delay; 478 __s64 max_delay; 479 __s32 max_packets; 480 __s32 max_bytes; 481 __s64 dist_delay; 482 __s64 dist_jitter; 483 }; 484 enum { 485 NETEM_LOSS_UNSPEC, 486 NETEM_LOSS_GI, 487 NETEM_LOSS_GE, 488 __NETEM_LOSS_MAX 489 }; 490 #define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1) 491 struct tc_netem_gimodel { 492 __u32 p13; 493 __u32 p31; 494 __u32 p32; 495 __u32 p14; 496 __u32 p23; 497 }; 498 struct tc_netem_gemodel { 499 __u32 p; 500 __u32 r; 501 __u32 h; 502 __u32 k1; 503 }; 504 #define NETEM_DIST_SCALE 8192 505 #define NETEM_DIST_MAX 16384 506 enum { 507 TCA_DRR_UNSPEC, 508 TCA_DRR_QUANTUM, 509 __TCA_DRR_MAX 510 }; 511 #define TCA_DRR_MAX (__TCA_DRR_MAX - 1) 512 struct tc_drr_stats { 513 __u32 deficit; 514 }; 515 #define TC_QOPT_BITMASK 15 516 #define TC_QOPT_MAX_QUEUE 16 517 enum { 518 TC_MQPRIO_HW_OFFLOAD_NONE, 519 TC_MQPRIO_HW_OFFLOAD_TCS, 520 __TC_MQPRIO_HW_OFFLOAD_MAX 521 }; 522 #define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1) 523 enum { 524 TC_MQPRIO_MODE_DCB, 525 TC_MQPRIO_MODE_CHANNEL, 526 __TC_MQPRIO_MODE_MAX 527 }; 528 #define __TC_MQPRIO_MODE_MAX (__TC_MQPRIO_MODE_MAX - 1) 529 enum { 530 TC_MQPRIO_SHAPER_DCB, 531 TC_MQPRIO_SHAPER_BW_RATE, 532 __TC_MQPRIO_SHAPER_MAX 533 }; 534 #define __TC_MQPRIO_SHAPER_MAX (__TC_MQPRIO_SHAPER_MAX - 1) 535 struct tc_mqprio_qopt { 536 __u8 num_tc; 537 __u8 prio_tc_map[TC_QOPT_BITMASK + 1]; 538 __u8 hw; 539 __u16 count[TC_QOPT_MAX_QUEUE]; 540 __u16 offset[TC_QOPT_MAX_QUEUE]; 541 }; 542 #define TC_MQPRIO_F_MODE 0x1 543 #define TC_MQPRIO_F_SHAPER 0x2 544 #define TC_MQPRIO_F_MIN_RATE 0x4 545 #define TC_MQPRIO_F_MAX_RATE 0x8 546 enum { 547 TCA_MQPRIO_UNSPEC, 548 TCA_MQPRIO_MODE, 549 TCA_MQPRIO_SHAPER, 550 TCA_MQPRIO_MIN_RATE64, 551 TCA_MQPRIO_MAX_RATE64, 552 __TCA_MQPRIO_MAX, 553 }; 554 #define TCA_MQPRIO_MAX (__TCA_MQPRIO_MAX - 1) 555 enum { 556 TCA_SFB_UNSPEC, 557 TCA_SFB_PARMS, 558 __TCA_SFB_MAX, 559 }; 560 #define TCA_SFB_MAX (__TCA_SFB_MAX - 1) 561 struct tc_sfb_qopt { 562 __u32 rehash_interval; 563 __u32 warmup_time; 564 __u32 max; 565 __u32 bin_size; 566 __u32 increment; 567 __u32 decrement; 568 __u32 limit; 569 __u32 penalty_rate; 570 __u32 penalty_burst; 571 }; 572 struct tc_sfb_xstats { 573 __u32 earlydrop; 574 __u32 penaltydrop; 575 __u32 bucketdrop; 576 __u32 queuedrop; 577 __u32 childdrop; 578 __u32 marked; 579 __u32 maxqlen; 580 __u32 maxprob; 581 __u32 avgprob; 582 }; 583 #define SFB_MAX_PROB 0xFFFF 584 enum { 585 TCA_QFQ_UNSPEC, 586 TCA_QFQ_WEIGHT, 587 TCA_QFQ_LMAX, 588 __TCA_QFQ_MAX 589 }; 590 #define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1) 591 struct tc_qfq_stats { 592 __u32 weight; 593 __u32 lmax; 594 }; 595 enum { 596 TCA_CODEL_UNSPEC, 597 TCA_CODEL_TARGET, 598 TCA_CODEL_LIMIT, 599 TCA_CODEL_INTERVAL, 600 TCA_CODEL_ECN, 601 TCA_CODEL_CE_THRESHOLD, 602 __TCA_CODEL_MAX 603 }; 604 #define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1) 605 struct tc_codel_xstats { 606 __u32 maxpacket; 607 __u32 count; 608 __u32 lastcount; 609 __u32 ldelay; 610 __s32 drop_next; 611 __u32 drop_overlimit; 612 __u32 ecn_mark; 613 __u32 dropping; 614 __u32 ce_mark; 615 }; 616 #define FQ_CODEL_QUANTUM_MAX (1 << 20) 617 enum { 618 TCA_FQ_CODEL_UNSPEC, 619 TCA_FQ_CODEL_TARGET, 620 TCA_FQ_CODEL_LIMIT, 621 TCA_FQ_CODEL_INTERVAL, 622 TCA_FQ_CODEL_ECN, 623 TCA_FQ_CODEL_FLOWS, 624 TCA_FQ_CODEL_QUANTUM, 625 TCA_FQ_CODEL_CE_THRESHOLD, 626 TCA_FQ_CODEL_DROP_BATCH_SIZE, 627 TCA_FQ_CODEL_MEMORY_LIMIT, 628 TCA_FQ_CODEL_CE_THRESHOLD_SELECTOR, 629 TCA_FQ_CODEL_CE_THRESHOLD_MASK, 630 __TCA_FQ_CODEL_MAX 631 }; 632 #define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1) 633 enum { 634 TCA_FQ_CODEL_XSTATS_QDISC, 635 TCA_FQ_CODEL_XSTATS_CLASS, 636 }; 637 struct tc_fq_codel_qd_stats { 638 __u32 maxpacket; 639 __u32 drop_overlimit; 640 __u32 ecn_mark; 641 __u32 new_flow_count; 642 __u32 new_flows_len; 643 __u32 old_flows_len; 644 __u32 ce_mark; 645 __u32 memory_usage; 646 __u32 drop_overmemory; 647 }; 648 struct tc_fq_codel_cl_stats { 649 __s32 deficit; 650 __u32 ldelay; 651 __u32 count; 652 __u32 lastcount; 653 __u32 dropping; 654 __s32 drop_next; 655 }; 656 struct tc_fq_codel_xstats { 657 __u32 type; 658 union { 659 struct tc_fq_codel_qd_stats qdisc_stats; 660 struct tc_fq_codel_cl_stats class_stats; 661 }; 662 }; 663 enum { 664 TCA_FQ_UNSPEC, 665 TCA_FQ_PLIMIT, 666 TCA_FQ_FLOW_PLIMIT, 667 TCA_FQ_QUANTUM, 668 TCA_FQ_INITIAL_QUANTUM, 669 TCA_FQ_RATE_ENABLE, 670 TCA_FQ_FLOW_DEFAULT_RATE, 671 TCA_FQ_FLOW_MAX_RATE, 672 TCA_FQ_BUCKETS_LOG, 673 TCA_FQ_FLOW_REFILL_DELAY, 674 TCA_FQ_ORPHAN_MASK, 675 TCA_FQ_LOW_RATE_THRESHOLD, 676 TCA_FQ_CE_THRESHOLD, 677 TCA_FQ_TIMER_SLACK, 678 TCA_FQ_HORIZON, 679 TCA_FQ_HORIZON_DROP, 680 __TCA_FQ_MAX 681 }; 682 #define TCA_FQ_MAX (__TCA_FQ_MAX - 1) 683 struct tc_fq_qd_stats { 684 __u64 gc_flows; 685 __u64 highprio_packets; 686 __u64 tcp_retrans; 687 __u64 throttled; 688 __u64 flows_plimit; 689 __u64 pkts_too_long; 690 __u64 allocation_errors; 691 __s64 time_next_delayed_flow; 692 __u32 flows; 693 __u32 inactive_flows; 694 __u32 throttled_flows; 695 __u32 unthrottle_latency_ns; 696 __u64 ce_mark; 697 __u64 horizon_drops; 698 __u64 horizon_caps; 699 }; 700 enum { 701 TCA_HHF_UNSPEC, 702 TCA_HHF_BACKLOG_LIMIT, 703 TCA_HHF_QUANTUM, 704 TCA_HHF_HH_FLOWS_LIMIT, 705 TCA_HHF_RESET_TIMEOUT, 706 TCA_HHF_ADMIT_BYTES, 707 TCA_HHF_EVICT_TIMEOUT, 708 TCA_HHF_NON_HH_WEIGHT, 709 __TCA_HHF_MAX 710 }; 711 #define TCA_HHF_MAX (__TCA_HHF_MAX - 1) 712 struct tc_hhf_xstats { 713 __u32 drop_overlimit; 714 __u32 hh_overlimit; 715 __u32 hh_tot_count; 716 __u32 hh_cur_count; 717 }; 718 enum { 719 TCA_PIE_UNSPEC, 720 TCA_PIE_TARGET, 721 TCA_PIE_LIMIT, 722 TCA_PIE_TUPDATE, 723 TCA_PIE_ALPHA, 724 TCA_PIE_BETA, 725 TCA_PIE_ECN, 726 TCA_PIE_BYTEMODE, 727 TCA_PIE_DQ_RATE_ESTIMATOR, 728 __TCA_PIE_MAX 729 }; 730 #define TCA_PIE_MAX (__TCA_PIE_MAX - 1) 731 struct tc_pie_xstats { 732 __u64 prob; 733 __u32 delay; 734 __u32 avg_dq_rate; 735 __u32 dq_rate_estimating; 736 __u32 packets_in; 737 __u32 dropped; 738 __u32 overlimit; 739 __u32 maxq; 740 __u32 ecn_mark; 741 }; 742 enum { 743 TCA_FQ_PIE_UNSPEC, 744 TCA_FQ_PIE_LIMIT, 745 TCA_FQ_PIE_FLOWS, 746 TCA_FQ_PIE_TARGET, 747 TCA_FQ_PIE_TUPDATE, 748 TCA_FQ_PIE_ALPHA, 749 TCA_FQ_PIE_BETA, 750 TCA_FQ_PIE_QUANTUM, 751 TCA_FQ_PIE_MEMORY_LIMIT, 752 TCA_FQ_PIE_ECN_PROB, 753 TCA_FQ_PIE_ECN, 754 TCA_FQ_PIE_BYTEMODE, 755 TCA_FQ_PIE_DQ_RATE_ESTIMATOR, 756 __TCA_FQ_PIE_MAX 757 }; 758 #define TCA_FQ_PIE_MAX (__TCA_FQ_PIE_MAX - 1) 759 struct tc_fq_pie_xstats { 760 __u32 packets_in; 761 __u32 dropped; 762 __u32 overlimit; 763 __u32 overmemory; 764 __u32 ecn_mark; 765 __u32 new_flow_count; 766 __u32 new_flows_len; 767 __u32 old_flows_len; 768 __u32 memory_usage; 769 }; 770 struct tc_cbs_qopt { 771 __u8 offload; 772 __u8 _pad[3]; 773 __s32 hicredit; 774 __s32 locredit; 775 __s32 idleslope; 776 __s32 sendslope; 777 }; 778 enum { 779 TCA_CBS_UNSPEC, 780 TCA_CBS_PARMS, 781 __TCA_CBS_MAX, 782 }; 783 #define TCA_CBS_MAX (__TCA_CBS_MAX - 1) 784 struct tc_etf_qopt { 785 __s32 delta; 786 __s32 clockid; 787 __u32 flags; 788 #define TC_ETF_DEADLINE_MODE_ON _BITUL(0) 789 #define TC_ETF_OFFLOAD_ON _BITUL(1) 790 #define TC_ETF_SKIP_SOCK_CHECK _BITUL(2) 791 }; 792 enum { 793 TCA_ETF_UNSPEC, 794 TCA_ETF_PARMS, 795 __TCA_ETF_MAX, 796 }; 797 #define TCA_ETF_MAX (__TCA_ETF_MAX - 1) 798 enum { 799 TCA_CAKE_UNSPEC, 800 TCA_CAKE_PAD, 801 TCA_CAKE_BASE_RATE64, 802 TCA_CAKE_DIFFSERV_MODE, 803 TCA_CAKE_ATM, 804 TCA_CAKE_FLOW_MODE, 805 TCA_CAKE_OVERHEAD, 806 TCA_CAKE_RTT, 807 TCA_CAKE_TARGET, 808 TCA_CAKE_AUTORATE, 809 TCA_CAKE_MEMORY, 810 TCA_CAKE_NAT, 811 TCA_CAKE_RAW, 812 TCA_CAKE_WASH, 813 TCA_CAKE_MPU, 814 TCA_CAKE_INGRESS, 815 TCA_CAKE_ACK_FILTER, 816 TCA_CAKE_SPLIT_GSO, 817 TCA_CAKE_FWMARK, 818 __TCA_CAKE_MAX 819 }; 820 #define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1) 821 enum { 822 __TCA_CAKE_STATS_INVALID, 823 TCA_CAKE_STATS_PAD, 824 TCA_CAKE_STATS_CAPACITY_ESTIMATE64, 825 TCA_CAKE_STATS_MEMORY_LIMIT, 826 TCA_CAKE_STATS_MEMORY_USED, 827 TCA_CAKE_STATS_AVG_NETOFF, 828 TCA_CAKE_STATS_MIN_NETLEN, 829 TCA_CAKE_STATS_MAX_NETLEN, 830 TCA_CAKE_STATS_MIN_ADJLEN, 831 TCA_CAKE_STATS_MAX_ADJLEN, 832 TCA_CAKE_STATS_TIN_STATS, 833 TCA_CAKE_STATS_DEFICIT, 834 TCA_CAKE_STATS_COBALT_COUNT, 835 TCA_CAKE_STATS_DROPPING, 836 TCA_CAKE_STATS_DROP_NEXT_US, 837 TCA_CAKE_STATS_P_DROP, 838 TCA_CAKE_STATS_BLUE_TIMER_US, 839 __TCA_CAKE_STATS_MAX 840 }; 841 #define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1) 842 enum { 843 __TCA_CAKE_TIN_STATS_INVALID, 844 TCA_CAKE_TIN_STATS_PAD, 845 TCA_CAKE_TIN_STATS_SENT_PACKETS, 846 TCA_CAKE_TIN_STATS_SENT_BYTES64, 847 TCA_CAKE_TIN_STATS_DROPPED_PACKETS, 848 TCA_CAKE_TIN_STATS_DROPPED_BYTES64, 849 TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS, 850 TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64, 851 TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS, 852 TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64, 853 TCA_CAKE_TIN_STATS_BACKLOG_PACKETS, 854 TCA_CAKE_TIN_STATS_BACKLOG_BYTES, 855 TCA_CAKE_TIN_STATS_THRESHOLD_RATE64, 856 TCA_CAKE_TIN_STATS_TARGET_US, 857 TCA_CAKE_TIN_STATS_INTERVAL_US, 858 TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS, 859 TCA_CAKE_TIN_STATS_WAY_MISSES, 860 TCA_CAKE_TIN_STATS_WAY_COLLISIONS, 861 TCA_CAKE_TIN_STATS_PEAK_DELAY_US, 862 TCA_CAKE_TIN_STATS_AVG_DELAY_US, 863 TCA_CAKE_TIN_STATS_BASE_DELAY_US, 864 TCA_CAKE_TIN_STATS_SPARSE_FLOWS, 865 TCA_CAKE_TIN_STATS_BULK_FLOWS, 866 TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS, 867 TCA_CAKE_TIN_STATS_MAX_SKBLEN, 868 TCA_CAKE_TIN_STATS_FLOW_QUANTUM, 869 __TCA_CAKE_TIN_STATS_MAX 870 }; 871 #define TCA_CAKE_TIN_STATS_MAX (__TCA_CAKE_TIN_STATS_MAX - 1) 872 #define TC_CAKE_MAX_TINS (8) 873 enum { 874 CAKE_FLOW_NONE = 0, 875 CAKE_FLOW_SRC_IP, 876 CAKE_FLOW_DST_IP, 877 CAKE_FLOW_HOSTS, 878 CAKE_FLOW_FLOWS, 879 CAKE_FLOW_DUAL_SRC, 880 CAKE_FLOW_DUAL_DST, 881 CAKE_FLOW_TRIPLE, 882 CAKE_FLOW_MAX, 883 }; 884 enum { 885 CAKE_DIFFSERV_DIFFSERV3 = 0, 886 CAKE_DIFFSERV_DIFFSERV4, 887 CAKE_DIFFSERV_DIFFSERV8, 888 CAKE_DIFFSERV_BESTEFFORT, 889 CAKE_DIFFSERV_PRECEDENCE, 890 CAKE_DIFFSERV_MAX 891 }; 892 enum { 893 CAKE_ACK_NONE = 0, 894 CAKE_ACK_FILTER, 895 CAKE_ACK_AGGRESSIVE, 896 CAKE_ACK_MAX 897 }; 898 enum { 899 CAKE_ATM_NONE = 0, 900 CAKE_ATM_ATM, 901 CAKE_ATM_PTM, 902 CAKE_ATM_MAX 903 }; 904 enum { 905 TC_TAPRIO_CMD_SET_GATES = 0x00, 906 TC_TAPRIO_CMD_SET_AND_HOLD = 0x01, 907 TC_TAPRIO_CMD_SET_AND_RELEASE = 0x02, 908 }; 909 enum { 910 TCA_TAPRIO_SCHED_ENTRY_UNSPEC, 911 TCA_TAPRIO_SCHED_ENTRY_INDEX, 912 TCA_TAPRIO_SCHED_ENTRY_CMD, 913 TCA_TAPRIO_SCHED_ENTRY_GATE_MASK, 914 TCA_TAPRIO_SCHED_ENTRY_INTERVAL, 915 __TCA_TAPRIO_SCHED_ENTRY_MAX, 916 }; 917 #define TCA_TAPRIO_SCHED_ENTRY_MAX (__TCA_TAPRIO_SCHED_ENTRY_MAX - 1) 918 enum { 919 TCA_TAPRIO_SCHED_UNSPEC, 920 TCA_TAPRIO_SCHED_ENTRY, 921 __TCA_TAPRIO_SCHED_MAX, 922 }; 923 #define TCA_TAPRIO_SCHED_MAX (__TCA_TAPRIO_SCHED_MAX - 1) 924 #define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0) 925 #define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1) 926 enum { 927 TCA_TAPRIO_TC_ENTRY_UNSPEC, 928 TCA_TAPRIO_TC_ENTRY_INDEX, 929 TCA_TAPRIO_TC_ENTRY_MAX_SDU, 930 __TCA_TAPRIO_TC_ENTRY_CNT, 931 TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1) 932 }; 933 enum { 934 TCA_TAPRIO_ATTR_UNSPEC, 935 TCA_TAPRIO_ATTR_PRIOMAP, 936 TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST, 937 TCA_TAPRIO_ATTR_SCHED_BASE_TIME, 938 TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY, 939 TCA_TAPRIO_ATTR_SCHED_CLOCKID, 940 TCA_TAPRIO_PAD, 941 TCA_TAPRIO_ATTR_ADMIN_SCHED, 942 TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME, 943 TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION, 944 TCA_TAPRIO_ATTR_FLAGS, 945 TCA_TAPRIO_ATTR_TXTIME_DELAY, 946 TCA_TAPRIO_ATTR_TC_ENTRY, 947 __TCA_TAPRIO_ATTR_MAX, 948 }; 949 #define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1) 950 #define TCQ_ETS_MAX_BANDS 16 951 enum { 952 TCA_ETS_UNSPEC, 953 TCA_ETS_NBANDS, 954 TCA_ETS_NSTRICT, 955 TCA_ETS_QUANTA, 956 TCA_ETS_QUANTA_BAND, 957 TCA_ETS_PRIOMAP, 958 TCA_ETS_PRIOMAP_BAND, 959 __TCA_ETS_MAX, 960 }; 961 #define TCA_ETS_MAX (__TCA_ETS_MAX - 1) 962 #endif 963