 62748f32d5
			
		
	
	
	62748f32d5
	
	
	
		
			
			As mentioned in commit afe4fd0624 ("pkt_sched: fq: Fair Queue packet
scheduler"), this patch adds a new socket option.
SO_MAX_PACING_RATE offers the application the ability to cap the
rate computed by transport layer. Value is in bytes per second.
u32 val = 1000000;
setsockopt(sockfd, SOL_SOCKET, SO_MAX_PACING_RATE, &val, sizeof(val));
To be effectively paced, a flow must use FQ packet scheduler.
Note that a packet scheduler takes into account the headers for its
computations. The effective payload rate depends on MSS and retransmits
if any.
I chose to make this pacing rate a SOL_SOCKET option instead of a
TCP one because this can be used by other protocols.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Steinar H. Gunderson <sesse@google.com>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
		
	
			
		
			
				
	
	
		
			81 lines
		
	
	
	
		
			1.7 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			1.7 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _ASM_M32R_SOCKET_H
 | |
| #define _ASM_M32R_SOCKET_H
 | |
| 
 | |
| #include <asm/sockios.h>
 | |
| 
 | |
| /* For setsockoptions(2) */
 | |
| #define SOL_SOCKET	1
 | |
| 
 | |
| #define SO_DEBUG	1
 | |
| #define SO_REUSEADDR	2
 | |
| #define SO_TYPE		3
 | |
| #define SO_ERROR	4
 | |
| #define SO_DONTROUTE	5
 | |
| #define SO_BROADCAST	6
 | |
| #define SO_SNDBUF	7
 | |
| #define SO_RCVBUF	8
 | |
| #define SO_SNDBUFFORCE	32
 | |
| #define SO_RCVBUFFORCE	33
 | |
| #define SO_KEEPALIVE	9
 | |
| #define SO_OOBINLINE	10
 | |
| #define SO_NO_CHECK	11
 | |
| #define SO_PRIORITY	12
 | |
| #define SO_LINGER	13
 | |
| #define SO_BSDCOMPAT	14
 | |
| #define SO_REUSEPORT	15
 | |
| #define SO_PASSCRED	16
 | |
| #define SO_PEERCRED	17
 | |
| #define SO_RCVLOWAT	18
 | |
| #define SO_SNDLOWAT	19
 | |
| #define SO_RCVTIMEO	20
 | |
| #define SO_SNDTIMEO	21
 | |
| 
 | |
| /* Security levels - as per NRL IPv6 - don't actually do anything */
 | |
| #define SO_SECURITY_AUTHENTICATION		22
 | |
| #define SO_SECURITY_ENCRYPTION_TRANSPORT	23
 | |
| #define SO_SECURITY_ENCRYPTION_NETWORK		24
 | |
| 
 | |
| #define SO_BINDTODEVICE	25
 | |
| 
 | |
| /* Socket filtering */
 | |
| #define SO_ATTACH_FILTER        26
 | |
| #define SO_DETACH_FILTER        27
 | |
| #define SO_GET_FILTER		SO_ATTACH_FILTER
 | |
| 
 | |
| #define SO_PEERNAME		28
 | |
| #define SO_TIMESTAMP		29
 | |
| #define SCM_TIMESTAMP		SO_TIMESTAMP
 | |
| 
 | |
| #define SO_ACCEPTCONN		30
 | |
| 
 | |
| #define SO_PEERSEC		31
 | |
| #define SO_PASSSEC		34
 | |
| #define SO_TIMESTAMPNS		35
 | |
| #define SCM_TIMESTAMPNS		SO_TIMESTAMPNS
 | |
| 
 | |
| #define SO_MARK			36
 | |
| 
 | |
| #define SO_TIMESTAMPING		37
 | |
| #define SCM_TIMESTAMPING	SO_TIMESTAMPING
 | |
| 
 | |
| #define SO_PROTOCOL		38
 | |
| #define SO_DOMAIN		39
 | |
| 
 | |
| #define SO_RXQ_OVFL             40
 | |
| 
 | |
| #define SO_WIFI_STATUS		41
 | |
| #define SCM_WIFI_STATUS		SO_WIFI_STATUS
 | |
| #define SO_PEEK_OFF		42
 | |
| 
 | |
| /* Instruct lower device to use last 4-bytes of skb data as FCS */
 | |
| #define SO_NOFCS		43
 | |
| 
 | |
| #define SO_LOCK_FILTER		44
 | |
| 
 | |
| #define SO_SELECT_ERR_QUEUE	45
 | |
| 
 | |
| #define SO_BUSY_POLL		46
 | |
| 
 | |
| #define SO_MAX_PACING_RATE	47
 | |
| 
 | |
| #endif /* _ASM_M32R_SOCKET_H */
 |