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 --- a/drivers/net/tg3.c 2010-01-19 21:38:07.680163220 -0800 +++ b/drivers/net/tg3.c 2010-01-20 10:03:52.598977275 -0800 @@ -4653,9 +4653,13 @@ static int tg3_rx(struct tg3_napi *tnapi skb_reserve(copy_skb, TG3_RAW_IP_ALIGN); skb_put(copy_skb, len); - pci_dma_sync_single_for_cpu(tp->pdev, dma_addr, len, PCI_DMA_FROMDEVICE); + pci_dma_sync_single_for_cpu(tp->pdev, dma_addr, + tp->rx_pkt_map_sz, + PCI_DMA_FROMDEVICE); skb_copy_from_linear_data(skb, copy_skb->data, len); - pci_dma_sync_single_for_device(tp->pdev, dma_addr, len, PCI_DMA_FROMDEVICE); + pci_dma_sync_single_for_device(tp->pdev, dma_addr, + tp->rx_pkt_map_sz, + PCI_DMA_FROMDEVICE); /* We'll reuse the original ring buffer. */ skb = copy_skb; -- -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html