提交 be41b052 编写于 作者: M Mohammed Shafi Shajakhan 提交者: John W. Linville

ath9k: Ensure we set FTP_STOMP_LOW weight when WLAN is idle

When WLAN is idle ensure we downgrade to FTP_STOMP_LOW weight
(from STOMP_LOW) to provide more bandwidth for BT FTP profile.
WLAN's idleness can be estimated by taking into account of the
rx data packets and just ignore beacons, qos nullfunc etc.

Also update bt_wait_time even if the chip is in NETWORK SLEEP
mode. This should help BT throughput when WLAN is idle.
Signed-off-by: NMohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 e0509d3b
...@@ -193,7 +193,6 @@ static void ath_mci_ftp_adjust(struct ath_softc *sc) ...@@ -193,7 +193,6 @@ static void ath_mci_ftp_adjust(struct ath_softc *sc)
struct ath_mci_profile *mci = &btcoex->mci; struct ath_mci_profile *mci = &btcoex->mci;
struct ath_hw *ah = sc->sc_ah; struct ath_hw *ah = sc->sc_ah;
btcoex->bt_wait_time += btcoex->btcoex_period;
if (btcoex->bt_wait_time > ATH_BTCOEX_RX_WAIT_TIME) { if (btcoex->bt_wait_time > ATH_BTCOEX_RX_WAIT_TIME) {
if (ar9003_mci_state(ah, MCI_STATE_NEED_FTP_STOMP) && if (ar9003_mci_state(ah, MCI_STATE_NEED_FTP_STOMP) &&
(mci->num_pan || mci->num_other_acl)) (mci->num_pan || mci->num_other_acl))
...@@ -222,6 +221,7 @@ static void ath_btcoex_period_timer(unsigned long data) ...@@ -222,6 +221,7 @@ static void ath_btcoex_period_timer(unsigned long data)
spin_lock_irqsave(&sc->sc_pm_lock, flags); spin_lock_irqsave(&sc->sc_pm_lock, flags);
if (sc->sc_ah->power_mode == ATH9K_PM_NETWORK_SLEEP) { if (sc->sc_ah->power_mode == ATH9K_PM_NETWORK_SLEEP) {
btcoex->bt_wait_time += btcoex->btcoex_period;
spin_unlock_irqrestore(&sc->sc_pm_lock, flags); spin_unlock_irqrestore(&sc->sc_pm_lock, flags);
goto skip_hw_wakeup; goto skip_hw_wakeup;
} }
......
...@@ -1105,7 +1105,10 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) ...@@ -1105,7 +1105,10 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
else else
rs.is_mybeacon = false; rs.is_mybeacon = false;
sc->rx.num_pkts++; if (ieee80211_is_data_present(hdr->frame_control) &&
!ieee80211_is_qos_nullfunc(hdr->frame_control))
sc->rx.num_pkts++;
ath_debug_stat_rx(sc, &rs); ath_debug_stat_rx(sc, &rs);
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册