+@@ -608,7 +608,8 @@ static bool sta_info_cleanup_expire_buff
+ #endif
+ dev_kfree_skb(skb);
+
+- if (skb_queue_empty(&sta->ps_tx_buf))
++ if (skb_queue_empty(&sta->ps_tx_buf) &&
++ !test_sta_flags(sta, WLAN_STA_PS_DRIVER_BUF))
+ sta_info_clear_tim_bit(sta);
+ }
+
+@@ -899,6 +900,7 @@ void ieee80211_sta_ps_deliver_wakeup(str
+ struct ieee80211_local *local = sdata->local;
+ int sent, buffered;
+
++ clear_sta_flags(sta, WLAN_STA_PS_DRIVER_BUF);
+ if (!(local->hw.flags & IEEE80211_HW_AP_LINK_PS))
+ drv_sta_notify(local, sdata, STA_NOTIFY_AWAKE, &sta->sta);
+
+@@ -991,3 +993,12 @@ void ieee80211_sta_block_awake(struct ie