aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/rx.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r--net/mac80211/rx.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 3b7a750ebc70..79a89fe9d616 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1311,18 +1311,15 @@ ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx)
1311 !ieee80211_has_morefrags(hdr->frame_control) && 1311 !ieee80211_has_morefrags(hdr->frame_control) &&
1312 !(status->rx_flags & IEEE80211_RX_DEFERRED_RELEASE) && 1312 !(status->rx_flags & IEEE80211_RX_DEFERRED_RELEASE) &&
1313 (rx->sdata->vif.type == NL80211_IFTYPE_AP || 1313 (rx->sdata->vif.type == NL80211_IFTYPE_AP ||
1314 rx->sdata->vif.type == NL80211_IFTYPE_AP_VLAN)) { 1314 rx->sdata->vif.type == NL80211_IFTYPE_AP_VLAN) &&
1315 /* PM bit is only checked in frames where it isn't reserved,
1316 * in AP mode it's reserved in non-bufferable management frames
1317 * (cf. IEEE 802.11-2012 8.2.4.1.7 Power Management field)
1318 */
1319 (!ieee80211_is_mgmt(hdr->frame_control) ||
1320 ieee80211_is_bufferable_mmpdu(hdr->frame_control))) {
1315 if (test_sta_flag(sta, WLAN_STA_PS_STA)) { 1321 if (test_sta_flag(sta, WLAN_STA_PS_STA)) {
1316 /* 1322 if (!ieee80211_has_pm(hdr->frame_control))
1317 * Ignore doze->wake transitions that are
1318 * indicated by non-data frames, the standard
1319 * is unclear here, but for example going to
1320 * PS mode and then scanning would cause a
1321 * doze->wake transition for the probe request,
1322 * and that is clearly undesirable.
1323 */
1324 if (ieee80211_is_data(hdr->frame_control) &&
1325 !ieee80211_has_pm(hdr->frame_control))
1326 sta_ps_end(sta); 1323 sta_ps_end(sta);
1327 } else { 1324 } else {
1328 if (ieee80211_has_pm(hdr->frame_control)) 1325 if (ieee80211_has_pm(hdr->frame_control))