Commit 5b112d3d authored by Johannes Berg's avatar Johannes Berg

cfg80211: pass wiphy to cfg80211_ref_bss/put_bss

This prepares for using the spinlock instead of krefs
which is needed in the next patch to track the refs
of combined BSSes correctly.

Acked-by: Bing Zhao <bzhao@marvell.com> [mwifiex]
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent bba87ffe
...@@ -767,7 +767,7 @@ void ath6kl_cfg80211_connect_event(struct ath6kl_vif *vif, u16 channel, ...@@ -767,7 +767,7 @@ void ath6kl_cfg80211_connect_event(struct ath6kl_vif *vif, u16 channel,
ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "ad-hoc %s selected\n", ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "ad-hoc %s selected\n",
nw_type & ADHOC_CREATOR ? "creator" : "joiner"); nw_type & ADHOC_CREATOR ? "creator" : "joiner");
cfg80211_ibss_joined(vif->ndev, bssid, GFP_KERNEL); cfg80211_ibss_joined(vif->ndev, bssid, GFP_KERNEL);
cfg80211_put_bss(bss); cfg80211_put_bss(ar->wiphy, bss);
return; return;
} }
...@@ -778,7 +778,7 @@ void ath6kl_cfg80211_connect_event(struct ath6kl_vif *vif, u16 channel, ...@@ -778,7 +778,7 @@ void ath6kl_cfg80211_connect_event(struct ath6kl_vif *vif, u16 channel,
assoc_req_ie, assoc_req_len, assoc_req_ie, assoc_req_len,
assoc_resp_ie, assoc_resp_len, assoc_resp_ie, assoc_resp_len,
WLAN_STATUS_SUCCESS, GFP_KERNEL); WLAN_STATUS_SUCCESS, GFP_KERNEL);
cfg80211_put_bss(bss); cfg80211_put_bss(ar->wiphy, bss);
} else if (vif->sme_state == SME_CONNECTED) { } else if (vif->sme_state == SME_CONNECTED) {
/* inform roam event to cfg80211 */ /* inform roam event to cfg80211 */
cfg80211_roamed_bss(vif->ndev, bss, assoc_req_ie, assoc_req_len, cfg80211_roamed_bss(vif->ndev, bss, assoc_req_ie, assoc_req_len,
......
...@@ -1108,7 +1108,7 @@ static int ath6kl_wmi_bssinfo_event_rx(struct wmi *wmi, u8 *datap, int len, ...@@ -1108,7 +1108,7 @@ static int ath6kl_wmi_bssinfo_event_rx(struct wmi *wmi, u8 *datap, int len,
kfree(mgmt); kfree(mgmt);
if (bss == NULL) if (bss == NULL)
return -ENOMEM; return -ENOMEM;
cfg80211_put_bss(bss); cfg80211_put_bss(ar->wiphy, bss);
/* /*
* Firmware doesn't return any event when scheduled scan has * Firmware doesn't return any event when scheduled scan has
......
...@@ -341,7 +341,7 @@ static int wil_cfg80211_connect(struct wiphy *wiphy, ...@@ -341,7 +341,7 @@ static int wil_cfg80211_connect(struct wiphy *wiphy,
} }
out: out:
cfg80211_put_bss(bss); cfg80211_put_bss(wiphy, bss);
return rc; return rc;
} }
......
...@@ -338,7 +338,7 @@ static void wmi_evt_rx_mgmt(struct wil6210_priv *wil, int id, void *d, int len) ...@@ -338,7 +338,7 @@ static void wmi_evt_rx_mgmt(struct wil6210_priv *wil, int id, void *d, int len)
if (bss) { if (bss) {
wil_dbg_wmi(wil, "Added BSS %pM\n", wil_dbg_wmi(wil, "Added BSS %pM\n",
rx_mgmt_frame->bssid); rx_mgmt_frame->bssid);
cfg80211_put_bss(bss); cfg80211_put_bss(wiphy, bss);
} else { } else {
wil_err(wil, "cfg80211_inform_bss() failed\n"); wil_err(wil, "cfg80211_inform_bss() failed\n");
} }
......
...@@ -2323,7 +2323,7 @@ static s32 brcmf_inform_single_bss(struct brcmf_cfg80211_info *cfg, ...@@ -2323,7 +2323,7 @@ static s32 brcmf_inform_single_bss(struct brcmf_cfg80211_info *cfg,
if (!bss) if (!bss)
return -ENOMEM; return -ENOMEM;
cfg80211_put_bss(bss); cfg80211_put_bss(wiphy, bss);
return err; return err;
} }
...@@ -2429,7 +2429,7 @@ static s32 wl_inform_ibss(struct brcmf_cfg80211_info *cfg, ...@@ -2429,7 +2429,7 @@ static s32 wl_inform_ibss(struct brcmf_cfg80211_info *cfg,
goto CleanUp; goto CleanUp;
} }
cfg80211_put_bss(bss); cfg80211_put_bss(wiphy, bss);
CleanUp: CleanUp:
......
...@@ -657,7 +657,7 @@ static int lbs_ret_scan(struct lbs_private *priv, unsigned long dummy, ...@@ -657,7 +657,7 @@ static int lbs_ret_scan(struct lbs_private *priv, unsigned long dummy,
capa, intvl, ie, ielen, capa, intvl, ie, ielen,
LBS_SCAN_RSSI_TO_MBM(rssi), LBS_SCAN_RSSI_TO_MBM(rssi),
GFP_KERNEL); GFP_KERNEL);
cfg80211_put_bss(bss); cfg80211_put_bss(wiphy, bss);
} }
} else } else
lbs_deb_scan("scan response: missing BSS channel IE\n"); 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,7 +1444,7 @@ static int lbs_cfg_connect(struct wiphy *wiphy, struct net_device *dev,
done: done:
if (bss) if (bss)
cfg80211_put_bss(bss); cfg80211_put_bss(wiphy, bss);
lbs_deb_leave_args(LBS_DEB_CFG80211, "ret %d", ret); lbs_deb_leave_args(LBS_DEB_CFG80211, "ret %d", ret);
return ret; return ret;
} }
...@@ -1766,7 +1766,7 @@ static void lbs_join_post(struct lbs_private *priv, ...@@ -1766,7 +1766,7 @@ static void lbs_join_post(struct lbs_private *priv,
params->beacon_interval, params->beacon_interval,
fake_ie, fake - fake_ie, fake_ie, fake - fake_ie,
0, GFP_KERNEL); 0, GFP_KERNEL);
cfg80211_put_bss(bss); cfg80211_put_bss(priv->wdev->wiphy, bss);
memcpy(priv->wdev->ssid, params->ssid, params->ssid_len); memcpy(priv->wdev->ssid, params->ssid, params->ssid_len);
priv->wdev->ssid_len = params->ssid_len; priv->wdev->ssid_len = params->ssid_len;
...@@ -2011,7 +2011,7 @@ static int lbs_join_ibss(struct wiphy *wiphy, struct net_device *dev, ...@@ -2011,7 +2011,7 @@ static int lbs_join_ibss(struct wiphy *wiphy, struct net_device *dev,
if (bss) { if (bss) {
ret = lbs_ibss_join_existing(priv, params, bss); ret = lbs_ibss_join_existing(priv, params, bss);
cfg80211_put_bss(bss); cfg80211_put_bss(wiphy, bss);
} else } else
ret = lbs_ibss_start_new(priv, params); ret = lbs_ibss_start_new(priv, params);
......
...@@ -1430,7 +1430,7 @@ static int mwifiex_cfg80211_inform_ibss_bss(struct mwifiex_private *priv) ...@@ -1430,7 +1430,7 @@ static int mwifiex_cfg80211_inform_ibss_bss(struct mwifiex_private *priv)
bss = cfg80211_inform_bss(priv->wdev->wiphy, chan, bss = cfg80211_inform_bss(priv->wdev->wiphy, chan,
bss_info.bssid, 0, WLAN_CAPABILITY_IBSS, bss_info.bssid, 0, WLAN_CAPABILITY_IBSS,
0, ie_buf, ie_len, 0, GFP_KERNEL); 0, ie_buf, ie_len, 0, GFP_KERNEL);
cfg80211_put_bss(bss); cfg80211_put_bss(priv->wdev->wiphy, bss);
memcpy(priv->cfg_bssid, bss_info.bssid, ETH_ALEN); memcpy(priv->cfg_bssid, bss_info.bssid, ETH_ALEN);
return 0; return 0;
......
...@@ -1746,7 +1746,7 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv, ...@@ -1746,7 +1746,7 @@ int mwifiex_ret_802_11_scan(struct mwifiex_private *priv,
.mac_address, ETH_ALEN)) .mac_address, ETH_ALEN))
mwifiex_update_curr_bss_params(priv, mwifiex_update_curr_bss_params(priv,
bss); bss);
cfg80211_put_bss(bss); cfg80211_put_bss(priv->wdev->wiphy, bss);
} }
} else { } else {
dev_dbg(adapter->dev, "missing BSS channel IE\n"); dev_dbg(adapter->dev, "missing BSS channel IE\n");
......
...@@ -324,7 +324,7 @@ int mwifiex_bss_start(struct mwifiex_private *priv, struct cfg80211_bss *bss, ...@@ -324,7 +324,7 @@ int mwifiex_bss_start(struct mwifiex_private *priv, struct cfg80211_bss *bss,
} }
if (bss) if (bss)
cfg80211_put_bss(bss); cfg80211_put_bss(priv->adapter->wiphy, bss);
} else { } else {
/* Adhoc mode */ /* Adhoc mode */
/* If the requested SSID matches current SSID, return */ /* If the requested SSID matches current SSID, return */
...@@ -354,7 +354,7 @@ int mwifiex_bss_start(struct mwifiex_private *priv, struct cfg80211_bss *bss, ...@@ -354,7 +354,7 @@ int mwifiex_bss_start(struct mwifiex_private *priv, struct cfg80211_bss *bss,
" list. Joining...\n"); " list. Joining...\n");
ret = mwifiex_adhoc_join(priv, bss_desc); ret = mwifiex_adhoc_join(priv, bss_desc);
if (bss) if (bss)
cfg80211_put_bss(bss); cfg80211_put_bss(priv->adapter->wiphy, bss);
} else { } else {
dev_dbg(adapter->dev, "info: Network not found in " dev_dbg(adapter->dev, "info: Network not found in "
"the list, creating adhoc with ssid = %s\n", "the list, creating adhoc with ssid = %s\n",
......
...@@ -125,7 +125,7 @@ static void orinoco_add_hostscan_result(struct orinoco_private *priv, ...@@ -125,7 +125,7 @@ static void orinoco_add_hostscan_result(struct orinoco_private *priv,
cbss = cfg80211_inform_bss(wiphy, channel, bss->a.bssid, timestamp, cbss = cfg80211_inform_bss(wiphy, channel, bss->a.bssid, timestamp,
capability, beacon_interval, ie_buf, ie_len, capability, beacon_interval, ie_buf, ie_len,
signal, GFP_KERNEL); signal, GFP_KERNEL);
cfg80211_put_bss(cbss); cfg80211_put_bss(wiphy, cbss);
} }
void orinoco_add_extscan_result(struct orinoco_private *priv, void orinoco_add_extscan_result(struct orinoco_private *priv,
...@@ -158,7 +158,7 @@ void orinoco_add_extscan_result(struct orinoco_private *priv, ...@@ -158,7 +158,7 @@ void orinoco_add_extscan_result(struct orinoco_private *priv,
cbss = cfg80211_inform_bss(wiphy, channel, bss->bssid, timestamp, cbss = cfg80211_inform_bss(wiphy, channel, bss->bssid, timestamp,
capability, beacon_interval, ie, ie_len, capability, beacon_interval, ie, ie_len,
signal, GFP_KERNEL); signal, GFP_KERNEL);
cfg80211_put_bss(cbss); cfg80211_put_bss(wiphy, cbss);
} }
void orinoco_add_hostscan_results(struct orinoco_private *priv, void orinoco_add_hostscan_results(struct orinoco_private *priv,
......
...@@ -2029,7 +2029,7 @@ static bool rndis_bss_info_update(struct usbnet *usbdev, ...@@ -2029,7 +2029,7 @@ static bool rndis_bss_info_update(struct usbnet *usbdev,
bss = cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid->mac, bss = cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid->mac,
timestamp, capability, beacon_interval, ie, ie_len, signal, timestamp, capability, beacon_interval, ie, ie_len, signal,
GFP_KERNEL); GFP_KERNEL);
cfg80211_put_bss(bss); cfg80211_put_bss(priv->wdev.wiphy, bss);
return (bss != NULL); return (bss != NULL);
} }
...@@ -2718,7 +2718,7 @@ static void rndis_wlan_craft_connected_bss(struct usbnet *usbdev, u8 *bssid, ...@@ -2718,7 +2718,7 @@ static void rndis_wlan_craft_connected_bss(struct usbnet *usbdev, u8 *bssid,
bss = cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid, bss = cfg80211_inform_bss(priv->wdev.wiphy, channel, bssid,
timestamp, capability, beacon_period, ie_buf, ie_len, timestamp, capability, beacon_period, ie_buf, ie_len,
signal, GFP_KERNEL); signal, GFP_KERNEL);
cfg80211_put_bss(bss); cfg80211_put_bss(priv->wdev.wiphy, bss);
} }
/* /*
......
...@@ -424,7 +424,7 @@ int prism2_scan(struct wiphy *wiphy, struct cfg80211_scan_request *request) ...@@ -424,7 +424,7 @@ int prism2_scan(struct wiphy *wiphy, struct cfg80211_scan_request *request)
goto exit; goto exit;
} }
cfg80211_put_bss(bss); cfg80211_put_bss(wiphy, bss);
} }
if (result) if (result)
......
...@@ -3166,19 +3166,21 @@ cfg80211_get_ibss(struct wiphy *wiphy, ...@@ -3166,19 +3166,21 @@ cfg80211_get_ibss(struct wiphy *wiphy,
/** /**
* cfg80211_ref_bss - reference BSS struct * cfg80211_ref_bss - reference BSS struct
* @wiphy: the wiphy this BSS struct belongs to
* @bss: the BSS struct to reference * @bss: the BSS struct to reference
* *
* Increments the refcount of the given BSS struct. * Increments the refcount of the given BSS struct.
*/ */
void cfg80211_ref_bss(struct cfg80211_bss *bss); void cfg80211_ref_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
/** /**
* cfg80211_put_bss - unref BSS struct * cfg80211_put_bss - unref BSS struct
* @wiphy: the wiphy this BSS struct belongs to
* @bss: the BSS struct * @bss: the BSS struct
* *
* Decrements the refcount of the given BSS struct. * Decrements the refcount of the given BSS struct.
*/ */
void cfg80211_put_bss(struct cfg80211_bss *bss); void cfg80211_put_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
/** /**
* cfg80211_unlink_bss - unlink BSS from internal data structures * cfg80211_unlink_bss - unlink BSS from internal data structures
......
...@@ -228,7 +228,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata, ...@@ -228,7 +228,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
bss = cfg80211_inform_bss_frame(local->hw.wiphy, chan, bss = cfg80211_inform_bss_frame(local->hw.wiphy, chan,
mgmt, skb->len, 0, GFP_KERNEL); mgmt, skb->len, 0, GFP_KERNEL);
cfg80211_put_bss(bss); cfg80211_put_bss(local->hw.wiphy, bss);
netif_carrier_on(sdata->dev); netif_carrier_on(sdata->dev);
cfg80211_ibss_joined(sdata->dev, ifibss->bssid, GFP_KERNEL); cfg80211_ibss_joined(sdata->dev, ifibss->bssid, GFP_KERNEL);
} }
...@@ -1159,7 +1159,7 @@ int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata) ...@@ -1159,7 +1159,7 @@ int ieee80211_ibss_leave(struct ieee80211_sub_if_data *sdata)
if (cbss) { if (cbss) {
cfg80211_unlink_bss(local->hw.wiphy, cbss); cfg80211_unlink_bss(local->hw.wiphy, cbss);
cfg80211_put_bss(cbss); cfg80211_put_bss(local->hw.wiphy, cbss);
} }
} }
......
...@@ -1934,7 +1934,7 @@ static void ieee80211_destroy_auth_data(struct ieee80211_sub_if_data *sdata, ...@@ -1934,7 +1934,7 @@ static void ieee80211_destroy_auth_data(struct ieee80211_sub_if_data *sdata,
ieee80211_vif_release_channel(sdata); ieee80211_vif_release_channel(sdata);
} }
cfg80211_put_bss(auth_data->bss); cfg80211_put_bss(sdata->local->hw.wiphy, auth_data->bss);
kfree(auth_data); kfree(auth_data);
sdata->u.mgd.auth_data = NULL; sdata->u.mgd.auth_data = NULL;
} }
...@@ -2387,7 +2387,7 @@ ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata, ...@@ -2387,7 +2387,7 @@ ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,
if (!ieee80211_assoc_success(sdata, *bss, mgmt, len)) { if (!ieee80211_assoc_success(sdata, *bss, mgmt, len)) {
/* oops -- internal error -- send timeout for now */ /* oops -- internal error -- send timeout for now */
ieee80211_destroy_assoc_data(sdata, false); ieee80211_destroy_assoc_data(sdata, false);
cfg80211_put_bss(*bss); cfg80211_put_bss(sdata->local->hw.wiphy, *bss);
return RX_MGMT_CFG80211_ASSOC_TIMEOUT; return RX_MGMT_CFG80211_ASSOC_TIMEOUT;
} }
sdata_info(sdata, "associated\n"); sdata_info(sdata, "associated\n");
...@@ -3831,7 +3831,7 @@ int ieee80211_mgd_auth(struct ieee80211_sub_if_data *sdata, ...@@ -3831,7 +3831,7 @@ int ieee80211_mgd_auth(struct ieee80211_sub_if_data *sdata,
} }
/* hold our own reference */ /* hold our own reference */
cfg80211_ref_bss(auth_data->bss); cfg80211_ref_bss(local->hw.wiphy, auth_data->bss);
err = 0; err = 0;
goto out_unlock; goto out_unlock;
......
...@@ -34,7 +34,8 @@ void ieee80211_rx_bss_put(struct ieee80211_local *local, ...@@ -34,7 +34,8 @@ void ieee80211_rx_bss_put(struct ieee80211_local *local,
{ {
if (!bss) if (!bss)
return; return;
cfg80211_put_bss(container_of((void *)bss, struct cfg80211_bss, priv)); cfg80211_put_bss(local->hw.wiphy,
container_of((void *)bss, struct cfg80211_bss, priv));
} }
static bool is_uapsd_supported(struct ieee802_11_elems *elems) static bool is_uapsd_supported(struct ieee802_11_elems *elems)
......
...@@ -715,7 +715,7 @@ void cfg80211_dev_free(struct cfg80211_registered_device *rdev) ...@@ -715,7 +715,7 @@ void cfg80211_dev_free(struct cfg80211_registered_device *rdev)
kfree(reg); kfree(reg);
} }
list_for_each_entry_safe(scan, tmp, &rdev->bss_list, list) list_for_each_entry_safe(scan, tmp, &rdev->bss_list, list)
cfg80211_put_bss(&scan->pub); cfg80211_put_bss(&rdev->wiphy, &scan->pub);
kfree(rdev); kfree(rdev);
} }
......
...@@ -37,7 +37,7 @@ void __cfg80211_ibss_joined(struct net_device *dev, const u8 *bssid) ...@@ -37,7 +37,7 @@ void __cfg80211_ibss_joined(struct net_device *dev, const u8 *bssid)
if (wdev->current_bss) { if (wdev->current_bss) {
cfg80211_unhold_bss(wdev->current_bss); cfg80211_unhold_bss(wdev->current_bss);
cfg80211_put_bss(&wdev->current_bss->pub); cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub);
} }
cfg80211_hold_bss(bss_from_pub(bss)); cfg80211_hold_bss(bss_from_pub(bss));
...@@ -182,7 +182,7 @@ static void __cfg80211_clear_ibss(struct net_device *dev, bool nowext) ...@@ -182,7 +182,7 @@ static void __cfg80211_clear_ibss(struct net_device *dev, bool nowext)
if (wdev->current_bss) { if (wdev->current_bss) {
cfg80211_unhold_bss(wdev->current_bss); cfg80211_unhold_bss(wdev->current_bss);
cfg80211_put_bss(&wdev->current_bss->pub); cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub);
} }
wdev->current_bss = NULL; wdev->current_bss = NULL;
......
...@@ -58,7 +58,7 @@ void cfg80211_send_rx_assoc(struct net_device *dev, struct cfg80211_bss *bss, ...@@ -58,7 +58,7 @@ void cfg80211_send_rx_assoc(struct net_device *dev, struct cfg80211_bss *bss,
*/ */
if (status_code != WLAN_STATUS_SUCCESS && wdev->conn && if (status_code != WLAN_STATUS_SUCCESS && wdev->conn &&
cfg80211_sme_failed_reassoc(wdev)) { cfg80211_sme_failed_reassoc(wdev)) {
cfg80211_put_bss(bss); cfg80211_put_bss(wiphy, bss);
goto out; goto out;
} }
...@@ -70,7 +70,7 @@ void cfg80211_send_rx_assoc(struct net_device *dev, struct cfg80211_bss *bss, ...@@ -70,7 +70,7 @@ void cfg80211_send_rx_assoc(struct net_device *dev, struct cfg80211_bss *bss,
* do not call connect_result() now because the * do not call connect_result() now because the
* sme will schedule work that does it later. * sme will schedule work that does it later.
*/ */
cfg80211_put_bss(bss); cfg80211_put_bss(wiphy, bss);
goto out; goto out;
} }
...@@ -108,7 +108,7 @@ void __cfg80211_send_deauth(struct net_device *dev, ...@@ -108,7 +108,7 @@ void __cfg80211_send_deauth(struct net_device *dev,
if (wdev->current_bss && if (wdev->current_bss &&
ether_addr_equal(wdev->current_bss->pub.bssid, bssid)) { ether_addr_equal(wdev->current_bss->pub.bssid, bssid)) {
cfg80211_unhold_bss(wdev->current_bss); cfg80211_unhold_bss(wdev->current_bss);
cfg80211_put_bss(&wdev->current_bss->pub); cfg80211_put_bss(wiphy, &wdev->current_bss->pub);
wdev->current_bss = NULL; wdev->current_bss = NULL;
was_current = true; was_current = true;
} }
...@@ -164,7 +164,7 @@ void __cfg80211_send_disassoc(struct net_device *dev, ...@@ -164,7 +164,7 @@ void __cfg80211_send_disassoc(struct net_device *dev,
ether_addr_equal(wdev->current_bss->pub.bssid, bssid)) { ether_addr_equal(wdev->current_bss->pub.bssid, bssid)) {
cfg80211_sme_disassoc(dev, wdev->current_bss); cfg80211_sme_disassoc(dev, wdev->current_bss);
cfg80211_unhold_bss(wdev->current_bss); cfg80211_unhold_bss(wdev->current_bss);
cfg80211_put_bss(&wdev->current_bss->pub); cfg80211_put_bss(wiphy, &wdev->current_bss->pub);
wdev->current_bss = NULL; wdev->current_bss = NULL;
} else } else
WARN_ON(1); WARN_ON(1);
...@@ -324,7 +324,7 @@ int __cfg80211_mlme_auth(struct cfg80211_registered_device *rdev, ...@@ -324,7 +324,7 @@ int __cfg80211_mlme_auth(struct cfg80211_registered_device *rdev,
err = rdev_auth(rdev, dev, &req); err = rdev_auth(rdev, dev, &req);
out: out:
cfg80211_put_bss(req.bss); cfg80211_put_bss(&rdev->wiphy, req.bss);
return err; return err;
} }
...@@ -432,7 +432,7 @@ int __cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev, ...@@ -432,7 +432,7 @@ int __cfg80211_mlme_assoc(struct cfg80211_registered_device *rdev,
if (err) { if (err) {
if (was_connected) if (was_connected)
wdev->sme_state = CFG80211_SME_CONNECTED; wdev->sme_state = CFG80211_SME_CONNECTED;
cfg80211_put_bss(req.bss); cfg80211_put_bss(&rdev->wiphy, req.bss);
} }
return err; return err;
...@@ -572,7 +572,7 @@ void cfg80211_mlme_down(struct cfg80211_registered_device *rdev, ...@@ -572,7 +572,7 @@ void cfg80211_mlme_down(struct cfg80211_registered_device *rdev,
if (wdev->current_bss) { if (wdev->current_bss) {
cfg80211_unhold_bss(wdev->current_bss); cfg80211_unhold_bss(wdev->current_bss);
cfg80211_put_bss(&wdev->current_bss->pub); cfg80211_put_bss(&rdev->wiphy, &wdev->current_bss->pub);
wdev->current_bss = NULL; wdev->current_bss = NULL;
} }
} }
......
...@@ -818,7 +818,7 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy, ...@@ -818,7 +818,7 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
} }
EXPORT_SYMBOL(cfg80211_inform_bss_frame); EXPORT_SYMBOL(cfg80211_inform_bss_frame);
void cfg80211_ref_bss(struct cfg80211_bss *pub) void cfg80211_ref_bss(struct wiphy *wiphy, struct cfg80211_bss *pub)
{ {
struct cfg80211_internal_bss *bss; struct cfg80211_internal_bss *bss;
...@@ -830,7 +830,7 @@ void cfg80211_ref_bss(struct cfg80211_bss *pub) ...@@ -830,7 +830,7 @@ void cfg80211_ref_bss(struct cfg80211_bss *pub)
} }
EXPORT_SYMBOL(cfg80211_ref_bss); EXPORT_SYMBOL(cfg80211_ref_bss);
void cfg80211_put_bss(struct cfg80211_bss *pub) void cfg80211_put_bss(struct wiphy *wiphy, struct cfg80211_bss *pub)
{ {
struct cfg80211_internal_bss *bss; struct cfg80211_internal_bss *bss;
......
...@@ -301,7 +301,7 @@ static void __cfg80211_sme_scan_done(struct net_device *dev) ...@@ -301,7 +301,7 @@ static void __cfg80211_sme_scan_done(struct net_device *dev)
bss = cfg80211_get_conn_bss(wdev); bss = cfg80211_get_conn_bss(wdev);
if (bss) { if (bss) {
cfg80211_put_bss(bss); cfg80211_put_bss(&rdev->wiphy, bss);
} else { } else {
/* not found */ /* not found */
if (wdev->conn->state == CFG80211_CONN_SCAN_AGAIN) if (wdev->conn->state == CFG80211_CONN_SCAN_AGAIN)
...@@ -464,7 +464,7 @@ void __cfg80211_connect_result(struct net_device *dev, const u8 *bssid, ...@@ -464,7 +464,7 @@ void __cfg80211_connect_result(struct net_device *dev, const u8 *bssid,
if (wdev->current_bss) { if (wdev->current_bss) {
cfg80211_unhold_bss(wdev->current_bss); cfg80211_unhold_bss(wdev->current_bss);
cfg80211_put_bss(&wdev->current_bss->pub); cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub);
wdev->current_bss = NULL; wdev->current_bss = NULL;
} }
...@@ -480,7 +480,7 @@ void __cfg80211_connect_result(struct net_device *dev, const u8 *bssid, ...@@ -480,7 +480,7 @@ void __cfg80211_connect_result(struct net_device *dev, const u8 *bssid,
kfree(wdev->connect_keys); kfree(wdev->connect_keys);
wdev->connect_keys = NULL; wdev->connect_keys = NULL;
wdev->ssid_len = 0; wdev->ssid_len = 0;
cfg80211_put_bss(bss); cfg80211_put_bss(wdev->wiphy, bss);
return; return;
} }
...@@ -586,7 +586,7 @@ void __cfg80211_roamed(struct wireless_dev *wdev, ...@@ -586,7 +586,7 @@ void __cfg80211_roamed(struct wireless_dev *wdev,
} }
cfg80211_unhold_bss(wdev->current_bss); cfg80211_unhold_bss(wdev->current_bss);
cfg80211_put_bss(&wdev->current_bss->pub); cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub);
wdev->current_bss = NULL; wdev->current_bss = NULL;
cfg80211_hold_bss(bss_from_pub(bss)); cfg80211_hold_bss(bss_from_pub(bss));
...@@ -621,7 +621,7 @@ void __cfg80211_roamed(struct wireless_dev *wdev, ...@@ -621,7 +621,7 @@ void __cfg80211_roamed(struct wireless_dev *wdev,
return; return;
out: out:
cfg80211_put_bss(bss); cfg80211_put_bss(wdev->wiphy, bss);
} }
void cfg80211_roamed(struct net_device *dev, void cfg80211_roamed(struct net_device *dev,
...@@ -663,7 +663,7 @@ void cfg80211_roamed_bss(struct net_device *dev, ...@@ -663,7 +663,7 @@ void cfg80211_roamed_bss(struct net_device *dev,
ev = kzalloc(sizeof(*ev) + req_ie_len + resp_ie_len, gfp); ev = kzalloc(sizeof(*ev) + req_ie_len + resp_ie_len, gfp);
if (!ev) { if (!ev) {
cfg80211_put_bss(bss); cfg80211_put_bss(wdev->wiphy, bss);
return; return;
} }
...@@ -704,7 +704,7 @@ void __cfg80211_disconnected(struct net_device *dev, const u8 *ie, ...@@ -704,7 +704,7 @@ void __cfg80211_disconnected(struct net_device *dev, const u8 *ie,
if (wdev->current_bss) { if (wdev->current_bss) {
cfg80211_unhold_bss(wdev->current_bss); cfg80211_unhold_bss(wdev->current_bss);
cfg80211_put_bss(&wdev->current_bss->pub); cfg80211_put_bss(wdev->wiphy, &wdev->current_bss->pub);
} }
wdev->current_bss = NULL; wdev->current_bss = NULL;
...@@ -875,7 +875,7 @@ int __cfg80211_connect(struct cfg80211_registered_device *rdev, ...@@ -875,7 +875,7 @@ int __cfg80211_connect(struct cfg80211_registered_device *rdev,
if (bss) { if (bss) {
wdev->conn->state = CFG80211_CONN_AUTHENTICATE_NEXT; wdev->conn->state = CFG80211_CONN_AUTHENTICATE_NEXT;
err = cfg80211_conn_do_work(wdev); err = cfg80211_conn_do_work(wdev);
cfg80211_put_bss(bss); cfg80211_put_bss(wdev->wiphy, bss);
} else { } else {
/* otherwise we'll need to scan for the AP first */ /* otherwise we'll need to scan for the AP first */
err = cfg80211_conn_scan(wdev); err = cfg80211_conn_scan(wdev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment