Browse Source

mac80211: b43: Expose PIO mode fallback

Allow reenabling the PIO mode fallback for b43.

Signed-off-by: Jonas Gorski <[email protected]>

SVN-Revision: 26735
Hauke Mehrtens 15 years ago
parent
commit
becddc9ec7
2 changed files with 29 additions and 13 deletions
  1. 12 0
      package/mac80211/Makefile
  2. 17 13
      package/mac80211/patches/810-b43_no_pio.patch

+ 12 - 0
package/mac80211/Makefile

@@ -34,6 +34,7 @@ PKG_CONFIG_DEPENDS:= \
 	CONFIG_PACKAGE_MAC80211_DEBUGFS \
 	CONFIG_PACKAGE_ATH_DEBUG \
 	CONFIG_PACKAGE_B43_DEBUG \
+	CONFIG_PACKAGE_B43_PIO \
 	CONFIG_ATH_USER_REGD \
 
 CARL9170_FW_VERSION:=1.9.2
@@ -1118,6 +1119,15 @@ define KernelPackage/b43/config
 
 		  If unsure, say N.
 
+	config PACKAGE_B43_PIO
+		bool "Enable support for PIO transfer mode"
+		default n
+		help
+		  Enable support for using PIO instead of DMA. Unless you have DMA
+		  transfer problems you don't need this.
+
+		  If unsure, say N.
+
 	endmenu
 endef
 
@@ -1179,6 +1189,7 @@ BUILDFLAGS:= \
 	-DCONFIG_MAC80211_RC_MINSTREL_HT \
 	$(if $(CONFIG_ATH_USER_REGD),-DATH_USER_REGD=1) \
 	$(if $(CONFIG_PACKAGE_B43_DEBUG),-DCONFIG_B43_DEBUG) \
+	$(if $(CONFIG_PACKAGE_B43_PIO),-DCONFIG_B43_PIO) \
 	$(if $(CONFIG_PACKAGE_RT2X00_LIB_DEBUGFS),-DCONFIG_RT2X00_LIB_DEBUGFS) \
 	$(if $(CONFIG_PACKAGE_RT2X00_DEBUG),-DCONFIG_RT2X00_DEBUG) \
 	$(if $(NEED_RT2X00_LIB_HT),-DCONFIG_RT2X00_LIB_HT) \
@@ -1211,6 +1222,7 @@ MAKE_OPTS:= \
 	CONFIG_B43=$(if $(CONFIG_PACKAGE_kmod-b43),m) \
 	CONFIG_B43LEGACY=$(if $(CONFIG_PACKAGE_kmod-b43legacy),m) \
 	CONFIG_B43_DEBUG=$(if $(CONFIG_PACKAGE_B43_DEBUG),y) \
+	CONFIG_B43_PIO=$(if $(CONFIG_PACKAGE_B43_PIO),y) \
 	CONFIG_ATH_COMMON=$(if $(CONFIG_PACKAGE_kmod-ath),m) \
 	CONFIG_ATH_DEBUG=$(if $(CONFIG_PACKAGE_ATH_DEBUG),y) \
 	CONFIG_ATH5K_DEBUG=$(if $(CONFIG_PACKAGE_ATH_DEBUG),y) \

+ 17 - 13
package/mac80211/patches/810-b43_no_pio.patch

@@ -5,7 +5,7 @@
  b43-y				+= wa.o
  b43-y				+= dma.o
 -b43-y				+= pio.o
-+# b43-y				+= pio.o
++b43-$(CONFIG_B43_PIO)		+= pio.o
  b43-y				+= rfkill.o
  b43-$(CONFIG_B43_LEDS)		+= leds.o
  b43-$(CONFIG_B43_PCMCIA)	+= pcmcia.o
@@ -15,7 +15,7 @@
  			       dma_reason[4], dma_reason[5]);
  			b43err(dev->wl, "This device does not support DMA "
  			       "on your system. It will now be switched to PIO.\n");
-+#if 0
++#ifdef CONFIG_B43_PIO
  			/* Fall back to PIO transfers if we get fatal DMA errors! */
  			dev->use_pio = 1;
  			b43_controller_restart(dev, "DMA error");
@@ -25,12 +25,20 @@
  		if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
 --- a/drivers/net/wireless/b43/pio.h
 +++ b/drivers/net/wireless/b43/pio.h
-@@ -151,15 +151,34 @@ static inline void b43_piorx_write32(str
+@@ -150,7 +150,7 @@ static inline void b43_piorx_write32(str
+ 	b43_write32(q->dev, q->mmio_base + offset, value);
  }
  
+-
++#ifdef CONFIG_B43_PIO
+ int b43_pio_init(struct b43_wldev *dev);
+ void b43_pio_free(struct b43_wldev *dev);
  
--int b43_pio_init(struct b43_wldev *dev);
--void b43_pio_free(struct b43_wldev *dev);
+@@ -161,5 +161,37 @@ void b43_pio_rx(struct b43_pio_rxqueue *
+ 
+ void b43_pio_tx_suspend(struct b43_wldev *dev);
+ void b43_pio_tx_resume(struct b43_wldev *dev);
++#else
 +static inline int b43_pio_init(struct b43_wldev *dev)
 +{
 +	return 0;
@@ -44,11 +52,7 @@
 +{
 +	return 0;
 +}
- 
--int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb);
--void b43_pio_handle_txstatus(struct b43_wldev *dev,
--			     const struct b43_txstatus *status);
--void b43_pio_rx(struct b43_pio_rxqueue *q);
++
 +static inline void b43_pio_handle_txstatus(struct b43_wldev *dev,
 +					   const struct b43_txstatus *status)
 +{
@@ -57,14 +61,14 @@
 +static inline void b43_pio_rx(struct b43_pio_rxqueue *q)
 +{
 +}
- 
--void b43_pio_tx_suspend(struct b43_wldev *dev);
--void b43_pio_tx_resume(struct b43_wldev *dev);
++
 +static inline void b43_pio_tx_suspend(struct b43_wldev *dev)
 +{
 +}
++
 +static inline void b43_pio_tx_resume(struct b43_wldev *dev)
 +{
 +}
++#endif /* CONFIG_B43_PIO */
  
  #endif /* B43_PIO_H_ */