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/types.h> 22 #define TC_PRIO_BESTEFFORT 0 23 #define TC_PRIO_FILLER 1 24 #define TC_PRIO_BULK 2 25 #define TC_PRIO_INTERACTIVE_BULK 4 26 #define TC_PRIO_INTERACTIVE 6 27 #define TC_PRIO_CONTROL 7 28 #define TC_PRIO_MAX 15 29 struct tc_stats { 30 __u64 bytes; 31 __u32 packets; 32 __u32 drops; 33 __u32 overlimits; 34 __u32 bps; 35 __u32 pps; 36 __u32 qlen; 37 __u32 backlog; 38 }; 39 struct tc_estimator { 40 signed char interval; 41 unsigned char ewma_log; 42 }; 43 #define TC_H_MAJ_MASK (0xFFFF0000U) 44 #define TC_H_MIN_MASK (0x0000FFFFU) 45 #define TC_H_MAJ(h) ((h) & TC_H_MAJ_MASK) 46 #define TC_H_MIN(h) ((h) & TC_H_MIN_MASK) 47 #define TC_H_MAKE(maj,min) (((maj) & TC_H_MAJ_MASK) | ((min) & TC_H_MIN_MASK)) 48 #define TC_H_UNSPEC (0U) 49 #define TC_H_ROOT (0xFFFFFFFFU) 50 #define TC_H_INGRESS (0xFFFFFFF1U) 51 #define TC_H_CLSACT TC_H_INGRESS 52 #define TC_H_MIN_INGRESS 0xFFF2U 53 #define TC_H_MIN_EGRESS 0xFFF3U 54 enum tc_link_layer { 55 TC_LINKLAYER_UNAWARE, 56 TC_LINKLAYER_ETHERNET, 57 TC_LINKLAYER_ATM, 58 }; 59 #define TC_LINKLAYER_MASK 0x0F 60 struct tc_ratespec { 61 unsigned char cell_log; 62 __u8 linklayer; 63 unsigned short overhead; 64 short cell_align; 65 unsigned short mpu; 66 __u32 rate; 67 }; 68 #define TC_RTAB_SIZE 1024 69 struct tc_sizespec { 70 unsigned char cell_log; 71 unsigned char size_log; 72 short cell_align; 73 int overhead; 74 unsigned int linklayer; 75 unsigned int mpu; 76 unsigned int mtu; 77 unsigned int tsize; 78 }; 79 enum { 80 TCA_STAB_UNSPEC, 81 TCA_STAB_BASE, 82 TCA_STAB_DATA, 83 __TCA_STAB_MAX 84 }; 85 #define TCA_STAB_MAX (__TCA_STAB_MAX - 1) 86 struct tc_fifo_qopt { 87 __u32 limit; 88 }; 89 #define TCQ_PRIO_BANDS 16 90 #define TCQ_MIN_PRIO_BANDS 2 91 struct tc_prio_qopt { 92 int bands; 93 __u8 priomap[TC_PRIO_MAX + 1]; 94 }; 95 struct tc_multiq_qopt { 96 __u16 bands; 97 __u16 max_bands; 98 }; 99 #define TCQ_PLUG_BUFFER 0 100 #define TCQ_PLUG_RELEASE_ONE 1 101 #define TCQ_PLUG_RELEASE_INDEFINITE 2 102 #define TCQ_PLUG_LIMIT 3 103 struct tc_plug_qopt { 104 int action; 105 __u32 limit; 106 }; 107 struct tc_tbf_qopt { 108 struct tc_ratespec rate; 109 struct tc_ratespec peakrate; 110 __u32 limit; 111 __u32 buffer; 112 __u32 mtu; 113 }; 114 enum { 115 TCA_TBF_UNSPEC, 116 TCA_TBF_PARMS, 117 TCA_TBF_RTAB, 118 TCA_TBF_PTAB, 119 TCA_TBF_RATE64, 120 TCA_TBF_PRATE64, 121 TCA_TBF_BURST, 122 TCA_TBF_PBURST, 123 TCA_TBF_PAD, 124 __TCA_TBF_MAX, 125 }; 126 #define TCA_TBF_MAX (__TCA_TBF_MAX - 1) 127 struct tc_sfq_qopt { 128 unsigned quantum; 129 int perturb_period; 130 __u32 limit; 131 unsigned divisor; 132 unsigned flows; 133 }; 134 struct tc_sfqred_stats { 135 __u32 prob_drop; 136 __u32 forced_drop; 137 __u32 prob_mark; 138 __u32 forced_mark; 139 __u32 prob_mark_head; 140 __u32 forced_mark_head; 141 }; 142 struct tc_sfq_qopt_v1 { 143 struct tc_sfq_qopt v0; 144 unsigned int depth; 145 unsigned int headdrop; 146 __u32 limit; 147 __u32 qth_min; 148 __u32 qth_max; 149 unsigned char Wlog; 150 unsigned char Plog; 151 unsigned char Scell_log; 152 unsigned char flags; 153 __u32 max_P; 154 struct tc_sfqred_stats stats; 155 }; 156 struct tc_sfq_xstats { 157 __s32 allot; 158 }; 159 enum { 160 TCA_RED_UNSPEC, 161 TCA_RED_PARMS, 162 TCA_RED_STAB, 163 TCA_RED_MAX_P, 164 __TCA_RED_MAX, 165 }; 166 #define TCA_RED_MAX (__TCA_RED_MAX - 1) 167 struct tc_red_qopt { 168 __u32 limit; 169 __u32 qth_min; 170 __u32 qth_max; 171 unsigned char Wlog; 172 unsigned char Plog; 173 unsigned char Scell_log; 174 unsigned char flags; 175 #define TC_RED_ECN 1 176 #define TC_RED_HARDDROP 2 177 #define TC_RED_ADAPTATIVE 4 178 }; 179 struct tc_red_xstats { 180 __u32 early; 181 __u32 pdrop; 182 __u32 other; 183 __u32 marked; 184 }; 185 #define MAX_DPs 16 186 enum { 187 TCA_GRED_UNSPEC, 188 TCA_GRED_PARMS, 189 TCA_GRED_STAB, 190 TCA_GRED_DPS, 191 TCA_GRED_MAX_P, 192 TCA_GRED_LIMIT, 193 __TCA_GRED_MAX, 194 }; 195 #define TCA_GRED_MAX (__TCA_GRED_MAX - 1) 196 struct tc_gred_qopt { 197 __u32 limit; 198 __u32 qth_min; 199 __u32 qth_max; 200 __u32 DP; 201 __u32 backlog; 202 __u32 qave; 203 __u32 forced; 204 __u32 early; 205 __u32 other; 206 __u32 pdrop; 207 __u8 Wlog; 208 __u8 Plog; 209 __u8 Scell_log; 210 __u8 prio; 211 __u32 packets; 212 __u32 bytesin; 213 }; 214 struct tc_gred_sopt { 215 __u32 DPs; 216 __u32 def_DP; 217 __u8 grio; 218 __u8 flags; 219 __u16 pad1; 220 }; 221 enum { 222 TCA_CHOKE_UNSPEC, 223 TCA_CHOKE_PARMS, 224 TCA_CHOKE_STAB, 225 TCA_CHOKE_MAX_P, 226 __TCA_CHOKE_MAX, 227 }; 228 #define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1) 229 struct tc_choke_qopt { 230 __u32 limit; 231 __u32 qth_min; 232 __u32 qth_max; 233 unsigned char Wlog; 234 unsigned char Plog; 235 unsigned char Scell_log; 236 unsigned char flags; 237 }; 238 struct tc_choke_xstats { 239 __u32 early; 240 __u32 pdrop; 241 __u32 other; 242 __u32 marked; 243 __u32 matched; 244 }; 245 #define TC_HTB_NUMPRIO 8 246 #define TC_HTB_MAXDEPTH 8 247 #define TC_HTB_PROTOVER 3 248 struct tc_htb_opt { 249 struct tc_ratespec rate; 250 struct tc_ratespec ceil; 251 __u32 buffer; 252 __u32 cbuffer; 253 __u32 quantum; 254 __u32 level; 255 __u32 prio; 256 }; 257 struct tc_htb_glob { 258 __u32 version; 259 __u32 rate2quantum; 260 __u32 defcls; 261 __u32 debug; 262 __u32 direct_pkts; 263 }; 264 enum { 265 TCA_HTB_UNSPEC, 266 TCA_HTB_PARMS, 267 TCA_HTB_INIT, 268 TCA_HTB_CTAB, 269 TCA_HTB_RTAB, 270 TCA_HTB_DIRECT_QLEN, 271 TCA_HTB_RATE64, 272 TCA_HTB_CEIL64, 273 TCA_HTB_PAD, 274 __TCA_HTB_MAX, 275 }; 276 #define TCA_HTB_MAX (__TCA_HTB_MAX - 1) 277 struct tc_htb_xstats { 278 __u32 lends; 279 __u32 borrows; 280 __u32 giants; 281 __u32 tokens; 282 __u32 ctokens; 283 }; 284 struct tc_hfsc_qopt { 285 __u16 defcls; 286 }; 287 struct tc_service_curve { 288 __u32 m1; 289 __u32 d; 290 __u32 m2; 291 }; 292 struct tc_hfsc_stats { 293 __u64 work; 294 __u64 rtwork; 295 __u32 period; 296 __u32 level; 297 }; 298 enum { 299 TCA_HFSC_UNSPEC, 300 TCA_HFSC_RSC, 301 TCA_HFSC_FSC, 302 TCA_HFSC_USC, 303 __TCA_HFSC_MAX, 304 }; 305 #define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1) 306 #define TC_CBQ_MAXPRIO 8 307 #define TC_CBQ_MAXLEVEL 8 308 #define TC_CBQ_DEF_EWMA 5 309 struct tc_cbq_lssopt { 310 unsigned char change; 311 unsigned char flags; 312 #define TCF_CBQ_LSS_BOUNDED 1 313 #define TCF_CBQ_LSS_ISOLATED 2 314 unsigned char ewma_log; 315 unsigned char level; 316 #define TCF_CBQ_LSS_FLAGS 1 317 #define TCF_CBQ_LSS_EWMA 2 318 #define TCF_CBQ_LSS_MAXIDLE 4 319 #define TCF_CBQ_LSS_MINIDLE 8 320 #define TCF_CBQ_LSS_OFFTIME 0x10 321 #define TCF_CBQ_LSS_AVPKT 0x20 322 __u32 maxidle; 323 __u32 minidle; 324 __u32 offtime; 325 __u32 avpkt; 326 }; 327 struct tc_cbq_wrropt { 328 unsigned char flags; 329 unsigned char priority; 330 unsigned char cpriority; 331 unsigned char __reserved; 332 __u32 allot; 333 __u32 weight; 334 }; 335 struct tc_cbq_ovl { 336 unsigned char strategy; 337 #define TC_CBQ_OVL_CLASSIC 0 338 #define TC_CBQ_OVL_DELAY 1 339 #define TC_CBQ_OVL_LOWPRIO 2 340 #define TC_CBQ_OVL_DROP 3 341 #define TC_CBQ_OVL_RCLASSIC 4 342 unsigned char priority2; 343 __u16 pad; 344 __u32 penalty; 345 }; 346 struct tc_cbq_police { 347 unsigned char police; 348 unsigned char __res1; 349 unsigned short __res2; 350 }; 351 struct tc_cbq_fopt { 352 __u32 split; 353 __u32 defmap; 354 __u32 defchange; 355 }; 356 struct tc_cbq_xstats { 357 __u32 borrows; 358 __u32 overactions; 359 __s32 avgidle; 360 __s32 undertime; 361 }; 362 enum { 363 TCA_CBQ_UNSPEC, 364 TCA_CBQ_LSSOPT, 365 TCA_CBQ_WRROPT, 366 TCA_CBQ_FOPT, 367 TCA_CBQ_OVL_STRATEGY, 368 TCA_CBQ_RATE, 369 TCA_CBQ_RTAB, 370 TCA_CBQ_POLICE, 371 __TCA_CBQ_MAX, 372 }; 373 #define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1) 374 enum { 375 TCA_DSMARK_UNSPEC, 376 TCA_DSMARK_INDICES, 377 TCA_DSMARK_DEFAULT_INDEX, 378 TCA_DSMARK_SET_TC_INDEX, 379 TCA_DSMARK_MASK, 380 TCA_DSMARK_VALUE, 381 __TCA_DSMARK_MAX, 382 }; 383 #define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1) 384 enum { 385 TCA_ATM_UNSPEC, 386 TCA_ATM_FD, 387 TCA_ATM_PTR, 388 TCA_ATM_HDR, 389 TCA_ATM_EXCESS, 390 TCA_ATM_ADDR, 391 TCA_ATM_STATE, 392 __TCA_ATM_MAX, 393 }; 394 #define TCA_ATM_MAX (__TCA_ATM_MAX - 1) 395 enum { 396 TCA_NETEM_UNSPEC, 397 TCA_NETEM_CORR, 398 TCA_NETEM_DELAY_DIST, 399 TCA_NETEM_REORDER, 400 TCA_NETEM_CORRUPT, 401 TCA_NETEM_LOSS, 402 TCA_NETEM_RATE, 403 TCA_NETEM_ECN, 404 TCA_NETEM_RATE64, 405 TCA_NETEM_PAD, 406 __TCA_NETEM_MAX, 407 }; 408 #define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1) 409 struct tc_netem_qopt { 410 __u32 latency; 411 __u32 limit; 412 __u32 loss; 413 __u32 gap; 414 __u32 duplicate; 415 __u32 jitter; 416 }; 417 struct tc_netem_corr { 418 __u32 delay_corr; 419 __u32 loss_corr; 420 __u32 dup_corr; 421 }; 422 struct tc_netem_reorder { 423 __u32 probability; 424 __u32 correlation; 425 }; 426 struct tc_netem_corrupt { 427 __u32 probability; 428 __u32 correlation; 429 }; 430 struct tc_netem_rate { 431 __u32 rate; 432 __s32 packet_overhead; 433 __u32 cell_size; 434 __s32 cell_overhead; 435 }; 436 enum { 437 NETEM_LOSS_UNSPEC, 438 NETEM_LOSS_GI, 439 NETEM_LOSS_GE, 440 __NETEM_LOSS_MAX 441 }; 442 #define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1) 443 struct tc_netem_gimodel { 444 __u32 p13; 445 __u32 p31; 446 __u32 p32; 447 __u32 p14; 448 __u32 p23; 449 }; 450 struct tc_netem_gemodel { 451 __u32 p; 452 __u32 r; 453 __u32 h; 454 __u32 k1; 455 }; 456 #define NETEM_DIST_SCALE 8192 457 #define NETEM_DIST_MAX 16384 458 enum { 459 TCA_DRR_UNSPEC, 460 TCA_DRR_QUANTUM, 461 __TCA_DRR_MAX 462 }; 463 #define TCA_DRR_MAX (__TCA_DRR_MAX - 1) 464 struct tc_drr_stats { 465 __u32 deficit; 466 }; 467 #define TC_QOPT_BITMASK 15 468 #define TC_QOPT_MAX_QUEUE 16 469 struct tc_mqprio_qopt { 470 __u8 num_tc; 471 __u8 prio_tc_map[TC_QOPT_BITMASK + 1]; 472 __u8 hw; 473 __u16 count[TC_QOPT_MAX_QUEUE]; 474 __u16 offset[TC_QOPT_MAX_QUEUE]; 475 }; 476 enum { 477 TCA_SFB_UNSPEC, 478 TCA_SFB_PARMS, 479 __TCA_SFB_MAX, 480 }; 481 #define TCA_SFB_MAX (__TCA_SFB_MAX - 1) 482 struct tc_sfb_qopt { 483 __u32 rehash_interval; 484 __u32 warmup_time; 485 __u32 max; 486 __u32 bin_size; 487 __u32 increment; 488 __u32 decrement; 489 __u32 limit; 490 __u32 penalty_rate; 491 __u32 penalty_burst; 492 }; 493 struct tc_sfb_xstats { 494 __u32 earlydrop; 495 __u32 penaltydrop; 496 __u32 bucketdrop; 497 __u32 queuedrop; 498 __u32 childdrop; 499 __u32 marked; 500 __u32 maxqlen; 501 __u32 maxprob; 502 __u32 avgprob; 503 }; 504 #define SFB_MAX_PROB 0xFFFF 505 enum { 506 TCA_QFQ_UNSPEC, 507 TCA_QFQ_WEIGHT, 508 TCA_QFQ_LMAX, 509 __TCA_QFQ_MAX 510 }; 511 #define TCA_QFQ_MAX (__TCA_QFQ_MAX - 1) 512 struct tc_qfq_stats { 513 __u32 weight; 514 __u32 lmax; 515 }; 516 enum { 517 TCA_CODEL_UNSPEC, 518 TCA_CODEL_TARGET, 519 TCA_CODEL_LIMIT, 520 TCA_CODEL_INTERVAL, 521 TCA_CODEL_ECN, 522 TCA_CODEL_CE_THRESHOLD, 523 __TCA_CODEL_MAX 524 }; 525 #define TCA_CODEL_MAX (__TCA_CODEL_MAX - 1) 526 struct tc_codel_xstats { 527 __u32 maxpacket; 528 __u32 count; 529 __u32 lastcount; 530 __u32 ldelay; 531 __s32 drop_next; 532 __u32 drop_overlimit; 533 __u32 ecn_mark; 534 __u32 dropping; 535 __u32 ce_mark; 536 }; 537 enum { 538 TCA_FQ_CODEL_UNSPEC, 539 TCA_FQ_CODEL_TARGET, 540 TCA_FQ_CODEL_LIMIT, 541 TCA_FQ_CODEL_INTERVAL, 542 TCA_FQ_CODEL_ECN, 543 TCA_FQ_CODEL_FLOWS, 544 TCA_FQ_CODEL_QUANTUM, 545 TCA_FQ_CODEL_CE_THRESHOLD, 546 TCA_FQ_CODEL_DROP_BATCH_SIZE, 547 TCA_FQ_CODEL_MEMORY_LIMIT, 548 __TCA_FQ_CODEL_MAX 549 }; 550 #define TCA_FQ_CODEL_MAX (__TCA_FQ_CODEL_MAX - 1) 551 enum { 552 TCA_FQ_CODEL_XSTATS_QDISC, 553 TCA_FQ_CODEL_XSTATS_CLASS, 554 }; 555 struct tc_fq_codel_qd_stats { 556 __u32 maxpacket; 557 __u32 drop_overlimit; 558 __u32 ecn_mark; 559 __u32 new_flow_count; 560 __u32 new_flows_len; 561 __u32 old_flows_len; 562 __u32 ce_mark; 563 __u32 memory_usage; 564 __u32 drop_overmemory; 565 }; 566 struct tc_fq_codel_cl_stats { 567 __s32 deficit; 568 __u32 ldelay; 569 __u32 count; 570 __u32 lastcount; 571 __u32 dropping; 572 __s32 drop_next; 573 }; 574 struct tc_fq_codel_xstats { 575 __u32 type; 576 union { 577 struct tc_fq_codel_qd_stats qdisc_stats; 578 struct tc_fq_codel_cl_stats class_stats; 579 }; 580 }; 581 enum { 582 TCA_FQ_UNSPEC, 583 TCA_FQ_PLIMIT, 584 TCA_FQ_FLOW_PLIMIT, 585 TCA_FQ_QUANTUM, 586 TCA_FQ_INITIAL_QUANTUM, 587 TCA_FQ_RATE_ENABLE, 588 TCA_FQ_FLOW_DEFAULT_RATE, 589 TCA_FQ_FLOW_MAX_RATE, 590 TCA_FQ_BUCKETS_LOG, 591 TCA_FQ_FLOW_REFILL_DELAY, 592 TCA_FQ_ORPHAN_MASK, 593 TCA_FQ_LOW_RATE_THRESHOLD, 594 __TCA_FQ_MAX 595 }; 596 #define TCA_FQ_MAX (__TCA_FQ_MAX - 1) 597 struct tc_fq_qd_stats { 598 __u64 gc_flows; 599 __u64 highprio_packets; 600 __u64 tcp_retrans; 601 __u64 throttled; 602 __u64 flows_plimit; 603 __u64 pkts_too_long; 604 __u64 allocation_errors; 605 __s64 time_next_delayed_flow; 606 __u32 flows; 607 __u32 inactive_flows; 608 __u32 throttled_flows; 609 __u32 unthrottle_latency_ns; 610 }; 611 enum { 612 TCA_HHF_UNSPEC, 613 TCA_HHF_BACKLOG_LIMIT, 614 TCA_HHF_QUANTUM, 615 TCA_HHF_HH_FLOWS_LIMIT, 616 TCA_HHF_RESET_TIMEOUT, 617 TCA_HHF_ADMIT_BYTES, 618 TCA_HHF_EVICT_TIMEOUT, 619 TCA_HHF_NON_HH_WEIGHT, 620 __TCA_HHF_MAX 621 }; 622 #define TCA_HHF_MAX (__TCA_HHF_MAX - 1) 623 struct tc_hhf_xstats { 624 __u32 drop_overlimit; 625 __u32 hh_overlimit; 626 __u32 hh_tot_count; 627 __u32 hh_cur_count; 628 }; 629 enum { 630 TCA_PIE_UNSPEC, 631 TCA_PIE_TARGET, 632 TCA_PIE_LIMIT, 633 TCA_PIE_TUPDATE, 634 TCA_PIE_ALPHA, 635 TCA_PIE_BETA, 636 TCA_PIE_ECN, 637 TCA_PIE_BYTEMODE, 638 __TCA_PIE_MAX 639 }; 640 #define TCA_PIE_MAX (__TCA_PIE_MAX - 1) 641 struct tc_pie_xstats { 642 __u32 prob; 643 __u32 delay; 644 __u32 avg_dq_rate; 645 __u32 packets_in; 646 __u32 dropped; 647 __u32 overlimit; 648 __u32 maxq; 649 __u32 ecn_mark; 650 }; 651 #endif 652