Capability matching for 60 GHz band
On the DMG (60 GHz) band, capability bits defined differently from non-DMG ones. Adjust capability matching to cover both cases. Also, for non-DMG bands, check ESS bit is set. Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
This commit is contained in:
parent
3140803b6d
commit
ff3ad3c531
2 changed files with 31 additions and 3 deletions
|
@ -122,6 +122,13 @@ struct hostapd_hw_modes {
|
|||
#define IEEE80211_CAP_IBSS 0x0002
|
||||
#define IEEE80211_CAP_PRIVACY 0x0010
|
||||
|
||||
/* DMG (60 GHz) IEEE 802.11ad */
|
||||
/* type - bits 0..1 */
|
||||
#define IEEE80211_CAP_DMG_MASK 0x0003
|
||||
#define IEEE80211_CAP_DMG_IBSS 0x0001 /* Tx by: STA */
|
||||
#define IEEE80211_CAP_DMG_PBSS 0x0002 /* Tx by: PCP */
|
||||
#define IEEE80211_CAP_DMG_AP 0x0003 /* Tx by: AP */
|
||||
|
||||
#define WPA_SCAN_QUAL_INVALID BIT(0)
|
||||
#define WPA_SCAN_NOISE_INVALID BIT(1)
|
||||
#define WPA_SCAN_LEVEL_INVALID BIT(2)
|
||||
|
|
|
@ -636,6 +636,28 @@ static int rate_match(struct wpa_supplicant *wpa_s, struct wpa_bss *bss)
|
|||
}
|
||||
|
||||
|
||||
static int bss_is_dmg(struct wpa_bss *bss)
|
||||
{
|
||||
return bss->freq > 45000;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Test whether BSS is in an ESS.
|
||||
* This is done differently in DMG (60 GHz) and non-DMG bands
|
||||
*/
|
||||
static int bss_is_ess(struct wpa_bss *bss)
|
||||
{
|
||||
if (bss_is_dmg(bss)) {
|
||||
return (bss->caps & IEEE80211_CAP_DMG_MASK) ==
|
||||
IEEE80211_CAP_DMG_AP;
|
||||
}
|
||||
|
||||
return ((bss->caps & (IEEE80211_CAP_ESS | IEEE80211_CAP_IBSS)) ==
|
||||
IEEE80211_CAP_ESS);
|
||||
}
|
||||
|
||||
|
||||
static struct wpa_ssid * wpa_scan_res_match(struct wpa_supplicant *wpa_s,
|
||||
int i, struct wpa_bss *bss,
|
||||
struct wpa_ssid *group)
|
||||
|
@ -769,9 +791,8 @@ static struct wpa_ssid * wpa_scan_res_match(struct wpa_supplicant *wpa_s,
|
|||
continue;
|
||||
}
|
||||
|
||||
if (bss->caps & IEEE80211_CAP_IBSS) {
|
||||
wpa_dbg(wpa_s, MSG_DEBUG, " skip - IBSS (adhoc) "
|
||||
"network");
|
||||
if (!bss_is_ess(bss)) {
|
||||
wpa_dbg(wpa_s, MSG_DEBUG, " skip - not ESS network");
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue