]> git.pld-linux.org Git - packages/linux-libc-headers.git/blobdiff - linux-libc-headers-wrr.patch
- updated to 6.1.6
[packages/linux-libc-headers.git] / linux-libc-headers-wrr.patch
index 7142ca73b13f18f3bfec241dc03c5b9eb76c80e2..6ef1307da2868a00ec79b21eb3d1db965581a7e2 100644 (file)
-diff -urN linux-libc-headers-2.6.8.0.org/include/linux/pkt_sched.h linux-libc-headers-2.6.8.0/include/linux/pkt_sched.h
---- linux-libc-headers-2.6.8.0.org/include/linux/pkt_sched.h   2004-08-19 21:26:04.663364128 +0200
-+++ linux-libc-headers-2.6.8.0/include/linux/pkt_sched.h       2004-08-19 21:28:02.623431472 +0200
-@@ -2,7 +2,8 @@
- #define __LINUX_PKT_SCHED_H
+--- linux-4.15/include/uapi/linux/pkt_sched.h.orig     2018-02-02 18:40:34.642685783 +0100
++++ linux-4.15/include/uapi/linux/pkt_sched.h  2018-02-02 18:46:35.879348325 +0100
+@@ -26,6 +26,11 @@
  
- #include <asm/types.h>
--
+ #define TC_PRIO_MAX                   15
++#ifndef __KERNEL__
 +#include <sys/time.h>
++#endif
 +#include <linux/if_ether.h>
- /* Logical priority bands not depending on specific packet scheduler.
-    Every scheduler will map them to real traffic classes, if it has
-@@ -424,4 +425,114 @@
-       __u32   duplicate;      /* random packet dup  (0=none ~0=100%) */
-       __u32   jitter;         /* random jitter in latency (us) */
- };
 +
+ /* Generic queue statistics, available for all the elements.
+    Particular schedulers may have also their private records.
+  */
+@@ -959,4 +964,96 @@
+ #define TCA_ETS_MAX (__TCA_ETS_MAX - 1)
 +/* WRR section */
 +
-+// A sub weight and of a class
-+// All numbers are represented as parts of (2^64-1).
++/*
++ * A sub weight and of a class
++ * All numbers are represented as parts of (2^64-1).
++ */
 +struct tc_wrr_class_weight {
-+  __u64 val;  // Current value                        (0 is not valid)
-+  __u64 decr; // Value pr bytes                       (2^64-1 is not valid)
-+  __u64 incr; // Value pr seconds                     (2^64-1 is not valid)
-+  __u64 min;  // Minimal value                        (0 is not valid)
-+  __u64 max;  // Minimal value                        (0 is not valid)
-+
-+  // The time where the above information was correct:
-+  time_t tim;
++      __u64   val;    // Current value        (0 is not valid)
++      __u64   decr;   // Value pr bytes       (2^64-1 is not valid)
++      __u64   incr;   // Value pr seconds     (2^64-1 is not valid)
++      __u64   min;    // Minimal value        (0 is not valid)
++      __u64   max;    // Minimal value        (0 is not valid)
++      time_t  tim;    // The time where the above information was correct
 +};
 +
-+// Pakcet send when modifying a class:
++/* Packet send when modifying a class */
 +struct tc_wrr_class_modf {
-+  // Not-valid values are ignored.
-+  struct tc_wrr_class_weight weight1;
-+  struct tc_wrr_class_weight weight2;
++      /* Not-valid values are ignored */
++      struct tc_wrr_class_weight weight1;
++      struct tc_wrr_class_weight weight2;
 +};
 +
-+// Packet returned when quering a class:
++/* Packet returned when quering a class */
 +struct tc_wrr_class_stats {
-+  char used; // If this is false the information below is invalid
-+
-+  struct tc_wrr_class_modf class_modf;
-+
-+  unsigned char addr[ETH_ALEN];
-+  char usemac;    // True if addr is a MAC address, else it is an IP address
-+                  // (this value is only for convience, it is always the same
-+                //  value as in the qdisc)
-+  int heappos;    // Current heap position or 0 if not in heap  
-+  __u64 penal_ls; // Penalty value in heap (ls)
-+  __u64 penal_ms; // Penalty value in heap (ms)
++      char    used;                   /* If this is false the information below is invalid */
++      struct tc_wrr_class_modf class_modf;
++      unsigned char addr[ETH_ALEN];
++      char    usemac;                 /* True if addr is a MAC address, else it is an IP address
++                                         (this value is only for convience, it is always the same
++                                          value as in the qdisc) */
++      int     heappos;                /* Current heap position or 0 if not in heap */
++      __u64   penal_ls;               /* Penalty value in heap (ls) */
++      __u64   penal_ms;               /* Penalty value in heap (ms) */
 +};
 +
-+// Qdisc-wide penalty information (boolean values - 2 not valid)
++/* Qdisc-wide penalty information (boolean values - 2 not valid) */
 +struct tc_wrr_qdisc_weight {
-+  char weight_mode; // 0=No automatic change to weight
-+                    // 1=Decrease normally
-+                  // 2=Also multiply with number of machines
-+                  // 3=Instead multiply with priority divided
-+                  //   with priority of the other.
-+                  // -1=no change
++      signed char     weight_mode;    /* 0=No automatic change to weight
++                                         1=Decrease normally
++                                         2=Also multiply with number of machines
++                                         3=Instead multiply with priority divided
++                                           with priority of the other.
++                                         -1=no change */
 +};
 +
-+// Packet send when modifing a qdisc:
++/* Packet send when modifing a qdisc */
 +struct tc_wrr_qdisc_modf {
-+  // Not-valid values are ignored:
-+  struct tc_wrr_qdisc_weight weight1;
-+  struct tc_wrr_qdisc_weight weight2;
++      /* Not-valid values are ignored */
++      struct tc_wrr_qdisc_weight weight1;
++      struct tc_wrr_qdisc_weight weight2;
 +};
 +
-+// Packet send when creating a qdisc:
++/* Packet send when creating a qdisc */
 +struct tc_wrr_qdisc_crt {
-+  struct tc_wrr_qdisc_modf qdisc_modf;
-+  
-+  char srcaddr;      // 1=lookup source, 0=lookup destination
-+  char usemac;       // 1=Classify on MAC addresses, 0=classify on IP
-+  char usemasq;      // 1=Classify based on masqgrading - only valid
-+                     //   if usemac is zero
-+  int bands_max;     // Maximal number of bands (i.e.: classes)  
-+  int proxy_maxconn; // If differnt from 0 then we support proxy remapping
-+                     // of packets. And this is the number of maximal
-+                   // concurrent proxy connections.
++      struct tc_wrr_qdisc_modf qdisc_modf;
++      char    srcaddr;        /* 1=lookup source, 0=lookup destination */
++      char    usemac;         /* 1=Classify on MAC addresses, 0=classify on IP */
++      char    usemasq;        /* 1=Classify based on masqgrading - only valid
++                                   if usemac is zero */
++      int     bands_max;      /* Maximal number of bands (i.e.: classes) */
++      int     proxy_maxconn;  /* If differnt from 0 then we support proxy remapping
++                                 of packets. And this is the number of maximal
++                                 concurrent proxy connections. */
 +};
 +
