35 lines
852 B
Diff
35 lines
852 B
Diff
|
--- a/drivers/net/ethernet/marvell/skge.c 2013-09-02 16:46:10.000000000 -0400
|
||
|
+++ b/drivers/net/ethernet/marvell/skge.c 2013-09-22 11:14:10.232067541 -0400
|
||
|
@@ -3086,23 +3086,27 @@
|
||
|
PCI_DMA_FROMDEVICE);
|
||
|
skge_rx_reuse(e, skge->rx_buf_size);
|
||
|
} else {
|
||
|
+ struct skge_element ee;
|
||
|
struct sk_buff *nskb;
|
||
|
|
||
|
nskb = netdev_alloc_skb_ip_align(dev, skge->rx_buf_size);
|
||
|
if (!nskb)
|
||
|
goto resubmit;
|
||
|
|
||
|
+ ee = *e;
|
||
|
+
|
||
|
+ skb = ee.skb;
|
||
|
+ prefetch(skb->data);
|
||
|
+
|
||
|
if (skge_rx_setup(skge, e, nskb, skge->rx_buf_size) < 0) {
|
||
|
dev_kfree_skb(nskb);
|
||
|
goto resubmit;
|
||
|
}
|
||
|
|
||
|
pci_unmap_single(skge->hw->pdev,
|
||
|
- dma_unmap_addr(e, mapaddr),
|
||
|
- dma_unmap_len(e, maplen),
|
||
|
+ dma_unmap_addr(&ee, mapaddr),
|
||
|
+ dma_unmap_len(&ee, maplen),
|
||
|
PCI_DMA_FROMDEVICE);
|
||
|
- skb = e->skb;
|
||
|
- prefetch(skb->data);
|
||
|
}
|
||
|
|
||
|
skb_put(skb, len);
|