| OLD | NEW |
| 1 /* | 1 /* |
| 2 * cfg80211 scan result handling | 2 * cfg80211 scan result handling |
| 3 * | 3 * |
| 4 * Copyright 2008 Johannes Berg <johannes@sipsolutions.net> | 4 * Copyright 2008 Johannes Berg <johannes@sipsolutions.net> |
| 5 */ | 5 */ |
| 6 #include <linux/kernel.h> | 6 #include <linux/kernel.h> |
| 7 #include <linux/slab.h> | 7 #include <linux/slab.h> |
| 8 #include <linux/module.h> | 8 #include <linux/module.h> |
| 9 #include <linux/netdevice.h> | 9 #include <linux/netdevice.h> |
| 10 #include <linux/wireless.h> | 10 #include <linux/wireless.h> |
| (...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 653 { | 653 { |
| 654 struct cfg80211_registered_device *dev = wiphy_to_dev(wiphy); | 654 struct cfg80211_registered_device *dev = wiphy_to_dev(wiphy); |
| 655 struct cfg80211_internal_bss *bss; | 655 struct cfg80211_internal_bss *bss; |
| 656 | 656 |
| 657 if (WARN_ON(!pub)) | 657 if (WARN_ON(!pub)) |
| 658 return; | 658 return; |
| 659 | 659 |
| 660 bss = container_of(pub, struct cfg80211_internal_bss, pub); | 660 bss = container_of(pub, struct cfg80211_internal_bss, pub); |
| 661 | 661 |
| 662 spin_lock_bh(&dev->bss_lock); | 662 spin_lock_bh(&dev->bss_lock); |
| 663 if (!list_empty(&bss->list)) { |
| 664 list_del_init(&bss->list); |
| 665 dev->bss_generation++; |
| 666 rb_erase(&bss->rbn, &dev->bss_tree); |
| 663 | 667 |
| 664 » list_del(&bss->list); | 668 » » kref_put(&bss->ref, bss_release); |
| 665 » dev->bss_generation++; | 669 » } |
| 666 » rb_erase(&bss->rbn, &dev->bss_tree); | |
| 667 | |
| 668 spin_unlock_bh(&dev->bss_lock); | 670 spin_unlock_bh(&dev->bss_lock); |
| 669 | |
| 670 kref_put(&bss->ref, bss_release); | |
| 671 } | 671 } |
| 672 EXPORT_SYMBOL(cfg80211_unlink_bss); | 672 EXPORT_SYMBOL(cfg80211_unlink_bss); |
| 673 | 673 |
| 674 #ifdef CONFIG_CFG80211_WEXT | 674 #ifdef CONFIG_CFG80211_WEXT |
| 675 int cfg80211_wext_siwscan(struct net_device *dev, | 675 int cfg80211_wext_siwscan(struct net_device *dev, |
| 676 struct iw_request_info *info, | 676 struct iw_request_info *info, |
| 677 union iwreq_data *wrqu, char *extra) | 677 union iwreq_data *wrqu, char *extra) |
| 678 { | 678 { |
| 679 struct cfg80211_registered_device *rdev; | 679 struct cfg80211_registered_device *rdev; |
| 680 struct wiphy *wiphy; | 680 struct wiphy *wiphy; |
| (...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1108 data->length = res; | 1108 data->length = res; |
| 1109 res = 0; | 1109 res = 0; |
| 1110 } | 1110 } |
| 1111 | 1111 |
| 1112 out: | 1112 out: |
| 1113 cfg80211_unlock_rdev(rdev); | 1113 cfg80211_unlock_rdev(rdev); |
| 1114 return res; | 1114 return res; |
| 1115 } | 1115 } |
| 1116 EXPORT_SYMBOL_GPL(cfg80211_wext_giwscan); | 1116 EXPORT_SYMBOL_GPL(cfg80211_wext_giwscan); |
| 1117 #endif | 1117 #endif |
| OLD | NEW |