diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-07-02 11:20:43 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-07-10 15:01:53 -0400 |
commit | 19957bb399e2722719c0e20c9ae91cf8b6aaff04 (patch) | |
tree | 9c4d53fe5938ceee41333a1afd5be0ed5c1ce313 /net/wireless/ibss.c | |
parent | 517357c685ccc4b5783cc7dbdae8824ada19a97f (diff) |
cfg80211: keep track of BSSes
In order to avoid problems with BSS structs going away
while they're in use, I've long wanted to make cfg80211
keep track of them. Without the SME, that wasn't doable
but now that we have the SME we can do this too. It can
keep track of up to four separate authentications and
one association, regardless of whether it's controlled
by the cfg80211 SME or the userspace SME.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless/ibss.c')
-rw-r--r-- | net/wireless/ibss.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/net/wireless/ibss.c b/net/wireless/ibss.c index 34b11eae30c8..c92b542d54b0 100644 --- a/net/wireless/ibss.c +++ b/net/wireless/ibss.c | |||
@@ -33,11 +33,11 @@ void cfg80211_ibss_joined(struct net_device *dev, const u8 *bssid, gfp_t gfp) | |||
33 | 33 | ||
34 | if (wdev->current_bss) { | 34 | if (wdev->current_bss) { |
35 | cfg80211_unhold_bss(wdev->current_bss); | 35 | cfg80211_unhold_bss(wdev->current_bss); |
36 | cfg80211_put_bss(wdev->current_bss); | 36 | cfg80211_put_bss(&wdev->current_bss->pub); |
37 | } | 37 | } |
38 | 38 | ||
39 | cfg80211_hold_bss(bss); | 39 | cfg80211_hold_bss(bss_from_pub(bss)); |
40 | wdev->current_bss = bss; | 40 | wdev->current_bss = bss_from_pub(bss); |
41 | 41 | ||
42 | nl80211_send_ibss_bssid(wiphy_to_dev(wdev->wiphy), dev, bssid, gfp); | 42 | nl80211_send_ibss_bssid(wiphy_to_dev(wdev->wiphy), dev, bssid, gfp); |
43 | #ifdef CONFIG_WIRELESS_EXT | 43 | #ifdef CONFIG_WIRELESS_EXT |
@@ -78,7 +78,7 @@ void cfg80211_clear_ibss(struct net_device *dev, bool nowext) | |||
78 | 78 | ||
79 | if (wdev->current_bss) { | 79 | if (wdev->current_bss) { |
80 | cfg80211_unhold_bss(wdev->current_bss); | 80 | cfg80211_unhold_bss(wdev->current_bss); |
81 | cfg80211_put_bss(wdev->current_bss); | 81 | cfg80211_put_bss(&wdev->current_bss->pub); |
82 | } | 82 | } |
83 | 83 | ||
84 | wdev->current_bss = NULL; | 84 | wdev->current_bss = NULL; |
@@ -212,7 +212,7 @@ int cfg80211_ibss_wext_giwfreq(struct net_device *dev, | |||
212 | return -EINVAL; | 212 | return -EINVAL; |
213 | 213 | ||
214 | if (wdev->current_bss) | 214 | if (wdev->current_bss) |
215 | chan = wdev->current_bss->channel; | 215 | chan = wdev->current_bss->pub.channel; |
216 | else if (wdev->wext.ibss.channel) | 216 | else if (wdev->wext.ibss.channel) |
217 | chan = wdev->wext.ibss.channel; | 217 | chan = wdev->wext.ibss.channel; |
218 | 218 | ||
@@ -352,7 +352,7 @@ int cfg80211_ibss_wext_giwap(struct net_device *dev, | |||
352 | ap_addr->sa_family = ARPHRD_ETHER; | 352 | ap_addr->sa_family = ARPHRD_ETHER; |
353 | 353 | ||
354 | if (wdev->current_bss) | 354 | if (wdev->current_bss) |
355 | memcpy(ap_addr->sa_data, wdev->current_bss->bssid, ETH_ALEN); | 355 | memcpy(ap_addr->sa_data, wdev->current_bss->pub.bssid, ETH_ALEN); |
356 | else | 356 | else |
357 | memcpy(ap_addr->sa_data, wdev->wext.ibss.bssid, ETH_ALEN); | 357 | memcpy(ap_addr->sa_data, wdev->wext.ibss.bssid, ETH_ALEN); |
358 | return 0; | 358 | return 0; |