On Tue, May 19, 2026 at 10:03:39AM +0200, Laurent Vivier wrote:
On 5/19/26 07:08, David Gibson wrote:
On Mon, May 18, 2026 at 02:26:25PM +0200, Laurent Vivier wrote:
Change udp_update_hdr4() and udp_update_hdr6() to take an iov_tail pointing at the UDP frame instead of a contiguous udp_payload_t buffer and explicit data length. This lets vhost-user pass scatter-gather virtqueue buffers directly without an intermediate copy.
The UDP header is built into a local struct udphdr and written back with IOV_PUSH_HEADER(). On the tap side, udp_tap_prepare() wraps the existing udp_payload_t in a two-element iov to match the new interface.
Signed-off-by: Laurent Vivier
Alas, this still has a potentially aliased memcpy(), see below.
Did you see I updated patch 2 to avoid the memcpy() if the header is already in place? (I think I should have removed your R-b...)
I saw the note in the changelog, but I didn't spot the place in the code specifically - I think I skipped patch 2 because of the R-b and assumed the change was in patch 3. Unfortunately the one in this patch is still there. -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson