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_MAX, 171 }; 172 #define TCA_RED_MAX (__TCA_RED_MAX - 1) 173 struct tc_red_qopt { 174 __u32 limit; 175 __u32 qth_min; 176 __u32 qth_max; 177 unsigned char Wlog; 178 unsigned char Plog; 179 unsigned char Scell_log; 180 unsigned char flags; 181 #define TC_RED_ECN 1 182 #define TC_RED_HARDDROP 2 183 #define TC_RED_ADAPTATIVE 4 184 }; 185 struct tc_red_xstats { 186 __u32 early; 187 __u32 pdrop; 188 __u32 other; 189 __u32 marked; 190 }; 191 #define MAX_DPs 16 192 enum { 193 TCA_GRED_UNSPEC, 194 TCA_GRED_PARMS, 195 TCA_GRED_STAB, 196 TCA_GRED_DPS, 197 TCA_GRED_MAX_P, 198 TCA_GRED_LIMIT, 199 TCA_GRED_VQ_LIST, 200 __TCA_GRED_MAX, 201 }; 202 #define TCA_GRED_MAX (__TCA_GRED_MAX - 1) 203 enum { 204 TCA_GRED_VQ_ENTRY_UNSPEC, 205 TCA_GRED_VQ_ENTRY, 206 __TCA_GRED_VQ_ENTRY_MAX, 207 }; 208 #define TCA_GRED_VQ_ENTRY_MAX (__TCA_GRED_VQ_ENTRY_MAX - 1) 209 enum { 210 TCA_GRED_VQ_UNSPEC, 211 TCA_GRED_VQ_PAD, 212 TCA_GRED_VQ_DP, 213 TCA_GRED_VQ_STAT_BYTES, 214 TCA_GRED_VQ_STAT_PACKETS, 215 TCA_GRED_VQ_STAT_BACKLOG, 216 TCA_GRED_VQ_STAT_PROB_DROP, 217 TCA_GRED_VQ_STAT_PROB_MARK, 218 TCA_GRED_VQ_STAT_FORCED_DROP, 219 TCA_GRED_VQ_STAT_FORCED_MARK, 220 TCA_GRED_VQ_STAT_PDROP, 221 TCA_GRED_VQ_STAT_OTHER, 222 TCA_GRED_VQ_FLAGS, 223 __TCA_GRED_VQ_MAX 224 }; 225 #define TCA_GRED_VQ_MAX (__TCA_GRED_VQ_MAX - 1) 226 struct tc_gred_qopt { 227 __u32 limit; 228 __u32 qth_min; 229 __u32 qth_max; 230 __u32 DP; 231 __u32 backlog; 232 __u32 qave; 233 __u32 forced; 234 __u32 early; 235 __u32 other; 236 __u32 pdrop; 237 __u8 Wlog; 238 __u8 Plog; 239 __u8 Scell_log; 240 __u8 prio; 241 __u32 packets; 242 __u32 bytesin; 243 }; 244 struct tc_gred_sopt { 245 __u32 DPs; 246 __u32 def_DP; 247 __u8 grio; 248 __u8 flags; 249 __u16 pad1; 250 }; 251 enum { 252 TCA_CHOKE_UNSPEC, 253 TCA_CHOKE_PARMS, 254 TCA_CHOKE_STAB, 255 TCA_CHOKE_MAX_P, 256 __TCA_CHOKE_MAX, 257 }; 258 #define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1) 259 struct tc_choke_qopt { 260 __u32 limit; 261 __u32 qth_min; 262 __u32 qth_max; 263 unsigned char Wlog; 264 unsigned char Plog; 265 unsigned char Scell_log; 266 unsigned char flags; 267 }; 268 struct tc_choke_xstats { 269 __u32 early; 270 __u32 pdrop; 271 __u32 other; 272 __u32 marked; 273 __u32 matched; 274 }; 275 #define TC_HTB_NUMPRIO 8 276 #define TC_HTB_MAXDEPTH 8 277 #define TC_HTB_PROTOVER 3 278 struct tc_htb_opt { 279 struct tc_ratespec rate; 280 struct tc_ratespec ceil; 281 __u32 buffer; 282 __u32 cbuffer; 283 __u32 quantum; 284 __u32 level; 285 __u32 prio; 286 }; 287 struct tc_htb_glob { 288 __u32 version; 289 __u32 rate2quantum; 290 __u32 defcls; 291 __u32 debug; 292 __u32 direct_pkts; 293 }; 294 enum { 295 TCA_HTB_UNSPEC, 296 TCA_HTB_PARMS, 297 TCA_HTB_INIT, 298 TCA_HTB_CTAB, 299 TCA_HTB_RTAB, 300 TCA_HTB_DIRECT_QLEN, 301 TCA_HTB_RATE64, 302 TCA_HTB_CEIL64, 303 TCA_HTB_PAD, 304 __TCA_HTB_MAX, 305 }; 306 #define TCA_HTB_MAX (__TCA_HTB_MAX - 1) 307 struct tc_htb_xstats { 308 __u32 lends; 309 __u32 borrows; 310 __u32 giants; 311 __s32 tokens; 312 __s32 ctokens; 313 }; 314 struct tc_hfsc_qopt { 315 __u16 defcls; 316 }; 317 struct tc_service_curve { 318 __u32 m1; 319 __u32 d; 320 __u32 m2; 321 }; 322 struct tc_hfsc_stats { 323 __u64 work; 324 __u64 rtwork; 325 __u32 period; 326 __u32 level; 327 }; 328 enum { 329 TCA_HFSC_UNSPEC, 330 TCA_HFSC_RSC, 331 TCA_HFSC_FSC, 332 TCA_HFSC_USC, 333 __TCA_HFSC_MAX, 334 }; 335 #define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1) 336 #define TC_CBQ_MAXPRIO 8 337 #define TC_CBQ_MAXLEVEL 8 338 #define TC_CBQ_DEF_EWMA 5 339 struct tc_cbq_lssopt { 340 unsigned char change; 341 unsigned char flags; 342 #define TCF_CBQ_LSS_BOUNDED 1 343 #define TCF_CBQ_LSS_ISOLATED 2 344 unsigned char ewma_log; 345 unsigned char level; 346 #define TCF_CBQ_LSS_FLAGS 1 347 #define TCF_CBQ_LSS_EWMA 2 348 #define TCF_CBQ_LSS_MAXIDLE 4 349 #define TCF_CBQ_LSS_MINIDLE 8 350 #define TCF_CBQ_LSS_OFFTIME 0x10 351 #define TCF_CBQ_LSS_AVPKT 0x20 352 __u32 maxidle; 353 __u32 minidle; 354 __u32 offtime; 355 __u32 avpkt; 356 }; 357 struct tc_cbq_wrropt { 358 unsigned char flags; 359 unsigned char priority; 360 unsigned char cpriority; 361 unsigned char __reserved; 362 __u32 allot; 363 __u32 weight; 364 }; 365 struct tc_cbq_ovl { 366 unsigned char strategy; 367 #define TC_CBQ_OVL_CLASSIC 0 368 #define TC_CBQ_OVL_DELAY 1 369 #define TC_CBQ_OVL_LOWPRIO 2 370 #define TC_CBQ_OVL_DROP 3 371 #define TC_CBQ_OVL_RCLASSIC 4 372 unsigned char priority2; 373 __u16 pad; 374 __u32 penalty; 375 }; 376 struct tc_cbq_police { 377 unsigned char police; 378 unsigned char __res1; 379 unsigned short __res2; 380 }; 381 struct tc_cbq_fopt { 382 __u32 split; 383 __u32 defmap; 384 __u32 defchange; 385 }; 386 struct tc_cbq_xstats { 387 __u32 borrows; 388 __u32 overactions; 389 __s32 avgidle; 390 __s32 undertime; 391 }; 392 enum { 393 TCA_CBQ_UNSPEC, 394 TCA_CBQ_LSSOPT, 395 TCA_CBQ_WRROPT, 396 TCA_CBQ_FOPT, 397 TCA_CBQ_OVL_STRATEGY, 398 TCA_CBQ_RATE, 399 TCA_CBQ_RTAB, 400 TCA_CBQ_POLICE, 401 __TCA_CBQ_MAX, 402 }; 403 #define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1) 404 enum { 405 TCA_DSMARK_UNSPEC, 406 TCA_DSMARK_INDICES, 407 TCA_DSMARK_DEFAULT_INDEX, 408 TCA_DSMARK_SET_TC_INDEX, 409 TCA_DSMARK_MASK, 410 TCA_DSMARK_VALUE, 411 __TCA_DSMARK_MAX, 412 }; 413 #define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1) 414 enum { 415 TCA_ATM_UNSPEC, 416 TCA_ATM_FD, 417 TCA_ATM_PTR, 418 TCA_ATM_HDR, 419 TCA_ATM_EXCESS, 420 TCA_ATM_ADDR, 421 TCA_ATM_STATE, 422 __TCA_ATM_MAX, 423 }; 424 #define TCA_ATM_MAX (__TCA_ATM_MAX - 1) 425 enum { 426 TCA_NETEM_UNSPEC, 427 TCA_NETEM_CORR, 428 TCA_NETEM_DELAY_DIST, 429 TCA_NETEM_REORDER, 430 TCA_NETEM_CORRUPT, 431 TCA_NETEM_LOSS, 432 TCA_NETEM_RATE, 433 TCA_NETEM_ECN, 434 TCA_NETEM_RATE64, 435 TCA_NETEM_PAD, 436 TCA_NETEM_LATENCY64, 437 TCA_NETEM_JITTER64, 438 TCA_NETEM_SLOT, 439 TCA_NETEM_SLOT_DIST, 440 __TCA_NETEM_MAX, 441 }; 442 #define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1) 443 struct tc_netem_qopt { 444 __u32 latency; 445 __u32 limit; 446 __u32 loss; 447 __u32 gap; 448 __u32 duplicate; 449 __u32 jitter; 450 }; 451 struct tc_netem_corr { 452 __u32 delay_corr; 453 __u32 loss_corr; 454 __u32 dup_corr; 455 }; 456 struct tc_netem_reorder { 457 __u32 probability; 458 __u32 correlation; 459 }; 460 struct tc_netem_corrupt { 461 __u32 probability; 462 __u32 correlation; 463 }; 464 struct tc_netem_rate { 465 __u32 rate; 466 __s32 packet_overhead; 467 __u32 cell_size; 468 __s32 cell_overhead; 469 }; 470 struct tc_netem_slot { 471 __s64 min_delay; 472 __s64 max_delay; 473 __s32 max_packets; 474 __s32 max_bytes; 475 __s64 dist_delay; 476 __s64 dist_jitter; 477 }; 478 enum { 479 NETEM_LOSS_UNSPEC, 480 NETEM_LOSS_GI, 481 NETEM_LOSS_GE, 482 __NETEM_LOSS_MAX 483 }; 484 #define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1) 485 struct tc_netem_gimodel { 486 __u32 p13; 487 __u32 p31; 488 __u32 p32; 489 __u32 p14; 490 __u32 p23; 491 }; 492 struct tc_netem_gemodel { 493 __u32 p; 494 __u32 r; 495 __u32 h; 496 __u32 k1; 497 }; 498 #define NETEM_DIST_SCALE 8192 499 #define NETEM_DIST_MAX 16384 500 enum { 501 TCA_DRR_UNSPEC, 502 TCA_DRR_QUANTUM, 503 __TCA_DRR_MAX 504 }; 505 #define TCA_DRR_MAX (__TCA_DRR_MAX - 1) 506 struct tc_drr_stats { 507 __u32 deficit; 508 }; 509 #define TC_QOPT_BITMASK 15 510 #define TC_QOPT_MAX_QUEUE 16 511 enum { 512 TC_MQPRIO_HW_OFFLOAD_NONE, 513 TC_MQPRIO_HW_OFFLOAD_TCS, 514 __TC_MQPRIO_HW_OFFLOAD_MAX 515 }; 516 #define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1) 517 enum { 518 TC_MQPRIO_MODE_DCB, 519 TC_MQPRIO_MODE_CHANNEL, 520 __TC_MQPRIO_MODE_MAX 521 }; 522 #define __TC_MQPRIO_MODE_MAX (__TC_MQPRIO_MODE_MAX - 1) 523 enum { 524 TC_MQPRIO_SHAPER_DCB, 525 TC_MQPRIO_SHAPER_BW_RATE, 526 __TC_MQPRIO_SHAPER_MAX 527 }; 528 #define __TC_MQPRIO_SHAPER_MAX (__TC_MQPRIO_SHAPER_MAX - 1) 529 struct tc_mqprio_qopt { 530 __u8 num_tc; 531 __u8 prio_tc_map[TC_QOPT_BITMASK + 1]; 532 __u8 hw; 533 __u16 count[TC_QOPT_MAX_QUEUE]; 534 __u16 offset[TC_QOPT_MAX_QUEUE]; 535 }; 536 #define TC_MQPRIO_F_MODE 0x1 537 #define TC_MQPRIO_F_SHAPER 0x2 538 #define TC_MQPRIO_F_MIN_RATE 0x4 539 #define TC_MQPRIO_F_MAX_RATE 0x8 540 enum { 541 TCA_MQPRIO_UNSPEC, 542 TCA_MQPRIO_MODE, 543 TCA_MQPRIO_SHAPER, 544 TCA_MQPRIO_MIN_RATE64, 545 TCA_MQPRIO_MAX_RATE64, 546 __TCA_MQPRIO_MAX, 547 }; 548 #define TCA_MQPRIO_MAX (__TCA_MQPRIO_MAX - 1) 549 enum { 550 TCA_SFB_UNSPEC, 551 TCA_SFB_PARMS, 552 __TCA_SFB_MAX, 553 }; 554 #define TCA_SFB_MAX (__TCA_SFB_MAX - 1) 555 struct tc_sfb_qopt { 556 __u32 rehash_interval; 557 __u32 warmup_time; 558 __u32 max; 559 __u32 bin_size; 560 __u32 increment; 561 __u32 decrement; 562 __u32 limit; 563 __u32 penalty_rate; 564 __u32 penalty_burst; 565 }; 566 struct tc_sfb_xstats { 567 __u32 earlydrop; 568 __u32 penaltydrop; 569 __u32 bucketdrop; 570 __u32 queuedrop; 571 __u32 childdrop; 572 __u32 marked; 573 __u32 maxqlen; 574 __u32 maxprob; 575 __u32 avgprob; 576 }; 577 #define SFB_MAX_PROB 0xFFFF 578 enum { 579 TCA_QFQ_UNSPEC, 580 TCA_QFQ_WEIGHT, 581 TCA_QFQ_LMAX, 582 __TCA_QFQ_MAX 583 }; 584 #define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1) 585 struct tc_qfq_stats { 586 __u32 weight; 587 __u32 lmax; 588 }; 589 enum { 590 TCA_CODEL_UNSPEC, 591 TCA_CODEL_TARGET, 592 TCA_CODEL_LIMIT, 593 TCA_CODEL_INTERVAL, 594 TCA_CODEL_ECN, 595 TCA_CODEL_CE_THRESHOLD, 596 __TCA_CODEL_MAX 597 }; 598 #define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1) 599 struct tc_codel_xstats { 600 __u32 maxpacket; 601 __u32 count; 602 __u32 lastcount; 603 __u32 ldelay; 604 __s32 drop_next; 605 __u32 drop_overlimit; 606 __u32 ecn_mark; 607 __u32 dropping; 608 __u32 ce_mark; 609 }; 610 enum { 611 TCA_FQ_CODEL_UNSPEC, 612 TCA_FQ_CODEL_TARGET, 613 TCA_FQ_CODEL_LIMIT, 614 TCA_FQ_CODEL_INTERVAL, 615 TCA_FQ_CODEL_ECN, 616 TCA_FQ_CODEL_FLOWS, 617 TCA_FQ_CODEL_QUANTUM, 618 TCA_FQ_CODEL_CE_THRESHOLD, 619 TCA_FQ_CODEL_DROP_BATCH_SIZE, 620 TCA_FQ_CODEL_MEMORY_LIMIT, 621 __TCA_FQ_CODEL_MAX 622 }; 623 #define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1) 624 enum { 625 TCA_FQ_CODEL_XSTATS_QDISC, 626 TCA_FQ_CODEL_XSTATS_CLASS, 627 }; 628 struct tc_fq_codel_qd_stats { 629 __u32 maxpacket; 630 __u32 drop_overlimit; 631 __u32 ecn_mark; 632 __u32 new_flow_count; 633 __u32 new_flows_len; 634 __u32 old_flows_len; 635 __u32 ce_mark; 636 __u32 memory_usage; 637 __u32 drop_overmemory; 638 }; 639 struct tc_fq_codel_cl_stats { 640 __s32 deficit; 641 __u32 ldelay; 642 __u32 count; 643 __u32 lastcount; 644 __u32 dropping; 645 __s32 drop_next; 646 }; 647 struct tc_fq_codel_xstats { 648 __u32 type; 649 union { 650 struct tc_fq_codel_qd_stats qdisc_stats; 651 struct tc_fq_codel_cl_stats class_stats; 652 }; 653 }; 654 enum { 655 TCA_FQ_UNSPEC, 656 TCA_FQ_PLIMIT, 657 TCA_FQ_FLOW_PLIMIT, 658 TCA_FQ_QUANTUM, 659 TCA_FQ_INITIAL_QUANTUM, 660 TCA_FQ_RATE_ENABLE, 661 TCA_FQ_FLOW_DEFAULT_RATE, 662 TCA_FQ_FLOW_MAX_RATE, 663 TCA_FQ_BUCKETS_LOG, 664 TCA_FQ_FLOW_REFILL_DELAY, 665 TCA_FQ_ORPHAN_MASK, 666 TCA_FQ_LOW_RATE_THRESHOLD, 667 TCA_FQ_CE_THRESHOLD, 668 __TCA_FQ_MAX 669 }; 670 #define TCA_FQ_MAX (__TCA_FQ_MAX - 1) 671 struct tc_fq_qd_stats { 672 __u64 gc_flows; 673 __u64 highprio_packets; 674 __u64 tcp_retrans; 675 __u64 throttled; 676 __u64 flows_plimit; 677 __u64 pkts_too_long; 678 __u64 allocation_errors; 679 __s64 time_next_delayed_flow; 680 __u32 flows; 681 __u32 inactive_flows; 682 __u32 throttled_flows; 683 __u32 unthrottle_latency_ns; 684 __u64 ce_mark; 685 }; 686 enum { 687 TCA_HHF_UNSPEC, 688 TCA_HHF_BACKLOG_LIMIT, 689 TCA_HHF_QUANTUM, 690 TCA_HHF_HH_FLOWS_LIMIT, 691 TCA_HHF_RESET_TIMEOUT, 692 TCA_HHF_ADMIT_BYTES, 693 TCA_HHF_EVICT_TIMEOUT, 694 TCA_HHF_NON_HH_WEIGHT, 695 __TCA_HHF_MAX 696 }; 697 #define TCA_HHF_MAX (__TCA_HHF_MAX - 1) 698 struct tc_hhf_xstats { 699 __u32 drop_overlimit; 700 __u32 hh_overlimit; 701 __u32 hh_tot_count; 702 __u32 hh_cur_count; 703 }; 704 enum { 705 TCA_PIE_UNSPEC, 706 TCA_PIE_TARGET, 707 TCA_PIE_LIMIT, 708 TCA_PIE_TUPDATE, 709 TCA_PIE_ALPHA, 710 TCA_PIE_BETA, 711 TCA_PIE_ECN, 712 TCA_PIE_BYTEMODE, 713 TCA_PIE_DQ_RATE_ESTIMATOR, 714 __TCA_PIE_MAX 715 }; 716 #define TCA_PIE_MAX (__TCA_PIE_MAX - 1) 717 struct tc_pie_xstats { 718 __u64 prob; 719 __u32 delay; 720 __u32 avg_dq_rate; 721 __u32 dq_rate_estimating; 722 __u32 packets_in; 723 __u32 dropped; 724 __u32 overlimit; 725 __u32 maxq; 726 __u32 ecn_mark; 727 }; 728 struct tc_cbs_qopt { 729 __u8 offload; 730 __u8 _pad[3]; 731 __s32 hicredit; 732 __s32 locredit; 733 __s32 idleslope; 734 __s32 sendslope; 735 }; 736 enum { 737 TCA_CBS_UNSPEC, 738 TCA_CBS_PARMS, 739 __TCA_CBS_MAX, 740 }; 741 #define TCA_CBS_MAX (__TCA_CBS_MAX - 1) 742 struct tc_etf_qopt { 743 __s32 delta; 744 __s32 clockid; 745 __u32 flags; 746 #define TC_ETF_DEADLINE_MODE_ON _BITUL(0) 747 #define TC_ETF_OFFLOAD_ON _BITUL(1) 748 #define TC_ETF_SKIP_SOCK_CHECK _BITUL(2) 749 }; 750 enum { 751 TCA_ETF_UNSPEC, 752 TCA_ETF_PARMS, 753 __TCA_ETF_MAX, 754 }; 755 #define TCA_ETF_MAX (__TCA_ETF_MAX - 1) 756 enum { 757 TCA_CAKE_UNSPEC, 758 TCA_CAKE_PAD, 759 TCA_CAKE_BASE_RATE64, 760 TCA_CAKE_DIFFSERV_MODE, 761 TCA_CAKE_ATM, 762 TCA_CAKE_FLOW_MODE, 763 TCA_CAKE_OVERHEAD, 764 TCA_CAKE_RTT, 765 TCA_CAKE_TARGET, 766 TCA_CAKE_AUTORATE, 767 TCA_CAKE_MEMORY, 768 TCA_CAKE_NAT, 769 TCA_CAKE_RAW, 770 TCA_CAKE_WASH, 771 TCA_CAKE_MPU, 772 TCA_CAKE_INGRESS, 773 TCA_CAKE_ACK_FILTER, 774 TCA_CAKE_SPLIT_GSO, 775 TCA_CAKE_FWMARK, 776 __TCA_CAKE_MAX 777 }; 778 #define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1) 779 enum { 780 __TCA_CAKE_STATS_INVALID, 781 TCA_CAKE_STATS_PAD, 782 TCA_CAKE_STATS_CAPACITY_ESTIMATE64, 783 TCA_CAKE_STATS_MEMORY_LIMIT, 784 TCA_CAKE_STATS_MEMORY_USED, 785 TCA_CAKE_STATS_AVG_NETOFF, 786 TCA_CAKE_STATS_MIN_NETLEN, 787 TCA_CAKE_STATS_MAX_NETLEN, 788 TCA_CAKE_STATS_MIN_ADJLEN, 789 TCA_CAKE_STATS_MAX_ADJLEN, 790 TCA_CAKE_STATS_TIN_STATS, 791 TCA_CAKE_STATS_DEFICIT, 792 TCA_CAKE_STATS_COBALT_COUNT, 793 TCA_CAKE_STATS_DROPPING, 794 TCA_CAKE_STATS_DROP_NEXT_US, 795 TCA_CAKE_STATS_P_DROP, 796 TCA_CAKE_STATS_BLUE_TIMER_US, 797 __TCA_CAKE_STATS_MAX 798 }; 799 #define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1) 800 enum { 801 __TCA_CAKE_TIN_STATS_INVALID, 802 TCA_CAKE_TIN_STATS_PAD, 803 TCA_CAKE_TIN_STATS_SENT_PACKETS, 804 TCA_CAKE_TIN_STATS_SENT_BYTES64, 805 TCA_CAKE_TIN_STATS_DROPPED_PACKETS, 806 TCA_CAKE_TIN_STATS_DROPPED_BYTES64, 807 TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS, 808 TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64, 809 TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS, 810 TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64, 811 TCA_CAKE_TIN_STATS_BACKLOG_PACKETS, 812 TCA_CAKE_TIN_STATS_BACKLOG_BYTES, 813 TCA_CAKE_TIN_STATS_THRESHOLD_RATE64, 814 TCA_CAKE_TIN_STATS_TARGET_US, 815 TCA_CAKE_TIN_STATS_INTERVAL_US, 816 TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS, 817 TCA_CAKE_TIN_STATS_WAY_MISSES, 818 TCA_CAKE_TIN_STATS_WAY_COLLISIONS, 819 TCA_CAKE_TIN_STATS_PEAK_DELAY_US, 820 TCA_CAKE_TIN_STATS_AVG_DELAY_US, 821 TCA_CAKE_TIN_STATS_BASE_DELAY_US, 822 TCA_CAKE_TIN_STATS_SPARSE_FLOWS, 823 TCA_CAKE_TIN_STATS_BULK_FLOWS, 824 TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS, 825 TCA_CAKE_TIN_STATS_MAX_SKBLEN, 826 TCA_CAKE_TIN_STATS_FLOW_QUANTUM, 827 __TCA_CAKE_TIN_STATS_MAX 828 }; 829 #define TCA_CAKE_TIN_STATS_MAX (__TCA_CAKE_TIN_STATS_MAX - 1) 830 #define TC_CAKE_MAX_TINS (8) 831 enum { 832 CAKE_FLOW_NONE = 0, 833 CAKE_FLOW_SRC_IP, 834 CAKE_FLOW_DST_IP, 835 CAKE_FLOW_HOSTS, 836 CAKE_FLOW_FLOWS, 837 CAKE_FLOW_DUAL_SRC, 838 CAKE_FLOW_DUAL_DST, 839 CAKE_FLOW_TRIPLE, 840 CAKE_FLOW_MAX, 841 }; 842 enum { 843 CAKE_DIFFSERV_DIFFSERV3 = 0, 844 CAKE_DIFFSERV_DIFFSERV4, 845 CAKE_DIFFSERV_DIFFSERV8, 846 CAKE_DIFFSERV_BESTEFFORT, 847 CAKE_DIFFSERV_PRECEDENCE, 848 CAKE_DIFFSERV_MAX 849 }; 850 enum { 851 CAKE_ACK_NONE = 0, 852 CAKE_ACK_FILTER, 853 CAKE_ACK_AGGRESSIVE, 854 CAKE_ACK_MAX 855 }; 856 enum { 857 CAKE_ATM_NONE = 0, 858 CAKE_ATM_ATM, 859 CAKE_ATM_PTM, 860 CAKE_ATM_MAX 861 }; 862 enum { 863 TC_TAPRIO_CMD_SET_GATES = 0x00, 864 TC_TAPRIO_CMD_SET_AND_HOLD = 0x01, 865 TC_TAPRIO_CMD_SET_AND_RELEASE = 0x02, 866 }; 867 enum { 868 TCA_TAPRIO_SCHED_ENTRY_UNSPEC, 869 TCA_TAPRIO_SCHED_ENTRY_INDEX, 870 TCA_TAPRIO_SCHED_ENTRY_CMD, 871 TCA_TAPRIO_SCHED_ENTRY_GATE_MASK, 872 TCA_TAPRIO_SCHED_ENTRY_INTERVAL, 873 __TCA_TAPRIO_SCHED_ENTRY_MAX, 874 }; 875 #define TCA_TAPRIO_SCHED_ENTRY_MAX (__TCA_TAPRIO_SCHED_ENTRY_MAX - 1) 876 enum { 877 TCA_TAPRIO_SCHED_UNSPEC, 878 TCA_TAPRIO_SCHED_ENTRY, 879 __TCA_TAPRIO_SCHED_MAX, 880 }; 881 #define TCA_TAPRIO_SCHED_MAX (__TCA_TAPRIO_SCHED_MAX - 1) 882 #define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST BIT(0) 883 #define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD BIT(1) 884 enum { 885 TCA_TAPRIO_ATTR_UNSPEC, 886 TCA_TAPRIO_ATTR_PRIOMAP, 887 TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST, 888 TCA_TAPRIO_ATTR_SCHED_BASE_TIME, 889 TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY, 890 TCA_TAPRIO_ATTR_SCHED_CLOCKID, 891 TCA_TAPRIO_PAD, 892 TCA_TAPRIO_ATTR_ADMIN_SCHED, 893 TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME, 894 TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION, 895 TCA_TAPRIO_ATTR_FLAGS, 896 TCA_TAPRIO_ATTR_TXTIME_DELAY, 897 __TCA_TAPRIO_ATTR_MAX, 898 }; 899 #define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1) 900 #endif 901