aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/812-b43-add-antenna-control.patch
diff options
context:
space:
mode:
authorJohn Crispin <john@phrozen.org>2018-08-02 08:44:29 +0200
committerJohn Crispin <john@phrozen.org>2018-09-26 16:35:33 +0200
commitd9eefa7a7031543571d434693c7f984dfbdc990d (patch)
tree73ac027ccf6cdb6fd209a83e7e25c3d0472d46b4 /package/kernel/mac80211/patches/812-b43-add-antenna-control.patch
parente9d92bf1e1af71ff19e4cdc753de3f65963c58a5 (diff)
downloadupstream-d9eefa7a7031543571d434693c7f984dfbdc990d.tar.gz
upstream-d9eefa7a7031543571d434693c7f984dfbdc990d.tar.bz2
upstream-d9eefa7a7031543571d434693c7f984dfbdc990d.zip
mac80211: rebase ontop of v4.18.5
Signed-off-by: John Crispin <john@phrozen.org>
Diffstat (limited to 'package/kernel/mac80211/patches/812-b43-add-antenna-control.patch')
-rw-r--r--package/kernel/mac80211/patches/812-b43-add-antenna-control.patch131
1 files changed, 0 insertions, 131 deletions
diff --git a/package/kernel/mac80211/patches/812-b43-add-antenna-control.patch b/package/kernel/mac80211/patches/812-b43-add-antenna-control.patch
deleted file mode 100644
index 932c83b48e..0000000000
--- a/package/kernel/mac80211/patches/812-b43-add-antenna-control.patch
+++ /dev/null
@@ -1,131 +0,0 @@
---- a/drivers/net/wireless/broadcom/b43/main.c
-+++ b/drivers/net/wireless/broadcom/b43/main.c
-@@ -1658,7 +1658,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. */
-@@ -3307,8 +3307,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);
-@@ -4008,7 +4008,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);
-@@ -4051,11 +4050,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) {
-@@ -5199,6 +5196,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,
-@@ -5220,6 +5258,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.
-@@ -5523,6 +5563,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;
-@@ -5617,6 +5659,9 @@ static struct b43_wl *b43_wireless_init(
-
- wiphy_ext_feature_set(hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
-
-+ 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;