mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-27 00:51:35 +00:00
cfg80211: add bss_type and privacy arguments in cfg80211_get_bss()
802.11ad adds new a network type (PBSS) and changes the capability field interpretation for the DMG (60G) band. The same 2 bits that were interpreted as "ESS" and "IBSS" before are re-used as a 2-bit field with 3 valid values (and 1 reserved). Valid values are: "IBSS", "PBSS" (new) and "AP". In order to get the BSS struct for the new PBSS networks, change the cfg80211_get_bss() function to take a new enum ieee80211_bss_type argument with the valid network types, as "capa_mask" and "capa_val" no longer work correctly (the search must be band-aware now.) The remaining bits in "capa_mask" and "capa_val" are used only for privacy matching so replace those two with a privacy enum as well. Signed-off-by: Dedy Lansky <dlansky@codeaurora.org> [rewrite commit log, tiny fixes] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
76a70e9c4b
commit
6eb1813764
13 changed files with 167 additions and 79 deletions
|
@ -214,6 +214,39 @@ enum ieee80211_rate_flags {
|
|||
IEEE80211_RATE_SUPPORTS_10MHZ = 1<<6,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ieee80211_bss_type - BSS type filter
|
||||
*
|
||||
* @IEEE80211_BSS_TYPE_ESS: Infrastructure BSS
|
||||
* @IEEE80211_BSS_TYPE_PBSS: Personal BSS
|
||||
* @IEEE80211_BSS_TYPE_IBSS: Independent BSS
|
||||
* @IEEE80211_BSS_TYPE_MBSS: Mesh BSS
|
||||
* @IEEE80211_BSS_TYPE_ANY: Wildcard value for matching any BSS type
|
||||
*/
|
||||
enum ieee80211_bss_type {
|
||||
IEEE80211_BSS_TYPE_ESS,
|
||||
IEEE80211_BSS_TYPE_PBSS,
|
||||
IEEE80211_BSS_TYPE_IBSS,
|
||||
IEEE80211_BSS_TYPE_MBSS,
|
||||
IEEE80211_BSS_TYPE_ANY
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ieee80211_privacy - BSS privacy filter
|
||||
*
|
||||
* @IEEE80211_PRIVACY_ON: privacy bit set
|
||||
* @IEEE80211_PRIVACY_OFF: privacy bit clear
|
||||
* @IEEE80211_PRIVACY_ANY: Wildcard value for matching any privacy setting
|
||||
*/
|
||||
enum ieee80211_privacy {
|
||||
IEEE80211_PRIVACY_ON,
|
||||
IEEE80211_PRIVACY_OFF,
|
||||
IEEE80211_PRIVACY_ANY
|
||||
};
|
||||
|
||||
#define IEEE80211_PRIVACY(x) \
|
||||
((x) ? IEEE80211_PRIVACY_ON : IEEE80211_PRIVACY_OFF)
|
||||
|
||||
/**
|
||||
* struct ieee80211_rate - bitrate definition
|
||||
*
|
||||
|
@ -4012,14 +4045,16 @@ struct cfg80211_bss *cfg80211_get_bss(struct wiphy *wiphy,
|
|||
struct ieee80211_channel *channel,
|
||||
const u8 *bssid,
|
||||
const u8 *ssid, size_t ssid_len,
|
||||
u16 capa_mask, u16 capa_val);
|
||||
enum ieee80211_bss_type bss_type,
|
||||
enum ieee80211_privacy);
|
||||
static inline struct cfg80211_bss *
|
||||
cfg80211_get_ibss(struct wiphy *wiphy,
|
||||
struct ieee80211_channel *channel,
|
||||
const u8 *ssid, size_t ssid_len)
|
||||
{
|
||||
return cfg80211_get_bss(wiphy, channel, NULL, ssid, ssid_len,
|
||||
WLAN_CAPABILITY_IBSS, WLAN_CAPABILITY_IBSS);
|
||||
IEEE80211_BSS_TYPE_IBSS,
|
||||
IEEE80211_PRIVACY_ANY);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue