diff options
Diffstat (limited to 'package/mac80211/patches/520-mac80211_drv_tim_override.patch')
-rw-r--r-- | package/mac80211/patches/520-mac80211_drv_tim_override.patch | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/package/mac80211/patches/520-mac80211_drv_tim_override.patch b/package/mac80211/patches/520-mac80211_drv_tim_override.patch deleted file mode 100644 index 7b192e1..0000000 --- a/package/mac80211/patches/520-mac80211_drv_tim_override.patch +++ /dev/null @@ -1,73 +0,0 @@ ---- a/include/net/mac80211.h -+++ b/include/net/mac80211.h -@@ -2227,6 +2227,18 @@ static inline int ieee80211_sta_ps_trans - #define IEEE80211_TX_STATUS_HEADROOM 13 - - /** -+ * ieee80211_sta_set_tim - set the TIM bit for a sleeping station -+ * -+ * If a driver buffers frames for a powersave station instead of passing -+ * them back to mac80211 for retransmission, the station needs to be told -+ * to wake up using the TIM bitmap in the beacon. -+ * -+ * This function sets the station's TIM bit - it will be cleared when the -+ * station wakes up. -+ */ -+void ieee80211_sta_set_tim(struct ieee80211_sta *sta); -+ -+/** - * ieee80211_tx_status - transmit status callback - * - * Call this function for all transmitted frames after they have been ---- a/net/mac80211/sta_info.c -+++ b/net/mac80211/sta_info.c -@@ -609,7 +609,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); - } - -@@ -893,6 +894,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); - -@@ -985,3 +987,12 @@ void ieee80211_sta_block_awake(struct ie - ieee80211_queue_work(hw, &sta->drv_unblock_wk); - } - EXPORT_SYMBOL(ieee80211_sta_block_awake); -+ -+void ieee80211_sta_set_tim(struct ieee80211_sta *pubsta) -+{ -+ struct sta_info *sta = container_of(pubsta, struct sta_info, sta); -+ -+ set_sta_flags(sta, WLAN_STA_PS_DRIVER_BUF); -+ sta_info_set_tim_bit(sta); -+} -+EXPORT_SYMBOL(ieee80211_sta_set_tim); ---- a/net/mac80211/sta_info.h -+++ b/net/mac80211/sta_info.h -@@ -43,6 +43,8 @@ - * be in the queues - * @WLAN_STA_PSPOLL: Station sent PS-poll while driver was keeping - * station in power-save mode, reply when the driver unblocks. -+ * @WLAN_STA_PS_DRIVER_BUF: Station has frames pending in driver internal -+ * buffers. Automatically cleared on station wake-up. - */ - enum ieee80211_sta_info_flags { - WLAN_STA_AUTH = 1<<0, -@@ -58,6 +60,7 @@ enum ieee80211_sta_info_flags { - WLAN_STA_BLOCK_BA = 1<<11, - WLAN_STA_PS_DRIVER = 1<<12, - WLAN_STA_PSPOLL = 1<<13, -+ WLAN_STA_PS_DRIVER_BUF = 1<<14, - }; - - #define STA_TID_NUM 16 |