espressif: Minor changes to keep consistency between sources

This commits replicates some changes on files that were originally
written for other Espressif SoCs and inspired new implementations.
Eventually, these new implementations were improved and this commit
replicates these changes on the original sources.
This commit is contained in:
Tiago Medicci Serrano 2024-05-14 04:57:28 -03:00 committed by Xiang Xiao
parent c412dadcb9
commit 8a37d1ff1c
6 changed files with 66 additions and 50 deletions

View File

@ -87,7 +87,7 @@ static struct wifi_scan_result_s g_scan_priv =
{ {
.scan_signal = SEM_INITIALIZER(0), .scan_signal = SEM_INITIALIZER(0),
}; };
static uint8_t g_channel_num = 0; static uint8_t g_channel_num;
static uint8_t g_channel_list[CHANNEL_MAX_NUM]; static uint8_t g_channel_list[CHANNEL_MAX_NUM];
/**************************************************************************** /****************************************************************************
@ -199,10 +199,10 @@ int esp_wifi_start_scan(struct iwreq *iwr)
esp_wifi_start(); esp_wifi_start();
ret = esp_wifi_scan_start(config, false); ret = esp_wifi_scan_start(config, false);
g_scan_priv.scan_status = ESP_SCAN_RUN;
if (ret != OK) if (ret != OK)
{ {
wlerr("ERROR: Scan error, ret: %d\n", ret); wlerr("ERROR: Scan error, ret: %d\n", ret);
ret = ERROR;
} }
else else
{ {
@ -223,11 +223,16 @@ int esp_wifi_start_scan(struct iwreq *iwr)
} }
} }
if (config != NULL) if (config)
{ {
kmm_free(config); kmm_free(config);
config = NULL; config = NULL;
}
if (ret == OK)
{
wlinfo("INFO: start scan\n"); wlinfo("INFO: start scan\n");
g_scan_priv.scan_status = ESP_SCAN_RUN;
} }
return ret; return ret;
@ -257,7 +262,7 @@ int esp_wifi_get_scan_results(struct iwreq *iwr)
if (g_scan_priv.scan_status == ESP_SCAN_RUN) if (g_scan_priv.scan_status == ESP_SCAN_RUN)
{ {
irqstate_t irqstate = enter_critical_section(); irqstate_t irqstate = enter_critical_section();
if (scan_block == false) if (!scan_block)
{ {
scan_block = true; scan_block = true;
leave_critical_section(irqstate); leave_critical_section(irqstate);
@ -273,7 +278,8 @@ int esp_wifi_get_scan_results(struct iwreq *iwr)
} }
else if (g_scan_priv.scan_status == ESP_SCAN_DISABLED) else if (g_scan_priv.scan_status == ESP_SCAN_DISABLED)
{ {
return -EINVAL; ret = -EINVAL;
goto exit_failed;
} }
if ((iwr == NULL) || (g_scan_priv.scan_status != ESP_SCAN_DONE)) if ((iwr == NULL) || (g_scan_priv.scan_status != ESP_SCAN_DONE))
@ -291,6 +297,13 @@ int esp_wifi_get_scan_results(struct iwreq *iwr)
goto exit_failed; goto exit_failed;
} }
if (priv->scan_result_size <= 0)
{
ret = OK;
iwr->u.data.length = 0;
goto exit_free_buffer;
}
if (iwr->u.data.pointer == NULL || if (iwr->u.data.pointer == NULL ||
iwr->u.data.length < priv->scan_result_size) iwr->u.data.length < priv->scan_result_size)
{ {
@ -299,14 +312,7 @@ int esp_wifi_get_scan_results(struct iwreq *iwr)
ret = -E2BIG; ret = -E2BIG;
iwr->u.data.pointer = NULL; iwr->u.data.pointer = NULL;
iwr->u.data.length = priv->scan_result_size; iwr->u.data.length = priv->scan_result_size;
goto exit_failed; return ret;
}
if (priv->scan_result_size <= 0)
{
ret = OK;
iwr->u.data.length = 0;
goto exit_free_buffer;
} }
/* Copy result to user buffer */ /* Copy result to user buffer */
@ -410,7 +416,7 @@ void esp_wifi_scan_event_parse(void)
is_target_channel = true; is_target_channel = true;
} }
if (is_target_channel == true) if (is_target_channel)
{ {
result_size = WIFI_SCAN_RESULT_SIZE - priv->scan_result_size; result_size = WIFI_SCAN_RESULT_SIZE - priv->scan_result_size;
@ -544,7 +550,7 @@ scan_result_full:
/* Continue instead of break to log dropped AP results */ /* Continue instead of break to log dropped AP results */
if (parse_done == false) if (!parse_done)
{ {
wlerr("ERROR: No more space in scan_result buffer\n"); wlerr("ERROR: No more space in scan_result buffer\n");
} }

View File

@ -146,7 +146,7 @@ struct wlan_priv_s
/* Reference count of register Wi-Fi handler */ /* Reference count of register Wi-Fi handler */
static uint8_t g_callback_register_ref = 0; static uint8_t g_callback_register_ref;
static struct wlan_priv_s g_wlan_priv[ESP32C3_WLAN_DEVS]; static struct wlan_priv_s g_wlan_priv[ESP32C3_WLAN_DEVS];
@ -1383,7 +1383,7 @@ int esp32c3_wlan_sta_set_linkstatus(bool linkstatus)
{ {
struct wlan_priv_s *priv = &g_wlan_priv[ESP32C3_WLAN_STA_DEVNO]; struct wlan_priv_s *priv = &g_wlan_priv[ESP32C3_WLAN_STA_DEVNO];
if (linkstatus == true) if (linkstatus)
{ {
netdev_carrier_on(&priv->dev); netdev_carrier_on(&priv->dev);
} }

View File

@ -95,7 +95,7 @@ static struct wifi_scan_result g_scan_priv =
{ {
.scan_signal = SEM_INITIALIZER(0), .scan_signal = SEM_INITIALIZER(0),
}; };
static uint8_t g_channel_num = 0; static uint8_t g_channel_num;
static uint8_t g_channel_list[CHANNEL_MAX_NUM]; static uint8_t g_channel_list[CHANNEL_MAX_NUM];
/**************************************************************************** /****************************************************************************
@ -209,6 +209,7 @@ int esp_wifi_start_scan(struct iwreq *iwr)
if (ret != OK) if (ret != OK)
{ {
wlerr("ERROR: Scan error, ret: %d\n", ret); wlerr("ERROR: Scan error, ret: %d\n", ret);
ret = ERROR;
} }
else else
{ {
@ -233,10 +234,13 @@ int esp_wifi_start_scan(struct iwreq *iwr)
{ {
kmm_free(config); kmm_free(config);
config = NULL; config = NULL;
wlinfo("INFO: start scan\n");
} }
g_scan_priv.scan_status = ESP_SCAN_RUN; if (ret == OK)
{
wlinfo("INFO: start scan\n");
g_scan_priv.scan_status = ESP_SCAN_RUN;
}
return ret; return ret;
} }
@ -265,7 +269,7 @@ int esp_wifi_get_scan_results(struct iwreq *iwr)
if (g_scan_priv.scan_status == ESP_SCAN_RUN) if (g_scan_priv.scan_status == ESP_SCAN_RUN)
{ {
irqstate_t irqstate = enter_critical_section(); irqstate_t irqstate = enter_critical_section();
if (scan_block == false) if (!scan_block)
{ {
scan_block = true; scan_block = true;
leave_critical_section(irqstate); leave_critical_section(irqstate);
@ -281,7 +285,8 @@ int esp_wifi_get_scan_results(struct iwreq *iwr)
} }
else if (g_scan_priv.scan_status == ESP_SCAN_DISABLED) else if (g_scan_priv.scan_status == ESP_SCAN_DISABLED)
{ {
return -EINVAL; ret = -EINVAL;
goto exit_failed;
} }
if ((iwr == NULL) || (g_scan_priv.scan_status != ESP_SCAN_DONE)) if ((iwr == NULL) || (g_scan_priv.scan_status != ESP_SCAN_DONE))
@ -299,6 +304,13 @@ int esp_wifi_get_scan_results(struct iwreq *iwr)
goto exit_failed; goto exit_failed;
} }
if (priv->scan_result_size <= 0)
{
ret = OK;
iwr->u.data.length = 0;
goto exit_free_buffer;
}
if (iwr->u.data.pointer == NULL || if (iwr->u.data.pointer == NULL ||
iwr->u.data.length < priv->scan_result_size) iwr->u.data.length < priv->scan_result_size)
{ {
@ -307,14 +319,7 @@ int esp_wifi_get_scan_results(struct iwreq *iwr)
ret = -E2BIG; ret = -E2BIG;
iwr->u.data.pointer = NULL; iwr->u.data.pointer = NULL;
iwr->u.data.length = priv->scan_result_size; iwr->u.data.length = priv->scan_result_size;
goto exit_failed; return ret;
}
if (priv->scan_result_size <= 0)
{
ret = OK;
iwr->u.data.length = 0;
goto exit_free_buffer;
} }
/* Copy result to user buffer */ /* Copy result to user buffer */
@ -418,7 +423,7 @@ void esp_wifi_scan_event_parse(void)
is_target_channel = true; is_target_channel = true;
} }
if (is_target_channel == true) if (is_target_channel)
{ {
result_size = WIFI_SCAN_RESULT_SIZE - priv->scan_result_size; result_size = WIFI_SCAN_RESULT_SIZE - priv->scan_result_size;
@ -552,7 +557,7 @@ scan_result_full:
/* Continue instead of break to log dropped AP results */ /* Continue instead of break to log dropped AP results */
if (parse_done == false) if (!parse_done)
{ {
wlerr("ERROR: No more space in scan_result buffer\n"); wlerr("ERROR: No more space in scan_result buffer\n");
} }

View File

@ -201,7 +201,7 @@ struct wlan_priv_s
/* Reference count of register Wi-Fi handler */ /* Reference count of register Wi-Fi handler */
static uint8_t g_callback_register_ref = 0; static uint8_t g_callback_register_ref;
static struct wlan_priv_s g_wlan_priv[ESP32_WLAN_DEVS]; static struct wlan_priv_s g_wlan_priv[ESP32_WLAN_DEVS];

View File

@ -96,7 +96,7 @@ static struct wifi_scan_result g_scan_priv =
{ {
.scan_signal = SEM_INITIALIZER(0), .scan_signal = SEM_INITIALIZER(0),
}; };
static uint8_t g_channel_num = 0; static uint8_t g_channel_num;
static uint8_t g_channel_list[CHANNEL_MAX_NUM]; static uint8_t g_channel_list[CHANNEL_MAX_NUM];
/**************************************************************************** /****************************************************************************
@ -210,6 +210,7 @@ int esp_wifi_start_scan(struct iwreq *iwr)
if (ret != OK) if (ret != OK)
{ {
wlerr("ERROR: Scan error, ret: %d\n", ret); wlerr("ERROR: Scan error, ret: %d\n", ret);
ret = ERROR;
} }
else else
{ {
@ -234,10 +235,13 @@ int esp_wifi_start_scan(struct iwreq *iwr)
{ {
kmm_free(config); kmm_free(config);
config = NULL; config = NULL;
wlinfo("INFO: start scan\n");
} }
g_scan_priv.scan_status = ESP_SCAN_RUN; if (ret == OK)
{
wlinfo("INFO: start scan\n");
g_scan_priv.scan_status = ESP_SCAN_RUN;
}
return ret; return ret;
} }
@ -266,7 +270,7 @@ int esp_wifi_get_scan_results(struct iwreq *iwr)
if (g_scan_priv.scan_status == ESP_SCAN_RUN) if (g_scan_priv.scan_status == ESP_SCAN_RUN)
{ {
irqstate_t irqstate = enter_critical_section(); irqstate_t irqstate = enter_critical_section();
if (scan_block == false) if (!scan_block)
{ {
scan_block = true; scan_block = true;
leave_critical_section(irqstate); leave_critical_section(irqstate);
@ -282,7 +286,8 @@ int esp_wifi_get_scan_results(struct iwreq *iwr)
} }
else if (g_scan_priv.scan_status == ESP_SCAN_DISABLED) else if (g_scan_priv.scan_status == ESP_SCAN_DISABLED)
{ {
return -EINVAL; ret = -EINVAL;
goto exit_failed;
} }
if ((iwr == NULL) || (g_scan_priv.scan_status != ESP_SCAN_DONE)) if ((iwr == NULL) || (g_scan_priv.scan_status != ESP_SCAN_DONE))
@ -300,6 +305,13 @@ int esp_wifi_get_scan_results(struct iwreq *iwr)
goto exit_failed; goto exit_failed;
} }
if (priv->scan_result_size <= 0)
{
ret = OK;
iwr->u.data.length = 0;
goto exit_free_buffer;
}
if (iwr->u.data.pointer == NULL || if (iwr->u.data.pointer == NULL ||
iwr->u.data.length < priv->scan_result_size) iwr->u.data.length < priv->scan_result_size)
{ {
@ -308,14 +320,7 @@ int esp_wifi_get_scan_results(struct iwreq *iwr)
ret = -E2BIG; ret = -E2BIG;
iwr->u.data.pointer = NULL; iwr->u.data.pointer = NULL;
iwr->u.data.length = priv->scan_result_size; iwr->u.data.length = priv->scan_result_size;
goto exit_failed; return ret;
}
if (priv->scan_result_size <= 0)
{
ret = OK;
iwr->u.data.length = 0;
goto exit_free_buffer;
} }
/* Copy result to user buffer */ /* Copy result to user buffer */
@ -419,7 +424,7 @@ void esp_wifi_scan_event_parse(void)
is_target_channel = true; is_target_channel = true;
} }
if (is_target_channel == true) if (is_target_channel)
{ {
result_size = WIFI_SCAN_RESULT_SIZE - priv->scan_result_size; result_size = WIFI_SCAN_RESULT_SIZE - priv->scan_result_size;
@ -553,7 +558,7 @@ scan_result_full:
/* Continue instead of break to log dropped AP results */ /* Continue instead of break to log dropped AP results */
if (parse_done == false) if (!parse_done)
{ {
wlerr("ERROR: No more space in scan_result buffer\n"); wlerr("ERROR: No more space in scan_result buffer\n");
} }

View File

@ -150,7 +150,7 @@ struct wlan_priv_s
/* Reference count of register Wi-Fi handler */ /* Reference count of register Wi-Fi handler */
static uint8_t g_callback_register_ref = 0; static uint8_t g_callback_register_ref;
static struct wlan_priv_s g_wlan_priv[ESP32S3_WLAN_DEVS]; static struct wlan_priv_s g_wlan_priv[ESP32S3_WLAN_DEVS];
@ -1373,7 +1373,7 @@ int esp32s3_wlan_sta_set_linkstatus(bool linkstatus)
{ {
struct wlan_priv_s *priv = &g_wlan_priv[ESP32S3_WLAN_STA_DEVNO]; struct wlan_priv_s *priv = &g_wlan_priv[ESP32S3_WLAN_STA_DEVNO];
if (linkstatus == true) if (linkstatus)
{ {
netdev_carrier_on(&priv->dev); netdev_carrier_on(&priv->dev);
} }