mac80211: rename b43 patches to make more space
authorRafał Miłecki <rafal@milecki.pl>
Tue, 10 Jan 2017 14:51:51 +0000 (15:51 +0100)
committerRafał Miłecki <rafal@milecki.pl>
Tue, 10 Jan 2017 15:28:17 +0000 (16:28 +0100)
Just 6 patches were using 80*, 81*, 82* and 84* prefixes.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
12 files changed:
package/kernel/mac80211/patches/805-b43-gpio-mask-module-option.patch [deleted file]
package/kernel/mac80211/patches/810-b43-gpio-mask-module-option.patch [new file with mode: 0644]
package/kernel/mac80211/patches/810-b43_no_pio.patch [deleted file]
package/kernel/mac80211/patches/811-b43_no_pio.patch [new file with mode: 0644]
package/kernel/mac80211/patches/812-b43-add-antenna-control.patch [new file with mode: 0644]
package/kernel/mac80211/patches/813-b43-reduce-number-of-RX-slots.patch [new file with mode: 0644]
package/kernel/mac80211/patches/814-b43-only-use-gpio-0-1-for-led.patch [new file with mode: 0644]
package/kernel/mac80211/patches/815-b43-always-take-overlapping-devs.patch [new file with mode: 0644]
package/kernel/mac80211/patches/820-b43-add-antenna-control.patch [deleted file]
package/kernel/mac80211/patches/841-b43-reduce-number-of-RX-slots.patch [deleted file]
package/kernel/mac80211/patches/845-b43-only-use-gpio-0-1-for-led.patch [deleted file]
package/kernel/mac80211/patches/847-b43-always-take-overlapping-devs.patch [deleted file]

