From b3727f67bee3ab1550157c1bd4101168a7689ff3 Mon Sep 17 00:00:00 2001 From: ligd Date: Sun, 6 Oct 2024 15:09:38 +0800 Subject: [PATCH] esp32: fix esp32 wifi bug caused scan failed tools/configure.sh esp32c3-generic:wifi wapi scan wlan0 has no return result after couple times rootcause: mq_timedsend() return failed because the time valid check error. the ts_nsec is bigger than 1000000000. esp_update_time() hasn't consider of the ns > 1s after the adding calculation Signed-off-by: ligd --- arch/risc-v/src/esp32c3-legacy/esp32c3_ble_adapter.c | 11 +++-------- arch/risc-v/src/esp32c3-legacy/esp32c3_wifi_adapter.c | 11 +++-------- arch/risc-v/src/esp32c3/esp_wifi_adapter.c | 11 +++-------- arch/risc-v/src/esp32c6/esp_wifi_adapter.c | 11 +++-------- arch/xtensa/src/esp32/esp32_ble_adapter.c | 11 +++-------- arch/xtensa/src/esp32/esp32_wifi_adapter.c | 11 +++-------- arch/xtensa/src/esp32s2/esp32s2_wifi_adapter.c | 11 +++-------- arch/xtensa/src/esp32s3/esp32s3_ble_adapter.c | 11 +++-------- arch/xtensa/src/esp32s3/esp32s3_wifi_adapter.c | 11 +++-------- 9 files changed, 27 insertions(+), 72 deletions(-) diff --git a/arch/risc-v/src/esp32c3-legacy/esp32c3_ble_adapter.c b/arch/risc-v/src/esp32c3-legacy/esp32c3_ble_adapter.c index 44f20362f79..75a7b72fe39 100644 --- a/arch/risc-v/src/esp32c3-legacy/esp32c3_ble_adapter.c +++ b/arch/risc-v/src/esp32c3-legacy/esp32c3_ble_adapter.c @@ -888,15 +888,10 @@ static int IRAM_ATTR semphr_give_from_isr_wrapper(void *semphr, void *hptw) static void esp_update_time(struct timespec *timespec, uint32_t ticks) { - uint32_t tmp; + struct timespec ts; - tmp = TICK2SEC(ticks); - timespec->tv_sec += tmp; - - ticks -= SEC2TICK(tmp); - tmp = TICK2NSEC(ticks); - - timespec->tv_nsec += tmp; + clock_ticks2time(&ts, ticks); + clock_timespec_add(timespec, &ts, timespec); } /**************************************************************************** diff --git a/arch/risc-v/src/esp32c3-legacy/esp32c3_wifi_adapter.c b/arch/risc-v/src/esp32c3-legacy/esp32c3_wifi_adapter.c index 78193acdadd..e946c121313 100644 --- a/arch/risc-v/src/esp32c3-legacy/esp32c3_wifi_adapter.c +++ b/arch/risc-v/src/esp32c3-legacy/esp32c3_wifi_adapter.c @@ -858,15 +858,10 @@ static void esp_thread_semphr_free(void *semphr) static void esp_update_time(struct timespec *timespec, uint32_t ticks) { - uint32_t tmp; + struct timespec ts; - tmp = TICK2SEC(ticks); - timespec->tv_sec += tmp; - - ticks -= SEC2TICK(tmp); - tmp = TICK2NSEC(ticks); - - timespec->tv_nsec += tmp; + clock_ticks2time(&ts, ticks); + clock_timespec_add(timespec, &ts, timespec); } /**************************************************************************** diff --git a/arch/risc-v/src/esp32c3/esp_wifi_adapter.c b/arch/risc-v/src/esp32c3/esp_wifi_adapter.c index dd453ab82dd..350bc2e9001 100644 --- a/arch/risc-v/src/esp32c3/esp_wifi_adapter.c +++ b/arch/risc-v/src/esp32c3/esp_wifi_adapter.c @@ -3144,15 +3144,10 @@ static void esp_nvs_close(uint32_t handle) static void esp_update_time(struct timespec *timespec, uint32_t ticks) { - uint32_t tmp; + struct timespec ts; - tmp = TICK2SEC(ticks); - timespec->tv_sec += tmp; - - ticks -= SEC2TICK(tmp); - tmp = TICK2NSEC(ticks); - - timespec->tv_nsec += tmp; + clock_ticks2time(&ts, ticks); + clock_timespec_add(timespec, &ts, timespec); } #ifdef ESP_WLAN_HAS_STA diff --git a/arch/risc-v/src/esp32c6/esp_wifi_adapter.c b/arch/risc-v/src/esp32c6/esp_wifi_adapter.c index a233634a042..b926318a2c3 100644 --- a/arch/risc-v/src/esp32c6/esp_wifi_adapter.c +++ b/arch/risc-v/src/esp32c6/esp_wifi_adapter.c @@ -3098,15 +3098,10 @@ static void esp_nvs_close(uint32_t handle) static void esp_update_time(struct timespec *timespec, uint32_t ticks) { - uint32_t tmp; + struct timespec ts; - tmp = TICK2SEC(ticks); - timespec->tv_sec += tmp; - - ticks -= SEC2TICK(tmp); - tmp = TICK2NSEC(ticks); - - timespec->tv_nsec += tmp; + clock_ticks2time(&ts, ticks); + clock_timespec_add(timespec, &ts, timespec); } #ifdef ESP_WLAN_HAS_STA diff --git a/arch/xtensa/src/esp32/esp32_ble_adapter.c b/arch/xtensa/src/esp32/esp32_ble_adapter.c index 7296401ce00..253a407b4d4 100644 --- a/arch/xtensa/src/esp32/esp32_ble_adapter.c +++ b/arch/xtensa/src/esp32/esp32_ble_adapter.c @@ -2491,15 +2491,10 @@ static IRAM_ATTR int32_t esp_queue_send_generic(void *queue, void *item, static void esp_update_time(struct timespec *timespec, uint32_t ticks) { - uint32_t tmp; + struct timespec ts; - tmp = TICK2SEC(ticks); - timespec->tv_sec += tmp; - - ticks -= SEC2TICK(tmp); - tmp = TICK2NSEC(ticks); - - timespec->tv_nsec += tmp; + clock_ticks2time(&ts, ticks); + clock_timespec_add(timespec, &ts, timespec); } /**************************************************************************** diff --git a/arch/xtensa/src/esp32/esp32_wifi_adapter.c b/arch/xtensa/src/esp32/esp32_wifi_adapter.c index e267a6970c4..3bd618f9c75 100644 --- a/arch/xtensa/src/esp32/esp32_wifi_adapter.c +++ b/arch/xtensa/src/esp32/esp32_wifi_adapter.c @@ -730,15 +730,10 @@ static void esp_thread_semphr_free(void *semphr) static void esp_update_time(struct timespec *timespec, uint32_t ticks) { - uint32_t tmp; + struct timespec ts; - tmp = TICK2SEC(ticks); - timespec->tv_sec += tmp; - - ticks -= SEC2TICK(tmp); - tmp = TICK2NSEC(ticks); - - timespec->tv_nsec += tmp; + clock_ticks2time(&ts, ticks); + clock_timespec_add(timespec, &ts, timespec); } /**************************************************************************** diff --git a/arch/xtensa/src/esp32s2/esp32s2_wifi_adapter.c b/arch/xtensa/src/esp32s2/esp32s2_wifi_adapter.c index 6852f740267..3d253e78c30 100644 --- a/arch/xtensa/src/esp32s2/esp32s2_wifi_adapter.c +++ b/arch/xtensa/src/esp32s2/esp32s2_wifi_adapter.c @@ -679,15 +679,10 @@ static void esp_thread_semphr_free(void *semphr) static void esp_update_time(struct timespec *timespec, uint32_t ticks) { - uint32_t tmp; + struct timespec ts; - tmp = TICK2SEC(ticks); - timespec->tv_sec += tmp; - - ticks -= SEC2TICK(tmp); - tmp = TICK2NSEC(ticks); - - timespec->tv_nsec += tmp; + clock_ticks2time(&ts, ticks); + clock_timespec_add(timespec, &ts, timespec); } /**************************************************************************** diff --git a/arch/xtensa/src/esp32s3/esp32s3_ble_adapter.c b/arch/xtensa/src/esp32s3/esp32s3_ble_adapter.c index 473a9f479e6..efcefc48d52 100644 --- a/arch/xtensa/src/esp32s3/esp32s3_ble_adapter.c +++ b/arch/xtensa/src/esp32s3/esp32s3_ble_adapter.c @@ -2311,15 +2311,10 @@ static IRAM_ATTR int32_t esp_queue_send_generic(void *queue, void *item, static void esp_update_time(struct timespec *timespec, uint32_t ticks) { - uint32_t tmp; + struct timespec ts; - tmp = TICK2SEC(ticks); - timespec->tv_sec += tmp; - - ticks -= SEC2TICK(tmp); - tmp = TICK2NSEC(ticks); - - timespec->tv_nsec += tmp; + clock_ticks2time(&ts, ticks); + clock_timespec_add(timespec, &ts, timespec); } /**************************************************************************** diff --git a/arch/xtensa/src/esp32s3/esp32s3_wifi_adapter.c b/arch/xtensa/src/esp32s3/esp32s3_wifi_adapter.c index 4770986842b..071c2516479 100644 --- a/arch/xtensa/src/esp32s3/esp32s3_wifi_adapter.c +++ b/arch/xtensa/src/esp32s3/esp32s3_wifi_adapter.c @@ -724,15 +724,10 @@ static void esp_thread_semphr_free(void *semphr) static void esp_update_time(struct timespec *timespec, uint32_t ticks) { - uint32_t tmp; + struct timespec ts; - tmp = TICK2SEC(ticks); - timespec->tv_sec += tmp; - - ticks -= SEC2TICK(tmp); - tmp = TICK2NSEC(ticks); - - timespec->tv_nsec += tmp; + clock_ticks2time(&ts, ticks); + clock_timespec_add(timespec, &ts, timespec); } /****************************************************************************