RRM: Send Radio Measurement response when beacon report scan fails
When failing to trigger scan for beacon report (e.g., when the requested duration is not supported by the driver), send a Radio Measurement response with the mode set to refused and don't retry the scan. Signed-off-by: Avraham Stern <avraham.stern@intel.com>
This commit is contained in:
parent
d557183150
commit
3756acfd48
3 changed files with 8 additions and 2 deletions
|
@ -870,7 +870,7 @@ static void wpas_beacon_rep_table(struct wpa_supplicant *wpa_s,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void wpas_rrm_refuse_request(struct wpa_supplicant *wpa_s)
|
void wpas_rrm_refuse_request(struct wpa_supplicant *wpa_s)
|
||||||
{
|
{
|
||||||
if (!is_multicast_ether_addr(wpa_s->rrm.dst_addr)) {
|
if (!is_multicast_ether_addr(wpa_s->rrm.dst_addr)) {
|
||||||
struct wpabuf *buf = NULL;
|
struct wpabuf *buf = NULL;
|
||||||
|
|
|
@ -200,7 +200,8 @@ static void wpas_trigger_scan_cb(struct wpa_radio_work *work, int deinit)
|
||||||
wpa_scan_free_params(params);
|
wpa_scan_free_params(params);
|
||||||
work->ctx = NULL;
|
work->ctx = NULL;
|
||||||
if (ret) {
|
if (ret) {
|
||||||
int retry = wpa_s->last_scan_req != MANUAL_SCAN_REQ;
|
int retry = wpa_s->last_scan_req != MANUAL_SCAN_REQ &&
|
||||||
|
!wpa_s->beacon_rep_data.token;
|
||||||
|
|
||||||
if (wpa_s->disconnected)
|
if (wpa_s->disconnected)
|
||||||
retry = 0;
|
retry = 0;
|
||||||
|
@ -222,6 +223,10 @@ static void wpas_trigger_scan_cb(struct wpa_radio_work *work, int deinit)
|
||||||
/* Clear the scan_res_handler */
|
/* Clear the scan_res_handler */
|
||||||
wpa_s->scan_res_handler = NULL;
|
wpa_s->scan_res_handler = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wpa_s->beacon_rep_data.token)
|
||||||
|
wpas_rrm_refuse_request(wpa_s);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1317,6 +1317,7 @@ void wpas_rrm_handle_link_measurement_request(struct wpa_supplicant *wpa_s,
|
||||||
const u8 *src,
|
const u8 *src,
|
||||||
const u8 *frame, size_t len,
|
const u8 *frame, size_t len,
|
||||||
int rssi);
|
int rssi);
|
||||||
|
void wpas_rrm_refuse_request(struct wpa_supplicant *wpa_s);
|
||||||
int wpas_beacon_rep_scan_process(struct wpa_supplicant *wpa_s,
|
int wpas_beacon_rep_scan_process(struct wpa_supplicant *wpa_s,
|
||||||
struct wpa_scan_results *scan_res,
|
struct wpa_scan_results *scan_res,
|
||||||
struct scan_info *info);
|
struct scan_info *info);
|
||||||
|
|
Loading…
Reference in a new issue