diff --git a/package/kernel/mac80211/patches/805-b43-gpio-mask-module-option.patch b/package/kernel/mac80211/patches/805-b43-gpio-mask-module-option.patch
deleted file mode 100644 (file)
index fd9e6fd..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
---- a/drivers/net/wireless/broadcom/b43/b43.h
-+++ b/drivers/net/wireless/broadcom/b43/b43.h
-@@ -839,6 +839,7 @@ struct b43_wldev {
-       bool qos_enabled;               /* TRUE, if QoS is used. */
-       bool hwcrypto_enabled;          /* TRUE, if HW crypto acceleration is enabled. */
-       bool use_pio;                   /* TRUE if next init should use PIO */
-+      int gpiomask;                   /* GPIO LED mask as a module parameter */
-       /* PHY/Radio device. */
-       struct b43_phy phy;
---- a/drivers/net/wireless/broadcom/b43/main.c
-+++ b/drivers/net/wireless/broadcom/b43/main.c
-@@ -75,6 +75,11 @@ MODULE_FIRMWARE("b43/ucode16_mimo.fw");
- MODULE_FIRMWARE("b43/ucode5.fw");
- MODULE_FIRMWARE("b43/ucode9.fw");
-+static int modparam_gpiomask = 0x000F;
-+module_param_named(gpiomask, modparam_gpiomask, int, 0444);
-+MODULE_PARM_DESC(gpiomask,
-+         "GPIO mask for LED control (default 0x000F)");
-+
- static int modparam_bad_frames_preempt;
- module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444);
- MODULE_PARM_DESC(bad_frames_preempt,
-@@ -2882,10 +2887,10 @@ static int b43_gpio_init(struct b43_wlde
-       u32 mask, set;
-       b43_maskset32(dev, B43_MMIO_MACCTL, ~B43_MACCTL_GPOUTSMSK, 0);
--      b43_maskset16(dev, B43_MMIO_GPIO_MASK, ~0, 0xF);
-+      b43_maskset16(dev, B43_MMIO_GPIO_MASK, ~0, modparam_gpiomask);
-       mask = 0x0000001F;
--      set = 0x0000000F;
-+      set = modparam_gpiomask;
-       if (dev->dev->chip_id == 0x4301) {
-               mask |= 0x0060;
-               set |= 0x0060;
diff --git a/package/kernel/mac80211/patches/810-b43-gpio-mask-module-option.patch b/package/kernel/mac80211/patches/810-b43-gpio-mask-module-option.patch
new file mode 100644 (file)
index 0000000..fd9e6fd
--- /dev/null
@@ -0,0 +1,37 @@
+--- a/drivers/net/wireless/broadcom/b43/b43.h
++++ b/drivers/net/wireless/broadcom/b43/b43.h
+@@ -839,6 +839,7 @@ struct b43_wldev {
+       bool qos_enabled;               /* TRUE, if QoS is used. */
+       bool hwcrypto_enabled;          /* TRUE, if HW crypto acceleration is enabled. */
+       bool use_pio;                   /* TRUE if next init should use PIO */
++      int gpiomask;                   /* GPIO LED mask as a module parameter */
+       /* PHY/Radio device. */
+       struct b43_phy phy;
+--- a/drivers/net/wireless/broadcom/b43/main.c
++++ b/drivers/net/wireless/broadcom/b43/main.c
+@@ -75,6 +75,11 @@ MODULE_FIRMWARE("b43/ucode16_mimo.fw");
+ MODULE_FIRMWARE("b43/ucode5.fw");
+ MODULE_FIRMWARE("b43/ucode9.fw");
++static int modparam_gpiomask = 0x000F;
++module_param_named(gpiomask, modparam_gpiomask, int, 0444);
++MODULE_PARM_DESC(gpiomask,
++         "GPIO mask for LED control (default 0x000F)");
++
+ static int modparam_bad_frames_preempt;
+ module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444);
+ MODULE_PARM_DESC(bad_frames_preempt,
+@@ -2882,10 +2887,10 @@ static int b43_gpio_init(struct b43_wlde
+       u32 mask, set;
+       b43_maskset32(dev, B43_MMIO_MACCTL, ~B43_MACCTL_GPOUTSMSK, 0);
+-      b43_maskset16(dev, B43_MMIO_GPIO_MASK, ~0, 0xF);
++      b43_maskset16(dev, B43_MMIO_GPIO_MASK, ~0, modparam_gpiomask);
+       mask = 0x0000001F;
+-      set = 0x0000000F;
++      set = modparam_gpiomask;
+       if (dev->dev->chip_id == 0x4301) {
+               mask |= 0x0060;
+               set |= 0x0060;
diff --git a/package/kernel/mac80211/patches/810-b43_no_pio.patch b/package/kernel/mac80211/patches/810-b43_no_pio.patch
deleted file mode 100644 (file)
index 79428c2..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
---- a/drivers/net/wireless/broadcom/b43/Makefile
-+++ b/drivers/net/wireless/broadcom/b43/Makefile
-@@ -17,7 +17,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
-@@ -2008,10 +2008,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
-@@ -150,7 +150,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);
-@@ -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;
-+}
-+
-+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
-       select SSB_BLOCKIO
-       default y
diff --git a/package/kernel/mac80211/patches/811-b43_no_pio.patch b/package/kernel/mac80211/patches/811-b43_no_pio.patch
new file mode 100644 (file)
index 0000000..79428c2
--- /dev/null
@@ -0,0 +1,86 @@
+--- a/drivers/net/wireless/broadcom/b43/Makefile
++++ b/drivers/net/wireless/broadcom/b43/Makefile
+@@ -17,7 +17,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
+@@ -2008,10 +2008,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
+@@ -150,7 +150,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);
+@@ -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;
++}
++
++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
+       select SSB_BLOCKIO
+       default y
diff --git a/package/kernel/mac80211/patches/812-b43-add-antenna-control.patch b/package/kernel/mac80211/patches/812-b43-add-antenna-control.patch
new file mode 100644 (file)
index 0000000..f8f555f
--- /dev/null
@@ -0,0 +1,131 @@
+--- a/drivers/net/wireless/broadcom/b43/main.c
++++ b/drivers/net/wireless/broadcom/b43/main.c
+@@ -1648,7 +1648,7 @@ static void b43_write_beacon_template(st
+                                 len, ram_offset, shm_size_offset, rate);
+       /* Write the PHY TX control parameters. */
+-      antenna = B43_ANTENNA_DEFAULT;
++      antenna = dev->tx_antenna;
+       antenna = b43_antenna_to_phyctl(antenna);
+       ctl = b43_shm_read16(dev, B43_SHM_SHARED, B43_SHM_SH_BEACPHYCTL);
+       /* We can't send beacons with short preamble. Would get PHY errors. */
+@@ -3297,8 +3297,8 @@ static int b43_chip_init(struct b43_wlde
+       /* Select the antennae */
+       if (phy->ops->set_rx_antenna)
+-              phy->ops->set_rx_antenna(dev, B43_ANTENNA_DEFAULT);
+-      b43_mgmtframe_txantenna(dev, B43_ANTENNA_DEFAULT);
++              phy->ops->set_rx_antenna(dev, dev->rx_antenna);
++      b43_mgmtframe_txantenna(dev, dev->tx_antenna);
+       if (phy->type == B43_PHYTYPE_B) {
+               value16 = b43_read16(dev, 0x005E);
+@@ -3998,7 +3998,6 @@ static int b43_op_config(struct ieee8021
+       struct b43_wldev *dev = wl->current_dev;
+       struct b43_phy *phy = &dev->phy;
+       struct ieee80211_conf *conf = &hw->conf;
+-      int antenna;
+       int err = 0;
+       mutex_lock(&wl->mutex);
+@@ -4041,11 +4040,9 @@ static int b43_op_config(struct ieee8021
+       }
+       /* Antennas for RX and management frame TX. */
+-      antenna = B43_ANTENNA_DEFAULT;
+-      b43_mgmtframe_txantenna(dev, antenna);
+-      antenna = B43_ANTENNA_DEFAULT;
++      b43_mgmtframe_txantenna(dev, dev->tx_antenna);
+       if (phy->ops->set_rx_antenna)
+-              phy->ops->set_rx_antenna(dev, antenna);
++              phy->ops->set_rx_antenna(dev, dev->rx_antenna);
+       if (wl->radio_enabled != phy->radio_on) {
+               if (wl->radio_enabled) {
+@@ -5189,6 +5186,47 @@ static int b43_op_get_survey(struct ieee
+       return 0;
+ }
++static int b43_op_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant)
++{
++      struct b43_wl *wl = hw_to_b43_wl(hw);
++      struct b43_wldev *dev = wl->current_dev;
++
++      if (tx_ant == 1 && rx_ant == 1) {
++              dev->tx_antenna = B43_ANTENNA0;
++              dev->rx_antenna = B43_ANTENNA0;
++      }
++      else if (tx_ant == 2 && rx_ant == 2) {
++              dev->tx_antenna = B43_ANTENNA1;
++              dev->rx_antenna = B43_ANTENNA1;
++      }
++      else if ((tx_ant & 3) == 3 && (rx_ant & 3) == 3) {
++              dev->tx_antenna = B43_ANTENNA_DEFAULT;
++              dev->rx_antenna = B43_ANTENNA_DEFAULT;
++      }
++      else {
++              return -EINVAL;
++      }
++
++      return 0;
++}
++
++
++static int b43_op_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant)
++{
++      struct b43_wl *wl = hw_to_b43_wl(hw);
++      struct b43_wldev *dev = wl->current_dev;
++
++      switch (dev->tx_antenna) {
++      case B43_ANTENNA0:
++              *tx_ant = 1; *rx_ant = 1; break;
++      case B43_ANTENNA1:
++              *tx_ant = 2; *rx_ant = 2; break;
++      case B43_ANTENNA_DEFAULT:
++              *tx_ant = 3; *rx_ant = 3; break;
++      }
++      return 0;
++}
++
+ static const struct ieee80211_ops b43_hw_ops = {
+       .tx                     = b43_op_tx,
+       .conf_tx                = b43_op_conf_tx,
+@@ -5210,6 +5248,8 @@ static const struct ieee80211_ops b43_hw
+       .sw_scan_complete       = b43_op_sw_scan_complete_notifier,
+       .get_survey             = b43_op_get_survey,
+       .rfkill_poll            = b43_rfkill_poll,
++      .set_antenna            = b43_op_set_antenna,
++      .get_antenna            = b43_op_get_antenna,
+ };
+ /* Hard-reset the chip. Do not call this directly.
+@@ -5513,6 +5553,8 @@ static int b43_one_core_attach(struct b4
+       if (!wldev)
+               goto out;
++      wldev->rx_antenna = B43_ANTENNA_DEFAULT;
++      wldev->tx_antenna = B43_ANTENNA_DEFAULT;
+       wldev->use_pio = b43_modparam_pio;
+       wldev->dev = dev;
+       wldev->wl = wl;
+@@ -5603,6 +5645,9 @@ static struct b43_wl *b43_wireless_init(
+       hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
++      hw->wiphy->available_antennas_rx = 0x3;
++      hw->wiphy->available_antennas_tx = 0x3;
++
+       wl->hw_registred = false;
+       hw->max_rates = 2;
+       SET_IEEE80211_DEV(hw, dev->dev);
+--- a/drivers/net/wireless/broadcom/b43/b43.h
++++ b/drivers/net/wireless/broadcom/b43/b43.h
+@@ -840,6 +840,8 @@ struct b43_wldev {
+       bool hwcrypto_enabled;          /* TRUE, if HW crypto acceleration is enabled. */
+       bool use_pio;                   /* TRUE if next init should use PIO */
+       int gpiomask;                   /* GPIO LED mask as a module parameter */
++      int rx_antenna;                 /* Used RX antenna (B43_ANTENNAxxx) */
++      int tx_antenna;                 /* Used TX antenna (B43_ANTENNAxxx) */
+       /* PHY/Radio device. */
+       struct b43_phy phy;
diff --git a/package/kernel/mac80211/patches/813-b43-reduce-number-of-RX-slots.patch b/package/kernel/mac80211/patches/813-b43-reduce-number-of-RX-slots.patch
new file mode 100644 (file)
index 0000000..5899706
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/broadcom/b43/dma.h
++++ b/drivers/net/wireless/broadcom/b43/dma.h
+@@ -169,7 +169,7 @@ struct b43_dmadesc_generic {
+ /* DMA engine tuning knobs */
+ #define B43_TXRING_SLOTS              256
+-#define B43_RXRING_SLOTS              256
++#define B43_RXRING_SLOTS              32
+ #define B43_DMA0_RX_FW598_BUFSIZE     (B43_DMA0_RX_FW598_FO + IEEE80211_MAX_FRAME_LEN)
+ #define B43_DMA0_RX_FW351_BUFSIZE     (B43_DMA0_RX_FW351_FO + IEEE80211_MAX_FRAME_LEN)
diff --git a/package/kernel/mac80211/patches/814-b43-only-use-gpio-0-1-for-led.patch b/package/kernel/mac80211/patches/814-b43-only-use-gpio-0-1-for-led.patch
new file mode 100644 (file)
index 0000000..8d0c041
--- /dev/null
@@ -0,0 +1,17 @@
+--- a/drivers/net/wireless/broadcom/b43/main.c
++++ b/drivers/net/wireless/broadcom/b43/main.c
+@@ -2899,6 +2899,14 @@ static int b43_gpio_init(struct b43_wlde
+       } else if (dev->dev->chip_id == 0x5354) {
+               /* Don't allow overtaking buttons GPIOs */
+               set &= 0x2; /* 0x2 is LED GPIO on BCM5354 */
++      } else if (dev->dev->chip_id == BCMA_CHIP_ID_BCM4716 || 
++                 dev->dev->chip_id == BCMA_CHIP_ID_BCM47162 ||
++                 dev->dev->chip_id == BCMA_CHIP_ID_BCM5356 ||
++                 dev->dev->chip_id == BCMA_CHIP_ID_BCM5357 ||
++                 dev->dev->chip_id == BCMA_CHIP_ID_BCM53572) {
++              /* just use gpio 0 and 1 for 2.4 GHz wifi led */
++              set &= 0x3;
++              mask &= 0x3;
+       }
+       if (0 /* FIXME: conditional unknown */ ) {
diff --git a/package/kernel/mac80211/patches/815-b43-always-take-overlapping-devs.patch b/package/kernel/mac80211/patches/815-b43-always-take-overlapping-devs.patch
new file mode 100644 (file)
index 0000000..ef7f3c9
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/broadcom/b43/main.c
++++ b/drivers/net/wireless/broadcom/b43/main.c
+@@ -117,7 +117,7 @@ static int b43_modparam_pio = 0;
+ module_param_named(pio, b43_modparam_pio, int, 0644);
+ MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO");
+-static int modparam_allhwsupport = !IS_ENABLED(CPTCFG_BRCMSMAC);
++static int modparam_allhwsupport = 1;
+ module_param_named(allhwsupport, modparam_allhwsupport, int, 0444);
+ MODULE_PARM_DESC(allhwsupport, "Enable support for all hardware (even it if overlaps with the brcmsmac driver)");
diff --git a/package/kernel/mac80211/patches/820-b43-add-antenna-control.patch b/package/kernel/mac80211/patches/820-b43-add-antenna-control.patch
deleted file mode 100644 (file)
index f8f555f..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
---- a/drivers/net/wireless/broadcom/b43/main.c
-+++ b/drivers/net/wireless/broadcom/b43/main.c
-@@ -1648,7 +1648,7 @@ static void b43_write_beacon_template(st
-                                 len, ram_offset, shm_size_offset, rate);
-       /* Write the PHY TX control parameters. */
--      antenna = B43_ANTENNA_DEFAULT;
-+      antenna = dev->tx_antenna;
-       antenna = b43_antenna_to_phyctl(antenna);
-       ctl = b43_shm_read16(dev, B43_SHM_SHARED, B43_SHM_SH_BEACPHYCTL);
-       /* We can't send beacons with short preamble. Would get PHY errors. */
-@@ -3297,8 +3297,8 @@ static int b43_chip_init(struct b43_wlde
-       /* Select the antennae */
-       if (phy->ops->set_rx_antenna)
--              phy->ops->set_rx_antenna(dev, B43_ANTENNA_DEFAULT);
--      b43_mgmtframe_txantenna(dev, B43_ANTENNA_DEFAULT);
-+              phy->ops->set_rx_antenna(dev, dev->rx_antenna);
-+      b43_mgmtframe_txantenna(dev, dev->tx_antenna);
-       if (phy->type == B43_PHYTYPE_B) {
-               value16 = b43_read16(dev, 0x005E);
-@@ -3998,7 +3998,6 @@ static int b43_op_config(struct ieee8021
-       struct b43_wldev *dev = wl->current_dev;
-       struct b43_phy *phy = &dev->phy;
-       struct ieee80211_conf *conf = &hw->conf;
--      int antenna;
-       int err = 0;
-       mutex_lock(&wl->mutex);
-@@ -4041,11 +4040,9 @@ static int b43_op_config(struct ieee8021
-       }
-       /* Antennas for RX and management frame TX. */
--      antenna = B43_ANTENNA_DEFAULT;
--      b43_mgmtframe_txantenna(dev, antenna);
--      antenna = B43_ANTENNA_DEFAULT;
-+      b43_mgmtframe_txantenna(dev, dev->tx_antenna);
-       if (phy->ops->set_rx_antenna)
--              phy->ops->set_rx_antenna(dev, antenna);
-+              phy->ops->set_rx_antenna(dev, dev->rx_antenna);
-       if (wl->radio_enabled != phy->radio_on) {
-               if (wl->radio_enabled) {
-@@ -5189,6 +5186,47 @@ static int b43_op_get_survey(struct ieee
-       return 0;
- }
-+static int b43_op_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant)
-+{
-+      struct b43_wl *wl = hw_to_b43_wl(hw);
-+      struct b43_wldev *dev = wl->current_dev;
-+
-+      if (tx_ant == 1 && rx_ant == 1) {
-+              dev->tx_antenna = B43_ANTENNA0;
-+              dev->rx_antenna = B43_ANTENNA0;
-+      }
-+      else if (tx_ant == 2 && rx_ant == 2) {
-+              dev->tx_antenna = B43_ANTENNA1;
-+              dev->rx_antenna = B43_ANTENNA1;
-+      }
-+      else if ((tx_ant & 3) == 3 && (rx_ant & 3) == 3) {
-+              dev->tx_antenna = B43_ANTENNA_DEFAULT;
-+              dev->rx_antenna = B43_ANTENNA_DEFAULT;
-+      }
-+      else {
-+              return -EINVAL;
-+      }
-+
-+      return 0;
-+}
-+
-+
-+static int b43_op_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant)
-+{
-+      struct b43_wl *wl = hw_to_b43_wl(hw);
-+      struct b43_wldev *dev = wl->current_dev;
-+
-+      switch (dev->tx_antenna) {
-+      case B43_ANTENNA0:
-+              *tx_ant = 1; *rx_ant = 1; break;
-+      case B43_ANTENNA1:
-+              *tx_ant = 2; *rx_ant = 2; break;
-+      case B43_ANTENNA_DEFAULT:
-+              *tx_ant = 3; *rx_ant = 3; break;
-+      }
-+      return 0;
-+}
-+
- static const struct ieee80211_ops b43_hw_ops = {
-       .tx                     = b43_op_tx,
-       .conf_tx                = b43_op_conf_tx,
-@@ -5210,6 +5248,8 @@ static const struct ieee80211_ops b43_hw
-       .sw_scan_complete       = b43_op_sw_scan_complete_notifier,
-       .get_survey             = b43_op_get_survey,
-       .rfkill_poll            = b43_rfkill_poll,
-+      .set_antenna            = b43_op_set_antenna,
-+      .get_antenna            = b43_op_get_antenna,
- };
- /* Hard-reset the chip. Do not call this directly.
-@@ -5513,6 +5553,8 @@ static int b43_one_core_attach(struct b4
-       if (!wldev)
-               goto out;
-+      wldev->rx_antenna = B43_ANTENNA_DEFAULT;
-+      wldev->tx_antenna = B43_ANTENNA_DEFAULT;
-       wldev->use_pio = b43_modparam_pio;
-       wldev->dev = dev;
-       wldev->wl = wl;
-@@ -5603,6 +5645,9 @@ static struct b43_wl *b43_wireless_init(
-       hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
-+      hw->wiphy->available_antennas_rx = 0x3;
-+      hw->wiphy->available_antennas_tx = 0x3;
-+
-       wl->hw_registred = false;
-       hw->max_rates = 2;
-       SET_IEEE80211_DEV(hw, dev->dev);
---- a/drivers/net/wireless/broadcom/b43/b43.h
-+++ b/drivers/net/wireless/broadcom/b43/b43.h
-@@ -840,6 +840,8 @@ struct b43_wldev {
-       bool hwcrypto_enabled;          /* TRUE, if HW crypto acceleration is enabled. */
-       bool use_pio;                   /* TRUE if next init should use PIO */
-       int gpiomask;                   /* GPIO LED mask as a module parameter */
-+      int rx_antenna;                 /* Used RX antenna (B43_ANTENNAxxx) */
-+      int tx_antenna;                 /* Used TX antenna (B43_ANTENNAxxx) */
-       /* PHY/Radio device. */
-       struct b43_phy phy;
diff --git a/package/kernel/mac80211/patches/841-b43-reduce-number-of-RX-slots.patch b/package/kernel/mac80211/patches/841-b43-reduce-number-of-RX-slots.patch
deleted file mode 100644 (file)
index 5899706..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/broadcom/b43/dma.h
-+++ b/drivers/net/wireless/broadcom/b43/dma.h
-@@ -169,7 +169,7 @@ struct b43_dmadesc_generic {
- /* DMA engine tuning knobs */
- #define B43_TXRING_SLOTS              256
--#define B43_RXRING_SLOTS              256
-+#define B43_RXRING_SLOTS              32
- #define B43_DMA0_RX_FW598_BUFSIZE     (B43_DMA0_RX_FW598_FO + IEEE80211_MAX_FRAME_LEN)
- #define B43_DMA0_RX_FW351_BUFSIZE     (B43_DMA0_RX_FW351_FO + IEEE80211_MAX_FRAME_LEN)
diff --git a/package/kernel/mac80211/patches/845-b43-only-use-gpio-0-1-for-led.patch b/package/kernel/mac80211/patches/845-b43-only-use-gpio-0-1-for-led.patch
deleted file mode 100644 (file)
index 8d0c041..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
---- a/drivers/net/wireless/broadcom/b43/main.c
-+++ b/drivers/net/wireless/broadcom/b43/main.c
-@@ -2899,6 +2899,14 @@ static int b43_gpio_init(struct b43_wlde
-       } else if (dev->dev->chip_id == 0x5354) {
-               /* Don't allow overtaking buttons GPIOs */
-               set &= 0x2; /* 0x2 is LED GPIO on BCM5354 */
-+      } else if (dev->dev->chip_id == BCMA_CHIP_ID_BCM4716 || 
-+                 dev->dev->chip_id == BCMA_CHIP_ID_BCM47162 ||
-+                 dev->dev->chip_id == BCMA_CHIP_ID_BCM5356 ||
-+                 dev->dev->chip_id == BCMA_CHIP_ID_BCM5357 ||
-+                 dev->dev->chip_id == BCMA_CHIP_ID_BCM53572) {
-+              /* just use gpio 0 and 1 for 2.4 GHz wifi led */
-+              set &= 0x3;
-+              mask &= 0x3;
-       }
-       if (0 /* FIXME: conditional unknown */ ) {
diff --git a/package/kernel/mac80211/patches/847-b43-always-take-overlapping-devs.patch b/package/kernel/mac80211/patches/847-b43-always-take-overlapping-devs.patch
deleted file mode 100644 (file)
index ef7f3c9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/broadcom/b43/main.c
-+++ b/drivers/net/wireless/broadcom/b43/main.c
-@@ -117,7 +117,7 @@ static int b43_modparam_pio = 0;
- module_param_named(pio, b43_modparam_pio, int, 0644);
- MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO");
--static int modparam_allhwsupport = !IS_ENABLED(CPTCFG_BRCMSMAC);
-+static int modparam_allhwsupport = 1;
- module_param_named(allhwsupport, modparam_allhwsupport, int, 0444);
- MODULE_PARM_DESC(allhwsupport, "Enable support for all hardware (even it if overlaps with the brcmsmac driver)");