P2P: Do not reply to Probe Request frame indicating only 802.11b rates

Per P2P specification 2.4.1, P2P Device shall shall not respond to
Probe Request frames that indicate support for only 802.11b rates.
This commit is contained in:
Jouni Malinen 2011-07-15 21:49:50 +03:00
parent 97c5b3c45b
commit e1d526293b

View file

@ -1644,6 +1644,31 @@ struct wpabuf * p2p_build_probe_resp_ies(struct p2p_data *p2p)
}
static int is_11b(u8 rate)
{
return rate == 0x02 || rate == 0x04 || rate == 0x0b || rate == 0x16;
}
static int supp_rates_11b_only(struct ieee802_11_elems *elems)
{
int num_11b = 0, num_others = 0;
int i;
if (elems->supp_rates == NULL && elems->ext_supp_rates == NULL)
return 0;
for (i = 0; elems->supp_rates && i < elems->supp_rates_len; i++) {
if (is_11b(elems->supp_rates[i]))
num_11b++;
else
num_others++;
}
return num_11b > 0 && num_others == 0;
}
static void p2p_reply_probe(struct p2p_data *p2p, const u8 *addr,
const u8 *dst, const u8 *bssid, const u8 *ie,
size_t ie_len)
@ -1689,6 +1714,11 @@ static void p2p_reply_probe(struct p2p_data *p2p, const u8 *addr,
return;
}
if (supp_rates_11b_only(&elems)) {
/* Indicates support for 11b rates only */
return;
}
os_memset(&msg, 0, sizeof(msg));
if (p2p_parse_ies(ie, ie_len, &msg) < 0) {
/* Could not parse P2P attributes */