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 <liguiding1@xiaomi.com>
This commit is contained in:
ligd 2024-10-06 15:09:38 +08:00 • committed by Xiang Xiao
parent 82eca2607a
commit b3727f67be
9 changed files with 27 additions and 72 deletions

View file

@ -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);
}
/****************************************************************************

View file

@ -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);
}
/****************************************************************************

View file

@ -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

View file

@ -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

View file

@ -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);
}
/****************************************************************************

View file

@ -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);
}
/****************************************************************************

View file

@ -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);
}
/****************************************************************************

View file

@ -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);
}
/****************************************************************************

View file

@ -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);
}
/****************************************************************************