diff options
Diffstat (limited to 'net/mac80211/main.c')
-rw-r--r-- | net/mac80211/main.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index d81c178c7712..0b040fb73673 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
@@ -345,6 +345,13 @@ void ieee80211_restart_hw(struct ieee80211_hw *hw) | |||
345 | ieee80211_stop_queues_by_reason(hw, | 345 | ieee80211_stop_queues_by_reason(hw, |
346 | IEEE80211_QUEUE_STOP_REASON_SUSPEND); | 346 | IEEE80211_QUEUE_STOP_REASON_SUSPEND); |
347 | 347 | ||
348 | /* | ||
349 | * Stop all Rx during the reconfig. We don't want state changes | ||
350 | * or driver callbacks while this is in progress. | ||
351 | */ | ||
352 | local->in_reconfig = true; | ||
353 | barrier(); | ||
354 | |||
348 | schedule_work(&local->restart_work); | 355 | schedule_work(&local->restart_work); |
349 | } | 356 | } |
350 | EXPORT_SYMBOL(ieee80211_restart_hw); | 357 | EXPORT_SYMBOL(ieee80211_restart_hw); |
@@ -455,7 +462,9 @@ static const struct ieee80211_txrx_stypes | |||
455 | ieee80211_default_mgmt_stypes[NUM_NL80211_IFTYPES] = { | 462 | ieee80211_default_mgmt_stypes[NUM_NL80211_IFTYPES] = { |
456 | [NL80211_IFTYPE_ADHOC] = { | 463 | [NL80211_IFTYPE_ADHOC] = { |
457 | .tx = 0xffff, | 464 | .tx = 0xffff, |
458 | .rx = BIT(IEEE80211_STYPE_ACTION >> 4), | 465 | .rx = BIT(IEEE80211_STYPE_ACTION >> 4) | |
466 | BIT(IEEE80211_STYPE_AUTH >> 4) | | ||
467 | BIT(IEEE80211_STYPE_DEAUTH >> 4), | ||
459 | }, | 468 | }, |
460 | [NL80211_IFTYPE_STATION] = { | 469 | [NL80211_IFTYPE_STATION] = { |
461 | .tx = 0xffff, | 470 | .tx = 0xffff, |