|
@@ -1885,6 +1885,7 @@ static int ath9k_ampdu_action(struct ieee80211_hw *hw,
|
|
u16 tid, u16 *ssn, u8 buf_size)
|
|
u16 tid, u16 *ssn, u8 buf_size)
|
|
{
|
|
{
|
|
struct ath_softc *sc = hw->priv;
|
|
struct ath_softc *sc = hw->priv;
|
|
|
|
+ struct ath_common *common = ath9k_hw_common(sc->sc_ah);
|
|
bool flush = false;
|
|
bool flush = false;
|
|
int ret = 0;
|
|
int ret = 0;
|
|
|
|
|
|
@@ -1896,6 +1897,12 @@ static int ath9k_ampdu_action(struct ieee80211_hw *hw,
|
|
case IEEE80211_AMPDU_RX_STOP:
|
|
case IEEE80211_AMPDU_RX_STOP:
|
|
break;
|
|
break;
|
|
case IEEE80211_AMPDU_TX_START:
|
|
case IEEE80211_AMPDU_TX_START:
|
|
|
|
+ if (ath9k_is_chanctx_enabled()) {
|
|
|
|
+ if (test_bit(ATH_OP_SCANNING, &common->op_flags)) {
|
|
|
|
+ ret = -EBUSY;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
ath9k_ps_wakeup(sc);
|
|
ath9k_ps_wakeup(sc);
|
|
ret = ath_tx_aggr_start(sc, sta, tid, ssn);
|
|
ret = ath_tx_aggr_start(sc, sta, tid, ssn);
|
|
if (!ret)
|
|
if (!ret)
|