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