| From 4a8f199508d79ff8a7d1e22f47b912baaf225336 Mon Sep 17 00:00:00 2001 |
| From: Felix Fietkau <nbd@openwrt.org> |
| Date: Sun, 20 Jan 2013 21:55:20 +0100 |
| Subject: ath9k_hw: fix calibration issues on chainmask that don't include chain 0 |
| |
| From: Felix Fietkau <nbd@openwrt.org> |
| |
| commit 4a8f199508d79ff8a7d1e22f47b912baaf225336 upstream. |
| |
| Signed-off-by: Felix Fietkau <nbd@openwrt.org> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: CAI Qian <caiqian@redhat.com> |
| Reviewed-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/ath/ath9k/ar9003_calib.c | 2 ++ |
| drivers/net/wireless/ath/ath9k/ar9003_phy.c | 2 +- |
| drivers/net/wireless/ath/ath9k/hw.h | 1 + |
| 3 files changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c |
| +++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c |
| @@ -938,6 +938,8 @@ static bool ar9003_hw_init_cal(struct at |
| AR_PHY_CL_TAB_1, |
| AR_PHY_CL_TAB_2 }; |
| |
| + ar9003_hw_set_chain_masks(ah, ah->caps.rx_chainmask, ah->caps.tx_chainmask); |
| + |
| if (rtt) { |
| if (!ar9003_hw_rtt_restore(ah, chan)) |
| run_rtt_cal = true; |
| --- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c |
| +++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c |
| @@ -543,7 +543,7 @@ static void ar9003_hw_init_bb(struct ath |
| udelay(synthDelay + BASE_ACTIVATE_DELAY); |
| } |
| |
| -static void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx) |
| +void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx) |
| { |
| switch (rx) { |
| case 0x5: |
| --- a/drivers/net/wireless/ath/ath9k/hw.h |
| +++ b/drivers/net/wireless/ath/ath9k/hw.h |
| @@ -1014,6 +1014,7 @@ int ar9003_paprd_setup_gain_table(struct |
| int ar9003_paprd_init_table(struct ath_hw *ah); |
| bool ar9003_paprd_is_done(struct ath_hw *ah); |
| void ar9003_hw_set_paprd_txdesc(struct ath_hw *ah, void *ds, u8 chains); |
| +void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx); |
| |
| /* Hardware family op attach helpers */ |
| void ar5008_hw_attach_phy_ops(struct ath_hw *ah); |