aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-02-10 15:25:58 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-02-13 13:45:54 -0500
commitd491af19db3adcc1eb1653e60a427fb4df36f361 (patch)
tree7116bcc9f6de56d181d16463252c4aabab77b20e /net
parent78c1c7e109f1f14e7c18f290c4ebc58da220c7ba (diff)
cfg80211: allow users to request removing a BSS
This patch introduces cfg80211_unlink_bss, a function to allow a driver to remove a BSS from the internal list and make it not show up in scan results any more -- this is to be used when the driver detects that the BSS is no longer available. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net')
-rw-r--r--net/wireless/scan.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/net/wireless/scan.c b/net/wireless/scan.c
index ec148f68a62b..aacccc9ab6ca 100644
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
@@ -432,6 +432,27 @@ void cfg80211_put_bss(struct cfg80211_bss *pub)
432} 432}
433EXPORT_SYMBOL(cfg80211_put_bss); 433EXPORT_SYMBOL(cfg80211_put_bss);
434 434
435void cfg80211_unlink_bss(struct wiphy *wiphy, struct cfg80211_bss *pub)
436{
437 struct cfg80211_registered_device *dev = wiphy_to_dev(wiphy);
438 struct cfg80211_internal_bss *bss;
439
440 if (WARN_ON(!pub))
441 return;
442
443 bss = container_of(pub, struct cfg80211_internal_bss, pub);
444
445 spin_lock_bh(&dev->bss_lock);
446
447 list_del(&bss->list);
448 rb_erase(&bss->rbn, &dev->bss_tree);
449
450 spin_unlock_bh(&dev->bss_lock);
451
452 kref_put(&bss->ref, bss_release);
453}
454EXPORT_SYMBOL(cfg80211_unlink_bss);
455
435#ifdef CONFIG_WIRELESS_EXT 456#ifdef CONFIG_WIRELESS_EXT
436int cfg80211_wext_siwscan(struct net_device *dev, 457int cfg80211_wext_siwscan(struct net_device *dev,
437 struct iw_request_info *info, 458 struct iw_request_info *info,