summaryrefslogtreecommitdiff
path: root/package/mac80211/patches/520-mac80211_drv_tim_override.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/mac80211/patches/520-mac80211_drv_tim_override.patch')
-rw-r--r--package/mac80211/patches/520-mac80211_drv_tim_override.patch73
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