summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-01-06 06:05:15 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-01-06 06:05:15 +0000
commitf082d62028aefee8e88dc227551c700b85ee7ad6 (patch)
tree1f1ec62e239c32d4a54092a95d130ea1f7625677
parentae83c51a2e48ecb9e30c6c1b92ad3696e0389ea7 (diff)
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 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19051 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--package/mac80211/patches/500-ath_use_gfp_dma.patch17
-rw-r--r--target/linux/ixp4xx/patches-2.6.30/600-dma_performance.patch13
2 files changed, 13 insertions, 17 deletions
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 9390a2faa..000000000
--- 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 000000000..5aac26ee8
--- /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);