ath: only use GFP_DMA on ixp4xx

SVN-Revision: 18525
This commit is contained in:
Felix Fietkau 2009-11-24 13:55:37 +00:00
parent b2c8d3ada0
commit cafe76e103

View file

@ -1,11 +1,17 @@
--- a/drivers/net/wireless/ath/main.c --- a/drivers/net/wireless/ath/main.c
+++ b/drivers/net/wireless/ath/main.c +++ b/drivers/net/wireless/ath/main.c
@@ -43,7 +43,7 @@ struct sk_buff *ath_rxbuf_alloc(struct a @@ -31,6 +31,14 @@ struct sk_buff *ath_rxbuf_alloc(struct a
* Unfortunately this means we may get 8 KB here from the u32 off;
* kernel... and that is actually what is observed on some
* systems :( */ /*
- skb = __dev_alloc_skb(len + common->cachelsz - 1, gfp_mask); + * Enable GFP_DMA in order to avoid using DMA bounce buffers
+ skb = __dev_alloc_skb(len + common->cachelsz - 1, gfp_mask | GFP_DMA); + * on IXP4xx devices with more than 64M RAM
if (skb != NULL) { + */
off = ((unsigned long) skb->data) % common->cachelsz; +#ifdef CONFIG_ARCH_IXP4XX
if (off != 0) + 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.