mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-30 10:47:19 +02:00
Merge branch 'bugfix/fix_some_wifi_bugs_0105_v3.3' into 'release/v3.3'
Bugfix/fix some wifi bugs 0105 v3.3 (backport v3.3) See merge request espressif/esp-idf!11945
This commit is contained in:
@ -244,6 +244,13 @@ esp_err_t esp_modem_sleep_deregister(modem_sleep_module_t module);
|
|||||||
* microsecond since boot when phy/rf was last switched on
|
* microsecond since boot when phy/rf was last switched on
|
||||||
*/
|
*/
|
||||||
int64_t esp_phy_rf_get_on_ts(void);
|
int64_t esp_phy_rf_get_on_ts(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get PHY lib version
|
||||||
|
* @return PHY lib version.
|
||||||
|
*/
|
||||||
|
char * get_phy_version_str(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -442,6 +442,8 @@ esp_err_t esp_wifi_scan_get_ap_records(uint16_t *number, wifi_ap_record_t *ap_re
|
|||||||
/**
|
/**
|
||||||
* @brief Get information of AP which the ESP32 station is associated with
|
* @brief Get information of AP which the ESP32 station is associated with
|
||||||
*
|
*
|
||||||
|
* @attention When the obtained country information is empty, it means that the AP does not carry country information
|
||||||
|
*
|
||||||
* @param ap_info the wifi_ap_record_t to hold AP information
|
* @param ap_info the wifi_ap_record_t to hold AP information
|
||||||
* sta can get the connected ap's phy mode info through the struct member
|
* sta can get the connected ap's phy mode info through the struct member
|
||||||
* phy_11b,phy_11g,phy_11n,phy_lr in the wifi_ap_record_t struct.
|
* phy_11b,phy_11g,phy_11n,phy_lr in the wifi_ap_record_t struct.
|
||||||
@ -905,9 +907,9 @@ esp_err_t esp_wifi_set_vendor_ie_cb(esp_vendor_ie_cb_t cb, void *ctx);
|
|||||||
* @attention 1. Maximum power before wifi startup is limited by PHY init data bin.
|
* @attention 1. Maximum power before wifi startup is limited by PHY init data bin.
|
||||||
* @attention 2. The value set by this API will be mapped to the max_tx_power of the structure wifi_country_t variable.
|
* @attention 2. The value set by this API will be mapped to the max_tx_power of the structure wifi_country_t variable.
|
||||||
* @attention 3. Mapping Table {Power, max_tx_power} = {{8, 2}, {20, 5}, {28, 7}, {34, 8}, {44, 11},
|
* @attention 3. Mapping Table {Power, max_tx_power} = {{8, 2}, {20, 5}, {28, 7}, {34, 8}, {44, 11},
|
||||||
* {52, 13}, {56, 14}, {60, 15}, {66, 16}, {72, 18}, {78, 20}}.
|
* {52, 13}, {56, 14}, {60, 15}, {66, 16}, {72, 18}, {80, 20}}.
|
||||||
* @attention 4. Param power unit is 0.25dBm, range is [8, 78] corresponding to 2dBm - 20dBm.
|
* @attention 4. Param power unit is 0.25dBm, range is [8, 84] corresponding to 2dBm - 20dBm.
|
||||||
* @attention 5. Relationship between set value and actual value. As follows: {set value range, actual value} = {{[8, 19],8}, {[20, 27],20}, {[28, 33],28}, {[34, 43],34}, {[44, 51],44}, {[52, 55],52}, {[56, 59],56}, {[60, 65],60}, {[66, 71],66}, {[72, 77],72}, {78,78}}
|
* @attention 5. Relationship between set value and actual value. As follows: {set value range, actual value} = {{[8, 19],8}, {[20, 27],20}, {[28, 33],28}, {[34, 43],34}, {[44, 51],44}, {[52, 55],52}, {[56, 59],56}, {[60, 65],60}, {[66, 71],66}, {[72, 79],72}, {[80, 84],80}}.
|
||||||
*
|
*
|
||||||
* @param power Maximum WiFi transmitting power.
|
* @param power Maximum WiFi transmitting power.
|
||||||
*
|
*
|
||||||
|
@ -33,10 +33,10 @@ typedef enum {
|
|||||||
WIFI_MODE_MAX
|
WIFI_MODE_MAX
|
||||||
} wifi_mode_t;
|
} wifi_mode_t;
|
||||||
|
|
||||||
typedef esp_interface_t wifi_interface_t;
|
typedef enum {
|
||||||
|
WIFI_IF_STA = ESP_IF_WIFI_STA,
|
||||||
#define WIFI_IF_STA ESP_IF_WIFI_STA
|
WIFI_IF_AP = ESP_IF_WIFI_AP,
|
||||||
#define WIFI_IF_AP ESP_IF_WIFI_AP
|
} wifi_interface_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
WIFI_COUNTRY_POLICY_AUTO, /**< Country policy is auto, use the country info of AP to which the station is connected */
|
WIFI_COUNTRY_POLICY_AUTO, /**< Country policy is auto, use the country info of AP to which the station is connected */
|
||||||
@ -364,6 +364,7 @@ typedef enum {
|
|||||||
#define WIFI_PROMIS_FILTER_MASK_MISC (1<<3) /**< filter the packets with type of WIFI_PKT_MISC */
|
#define WIFI_PROMIS_FILTER_MASK_MISC (1<<3) /**< filter the packets with type of WIFI_PKT_MISC */
|
||||||
#define WIFI_PROMIS_FILTER_MASK_DATA_MPDU (1<<4) /**< filter the MPDU which is a kind of WIFI_PKT_DATA */
|
#define WIFI_PROMIS_FILTER_MASK_DATA_MPDU (1<<4) /**< filter the MPDU which is a kind of WIFI_PKT_DATA */
|
||||||
#define WIFI_PROMIS_FILTER_MASK_DATA_AMPDU (1<<5) /**< filter the AMPDU which is a kind of WIFI_PKT_DATA */
|
#define WIFI_PROMIS_FILTER_MASK_DATA_AMPDU (1<<5) /**< filter the AMPDU which is a kind of WIFI_PKT_DATA */
|
||||||
|
#define WIFI_PROMIS_FILTER_MASK_FCSFAIL (1<<6) /**< filter the FCS failed packets, do not open it in general */
|
||||||
|
|
||||||
#define WIFI_PROMIS_CTRL_FILTER_MASK_ALL (0xFF800000) /**< filter all control packets */
|
#define WIFI_PROMIS_CTRL_FILTER_MASK_ALL (0xFF800000) /**< filter all control packets */
|
||||||
#define WIFI_PROMIS_CTRL_FILTER_MASK_WRAPPER (1<<23) /**< filter the control packets with subtype of Control Wrapper */
|
#define WIFI_PROMIS_CTRL_FILTER_MASK_WRAPPER (1<<23) /**< filter the control packets with subtype of Control Wrapper */
|
||||||
|
@ -52,6 +52,10 @@ entries:
|
|||||||
entries:
|
entries:
|
||||||
.wifi0iram+
|
.wifi0iram+
|
||||||
|
|
||||||
|
[sections:phy_iram]
|
||||||
|
entries:
|
||||||
|
.phyiram+
|
||||||
|
|
||||||
[scheme:default]
|
[scheme:default]
|
||||||
entries:
|
entries:
|
||||||
text -> flash_text
|
text -> flash_text
|
||||||
@ -67,6 +71,7 @@ entries:
|
|||||||
rtc_bss -> rtc_bss
|
rtc_bss -> rtc_bss
|
||||||
wifi_iram -> flash_text
|
wifi_iram -> flash_text
|
||||||
wifi_rx_iram -> flash_text
|
wifi_rx_iram -> flash_text
|
||||||
|
phy_iram -> flash_text
|
||||||
|
|
||||||
[scheme:rtc]
|
[scheme:rtc]
|
||||||
entries:
|
entries:
|
||||||
@ -96,3 +101,7 @@ entries:
|
|||||||
[scheme:wifi_rx_iram]
|
[scheme:wifi_rx_iram]
|
||||||
entries:
|
entries:
|
||||||
wifi_rx_iram -> iram0_text
|
wifi_rx_iram -> iram0_text
|
||||||
|
|
||||||
|
[scheme:phy_iram]
|
||||||
|
entries:
|
||||||
|
phy_iram -> iram0_text
|
||||||
|
Submodule components/esp32/lib updated: a88a4f3101...c323de3a27
@ -621,6 +621,9 @@ static void esp_phy_reduce_tx_power(esp_phy_init_data_t* init_data)
|
|||||||
|
|
||||||
void esp_phy_load_cal_and_init(phy_rf_module_t module)
|
void esp_phy_load_cal_and_init(phy_rf_module_t module)
|
||||||
{
|
{
|
||||||
|
char * phy_version = get_phy_version_str();
|
||||||
|
ESP_LOGI(TAG, "phy_version %s", phy_version);
|
||||||
|
|
||||||
esp_phy_calibration_data_t* cal_data =
|
esp_phy_calibration_data_t* cal_data =
|
||||||
(esp_phy_calibration_data_t*) calloc(sizeof(esp_phy_calibration_data_t), 1);
|
(esp_phy_calibration_data_t*) calloc(sizeof(esp_phy_calibration_data_t), 1);
|
||||||
if (cal_data == NULL) {
|
if (cal_data == NULL) {
|
||||||
|
@ -77,7 +77,7 @@ static const esp_phy_init_data_t phy_init_data= { {
|
|||||||
0x18,
|
0x18,
|
||||||
0x18,
|
0x18,
|
||||||
0x18,
|
0x18,
|
||||||
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 78),
|
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 84),
|
||||||
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 72),
|
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 72),
|
||||||
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 66),
|
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 66),
|
||||||
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 60),
|
LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 60),
|
||||||
|
@ -81,7 +81,7 @@ TEST_CASE("Test PHY/RTC functions called when cache is disabled", "[phy_rtc][cac
|
|||||||
{
|
{
|
||||||
semphr_done = xSemaphoreCreateCounting(1, 0);
|
semphr_done = xSemaphoreCreateCounting(1, 0);
|
||||||
|
|
||||||
xTaskCreatePinnedToCore(test_phy_rtc_cache_task, "phy_rtc_test_task", 2048,
|
xTaskCreatePinnedToCore(test_phy_rtc_cache_task, "phy_rtc_test_task", 2176,
|
||||||
NULL, configMAX_PRIORITIES-1, NULL, 0);
|
NULL, configMAX_PRIORITIES-1, NULL, 0);
|
||||||
|
|
||||||
TEST_ASSERT( xSemaphoreTake(semphr_done, portMAX_DELAY) );
|
TEST_ASSERT( xSemaphoreTake(semphr_done, portMAX_DELAY) );
|
||||||
|
@ -114,7 +114,7 @@ low_level_output(struct netif *netif, struct pbuf *p)
|
|||||||
struct pbuf *q = p;
|
struct pbuf *q = p;
|
||||||
err_t ret;
|
err_t ret;
|
||||||
|
|
||||||
if (wifi_if >= ESP_IF_MAX) {
|
if (wifi_if > WIFI_IF_AP) {
|
||||||
return ERR_IF;
|
return ERR_IF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ void wifi_init_sta()
|
|||||||
strcpy((char*)(wifi_config.sta.password), EXAMPLE_ESP_WIFI_PASS);
|
strcpy((char*)(wifi_config.sta.password), EXAMPLE_ESP_WIFI_PASS);
|
||||||
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) );
|
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) );
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) );
|
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config) );
|
||||||
ESP_ERROR_CHECK(esp_wifi_start() );
|
ESP_ERROR_CHECK(esp_wifi_start() );
|
||||||
|
|
||||||
ESP_LOGI(TAG, "wifi_init_sta finished.");
|
ESP_LOGI(TAG, "wifi_init_sta finished.");
|
||||||
|
@ -95,7 +95,7 @@ void wifi_init_sta()
|
|||||||
strcpy((char*)(wifi_config.sta.password), EXAMPLE_ESP_WIFI_PASS);
|
strcpy((char*)(wifi_config.sta.password), EXAMPLE_ESP_WIFI_PASS);
|
||||||
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) );
|
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) );
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) );
|
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config) );
|
||||||
ESP_ERROR_CHECK(esp_wifi_start() );
|
ESP_ERROR_CHECK(esp_wifi_start() );
|
||||||
|
|
||||||
ESP_LOGI(TAG, "wifi_init_sta finished.");
|
ESP_LOGI(TAG, "wifi_init_sta finished.");
|
||||||
|
@ -95,7 +95,7 @@ void wifi_init_sta()
|
|||||||
strcpy((char*)(wifi_config.sta.password), EXAMPLE_ESP_WIFI_PASS);
|
strcpy((char*)(wifi_config.sta.password), EXAMPLE_ESP_WIFI_PASS);
|
||||||
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) );
|
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) );
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) );
|
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config) );
|
||||||
ESP_ERROR_CHECK(esp_wifi_start() );
|
ESP_ERROR_CHECK(esp_wifi_start() );
|
||||||
|
|
||||||
ESP_LOGI(TAG, "wifi_init_sta finished.");
|
ESP_LOGI(TAG, "wifi_init_sta finished.");
|
||||||
|
@ -95,7 +95,7 @@ void wifi_init_sta()
|
|||||||
strcpy((char*)(wifi_config.sta.password), EXAMPLE_ESP_WIFI_PASS);
|
strcpy((char*)(wifi_config.sta.password), EXAMPLE_ESP_WIFI_PASS);
|
||||||
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) );
|
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) );
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) );
|
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config) );
|
||||||
ESP_ERROR_CHECK(esp_wifi_start() );
|
ESP_ERROR_CHECK(esp_wifi_start() );
|
||||||
|
|
||||||
ESP_LOGI(TAG, "wifi_init_sta finished.");
|
ESP_LOGI(TAG, "wifi_init_sta finished.");
|
||||||
|
@ -95,7 +95,7 @@ void wifi_init_sta()
|
|||||||
strcpy((char*)(wifi_config.sta.password), EXAMPLE_ESP_WIFI_PASS);
|
strcpy((char*)(wifi_config.sta.password), EXAMPLE_ESP_WIFI_PASS);
|
||||||
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) );
|
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) );
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) );
|
ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config) );
|
||||||
ESP_ERROR_CHECK(esp_wifi_start() );
|
ESP_ERROR_CHECK(esp_wifi_start() );
|
||||||
|
|
||||||
ESP_LOGI(TAG, "wifi_init_sta finished.");
|
ESP_LOGI(TAG, "wifi_init_sta finished.");
|
||||||
|
Reference in New Issue
Block a user