Skip to content

Commit 62748f3

Browse files
edumazetdavem330
authored andcommitted
net: introduce SO_MAX_PACING_RATE
As mentioned in commit afe4fd0 ("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>
1 parent 4aa0a03 commit 62748f3

18 files changed

Lines changed: 45 additions & 2 deletions

File tree

arch/alpha/include/uapi/asm/socket.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@
8181

8282
#define SO_SELECT_ERR_QUEUE 45
8383

84-
#define SO_BUSY_POLL 46
84+
#define SO_BUSY_POLL 46
85+
86+
#define SO_MAX_PACING_RATE 47
8587

8688
#endif /* _UAPI_ASM_SOCKET_H */

arch/avr32/include/uapi/asm/socket.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,6 @@
7676

7777
#define SO_BUSY_POLL 46
7878

79+
#define SO_MAX_PACING_RATE 47
80+
7981
#endif /* __ASM_AVR32_SOCKET_H */

arch/cris/include/uapi/asm/socket.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@
7878

7979
#define SO_BUSY_POLL 46
8080

81+
#define SO_MAX_PACING_RATE 47
82+
8183
#endif /* _ASM_SOCKET_H */
8284

8385

arch/frv/include/uapi/asm/socket.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,5 +76,7 @@
7676

7777
#define SO_BUSY_POLL 46
7878

79+
#define SO_MAX_PACING_RATE 47
80+
7981
#endif /* _ASM_SOCKET_H */
8082

arch/h8300/include/uapi/asm/socket.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,6 @@
7676

7777
#define SO_BUSY_POLL 46
7878

79+
#define SO_MAX_PACING_RATE 47
80+
7981
#endif /* _ASM_SOCKET_H */

arch/ia64/include/uapi/asm/socket.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,6 @@
8585

8686
#define SO_BUSY_POLL 46
8787

88+
#define SO_MAX_PACING_RATE 47
89+
8890
#endif /* _ASM_IA64_SOCKET_H */

arch/m32r/include/uapi/asm/socket.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,6 @@
7676

7777
#define SO_BUSY_POLL 46
7878

79+
#define SO_MAX_PACING_RATE 47
80+
7981
#endif /* _ASM_M32R_SOCKET_H */

arch/mips/include/uapi/asm/socket.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,4 +94,6 @@
9494

9595
#define SO_BUSY_POLL 46
9696

97+
#define SO_MAX_PACING_RATE 47
98+
9799
#endif /* _UAPI_ASM_SOCKET_H */

arch/mn10300/include/uapi/asm/socket.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,6 @@
7676

7777
#define SO_BUSY_POLL 46
7878

79+
#define SO_MAX_PACING_RATE 47
80+
7981
#endif /* _ASM_SOCKET_H */

arch/parisc/include/uapi/asm/socket.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@
7575

7676
#define SO_BUSY_POLL 0x4027
7777

78+
#define SO_MAX_PACING_RATE 0x4048
79+
7880
/* O_NONBLOCK clashes with the bits used for socket types. Therefore we
7981
* have to define SOCK_NONBLOCK to a different value here.
8082
*/

0 commit comments

Comments
 (0)