diff options
author | David S. Miller <davem@davemloft.net> | 2015-10-14 21:34:25 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-10-14 21:34:25 -0400 |
commit | ef41a2cedb14871203ee28d7a5cb5aafe4e97439 (patch) | |
tree | e1a2824b5a873575e5a56301a760bcce26fea97c | |
parent | 0f8b8e28fb3241f9fd82ce13bac2b40c35e987e0 (diff) | |
parent | 4633dfc32c0019bed2996de9bbdbe7f3b518a44e (diff) |
Merge tag 'mac80211-for-davem-2015-10-13' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211
Johannes Berg says:
====================
Like last time, we have two small fixes:
* fast-xmit was not doing powersave filter clearing correctly,
disable fast-xmit while any such operations are still pending
* a debugfs file was broken due to some infrastructure changes
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/mac80211/debugfs.c | 2 | ||||
-rw-r--r-- | net/mac80211/status.c | 1 | ||||
-rw-r--r-- | net/mac80211/tx.c | 7 |
3 files changed, 7 insertions, 3 deletions
diff --git a/net/mac80211/debugfs.c b/net/mac80211/debugfs.c index ced6bf3be8d6..1560c8482bcb 100644 --- a/net/mac80211/debugfs.c +++ b/net/mac80211/debugfs.c | |||
@@ -149,7 +149,7 @@ static ssize_t hwflags_read(struct file *file, char __user *user_buf, | |||
149 | 149 | ||
150 | for (i = 0; i < NUM_IEEE80211_HW_FLAGS; i++) { | 150 | for (i = 0; i < NUM_IEEE80211_HW_FLAGS; i++) { |
151 | if (test_bit(i, local->hw.flags)) | 151 | if (test_bit(i, local->hw.flags)) |
152 | pos += scnprintf(pos, end - pos, "%s", | 152 | pos += scnprintf(pos, end - pos, "%s\n", |
153 | hw_flag_names[i]); | 153 | hw_flag_names[i]); |
154 | } | 154 | } |
155 | 155 | ||
diff --git a/net/mac80211/status.c b/net/mac80211/status.c index 8ba583243509..3ed7ddfbf8e8 100644 --- a/net/mac80211/status.c +++ b/net/mac80211/status.c | |||
@@ -101,6 +101,7 @@ static void ieee80211_handle_filtered_frame(struct ieee80211_local *local, | |||
101 | * when it wakes up for the next time. | 101 | * when it wakes up for the next time. |
102 | */ | 102 | */ |
103 | set_sta_flag(sta, WLAN_STA_CLEAR_PS_FILT); | 103 | set_sta_flag(sta, WLAN_STA_CLEAR_PS_FILT); |
104 | ieee80211_clear_fast_xmit(sta); | ||
104 | 105 | ||
105 | /* | 106 | /* |
106 | * This code races in the following way: | 107 | * This code races in the following way: |
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 84e0e8c7fb23..7892eb8ed4c8 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -1218,8 +1218,10 @@ ieee80211_tx_prepare(struct ieee80211_sub_if_data *sdata, | |||
1218 | 1218 | ||
1219 | if (!tx->sta) | 1219 | if (!tx->sta) |
1220 | info->flags |= IEEE80211_TX_CTL_CLEAR_PS_FILT; | 1220 | info->flags |= IEEE80211_TX_CTL_CLEAR_PS_FILT; |
1221 | else if (test_and_clear_sta_flag(tx->sta, WLAN_STA_CLEAR_PS_FILT)) | 1221 | else if (test_and_clear_sta_flag(tx->sta, WLAN_STA_CLEAR_PS_FILT)) { |
1222 | info->flags |= IEEE80211_TX_CTL_CLEAR_PS_FILT; | 1222 | info->flags |= IEEE80211_TX_CTL_CLEAR_PS_FILT; |
1223 | ieee80211_check_fast_xmit(tx->sta); | ||
1224 | } | ||
1223 | 1225 | ||
1224 | info->flags |= IEEE80211_TX_CTL_FIRST_FRAGMENT; | 1226 | info->flags |= IEEE80211_TX_CTL_FIRST_FRAGMENT; |
1225 | 1227 | ||
@@ -2451,7 +2453,8 @@ void ieee80211_check_fast_xmit(struct sta_info *sta) | |||
2451 | 2453 | ||
2452 | if (test_sta_flag(sta, WLAN_STA_PS_STA) || | 2454 | if (test_sta_flag(sta, WLAN_STA_PS_STA) || |
2453 | test_sta_flag(sta, WLAN_STA_PS_DRIVER) || | 2455 | test_sta_flag(sta, WLAN_STA_PS_DRIVER) || |
2454 | test_sta_flag(sta, WLAN_STA_PS_DELIVER)) | 2456 | test_sta_flag(sta, WLAN_STA_PS_DELIVER) || |
2457 | test_sta_flag(sta, WLAN_STA_CLEAR_PS_FILT)) | ||
2455 | goto out; | 2458 | goto out; |
2456 | 2459 | ||
2457 | if (sdata->noack_map) | 2460 | if (sdata->noack_map) |