diff options
Diffstat (limited to 'kernels/linux-libre-xen/3.11.1-fix-skge.patch')
-rw-r--r-- | kernels/linux-libre-xen/3.11.1-fix-skge.patch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/kernels/linux-libre-xen/3.11.1-fix-skge.patch b/kernels/linux-libre-xen/3.11.1-fix-skge.patch new file mode 100644 index 000000000..26d90e080 --- /dev/null +++ b/kernels/linux-libre-xen/3.11.1-fix-skge.patch @@ -0,0 +1,34 @@ +--- 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); |