* [PATCH 0/2] Antenna diversity fixes @ 2013-08-07 6:59 Sujith Manoharan 2013-08-07 6:59 ` [PATCH 1/2] ath9k: Fix BTCOEX usage for RX diversity Sujith Manoharan 2013-08-07 6:59 ` [PATCH 2/2] ath9k: Run the LNA combining algorithm properly Sujith Manoharan 0 siblings, 2 replies; 6+ messages in thread From: Sujith Manoharan @ 2013-08-07 6:59 UTC (permalink / raw) To: John Linville; +Cc: linux-wireless, ath9k-devel From: Sujith Manoharan <c_manoha@qca.qualcomm.com> Hi, Antenna diversity support for WLAN/BT combo cards WB195 and WB225 is fairly complete. WB335, which is based on AR9565 requires more fixes. More information is here: http://wireless.kernel.org/en/users/Drivers/ath9k/antennadiversity Sujith Sujith Manoharan (2): ath9k: Fix BTCOEX usage for RX diversity ath9k: Run the LNA combining algorithm properly drivers/net/wireless/ath/ath9k/init.c | 4 +-- drivers/net/wireless/ath/ath9k/recv.c | 46 ++++++++++++++++++++++------------- 2 files changed, 31 insertions(+), 19 deletions(-) -- 1.8.3.4 ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] ath9k: Fix BTCOEX usage for RX diversity 2013-08-07 6:59 [PATCH 0/2] Antenna diversity fixes Sujith Manoharan @ 2013-08-07 6:59 ` Sujith Manoharan 2013-08-07 6:59 ` [PATCH 2/2] ath9k: Run the LNA combining algorithm properly Sujith Manoharan 1 sibling, 0 replies; 6+ messages in thread From: Sujith Manoharan @ 2013-08-07 6:59 UTC (permalink / raw) To: John Linville; +Cc: linux-wireless, ath9k-devel From: Sujith Manoharan <c_manoha@qca.qualcomm.com> BTCOEX has to be *disabled* for WLAN RX diversity to work on combo cards. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> --- drivers/net/wireless/ath/ath9k/init.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c index 4afe30e..3b56c2e 100644 --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c @@ -645,11 +645,11 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, /* * Enable WLAN/BT RX Antenna diversity only when: * - * - BTCOEX is enabled + * - BTCOEX is disabled. * - the user manually requests the feature. * - the HW cap is set using the platform data. */ - if (common->btcoex_enabled && ath9k_bt_ant_diversity && + if (!common->btcoex_enabled && ath9k_bt_ant_diversity && (pCap->hw_caps & ATH9K_HW_CAP_BT_ANT_DIV)) common->bt_ant_diversity = 1; -- 1.8.3.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] ath9k: Run the LNA combining algorithm properly 2013-08-07 6:59 [PATCH 0/2] Antenna diversity fixes Sujith Manoharan 2013-08-07 6:59 ` [PATCH 1/2] ath9k: Fix BTCOEX usage for RX diversity Sujith Manoharan @ 2013-08-07 6:59 ` Sujith Manoharan 2013-08-07 7:18 ` Felix Fietkau 2013-08-07 7:24 ` [PATCH v2 " Sujith Manoharan 1 sibling, 2 replies; 6+ messages in thread From: Sujith Manoharan @ 2013-08-07 6:59 UTC (permalink / raw) To: John Linville; +Cc: linux-wireless, ath9k-devel From: Sujith Manoharan <c_manoha@qca.qualcomm.com> The LNA combining algorithm has to be run for cards that support the required diversity features, make sure that that correct conditions are met before enabing this algorithm. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> --- drivers/net/wireless/ath/ath9k/recv.c | 46 ++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index 865e043..e359557 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c @@ -1156,7 +1156,8 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) struct ath_buf *bf; struct sk_buff *skb = NULL, *requeue_skb, *hdr_skb; struct ieee80211_rx_status *rxs; - struct ath_hw *ah = sc->sc_ah; + struct ath_hw *ah = sc->sc_ah +; struct ath9k_hw_capabilities *pCap = &ah->caps; struct ath_common *common = ath9k_hw_common(ah); struct ieee80211_hw *hw = sc->hw; struct ieee80211_hdr *hdr; @@ -1328,11 +1329,30 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) skb = hdr_skb; } + if (rxs->flag & RX_FLAG_MMIC_STRIPPED) + skb_trim(skb, skb->len - 8); - if (ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB) { + spin_lock_irqsave(&sc->sc_pm_lock, flags); + if ((sc->ps_flags & (PS_WAIT_FOR_BEACON | + PS_WAIT_FOR_CAB | + PS_WAIT_FOR_PSPOLL_DATA)) || + ath9k_check_auto_sleep(sc)) + ath_rx_ps(sc, skb, rs.is_mybeacon); + spin_unlock_irqrestore(&sc->sc_pm_lock, flags); + /* + * Run the LNA combining algorithm only in these cases: + * + * Standalone WLAN cards with both LNA/Antenna diversity + * enabled in the EEPROM. + * + * WLAN+BT cards which are in the supported card list + * in ath_pci_id_table and the user has loaded the + * driver with "bt_ant_diversity" set to true. + */ + if (ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB) { /* - * change the default rx antenna if rx diversity + * Change the default rx antenna if rx diversity * chooses the other antenna 3 times in a row. */ if (sc->rx.defant != rs.rs_antenna) { @@ -1342,22 +1362,14 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) sc->rx.rxotherant = 0; } + if (pCap->hw_caps & ATH9K_HW_CAP_BT_ANT_DIV) { + if (common->bt_ant_diversity) + ath_ant_comb_scan(sc, &rs); + } else { + ath_ant_comb_scan(sc, &rs); + } } - if (rxs->flag & RX_FLAG_MMIC_STRIPPED) - skb_trim(skb, skb->len - 8); - - spin_lock_irqsave(&sc->sc_pm_lock, flags); - if ((sc->ps_flags & (PS_WAIT_FOR_BEACON | - PS_WAIT_FOR_CAB | - PS_WAIT_FOR_PSPOLL_DATA)) || - ath9k_check_auto_sleep(sc)) - ath_rx_ps(sc, skb, rs.is_mybeacon); - spin_unlock_irqrestore(&sc->sc_pm_lock, flags); - - if ((ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB) && sc->ant_rx == 3) - ath_ant_comb_scan(sc, &rs); - ath9k_apply_ampdu_details(sc, &rs, rxs); ieee80211_rx(hw, skb); -- 1.8.3.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] ath9k: Run the LNA combining algorithm properly 2013-08-07 6:59 ` [PATCH 2/2] ath9k: Run the LNA combining algorithm properly Sujith Manoharan @ 2013-08-07 7:18 ` Felix Fietkau 2013-08-07 7:18 ` Sujith Manoharan 2013-08-07 7:24 ` [PATCH v2 " Sujith Manoharan 1 sibling, 1 reply; 6+ messages in thread From: Felix Fietkau @ 2013-08-07 7:18 UTC (permalink / raw) To: Sujith Manoharan; +Cc: John Linville, linux-wireless, ath9k-devel On 2013-08-07 8:59 AM, Sujith Manoharan wrote: > From: Sujith Manoharan <c_manoha@qca.qualcomm.com> > > The LNA combining algorithm has to be run for cards > that support the required diversity features, make > sure that that correct conditions are met before > enabing this algorithm. > > Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> > --- > drivers/net/wireless/ath/ath9k/recv.c | 46 ++++++++++++++++++++++------------- > 1 file changed, 29 insertions(+), 17 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c > index 865e043..e359557 100644 > --- a/drivers/net/wireless/ath/ath9k/recv.c > +++ b/drivers/net/wireless/ath/ath9k/recv.c > @@ -1156,7 +1156,8 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) > struct ath_buf *bf; > struct sk_buff *skb = NULL, *requeue_skb, *hdr_skb; > struct ieee80211_rx_status *rxs; > - struct ath_hw *ah = sc->sc_ah; > + struct ath_hw *ah = sc->sc_ah > +; struct ath9k_hw_capabilities *pCap = &ah->caps; > struct ath_common *common = ath9k_hw_common(ah); > struct ieee80211_hw *hw = sc->hw; > struct ieee80211_hdr *hdr; Misplaced semicolon ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] ath9k: Run the LNA combining algorithm properly 2013-08-07 7:18 ` Felix Fietkau @ 2013-08-07 7:18 ` Sujith Manoharan 0 siblings, 0 replies; 6+ messages in thread From: Sujith Manoharan @ 2013-08-07 7:18 UTC (permalink / raw) To: Felix Fietkau; +Cc: John Linville, linux-wireless, ath9k-devel Felix Fietkau wrote: > > - struct ath_hw *ah = sc->sc_ah; > > + struct ath_hw *ah = sc->sc_ah > > +; struct ath9k_hw_capabilities *pCap = &ah->caps; > > struct ath_common *common = ath9k_hw_common(ah); > > struct ieee80211_hw *hw = sc->hw; > > struct ieee80211_hdr *hdr; > Misplaced semicolon Thanks, I'll send v2. Sujith ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] ath9k: Run the LNA combining algorithm properly 2013-08-07 6:59 ` [PATCH 2/2] ath9k: Run the LNA combining algorithm properly Sujith Manoharan 2013-08-07 7:18 ` Felix Fietkau @ 2013-08-07 7:24 ` Sujith Manoharan 1 sibling, 0 replies; 6+ messages in thread From: Sujith Manoharan @ 2013-08-07 7:24 UTC (permalink / raw) To: John Linville; +Cc: linux-wireless, ath9k-devel From: Sujith Manoharan <c_manoha@qca.qualcomm.com> The LNA combining algorithm has to be run for cards that support the required diversity features, make sure that that correct conditions are met before enabing this algorithm. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> --- v2 : Fix a misplaced semicolon drivers/net/wireless/ath/ath9k/recv.c | 44 ++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index 865e043..62dff97 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c @@ -1157,6 +1157,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) struct sk_buff *skb = NULL, *requeue_skb, *hdr_skb; struct ieee80211_rx_status *rxs; struct ath_hw *ah = sc->sc_ah; + struct ath9k_hw_capabilities *pCap = &ah->caps; struct ath_common *common = ath9k_hw_common(ah); struct ieee80211_hw *hw = sc->hw; struct ieee80211_hdr *hdr; @@ -1328,11 +1329,30 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) skb = hdr_skb; } + if (rxs->flag & RX_FLAG_MMIC_STRIPPED) + skb_trim(skb, skb->len - 8); - if (ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB) { + spin_lock_irqsave(&sc->sc_pm_lock, flags); + if ((sc->ps_flags & (PS_WAIT_FOR_BEACON | + PS_WAIT_FOR_CAB | + PS_WAIT_FOR_PSPOLL_DATA)) || + ath9k_check_auto_sleep(sc)) + ath_rx_ps(sc, skb, rs.is_mybeacon); + spin_unlock_irqrestore(&sc->sc_pm_lock, flags); + /* + * Run the LNA combining algorithm only in these cases: + * + * Standalone WLAN cards with both LNA/Antenna diversity + * enabled in the EEPROM. + * + * WLAN+BT cards which are in the supported card list + * in ath_pci_id_table and the user has loaded the + * driver with "bt_ant_diversity" set to true. + */ + if (ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB) { /* - * change the default rx antenna if rx diversity + * Change the default rx antenna if rx diversity * chooses the other antenna 3 times in a row. */ if (sc->rx.defant != rs.rs_antenna) { @@ -1342,22 +1362,14 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) sc->rx.rxotherant = 0; } + if (pCap->hw_caps & ATH9K_HW_CAP_BT_ANT_DIV) { + if (common->bt_ant_diversity) + ath_ant_comb_scan(sc, &rs); + } else { + ath_ant_comb_scan(sc, &rs); + } } - if (rxs->flag & RX_FLAG_MMIC_STRIPPED) - skb_trim(skb, skb->len - 8); - - spin_lock_irqsave(&sc->sc_pm_lock, flags); - if ((sc->ps_flags & (PS_WAIT_FOR_BEACON | - PS_WAIT_FOR_CAB | - PS_WAIT_FOR_PSPOLL_DATA)) || - ath9k_check_auto_sleep(sc)) - ath_rx_ps(sc, skb, rs.is_mybeacon); - spin_unlock_irqrestore(&sc->sc_pm_lock, flags); - - if ((ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB) && sc->ant_rx == 3) - ath_ant_comb_scan(sc, &rs); - ath9k_apply_ampdu_details(sc, &rs, rxs); ieee80211_rx(hw, skb); -- 1.8.3.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-08-07 7:28 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-08-07 6:59 [PATCH 0/2] Antenna diversity fixes Sujith Manoharan 2013-08-07 6:59 ` [PATCH 1/2] ath9k: Fix BTCOEX usage for RX diversity Sujith Manoharan 2013-08-07 6:59 ` [PATCH 2/2] ath9k: Run the LNA combining algorithm properly Sujith Manoharan 2013-08-07 7:18 ` Felix Fietkau 2013-08-07 7:18 ` Sujith Manoharan 2013-08-07 7:24 ` [PATCH v2 " Sujith Manoharan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox