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:
parent
c377514337
commit
cbc5484892
3 changed files with 16 additions and 0 deletions
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Reference in a new issue