udp: Don't repeatedly initialise udp[46]_eth_hdr

Since we split our packet frame buffers into different pieces, we have
a single buffer per IP version for the ethernet header, rather than one
per frame.  This makes sense since our ethernet header is alwaus the same.

However we initialise those buffers udp[46]_eth_hdr inside a per frame
loop.  Pull that outside the loop so we just initialise them once.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
David Gibson 2024-07-05 20:44:05 +10:00 committed by Stefano Brivio
parent 55aff45bc1
commit c6c61a9e1a

5
udp.c
View file

@ -314,8 +314,6 @@ static void udp_iov_init_one(const struct ctx *c, size_t i)
}; };
*siov = IOV_OF_LVALUE(payload->data); *siov = IOV_OF_LVALUE(payload->data);
udp4_eth_hdr.h_proto = htons_constant(ETH_P_IP);
udp6_eth_hdr.h_proto = htons_constant(ETH_P_IPV6);
tiov[UDP_IOV_TAP] = tap_hdr_iov(c, &meta->taph); tiov[UDP_IOV_TAP] = tap_hdr_iov(c, &meta->taph);
tiov[UDP_IOV_PAYLOAD].iov_base = payload; tiov[UDP_IOV_PAYLOAD].iov_base = payload;
@ -351,6 +349,9 @@ static void udp_iov_init(const struct ctx *c)
{ {
size_t i; size_t i;
udp4_eth_hdr.h_proto = htons_constant(ETH_P_IP);
udp6_eth_hdr.h_proto = htons_constant(ETH_P_IPV6);
for (i = 0; i < UDP_MAX_FRAMES; i++) for (i = 0; i < UDP_MAX_FRAMES; i++)
udp_iov_init_one(c, i); udp_iov_init_one(c, i);
} }