-+// Packet returned when quering a qdisc:
++/* Packet returned when quering a qdisc */
 +struct tc_wrr_qdisc_stats {
-+  struct tc_wrr_qdisc_crt qdisc_crt;
-+  int proxy_curconn;               
-+  int nodes_in_heap;  // Current number of bands wanting to send something
-+  int bands_cur;      // Current number of bands used (i.e.: MAC/IP addresses seen)
-+  int bands_reused;   // Number of times this band has been reused.
-+  int packets_requed; // Number of times packets have been requeued.
-+  __u64 priosum;      // Sum of priorities in heap where 1 is 2^32
++      struct tc_wrr_qdisc_crt qdisc_crt;
++      int     proxy_curconn;               
++      int     nodes_in_heap;  /* Current number of bands wanting to send something */
++      int     bands_cur;      /* Current number of bands used (i.e.: MAC/IP addresses seen) */
++      int     bands_reused;   /* Number of times this band has been reused. */
++      int     packets_requed; /* Number of times packets have been requeued. */
++      __u64   priosum;        /* Sum of priorities in heap where 1 is 2^32 */
 +};
 +
 +struct tc_wrr_qdisc_modf_std {
-+  // This indicates which of the tc_wrr_qdisc_modf structers this is:
-+  char proxy; // 0=This struct
-+
-+  // Should we also change a class?
-+  char change_class;
-+
-+  // Only valid if change_class is false
-+  struct tc_wrr_qdisc_modf qdisc_modf;
-+
-+  // Only valid if change_class is true:
-+  unsigned char addr[ETH_ALEN]; // Class to change (non-used bytes should be 0)
-+  struct tc_wrr_class_modf class_modf; // The change    
++      char    proxy;          /* This indicates which of the tc_wrr_qdisc_modf structers this is. 0=This struct */
++      char    change_class;   /* Should we also change a class? */
++      struct tc_wrr_qdisc_modf qdisc_modf; /* Only valid if change_class is false */
++      unsigned char addr[ETH_ALEN]; /* Class to change (non-used bytes should be 0). Valid only of change_class is true */
++      struct tc_wrr_class_modf class_modf; /* The change */
 +};
 +
-+// Used for proxyrempping:
++/* Used for proxyremapping */
 +struct tc_wrr_qdisc_modf_proxy {
-+  // This indicates which of the tc_wrr_qdisc_modf structers this is:
-+  char proxy; // 1=This struct
-+  
-+  // This is 1 if the proxyremap information should be reset
-+  char reset;
-+  
-+  // changec is the number of elements in changes.
-+  int changec; 
-+  
-+  // This is an array of type ProxyRemapBlock:
-+  long changes[0];  
++      char    proxy;          /* This indicates which of the tc_wrr_qdisc_modf structers this is. 1=This struct */
++      char    reset;          /* This is 1 if the proxyremap information should be reset */
++      int     changec;        /* changec is the number of elements in changes. */
++      long    changes[0];     /* This is an array of type ProxyRemapBlock */
 +};
 +
  #endif
