summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2009-06-11 20:55:17 -0700
committerDavid S. Miller <davem@davemloft.net>2009-06-11 20:55:17 -0700
commit8981f01001c616f58f1623ecadfab8b1ed758da7 (patch)
tree338a5439aeb3961b115b5dee85fb52725de21d5b
parentadf76cfe24dab32a54e2dd1f51534cea8277f32a (diff)
downloadlinux-3.10-8981f01001c616f58f1623ecadfab8b1ed758da7.tar.gz
linux-3.10-8981f01001c616f58f1623ecadfab8b1ed758da7.tar.bz2
linux-3.10-8981f01001c616f58f1623ecadfab8b1ed758da7.zip
virtio_net: Fix IP alignment on non-mergeable RX path
We need to enforce the IP alignment on the non-mergeable RX path just like the other RX path. Not doing so results in misaligned IP headers. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: David S. Miller <davem@davemloft.net>
-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 09bd4410fa6..f0bb1a4c832 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -283,10 +283,11 @@ static void try_fill_recv_maxbufs(struct virtnet_info *vi)
for (;;) {
struct virtio_net_hdr *hdr;
- skb = netdev_alloc_skb(vi->dev, MAX_PACKET_LEN);
+ skb = netdev_alloc_skb(vi->dev, MAX_PACKET_LEN + NET_IP_ALIGN);
if (unlikely(!skb))
break;
+ skb_reserve(skb, NET_IP_ALIGN);
skb_put(skb, MAX_PACKET_LEN);
hdr = skb_vnet_hdr(skb);