diff options
-rw-r--r-- | drivers/net/ethoc.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/ethoc.c b/drivers/net/ethoc.c index f92747fc5f8b..0c6c7f47ace4 100644 --- a/drivers/net/ethoc.c +++ b/drivers/net/ethoc.c | |||
@@ -399,6 +399,10 @@ static int ethoc_rx(struct net_device *dev, int limit) | |||
399 | if (ethoc_update_rx_stats(priv, &bd) == 0) { | 399 | if (ethoc_update_rx_stats(priv, &bd) == 0) { |
400 | int size = bd.stat >> 16; | 400 | int size = bd.stat >> 16; |
401 | struct sk_buff *skb = netdev_alloc_skb(dev, size); | 401 | struct sk_buff *skb = netdev_alloc_skb(dev, size); |
402 | |||
403 | size -= 4; /* strip the CRC */ | ||
404 | skb_reserve(skb, 2); /* align TCP/IP header */ | ||
405 | |||
402 | if (likely(skb)) { | 406 | if (likely(skb)) { |
403 | void *src = phys_to_virt(bd.addr); | 407 | void *src = phys_to_virt(bd.addr); |
404 | memcpy_fromio(skb_put(skb, size), src, size); | 408 | memcpy_fromio(skb_put(skb, size), src, size); |