From e5e3624fff9f359618564d53fccd2aea33856e8d Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Wed, 6 Jan 2010 06:05:15 +0000
Subject: [PATCH] ixp4xx: allocate all skbs using GFP_DMA this ensures that dma
 bounce buffers will not be used frequently when bridging or routing frames
 between ethernet and wifi. significantly improves ath9k performance and
 obsoletes an ath specific patch

SVN-Revision: 19051
---
 .../mac80211/patches/500-ath_use_gfp_dma.patch  | 17 -----------------
 .../patches-2.6.30/600-dma_performance.patch    | 13 +++++++++++++
 2 files changed, 13 insertions(+), 17 deletions(-)
 delete mode 100644 package/mac80211/patches/500-ath_use_gfp_dma.patch
 create mode 100644 target/linux/ixp4xx/patches-2.6.30/600-dma_performance.patch

diff --git a/package/mac80211/patches/500-ath_use_gfp_dma.patch b/package/mac80211/patches/500-ath_use_gfp_dma.patch
deleted file mode 100644
index 9390a2faaa..0000000000
--- a/package/mac80211/patches/500-ath_use_gfp_dma.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- a/drivers/net/wireless/ath/main.c
-+++ b/drivers/net/wireless/ath/main.c
-@@ -31,6 +31,14 @@ struct sk_buff *ath_rxbuf_alloc(struct a
- 	u32 off;
- 
- 	/*
-+	 * Enable GFP_DMA in order to avoid using DMA bounce buffers
-+	 * on IXP4xx devices with more than 64M RAM
-+	 */
-+#ifdef CONFIG_ARCH_IXP4XX
-+	gfp_mask |= GFP_DMA;
-+#endif
-+
-+	/*
- 	 * Cache-line-align.  This is important (for the
- 	 * 5210 at least) as not doing so causes bogus data
- 	 * in rx'd frames.
diff --git a/target/linux/ixp4xx/patches-2.6.30/600-dma_performance.patch b/target/linux/ixp4xx/patches-2.6.30/600-dma_performance.patch
new file mode 100644
index 0000000000..5aac26ee80
--- /dev/null
+++ b/target/linux/ixp4xx/patches-2.6.30/600-dma_performance.patch
@@ -0,0 +1,13 @@
+--- a/net/core/skbuff.c
++++ b/net/core/skbuff.c
+@@ -260,6 +260,10 @@ struct sk_buff *__alloc_skb(unsigned int
+ 	if (!skb)
+ 		goto out;
+ 
++#ifdef CONFIG_ARCH_IXP4XX
++	gfp_mask |= GFP_DMA;
++#endif
++
+ 	size = SKB_DATA_ALIGN(size);
+ 	data = kmalloc_node_track_caller(size + sizeof(struct skb_shared_info),
+ 			gfp_mask, node);
-- 
GitLab