~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/net/pie.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/net/pie.h (Version linux-6.11.5) and /include/net/pie.h (Version linux-2.6.0)


  1 /* SPDX-License-Identifier: GPL-2.0-only */         1 
  2 #ifndef __NET_SCHED_PIE_H                         
  3 #define __NET_SCHED_PIE_H                         
  4                                                   
  5 #include <linux/ktime.h>                          
  6 #include <linux/skbuff.h>                         
  7 #include <linux/types.h>                          
  8 #include <net/inet_ecn.h>                         
  9 #include <net/pkt_sched.h>                        
 10                                                   
 11 #define MAX_PROB        (U64_MAX >> BITS_PER_B    
 12 #define DTIME_INVALID   U64_MAX                   
 13 #define QUEUE_THRESHOLD 16384                     
 14 #define DQCOUNT_INVALID -1                        
 15 #define PIE_SCALE       8                         
 16                                                   
 17 /**                                               
 18  * struct pie_params - contains pie parameters    
 19  * @target:             target delay in psched    
 20  * @tupdate:            interval at which drop    
 21  * @limit:              total number of packet    
 22  * @alpha:              parameter to control d    
 23  * @beta:               parameter to control d    
 24  * @ecn:                is ECN marking of pack    
 25  * @bytemode:           is drop probability sc    
 26  * @dq_rate_estimator:  is Little's law used f    
 27  */                                               
 28 struct pie_params {                               
 29         psched_time_t target;                     
 30         u32 tupdate;                              
 31         u32 limit;                                
 32         u32 alpha;                                
 33         u32 beta;                                 
 34         u8 ecn;                                   
 35         u8 bytemode;                              
 36         u8 dq_rate_estimator;                     
 37 };                                                
 38                                                   
 39 /**                                               
 40  * struct pie_vars - contains pie variables       
 41  * @qdelay:             current queue delay       
 42  * @qdelay_old:         queue delay in previou    
 43  * @burst_time:         burst time allowance      
 44  * @dq_tstamp:          timestamp at which dq     
 45  * @prob:               drop probability          
 46  * @accu_prob:          accumulated drop proba    
 47  * @dq_count:           number of bytes dequeu    
 48  * @avg_dq_rate:        calculated average dq     
 49  * @backlog_old:        queue backlog during p    
 50  */                                               
 51 struct pie_vars {                                 
 52         psched_time_t qdelay;                     
 53         psched_time_t qdelay_old;                 
 54         psched_time_t burst_time;                 
 55         psched_time_t dq_tstamp;                  
 56         u64 prob;                                 
 57         u64 accu_prob;                            
 58         u64 dq_count;                             
 59         u32 avg_dq_rate;                          
 60         u32 backlog_old;                          
 61 };                                                
 62                                                   
 63 /**                                               
 64  * struct pie_stats - contains pie stats          
 65  * @packets_in: total number of packets enqueu    
 66  * @dropped:    packets dropped due to pie act    
 67  * @overlimit:  packets dropped due to lack of    
 68  * @ecn_mark:   packets marked with ECN           
 69  * @maxq:       maximum queue size                
 70  */                                               
 71 struct pie_stats {                                
 72         u32 packets_in;                           
 73         u32 dropped;                              
 74         u32 overlimit;                            
 75         u32 ecn_mark;                             
 76         u32 maxq;                                 
 77 };                                                
 78                                                   
 79 /**                                               
 80  * struct pie_skb_cb - contains private skb va    
 81  * @enqueue_time:       timestamp when the pac    
 82  * @mem_usage:          size of the skb during    
 83  */                                               
 84 struct pie_skb_cb {                               
 85         psched_time_t enqueue_time;               
 86         u32 mem_usage;                            
 87 };                                                
 88                                                   
 89 static inline void pie_params_init(struct pie_    
 90 {                                                 
 91         params->target = PSCHED_NS2TICKS(15 *     
 92         params->tupdate = usecs_to_jiffies(15     
 93         params->limit = 1000;                     
 94         params->alpha = 2;                        
 95         params->beta = 20;                        
 96         params->ecn = false;                      
 97         params->bytemode = false;                 
 98         params->dq_rate_estimator = false;        
 99 }                                                 
100                                                   
101 static inline void pie_vars_init(struct pie_va    
102 {                                                 
103         vars->burst_time = PSCHED_NS2TICKS(150    
104         vars->dq_tstamp = DTIME_INVALID;          
105         vars->accu_prob = 0;                      
106         vars->dq_count = DQCOUNT_INVALID;         
107         vars->avg_dq_rate = 0;                    
108 }                                                 
109                                                   
110 static inline struct pie_skb_cb *get_pie_cb(co    
111 {                                                 
112         qdisc_cb_private_validate(skb, sizeof(    
113         return (struct pie_skb_cb *)qdisc_skb_    
114 }                                                 
115                                                   
116 static inline psched_time_t pie_get_enqueue_ti    
117 {                                                 
118         return get_pie_cb(skb)->enqueue_time;     
119 }                                                 
120                                                   
121 static inline void pie_set_enqueue_time(struct    
122 {                                                 
123         get_pie_cb(skb)->enqueue_time = psched    
124 }                                                 
125                                                   
126 bool pie_drop_early(struct Qdisc *sch, struct     
127                     struct pie_vars *vars, u32    
128                                                   
129 void pie_process_dequeue(struct sk_buff *skb,     
130                          struct pie_vars *vars    
131                                                   
132 void pie_calculate_probability(struct pie_para    
133                                u32 backlog);      
134                                                   
135 #endif                                            
136                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php