diff options
author | Chun-Yeow Yeoh <yeohchunyeow@gmail.com> | 2014-04-22 18:19:25 +0800 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2014-04-22 16:38:42 +0200 |
commit | 062f1d6de01df545ca0df366c6133f0fa164bff6 (patch) | |
tree | e2048316f04cd2c039e301f0767ee68dba5751de | |
parent | 764152ff66f4a8be1f9d7981e542ffdaa5bd7aff (diff) | |
download | op-kernel-dev-062f1d6de01df545ca0df366c6133f0fa164bff6.zip op-kernel-dev-062f1d6de01df545ca0df366c6133f0fa164bff6.tar.gz |
mac80211: avoid handling of SMPS for mesh
The patch "mac80211: implement SMPS for AP" has caused kernel
oops at mesh STA if the peer mesh STA operates in sleep mode
and then becomes active mode. It can be easily reproduced by
setting the following commands at peer mesh STA:
iw mesh0 station set aa:bb:cc:dd:ee:ff mesh_power_mode deep
iw mesh0 station set aa:bb:cc:dd:ee:ff mesh_power_mode active
Kernel oops will happen at mesh STA aa:bb:cc:dd:ee:ff.
Fix this by avoiding SMPS for mesh mode.
Signed-off-by: Chun-Yeow Yeoh <yeohchunyeow@gmail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r-- | net/mac80211/sta_info.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c index 137a192..847d92f 100644 --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c @@ -1148,7 +1148,8 @@ void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta) atomic_dec(&ps->num_sta_ps); /* This station just woke up and isn't aware of our SMPS state */ - if (!ieee80211_smps_is_restrictive(sta->known_smps_mode, + if (!ieee80211_vif_is_mesh(&sdata->vif) && + !ieee80211_smps_is_restrictive(sta->known_smps_mode, sdata->smps_mode) && sta->known_smps_mode != sdata->bss->req_smps && sta_info_tx_streams(sta) != 1) { |