diff mbox

[10/11] cxgb3: fix DMA sync_single length error

Message ID 20100120204559.449735359@vyatta.com
State Rejected, archived
Delegated to: David Miller
Headers show

Commit Message

stephen hemminger Jan. 20, 2010, 8:45 p.m. UTC
The DMA api requires that the full mapping be sync'd when
copying frame. First found by Jarek on sky2.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
diff mbox

Patch

--- a/drivers/net/cxgb3/sge.c	2010-01-20 11:57:01.479387584 -0800
+++ b/drivers/net/cxgb3/sge.c	2010-01-20 11:59:02.740012122 -0800
@@ -788,12 +788,15 @@  static struct sk_buff *get_packet(struct
 		if (likely(skb != NULL)) {
 			__skb_put(skb, len);
 			pci_dma_sync_single_for_cpu(adap->pdev,
-					    pci_unmap_addr(sd, dma_addr), len,
-					    PCI_DMA_FROMDEVICE);
+						    pci_unmap_addr(sd, dma_addr),
+						    fl->alloc_size,
+
+						    PCI_DMA_FROMDEVICE);
 			memcpy(skb->data, sd->skb->data, len);
 			pci_dma_sync_single_for_device(adap->pdev,
-					    pci_unmap_addr(sd, dma_addr), len,
-					    PCI_DMA_FROMDEVICE);
+						       pci_unmap_addr(sd, dma_addr),
+						       fl->alloc_size,
+						       PCI_DMA_FROMDEVICE);
 		} else if (!drop_thres)
 			goto use_orig_buf;
 recycle: