RNR: Allow Probe Response frame for a colocated 6 GHz AP
When a Probe Request frame from a station includes an SSID matching that of a co-located 6 GHz AP, AP should respond with a Probe Response frame that includes Reduced Neighbor Report element containing information regarding the requested BSS. Signed-off-by: Muna Sinada <msinada@codeaurora.org> Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
This commit is contained in:
parent
f17f7ca4e0
commit
15f099ec70
1 changed files with 31 additions and 2 deletions
|
@ -644,7 +644,8 @@ static u8 * hostapd_gen_probe_resp(struct hostapd_data *hapd,
|
||||||
enum ssid_match_result {
|
enum ssid_match_result {
|
||||||
NO_SSID_MATCH,
|
NO_SSID_MATCH,
|
||||||
EXACT_SSID_MATCH,
|
EXACT_SSID_MATCH,
|
||||||
WILDCARD_SSID_MATCH
|
WILDCARD_SSID_MATCH,
|
||||||
|
CO_LOCATED_SSID_MATCH,
|
||||||
};
|
};
|
||||||
|
|
||||||
static enum ssid_match_result ssid_match(struct hostapd_data *hapd,
|
static enum ssid_match_result ssid_match(struct hostapd_data *hapd,
|
||||||
|
@ -655,7 +656,9 @@ static enum ssid_match_result ssid_match(struct hostapd_data *hapd,
|
||||||
size_t short_ssid_list_len)
|
size_t short_ssid_list_len)
|
||||||
{
|
{
|
||||||
const u8 *pos, *end;
|
const u8 *pos, *end;
|
||||||
|
struct hostapd_iface *iface = hapd->iface;
|
||||||
int wildcard = 0;
|
int wildcard = 0;
|
||||||
|
size_t i, j;
|
||||||
|
|
||||||
if (ssid_len == 0)
|
if (ssid_len == 0)
|
||||||
wildcard = 1;
|
wildcard = 1;
|
||||||
|
@ -689,7 +692,33 @@ static enum ssid_match_result ssid_match(struct hostapd_data *hapd,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return wildcard ? WILDCARD_SSID_MATCH : NO_SSID_MATCH;
|
if (wildcard)
|
||||||
|
return WILDCARD_SSID_MATCH;
|
||||||
|
|
||||||
|
if (!iface->interfaces || iface->interfaces->count <= 1 ||
|
||||||
|
is_6ghz_op_class(hapd->iconf->op_class))
|
||||||
|
return NO_SSID_MATCH;
|
||||||
|
|
||||||
|
for (i = 0; i < iface->interfaces->count; i++) {
|
||||||
|
struct hostapd_iface *colocated;
|
||||||
|
|
||||||
|
colocated = iface->interfaces->iface[i];
|
||||||
|
|
||||||
|
if (colocated == iface ||
|
||||||
|
!is_6ghz_op_class(colocated->conf->op_class))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for (j = 0; j < colocated->num_bss; j++) {
|
||||||
|
struct hostapd_bss_config *conf;
|
||||||
|
|
||||||
|
conf = colocated->bss[j]->conf;
|
||||||
|
if (ssid_len == conf->ssid.ssid_len &&
|
||||||
|
os_memcmp(ssid, conf->ssid.ssid, ssid_len) == 0)
|
||||||
|
return CO_LOCATED_SSID_MATCH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NO_SSID_MATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue