Return-path: Received: from phoenix3.szarvasnet.hu ([87.101.127.16]:55433 "EHLO phoenix3.szarvasnet.hu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751020Ab1AIIHB (ORCPT ); Sun, 9 Jan 2011 03:07:01 -0500 Message-ID: <4D296B12.8000801@openwrt.org> Date: Sun, 09 Jan 2011 09:00:18 +0100 From: Gabor Juhos MIME-Version: 1.0 To: greearb@candelatech.com CC: linux-wireless@vger.kernel.org, ath9k-devel@venema.h4ckr.net Subject: Re: [PATCH] ath9k: Implement rx copy-break. References: <1294500800-29191-1-git-send-email-greearb@candelatech.com> In-Reply-To: <1294500800-29191-1-git-send-email-greearb@candelatech.com> Content-Type: text/plain; charset=ISO-8859-2 Sender: linux-wireless-owner@vger.kernel.org List-ID: Hi Ben, > From: Ben Greear > > This saves us constantly allocating large, multi-page > skbs. It should fix the order-1 allocation errors reported, > and in a 60-vif scenario, this significantly decreases CPU > utilization, and latency, and increases bandwidth. > > Signed-off-by: Ben Greear > --- > :100644 100644 b2497b8... ea2f67c... M drivers/net/wireless/ath/ath9k/recv.c > drivers/net/wireless/ath/ath9k/recv.c | 92 ++++++++++++++++++++++----------- > 1 files changed, 61 insertions(+), 31 deletions(-) <...> > + if (use_copybreak) { > + struct pci_dev *pdev = to_pci_dev(sc->dev); This would cause undefined behaviour with ath9k devices sitting on an AHB bus. > + pci_dma_sync_single_for_cpu(pdev, bf->bf_buf_addr, > + len, PCI_DMA_FROMDEVICE); > + skb_copy_from_linear_data(bf->bf_mpdu, skb->data, len); > + pci_dma_sync_single_for_device(pdev, bf->bf_buf_addr, > + len, PCI_DMA_FROMDEVICE); Please use the bus agnostic equivalents of these DMA functions. - Gabor