Skip to content

Commit 1382e3b

Browse files
ybenditodavem330
authored andcommitted
net: change maximum number of UDP segments to 128
The commit fc8b2a6 ("net: more strict VIRTIO_NET_HDR_GSO_UDP_L4 validation") adds check of potential number of UDP segments vs UDP_MAX_SEGMENTS in linux/virtio_net.h. After this change certification test of USO guest-to-guest transmit on Windows driver for virtio-net device fails, for example with packet size of ~64K and mss of 536 bytes. In general the USO should not be more restrictive than TSO. Indeed, in case of unreasonably small mss a lot of segments can cause queue overflow and packet loss on the destination. Limit of 128 segments is good for any practical purpose, with minimal meaningful mss of 536 the maximal UDP packet will be divided to ~120 segments. The number of segments for UDP packets is validated vs UDP_MAX_SEGMENTS also in udp.c (v4,v6), this does not affect quest-to-guest path but does affect packets sent to host, for example. It is important to mention that UDP_MAX_SEGMENTS is kernel-only define and not available to user mode socket applications. In order to request MSS smaller than MTU the applications just uses setsockopt with SOL_UDP and UDP_SEGMENT and there is no limitations on socket API level. Fixes: fc8b2a6 ("net: more strict VIRTIO_NET_HDR_GSO_UDP_L4 validation") Signed-off-by: Yuri Benditovich <[email protected]> Reviewed-by: Willem de Bruijn <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 72041e5 commit 1382e3b

File tree

2 files changed

+2
-2
lines changed

2 files changed

+2
-2
lines changed

include/linux/udp.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ struct udp_sock {
108108
#define udp_assign_bit(nr, sk, val) \
109109
assign_bit(UDP_FLAGS_##nr, &udp_sk(sk)->udp_flags, val)
110110

111-
#define UDP_MAX_SEGMENTS (1 << 6UL)
111+
#define UDP_MAX_SEGMENTS (1 << 7UL)
112112

113113
#define udp_sk(ptr) container_of_const(ptr, struct udp_sock, inet.sk)
114114

tools/testing/selftests/net/udpgso.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
#endif
3535

3636
#ifndef UDP_MAX_SEGMENTS
37-
#define UDP_MAX_SEGMENTS (1 << 6UL)
37+
#define UDP_MAX_SEGMENTS (1 << 7UL)
3838
#endif
3939

4040
#define CONST_MTU_TEST 1500

0 commit comments

Comments
 (0)