aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/virtio_net.c
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2008-02-04 23:50:01 -0500
committerRusty Russell <rusty@rustcorp.com.au>2008-02-04 07:50:02 -0500
commit50c8ea8080700014872f2bbd7466d31ce0476290 (patch)
tree8c863eb9ed295758a585e8f8f865faf9f6ba9302 /drivers/net/virtio_net.c
parent24a5ae5d0340d5a45df840b24a10d62aa9516116 (diff)
virtio: Net header needs hdr_len
It's far easier to deal with packets if we don't have to parse the packet to figure out the header length to know how much to pull into the skb data. Add the field to the virtio_net_hdr struct (and fix the spaces that somehow crept in there). Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'drivers/net/virtio_net.c')
-rw-r--r--drivers/net/virtio_net.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 7b0059f0f5d4..3492ae0951de 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -242,6 +242,7 @@ static int start_xmit(struct sk_buff *skb, struct net_device *dev)
242 } 242 }
243 243
244 if (skb_is_gso(skb)) { 244 if (skb_is_gso(skb)) {
245 hdr->hdr_len = skb_transport_header(skb) - skb->data;
245 hdr->gso_size = skb_shinfo(skb)->gso_size; 246 hdr->gso_size = skb_shinfo(skb)->gso_size;
246 if (skb_shinfo(skb)->gso_type & SKB_GSO_TCP_ECN) 247 if (skb_shinfo(skb)->gso_type & SKB_GSO_TCP_ECN)
247 hdr->gso_type = VIRTIO_NET_HDR_GSO_TCPV4_ECN; 248 hdr->gso_type = VIRTIO_NET_HDR_GSO_TCPV4_ECN;
@@ -255,7 +256,7 @@ static int start_xmit(struct sk_buff *skb, struct net_device *dev)
255 BUG(); 256 BUG();
256 } else { 257 } else {
257 hdr->gso_type = VIRTIO_NET_HDR_GSO_NONE; 258 hdr->gso_type = VIRTIO_NET_HDR_GSO_NONE;
258 hdr->gso_size = 0; 259 hdr->gso_size = hdr->hdr_len = 0;
259 } 260 }
260 261
261 vnet_hdr_to_sg(sg, skb); 262 vnet_hdr_to_sg(sg, skb);