diff options
Diffstat (limited to 'drivers/net/sunhme.c')
-rw-r--r-- | drivers/net/sunhme.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/net/sunhme.c b/drivers/net/sunhme.c index bf0d4844f9fe..51c3fe2108a3 100644 --- a/drivers/net/sunhme.c +++ b/drivers/net/sunhme.c | |||
@@ -2055,11 +2055,10 @@ static void happy_meal_rx(struct happy_meal *hp, struct net_device *dev) | |||
2055 | goto drop_it; | 2055 | goto drop_it; |
2056 | } | 2056 | } |
2057 | 2057 | ||
2058 | copy_skb->dev = dev; | ||
2059 | skb_reserve(copy_skb, 2); | 2058 | skb_reserve(copy_skb, 2); |
2060 | skb_put(copy_skb, len); | 2059 | skb_put(copy_skb, len); |
2061 | hme_dma_sync_for_cpu(hp, dma_addr, len, DMA_FROMDEVICE); | 2060 | hme_dma_sync_for_cpu(hp, dma_addr, len, DMA_FROMDEVICE); |
2062 | memcpy(copy_skb->data, skb->data, len); | 2061 | skb_copy_from_linear_data(skb, copy_skb->data, len); |
2063 | hme_dma_sync_for_device(hp, dma_addr, len, DMA_FROMDEVICE); | 2062 | hme_dma_sync_for_device(hp, dma_addr, len, DMA_FROMDEVICE); |
2064 | 2063 | ||
2065 | /* Reuse original ring buffer. */ | 2064 | /* Reuse original ring buffer. */ |
@@ -2267,10 +2266,8 @@ static int happy_meal_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
2267 | 2266 | ||
2268 | tx_flags = TXFLAG_OWN; | 2267 | tx_flags = TXFLAG_OWN; |
2269 | if (skb->ip_summed == CHECKSUM_PARTIAL) { | 2268 | if (skb->ip_summed == CHECKSUM_PARTIAL) { |
2270 | u32 csum_start_off, csum_stuff_off; | 2269 | const u32 csum_start_off = skb_transport_offset(skb); |
2271 | 2270 | const u32 csum_stuff_off = csum_start_off + skb->csum_offset; | |
2272 | csum_start_off = (u32) (skb->h.raw - skb->data); | ||
2273 | csum_stuff_off = csum_start_off + skb->csum_offset; | ||
2274 | 2271 | ||
2275 | tx_flags = (TXFLAG_OWN | TXFLAG_CSENABLE | | 2272 | tx_flags = (TXFLAG_OWN | TXFLAG_CSENABLE | |
2276 | ((csum_start_off << 14) & TXFLAG_CSBUFBEGIN) | | 2273 | ((csum_start_off << 14) & TXFLAG_CSBUFBEGIN) | |