diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-02-10 15:25:55 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-02-13 13:45:49 -0500 |
commit | 2a5193119269062608582418deba7af82844159a (patch) | |
tree | 1f2fe8cffbeb7530dce7fa708310f6fb29ab0dd8 /net/wireless/core.h | |
parent | 849b7967818995a32c3017542e33eb3155944368 (diff) |
cfg80211/nl80211: scanning (and mac80211 update to use it)
This patch adds basic scan capability to cfg80211/nl80211 and
changes mac80211 to use it. The BSS list that cfg80211 maintains
is made driver-accessible with a private area in each BSS struct,
but mac80211 doesn't yet use it. That's another large project.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless/core.h')
-rw-r--r-- | net/wireless/core.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/net/wireless/core.h b/net/wireless/core.h index f7fb9f413028..e29ad4cd464f 100644 --- a/net/wireless/core.h +++ b/net/wireless/core.h | |||
@@ -8,6 +8,8 @@ | |||
8 | #include <linux/mutex.h> | 8 | #include <linux/mutex.h> |
9 | #include <linux/list.h> | 9 | #include <linux/list.h> |
10 | #include <linux/netdevice.h> | 10 | #include <linux/netdevice.h> |
11 | #include <linux/kref.h> | ||
12 | #include <linux/rbtree.h> | ||
11 | #include <net/genetlink.h> | 13 | #include <net/genetlink.h> |
12 | #include <net/wireless.h> | 14 | #include <net/wireless.h> |
13 | #include <net/cfg80211.h> | 15 | #include <net/cfg80211.h> |
@@ -41,6 +43,13 @@ struct cfg80211_registered_device { | |||
41 | struct mutex devlist_mtx; | 43 | struct mutex devlist_mtx; |
42 | struct list_head netdev_list; | 44 | struct list_head netdev_list; |
43 | 45 | ||
46 | /* BSSes/scanning */ | ||
47 | spinlock_t bss_lock; | ||
48 | struct list_head bss_list; | ||
49 | struct rb_root bss_tree; | ||
50 | u32 bss_generation; | ||
51 | struct cfg80211_scan_request *scan_req; /* protected by RTNL */ | ||
52 | |||
44 | /* must be last because of the way we do wiphy_priv(), | 53 | /* must be last because of the way we do wiphy_priv(), |
45 | * and it should at least be aligned to NETDEV_ALIGN */ | 54 | * and it should at least be aligned to NETDEV_ALIGN */ |
46 | struct wiphy wiphy __attribute__((__aligned__(NETDEV_ALIGN))); | 55 | struct wiphy wiphy __attribute__((__aligned__(NETDEV_ALIGN))); |
@@ -56,6 +65,15 @@ struct cfg80211_registered_device *wiphy_to_dev(struct wiphy *wiphy) | |||
56 | extern struct mutex cfg80211_drv_mutex; | 65 | extern struct mutex cfg80211_drv_mutex; |
57 | extern struct list_head cfg80211_drv_list; | 66 | extern struct list_head cfg80211_drv_list; |
58 | 67 | ||
68 | struct cfg80211_internal_bss { | ||
69 | struct list_head list; | ||
70 | struct rb_node rbn; | ||
71 | unsigned long ts; | ||
72 | struct kref ref; | ||
73 | /* must be last because of priv member */ | ||
74 | struct cfg80211_bss pub; | ||
75 | }; | ||
76 | |||
59 | /* | 77 | /* |
60 | * This function returns a pointer to the driver | 78 | * This function returns a pointer to the driver |
61 | * that the genl_info item that is passed refers to. | 79 | * that the genl_info item that is passed refers to. |
@@ -94,4 +112,6 @@ extern int cfg80211_dev_rename(struct cfg80211_registered_device *drv, | |||
94 | void ieee80211_set_bitrate_flags(struct wiphy *wiphy); | 112 | void ieee80211_set_bitrate_flags(struct wiphy *wiphy); |
95 | void wiphy_update_regulatory(struct wiphy *wiphy, enum reg_set_by setby); | 113 | void wiphy_update_regulatory(struct wiphy *wiphy, enum reg_set_by setby); |
96 | 114 | ||
115 | void cfg80211_bss_expire(struct cfg80211_registered_device *dev); | ||
116 | |||
97 | #endif /* __NET_WIRELESS_CORE_H */ | 117 | #endif /* __NET_WIRELESS_CORE_H */ |