On 15/11/2024 15:25, Stefano Brivio wrote:On Fri, 15 Nov 2024 14:58:38 +0100 Laurent Vivier <lvivier(a)redhat.com> wrote:There are several bugs, the first one is the IP header checksum is wrong for the last frame, the following change fixes the problem: diff --git a/tcp_vu.c b/tcp_vu.c index 14093f502ba6..3f3c001c4e8e 100644 --- a/tcp_vu.c +++ b/tcp_vu.c @@ -459,7 +459,7 @@ int tcp_vu_data_from_sock(const struct ctx *c, struct tcp_p) if (frame_size >= mss || len == 0 || i + 1 == iov_cnt || !vu_has_feature(vdev, VIRTIO_NET_F_MRGX{ - if (i + 1 == iov_cnt) + if (i + 1 == iov_cnt || len == 0) check = NULL; /* restore first iovec base: point to vnet header */ Now, it doesn't hang but the transfer is truncated. I'm hunting the next one. Thanks, Laurentv12: - rebase - address comments from Stefano...including SO_PEEK_OFF fixes? Should I test that part already? :)