Patch "net: change maximum number of UDP segments to 128" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: change maximum number of UDP segments to 128

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-change-maximum-number-of-udp-segments-to-128.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 4f092dadde909f1ea6e3b40285926f23455fc2b7
Author: Yuri Benditovich <yuri.benditovich@xxxxxxxxxx>
Date:   Thu Apr 11 08:11:24 2024 +0300

    net: change maximum number of UDP segments to 128
    
    [ Upstream commit 1382e3b6a3500c245e5278c66d210c02926f804f ]
    
    The commit fc8b2a619469
    ("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: fc8b2a619469 ("net: more strict VIRTIO_NET_HDR_GSO_UDP_L4 validation")
    Signed-off-by: Yuri Benditovich <yuri.benditovich@xxxxxxxxxx>
    Reviewed-by: Willem de Bruijn <willemb@xxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/include/linux/udp.h b/include/linux/udp.h
index 94e63b2695406..00790bb5cbde6 100644
--- a/include/linux/udp.h
+++ b/include/linux/udp.h
@@ -105,7 +105,7 @@ struct udp_sock {
 #define udp_assign_bit(nr, sk, val)		\
 	assign_bit(UDP_FLAGS_##nr, &udp_sk(sk)->udp_flags, val)
 
-#define UDP_MAX_SEGMENTS	(1 << 6UL)
+#define UDP_MAX_SEGMENTS	(1 << 7UL)
 
 #define udp_sk(ptr) container_of_const(ptr, struct udp_sock, inet.sk)
 
diff --git a/tools/testing/selftests/net/udpgso.c b/tools/testing/selftests/net/udpgso.c
index 7badaf215de28..b02080d09fbc0 100644
--- a/tools/testing/selftests/net/udpgso.c
+++ b/tools/testing/selftests/net/udpgso.c
@@ -34,7 +34,7 @@
 #endif
 
 #ifndef UDP_MAX_SEGMENTS
-#define UDP_MAX_SEGMENTS	(1 << 6UL)
+#define UDP_MAX_SEGMENTS	(1 << 7UL)
 #endif
 
 #define CONST_MTU_TEST	1500




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux