From 70777a256a08c0bf4c56438ef482ce15b96c340a Mon Sep 17 00:00:00 2001 From: ronghulin Date: Mon, 21 Dec 2020 15:44:00 +0800 Subject: [PATCH 1/4] bugfix: fix some wifi bugs 1. fix max tx power to 20dBm 2. fix the issue that the esp_wifi_sta_get_ap_info can't get country Closes https://github.com/espressif/esp-idf/issues/6267 --- components/esp_wifi/esp32/include/phy_init_data.h | 2 +- components/esp_wifi/include/esp_wifi.h | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/components/esp_wifi/esp32/include/phy_init_data.h b/components/esp_wifi/esp32/include/phy_init_data.h index 2cb12a7378..031813f5b7 100644 --- a/components/esp_wifi/esp32/include/phy_init_data.h +++ b/components/esp_wifi/esp32/include/phy_init_data.h @@ -77,7 +77,7 @@ static const esp_phy_init_data_t phy_init_data= { { 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, 66), LIMIT(CONFIG_ESP32_PHY_MAX_TX_POWER * 4, 40, 60), diff --git a/components/esp_wifi/include/esp_wifi.h b/components/esp_wifi/include/esp_wifi.h index 3f70a2be40..e8cdb30053 100644 --- a/components/esp_wifi/include/esp_wifi.h +++ b/components/esp_wifi/include/esp_wifi.h @@ -447,6 +447,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 * + * @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 * 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. @@ -884,9 +886,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 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}, - * {52, 13}, {56, 14}, {60, 15}, {66, 16}, {72, 18}, {78, 20}}. - * @attention 4. Param power unit is 0.25dBm, range is [8, 78] 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}} + * {52, 13}, {56, 14}, {60, 15}, {66, 16}, {72, 18}, {80, 20}}. + * @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, 79],72}, {[80, 84],80}}. * * @param power Maximum WiFi transmitting power. * From 9eb34fd153a07df2440bb0eeacebc0c5ffc761e6 Mon Sep 17 00:00:00 2001 From: ChenJianxing Date: Fri, 13 Nov 2020 16:11:11 +0800 Subject: [PATCH 2/4] esp_wifi: optimize phy version log --- components/esp_wifi/include/esp_phy_init.h | 7 +++++++ components/esp_wifi/src/phy_init.c | 3 +++ 2 files changed, 10 insertions(+) diff --git a/components/esp_wifi/include/esp_phy_init.h b/components/esp_wifi/include/esp_phy_init.h index 7c0d263b0d..70b55cbeb0 100644 --- a/components/esp_wifi/include/esp_phy_init.h +++ b/components/esp_wifi/include/esp_phy_init.h @@ -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 */ 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 } #endif diff --git a/components/esp_wifi/src/phy_init.c b/components/esp_wifi/src/phy_init.c index 2fb99c8919..a0421ac4a8 100644 --- a/components/esp_wifi/src/phy_init.c +++ b/components/esp_wifi/src/phy_init.c @@ -617,6 +617,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) { + 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*) calloc(sizeof(esp_phy_calibration_data_t), 1); if (cal_data == NULL) { From 155a7f816de3d48cd6c7eb7141c5f9b062ee03c8 Mon Sep 17 00:00:00 2001 From: xiehang Date: Tue, 5 Jan 2021 20:21:48 +0800 Subject: [PATCH 3/4] esp_wifi: ESP32 phy add [sections:phy_iram] --- components/esp32/ld/esp32_fragments.lf | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/components/esp32/ld/esp32_fragments.lf b/components/esp32/ld/esp32_fragments.lf index 83a282dcbc..5ef9e24efa 100644 --- a/components/esp32/ld/esp32_fragments.lf +++ b/components/esp32/ld/esp32_fragments.lf @@ -52,6 +52,10 @@ entries: entries: .wifirxiram+ +[sections:phy_iram] +entries: + .phyiram+ + [scheme:default] entries: text -> flash_text @@ -67,6 +71,7 @@ entries: rtc_bss -> rtc_bss wifi_iram -> flash_text wifi_rx_iram -> flash_text + phy_iram -> flash_text [scheme:rtc] entries: @@ -96,3 +101,7 @@ entries: [scheme:wifi_rx_iram] entries: wifi_rx_iram -> iram0_text + +[scheme:phy_iram] +entries: + phy_iram -> iram0_text From 9370b74ee0d9f703fbc9d889223dbd38953e279b Mon Sep 17 00:00:00 2001 From: xiehang Date: Thu, 24 Dec 2020 11:56:18 +0800 Subject: [PATCH 4/4] esp_wifi: Update WiFi lib 1. Add check CSA state before CSA timer process 2. Change wifi scan duration from 120ms to 100ms 3. Using deport reg instead of ahb 4. Check TID in ieee80211_recv_bar() 5. Revert to report specific reason code when receiving deauth during 4-way-handshark 6. Fix the bug that tx ampdu parameter is not from peer device 7. Refactor wifi_interface_t 8. Faster WiFi station connect improvement, avoid 100ms passive scan 9. Add FCS failed packets filter 10.Update esp32 phy lib to v4660 11.Fix csa timer issue 12.Fix country code last byte to space instead of NULL 13.Fix softap cannot forward A-MSDU 14.Fix max tx power to 20dBm 15.Fix the issue that the esp_wifi_sta_get_ap_info can't get country --- components/esp_wifi/include/esp_wifi_types.h | 9 +++++---- components/esp_wifi/lib_esp32 | 2 +- components/lwip/port/esp32/netif/wlanif.c | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/components/esp_wifi/include/esp_wifi_types.h b/components/esp_wifi/include/esp_wifi_types.h index 67cd3eaa6a..19b760b032 100644 --- a/components/esp_wifi/include/esp_wifi_types.h +++ b/components/esp_wifi/include/esp_wifi_types.h @@ -30,10 +30,10 @@ typedef enum { WIFI_MODE_MAX } wifi_mode_t; -typedef esp_interface_t wifi_interface_t; - -#define WIFI_IF_STA ESP_IF_WIFI_STA -#define WIFI_IF_AP ESP_IF_WIFI_AP +typedef enum { + WIFI_IF_STA = ESP_IF_WIFI_STA, + WIFI_IF_AP = ESP_IF_WIFI_AP, +} wifi_interface_t; typedef enum { WIFI_COUNTRY_POLICY_AUTO, /**< Country policy is auto, use the country info of AP to which the station is connected */ @@ -369,6 +369,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_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_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_WRAPPER (1<<23) /**< filter the control packets with subtype of Control Wrapper */ diff --git a/components/esp_wifi/lib_esp32 b/components/esp_wifi/lib_esp32 index 0e06d29161..7519503055 160000 --- a/components/esp_wifi/lib_esp32 +++ b/components/esp_wifi/lib_esp32 @@ -1 +1 @@ -Subproject commit 0e06d29161b555fc8bc912ba1fc12ae6d9f08163 +Subproject commit 751950305503bc0fdbf92c745ce969175cee845c diff --git a/components/lwip/port/esp32/netif/wlanif.c b/components/lwip/port/esp32/netif/wlanif.c index bb021f3d6a..1eb3dd31d5 100644 --- a/components/lwip/port/esp32/netif/wlanif.c +++ b/components/lwip/port/esp32/netif/wlanif.c @@ -135,7 +135,7 @@ low_level_output(struct netif *netif, struct pbuf *p) struct pbuf *q = p; esp_err_t ret; - if (wifi_if >= ESP_IF_MAX) { + if (wifi_if > WIFI_IF_AP) { return ERR_IF; }