mirror of
https://github.com/espressif/esp-idf.git
synced 2026-09-22 13:01:16 +03:00
fix(wifi): Send Low RSSI reason in BTM Query for roaming
Roaming previously used REASON_RSSI (5), which APs decode as Load Balancing. Send Low RSSI (16) from RoamingApp and the example without changing the public btm_query_reason enum.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2023-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||
*/
|
||||
@@ -20,6 +20,8 @@
|
||||
#include "esp_netif.h"
|
||||
#include <sys/time.h>
|
||||
|
||||
#define BTM_QUERY_REASON_LOW_RSSI 16
|
||||
|
||||
/* Configuration */
|
||||
#define EXAMPLE_WIFI_SSID CONFIG_EXAMPLE_WIFI_SSID
|
||||
#define EXAMPLE_WIFI_PASSWORD CONFIG_EXAMPLE_WIFI_PASSWORD
|
||||
@@ -344,18 +346,18 @@ static void esp_neighbor_report_recv_handler(void* arg, esp_event_base_t event_b
|
||||
wifi_scan_config_t params;
|
||||
memset(¶ms, 0, sizeof(wifi_scan_config_t));
|
||||
if (esp_wifi_scan_start(¶ms, true) != ESP_OK) {
|
||||
goto cleanup;
|
||||
}
|
||||
/* cleanup from net802.11 */
|
||||
goto cleanup;
|
||||
}
|
||||
/* cleanup from net802.11 */
|
||||
esp_wifi_clear_ap_list();
|
||||
cand_list = 1;
|
||||
}
|
||||
/* send AP btm query, this will cause STA to roam as well */
|
||||
esp_wnm_send_bss_transition_mgmt_query(REASON_FRAME_LOSS, neighbor_list, cand_list);
|
||||
}
|
||||
/* send AP btm query, this will cause STA to roam as well */
|
||||
esp_wnm_send_bss_transition_mgmt_query(REASON_FRAME_LOSS, neighbor_list, cand_list);
|
||||
cleanup:
|
||||
if (neighbor_list)
|
||||
free(neighbor_list);
|
||||
|
||||
if (neighbor_list) {
|
||||
free(neighbor_list);
|
||||
}
|
||||
}
|
||||
|
||||
#if EXAMPLE_WIFI_RSSI_THRESHOLD
|
||||
@@ -369,7 +371,8 @@ static void esp_bss_rssi_low_handler(void* arg, esp_event_base_t event_base,
|
||||
if (esp_rrm_send_neighbor_report_request() < 0) {
|
||||
/* failed to send neighbor report request */
|
||||
ESP_LOGI(TAG, "failed to send neighbor report request");
|
||||
if (esp_wnm_send_bss_transition_mgmt_query(REASON_FRAME_LOSS, NULL, 0) < 0) {
|
||||
if (esp_wnm_send_bss_transition_mgmt_query((enum btm_query_reason)BTM_QUERY_REASON_LOW_RSSI,
|
||||
NULL, 0) < 0) {
|
||||
ESP_LOGI(TAG, "failed to send btm query");
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user