mirror of
				https://git.proxmox.com/git/mirror_iproute2
				synced 2025-11-04 06:22:48 +00:00 
			
		
		
		
	Starting from linux-3.13, we can break the 32bit limitation of rates on HTB qdisc/classes. Prior limit was 34.359.738.360 bits per second. lpq83:~# tc -s qdisc show dev lo ; tc -s class show dev lo qdisc htb 1: root refcnt 2 r2q 2000 default 1 direct_packets_stat 0 direct_qlen 6000 Sent 6591936144493 bytes 149549182 pkt (dropped 0, overlimits 213757419 requeues 0) rate 39464Mbit 114938pps backlog 0b 15p requeues 0 class htb 1:1 root prio 0 rate 50000Mbit ceil 50000Mbit burst 200000b cburst 0b Sent 6591942184547 bytes 149549310 pkt (dropped 0, overlimits 0 requeues 0) rate 39464Mbit 114938pps backlog 0b 15p requeues 0 lended: 149549310 borrowed: 0 giants: 0 tokens: 336 ctokens: -164 Signed-off-by: Eric Dumazet <edumazet@google.com>
		
			
				
	
	
		
			35 lines
		
	
	
		
			888 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			888 B
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef _TC_CORE_H_
 | 
						|
#define _TC_CORE_H_ 1
 | 
						|
 | 
						|
#include <asm/types.h>
 | 
						|
#include <linux/pkt_sched.h>
 | 
						|
 | 
						|
#define TIME_UNITS_PER_SEC	1000000
 | 
						|
 | 
						|
enum link_layer {
 | 
						|
	LINKLAYER_UNSPEC,
 | 
						|
	LINKLAYER_ETHERNET,
 | 
						|
	LINKLAYER_ATM,
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
int  tc_core_time2big(unsigned time);
 | 
						|
unsigned tc_core_time2tick(unsigned time);
 | 
						|
unsigned tc_core_tick2time(unsigned tick);
 | 
						|
unsigned tc_core_time2ktime(unsigned time);
 | 
						|
unsigned tc_core_ktime2time(unsigned ktime);
 | 
						|
unsigned tc_calc_xmittime(__u64 rate, unsigned size);
 | 
						|
unsigned tc_calc_xmitsize(__u64 rate, unsigned ticks);
 | 
						|
int tc_calc_rtable(struct tc_ratespec *r, __u32 *rtab,
 | 
						|
		   int cell_log, unsigned mtu, enum link_layer link_layer);
 | 
						|
int tc_calc_size_table(struct tc_sizespec *s, __u16 **stab);
 | 
						|
 | 
						|
int tc_setup_estimator(unsigned A, unsigned time_const, struct tc_estimator *est);
 | 
						|
 | 
						|
int tc_core_init(void);
 | 
						|
 | 
						|
extern struct rtnl_handle g_rth;
 | 
						|
extern int is_batch_mode;
 | 
						|
 | 
						|
#endif
 |