udp: Fix maximum payload size calculation for IPv4 buffers, bump UDP_TAP_FRAMES

The issue with a higher UDP_TAP_FRAMES was actually coming from a
payload size the guest couldn't digest. Fix that, and bump
UDP_TAP_FRAMES back to 128.

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
Stefano Brivio 2021-10-21 04:42:09 +02:00
parent dd942eaa48
commit 85a80f8f63

5
udp.c
View file

@ -120,7 +120,7 @@
#define UDP_CONN_TIMEOUT 180 /* s, timeout for ephemeral or local bind */
#define UDP_SPLICE_FRAMES 128
#define UDP_TAP_FRAMES 16
#define UDP_TAP_FRAMES 128
/**
* struct udp_tap_port - Port tracking based on tap-facing source port
@ -201,7 +201,8 @@ __extension__ static struct udp4_l2_buf_t {
struct ethhdr eh;
struct iphdr iph;
struct udphdr uh;
uint8_t data[USHRT_MAX - sizeof(struct udphdr)];
uint8_t data[USHRT_MAX -
(sizeof(struct iphdr) + sizeof(struct udphdr))];
} __attribute__ ((packed, aligned(__alignof__(unsigned int))))
udp4_l2_buf[UDP_TAP_FRAMES] = {
[ 0 ... UDP_TAP_FRAMES - 1 ] = {