diff options
author | Johannes Berg <johannes.berg@intel.com> | 2016-05-03 09:58:00 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2016-05-12 05:16:55 -0400 |
commit | 46fa38e84b656f80edf83d21144221b0cad18d61 (patch) | |
tree | 42f204b73d06436d055c0e29d85495576a65ed09 /include/net | |
parent | 53873f134d285191ef6435882d55837093a36c53 (diff) |
mac80211: allow software PS-Poll/U-APSD with AP_LINK_PS
When using RSS, frames might not be processed in the correct order,
and thus AP_LINK_PS must be used; most likely with firmware keeping
track of the powersave state, this is the case in iwlwifi now.
In this case, the driver can use ieee80211_sta_ps_transition() to
still have mac80211 manage powersave buffering. However, for U-APSD
and PS-Poll this isn't sufficient. If the device can't manage that
entirely on its own, mac80211's code should be used.
To allow this, export two functions: ieee80211_sta_uapsd_trigger()
and ieee80211_sta_pspoll().
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/mac80211.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index ce2f6e3be3cf..be30b0549b88 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -3996,6 +3996,33 @@ static inline int ieee80211_sta_ps_transition_ni(struct ieee80211_sta *sta, | |||
3996 | return ret; | 3996 | return ret; |
3997 | } | 3997 | } |
3998 | 3998 | ||
3999 | /** | ||
4000 | * ieee80211_sta_pspoll - PS-Poll frame received | ||
4001 | * @sta: currently connected station | ||
4002 | * | ||
4003 | * When operating in AP mode with the %IEEE80211_HW_AP_LINK_PS flag set, | ||
4004 | * use this function to inform mac80211 that a PS-Poll frame from a | ||
4005 | * connected station was received. | ||
4006 | * This must be used in conjunction with ieee80211_sta_ps_transition() | ||
4007 | * and possibly ieee80211_sta_uapsd_trigger(); calls to all three must | ||
4008 | * be serialized. | ||
4009 | */ | ||
4010 | void ieee80211_sta_pspoll(struct ieee80211_sta *sta); | ||
4011 | |||
4012 | /** | ||
4013 | * ieee80211_sta_uapsd_trigger - (potential) U-APSD trigger frame received | ||
4014 | * @sta: currently connected station | ||
4015 | * @tid: TID of the received (potential) trigger frame | ||
4016 | * | ||
4017 | * When operating in AP mode with the %IEEE80211_HW_AP_LINK_PS flag set, | ||
4018 | * use this function to inform mac80211 that a (potential) trigger frame | ||
4019 | * from a connected station was received. | ||
4020 | * This must be used in conjunction with ieee80211_sta_ps_transition() | ||
4021 | * and possibly ieee80211_sta_pspoll(); calls to all three must be | ||
4022 | * serialized. | ||
4023 | */ | ||
4024 | void ieee80211_sta_uapsd_trigger(struct ieee80211_sta *sta, u8 tid); | ||
4025 | |||
3999 | /* | 4026 | /* |
4000 | * The TX headroom reserved by mac80211 for its own tx_status functions. | 4027 | * The TX headroom reserved by mac80211 for its own tx_status functions. |
4001 | * This is enough for the radiotap header. | 4028 | * This is enough for the radiotap header. |