diff options
author | Laurent Vivier <lvivier@redhat.com> | 2024-12-05 08:37:18 +0100 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2024-12-05 21:08:58 +0100 |
commit | 8996d183c5c50399d9dbae4d60d77d08f44ffb54 (patch) | |
tree | 5f57c37133a78495c4cd4eee50224ad0dc84e750 | |
parent | 190829705e315972a7c674d2fa55d322aa18d26e (diff) | |
download | passt-8996d183c5c50399d9dbae4d60d77d08f44ffb54.tar passt-8996d183c5c50399d9dbae4d60d77d08f44ffb54.tar.gz passt-8996d183c5c50399d9dbae4d60d77d08f44ffb54.tar.bz2 passt-8996d183c5c50399d9dbae4d60d77d08f44ffb54.tar.lz passt-8996d183c5c50399d9dbae4d60d77d08f44ffb54.tar.xz passt-8996d183c5c50399d9dbae4d60d77d08f44ffb54.tar.zst passt-8996d183c5c50399d9dbae4d60d77d08f44ffb54.zip |
udp_vu: update segment size
In udp_vu_sock_recv(), collect a segment with a size defined to
IP_MAX_MTU + ETH_HLEN + sizeof(struct virtio_net_hdr_mrg_rxbuf)
The original version double counted the IP header: IP_MAX_MTU includes
the IP header, and so did hdrlen.
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
-rw-r--r-- | udp_vu.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -104,7 +104,8 @@ static int udp_vu_sock_recv(const struct ctx *c, int s, uint32_t events, vu_init_elem(elem, iov_vu, VIRTQUEUE_MAX_SIZE); iov_cnt = vu_collect(vdev, vq, elem, VIRTQUEUE_MAX_SIZE, - IP_MAX_MTU - sizeof(struct udphdr) + hdrlen, + IP_MAX_MTU + ETH_HLEN + + sizeof(struct virtio_net_hdr_mrg_rxbuf), NULL); if (iov_cnt == 0) return 0; |