-diff -urN linux-libc-headers-2.6.8.0.org/include/linux/pkt_sched.h.orig linux-libc-headers-2.6.8.0/include/linux/pkt_sched.h.orig
---- linux-libc-headers-2.6.8.0.org/include/linux/pkt_sched.h.orig      2004-08-19 21:25:38.160393192 +0200
-+++ linux-libc-headers-2.6.8.0/include/linux/pkt_sched.h.orig  1970-01-01 01:00:00.000000000 +0100
-@@ -1,417 +0,0 @@
--#ifndef __LINUX_PKT_SCHED_H
--#define __LINUX_PKT_SCHED_H
--
--#include <asm/types.h>
--
--
--/* Logical priority bands not depending on specific packet scheduler.
--   Every scheduler will map them to real traffic classes, if it has
--   no more precise mechanism to classify packets.
--
--   These numbers have no special meaning, though their coincidence
--   with obsolete IPv6 values is not occasional :-). New IPv6 drafts
--   preferred full anarchy inspired by diffserv group.
--
--   Note: TC_PRIO_BESTEFFORT does not mean that it is the most unhappy
--   class, actually, as rule it will be handled with more care than
--   filler or even bulk.
-- */
--
--#define TC_PRIO_BESTEFFORT            0
--#define TC_PRIO_FILLER                        1
--#define TC_PRIO_BULK                  2
--#define TC_PRIO_INTERACTIVE_BULK      4
--#define TC_PRIO_INTERACTIVE           6
--#define TC_PRIO_CONTROL                       7
--
--#define TC_PRIO_MAX                   15
--
--/* Generic queue statistics, available for all the elements.
--   Particular schedulers may have also their private records.
-- */
--
--struct tc_stats
--{
--      __u64   bytes;                  /* NUmber of enqueues bytes */
--      __u32   packets;                /* Number of enqueued packets   */
--      __u32   drops;                  /* Packets dropped because of lack of resources */
--      __u32   overlimits;             /* Number of throttle events when this
--                                       * flow goes out of allocated bandwidth */
--      __u32   bps;                    /* Current flow byte rate */
--      __u32   pps;                    /* Current flow packet rate */
--      __u32   qlen;
--      __u32   backlog;
--};
--
--struct tc_estimator
--{
--      signed char     interval;
--      unsigned char   ewma_log;
--};
--
--/* "Handles"
--   ---------
--
--    All the traffic control objects have 32bit identifiers, or "handles".
--
--    They can be considered as opaque numbers from user API viewpoint,
--    but actually they always consist of two fields: major and
--    minor numbers, which are interpreted by kernel specially,
--    that may be used by applications, though not recommended.
--
--    F.e. qdisc handles always have minor number equal to zero,
--    classes (or flows) have major equal to parent qdisc major, and
--    minor uniquely identifying class inside qdisc.
--
--    Macros to manipulate handles:
-- */
--
--#define TC_H_MAJ_MASK (0xFFFF0000U)
--#define TC_H_MIN_MASK (0x0000FFFFU)
--#define TC_H_MAJ(h) ((h)&TC_H_MAJ_MASK)
--#define TC_H_MIN(h) ((h)&TC_H_MIN_MASK)
--#define TC_H_MAKE(maj,min) (((maj)&TC_H_MAJ_MASK)|((min)&TC_H_MIN_MASK))
--
--#define TC_H_UNSPEC   (0U)
--#define TC_H_ROOT     (0xFFFFFFFFU)
--#define TC_H_INGRESS    (0xFFFFFFF1U)
--
--struct tc_ratespec
--{
--      unsigned char   cell_log;
--      unsigned char   __reserved;
--      unsigned short  feature;
--      short           addend;
--      unsigned short  mpu;
--      __u32           rate;
--};
--
--/* FIFO section */
--
--struct tc_fifo_qopt
--{
--      __u32   limit;  /* Queue length: bytes for bfifo, packets for pfifo */
--};
--
--/* PRIO section */
--
--#define TCQ_PRIO_BANDS        16
--
--struct tc_prio_qopt
--{
--      int     bands;                  /* Number of bands */
--      __u8    priomap[TC_PRIO_MAX+1]; /* Map: logical priority -> PRIO band */
--};
--
--/* TBF section */
--
--struct tc_tbf_qopt
--{
--      struct tc_ratespec rate;
--      struct tc_ratespec peakrate;
--      __u32           limit;
--      __u32           buffer;
--      __u32           mtu;
--};
--
--enum
--{
--      TCA_TBF_UNSPEC,
--      TCA_TBF_PARMS,
--      TCA_TBF_RTAB,
--      TCA_TBF_PTAB,
--};
--
--
--/* TEQL section */
--
--/* TEQL does not require any parameters */
--
--/* SFQ section */
--
--struct tc_sfq_qopt
--{
--      unsigned        quantum;        /* Bytes per round allocated to flow */
--      int             perturb_period; /* Period of hash perturbation */
--      __u32           limit;          /* Maximal packets in queue */
--      unsigned        divisor;        /* Hash divisor  */
--      unsigned        flows;          /* Maximal number of flows  */
--};
--
--/*
-- *  NOTE: limit, divisor and flows are hardwired to code at the moment.
-- *
-- *    limit=flows=128, divisor=1024;
-- *
-- *    The only reason for this is efficiency, it is possible
-- *    to change these parameters in compile time.
-- */
--
--/* RED section */
--
--enum
--{
--      TCA_RED_UNSPEC,
--      TCA_RED_PARMS,
--      TCA_RED_STAB,
--};
--
--struct tc_red_qopt
--{
--      __u32           limit;          /* HARD maximal queue length (bytes)    */
--      __u32           qth_min;        /* Min average length threshold (bytes) */
--      __u32           qth_max;        /* Max average length threshold (bytes) */
--      unsigned char   Wlog;           /* log(W)               */
--      unsigned char   Plog;           /* log(P_max/(qth_max-qth_min)) */
--      unsigned char   Scell_log;      /* cell size for idle damping */
--      unsigned char   flags;
--#define TC_RED_ECN    1
--};
--
--struct tc_red_xstats
--{
--      __u32           early;          /* Early drops */
--      __u32           pdrop;          /* Drops due to queue limits */
--      __u32           other;          /* Drops due to drop() calls */
--      __u32           marked;         /* Marked packets */
--};
--
--/* GRED section */
--
--#define MAX_DPs 16
--
--enum
--{
--       TCA_GRED_UNSPEC,
--       TCA_GRED_PARMS,
--       TCA_GRED_STAB,
--       TCA_GRED_DPS,
--};
--
--#define TCA_SET_OFF TCA_GRED_PARMS
--struct tc_gred_qopt
--{
--       __u32           limit;          /* HARD maximal queue length (bytes)    
--*/
--       __u32           qth_min;        /* Min average length threshold (bytes) 
--*/
--       __u32           qth_max;        /* Max average length threshold (bytes) 
--*/
--       __u32           DP;             /* upto 2^32 DPs */
--       __u32           backlog;        
--       __u32           qave;   
--       __u32           forced; 
--       __u32           early;  
--       __u32           other;  
--       __u32           pdrop;  
--
--       unsigned char   Wlog;           /* log(W)               */
--       unsigned char   Plog;           /* log(P_max/(qth_max-qth_min)) */
--       unsigned char   Scell_log;      /* cell size for idle damping */
--       __u8            prio;          /* prio of this VQ */
--       __u32  packets;
--       __u32  bytesin;
--};
--/* gred setup */
--struct tc_gred_sopt
--{
--       __u32           DPs;
--       __u32           def_DP;
--       __u8            grio;
--};
--
--/* HTB section */
--#define TC_HTB_NUMPRIO                8
--#define TC_HTB_MAXDEPTH               8
--#define TC_HTB_PROTOVER               3 /* the same as HTB and TC's major */
--
--struct tc_htb_opt
--{
--      struct tc_ratespec      rate;
--      struct tc_ratespec      ceil;
--      __u32   buffer;
--      __u32   cbuffer;
--      __u32   quantum;
--      __u32   level;          /* out only */
--      __u32   prio;
--};
--struct tc_htb_glob
--{
--      __u32 version;          /* to match HTB/TC */
--      __u32 rate2quantum;     /* bps->quantum divisor */
--      __u32 defcls;           /* default class number */
--      __u32 debug;            /* debug flags */
--
--      /* stats */
--      __u32 direct_pkts; /* count of non shapped packets */
--};
--enum
--{
--      TCA_HTB_UNSPEC,
--      TCA_HTB_PARMS,
--      TCA_HTB_INIT,
--      TCA_HTB_CTAB,
--      TCA_HTB_RTAB,
--};
--struct tc_htb_xstats
--{
--      __u32 lends;
--      __u32 borrows;
--      __u32 giants;   /* too big packets (rate will not be accurate) */
--      __u32 tokens;
--      __u32 ctokens;
--};
--
--/* HFSC section */
--
--struct tc_hfsc_qopt
--{
--      __u16   defcls;         /* default class */
--};
--
--struct tc_service_curve
--{
--      __u32   m1;             /* slope of the first segment in bps */
--      __u32   d;              /* x-projection of the first segment in us */
--      __u32   m2;             /* slope of the second segment in bps */
--};
--
--struct tc_hfsc_stats
--{
--      __u64   work;           /* total work done */
--      __u64   rtwork;         /* work done by real-time criteria */
--      __u32   period;         /* current period */
--      __u32   level;          /* class level in hierarchy */
--};
--
--enum
--{
--      TCA_HFSC_UNSPEC,
--      TCA_HFSC_RSC,
--      TCA_HFSC_FSC,
--      TCA_HFSC_USC,
--      TCA_HFSC_MAX = TCA_HFSC_USC
--};
--
--/* CBQ section */
--
--#define TC_CBQ_MAXPRIO                8
--#define TC_CBQ_MAXLEVEL               8
--#define TC_CBQ_DEF_EWMA               5
--
--struct tc_cbq_lssopt
--{
--      unsigned char   change;
--      unsigned char   flags;
--#define TCF_CBQ_LSS_BOUNDED   1
--#define TCF_CBQ_LSS_ISOLATED  2
--      unsigned char   ewma_log;
--      unsigned char   level;
--#define TCF_CBQ_LSS_FLAGS     1
--#define TCF_CBQ_LSS_EWMA      2
--#define TCF_CBQ_LSS_MAXIDLE   4
--#define TCF_CBQ_LSS_MINIDLE   8
--#define TCF_CBQ_LSS_OFFTIME   0x10
--#define TCF_CBQ_LSS_AVPKT     0x20
--      __u32           maxidle;
--      __u32           minidle;
--      __u32           offtime;
--      __u32           avpkt;
--};
--
--struct tc_cbq_wrropt
--{
--      unsigned char   flags;
--      unsigned char   priority;
--      unsigned char   cpriority;
--      unsigned char   __reserved;
--      __u32           allot;
--      __u32           weight;
--};
--
--struct tc_cbq_ovl
--{
--      unsigned char   strategy;
--#define       TC_CBQ_OVL_CLASSIC      0
--#define       TC_CBQ_OVL_DELAY        1
--#define       TC_CBQ_OVL_LOWPRIO      2
--#define       TC_CBQ_OVL_DROP         3
--#define       TC_CBQ_OVL_RCLASSIC     4
--      unsigned char   priority2;
--      __u32           penalty;
--};
--
--struct tc_cbq_police
--{
--      unsigned char   police;
--      unsigned char   __res1;
--      unsigned short  __res2;
--};
--
--struct tc_cbq_fopt
--{
--      __u32           split;
--      __u32           defmap;
--      __u32           defchange;
--};
--
--struct tc_cbq_xstats
--{
--      __u32           borrows;
--      __u32           overactions;
--      __s32           avgidle;
--      __s32           undertime;
--};
--
--enum
--{
--      TCA_CBQ_UNSPEC,
--      TCA_CBQ_LSSOPT,
--      TCA_CBQ_WRROPT,
--      TCA_CBQ_FOPT,
--      TCA_CBQ_OVL_STRATEGY,
--      TCA_CBQ_RATE,
--      TCA_CBQ_RTAB,
--      TCA_CBQ_POLICE,
--};
--
--#define TCA_CBQ_MAX   TCA_CBQ_POLICE
--
--/* dsmark section */
--
--enum {
--      TCA_DSMARK_UNSPEC,
--      TCA_DSMARK_INDICES,
--      TCA_DSMARK_DEFAULT_INDEX,
--      TCA_DSMARK_SET_TC_INDEX,
--      TCA_DSMARK_MASK,
--      TCA_DSMARK_VALUE
--};
--
--#define TCA_DSMARK_MAX TCA_DSMARK_VALUE
--
--/* ATM  section */
--
--enum {
--      TCA_ATM_UNSPEC,
--      TCA_ATM_FD,             /* file/socket descriptor */
--      TCA_ATM_PTR,            /* pointer to descriptor - later */
--      TCA_ATM_HDR,            /* LL header */
--      TCA_ATM_EXCESS,         /* excess traffic class (0 for CLP)  */
--      TCA_ATM_ADDR,           /* PVC address (for output only) */
--      TCA_ATM_STATE           /* VC state (ATM_VS_*; for output only) */
--};
--
--#define TCA_ATM_MAX   TCA_ATM_STATE
--
--/* Network emulator */
--struct tc_netem_qopt
--{
--      __u32   latency;        /* added delay (us) */
--      __u32   limit;          /* fifo limit (packets) */
--      __u32   loss;           /* random packet loss (0=none ~0=100%) */
--      __u32   gap;            /* re-ordering gap (0 for delay all) */
--      __u32   duplicate;      /* random packet dup  (0=none ~0=100%) */
--      __u32   jitter;         /* random jitter in latency (us) */
--};
--#endif
This page took 0.086042 seconds and 4 git commands to generate.