Re: [PATCH 2/3] virtio: Net header needs gso_hdr_len
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2008-01-16 00:06:21
Rusty Russell [off-list ref] wrote:
quoted hunk
It's far easier to deal with GSO if we don't have to parse the packet to figure out the header length. Add the field to the virtio_net_hdr struct (and fix the spaces that somehow crept in there). Signed-off-by: Rusty Russell <redacted> --- drivers/net/virtio_net.c | 4 +++- include/linux/virtio_net.h | 11 ++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff -r 24ef33a4ab14 drivers/net/virtio_net.c--- a/drivers/net/virtio_net.c Tue Jan 15 16:59:58 2008 +1100 +++ b/drivers/net/virtio_net.c Tue Jan 15 21:21:40 2008 +1100@@ -126,6 +126,7 @@ static void receive_skb(struct net_devic /* Header must be checked, and gso_segs computed. */ skb_shinfo(skb)->gso_type |= SKB_GSO_DODGY; skb_shinfo(skb)->gso_segs = 0; + skb_set_transport_header(skb, hdr->gso_hdr_len);
Why do we need this? When receiving GSO packets from an untrusted source the network stack will fill in the transport header offset after verifying that the headers are sane. Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} [off-list ref] Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt