OpenWrt – Rev 4

Subversion Repositories:
Rev:
--- a/drivers/net/wireless/broadcom/b43/Makefile
+++ b/drivers/net/wireless/broadcom/b43/Makefile
@@ -18,7 +18,7 @@ b43-$(CPTCFG_B43_PHY_AC)      += phy_ac.o
 b43-y                          += sysfs.o
 b43-y                          += xmit.o
 b43-y                          += dma.o
-b43-y                          += pio.o
+b43-$(CPTCFG_B43_PIO)          += pio.o
 b43-y                          += rfkill.o
 b43-y                          += ppr.o
 b43-$(CPTCFG_B43_LEDS)         += leds.o
--- a/drivers/net/wireless/broadcom/b43/main.c
+++ b/drivers/net/wireless/broadcom/b43/main.c
@@ -2018,10 +2018,12 @@ static void b43_do_interrupt_thread(stru
                        dma_reason[0], dma_reason[1],
                        dma_reason[2], dma_reason[3],
                        dma_reason[4], dma_reason[5]);
+#ifdef CPTCFG_B43_PIO
                b43err(dev->wl, "This device does not support DMA "
                               "on your system. It will now be switched to PIO.\n");
                /* Fall back to PIO transfers if we get fatal DMA errors! */
                dev->use_pio = true;
+#endif
                b43_controller_restart(dev, "DMA error");
                return;
        }
--- a/drivers/net/wireless/broadcom/b43/pio.h
+++ b/drivers/net/wireless/broadcom/b43/pio.h
@@ -151,7 +151,7 @@ static inline void b43_piorx_write32(str
        b43_write32(q->dev, q->mmio_base + offset, value);
 }
 
-
+#ifdef CPTCFG_B43_PIO
 int b43_pio_init(struct b43_wldev *dev);
 void b43_pio_free(struct b43_wldev *dev);
 
@@ -162,5 +162,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;
+}
+
+static inline void b43_pio_free(struct b43_wldev *dev)
+{
+}
+
+static inline int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb)
+{
+       return 0;
+}
+
+static inline void b43_pio_handle_txstatus(struct b43_wldev *dev,
+                                          const struct b43_txstatus *status)
+{
+}
+
+static inline void b43_pio_rx(struct b43_pio_rxqueue *q)
+{
+}
+
+static inline void b43_pio_tx_suspend(struct b43_wldev *dev)
+{
+}
+
+static inline void b43_pio_tx_resume(struct b43_wldev *dev)
+{
+}
+#endif /* CPTCFG_B43_PIO */
 
 #endif /* B43_PIO_H_ */
--- a/drivers/net/wireless/broadcom/b43/Kconfig
+++ b/drivers/net/wireless/broadcom/b43/Kconfig
@@ -98,7 +98,7 @@ config B43_BCMA_PIO
        default y
 
 config B43_PIO
-       bool
+       bool "Broadcom 43xx PIO support"
        depends on B43 && B43_SSB
        depends on SSB_BLOCKIO
        default y