diff options
Diffstat (limited to 'net/mac80211/main.c')
-rw-r--r-- | net/mac80211/main.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index b887e484ae04..22a384dfab65 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
@@ -71,7 +71,7 @@ void ieee80211_configure_filter(struct ieee80211_local *local) | |||
71 | spin_lock_bh(&local->filter_lock); | 71 | spin_lock_bh(&local->filter_lock); |
72 | changed_flags = local->filter_flags ^ new_flags; | 72 | changed_flags = local->filter_flags ^ new_flags; |
73 | 73 | ||
74 | mc = drv_prepare_multicast(local, local->mc_count, local->mc_list); | 74 | mc = drv_prepare_multicast(local, &local->mc_list); |
75 | spin_unlock_bh(&local->filter_lock); | 75 | spin_unlock_bh(&local->filter_lock); |
76 | 76 | ||
77 | /* be a bit nasty */ | 77 | /* be a bit nasty */ |
@@ -111,7 +111,7 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed) | |||
111 | channel_type = local->tmp_channel_type; | 111 | channel_type = local->tmp_channel_type; |
112 | } else { | 112 | } else { |
113 | chan = local->oper_channel; | 113 | chan = local->oper_channel; |
114 | channel_type = local->oper_channel_type; | 114 | channel_type = local->_oper_channel_type; |
115 | } | 115 | } |
116 | 116 | ||
117 | if (chan != local->hw.conf.channel || | 117 | if (chan != local->hw.conf.channel || |
@@ -309,6 +309,8 @@ void ieee80211_restart_hw(struct ieee80211_hw *hw) | |||
309 | { | 309 | { |
310 | struct ieee80211_local *local = hw_to_local(hw); | 310 | struct ieee80211_local *local = hw_to_local(hw); |
311 | 311 | ||
312 | trace_api_restart_hw(local); | ||
313 | |||
312 | /* use this reason, __ieee80211_resume will unblock it */ | 314 | /* use this reason, __ieee80211_resume will unblock it */ |
313 | ieee80211_stop_queues_by_reason(hw, | 315 | ieee80211_stop_queues_by_reason(hw, |
314 | IEEE80211_QUEUE_STOP_REASON_SUSPEND); | 316 | IEEE80211_QUEUE_STOP_REASON_SUSPEND); |
@@ -388,6 +390,9 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, | |||
388 | local->uapsd_max_sp_len = IEEE80211_DEFAULT_MAX_SP_LEN; | 390 | local->uapsd_max_sp_len = IEEE80211_DEFAULT_MAX_SP_LEN; |
389 | 391 | ||
390 | INIT_LIST_HEAD(&local->interfaces); | 392 | INIT_LIST_HEAD(&local->interfaces); |
393 | |||
394 | __hw_addr_init(&local->mc_list); | ||
395 | |||
391 | mutex_init(&local->iflist_mtx); | 396 | mutex_init(&local->iflist_mtx); |
392 | mutex_init(&local->scan_mtx); | 397 | mutex_init(&local->scan_mtx); |
393 | 398 | ||
@@ -437,7 +442,7 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) | |||
437 | struct ieee80211_local *local = hw_to_local(hw); | 442 | struct ieee80211_local *local = hw_to_local(hw); |
438 | int result; | 443 | int result; |
439 | enum ieee80211_band band; | 444 | enum ieee80211_band band; |
440 | int channels, i, j, max_bitrates; | 445 | int channels, max_bitrates; |
441 | bool supp_ht; | 446 | bool supp_ht; |
442 | static const u32 cipher_suites[] = { | 447 | static const u32 cipher_suites[] = { |
443 | WLAN_CIPHER_SUITE_WEP40, | 448 | WLAN_CIPHER_SUITE_WEP40, |
@@ -567,6 +572,8 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) | |||
567 | 572 | ||
568 | local->hw.conf.listen_interval = local->hw.max_listen_interval; | 573 | local->hw.conf.listen_interval = local->hw.max_listen_interval; |
569 | 574 | ||
575 | local->hw.conf.dynamic_ps_forced_timeout = -1; | ||
576 | |||
570 | result = sta_info_start(local); | 577 | result = sta_info_start(local); |
571 | if (result < 0) | 578 | if (result < 0) |
572 | goto fail_sta_info; | 579 | goto fail_sta_info; |
@@ -601,21 +608,6 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) | |||
601 | 608 | ||
602 | ieee80211_led_init(local); | 609 | ieee80211_led_init(local); |
603 | 610 | ||
604 | /* alloc internal scan request */ | ||
605 | i = 0; | ||
606 | local->int_scan_req->ssids = &local->scan_ssid; | ||
607 | local->int_scan_req->n_ssids = 1; | ||
608 | for (band = 0; band < IEEE80211_NUM_BANDS; band++) { | ||
609 | if (!hw->wiphy->bands[band]) | ||
610 | continue; | ||
611 | for (j = 0; j < hw->wiphy->bands[band]->n_channels; j++) { | ||
612 | local->int_scan_req->channels[i] = | ||
613 | &hw->wiphy->bands[band]->channels[j]; | ||
614 | i++; | ||
615 | } | ||
616 | } | ||
617 | local->int_scan_req->n_channels = i; | ||
618 | |||
619 | local->network_latency_notifier.notifier_call = | 611 | local->network_latency_notifier.notifier_call = |
620 | ieee80211_max_network_latency; | 612 | ieee80211_max_network_latency; |
621 | result = pm_qos_add_notifier(PM_QOS_NETWORK_LATENCY, | 613 | result = pm_qos_add_notifier(PM_QOS_NETWORK_LATENCY, |