fix(network): recover stale Wi-Fi after first HTTPS failure
This commit is contained in:
@@ -111,7 +111,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_TQ_NETWORK_AUTO_REASSOCIATION_ENABLE
|
#if CONFIG_TQ_NETWORK_AUTO_REASSOCIATION_ENABLE
|
||||||
#define CONTROL_PLANE_NETWORK_FAILURE_REASSOC_THRESHOLD 2U
|
#define CONTROL_PLANE_NETWORK_FAILURE_REASSOC_THRESHOLD 1U
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(CONFIG_TQ_PTT_MODE_HOLD_TO_TALK) && !defined(CONFIG_TQ_PTT_MODE_CLICK_TO_TALK)
|
#if !defined(CONFIG_TQ_PTT_MODE_HOLD_TO_TALK) && !defined(CONFIG_TQ_PTT_MODE_CLICK_TO_TALK)
|
||||||
@@ -1815,7 +1815,7 @@ static void control_plane_wifi_state_task(void *arg)
|
|||||||
#if CONFIG_TQ_NETWORK_AUTO_REASSOCIATION_ENABLE
|
#if CONFIG_TQ_NETWORK_AUTO_REASSOCIATION_ENABLE
|
||||||
if (connected && control_plane_consume_wifi_reassociation_request()) {
|
if (connected && control_plane_consume_wifi_reassociation_request()) {
|
||||||
ESP_LOGW(TAG,
|
ESP_LOGW(TAG,
|
||||||
"Network recovery experiment: controlled STA reassociation started after %u HTTPS connection failures",
|
"Network recovery: controlled STA reassociation started after %u HTTPS connection failure",
|
||||||
(unsigned)CONTROL_PLANE_NETWORK_FAILURE_REASSOC_THRESHOLD);
|
(unsigned)CONTROL_PLANE_NETWORK_FAILURE_REASSOC_THRESHOLD);
|
||||||
domain_runtime_behavior_set_keep_awake(true);
|
domain_runtime_behavior_set_keep_awake(true);
|
||||||
esp_err_t reassoc_err = domain_runtime_wifi_portal_reconnect_sta(
|
esp_err_t reassoc_err = domain_runtime_wifi_portal_reconnect_sta(
|
||||||
@@ -1823,7 +1823,7 @@ static void control_plane_wifi_state_task(void *arg)
|
|||||||
domain_runtime_behavior_set_keep_awake(false);
|
domain_runtime_behavior_set_keep_awake(false);
|
||||||
connected = control_plane_is_sta_connected();
|
connected = control_plane_is_sta_connected();
|
||||||
ESP_LOGW(TAG,
|
ESP_LOGW(TAG,
|
||||||
"Network recovery experiment: controlled STA reassociation result=%s connected=%d",
|
"Network recovery: controlled STA reassociation result=%s connected=%d",
|
||||||
esp_err_to_name(reassoc_err),
|
esp_err_to_name(reassoc_err),
|
||||||
connected ? 1 : 0);
|
connected ? 1 : 0);
|
||||||
if (reassoc_err == ESP_OK && connected) {
|
if (reassoc_err == ESP_OK && connected) {
|
||||||
|
|||||||
@@ -36,7 +36,10 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PLATFORM_HTTPS_DEFAULT_TIMEOUT_MS 10000
|
#define PLATFORM_HTTPS_DEFAULT_TIMEOUT_MS 10000
|
||||||
#define PLATFORM_HTTPS_DNS_RETRY_COUNT 2
|
/* lwIP getaddrinfo() already performs bounded DNS retransmission internally and
|
||||||
|
* can block for roughly 14 seconds on a stale STA data path. Retrying the same
|
||||||
|
* lookup here only duplicates that delay before control-plane recovery runs. */
|
||||||
|
#define PLATFORM_HTTPS_DNS_RETRY_COUNT 1
|
||||||
#define PLATFORM_HTTPS_DNS_RETRY_DELAY_MS 500
|
#define PLATFORM_HTTPS_DNS_RETRY_DELAY_MS 500
|
||||||
#define PLATFORM_HTTPS_HOST_MAX_LEN 256
|
#define PLATFORM_HTTPS_HOST_MAX_LEN 256
|
||||||
#if CONFIG_TQ_NETWORK_DIAGNOSTICS_ENABLE
|
#if CONFIG_TQ_NETWORK_DIAGNOSTICS_ENABLE
|
||||||
|
|||||||
@@ -173,13 +173,14 @@ menu "Example Configuration"
|
|||||||
|
|
||||||
config TQ_NETWORK_AUTO_REASSOCIATION_ENABLE
|
config TQ_NETWORK_AUTO_REASSOCIATION_ENABLE
|
||||||
bool "Enable automatic Wi-Fi reassociation after HTTPS failures"
|
bool "Enable automatic Wi-Fi reassociation after HTTPS failures"
|
||||||
default n
|
default y
|
||||||
help
|
help
|
||||||
After two consecutive multimodal HTTPS connection failures,
|
After the first multimodal HTTPS connection failure,
|
||||||
disconnect and reconnect the Wi-Fi station before retrying.
|
disconnect and reconnect the Wi-Fi station before retrying.
|
||||||
This interrupts all device network traffic while reassociation
|
This interrupts all device network traffic while reassociation
|
||||||
is in progress. Keep disabled unless field testing shows that
|
is in progress. Field testing confirmed that this recovers a
|
||||||
reconnecting only the multimodal transport is insufficient.
|
stale STA data path which remains associated but cannot reach
|
||||||
|
DNS, the gateway, or a cached HTTPS endpoint.
|
||||||
|
|
||||||
config TQ_SYSTEM_EVENT_ENABLE
|
config TQ_SYSTEM_EVENT_ENABLE
|
||||||
bool "Enable control-plane system event task"
|
bool "Enable control-plane system event task"
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ CONFIG_TQ_MEMORY_MONITOR_INTERNAL_WARN_BYTES=16384
|
|||||||
CONFIG_TQ_MEMORY_MONITOR_DMA_LARGEST_WARN_BYTES=4096
|
CONFIG_TQ_MEMORY_MONITOR_DMA_LARGEST_WARN_BYTES=4096
|
||||||
CONFIG_TQ_NETWORK_DIAGNOSTICS_ENABLE=y
|
CONFIG_TQ_NETWORK_DIAGNOSTICS_ENABLE=y
|
||||||
CONFIG_TQ_MULTIMODAL_DIAGNOSTICS_ENABLE=y
|
CONFIG_TQ_MULTIMODAL_DIAGNOSTICS_ENABLE=y
|
||||||
# CONFIG_TQ_NETWORK_AUTO_REASSOCIATION_ENABLE is not set
|
CONFIG_TQ_NETWORK_AUTO_REASSOCIATION_ENABLE=y
|
||||||
CONFIG_TQ_SYSTEM_EVENT_ENABLE=y
|
CONFIG_TQ_SYSTEM_EVENT_ENABLE=y
|
||||||
CONFIG_TQ_SYSTEM_EVENT_QUEUE_LEN=32
|
CONFIG_TQ_SYSTEM_EVENT_QUEUE_LEN=32
|
||||||
CONFIG_TQ_SYSTEM_EVENT_TASK_STACK=4096
|
CONFIG_TQ_SYSTEM_EVENT_TASK_STACK=4096
|
||||||
|
|||||||
Reference in New Issue
Block a user