From patchwork Wed Jan 20 20:45:09 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: stephen hemminger X-Patchwork-Id: 43365 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 9886FB7D04 for ; Thu, 21 Jan 2010 08:23:23 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754729Ab0ATVXI (ORCPT ); Wed, 20 Jan 2010 16:23:08 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754612Ab0ATVXB (ORCPT ); Wed, 20 Jan 2010 16:23:01 -0500 Received: from suva.vyatta.com ([76.74.103.44]:53912 "EHLO suva.vyatta.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754594Ab0ATVXA (ORCPT ); Wed, 20 Jan 2010 16:23:00 -0500 X-Greylist: delayed 1910 seconds by postgrey-1.27 at vger.kernel.org; Wed, 20 Jan 2010 16:22:54 EST Received: from suva.vyatta.com (suva [127.0.0.1]) by suva.vyatta.com (8.13.7/8.13.7) with ESMTP id o0KKqGxX001067; Wed, 20 Jan 2010 12:52:16 -0800 Received: (from shemminger@localhost) by suva.vyatta.com (8.13.7/8.13.7/Submit) id o0KKq6YB001066; Wed, 20 Jan 2010 12:52:06 -0800 Message-Id: <20100120204559.449735359@vyatta.com> References: <20100120204459.820265084@vyatta.com> User-Agent: quilt/0.46-1 Date: Wed, 20 Jan 2010 12:45:09 -0800 From: Stephen Hemminger To: David Miller , Jarek Poplawski , Divy Le Ray Cc: netdev@vger.kernel.org Subject: [PATCH 10/11] cxgb3: fix DMA sync_single length error Content-Disposition: inline; filename=sge.patch Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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/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: