diff options
Diffstat (limited to 'include/linux/pkt_sched.h')
| -rw-r--r-- | include/linux/pkt_sched.h | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/include/linux/pkt_sched.h b/include/linux/pkt_sched.h index 2cfa4bc8dea6..b1032a3fafdc 100644 --- a/include/linux/pkt_sched.h +++ b/include/linux/pkt_sched.h | |||
| @@ -247,6 +247,35 @@ struct tc_gred_sopt { | |||
| 247 | __u16 pad1; | 247 | __u16 pad1; |
| 248 | }; | 248 | }; |
| 249 | 249 | ||
| 250 | /* CHOKe section */ | ||
| 251 | |||
| 252 | enum { | ||
| 253 | TCA_CHOKE_UNSPEC, | ||
| 254 | TCA_CHOKE_PARMS, | ||
| 255 | TCA_CHOKE_STAB, | ||
| 256 | __TCA_CHOKE_MAX, | ||
| 257 | }; | ||
| 258 | |||
| 259 | #define TCA_CHOKE_MAX (__TCA_CHOKE_MAX - 1) | ||
| 260 | |||
| 261 | struct tc_choke_qopt { | ||
| 262 | __u32 limit; /* Hard queue length (packets) */ | ||
| 263 | __u32 qth_min; /* Min average threshold (packets) */ | ||
| 264 | __u32 qth_max; /* Max average threshold (packets) */ | ||
| 265 | unsigned char Wlog; /* log(W) */ | ||
| 266 | unsigned char Plog; /* log(P_max/(qth_max-qth_min)) */ | ||
| 267 | unsigned char Scell_log; /* cell size for idle damping */ | ||
| 268 | unsigned char flags; /* see RED flags */ | ||
| 269 | }; | ||
| 270 | |||
| 271 | struct tc_choke_xstats { | ||
| 272 | __u32 early; /* Early drops */ | ||
| 273 | __u32 pdrop; /* Drops due to queue limits */ | ||
| 274 | __u32 other; /* Drops due to drop() calls */ | ||
| 275 | __u32 marked; /* Marked packets */ | ||
| 276 | __u32 matched; /* Drops due to flow match */ | ||
| 277 | }; | ||
| 278 | |||
| 250 | /* HTB section */ | 279 | /* HTB section */ |
| 251 | #define TC_HTB_NUMPRIO 8 | 280 | #define TC_HTB_NUMPRIO 8 |
| 252 | #define TC_HTB_MAXDEPTH 8 | 281 | #define TC_HTB_MAXDEPTH 8 |
| @@ -435,6 +464,7 @@ enum { | |||
| 435 | TCA_NETEM_DELAY_DIST, | 464 | TCA_NETEM_DELAY_DIST, |
| 436 | TCA_NETEM_REORDER, | 465 | TCA_NETEM_REORDER, |
| 437 | TCA_NETEM_CORRUPT, | 466 | TCA_NETEM_CORRUPT, |
| 467 | TCA_NETEM_LOSS, | ||
| 438 | __TCA_NETEM_MAX, | 468 | __TCA_NETEM_MAX, |
| 439 | }; | 469 | }; |
| 440 | 470 | ||
| @@ -465,7 +495,33 @@ struct tc_netem_corrupt { | |||
| 465 | __u32 correlation; | 495 | __u32 correlation; |
| 466 | }; | 496 | }; |
| 467 | 497 | ||
| 498 | enum { | ||
| 499 | NETEM_LOSS_UNSPEC, | ||
| 500 | NETEM_LOSS_GI, /* General Intuitive - 4 state model */ | ||
| 501 | NETEM_LOSS_GE, /* Gilbert Elliot models */ | ||
| 502 | __NETEM_LOSS_MAX | ||
| 503 | }; | ||
| 504 | #define NETEM_LOSS_MAX (__NETEM_LOSS_MAX - 1) | ||
| 505 | |||
| 506 | /* State transition probablities for 4 state model */ | ||
| 507 | struct tc_netem_gimodel { | ||
| 508 | __u32 p13; | ||
| 509 | __u32 p31; | ||
| 510 | __u32 p32; | ||
| 511 | __u32 p14; | ||
| 512 | __u32 p23; | ||
| 513 | }; | ||
| 514 | |||
| 515 | /* Gilbert-Elliot models */ | ||
| 516 | struct tc_netem_gemodel { | ||
| 517 | __u32 p; | ||
| 518 | __u32 r; | ||
| 519 | __u32 h; | ||
| 520 | __u32 k1; | ||
| 521 | }; | ||
| 522 | |||
| 468 | #define NETEM_DIST_SCALE 8192 | 523 | #define NETEM_DIST_SCALE 8192 |
| 524 | #define NETEM_DIST_MAX 16384 | ||
| 469 | 525 | ||
| 470 | /* DRR */ | 526 | /* DRR */ |
| 471 | 527 | ||
| @@ -481,4 +537,55 @@ struct tc_drr_stats { | |||
| 481 | __u32 deficit; | 537 | __u32 deficit; |
| 482 | }; | 538 | }; |
| 483 | 539 | ||
| 540 | /* MQPRIO */ | ||
| 541 | #define TC_QOPT_BITMASK 15 | ||
| 542 | #define TC_QOPT_MAX_QUEUE 16 | ||
| 543 | |||
| 544 | struct tc_mqprio_qopt { | ||
| 545 | __u8 num_tc; | ||
| 546 | __u8 prio_tc_map[TC_QOPT_BITMASK + 1]; | ||
| 547 | __u8 hw; | ||
| 548 | __u16 count[TC_QOPT_MAX_QUEUE]; | ||
| 549 | __u16 offset[TC_QOPT_MAX_QUEUE]; | ||
| 550 | }; | ||
| 551 | |||
| 552 | /* SFB */ | ||
| 553 | |||
| 554 | enum { | ||
| 555 | TCA_SFB_UNSPEC, | ||
| 556 | TCA_SFB_PARMS, | ||
| 557 | __TCA_SFB_MAX, | ||
| 558 | }; | ||
| 559 | |||
| 560 | #define TCA_SFB_MAX (__TCA_SFB_MAX - 1) | ||
| 561 | |||
| 562 | /* | ||
| 563 | * Note: increment, decrement are Q0.16 fixed-point values. | ||
| 564 | */ | ||
| 565 | struct tc_sfb_qopt { | ||
| 566 | __u32 rehash_interval; /* delay between hash move, in ms */ | ||
| 567 | __u32 warmup_time; /* double buffering warmup time in ms (warmup_time < rehash_interval) */ | ||
| 568 | __u32 max; /* max len of qlen_min */ | ||
| 569 | __u32 bin_size; /* maximum queue length per bin */ | ||
| 570 | __u32 increment; /* probability increment, (d1 in Blue) */ | ||
| 571 | __u32 decrement; /* probability decrement, (d2 in Blue) */ | ||
| 572 | __u32 limit; /* max SFB queue length */ | ||
| 573 | __u32 penalty_rate; /* inelastic flows are rate limited to 'rate' pps */ | ||
| 574 | __u32 penalty_burst; | ||
| 575 | }; | ||
| 576 | |||
| 577 | struct tc_sfb_xstats { | ||
| 578 | __u32 earlydrop; | ||
| 579 | __u32 penaltydrop; | ||
| 580 | __u32 bucketdrop; | ||
| 581 | __u32 queuedrop; | ||
| 582 | __u32 childdrop; /* drops in child qdisc */ | ||
| 583 | __u32 marked; | ||
| 584 | __u32 maxqlen; | ||
| 585 | __u32 maxprob; | ||
| 586 | __u32 avgprob; | ||
| 587 | }; | ||
| 588 | |||
| 589 | #define SFB_MAX_PROB 0xFFFF | ||
| 590 | |||
| 484 | #endif | 591 | #endif |
