On 01/09/2011 12:00 AM, Gabor Juhos wrote:
Hi Ben,
From: Ben Greear<greearb@xxxxxxxxxxxxxxx>
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<greearb@xxxxxxxxxxxxxxx>
---
: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.
Any idea what that might be?
Should we just disable copybreak for things on AHB bus?
Thanks,
Ben
--
Ben Greear <greearb@xxxxxxxxxxxxxxx>
Candela Technologies Inc http://www.candelatech.com
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html