GAS: Do not start new scan operation during an ongoing GAS query

These operations can have conflicting offchannel requirements, so wait
with a new scan trigger until a pending GAS query has been completed.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Jouni Malinen 2013-10-21 13:20:38 +03:00 committed by Jouni Malinen
parent c377514337
commit cbc5484892
3 changed files with 16 additions and 0 deletions

View file

@ -598,3 +598,9 @@ void gas_query_cancel(struct gas_query *gas, const u8 *dst, u8 dialog_token)
gas_query_done(gas, query, GAS_QUERY_CANCELLED); gas_query_done(gas, query, GAS_QUERY_CANCELLED);
} }
int gas_query_in_progress(struct gas_query *gas)
{
return gas->current != NULL;
}

View file

@ -18,6 +18,7 @@ struct gas_query * gas_query_init(struct wpa_supplicant *wpa_s);
void gas_query_deinit(struct gas_query *gas); void gas_query_deinit(struct gas_query *gas);
int gas_query_rx(struct gas_query *gas, const u8 *da, const u8 *sa, int gas_query_rx(struct gas_query *gas, const u8 *da, const u8 *sa,
const u8 *bssid, const u8 *data, size_t len, int freq); const u8 *bssid, const u8 *data, size_t len, int freq);
int gas_query_in_progress(struct gas_query *gas);
/** /**
* enum gas_query_result - GAS query result * enum gas_query_result - GAS query result

View file

@ -21,6 +21,7 @@
#include "hs20_supplicant.h" #include "hs20_supplicant.h"
#include "notify.h" #include "notify.h"
#include "bss.h" #include "bss.h"
#include "gas_query.h"
#include "scan.h" #include "scan.h"
@ -604,6 +605,14 @@ static void wpa_supplicant_scan(void *eloop_ctx, void *timeout_ctx)
} }
#endif /* CONFIG_P2P */ #endif /* CONFIG_P2P */
#ifdef CONFIG_GAS
if (gas_query_in_progress(wpa_s->gas)) {
wpa_dbg(wpa_s, MSG_DEBUG, "Delay scan while GAS query is in progress");
wpa_supplicant_req_scan(wpa_s, 1, 0);
return;
}
#endif /* CONFIG_GAS */
if (wpa_s->conf->ap_scan == 2) if (wpa_s->conf->ap_scan == 2)
max_ssids = 1; max_ssids = 1;
else { else {