diff options
author | John W. Linville <linville@tuxdriver.com> | 2013-02-12 11:06:52 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-02-12 11:06:52 -0500 |
commit | 4fe0c75eedb15af13859ef123db17fefed5af7ae (patch) | |
tree | 6ed38d8e2e0ae457d10a2af2e496e9ecb4d34e08 /drivers/net | |
parent | 8457703f1e86aaf0f134402dd1e09e1f13e65222 (diff) | |
parent | 9c35d7d2368f54313b988a01c408e5cf863ffd9e (diff) |
Merge branch 'for-john' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/cfg80211.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/wmi.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/ath/wil6210/cfg80211.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/ath/wil6210/wmi.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/mac80211.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/mac80211.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/cfg.c | 8 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/cfg80211.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/scan.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/sta_ioctl.c | 11 | ||||
-rw-r--r-- | drivers/net/wireless/orinoco/scan.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/rndis_wlan.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/ti/wl1251/event.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/ti/wl1251/main.c | 24 | ||||
-rw-r--r-- | drivers/net/wireless/ti/wlcore/main.c | 1 |
16 files changed, 45 insertions, 35 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c index 259c43332fb8..a29f04e30830 100644 --- a/drivers/net/wireless/ath/ath6kl/cfg80211.c +++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c | |||
@@ -767,7 +767,7 @@ void ath6kl_cfg80211_connect_event(struct ath6kl_vif *vif, u16 channel, | |||
767 | ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "ad-hoc %s selected\n", | 767 | ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "ad-hoc %s selected\n", |
768 | nw_type & ADHOC_CREATOR ? "creator" : "joiner"); | 768 | nw_type & ADHOC_CREATOR ? "creator" : "joiner"); |
769 | cfg80211_ibss_joined(vif->ndev, bssid, GFP_KERNEL); | 769 | cfg80211_ibss_joined(vif->ndev, bssid, GFP_KERNEL); |
770 | cfg80211_put_bss(bss); | 770 | cfg80211_put_bss(ar->wiphy, bss); |
771 | return; | 771 | return; |
772 | } | 772 | } |
773 | 773 | ||
@@ -778,7 +778,7 @@ void ath6kl_cfg80211_connect_event(struct ath6kl_vif *vif, u16 channel, | |||
778 | assoc_req_ie, assoc_req_len, | 778 | assoc_req_ie, assoc_req_len, |
779 | assoc_resp_ie, assoc_resp_len, | 779 | assoc_resp_ie, assoc_resp_len, |
780 | WLAN_STATUS_SUCCESS, GFP_KERNEL); | 780 | WLAN_STATUS_SUCCESS, GFP_KERNEL); |
781 | cfg80211_put_bss(bss); | 781 | cfg80211_put_bss(ar->wiphy, bss); |
782 | } else if (vif->sme_state == SME_CONNECTED) { | 782 | } else if (vif->sme_state == SME_CONNECTED) { |
783 | /* inform roam event to cfg80211 */ | 783 | /* inform roam event to cfg80211 */ |
784 | cfg80211_roamed_bss(vif->ndev, bss, assoc_req_ie, assoc_req_len, | 784 | cfg80211_roamed_bss(vif->ndev, bss, assoc_req_ie, assoc_req_len, |
diff --git a/drivers/net/wireless/ath/ath6kl/wmi.c b/drivers/net/wireless/ath/ath6kl/wmi.c index 998f8b0f62fd..d366cf105c7c 100644 --- a/drivers/net/wireless/ath/ath6kl/wmi.c +++ b/drivers/net/wireless/ath/ath6kl/wmi.c | |||
@@ -1108,7 +1108,7 @@ static int ath6kl_wmi_bssinfo_event_rx(struct wmi *wmi, u8 *datap, int len, | |||
1108 | kfree(mgmt); | 1108 | kfree(mgmt); |
1109 | if (bss == NULL) | 1109 | if (bss == NULL) |
1110 | return -ENOMEM; | 1110 | return -ENOMEM; |
1111 | cfg80211_put_bss(bss); | 1111 | cfg80211_put_bss(ar->wiphy, bss); |
1112 | 1112 | ||
1113 | /* | 1113 | /* |
1114 | * Firmware doesn't return any event when scheduled scan has | 1114 | * Firmware doesn't return any event when scheduled scan has |
diff --git a/drivers/net/wireless/ath/wil6210/cfg80211.c b/drivers/net/wireless/ath/wil6210/cfg80211.c index 002851fceb2f..9ecc1968262c 100644 --- a/drivers/net/wireless/ath/wil6210/cfg80211.c +++ b/drivers/net/wireless/ath/wil6210/cfg80211.c | |||
@@ -341,7 +341,7 @@ static int wil_cfg80211_connect(struct wiphy *wiphy, | |||
341 | } | 341 | } |
342 | 342 | ||
343 | out: | 343 | out: |
344 | cfg80211_put_bss(bss); | 344 | cfg80211_put_bss(wiphy, bss); |
345 | 345 | ||
346 | return rc; | 346 | return rc; |
347 | } | 347 | } |
diff --git a/drivers/net/wireless/ath/wil6210/wmi.c b/drivers/net/wireless/ath/wil6210/wmi.c index 0b70e17cd1fb..79d608caa903 100644 --- a/drivers/net/wireless/ath/wil6210/wmi.c +++ b/drivers/net/wireless/ath/wil6210/wmi.c | |||
@@ -338,7 +338,7 @@ static void wmi_evt_rx_mgmt(struct wil6210_priv *wil, int id, void *d, int len) | |||
338 | if (bss) { | 338 | if (bss) { |
339 | wil_dbg_wmi(wil, "Added BSS %pM\n", | 339 | wil_dbg_wmi(wil, "Added BSS %pM\n", |
340 | rx_mgmt_frame->bssid); | 340 | rx_mgmt_frame->bssid); |
341 | cfg80211_put_bss(bss); | 341 | cfg80211_put_bss(wiphy, bss); |
342 | } else { | 342 | } else { |
343 | wil_err(wil, "cfg80211_inform_bss() failed\n"); | 343 | wil_err(wil, "cfg80211_inform_bss() failed\n"); |
344 | } | 344 | } |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c index 481f41ad7989..cecc3eff72e9 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | |||
@@ -2323,7 +2323,7 @@ static s32 brcmf_inform_single_bss(struct brcmf_cfg80211_info *cfg, | |||
2323 | if (!bss) | 2323 | if (!bss) |
2324 | return -ENOMEM; | 2324 | return -ENOMEM; |
2325 | 2325 | ||
2326 | cfg80211_put_bss(bss); | 2326 | cfg80211_put_bss(wiphy, bss); |
2327 | 2327 | ||
2328 | return err; | 2328 | return err; |
2329 | } | 2329 | } |
@@ -2429,7 +2429,7 @@ static s32 wl_inform_ibss(struct brcmf_cfg80211_info *cfg, | |||
2429 | goto CleanUp; | 2429 | goto CleanUp; |
2430 | } | 2430 | } |
2431 | 2431 | ||
2432 | cfg80211_put_bss(bss); | 2432 | cfg80211_put_bss(wiphy, bss); |
2433 | 2433 | ||
2434 | CleanUp: | 2434 | CleanUp: |
2435 | 2435 | ||
diff --git a/drivers/net/wireless/iwlwifi/dvm/mac80211.c b/drivers/net/wireless/iwlwifi/dvm/mac80211.c index 75f6f6cfdd47..0fccf725a2e6 100644 --- a/drivers/net/wireless/iwlwifi/dvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/dvm/mac80211.c | |||
@@ -151,8 +151,7 @@ int iwlagn_mac_setup_register(struct iwl_priv *priv, | |||
151 | IEEE80211_HW_QUEUE_CONTROL | | 151 | IEEE80211_HW_QUEUE_CONTROL | |
152 | IEEE80211_HW_SUPPORTS_PS | | 152 | IEEE80211_HW_SUPPORTS_PS | |
153 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS | | 153 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS | |
154 | IEEE80211_HW_WANT_MONITOR_VIF | | 154 | IEEE80211_HW_WANT_MONITOR_VIF; |
155 | IEEE80211_HW_SCAN_WHILE_IDLE; | ||
156 | 155 | ||
157 | hw->offchannel_tx_hw_queue = IWL_AUX_QUEUE; | 156 | hw->offchannel_tx_hw_queue = IWL_AUX_QUEUE; |
158 | hw->radiotap_mcs_details |= IEEE80211_RADIOTAP_MCS_HAVE_FMT; | 157 | hw->radiotap_mcs_details |= IEEE80211_RADIOTAP_MCS_HAVE_FMT; |
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c index ce6127caabdf..bbb8a5b35662 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c | |||
@@ -113,7 +113,6 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm) | |||
113 | IEEE80211_HW_REPORTS_TX_ACK_STATUS | | 113 | IEEE80211_HW_REPORTS_TX_ACK_STATUS | |
114 | IEEE80211_HW_QUEUE_CONTROL | | 114 | IEEE80211_HW_QUEUE_CONTROL | |
115 | IEEE80211_HW_WANT_MONITOR_VIF | | 115 | IEEE80211_HW_WANT_MONITOR_VIF | |
116 | IEEE80211_HW_SCAN_WHILE_IDLE | | ||
117 | IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC | | 116 | IEEE80211_HW_NEED_DTIM_BEFORE_ASSOC | |
118 | IEEE80211_HW_SUPPORTS_PS | | 117 | IEEE80211_HW_SUPPORTS_PS | |
119 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS | | 118 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS | |
diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c index 230f8ebbe289..61735db3b051 100644 --- a/drivers/net/wireless/libertas/cfg.c +++ b/drivers/net/wireless/libertas/cfg.c | |||
@@ -657,7 +657,7 @@ static int lbs_ret_scan(struct lbs_private *priv, unsigned long dummy, | |||
657 | capa, intvl, ie, ielen, | 657 | capa, intvl, ie, ielen, |
658 | LBS_SCAN_RSSI_TO_MBM(rssi), | 658 | LBS_SCAN_RSSI_TO_MBM(rssi), |
659 | GFP_KERNEL); | 659 | GFP_KERNEL); |
660 | cfg80211_put_bss(bss); | 660 | cfg80211_put_bss(wiphy, bss); |
661 | } | 661 | } |
662 | } else | 662 | } else |
663 | lbs_deb_scan("scan response: missing BSS channel IE\n"); | 663 | lbs_deb_scan("scan response: missing BSS channel IE\n"); |
@@ -1444,7 +1444,7 @@ static int lbs_cfg_connect(struct wiphy *wiphy, struct net_device *dev, | |||
1444 | 1444 | ||
1445 | done: | 1445 | done: |
1446 | if (bss) | 1446 | if (bss) |
1447 | cfg80211_put_bss(bss); | 1447 | cfg80211_put_bss(wiphy, bss); |
1448 | lbs_deb_leave_args(LBS_DEB_CFG80211, "ret %d", ret); | 1448 | lbs_deb_leave_args(LBS_DEB_CFG80211, "ret %d", ret); |
1449 | return ret; | 1449 | return ret; |
1450 | } | 1450 | } |
@@ -1766,7 +1766,7 @@ static void lbs_join_post(struct lbs_private *priv, | |||
1766 | params->beacon_interval, | 1766 | params->beacon_interval, |
1767 | fake_ie, fake - fake_ie, | 1767 | fake_ie, fake - fake_ie, |
1768 | 0, GFP_KERNEL); | 1768 | 0, GFP_KERNEL); |
1769 | cfg80211_put_bss(bss); | 1769 | cfg80211_put_bss(priv->wdev->wiphy, bss); |
1770 | 1770 | ||
1771 | memcpy(priv->wdev->ssid, params->ssid, params->ssid_len); | 1771 | memcpy(priv->wdev->ssid, params->ssid, params->ssid_len); |
1772 | priv->wdev->ssid_len = params->ssid_len; | 1772 | priv->wdev->ssid_len = params->ssid_len; |
@@ -2011,7 +2011,7 @@ static int lbs_join_ibss(struct wiphy *wiphy, struct net_device *dev, | |||
2011 | 2011 | ||
2012 | if (bss) { | 2012 | if (bss) { |
2013 | ret = lbs_ibss_join_existing(priv, params, bss); | 2013 | ret = lbs_ibss_join_existing(priv, params, bss); |
2014 | cfg80211_put_bss(bss); | 2014 | cfg80211_put_bss(wiphy, bss); |
2015 | } else | 2015 | } else |
2016 | ret = lbs_ibss_start_new(priv, params); | 2016 | ret = lbs_ibss_start_new(priv, params); |
2017 | 2017 | ||
diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c index 3a004b85b99f..81c84a29308f 100644 --- a/drivers/net/wireless/mwifiex/cfg80211.c +++ b/drivers/net/wireless/mwifiex/cfg80211.c | |||
@@ -1430,7 +1430,7 @@ static int mwifiex_cfg80211_inform_ibss_bss(struct mwifiex_private *priv) | |||
1430 | bss = cfg80211_inform_bss(priv->wdev->wiphy, chan, | 1430 | bss = cfg80211_inform_bss(priv->wdev->wiphy, chan, |
1431 | bss_info.bssid, 0, WLAN_CAPABILITY_IBSS, | 1431 | bss_info.bssid, 0, WLAN_CAPABILITY_IBSS, |
1432 | 0, ie_buf, ie_len, 0, GFP_KERNEL); | 1432 | 0, ie_buf, ie_len, 0, GFP_KERNEL); |
1433 | cfg80211_put_bss(bss); | 1433 | cfg80211_put_bss(priv->wdev->wiphy, bss); |
1434 | memcpy(priv->cfg_bssid, bss_info.bssid, ETH_ALEN); | 1434 | memcpy(priv->cfg_bssid, bss_info.bssid, ETH_ALEN); |
1435 | 1435 | ||
1436 | return 0; | 1436 | return 0; |
diff --git a/drivers/net/wireless/mwifiex/scan.c b/drivers/net/wireless/mwifiex/scan.c index 9189a32b7844..232492487527 100644 --- a/drivers/net/wireless/mwifiex/scan.c +++ b/drivers/net/wireless/mwifiex/scan.c | |||
@@ -1746,7 +1746,7 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv, | |||
1746 | .mac_address, ETH_ALEN)) | 1746 | .mac_address, ETH_ALEN)) |
1747 | mwifiex_update_curr_bss_params(priv, | 1747 | mwifiex_update_curr_bss_params(priv, |
1748 | bss); | 1748 | bss); |
1749 | cfg80211_put_bss(bss); | 1749 | cfg80211_put_bss(priv->wdev->wiphy, bss); |
1750 | } | 1750 | } |
1751 | } else { | 1751 | } else { |
1752 | dev_dbg(adapter->dev, "missing BSS channel IE\n"); | 1752 | dev_dbg(adapter->dev, "missing BSS channel IE\n"); |
diff --git a/drivers/net/wireless/mwifiex/sta_ioctl.c b/drivers/net/wireless/mwifiex/sta_ioctl.c index f542bb8ccbc8..0d018460daf9 100644 --- a/drivers/net/wireless/mwifiex/sta_ioctl.c +++ b/drivers/net/wireless/mwifiex/sta_ioctl.c | |||
@@ -162,13 +162,9 @@ int mwifiex_fill_new_bss_desc(struct mwifiex_private *priv, | |||
162 | 162 | ||
163 | rcu_read_lock(); | 163 | rcu_read_lock(); |
164 | ies = rcu_dereference(bss->ies); | 164 | ies = rcu_dereference(bss->ies); |
165 | if (WARN_ON(!ies)) { | ||
166 | /* should never happen */ | ||
167 | rcu_read_unlock(); | ||
168 | return -EINVAL; | ||
169 | } | ||
170 | beacon_ie = kmemdup(ies->data, ies->len, GFP_ATOMIC); | 165 | beacon_ie = kmemdup(ies->data, ies->len, GFP_ATOMIC); |
171 | beacon_ie_len = ies->len; | 166 | beacon_ie_len = ies->len; |
167 | bss_desc->timestamp = ies->tsf; | ||
172 | rcu_read_unlock(); | 168 | rcu_read_unlock(); |
173 | 169 | ||
174 | if (!beacon_ie) { | 170 | if (!beacon_ie) { |
@@ -184,7 +180,6 @@ int mwifiex_fill_new_bss_desc(struct mwifiex_private *priv, | |||
184 | bss_desc->cap_info_bitmap = bss->capability; | 180 | bss_desc->cap_info_bitmap = bss->capability; |
185 | bss_desc->bss_band = bss_priv->band; | 181 | bss_desc->bss_band = bss_priv->band; |
186 | bss_desc->fw_tsf = bss_priv->fw_tsf; | 182 | bss_desc->fw_tsf = bss_priv->fw_tsf; |
187 | bss_desc->timestamp = bss->tsf; | ||
188 | if (bss_desc->cap_info_bitmap & WLAN_CAPABILITY_PRIVACY) { | 183 | if (bss_desc->cap_info_bitmap & WLAN_CAPABILITY_PRIVACY) { |
189 | dev_dbg(priv->adapter->dev, "info: InterpretIE: AP WEP enabled\n"); | 184 | dev_dbg(priv->adapter->dev, "info: InterpretIE: AP WEP enabled\n"); |
190 | bss_desc->privacy = MWIFIEX_802_11_PRIV_FILTER_8021X_WEP; | 185 | bss_desc->privacy = MWIFIEX_802_11_PRIV_FILTER_8021X_WEP; |
@@ -324,7 +319,7 @@ int mwifiex_bss_start(struct mwifiex_private *priv, struct cfg80211_bss *bss, | |||
324 | } | 319 | } |
325 | 320 | ||
326 | if (bss) | 321 | if (bss) |
327 | cfg80211_put_bss(bss); | 322 | cfg80211_put_bss(priv->adapter->wiphy, bss); |
328 | } else { | 323 | } else { |
329 | /* Adhoc mode */ | 324 | /* Adhoc mode */ |
330 | /* If the requested SSID matches current SSID, return */ | 325 | /* If the requested SSID matches current SSID, return */ |
@@ -354,7 +349,7 @@ int mwifiex_bss_start(struct mwifiex_private *priv, struct cfg80211_bss *bss, | |||
354 | " list. Joining...\n"); | 349 | " list. Joining...\n"); |
355 | ret = mwifiex_adhoc_join(priv, bss_desc); | 350 | ret = mwifiex_adhoc_join(priv, bss_desc); |
356 | if (bss) | 351 | if (bss) |
357 | cfg80211_put_bss(bss); | 352 | cfg80211_put_bss(priv->adapter->wiphy, bss); |
358 | } else { | 353 | } else { |
359 | dev_dbg(adapter->dev, "info: Network not found in " | 354 | dev_dbg(adapter->dev, "info: Network not found in " |
360 | "the list, creating adhoc with ssid = %s\n", | 355 | "the list, creating adhoc with ssid = %s\n", |
diff --git a/drivers/net/wireless/orinoco/scan.c b/drivers/net/wireless/orinoco/scan.c index 96e39edfec77..e8c5714bfd11 100644 --- a/drivers/net/wireless/orinoco/scan.c +++ b/drivers/net/wireless/orinoco/scan.c | |||
@@ -125,7 +125,7 @@ static void orinoco_add_hostscan_result(struct orinoco_private *priv, | |||
125 | cbss = cfg80211_inform_bss(wiphy, channel, bss->a.bssid, timestamp, | 125 | cbss = cfg80211_inform_bss(wiphy, channel, bss->a.bssid, timestamp, |
126 | capability, beacon_interval, ie_buf, ie_len, | 126 | capability, beacon_interval, ie_buf, ie_len, |
127 | signal, GFP_KERNEL); | 127 | signal, GFP_KERNEL); |
128 | cfg80211_put_bss(cbss); | 128 | cfg80211_put_bss(wiphy, cbss); |
129 | } | 129 | } |
130 | 130 | ||
131 | void orinoco_add_extscan_result(struct orinoco_private *priv, | 131 | void orinoco_add_extscan_result(struct orinoco_private *priv, |
@@ -158,7 +158,7 @@ void orinoco_add_extscan_result(struct orinoco_private *priv, | |||
158 | cbss = cfg80211_inform_bss(wiphy, channel, bss->bssid, timestamp, | 158 | cbss = cfg80211_inform_bss(wiphy, channel, bss->bssid, timestamp, |
159 | capability, beacon_interval, ie, ie_len, | 159 | capability, beacon_interval, ie, ie_len, |
160 | signal, GFP_KERNEL); | 160 | signal, GFP_KERNEL); |
161 | cfg80211_put_bss(cbss); | 161 | cfg80211_put_bss(wiphy, cbss); |
162 | } | 162 | } |
163 | 163 | ||
164 | void orinoco_add_hostscan_results(struct orinoco_private *priv, | 164 | void orinoco_add_hostscan_results(struct orinoco_private *priv, |
diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c index abe1d039be81..fe2f272689aa 100644 --- a/drivers/net/wireless/rndis_wlan.c +++ b/drivers/net/wireless/rndis_wlan.c | |||
@@ -2029,7 +2029,7 @@ static bool rndis_bss_info_update(struct usbnet *usbdev, | |||
2029 | bss = cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid->mac, | 2029 | bss = cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid->mac, |
2030 | timestamp, capability, beacon_interval, ie, ie_len, signal, | 2030 | timestamp, capability, beacon_interval, ie, ie_len, signal, |
2031 | GFP_KERNEL); | 2031 | GFP_KERNEL); |
2032 | cfg80211_put_bss(bss); | 2032 | cfg80211_put_bss(priv->wdev.wiphy, bss); |
2033 | 2033 | ||
2034 | return (bss != NULL); | 2034 | return (bss != NULL); |
2035 | } | 2035 | } |
@@ -2718,7 +2718,7 @@ static void rndis_wlan_craft_connected_bss(struct usbnet *usbdev, u8 *bssid, | |||
2718 | bss = cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid, | 2718 | bss = cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid, |
2719 | timestamp, capability, beacon_period, ie_buf, ie_len, | 2719 | timestamp, capability, beacon_period, ie_buf, ie_len, |
2720 | signal, GFP_KERNEL); | 2720 | signal, GFP_KERNEL); |
2721 | cfg80211_put_bss(bss); | 2721 | cfg80211_put_bss(priv->wdev.wiphy, bss); |
2722 | } | 2722 | } |
2723 | 2723 | ||
2724 | /* | 2724 | /* |
diff --git a/drivers/net/wireless/ti/wl1251/event.c b/drivers/net/wireless/ti/wl1251/event.c index 5ec50a476a69..74ae8e1c2e33 100644 --- a/drivers/net/wireless/ti/wl1251/event.c +++ b/drivers/net/wireless/ti/wl1251/event.c | |||
@@ -29,6 +29,8 @@ | |||
29 | static int wl1251_event_scan_complete(struct wl1251 *wl, | 29 | static int wl1251_event_scan_complete(struct wl1251 *wl, |
30 | struct event_mailbox *mbox) | 30 | struct event_mailbox *mbox) |
31 | { | 31 | { |
32 | int ret = 0; | ||
33 | |||
32 | wl1251_debug(DEBUG_EVENT, "status: 0x%x, channels: %d", | 34 | wl1251_debug(DEBUG_EVENT, "status: 0x%x, channels: %d", |
33 | mbox->scheduled_scan_status, | 35 | mbox->scheduled_scan_status, |
34 | mbox->scheduled_scan_channels); | 36 | mbox->scheduled_scan_channels); |
@@ -37,9 +39,11 @@ static int wl1251_event_scan_complete(struct wl1251 *wl, | |||
37 | ieee80211_scan_completed(wl->hw, false); | 39 | ieee80211_scan_completed(wl->hw, false); |
38 | wl1251_debug(DEBUG_MAC80211, "mac80211 hw scan completed"); | 40 | wl1251_debug(DEBUG_MAC80211, "mac80211 hw scan completed"); |
39 | wl->scanning = false; | 41 | wl->scanning = false; |
42 | if (wl->hw->conf.flags & IEEE80211_CONF_IDLE) | ||
43 | ret = wl1251_ps_set_mode(wl, STATION_IDLE); | ||
40 | } | 44 | } |
41 | 45 | ||
42 | return 0; | 46 | return ret; |
43 | } | 47 | } |
44 | 48 | ||
45 | static void wl1251_event_mbox_dump(struct event_mailbox *mbox) | 49 | static void wl1251_event_mbox_dump(struct event_mailbox *mbox) |
diff --git a/drivers/net/wireless/ti/wl1251/main.c b/drivers/net/wireless/ti/wl1251/main.c index f47e8b0482ad..bbbf68cf50a7 100644 --- a/drivers/net/wireless/ti/wl1251/main.c +++ b/drivers/net/wireless/ti/wl1251/main.c | |||
@@ -623,7 +623,7 @@ static int wl1251_op_config(struct ieee80211_hw *hw, u32 changed) | |||
623 | } | 623 | } |
624 | } | 624 | } |
625 | 625 | ||
626 | if (changed & IEEE80211_CONF_CHANGE_IDLE) { | 626 | if (changed & IEEE80211_CONF_CHANGE_IDLE && !wl->scanning) { |
627 | if (conf->flags & IEEE80211_CONF_IDLE) { | 627 | if (conf->flags & IEEE80211_CONF_IDLE) { |
628 | ret = wl1251_ps_set_mode(wl, STATION_IDLE); | 628 | ret = wl1251_ps_set_mode(wl, STATION_IDLE); |
629 | if (ret < 0) | 629 | if (ret < 0) |
@@ -895,11 +895,21 @@ static int wl1251_op_hw_scan(struct ieee80211_hw *hw, | |||
895 | if (ret < 0) | 895 | if (ret < 0) |
896 | goto out; | 896 | goto out; |
897 | 897 | ||
898 | if (hw->conf.flags & IEEE80211_CONF_IDLE) { | ||
899 | ret = wl1251_ps_set_mode(wl, STATION_ACTIVE_MODE); | ||
900 | if (ret < 0) | ||
901 | goto out_sleep; | ||
902 | ret = wl1251_join(wl, wl->bss_type, wl->channel, | ||
903 | wl->beacon_int, wl->dtim_period); | ||
904 | if (ret < 0) | ||
905 | goto out_sleep; | ||
906 | } | ||
907 | |||
898 | skb = ieee80211_probereq_get(wl->hw, wl->vif, ssid, ssid_len, | 908 | skb = ieee80211_probereq_get(wl->hw, wl->vif, ssid, ssid_len, |
899 | req->ie_len); | 909 | req->ie_len); |
900 | if (!skb) { | 910 | if (!skb) { |
901 | ret = -ENOMEM; | 911 | ret = -ENOMEM; |
902 | goto out; | 912 | goto out_idle; |
903 | } | 913 | } |
904 | if (req->ie_len) | 914 | if (req->ie_len) |
905 | memcpy(skb_put(skb, req->ie_len), req->ie, req->ie_len); | 915 | memcpy(skb_put(skb, req->ie_len), req->ie, req->ie_len); |
@@ -908,11 +918,11 @@ static int wl1251_op_hw_scan(struct ieee80211_hw *hw, | |||
908 | skb->len); | 918 | skb->len); |
909 | dev_kfree_skb(skb); | 919 | dev_kfree_skb(skb); |
910 | if (ret < 0) | 920 | if (ret < 0) |
911 | goto out_sleep; | 921 | goto out_idle; |
912 | 922 | ||
913 | ret = wl1251_cmd_trigger_scan_to(wl, 0); | 923 | ret = wl1251_cmd_trigger_scan_to(wl, 0); |
914 | if (ret < 0) | 924 | if (ret < 0) |
915 | goto out_sleep; | 925 | goto out_idle; |
916 | 926 | ||
917 | wl->scanning = true; | 927 | wl->scanning = true; |
918 | 928 | ||
@@ -920,9 +930,13 @@ static int wl1251_op_hw_scan(struct ieee80211_hw *hw, | |||
920 | req->n_channels, WL1251_SCAN_NUM_PROBES); | 930 | req->n_channels, WL1251_SCAN_NUM_PROBES); |
921 | if (ret < 0) { | 931 | if (ret < 0) { |
922 | wl->scanning = false; | 932 | wl->scanning = false; |
923 | goto out_sleep; | 933 | goto out_idle; |
924 | } | 934 | } |
935 | goto out_sleep; | ||
925 | 936 | ||
937 | out_idle: | ||
938 | if (hw->conf.flags & IEEE80211_CONF_IDLE) | ||
939 | ret = wl1251_ps_set_mode(wl, STATION_IDLE); | ||
926 | out_sleep: | 940 | out_sleep: |
927 | wl1251_ps_elp_sleep(wl); | 941 | wl1251_ps_elp_sleep(wl); |
928 | 942 | ||
diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c index 28a37576d568..2c2ff3e1f849 100644 --- a/drivers/net/wireless/ti/wlcore/main.c +++ b/drivers/net/wireless/ti/wlcore/main.c | |||
@@ -5636,7 +5636,6 @@ static int wl1271_init_ieee80211(struct wl1271 *wl) | |||
5636 | IEEE80211_HW_AP_LINK_PS | | 5636 | IEEE80211_HW_AP_LINK_PS | |
5637 | IEEE80211_HW_AMPDU_AGGREGATION | | 5637 | IEEE80211_HW_AMPDU_AGGREGATION | |
5638 | IEEE80211_HW_TX_AMPDU_SETUP_IN_HW | | 5638 | IEEE80211_HW_TX_AMPDU_SETUP_IN_HW | |
5639 | IEEE80211_HW_SCAN_WHILE_IDLE | | ||
5640 | IEEE80211_HW_QUEUE_CONTROL; | 5639 | IEEE80211_HW_QUEUE_CONTROL; |
5641 | 5640 | ||
5642 | wl->hw->wiphy->cipher_suites = cipher_suites; | 5641 | wl->hw->wiphy->cipher_suites = cipher_suites; |