|
@@ -1218,8 +1218,10 @@ ieee80211_tx_prepare(struct ieee80211_sub_if_data *sdata,
|
|
|
|
|
|
if (!tx->sta)
|
|
|
info->flags |= IEEE80211_TX_CTL_CLEAR_PS_FILT;
|
|
|
- else if (test_and_clear_sta_flag(tx->sta, WLAN_STA_CLEAR_PS_FILT))
|
|
|
+ else if (test_and_clear_sta_flag(tx->sta, WLAN_STA_CLEAR_PS_FILT)) {
|
|
|
info->flags |= IEEE80211_TX_CTL_CLEAR_PS_FILT;
|
|
|
+ ieee80211_check_fast_xmit(tx->sta);
|
|
|
+ }
|
|
|
|
|
|
info->flags |= IEEE80211_TX_CTL_FIRST_FRAGMENT;
|
|
|
|
|
@@ -2451,7 +2453,8 @@ void ieee80211_check_fast_xmit(struct sta_info *sta)
|
|
|
|
|
|
if (test_sta_flag(sta, WLAN_STA_PS_STA) ||
|
|
|
test_sta_flag(sta, WLAN_STA_PS_DRIVER) ||
|
|
|
- test_sta_flag(sta, WLAN_STA_PS_DELIVER))
|
|
|
+ test_sta_flag(sta, WLAN_STA_PS_DELIVER) ||
|
|
|
+ test_sta_flag(sta, WLAN_STA_CLEAR_PS_FILT))
|
|
|
goto out;
|
|
|
|
|
|
if (sdata->noack_map)
|