packages: clean up the package folder
[openwrt/openwrt.git] / package / mac80211 / patches / 820-b43-add-antenna-control.patch
diff --git a/package/mac80211/patches/820-b43-add-antenna-control.patch b/package/mac80211/patches/820-b43-add-antenna-control.patch
deleted file mode 100644 (file)
index c17c1ca..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
---- a/drivers/net/wireless/b43/main.c
-+++ b/drivers/net/wireless/b43/main.c
-@@ -1560,7 +1560,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. */
-@@ -3098,8 +3098,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);
-@@ -3843,7 +3843,6 @@ static int b43_op_config(struct ieee8021
-       struct b43_wldev *dev;
-       struct b43_phy *phy;
-       struct ieee80211_conf *conf = &hw->conf;
--      int antenna;
-       int err = 0;
-       bool reload_bss = false;
-@@ -3897,11 +3896,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) {
-@@ -5026,6 +5023,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,
-@@ -5047,6 +5085,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.
-@@ -5293,6 +5333,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;
-@@ -5383,6 +5425,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/b43/b43.h
-+++ b/drivers/net/wireless/b43/b43.h
-@@ -821,6 +821,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;