1IEEE80211_STA_SET_BU(9) Advanced driver interface IEEE80211_STA_SET_BU(9)
2
3
4
6 ieee80211_sta_set_buffered - inform mac80211 about driver-buffered
7 frames
8
10 void ieee80211_sta_set_buffered(struct ieee80211_sta * sta, u8 tid,
11 bool buffered);
12
14 sta
15 struct ieee80211_sta pointer for the sleeping station
16
17 tid
18 the TID that has buffered frames
19
20 buffered
21 indicates whether or not frames are buffered for this TID
22
24 If a driver buffers frames for a powersave station instead of passing
25 them back to mac80211 for retransmission, the station may still need to
26 be told that there are buffered frames via the TIM bit.
27
28 This function informs mac80211 whether or not there are frames that are
29 buffered in the driver for a given TID; mac80211 can then use this data
30 to set the TIM bit (NOTE: This may call back into the driver's set_tim
31 call! Beware of the locking!)
32
33 If all frames are released to the station (due to PS-poll or uAPSD)
34 then the driver needs to inform mac80211 that there no longer are
35 frames buffered. However, when the station wakes up mac80211 assumes
36 that all buffered frames will be transmitted and clears this data,
37 drivers need to make sure they inform mac80211 about all buffered
38 frames on the sleep transition (sta_notify with STA_NOTIFY_SLEEP).
39
40 Note that technically mac80211 only needs to know this per AC, not per
41 TID, but since driver buffering will inevitably happen per TID (since
42 it is related to aggregation) it is easier to make mac80211 map the TID
43 to the AC as required instead of keeping track in all drivers that use
44 this API.
45
47 Johannes Berg <johannes@sipsolutions.net>
48 Author.
49
51Kernel Hackers Manual 3.10 June 2019 IEEE80211_STA_SET_BU(9)