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:
parent
55aff45bc1
commit
c6c61a9e1a
1 changed files with 3 additions and 2 deletions
5
udp.c
5
udp.c
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue