diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2007-12-28 08:32:58 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:09:43 -0500 |
commit | 471b3efdfccc257591331724145f8ccf8b3217e1 (patch) | |
tree | c9e576442c7b62c8c667ae1046e560323f0821fd /net/mac80211/ieee80211_i.h | |
parent | 2bc454b0b30b3645d114689b64321cb49be99923 (diff) |
mac80211: add unified BSS configuration
This patch (based on Ron Rindjunsky's) creates a framework for
a unified way to pass BSS configuration to drivers that require
the information, e.g. for implementing power save mode.
This patch introduces new ieee80211_bss_conf structure that is
passed to the driver via the new bss_info_changed() callback
when the BSS configuration changes.
This new BSS configuration infrastructure adds the following
new features:
* drivers are notified of their association AID
* drivers are notified of association status
and replaces the erp_ie_changed() callback. The patch also does
the relevant driver updates for the latter change.
Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/ieee80211_i.h')
-rw-r--r-- | net/mac80211/ieee80211_i.h | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 08a6c0cff690..72ecbf7bf962 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -291,12 +291,7 @@ struct ieee80211_if_sta { | |||
291 | /* flags used in struct ieee80211_sub_if_data.flags */ | 291 | /* flags used in struct ieee80211_sub_if_data.flags */ |
292 | #define IEEE80211_SDATA_ALLMULTI BIT(0) | 292 | #define IEEE80211_SDATA_ALLMULTI BIT(0) |
293 | #define IEEE80211_SDATA_PROMISC BIT(1) | 293 | #define IEEE80211_SDATA_PROMISC BIT(1) |
294 | #define IEEE80211_SDATA_USE_PROTECTION BIT(2) /* CTS protect ERP frames */ | 294 | #define IEEE80211_SDATA_USERSPACE_MLME BIT(2) |
295 | /* use short preamble with IEEE 802.11b: this flag is set when the AP or beacon | ||
296 | * generator reports that there are no present stations that cannot support short | ||
297 | * preambles */ | ||
298 | #define IEEE80211_SDATA_SHORT_PREAMBLE BIT(3) | ||
299 | #define IEEE80211_SDATA_USERSPACE_MLME BIT(4) | ||
300 | struct ieee80211_sub_if_data { | 295 | struct ieee80211_sub_if_data { |
301 | struct list_head list; | 296 | struct list_head list; |
302 | 297 | ||
@@ -327,6 +322,15 @@ struct ieee80211_sub_if_data { | |||
327 | struct ieee80211_key *keys[NUM_DEFAULT_KEYS]; | 322 | struct ieee80211_key *keys[NUM_DEFAULT_KEYS]; |
328 | struct ieee80211_key *default_key; | 323 | struct ieee80211_key *default_key; |
329 | 324 | ||
325 | /* | ||
326 | * BSS configuration for this interface. | ||
327 | * | ||
328 | * FIXME: I feel bad putting this here when we already have a | ||
329 | * bss pointer, but the bss pointer is just wrong when | ||
330 | * you have multiple virtual STA mode interfaces... | ||
331 | * This needs to be fixed. | ||
332 | */ | ||
333 | struct ieee80211_bss_conf bss_conf; | ||
330 | struct ieee80211_if_ap *bss; /* BSS that this device belongs to */ | 334 | struct ieee80211_if_ap *bss; /* BSS that this device belongs to */ |
331 | 335 | ||
332 | union { | 336 | union { |
@@ -770,7 +774,8 @@ struct sta_info * ieee80211_ibss_add_sta(struct net_device *dev, | |||
770 | u8 *addr); | 774 | u8 *addr); |
771 | int ieee80211_sta_deauthenticate(struct net_device *dev, u16 reason); | 775 | int ieee80211_sta_deauthenticate(struct net_device *dev, u16 reason); |
772 | int ieee80211_sta_disassociate(struct net_device *dev, u16 reason); | 776 | int ieee80211_sta_disassociate(struct net_device *dev, u16 reason); |
773 | void ieee80211_erp_info_change_notify(struct net_device *dev, u8 changes); | 777 | void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata, |
778 | u32 changed); | ||
774 | void ieee80211_reset_erp_info(struct net_device *dev); | 779 | void ieee80211_reset_erp_info(struct net_device *dev); |
775 | int ieee80211_ht_cap_ie_to_ht_info(struct ieee80211_ht_cap *ht_cap_ie, | 780 | int ieee80211_ht_cap_ie_to_ht_info(struct ieee80211_ht_cap *ht_cap_ie, |
776 | struct ieee80211_ht_info *ht_info); | 781 | struct ieee80211_ht_info *ht_info); |