diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2010-05-05 03:44:02 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-05-07 14:55:49 -0400 |
commit | ac8dd506e40ee2c7fcc61654a44c32555a0a8d6c (patch) | |
tree | d0c673f9002d453af211a3fc25705ed3f8ab219d /net/mac80211 | |
parent | bac6fafd4d6a0af26aeb37277a39607f7ce0be77 (diff) |
mac80211: fix BSS info reconfiguration
When reconfiguring an interface due to a previous
hardware restart, mac80211 will currently include
the new IBSS flag on non-IBSS interfaces which may
confuse drivers.
Instead of doing the ~0 trick, simply spell out
which things are going to be reconfigured.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/util.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 2b75b4fb68f4..5b79d552780a 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -1160,18 +1160,33 @@ int ieee80211_reconfig(struct ieee80211_local *local) | |||
1160 | 1160 | ||
1161 | /* Finally also reconfigure all the BSS information */ | 1161 | /* Finally also reconfigure all the BSS information */ |
1162 | list_for_each_entry(sdata, &local->interfaces, list) { | 1162 | list_for_each_entry(sdata, &local->interfaces, list) { |
1163 | u32 changed = ~0; | 1163 | u32 changed; |
1164 | |||
1164 | if (!ieee80211_sdata_running(sdata)) | 1165 | if (!ieee80211_sdata_running(sdata)) |
1165 | continue; | 1166 | continue; |
1167 | |||
1168 | /* common change flags for all interface types */ | ||
1169 | changed = BSS_CHANGED_ERP_CTS_PROT | | ||
1170 | BSS_CHANGED_ERP_PREAMBLE | | ||
1171 | BSS_CHANGED_ERP_SLOT | | ||
1172 | BSS_CHANGED_HT | | ||
1173 | BSS_CHANGED_BASIC_RATES | | ||
1174 | BSS_CHANGED_BEACON_INT | | ||
1175 | BSS_CHANGED_BSSID | | ||
1176 | BSS_CHANGED_CQM; | ||
1177 | |||
1166 | switch (sdata->vif.type) { | 1178 | switch (sdata->vif.type) { |
1167 | case NL80211_IFTYPE_STATION: | 1179 | case NL80211_IFTYPE_STATION: |
1168 | /* disable beacon change bits */ | 1180 | changed |= BSS_CHANGED_ASSOC; |
1169 | changed &= ~(BSS_CHANGED_BEACON | | 1181 | ieee80211_bss_info_change_notify(sdata, changed); |
1170 | BSS_CHANGED_BEACON_ENABLED); | 1182 | break; |
1171 | /* fall through */ | ||
1172 | case NL80211_IFTYPE_ADHOC: | 1183 | case NL80211_IFTYPE_ADHOC: |
1184 | changed |= BSS_CHANGED_IBSS; | ||
1185 | /* fall through */ | ||
1173 | case NL80211_IFTYPE_AP: | 1186 | case NL80211_IFTYPE_AP: |
1174 | case NL80211_IFTYPE_MESH_POINT: | 1187 | case NL80211_IFTYPE_MESH_POINT: |
1188 | changed |= BSS_CHANGED_BEACON | | ||
1189 | BSS_CHANGED_BEACON_ENABLED; | ||
1175 | ieee80211_bss_info_change_notify(sdata, changed); | 1190 | ieee80211_bss_info_change_notify(sdata, changed); |
1176 | break; | 1191 | break; |
1177 | case NL80211_IFTYPE_WDS: | 1192 | case NL80211_IFTYPE_WDS: |