From d8b2b9e77f772371137c586b104c4bb33c34611d Mon Sep 17 00:00:00 2001 From: muhaidong Date: Tue, 4 Apr 2023 11:59:30 +0800 Subject: [PATCH 01/14] esp_supplicant: remove wpa supplicant ROM source code copyrights --- docs/en/COPYRIGHT.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/en/COPYRIGHT.rst b/docs/en/COPYRIGHT.rst index e4fe078608..d9e29466ae 100644 --- a/docs/en/COPYRIGHT.rst +++ b/docs/en/COPYRIGHT.rst @@ -85,8 +85,6 @@ Espressif SoCs mask ROM hardware includes binaries compiled from portions of the * miniz_, by Rich Geldreich - placed into the public domain. -* `wpa_supplicant`_ Copyright (c) 2003-2022 Jouni Malinen and contributors and licensed under the BSD license. - * TJpgDec_ Copyright (C) 2011, ChaN, all right reserved. See below for license. * Parts of Zephyr RTOS USB stack: From 22c5a4befc10b326433cd3e33a52ec8cc725d58e Mon Sep 17 00:00:00 2001 From: muhaidong Date: Thu, 15 Jun 2023 10:57:45 +0800 Subject: [PATCH 02/14] fix(wifi): add esp_wifi and esp_coexist header files to Doxyfile --- docs/doxygen/Doxyfile | 8 ++++++++ docs/doxygen/Doxyfile_esp32c6 | 2 ++ docs/doxygen/Doxyfile_esp32h2 | 1 + 3 files changed, 11 insertions(+) diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index 318f83beab..dd7caa6f6e 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -27,6 +27,10 @@ INPUT = \ $(PROJECT_PATH)/components/bootloader_support/include/bootloader_random.h \ $(PROJECT_PATH)/components/bootloader_support/include/esp_app_format.h \ $(PROJECT_PATH)/components/bootloader_support/include/esp_flash_encrypt.h \ + $(PROJECT_PATH)/components/esp_coex/include/esp_coexist_adapter.h \ + $(PROJECT_PATH)/components/esp_coex/include/esp_coexist_internal.h \ + $(PROJECT_PATH)/components/esp_coex/include/esp_coexist.h \ + $(PROJECT_PATH)/components/esp_coex/include/esp_modem_wrapper.h \ $(PROJECT_PATH)/components/bt/common/api/include/api/esp_blufi_api.h \ $(PROJECT_PATH)/components/bt/esp_ble_mesh/api/core/include/esp_ble_mesh_common_api.h \ $(PROJECT_PATH)/components/bt/esp_ble_mesh/api/core/include/esp_ble_mesh_local_data_operation_api.h \ @@ -196,10 +200,14 @@ INPUT = \ $(PROJECT_PATH)/components/esp_system/include/esp_task_wdt.h \ $(PROJECT_PATH)/components/esp_system/include/esp_task.h \ $(PROJECT_PATH)/components/esp_timer/include/esp_timer.h \ + $(PROJECT_PATH)/components/esp_wifi/include/esp_mesh_internal.h \ $(PROJECT_PATH)/components/esp_wifi/include/esp_mesh.h \ $(PROJECT_PATH)/components/esp_wifi/include/esp_now.h \ $(PROJECT_PATH)/components/esp_wifi/include/esp_smartconfig.h \ + $(PROJECT_PATH)/components/esp_wifi/include/esp_wifi_ap_get_sta_list.h \ + $(PROJECT_PATH)/components/esp_wifi/include/esp_wifi_crypto_types.h \ $(PROJECT_PATH)/components/esp_wifi/include/esp_wifi_default.h \ + $(PROJECT_PATH)/components/esp_wifi/include/esp_wifi_netif.h \ $(PROJECT_PATH)/components/esp_wifi/include/esp_wifi_types.h \ $(PROJECT_PATH)/components/esp_wifi/include/esp_wifi.h \ $(PROJECT_PATH)/components/wpa_supplicant/esp_supplicant/include/esp_mbo.h \ diff --git a/docs/doxygen/Doxyfile_esp32c6 b/docs/doxygen/Doxyfile_esp32c6 index eda7cfa616..0ca3aed3bb 100644 --- a/docs/doxygen/Doxyfile_esp32c6 +++ b/docs/doxygen/Doxyfile_esp32c6 @@ -11,3 +11,5 @@ INPUT += \ $(PROJECT_PATH)/components/esp_phy/include/esp_phy_init.h \ $(PROJECT_PATH)/components/esp_phy/include/esp_phy_cert_test.h \ $(PROJECT_PATH)/components/ulp/ulp_common/include/ulp_common.h \ + $(PROJECT_PATH)/components/esp_wifi/include/esp_wifi_he_types.h \ + $(PROJECT_PATH)/components/esp_wifi/include/esp_wifi_he.h \ diff --git a/docs/doxygen/Doxyfile_esp32h2 b/docs/doxygen/Doxyfile_esp32h2 index 53a41d3ded..2d87047e8c 100644 --- a/docs/doxygen/Doxyfile_esp32h2 +++ b/docs/doxygen/Doxyfile_esp32h2 @@ -2,3 +2,4 @@ INPUT += \ $(PROJECT_PATH)/components/bt/include/esp32h2/include/esp_bt.h \ $(PROJECT_PATH)/components/esp_phy/include/esp_phy_init.h \ $(PROJECT_PATH)/components/esp_phy/include/esp_phy_cert_test.h \ + $(PROJECT_PATH)/components/esp_coex/include/esp_coex_i154.h \ From 868d52dcd1b81b9eff6ca0642479de80e59564a2 Mon Sep 17 00:00:00 2001 From: muhaidong Date: Tue, 1 Aug 2023 14:37:58 +0800 Subject: [PATCH 03/14] update(esp_coexist): update esp coexist header file --- components/esp_coex/esp32/esp_coex_adapter.c | 2 +- components/esp_coex/esp32c2/esp_coex_adapter.c | 2 +- components/esp_coex/esp32c3/esp_coex_adapter.c | 2 +- components/esp_coex/esp32c6/esp_coex_adapter.c | 2 +- components/esp_coex/esp32h2/esp_coex_adapter.c | 2 +- components/esp_coex/esp32s2/esp_coex_adapter.c | 2 +- components/esp_coex/esp32s3/esp_coex_adapter.c | 2 +- components/esp_coex/include/esp_coexist_internal.h | 2 +- .../esp_coex/include/{ => private}/esp_coexist_adapter.h | 0 components/esp_coex/test_md5/test_md5.sh | 2 +- components/esp_wifi/include/esp_wifi_ap_get_sta_list.h | 4 ---- docs/doxygen/Doxyfile | 1 - tools/ci/check_public_headers_exceptions.txt | 2 +- 13 files changed, 10 insertions(+), 15 deletions(-) rename components/esp_coex/include/{ => private}/esp_coexist_adapter.h (100%) diff --git a/components/esp_coex/esp32/esp_coex_adapter.c b/components/esp_coex/esp32/esp_coex_adapter.c index a120e11d53..d3b297036d 100644 --- a/components/esp_coex/esp32/esp_coex_adapter.c +++ b/components/esp_coex/esp32/esp_coex_adapter.c @@ -18,7 +18,7 @@ #include "freertos/portmacro.h" #include "esp_heap_caps.h" #include "esp_timer.h" -#include "esp_coexist_adapter.h" +#include "private/esp_coexist_adapter.h" #include "esp32/rom/ets_sys.h" #define TAG "esp_coex_adapter" diff --git a/components/esp_coex/esp32c2/esp_coex_adapter.c b/components/esp_coex/esp32c2/esp_coex_adapter.c index 84adc6f088..25805bc7ed 100644 --- a/components/esp_coex/esp32c2/esp_coex_adapter.c +++ b/components/esp_coex/esp32c2/esp_coex_adapter.c @@ -20,7 +20,7 @@ #include "esp_timer.h" #include "soc/rtc.h" #include "esp_private/esp_clk.h" -#include "esp_coexist_adapter.h" +#include "private/esp_coexist_adapter.h" #include "esp32c2/rom/ets_sys.h" #define TAG "esp_coex_adapter" diff --git a/components/esp_coex/esp32c3/esp_coex_adapter.c b/components/esp_coex/esp32c3/esp_coex_adapter.c index 005b858f4b..9dd290e5af 100644 --- a/components/esp_coex/esp32c3/esp_coex_adapter.c +++ b/components/esp_coex/esp32c3/esp_coex_adapter.c @@ -20,7 +20,7 @@ #include "esp_timer.h" #include "soc/rtc.h" #include "esp_private/esp_clk.h" -#include "esp_coexist_adapter.h" +#include "private/esp_coexist_adapter.h" #include "esp32c3/rom/ets_sys.h" #include "soc/system_reg.h" diff --git a/components/esp_coex/esp32c6/esp_coex_adapter.c b/components/esp_coex/esp32c6/esp_coex_adapter.c index e792c0ebad..1fde5726f8 100644 --- a/components/esp_coex/esp32c6/esp_coex_adapter.c +++ b/components/esp_coex/esp32c6/esp_coex_adapter.c @@ -20,7 +20,7 @@ #include "esp_timer.h" #include "soc/rtc.h" #include "esp_private/esp_clk.h" -#include "esp_coexist_adapter.h" +#include "private/esp_coexist_adapter.h" #include "esp32c6/rom/ets_sys.h" #define TAG "esp_coex_adapter" diff --git a/components/esp_coex/esp32h2/esp_coex_adapter.c b/components/esp_coex/esp32h2/esp_coex_adapter.c index 630d4745ad..6cdfdd9bd9 100644 --- a/components/esp_coex/esp32h2/esp_coex_adapter.c +++ b/components/esp_coex/esp32h2/esp_coex_adapter.c @@ -20,7 +20,7 @@ #include "esp_timer.h" #include "soc/rtc.h" #include "esp_private/esp_clk.h" -#include "esp_coexist_adapter.h" +#include "private/esp_coexist_adapter.h" #include "esp32c6/rom/ets_sys.h" #define TAG "esp_coex_adapter" diff --git a/components/esp_coex/esp32s2/esp_coex_adapter.c b/components/esp_coex/esp32s2/esp_coex_adapter.c index 9100bfabe0..c8d50258bf 100644 --- a/components/esp_coex/esp32s2/esp_coex_adapter.c +++ b/components/esp_coex/esp32s2/esp_coex_adapter.c @@ -20,7 +20,7 @@ #include "esp_timer.h" #include "soc/rtc.h" #include "esp_private/esp_clk.h" -#include "esp_coexist_adapter.h" +#include "private/esp_coexist_adapter.h" #include "esp32s2/rom/ets_sys.h" #define TAG "esp_coex_adapter" diff --git a/components/esp_coex/esp32s3/esp_coex_adapter.c b/components/esp_coex/esp32s3/esp_coex_adapter.c index bf277eb789..6aa42b1a98 100644 --- a/components/esp_coex/esp32s3/esp_coex_adapter.c +++ b/components/esp_coex/esp32s3/esp_coex_adapter.c @@ -20,7 +20,7 @@ #include "esp_timer.h" #include "soc/rtc.h" #include "esp_private/esp_clk.h" -#include "esp_coexist_adapter.h" +#include "private/esp_coexist_adapter.h" #include "esp32s3/rom/ets_sys.h" #include "soc/system_reg.h" diff --git a/components/esp_coex/include/esp_coexist_internal.h b/components/esp_coex/include/esp_coexist_internal.h index fbcd6ac79a..e2edb3705b 100644 --- a/components/esp_coex/include/esp_coexist_internal.h +++ b/components/esp_coex/include/esp_coexist_internal.h @@ -9,7 +9,7 @@ #include #include "esp_coexist.h" -#include "esp_coexist_adapter.h" +#include "private/esp_coexist_adapter.h" #ifdef __cplusplus extern "C" { diff --git a/components/esp_coex/include/esp_coexist_adapter.h b/components/esp_coex/include/private/esp_coexist_adapter.h similarity index 100% rename from components/esp_coex/include/esp_coexist_adapter.h rename to components/esp_coex/include/private/esp_coexist_adapter.h diff --git a/components/esp_coex/test_md5/test_md5.sh b/components/esp_coex/test_md5/test_md5.sh index 0b62e8e3e6..65a32ebb49 100755 --- a/components/esp_coex/test_md5/test_md5.sh +++ b/components/esp_coex/test_md5/test_md5.sh @@ -58,7 +58,7 @@ function check_md5() } echo "Checking libraries for target ${IDF_TARGET}..." -check_md5 ${IDF_PATH}/components/esp_coex/include/esp_coexist_adapter.h g_coex_adapter_funcs_md5 +check_md5 ${IDF_PATH}/components/esp_coex/include/private/esp_coexist_adapter.h g_coex_adapter_funcs_md5 case $IDF_TARGET in esp32c6|esp32h2) diff --git a/components/esp_wifi/include/esp_wifi_ap_get_sta_list.h b/components/esp_wifi/include/esp_wifi_ap_get_sta_list.h index c804ad1536..3b21ad8d9b 100644 --- a/components/esp_wifi/include/esp_wifi_ap_get_sta_list.h +++ b/components/esp_wifi/include/esp_wifi_ap_get_sta_list.h @@ -38,10 +38,6 @@ typedef struct { */ esp_err_t esp_wifi_ap_get_sta_list_with_ip(const wifi_sta_list_t *wifi_sta_list, wifi_sta_mac_ip_list_t *wifi_sta_ip_mac_list); -/** - * @} - */ - #ifdef __cplusplus } #endif diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index dd7caa6f6e..a162a1f45f 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -27,7 +27,6 @@ INPUT = \ $(PROJECT_PATH)/components/bootloader_support/include/bootloader_random.h \ $(PROJECT_PATH)/components/bootloader_support/include/esp_app_format.h \ $(PROJECT_PATH)/components/bootloader_support/include/esp_flash_encrypt.h \ - $(PROJECT_PATH)/components/esp_coex/include/esp_coexist_adapter.h \ $(PROJECT_PATH)/components/esp_coex/include/esp_coexist_internal.h \ $(PROJECT_PATH)/components/esp_coex/include/esp_coexist.h \ $(PROJECT_PATH)/components/esp_coex/include/esp_modem_wrapper.h \ diff --git a/tools/ci/check_public_headers_exceptions.txt b/tools/ci/check_public_headers_exceptions.txt index 39ddc16643..88de916a08 100644 --- a/tools/ci/check_public_headers_exceptions.txt +++ b/tools/ci/check_public_headers_exceptions.txt @@ -89,7 +89,7 @@ components/esp_hw_support/include/esp_private/esp_memprot_internal.h ### Here are the files that use CONFIG_XXX values but don't include sdkconfig.h # components/esp_wifi/include/esp_private/wifi_os_adapter.h -components/esp_coex/include/esp_coexist_adapter.h +components/esp_coex/include/private/esp_coexist_adapter.h components/esp_coex/include/esp_coex_i154.h ### To be fixed: headers that rely on implicit inclusion # From 6bf448ddc81c48b76f5cdf4655a14fdeedba74f8 Mon Sep 17 00:00:00 2001 From: muhaidong Date: Tue, 1 Aug 2023 15:14:53 +0800 Subject: [PATCH 04/14] update(wifi): update esp_wifi_crypto_types.h --- .../esp_wifi/include/esp_wifi_crypto_types.h | 242 +++++++++--------- 1 file changed, 121 insertions(+), 121 deletions(-) diff --git a/components/esp_wifi/include/esp_wifi_crypto_types.h b/components/esp_wifi/include/esp_wifi_crypto_types.h index 9eded75a76..250e84eeab 100644 --- a/components/esp_wifi/include/esp_wifi_crypto_types.h +++ b/components/esp_wifi/include/esp_wifi_crypto_types.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2017-2023 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -129,11 +129,11 @@ typedef int (*esp_sha256_prf_t)(const unsigned char *key, int key_len, const cha /** * @brief HMAC-MD5 over data buffer (RFC 2104)' * - * @key: Key for HMAC operations - * @key_len: Length of the key in bytes - * @data: Pointers to the data area - * @data_len: Length of the data area - * @mac: Buffer for the hash (16 bytes) + * @param key Key for HMAC operations + * @param key_len Length of the key in bytes + * @param dataPointers to the data area + * @param data_len Length of the data area + * @param mac Buffer for the hash (16 bytes) * Returns: 0 on success, -1 on failure */ typedef int (*esp_hmac_md5_t)(const unsigned char *key, unsigned int key_len, const unsigned char *data, @@ -142,12 +142,12 @@ typedef int (*esp_hmac_md5_t)(const unsigned char *key, unsigned int key_len, co /** * @brief HMAC-MD5 over data vector (RFC 2104) * - * @key: Key for HMAC operations - * @key_len: Length of the key in bytes - * @num_elem: Number of elements in the data vector - * @addr: Pointers to the data areas - * @len: Lengths of the data blocks - * @mac: Buffer for the hash (16 bytes) + * @param key Key for HMAC operations + * @param key_len Length of the key in bytes + * @param num_elem Number of elements in the data vector + * @param addr Pointers to the data areas + * @param len Lengths of the data blocks + * @param mac Buffer for the hash (16 bytes) * Returns: 0 on success, -1 on failure */ typedef int (*esp_hmac_md5_vector_t)(const unsigned char *key, unsigned int key_len, unsigned int num_elem, @@ -156,11 +156,11 @@ typedef int (*esp_hmac_md5_vector_t)(const unsigned char *key, unsigned int key_ /** * @brief HMAC-SHA1 over data buffer (RFC 2104) * - * @key: Key for HMAC operations - * @key_len: Length of the key in bytes - * @data: Pointers to the data area - * @data_len: Length of the data area - * @mac: Buffer for the hash (20 bytes) + * @param key Key for HMAC operations + * @param key_len Length of the key in bytes + * @param data Pointers to the data area + * @param data_len Length of the data area + * @param mac Buffer for the hash (20 bytes) * Returns: 0 on success, -1 of failure */ typedef int (*esp_hmac_sha1_t)(const unsigned char *key, unsigned int key_len, const unsigned char *data, @@ -169,12 +169,12 @@ typedef int (*esp_hmac_sha1_t)(const unsigned char *key, unsigned int key_len, c /** * @brief HMAC-SHA1 over data vector (RFC 2104) * - * @key: Key for HMAC operations - * @key_len: Length of the key in bytes - * @num_elem: Number of elements in the data vector - * @addr: Pointers to the data areas - * @len: Lengths of the data blocks - * @mac: Buffer for the hash (20 bytes) + * @param key Key for HMAC operations + * @param key_len Length of the key in bytes + * @param num_elem Number of elements in the data vector + * @param addr Pointers to the data areas + * @param len Lengths of the data blocks + * @param mac Buffer for the hash (20 bytes) * Returns: 0 on success, -1 on failure */ typedef int (*esp_hmac_sha1_vector_t)(const unsigned char *key, unsigned int key_len, unsigned int num_elem, @@ -183,13 +183,13 @@ typedef int (*esp_hmac_sha1_vector_t)(const unsigned char *key, unsigned int key /** * @brief SHA1-based Pseudo-Random Function (PRF) (IEEE 802.11i, 8.5.1.1) * - * @key: Key for PRF - * @key_len: Length of the key in bytes - * @label: A unique label for each purpose of the PRF - * @data: Extra data to bind into the key - * @data_len: Length of the data - * @buf: Buffer for the generated pseudo-random key - * @buf_len: Number of bytes of key to generate + * @param key Key for PRF + * @param key_len Length of the key in bytes + * @param label A unique label for each purpose of the PRF + * @param data Extra data to bind into the key + * @param data_len Length of the data + * @param buf Buffer for the generated pseudo-random key + * @param buf_len Number of bytes of key to generate * Returns: 0 on success, -1 of failure * * This function is used to derive new, cryptographically separate keys from a @@ -201,10 +201,10 @@ typedef int (*esp_sha1_prf_t)(const unsigned char *key, unsigned int key_len, co /** * @brief SHA-1 hash for data vector * - * @num_elem: Number of elements in the data vector - * @addr: Pointers to the data areas - * @len: Lengths of the data blocks - * @mac: Buffer for the hash + * @param num_elem Number of elements in the data vector + * @param addr Pointers to the data areas + * @param len Lengths of the data blocks + * @param mac Buffer for the hash * Returns: 0 on success, -1 on failure */ typedef int (*esp_sha1_vector_t)(unsigned int num_elem, const unsigned char *addr[], const unsigned int *len, @@ -213,12 +213,12 @@ typedef int (*esp_sha1_vector_t)(unsigned int num_elem, const unsigned char *add /** * @brief SHA1-based key derivation function (PBKDF2) for IEEE 802.11i * - * @passphrase: ASCII passphrase - * @ssid: SSID - * @ssid_len: SSID length in bytes - * @iterations: Number of iterations to run - * @buf: Buffer for the generated key - * @buflen: Length of the buffer in bytes + * @param passphrase ASCII passphrase + * @param ssid SSID + * @param ssid_len SSID length in bytes + * @param iterations Number of iterations to run + * @param buf Buffer for the generated key + * @param buflen Length of the buffer in bytes * Returns: 0 on success, -1 of failure * * This function is used to derive PSK for WPA-PSK. For this protocol, @@ -231,11 +231,11 @@ typedef int (*esp_pbkdf2_sha1_t)(const char *passphrase, const char *ssid, unsig /** * @brief XOR RC4 stream to given data with skip-stream-start * - * @key: RC4 key - * @keylen: RC4 key length - * @skip: number of bytes to skip from the beginning of the RC4 stream - * @data: data to be XOR'ed with RC4 stream - * @data_len: buf length + * @param key RC4 key + * @param keylen RC4 key length + * @param skip number of bytes to skip from the beginning of the RC4 stream + * @param data data to be XOR'ed with RC4 stream + * @param data_len buf length * Returns: 0 on success, -1 on failure * * Generate RC4 pseudo random stream for the given key, skip beginning of the @@ -248,10 +248,10 @@ typedef int (*esp_rc4_skip_t)(const unsigned char *key, unsigned int keylen, uns /** * @brief MD5 hash for data vector * - * @num_elem: Number of elements in the data vector - * @addr: Pointers to the data areas - * @len: Lengths of the data blocks - * @mac: Buffer for the hash + * @param num_elem Number of elements in the data vector + * @param addr Pointers to the data areas + * @param len Lengths of the data blocks + * @param mac Buffer for the hash * Returns: 0 on success, -1 on failure */ typedef int (*esp_md5_vector_t)(unsigned int num_elem, const unsigned char *addr[], const unsigned int *len, @@ -260,17 +260,17 @@ typedef int (*esp_md5_vector_t)(unsigned int num_elem, const unsigned char *addr /** * @brief Encrypt one AES block * - * @ctx: Context pointer from aes_encrypt_init() - * @plain: Plaintext data to be encrypted (16 bytes) - * @crypt: Buffer for the encrypted data (16 bytes) + * @param ctx Context pointer from aes_encrypt_init() + * @param plain Plaintext data to be encrypted (16 bytes) + * @param crypt Buffer for the encrypted data (16 bytes) */ typedef void (*esp_aes_encrypt_t)(void *ctx, const unsigned char *plain, unsigned char *crypt); /** * @brief Initialize AES for encryption * - * @key: Encryption key - * @len: Key length in bytes (usually 16, i.e., 128 bits) + * @param key Encryption key + * @param len Key length in bytes (usually 16, i.e., 128 bits) * Returns: Pointer to context data or %NULL on failure */ typedef void * (*esp_aes_encrypt_init_t)(const unsigned char *key, unsigned int len); @@ -278,24 +278,24 @@ typedef void * (*esp_aes_encrypt_init_t)(const unsigned char *key, unsigned int /** * @brief Deinitialize AES encryption * - * @ctx: Context pointer from aes_encrypt_init() + * @param ctx Context pointer from aes_encrypt_init() */ typedef void (*esp_aes_encrypt_deinit_t)(void *ctx); /** * @brief Decrypt one AES block * - * @ctx: Context pointer from aes_encrypt_init() - * @crypt: Encrypted data (16 bytes) - * @plain: Buffer for the decrypted data (16 bytes) + * @param ctx Context pointer from aes_encrypt_init() + * @param crypt Encrypted data (16 bytes) + * @param plain Buffer for the decrypted data (16 bytes) */ typedef void (*esp_aes_decrypt_t)(void *ctx, const unsigned char *crypt, unsigned char *plain); /** * @brief Initialize AES for decryption * - * @key: Decryption key - * @len: Key length in bytes (usually 16, i.e., 128 bits) + * @param key Decryption key + * @param len Key length in bytes (usually 16, i.e., 128 bits) * Returns: Pointer to context data or %NULL on failure */ typedef void * (*esp_aes_decrypt_init_t)(const unsigned char *key, unsigned int len); @@ -303,17 +303,17 @@ typedef void * (*esp_aes_decrypt_init_t)(const unsigned char *key, unsigned int /** * @brief Deinitialize AES decryption * - * @ctx: Context pointer from aes_encrypt_init() + * @param ctx Context pointer from aes_encrypt_init() */ typedef void (*esp_aes_decrypt_deinit_t)(void *ctx); /** * @brief One-Key CBC MAC (OMAC1) hash with AES-128 for MIC computation * - * @key: 128-bit key for the hash operation - * @data: Data buffer for which a MIC is computed - * @data_len: Length of data buffer in bytes - * @mic: Buffer for MIC (128 bits, i.e., 16 bytes) + * @param key 128-bit key for the hash operation + * @param data Data buffer for which a MIC is computed + * @param data_len Length of data buffer in bytes + * @param mic Buffer for MIC (128 bits, i.e., 16 bytes) * Returns: 0 on success, -1 on failure */ typedef int (*esp_omac1_aes_128_t)(const uint8_t *key, const uint8_t *data, size_t data_len, @@ -323,12 +323,12 @@ typedef int (*esp_omac1_aes_128_t)(const uint8_t *key, const uint8_t *data, size * @brief Decrypt data using CCMP (Counter Mode CBC-MAC Protocol OR * Counter Mode Cipher Block Chaining Message Authentication * Code Protocol) which is used in IEEE 802.11i RSN standard. - * @tk: 128-bit Temporal Key for obtained during 4-way handshake - * @hdr: Pointer to IEEE802.11 frame headeri needed for AAD - * @data: Pointer to encrypted data buffer - * @data_len: Encrypted data length in bytes - * @decrypted_len: Length of decrypted data - * @espnow_pkt: Indicates if it's an ESPNOW packet + * @param tk 128-bit Temporal Key for obtained during 4-way handshake + * @param hdr Pointer to IEEE802.11 frame headeri needed for AAD + * @param data Pointer to encrypted data buffer + * @param data_len Encrypted data length in bytes + * @param decrypted_len Length of decrypted data + * @param espnow_pkt Indicates if it's an ESPNOW packet * Returns: Pointer to decrypted data on success, NULL on failure */ typedef uint8_t * (*esp_ccmp_decrypt_t)(const uint8_t *tk, const uint8_t *ieee80211_hdr, @@ -339,13 +339,13 @@ typedef uint8_t * (*esp_ccmp_decrypt_t)(const uint8_t *tk, const uint8_t *ieee80 * @brief Encrypt data using CCMP (Counter Mode CBC-MAC Protocol OR * Counter Mode Cipher Block Chaining Message Authentication * Code Protocol) which is used in IEEE 802.11i RSN standard. - * @tk: 128-bit Temporal Key for obtained during 4-way handshake - * @frame: Pointer to IEEE802.11 frame including header - * @len: Length of the frame including header - * @hdrlen: Length of the header - * @pn: Packet Number counter - * @keyid: Key ID to be mentioned in CCMP Vector - * @encrypted_len: Length of the encrypted frame including header + * @param tk 128-bit Temporal Key for obtained during 4-way handshake + * @param frame Pointer to IEEE802.11 frame including header + * @param len Length of the frame including header + * @param hdrlen Length of the header + * @param pn Packet Number counter + * @param keyid Key ID to be mentioned in CCMP Vector + * @param encrypted_len Length of the encrypted frame including header */ typedef uint8_t * (*esp_ccmp_encrypt_t)(const uint8_t *tk, uint8_t *frame, size_t len, size_t hdrlen, uint8_t *pn, int keyid, size_t *encrypted_len); @@ -353,13 +353,13 @@ typedef uint8_t * (*esp_ccmp_encrypt_t)(const uint8_t *tk, uint8_t *frame, size_ /** * @brief One-Key GMAC hash with AES for MIC computation * - * @key: key for the hash operation - * @keylen: key length - * @iv: initialization vector - * @iv_len: initialization vector length - * @aad: aad - * @aad_len: aad length - * @mic: Buffer for MIC (128 bits, i.e., 16 bytes) + * @param key key for the hash operation + * @param keylen key length + * @param iv initialization vector + * @param iv_len initialization vector length + * @param aad aad + * @param aad_len aad length + * @param mic Buffer for MIC (128 bits, i.e., 16 bytes) * Returns: 0 on success, -1 on failure */ typedef int (*esp_aes_gmac_t)(const uint8_t *key, size_t keylen, const uint8_t *iv, size_t iv_len, @@ -367,10 +367,10 @@ typedef int (*esp_aes_gmac_t)(const uint8_t *key, size_t keylen, const uint8_t * /** * @brief SHA256 hash for data vector - * @num_elem: Number of elements in the data vector - * @addr: Pointers to the data areas - * @len: Lengths of the data blocks - * @mac: Buffer for the hash + * @param num_elem Number of elements in the data vector + * @param addr Pointers to the data areas + * @param len Lengths of the data blocks + * @param mac Buffer for the hash * Returns: 0 on success, -1 on failure */ typedef int (*esp_sha256_vector_t)(size_t num_elem, const uint8_t *addr[], const size_t *len, uint8_t *buf); @@ -378,9 +378,9 @@ typedef int (*esp_sha256_vector_t)(size_t num_elem, const uint8_t *addr[], const /** * @brief CRC32 value in little endian. * - * @param crc: Initial CRC value (result of last calculation or 0 for the first time) - * @param buf: Data buffer that used to calculate the CRC value - * @param len: Length of the data buffer + * @param crc Initial CRC value (result of last calculation or 0 for the first time) + * @param buf Data buffer that used to calculate the CRC value + * @param len Length of the data buffer * @return CRC32 value */ typedef uint32_t (*esp_crc32_le_t)(uint32_t crc, uint8_t const *buf, uint32_t len); @@ -391,35 +391,35 @@ typedef uint32_t (*esp_crc32_le_t)(uint32_t crc, uint8_t const *buf, uint32_t le * hardware. */ typedef struct { - uint32_t size; - uint32_t version; - esp_aes_wrap_t aes_wrap; /**< station connect function used when send EAPOL frame */ - esp_aes_unwrap_t aes_unwrap; /**< station connect function used when decrypt key data */ - esp_hmac_sha256_vector_t hmac_sha256_vector; /**< station connect function used when check MIC */ - esp_sha256_prf_t sha256_prf; /**< station connect function used when check MIC */ - esp_hmac_md5_t hmac_md5; - esp_hmac_md5_vector_t hamc_md5_vector; - esp_hmac_sha1_t hmac_sha1; - esp_hmac_sha1_vector_t hmac_sha1_vector; - esp_sha1_prf_t sha1_prf; - esp_sha1_vector_t sha1_vector; - esp_pbkdf2_sha1_t pbkdf2_sha1; - esp_rc4_skip_t rc4_skip; - esp_md5_vector_t md5_vector; - esp_aes_encrypt_t aes_encrypt; - esp_aes_encrypt_init_t aes_encrypt_init; - esp_aes_encrypt_deinit_t aes_encrypt_deinit; - esp_aes_decrypt_t aes_decrypt; - esp_aes_decrypt_init_t aes_decrypt_init; - esp_aes_decrypt_deinit_t aes_decrypt_deinit; - esp_aes_128_encrypt_t aes_128_encrypt; - esp_aes_128_decrypt_t aes_128_decrypt; - esp_omac1_aes_128_t omac1_aes_128; - esp_ccmp_decrypt_t ccmp_decrypt; - esp_ccmp_encrypt_t ccmp_encrypt; - esp_aes_gmac_t aes_gmac; - esp_sha256_vector_t sha256_vector; - esp_crc32_le_t crc32; + uint32_t size; /**< The crypto callback function structure size */ + uint32_t version; /**< The crypto callback function structure version */ + esp_aes_wrap_t aes_wrap; /**< The AES callback function when do STA connect */ + esp_aes_unwrap_t aes_unwrap; /**< The AES callback function when do STA connect */ + esp_hmac_sha256_vector_t hmac_sha256_vector; /**< The SHA256 callback function when do WPS connect */ + esp_sha256_prf_t sha256_prf; /**< The AES callback function when do STA connect */ + esp_hmac_md5_t hmac_md5; /**< HMAC-MD5 over data buffer (RFC 2104) */ + esp_hmac_md5_vector_t hamc_md5_vector; /**< HMAC-MD5 over data vector (RFC 2104) */ + esp_hmac_sha1_t hmac_sha1; /**< HMAC-SHA1 over data buffer (RFC 2104) */ + esp_hmac_sha1_vector_t hmac_sha1_vector; /**< HMAC-SHA1 over data vector (RFC 2104) */ + esp_sha1_prf_t sha1_prf; /**< SHA1-based Pseudo-Random Function (PRF) (IEEE 802.11i, 8.5.1.1) */ + esp_sha1_vector_t sha1_vector; /**< SHA-1 hash for data vector */ + esp_pbkdf2_sha1_t pbkdf2_sha1; /**< SHA1-based key derivation function (PBKDF2) for IEEE 802.11i */ + esp_rc4_skip_t rc4_skip; /**< XOR RC4 stream to given data with skip-stream-start */ + esp_md5_vector_t md5_vector; /**< MD5 hash for data vector */ + esp_aes_encrypt_t aes_encrypt; /**< Encrypt one AES block */ + esp_aes_encrypt_init_t aes_encrypt_init; /**< Initialize AES for encryption */ + esp_aes_encrypt_deinit_t aes_encrypt_deinit; /**< Deinitialize AES encryption */ + esp_aes_decrypt_t aes_decrypt; /**< Decrypt one AES block */ + esp_aes_decrypt_init_t aes_decrypt_init; /**< Initialize AES for decryption */ + esp_aes_decrypt_deinit_t aes_decrypt_deinit; /**< Deinitialize AES decryption */ + esp_aes_128_encrypt_t aes_128_encrypt; /**< The AES callback function when do WPS connect */ + esp_aes_128_decrypt_t aes_128_decrypt; /**< The AES callback function when do WPS connect */ + esp_omac1_aes_128_t omac1_aes_128; /**< One-Key CBC MAC (OMAC1) hash with AES-128 for MIC computation */ + esp_ccmp_decrypt_t ccmp_decrypt; /**< Decrypt data using CCMP */ + esp_ccmp_encrypt_t ccmp_encrypt; /**< encrypt data using CCMP */ + esp_aes_gmac_t aes_gmac; /**< One-Key GMAC hash with AES for MIC computation */ + esp_sha256_vector_t sha256_vector; /**< SHA256 hash for data vector */ + esp_crc32_le_t crc32; /**< CRC32 value in little endian */ }wpa_crypto_funcs_t; /** From 6cabcc820674efabff27563512ce3de1c9ad247a Mon Sep 17 00:00:00 2001 From: muhaidong Date: Tue, 1 Aug 2023 15:27:56 +0800 Subject: [PATCH 05/14] docs(esp_mesh): update esp_mesh_internal.h --- .../esp_coex/include/esp_coexist_internal.h | 3 +- .../esp_wifi/include/esp_mesh_internal.h | 65 ++++++++++++------- .../include/esp_wifi_ap_get_sta_list.h | 2 +- components/esp_wifi/include/esp_wifi_he.h | 2 +- 4 files changed, 44 insertions(+), 28 deletions(-) diff --git a/components/esp_coex/include/esp_coexist_internal.h b/components/esp_coex/include/esp_coexist_internal.h index e2edb3705b..15fe35cc1b 100644 --- a/components/esp_coex/include/esp_coexist_internal.h +++ b/components/esp_coex/include/esp_coexist_internal.h @@ -165,7 +165,6 @@ int coex_register_bt_cb(coex_func_cb_t callback); * @brief To acquire the spin-lock used in resetting Bluetooth baseband. * This function is only used to workaround ESP32 hardware issue. * - * @param callback: callback function registered to coexistence module * @return : value of the spinlock to be restored */ uint32_t coex_bb_reset_lock(void); @@ -260,7 +259,7 @@ void * coex_schm_curr_phase_get(void); /** * @brief Set current coexistence scheme phase index. * - * @param interval : Coexistence scheme phase index + * @param idx : Coexistence scheme phase index * @return : 0 - success, other - failed */ int coex_schm_curr_phase_idx_set(int idx); diff --git a/components/esp_wifi/include/esp_mesh_internal.h b/components/esp_wifi/include/esp_mesh_internal.h index ad54ce8703..371e1e6064 100644 --- a/components/esp_wifi/include/esp_mesh_internal.h +++ b/components/esp_wifi/include/esp_mesh_internal.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2017-2021 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2017-2023 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -25,6 +25,9 @@ extern "C" { /******************************************************* * Structures *******************************************************/ +/** + * @brief Mesh attempts + */ typedef struct { int scan; /**< minimum scan times before being a root, default:10 */ int vote; /**< max vote times in self-healing, default:1000 */ @@ -33,20 +36,26 @@ typedef struct { int monitor_ie; /**< acceptable times of parent networking IE change before update its own networking IE. default:3 */ } mesh_attempts_t; +/** + * @brief Mesh switch parent + */ typedef struct { - int duration_ms; /* parent weak RSSI monitor duration, if the RSSI continues to be weak during this duration_ms, + int duration_ms; /**< parent weak RSSI monitor duration, if the RSSI continues to be weak during this duration_ms, device will search for a new parent. */ - int cnx_rssi; /* RSSI threshold for keeping a good connection with parent. + int cnx_rssi; /**< RSSI threshold for keeping a good connection with parent. If set a value greater than -120 dBm, a timer will be armed to monitor parent RSSI at a period time of duration_ms. */ - int select_rssi; /* RSSI threshold for parent selection. It should be a value greater than switch_rssi. */ - int switch_rssi; /* Disassociate with current parent and switch to a new parent when the RSSI is greater than this set threshold. */ - int backoff_rssi; /* RSSI threshold for connecting to the root */ + int select_rssi; /**< RSSI threshold for parent selection. It should be a value greater than switch_rssi. */ + int switch_rssi; /**< Disassociate with current parent and switch to a new parent when the RSSI is greater than this set threshold. */ + int backoff_rssi; /**< RSSI threshold for connecting to the root */ } mesh_switch_parent_t; +/** + * @brief Mesh rssi threshold + */ typedef struct { - int high; - int medium; - int low; + int high; /**< high rssi threshold */ + int medium; /**< medium rssi threshold */ + int low; /**< low rssi threshold */ } mesh_rssi_threshold_t; /** @@ -58,7 +67,7 @@ typedef struct { uint8_t len; /**< element length */ uint8_t oui[3]; /**< organization identifier */ /**< mesh networking IE content */ - uint8_t type; /** ESP defined IE type */ + uint8_t type; /**< ESP defined IE type */ uint8_t encrypted : 1; /**< whether mesh networking IE is encrypted */ uint8_t version : 7; /**< mesh networking IE version */ /**< content */ @@ -89,14 +98,20 @@ typedef struct { uint8_t toDS; /**< toDS state */ } __attribute__((packed)) mesh_assoc_t; +/** + * @brief Mesh chain layer + */ typedef struct { - uint16_t layer_cap; - uint16_t layer; + uint16_t layer_cap; /**< max layer */ + uint16_t layer; /**< current layer */ } mesh_chain_layer_t; +/** + * @brief Mesh chain assoc + */ typedef struct { - mesh_assoc_t tree; - mesh_chain_layer_t chain; + mesh_assoc_t tree; /**< tree top, mesh_assoc IE */ + mesh_chain_layer_t chain; /**< chain top, mesh_assoc IE*/ } __attribute__((packed)) mesh_chain_assoc_t; /* mesh max connections */ @@ -106,13 +121,13 @@ typedef struct { * @brief Mesh PS duties */ typedef struct { - uint8_t device; - uint8_t parent; + uint8_t device; /**< device power save duty*/ + uint8_t parent; /**< parent power save duty*/ struct { - bool used; - uint8_t duty; - uint8_t mac[6]; - } child[MESH_MAX_CONNECTIONS]; + bool used; /**< used */ + uint8_t duty; /**< duty */ + uint8_t mac[6]; /**< mac */ + } child[MESH_MAX_CONNECTIONS]; /**< child */ } esp_mesh_ps_duties_t; /******************************************************* @@ -121,7 +136,7 @@ typedef struct { /** * @brief Set mesh softAP beacon interval * - * @param[in] interval beacon interval (msecs) (100 msecs ~ 60000 msecs) + * @param[in] interval_ms beacon interval (msecs) (100 msecs ~ 60000 msecs) * * @return * - ESP_OK @@ -133,7 +148,7 @@ esp_err_t esp_mesh_set_beacon_interval(int interval_ms); /** * @brief Get mesh softAP beacon interval * - * @param[out] interval beacon interval (msecs) + * @param[out] interval_ms beacon interval (msecs) * * @return * - ESP_OK @@ -242,7 +257,7 @@ esp_err_t esp_mesh_print_rxQ_waiting(void); /** * @brief Set passive scan time * - * @param[in] interval_ms passive scan time (msecs) + * @param[in] time_ms passive scan time (msecs) * * @return * - ESP_OK @@ -283,7 +298,9 @@ esp_err_t esp_mesh_set_announce_interval(int short_ms, int long_ms); esp_err_t esp_mesh_get_announce_interval(int *short_ms, int *long_ms); /** - * @brief Get the running duties of device, parent and children + * @brief Get the running duties of device, parent and children + * + * @param[out] ps_duties ps duties * * @return * - ESP_OK diff --git a/components/esp_wifi/include/esp_wifi_ap_get_sta_list.h b/components/esp_wifi/include/esp_wifi_ap_get_sta_list.h index 3b21ad8d9b..7a4d167b64 100644 --- a/components/esp_wifi/include/esp_wifi_ap_get_sta_list.h +++ b/components/esp_wifi/include/esp_wifi_ap_get_sta_list.h @@ -29,7 +29,7 @@ typedef struct { * @warning This API works only for the default Wi-Fi AP interface, i.e. esp-netif with key="WIFI_AP_DEF" * * @param[in] wifi_sta_list Wi-Fi station info list, returned from esp_wifi_ap_get_sta_list() - * @param[out] netif_sta_list IP layer station info list, corresponding to MAC addresses provided in wifi_sta_list + * @param[out] wifi_sta_ip_mac_list IP layer station info list, corresponding to MAC addresses provided in wifi_sta_list * * @return * - ESP_OK diff --git a/components/esp_wifi/include/esp_wifi_he.h b/components/esp_wifi/include/esp_wifi_he.h index a318d36d2b..67880654ab 100644 --- a/components/esp_wifi/include/esp_wifi_he.h +++ b/components/esp_wifi/include/esp_wifi_he.h @@ -25,7 +25,7 @@ extern "C" { * @attention Support at most 8 TWT agreements, otherwise ESP_ERR_WIFI_TWT_FULL will be returned. * Support sleep time up to (1 << 35) us. * - * @param[in/out] setup_config pointer to itwt setup config structure. + * @param[in,out] setup_config pointer to itwt setup config structure. * * @return * - ESP_OK: succeed From 2b6feac67c03490e49f92749b6e11d6c5a63fe6d Mon Sep 17 00:00:00 2001 From: muhaidong Date: Wed, 9 Aug 2023 17:41:27 +0800 Subject: [PATCH 06/14] change(wifi): update esp_coexist_internal.h and esp_modem_wrapper.h --- components/bt/controller/esp32/bt.c | 2 +- components/bt/controller/esp32c2/bt.c | 2 +- components/bt/controller/esp32c3/bt.c | 2 +- components/bt/controller/esp32c6/bt.c | 2 +- components/bt/controller/esp32h2/bt.c | 2 +- .../{ => private}/esp_coexist_internal.h | 0 .../include/{ => private}/esp_modem_wrapper.h | 0 components/esp_coex/src/coexist.c | 2 +- components/esp_system/startup.c | 2 +- components/esp_wifi/esp32/esp_adapter.c | 4 +- components/esp_wifi/esp32c2/esp_adapter.c | 4 +- components/esp_wifi/esp32c3/esp_adapter.c | 4 +- components/esp_wifi/esp32c6/esp_adapter.c | 4 +- components/esp_wifi/esp32s2/esp_adapter.c | 4 +- components/esp_wifi/esp32s3/esp_adapter.c | 4 +- .../esp_wifi/include/esp_wifi_crypto_types.h | 114 +++++++++--------- components/esp_wifi/src/wifi_init.c | 2 +- docs/doxygen/Doxyfile | 2 - 18 files changed, 77 insertions(+), 79 deletions(-) rename components/esp_coex/include/{ => private}/esp_coexist_internal.h (100%) rename components/esp_coex/include/{ => private}/esp_modem_wrapper.h (100%) diff --git a/components/bt/controller/esp32/bt.c b/components/bt/controller/esp32/bt.c index 8fdad125e7..2a8c553b9e 100644 --- a/components/bt/controller/esp32/bt.c +++ b/components/bt/controller/esp32/bt.c @@ -35,7 +35,7 @@ #include "soc/rtc.h" #include "soc/soc_memory_layout.h" #include "soc/dport_reg.h" -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #include "esp_timer.h" #if !CONFIG_FREERTOS_UNICORE #include "esp_ipc.h" diff --git a/components/bt/controller/esp32c2/bt.c b/components/bt/controller/esp32c2/bt.c index 0e1622ab80..c78cef1e2b 100644 --- a/components/bt/controller/esp32c2/bt.c +++ b/components/bt/controller/esp32c2/bt.c @@ -24,7 +24,7 @@ #endif #if CONFIG_SW_COEXIST_ENABLE -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #endif #include "nimble/nimble_npl_os.h" diff --git a/components/bt/controller/esp32c3/bt.c b/components/bt/controller/esp32c3/bt.c index 8c2ed98d33..66764b5b42 100644 --- a/components/bt/controller/esp32c3/bt.c +++ b/components/bt/controller/esp32c3/bt.c @@ -34,7 +34,7 @@ #include "soc/rtc.h" #include "soc/rtc_cntl_reg.h" #include "soc/soc_memory_layout.h" -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #include "esp_timer.h" #include "esp_sleep.h" #include "esp_rom_sys.h" diff --git a/components/bt/controller/esp32c6/bt.c b/components/bt/controller/esp32c6/bt.c index 0643b525fe..a58c92c99b 100644 --- a/components/bt/controller/esp32c6/bt.c +++ b/components/bt/controller/esp32c6/bt.c @@ -24,7 +24,7 @@ #endif // ESP_PLATFORM #if CONFIG_SW_COEXIST_ENABLE -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #endif // CONFIG_SW_COEXIST_ENABLE #include "nimble/nimble_npl_os.h" diff --git a/components/bt/controller/esp32h2/bt.c b/components/bt/controller/esp32h2/bt.c index b3361bbb69..636a9bf032 100644 --- a/components/bt/controller/esp32h2/bt.c +++ b/components/bt/controller/esp32h2/bt.c @@ -24,7 +24,7 @@ #endif // ESP_PLATFORM #if CONFIG_SW_COEXIST_ENABLE -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #endif // CONFIG_SW_COEXIST_ENABLE #include "nimble/nimble_npl_os.h" diff --git a/components/esp_coex/include/esp_coexist_internal.h b/components/esp_coex/include/private/esp_coexist_internal.h similarity index 100% rename from components/esp_coex/include/esp_coexist_internal.h rename to components/esp_coex/include/private/esp_coexist_internal.h diff --git a/components/esp_coex/include/esp_modem_wrapper.h b/components/esp_coex/include/private/esp_modem_wrapper.h similarity index 100% rename from components/esp_coex/include/esp_modem_wrapper.h rename to components/esp_coex/include/private/esp_modem_wrapper.h diff --git a/components/esp_coex/src/coexist.c b/components/esp_coex/src/coexist.c index 25beefe4cf..3605246e8a 100644 --- a/components/esp_coex/src/coexist.c +++ b/components/esp_coex/src/coexist.c @@ -5,7 +5,7 @@ */ #include "esp_coexist.h" -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #if CONFIG_EXTERNAL_COEX_ENABLE #include "esp_log.h" diff --git a/components/esp_system/startup.c b/components/esp_system/startup.c index 6db1f77d02..3a96492503 100644 --- a/components/esp_system/startup.c +++ b/components/esp_system/startup.c @@ -37,7 +37,7 @@ /***********************************************/ // Headers for other components init functions #if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #endif #if __has_include("esp_app_desc.h") diff --git a/components/esp_wifi/esp32/esp_adapter.c b/components/esp_wifi/esp32/esp_adapter.c index 62d44c53bc..a1d6914a87 100644 --- a/components/esp_wifi/esp32/esp_adapter.c +++ b/components/esp_wifi/esp32/esp_adapter.c @@ -39,11 +39,11 @@ #include "nvs.h" #include "os.h" #include "esp_smartconfig.h" -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #include "dport_access.h" #include "esp_rom_sys.h" #include "esp32/rom/ets_sys.h" -#include "esp_modem_wrapper.h" +#include "private/esp_modem_wrapper.h" #define TAG "esp_adapter" diff --git a/components/esp_wifi/esp32c2/esp_adapter.c b/components/esp_wifi/esp32c2/esp_adapter.c index d5e1772f8b..70a8dbf924 100644 --- a/components/esp_wifi/esp32c2/esp_adapter.c +++ b/components/esp_wifi/esp32c2/esp_adapter.c @@ -40,9 +40,9 @@ #include "nvs.h" #include "os.h" #include "esp_smartconfig.h" -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #include "esp32c2/rom/ets_sys.h" -#include "esp_modem_wrapper.h" +#include "private/esp_modem_wrapper.h" #define TAG "esp_adapter" diff --git a/components/esp_wifi/esp32c3/esp_adapter.c b/components/esp_wifi/esp32c3/esp_adapter.c index 18fefbcea1..d48431ab32 100644 --- a/components/esp_wifi/esp32c3/esp_adapter.c +++ b/components/esp_wifi/esp32c3/esp_adapter.c @@ -41,9 +41,9 @@ #include "nvs.h" #include "os.h" #include "esp_smartconfig.h" -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #include "esp32c3/rom/ets_sys.h" -#include "esp_modem_wrapper.h" +#include "private/esp_modem_wrapper.h" #define TAG "esp_adapter" diff --git a/components/esp_wifi/esp32c6/esp_adapter.c b/components/esp_wifi/esp32c6/esp_adapter.c index 8c55440ffa..f61e946f2f 100644 --- a/components/esp_wifi/esp32c6/esp_adapter.c +++ b/components/esp_wifi/esp32c6/esp_adapter.c @@ -40,9 +40,9 @@ #include "nvs.h" #include "os.h" #include "esp_smartconfig.h" -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #include "esp32c6/rom/ets_sys.h" -#include "esp_modem_wrapper.h" +#include "private/esp_modem_wrapper.h" #include "esp_private/esp_modem_clock.h" #if SOC_PM_MODEM_RETENTION_BY_REGDMA diff --git a/components/esp_wifi/esp32s2/esp_adapter.c b/components/esp_wifi/esp32s2/esp_adapter.c index 4eb6db306e..b0672498cc 100644 --- a/components/esp_wifi/esp32s2/esp_adapter.c +++ b/components/esp_wifi/esp32s2/esp_adapter.c @@ -41,10 +41,10 @@ #include "nvs.h" #include "os.h" #include "esp_smartconfig.h" -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #include "esp_rom_sys.h" #include "esp32s2/rom/ets_sys.h" -#include "esp_modem_wrapper.h" +#include "private/esp_modem_wrapper.h" #define TAG "esp_adapter" diff --git a/components/esp_wifi/esp32s3/esp_adapter.c b/components/esp_wifi/esp32s3/esp_adapter.c index 3fbb3d5ec1..e6ca995af7 100644 --- a/components/esp_wifi/esp32s3/esp_adapter.c +++ b/components/esp_wifi/esp32s3/esp_adapter.c @@ -42,10 +42,10 @@ #include "nvs.h" #include "os.h" #include "esp_smartconfig.h" -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #include "esp_rom_sys.h" #include "esp32s3/rom/ets_sys.h" -#include "esp_modem_wrapper.h" +#include "private/esp_modem_wrapper.h" #define TAG "esp_adapter" diff --git a/components/esp_wifi/include/esp_wifi_crypto_types.h b/components/esp_wifi/include/esp_wifi_crypto_types.h index 250e84eeab..6a54445b92 100644 --- a/components/esp_wifi/include/esp_wifi_crypto_types.h +++ b/components/esp_wifi/include/esp_wifi_crypto_types.h @@ -55,7 +55,7 @@ typedef struct crypto_hash esp_crypto_hash_t; typedef struct crypto_cipher esp_crypto_cipher_t; /** - * @brief The AES callback function when do WPS connect. + * @brief The AES 128 encrypt callback function used by esp_wifi. * * @param key Encryption key. * @param iv Encryption IV for CBC mode (16 bytes). @@ -65,7 +65,7 @@ typedef struct crypto_cipher esp_crypto_cipher_t; typedef int (*esp_aes_128_encrypt_t)(const unsigned char *key, const unsigned char *iv, unsigned char *data, int data_len); /** - * @brief The AES callback function when do WPS connect. + * @brief The AES 128 decrypt callback function used by esp_wifi. * * @param key Decryption key. * @param iv Decryption IV for CBC mode (16 bytes). @@ -76,7 +76,7 @@ typedef int (*esp_aes_128_encrypt_t)(const unsigned char *key, const unsigned ch typedef int (*esp_aes_128_decrypt_t)(const unsigned char *key, const unsigned char *iv, unsigned char *data, int data_len); /** - * @brief The AES callback function when do STA connect. + * @brief The AES wrap callback function used by esp_wifi. * * @param kek 16-octet Key encryption key (KEK). * @param n Length of the plaintext key in 64-bit units; @@ -87,7 +87,7 @@ typedef int (*esp_aes_128_decrypt_t)(const unsigned char *key, const unsigned ch typedef int (*esp_aes_wrap_t)(const unsigned char *kek, int n, const unsigned char *plain, unsigned char *cipher); /** - * @brief The AES callback function when do STA connect. + * @brief The AES unwrap callback function used by esp_wifi. * * @param kek 16-octet Key decryption key (KEK). * @param n Length of the plaintext key in 64-bit units; @@ -98,7 +98,7 @@ typedef int (*esp_aes_wrap_t)(const unsigned char *kek, int n, const unsigned ch typedef int (*esp_aes_unwrap_t)(const unsigned char *kek, int n, const unsigned char *cipher, unsigned char *plain); /** - * @brief The SHA256 callback function when do WPS connect. + * @brief The SHA256 callback function used by esp_wifi. * * @param key Key for HMAC operations. * @param key_len Length of the key in bytes. @@ -112,7 +112,7 @@ typedef int (*esp_hmac_sha256_vector_t)(const unsigned char *key, int key_len, i const unsigned char *addr[], const int *len, unsigned char *mac); /** - * @brief The AES callback function when do STA connect. + * @brief The SHA256 PRF callback function used by esp_wifi. * * @param key Key for PRF. * @param key_len Length of the key in bytes. @@ -127,7 +127,7 @@ typedef int (*esp_sha256_prf_t)(const unsigned char *key, int key_len, const cha const unsigned char *data, int data_len, unsigned char *buf, int buf_len); /** - * @brief HMAC-MD5 over data buffer (RFC 2104)' + * @brief HMAC-MD5 callback function over data buffer (RFC 2104)' * * @param key Key for HMAC operations * @param key_len Length of the key in bytes @@ -140,7 +140,7 @@ typedef int (*esp_hmac_md5_t)(const unsigned char *key, unsigned int key_len, co unsigned int data_len, unsigned char *mac); /** - * @brief HMAC-MD5 over data vector (RFC 2104) + * @brief HMAC-MD5 callback function over data vector (RFC 2104) * * @param key Key for HMAC operations * @param key_len Length of the key in bytes @@ -154,7 +154,7 @@ typedef int (*esp_hmac_md5_vector_t)(const unsigned char *key, unsigned int key_ const unsigned char *addr[], const unsigned int *len, unsigned char *mac); /** - * @brief HMAC-SHA1 over data buffer (RFC 2104) + * @brief HMAC-SHA1 callback function over data buffer (RFC 2104) * * @param key Key for HMAC operations * @param key_len Length of the key in bytes @@ -167,7 +167,7 @@ typedef int (*esp_hmac_sha1_t)(const unsigned char *key, unsigned int key_len, c unsigned int data_len, unsigned char *mac); /** - * @brief HMAC-SHA1 over data vector (RFC 2104) + * @brief HMAC-SHA1 callback function over data vector (RFC 2104) * * @param key Key for HMAC operations * @param key_len Length of the key in bytes @@ -181,7 +181,7 @@ typedef int (*esp_hmac_sha1_vector_t)(const unsigned char *key, unsigned int key const unsigned char *addr[], const unsigned int *len, unsigned char *mac); /** - * @brief SHA1-based Pseudo-Random Function (PRF) (IEEE 802.11i, 8.5.1.1) + * @brief SHA1-based Pseudo-Random Function (PRF) (IEEE 802.11i, 8.5.1.1) callback function * * @param key Key for PRF * @param key_len Length of the key in bytes @@ -199,7 +199,7 @@ typedef int (*esp_sha1_prf_t)(const unsigned char *key, unsigned int key_len, co const unsigned char *data, unsigned int data_len, unsigned char *buf, unsigned int buf_len); /** - * @brief SHA-1 hash for data vector + * @brief SHA-1 hash callback function for data vector * * @param num_elem Number of elements in the data vector * @param addr Pointers to the data areas @@ -211,7 +211,7 @@ typedef int (*esp_sha1_vector_t)(unsigned int num_elem, const unsigned char *add unsigned char *mac); /** - * @brief SHA1-based key derivation function (PBKDF2) for IEEE 802.11i + * @brief SHA1-based key derivation function (PBKDF2) callback function for IEEE 802.11i * * @param passphrase ASCII passphrase * @param ssid SSID @@ -229,7 +229,7 @@ typedef int (*esp_pbkdf2_sha1_t)(const char *passphrase, const char *ssid, unsig int iterations, unsigned char *buf, unsigned int buflen); /** - * @brief XOR RC4 stream to given data with skip-stream-start + * @brief XOR RC4 stream callback function to given data with skip-stream-start * * @param key RC4 key * @param keylen RC4 key length @@ -246,7 +246,7 @@ typedef int (*esp_rc4_skip_t)(const unsigned char *key, unsigned int keylen, uns unsigned char *data, unsigned int data_len); /** - * @brief MD5 hash for data vector + * @brief MD5 hash callback function for data vector * * @param num_elem Number of elements in the data vector * @param addr Pointers to the data areas @@ -258,7 +258,7 @@ typedef int (*esp_md5_vector_t)(unsigned int num_elem, const unsigned char *addr unsigned char *mac); /** - * @brief Encrypt one AES block + * @brief Encrypt one AES block callback function * * @param ctx Context pointer from aes_encrypt_init() * @param plain Plaintext data to be encrypted (16 bytes) @@ -267,7 +267,7 @@ typedef int (*esp_md5_vector_t)(unsigned int num_elem, const unsigned char *addr typedef void (*esp_aes_encrypt_t)(void *ctx, const unsigned char *plain, unsigned char *crypt); /** - * @brief Initialize AES for encryption + * @brief Initialize AES callback function for encryption * * @param key Encryption key * @param len Key length in bytes (usually 16, i.e., 128 bits) @@ -276,14 +276,14 @@ typedef void (*esp_aes_encrypt_t)(void *ctx, const unsigned char *plain, unsigne typedef void * (*esp_aes_encrypt_init_t)(const unsigned char *key, unsigned int len); /** - * @brief Deinitialize AES encryption + * @brief Deinitialize AES encryption callback function * * @param ctx Context pointer from aes_encrypt_init() */ typedef void (*esp_aes_encrypt_deinit_t)(void *ctx); /** - * @brief Decrypt one AES block + * @brief Decrypt one AES block callback function * * @param ctx Context pointer from aes_encrypt_init() * @param crypt Encrypted data (16 bytes) @@ -292,7 +292,7 @@ typedef void (*esp_aes_encrypt_deinit_t)(void *ctx); typedef void (*esp_aes_decrypt_t)(void *ctx, const unsigned char *crypt, unsigned char *plain); /** - * @brief Initialize AES for decryption + * @brief Initialize AES callback function for decryption * * @param key Decryption key * @param len Key length in bytes (usually 16, i.e., 128 bits) @@ -301,14 +301,14 @@ typedef void (*esp_aes_decrypt_t)(void *ctx, const unsigned char *crypt, unsigne typedef void * (*esp_aes_decrypt_init_t)(const unsigned char *key, unsigned int len); /** - * @brief Deinitialize AES decryption + * @brief Deinitialize AES decryption callback function * * @param ctx Context pointer from aes_encrypt_init() */ typedef void (*esp_aes_decrypt_deinit_t)(void *ctx); /** - * @brief One-Key CBC MAC (OMAC1) hash with AES-128 for MIC computation + * @brief One-Key CBC MAC (OMAC1) hash with AES-128 callback function for MIC computation * * @param key 128-bit key for the hash operation * @param data Data buffer for which a MIC is computed @@ -320,7 +320,7 @@ typedef int (*esp_omac1_aes_128_t)(const uint8_t *key, const uint8_t *data, size uint8_t *mic); /** - * @brief Decrypt data using CCMP (Counter Mode CBC-MAC Protocol OR + * @brief Decrypt data callback function using CCMP (Counter Mode CBC-MAC Protocol OR * Counter Mode Cipher Block Chaining Message Authentication * Code Protocol) which is used in IEEE 802.11i RSN standard. * @param tk 128-bit Temporal Key for obtained during 4-way handshake @@ -336,7 +336,7 @@ typedef uint8_t * (*esp_ccmp_decrypt_t)(const uint8_t *tk, const uint8_t *ieee80 size_t *decrypted_len, bool espnow_pkt); /** - * @brief Encrypt data using CCMP (Counter Mode CBC-MAC Protocol OR + * @brief Encrypt data callback function using CCMP (Counter Mode CBC-MAC Protocol OR * Counter Mode Cipher Block Chaining Message Authentication * Code Protocol) which is used in IEEE 802.11i RSN standard. * @param tk 128-bit Temporal Key for obtained during 4-way handshake @@ -351,7 +351,7 @@ typedef uint8_t * (*esp_ccmp_encrypt_t)(const uint8_t *tk, uint8_t *frame, size_ uint8_t *pn, int keyid, size_t *encrypted_len); /** - * @brief One-Key GMAC hash with AES for MIC computation + * @brief One-Key GMAC hash callback function with AES for MIC computation * * @param key key for the hash operation * @param keylen key length @@ -366,7 +366,7 @@ typedef int (*esp_aes_gmac_t)(const uint8_t *key, size_t keylen, const uint8_t * const uint8_t *aad, size_t aad_len, uint8_t *mic); /** - * @brief SHA256 hash for data vector + * @brief SHA256 hash callback function for data vector * @param num_elem Number of elements in the data vector * @param addr Pointers to the data areas * @param len Lengths of the data blocks @@ -376,7 +376,7 @@ typedef int (*esp_aes_gmac_t)(const uint8_t *key, size_t keylen, const uint8_t * typedef int (*esp_sha256_vector_t)(size_t num_elem, const uint8_t *addr[], const size_t *len, uint8_t *buf); /** - * @brief CRC32 value in little endian. + * @brief CRC32 value callback function in little endian. * * @param crc Initial CRC value (result of last calculation or 0 for the first time) * @param buf Data buffer that used to calculate the CRC value @@ -386,40 +386,40 @@ typedef int (*esp_sha256_vector_t)(size_t num_elem, const uint8_t *addr[], const typedef uint32_t (*esp_crc32_le_t)(uint32_t crc, uint8_t const *buf, uint32_t len); /** - * @brief The crypto callback function structure used when do station security connect. + * @brief The crypto callback function structure used by esp_wifi. * The structure can be set as software crypto or the crypto optimized by device's * hardware. */ typedef struct { uint32_t size; /**< The crypto callback function structure size */ uint32_t version; /**< The crypto callback function structure version */ - esp_aes_wrap_t aes_wrap; /**< The AES callback function when do STA connect */ - esp_aes_unwrap_t aes_unwrap; /**< The AES callback function when do STA connect */ - esp_hmac_sha256_vector_t hmac_sha256_vector; /**< The SHA256 callback function when do WPS connect */ - esp_sha256_prf_t sha256_prf; /**< The AES callback function when do STA connect */ - esp_hmac_md5_t hmac_md5; /**< HMAC-MD5 over data buffer (RFC 2104) */ - esp_hmac_md5_vector_t hamc_md5_vector; /**< HMAC-MD5 over data vector (RFC 2104) */ - esp_hmac_sha1_t hmac_sha1; /**< HMAC-SHA1 over data buffer (RFC 2104) */ - esp_hmac_sha1_vector_t hmac_sha1_vector; /**< HMAC-SHA1 over data vector (RFC 2104) */ - esp_sha1_prf_t sha1_prf; /**< SHA1-based Pseudo-Random Function (PRF) (IEEE 802.11i, 8.5.1.1) */ - esp_sha1_vector_t sha1_vector; /**< SHA-1 hash for data vector */ - esp_pbkdf2_sha1_t pbkdf2_sha1; /**< SHA1-based key derivation function (PBKDF2) for IEEE 802.11i */ - esp_rc4_skip_t rc4_skip; /**< XOR RC4 stream to given data with skip-stream-start */ - esp_md5_vector_t md5_vector; /**< MD5 hash for data vector */ - esp_aes_encrypt_t aes_encrypt; /**< Encrypt one AES block */ - esp_aes_encrypt_init_t aes_encrypt_init; /**< Initialize AES for encryption */ - esp_aes_encrypt_deinit_t aes_encrypt_deinit; /**< Deinitialize AES encryption */ - esp_aes_decrypt_t aes_decrypt; /**< Decrypt one AES block */ - esp_aes_decrypt_init_t aes_decrypt_init; /**< Initialize AES for decryption */ - esp_aes_decrypt_deinit_t aes_decrypt_deinit; /**< Deinitialize AES decryption */ - esp_aes_128_encrypt_t aes_128_encrypt; /**< The AES callback function when do WPS connect */ - esp_aes_128_decrypt_t aes_128_decrypt; /**< The AES callback function when do WPS connect */ - esp_omac1_aes_128_t omac1_aes_128; /**< One-Key CBC MAC (OMAC1) hash with AES-128 for MIC computation */ - esp_ccmp_decrypt_t ccmp_decrypt; /**< Decrypt data using CCMP */ - esp_ccmp_encrypt_t ccmp_encrypt; /**< encrypt data using CCMP */ - esp_aes_gmac_t aes_gmac; /**< One-Key GMAC hash with AES for MIC computation */ - esp_sha256_vector_t sha256_vector; /**< SHA256 hash for data vector */ - esp_crc32_le_t crc32; /**< CRC32 value in little endian */ + esp_aes_wrap_t aes_wrap; /**< The AES wrap callback function used by esp_wifi */ + esp_aes_unwrap_t aes_unwrap; /**< The AES unwrap callback function used by esp_wifi */ + esp_hmac_sha256_vector_t hmac_sha256_vector; /**< The SHA256 callback function used by esp_wifi */ + esp_sha256_prf_t sha256_prf; /**< The SHA256 PRF callback function used by esp_wifi */ + esp_hmac_md5_t hmac_md5; /**< HMAC-MD5 callback function over data buffer (RFC 2104) */ + esp_hmac_md5_vector_t hamc_md5_vector; /**< HMAC-MD5 callback function over data vector (RFC 2104) */ + esp_hmac_sha1_t hmac_sha1; /**< HMAC-SHA1 callback function over data buffer (RFC 2104) */ + esp_hmac_sha1_vector_t hmac_sha1_vector; /**< HMAC-SHA1 callback function over data vector (RFC 2104) */ + esp_sha1_prf_t sha1_prf; /**< SHA1-based Pseudo-Random Function (PRF) (IEEE 802.11i, 8.5.1.1) callback function */ + esp_sha1_vector_t sha1_vector; /**< SHA-1 hash callback function for data vector */ + esp_pbkdf2_sha1_t pbkdf2_sha1; /**< SHA1-based key derivation function (PBKDF2) callback function for IEEE 802.11i */ + esp_rc4_skip_t rc4_skip; /**< XOR RC4 stream callback function to given data with skip-stream-start */ + esp_md5_vector_t md5_vector; /**< MD5 hash callback function for data vector */ + esp_aes_encrypt_t aes_encrypt; /**< Encrypt one AES block callback function */ + esp_aes_encrypt_init_t aes_encrypt_init; /**< Initialize AES callback function for encryption */ + esp_aes_encrypt_deinit_t aes_encrypt_deinit; /**< Deinitialize AES encryption callback function */ + esp_aes_decrypt_t aes_decrypt; /**< Decrypt one AES block callback function */ + esp_aes_decrypt_init_t aes_decrypt_init; /**< Initialize AES callback function for decryption */ + esp_aes_decrypt_deinit_t aes_decrypt_deinit; /**< Deinitialize AES decryption callback function */ + esp_aes_128_encrypt_t aes_128_encrypt; /**< The AES 128 encrypt callback function used by esp_wifi */ + esp_aes_128_decrypt_t aes_128_decrypt; /**< The AES 128 decrypt callback function used by esp_wifi */ + esp_omac1_aes_128_t omac1_aes_128; /**< One-Key CBC MAC (OMAC1) hash with AES-128 callback function for MIC computation */ + esp_ccmp_decrypt_t ccmp_decrypt; /**< Decrypt data callback function using CCMP */ + esp_ccmp_encrypt_t ccmp_encrypt; /**< Encrypt data callback function using CCMP */ + esp_aes_gmac_t aes_gmac; /**< One-Key GMAC hash callback function with AES for MIC computation */ + esp_sha256_vector_t sha256_vector; /**< SHA256 hash callback function for data vector */ + esp_crc32_le_t crc32; /**< CRC32 value callback function in little endian */ }wpa_crypto_funcs_t; /** @@ -428,8 +428,8 @@ typedef struct { * hardware. */ typedef struct{ - esp_aes_128_encrypt_t aes_128_encrypt; /**< function used in mesh vendor IE encryption */ - esp_aes_128_decrypt_t aes_128_decrypt; /**< function used in mesh vendor IE decryption */ + esp_aes_128_encrypt_t aes_128_encrypt; /**< Callback function used in mesh vendor IE encryption */ + esp_aes_128_decrypt_t aes_128_decrypt; /**< Callback function used in mesh vendor IE decryption */ } mesh_crypto_funcs_t; #ifdef __cplusplus diff --git a/components/esp_wifi/src/wifi_init.c b/components/esp_wifi/src/wifi_init.c index ac2dd2f2cc..e0594aec94 100644 --- a/components/esp_wifi/src/wifi_init.c +++ b/components/esp_wifi/src/wifi_init.c @@ -16,7 +16,7 @@ #include "esp_private/esp_clk.h" #include "esp_wpa.h" #include "esp_netif.h" -#include "esp_coexist_internal.h" +#include "private/esp_coexist_internal.h" #include "esp_phy_init.h" #include "esp_private/phy.h" #ifdef CONFIG_ESP_WIFI_NAN_ENABLE diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index a162a1f45f..99128ba63b 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -27,9 +27,7 @@ INPUT = \ $(PROJECT_PATH)/components/bootloader_support/include/bootloader_random.h \ $(PROJECT_PATH)/components/bootloader_support/include/esp_app_format.h \ $(PROJECT_PATH)/components/bootloader_support/include/esp_flash_encrypt.h \ - $(PROJECT_PATH)/components/esp_coex/include/esp_coexist_internal.h \ $(PROJECT_PATH)/components/esp_coex/include/esp_coexist.h \ - $(PROJECT_PATH)/components/esp_coex/include/esp_modem_wrapper.h \ $(PROJECT_PATH)/components/bt/common/api/include/api/esp_blufi_api.h \ $(PROJECT_PATH)/components/bt/esp_ble_mesh/api/core/include/esp_ble_mesh_common_api.h \ $(PROJECT_PATH)/components/bt/esp_ble_mesh/api/core/include/esp_ble_mesh_local_data_operation_api.h \ From 07245bf43ab201e355cc4e0f4603c59fc100e060 Mon Sep 17 00:00:00 2001 From: zhangyanjiao Date: Thu, 10 Aug 2023 19:35:43 +0800 Subject: [PATCH 07/14] fix(wifi/mesh): fix the IE crypto disable error and update doc --- components/esp_wifi/include/esp_mesh.h | 13 +-- .../esp_wifi/include/esp_mesh_internal.h | 90 ++++++++++--------- .../esp_wifi/include/esp_wifi_crypto_types.h | 2 +- components/esp_wifi/lib | 2 +- .../mesh/manual_networking/main/mesh_main.c | 21 ++--- .../main/esp_zigbee_gateway.c | 5 +- 6 files changed, 69 insertions(+), 64 deletions(-) diff --git a/components/esp_wifi/include/esp_mesh.h b/components/esp_wifi/include/esp_mesh.h index 9118fcda44..d5de2eed11 100644 --- a/components/esp_wifi/include/esp_mesh.h +++ b/components/esp_wifi/include/esp_mesh.h @@ -136,10 +136,13 @@ extern "C" { /** * @brief Flag of mesh networking IE */ -#define MESH_ASSOC_FLAG_VOTE_IN_PROGRESS (0x02) /**< vote in progress */ +#define MESH_ASSOC_FLAG_MAP_ASSOC (0x01) /**< Mesh AP doesn't detect children leave yet */ +#define MESH_ASSOC_FLAG_VOTE_IN_PROGRESS (0x02) /**< station in vote, set when root vote start, clear when connect to router or when root switch*/ +#define MESH_ASSOC_FLAG_STA_VOTED (0x04) /**< station vote done, set when connect to router */ #define MESH_ASSOC_FLAG_NETWORK_FREE (0x08) /**< no root in current network */ -#define MESH_ASSOC_FLAG_ROOTS_FOUND (0x20) /**< root conflict is found */ -#define MESH_ASSOC_FLAG_ROOT_FIXED (0x40) /**< fixed root */ +#define MESH_ASSOC_FLAG_STA_VOTE_EXPIRE (0x10) /**< the voted address is expired, means the voted device lose the chance to be root */ +#define MESH_ASSOC_FLAG_ROOTS_FOUND (0x20) /**< roots conflict is found, means that thre are at least two roots in the mesh network */ +#define MESH_ASSOC_FLAG_ROOT_FIXED (0x40) /**< the root is fixed in the mesh network */ /** @@ -1291,7 +1294,7 @@ int esp_mesh_get_capacity_num(void); /** * @brief Set mesh IE crypto functions * - * @attention This API can be called at any time after mesh is initialized. + * @attention This API can be called at any time after mesh is configured. * * @param[in] crypto_funcs crypto functions for mesh IE * - If crypto_funcs is set to NULL, mesh IE is no longer encrypted. @@ -1303,7 +1306,7 @@ esp_err_t esp_mesh_set_ie_crypto_funcs(const mesh_crypto_funcs_t *crypto_funcs); /** * @brief Set mesh IE crypto key * - * @attention This API can be called at any time after mesh is initialized. + * @attention This API can be called at any time after mesh is configured. * * @param[in] key ASCII crypto key * @param[in] len length in bytes, range:8~64 diff --git a/components/esp_wifi/include/esp_mesh_internal.h b/components/esp_wifi/include/esp_mesh_internal.h index 371e1e6064..4c6a998ecc 100644 --- a/components/esp_wifi/include/esp_mesh_internal.h +++ b/components/esp_wifi/include/esp_mesh_internal.h @@ -50,12 +50,14 @@ typedef struct { } mesh_switch_parent_t; /** - * @brief Mesh rssi threshold + * @brief Mesh RSSI threshold */ typedef struct { - int high; /**< high rssi threshold */ - int medium; /**< medium rssi threshold */ - int low; /**< low rssi threshold */ + int high; /**< high RSSI threshold, used to determine whether the new parent and the current parent are in the same RSSI range */ + int medium; /**< medium RSSI threshold, used to determine whether the new parent and the current parent are in the same RSSI range */ + int low; /**< low RSSI threshold. If the parent's RSSI is lower than low for a period time of duration_ms, + then the mesh node will post MESH_WEAK_RSSI event. + Also used to determine whether the new parent and the current parent are in the same RSSI range */ } mesh_rssi_threshold_t; /** @@ -63,47 +65,47 @@ typedef struct { */ typedef struct { /**< mesh networking IE head */ - uint8_t eid; /**< element ID */ - uint8_t len; /**< element length */ - uint8_t oui[3]; /**< organization identifier */ - /**< mesh networking IE content */ - uint8_t type; /**< ESP defined IE type */ + uint8_t eid; /**< element ID, vendor specific, 221 */ + uint8_t len; /**< element length, the length after this member */ + uint8_t oui[3]; /**< organization identifier, 0x18fe34 */ + uint8_t type; /**< ESP defined IE type, include Assoc IE, SSID IE, Ext Assoc IE, Roots IE, etc. */ uint8_t encrypted : 1; /**< whether mesh networking IE is encrypted */ - uint8_t version : 7; /**< mesh networking IE version */ + uint8_t version : 7; /**< mesh networking IE version, equal to 2 if mesh PS is enabled, equal to 1 otherwise */ /**< content */ - uint8_t mesh_type; /**< mesh device type */ - uint8_t mesh_id[6]; /**< mesh ID */ - uint8_t layer_cap; /**< max layer */ - uint8_t layer; /**< current layer */ - uint8_t assoc_cap; /**< max connections of mesh AP */ - uint8_t assoc; /**< current connections */ - uint8_t leaf_cap; /**< leaf capacity */ - uint8_t leaf_assoc; /**< the number of current connected leaf */ - uint16_t root_cap; /**< root capacity */ - uint16_t self_cap; /**< self capacity */ - uint16_t layer2_cap; /**< layer2 capacity */ - uint16_t scan_ap_num; /**< the number of scanning APs */ - int8_t rssi; /**< RSSI of the parent */ - int8_t router_rssi; /**< RSSI of the router */ - uint8_t flag; /**< flag of networking */ - uint8_t rc_addr[6]; /**< root address */ - int8_t rc_rssi; /**< root RSSI */ - uint8_t vote_addr[6]; /**< voter address */ - int8_t vote_rssi; /**< vote RSSI of the router */ - uint8_t vote_ttl; /**< vote ttl */ - uint16_t votes; /**< votes */ - uint16_t my_votes; /**< my votes */ - uint8_t reason; /**< reason */ - uint8_t child[6]; /**< child address */ - uint8_t toDS; /**< toDS state */ + uint8_t mesh_type; /**< mesh device type, include idle, root, node, etc, refer to mesh_type_t */ + uint8_t mesh_id[6]; /**< mesh ID, only the same mesh id can form a unified mesh network */ + uint8_t layer_cap; /**< layer_cap = max_layer - layer, indicates the number of remaining available layers of the mesh network */ + uint8_t layer; /**< the current layer of this node */ + uint8_t assoc_cap; /**< the maximum connections of this mesh AP */ + uint8_t assoc; /**< current connections of this mesh AP */ + uint8_t leaf_cap; /**< the maximum number of leaves in the mesh network */ + uint8_t leaf_assoc; /**< the number of current connected leaves */ + uint16_t root_cap; /**< the capacity of the root, equal to the total child numbers plus 1, root node updates root_cap and self_cap */ + uint16_t self_cap; /**< the capacity of myself, total child numbers plus 1, all nodes update this member */ + uint16_t layer2_cap; /**< the capacity of layer2 node, total child numbers plus 1, layer2 node updates layer2_cap and self_cap, root sets this to 0 */ + uint16_t scan_ap_num; /**< the number of mesh APs around */ + int8_t rssi; /**< RSSI of the connected parent, default value is -120, root node will not update this */ + int8_t router_rssi; /**< RSSI of the router, default value is -120 */ + uint8_t flag; /**< flag of networking, indicates the status of the network, refer to MESH_ASSOC_FLAG_XXX */ + /**< vote related */ + uint8_t rc_addr[6]; /**< the address of the root candidate, i.e. the voted addesss before connection, root node will update this with self address */ + int8_t rc_rssi; /**< the router RSSI of the root candidate */ + uint8_t vote_addr[6]; /**< the voted address after connection */ + int8_t vote_rssi; /**< the router RSSI of the voted address */ + uint8_t vote_ttl; /**< vote ttl, indicate the voting is from myself or from other nodes */ + uint16_t votes; /**< the number of all voting nodes */ + uint16_t my_votes; /**< the number of nodes that voted for me */ + uint8_t reason; /**< the reason why the voting happens, root initiated or child initiated, refer to mesh_vote_reason_t */ + uint8_t child[6]; /**< child address, not used currently */ + uint8_t toDS; /**< state represents whether the root is able to access external IP network */ } __attribute__((packed)) mesh_assoc_t; /** * @brief Mesh chain layer */ typedef struct { - uint16_t layer_cap; /**< max layer */ - uint16_t layer; /**< current layer */ + uint16_t layer_cap; /**< max layer of the network */ + uint16_t layer; /**< current layer of this node */ } mesh_chain_layer_t; /** @@ -111,22 +113,22 @@ typedef struct { */ typedef struct { mesh_assoc_t tree; /**< tree top, mesh_assoc IE */ - mesh_chain_layer_t chain; /**< chain top, mesh_assoc IE*/ + mesh_chain_layer_t chain; /**< chain top, mesh_assoc IE */ } __attribute__((packed)) mesh_chain_assoc_t; /* mesh max connections */ #define MESH_MAX_CONNECTIONS (10) /** - * @brief Mesh PS duties + * @brief Mesh power save duties */ typedef struct { uint8_t device; /**< device power save duty*/ uint8_t parent; /**< parent power save duty*/ struct { - bool used; /**< used */ - uint8_t duty; /**< duty */ - uint8_t mac[6]; /**< mac */ + bool used; /**< whether the child is joined */ + uint8_t duty; /**< power save duty of the child */ + uint8_t mac[6]; /**< mac address of the child */ } child[MESH_MAX_CONNECTIONS]; /**< child */ } esp_mesh_ps_duties_t; @@ -200,7 +202,7 @@ esp_err_t esp_mesh_set_switch_parent_paras(mesh_switch_parent_t *paras); esp_err_t esp_mesh_get_switch_parent_paras(mesh_switch_parent_t *paras); /** - * @brief Set RSSI threshold + * @brief Set RSSI threshold of current parent * - The default high RSSI threshold value is -78 dBm. * - The default medium RSSI threshold value is -82 dBm. * - The default low RSSI threshold value is -85 dBm. @@ -214,7 +216,7 @@ esp_err_t esp_mesh_get_switch_parent_paras(mesh_switch_parent_t *paras); esp_err_t esp_mesh_set_rssi_threshold(const mesh_rssi_threshold_t *threshold); /** - * @brief Get RSSI threshold + * @brief Get RSSI threshold of current parent * * @param[out] threshold RSSI threshold * diff --git a/components/esp_wifi/include/esp_wifi_crypto_types.h b/components/esp_wifi/include/esp_wifi_crypto_types.h index 6a54445b92..31832560fd 100644 --- a/components/esp_wifi/include/esp_wifi_crypto_types.h +++ b/components/esp_wifi/include/esp_wifi_crypto_types.h @@ -412,7 +412,7 @@ typedef struct { esp_aes_decrypt_t aes_decrypt; /**< Decrypt one AES block callback function */ esp_aes_decrypt_init_t aes_decrypt_init; /**< Initialize AES callback function for decryption */ esp_aes_decrypt_deinit_t aes_decrypt_deinit; /**< Deinitialize AES decryption callback function */ - esp_aes_128_encrypt_t aes_128_encrypt; /**< The AES 128 encrypt callback function used by esp_wifi */ + esp_aes_128_encrypt_t aes_128_encrypt; /**< The AES 128 encrypt callback function used by esp_wifi */ esp_aes_128_decrypt_t aes_128_decrypt; /**< The AES 128 decrypt callback function used by esp_wifi */ esp_omac1_aes_128_t omac1_aes_128; /**< One-Key CBC MAC (OMAC1) hash with AES-128 callback function for MIC computation */ esp_ccmp_decrypt_t ccmp_decrypt; /**< Decrypt data callback function using CCMP */ diff --git a/components/esp_wifi/lib b/components/esp_wifi/lib index a65d997669..c9cff30ae4 160000 --- a/components/esp_wifi/lib +++ b/components/esp_wifi/lib @@ -1 +1 @@ -Subproject commit a65d997669b98f8348158fb5f47d9832b46eccc7 +Subproject commit c9cff30ae4aa2aaf251d9823f3feef4e784c7fd2 diff --git a/examples/mesh/manual_networking/main/mesh_main.c b/examples/mesh/manual_networking/main/mesh_main.c index 7dbdb73884..8c538517d9 100644 --- a/examples/mesh/manual_networking/main/mesh_main.c +++ b/examples/mesh/manual_networking/main/mesh_main.c @@ -301,17 +301,8 @@ void app_main(void) /* mesh initialization */ ESP_ERROR_CHECK(esp_mesh_init()); ESP_ERROR_CHECK(esp_event_handler_register(MESH_EVENT, ESP_EVENT_ANY_ID, &mesh_event_handler, NULL)); - /* mesh enable IE crypto */ + /* mesh config */ mesh_cfg_t cfg = MESH_INIT_CONFIG_DEFAULT(); -#if CONFIG_MESH_IE_CRYPTO_FUNCS - /* modify IE crypto key */ - ESP_ERROR_CHECK(esp_mesh_set_ie_crypto_funcs(&g_wifi_default_mesh_crypto_funcs)); - ESP_ERROR_CHECK(esp_mesh_set_ie_crypto_key(CONFIG_MESH_IE_CRYPTO_KEY, strlen(CONFIG_MESH_IE_CRYPTO_KEY))); -#else - /* disable IE crypto */ - ESP_LOGI(MESH_TAG, "disable IE crypto"); - ESP_ERROR_CHECK(esp_mesh_set_ie_crypto_funcs(NULL)); -#endif /* mesh ID */ memcpy((uint8_t *) &cfg.mesh_id, MESH_ID, 6); /* router */ @@ -327,6 +318,16 @@ void app_main(void) memcpy((uint8_t *) &cfg.mesh_ap.password, CONFIG_MESH_AP_PASSWD, strlen(CONFIG_MESH_AP_PASSWD)); ESP_ERROR_CHECK(esp_mesh_set_config(&cfg)); + /* mesh enable IE crypto */ +#if CONFIG_MESH_IE_CRYPTO_FUNCS + /* modify IE crypto key */ + ESP_ERROR_CHECK(esp_mesh_set_ie_crypto_funcs(&g_wifi_default_mesh_crypto_funcs)); + ESP_ERROR_CHECK(esp_mesh_set_ie_crypto_key(CONFIG_MESH_IE_CRYPTO_KEY, strlen(CONFIG_MESH_IE_CRYPTO_KEY))); +#else + /* disable IE crypto */ + ESP_LOGI(MESH_TAG, "disable IE crypto"); + ESP_ERROR_CHECK(esp_mesh_set_ie_crypto_funcs(NULL)); +#endif /* mesh start */ ESP_ERROR_CHECK(esp_mesh_start()); ESP_LOGI(MESH_TAG, "mesh starts successfully, heap:%" PRId32, esp_get_free_heap_size()); diff --git a/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.c b/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.c index 52d61945b8..4c034b2e05 100644 --- a/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.c +++ b/examples/zigbee/esp_zigbee_gateway/main/esp_zigbee_gateway.c @@ -39,7 +39,7 @@ #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "driver/usb_serial_jtag.h" -#include "esp_coexist_internal.h" +#include "esp_coexist.h" #include "esp_log.h" #include "esp_netif.h" #include "esp_spiffs.h" @@ -173,8 +173,7 @@ void app_main(void) ESP_ERROR_CHECK(example_connect()); #if CONFIG_ESP_COEX_SW_COEXIST_ENABLE ESP_ERROR_CHECK(esp_wifi_set_ps(WIFI_PS_MIN_MODEM)); - coex_enable(); - coex_schm_status_bit_set(1, 1); + esp_coex_wifi_i154_enable(); #else ESP_ERROR_CHECK(esp_wifi_set_ps(WIFI_PS_NONE)); #endif From de36cb79049fd53e898efed77161d7f167d80976 Mon Sep 17 00:00:00 2001 From: muhaidong Date: Wed, 8 Nov 2023 19:12:37 +0800 Subject: [PATCH 08/14] fix(wifi): sta not pmf capable when ap requires should reject profile --- components/esp_wifi/lib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/esp_wifi/lib b/components/esp_wifi/lib index c9cff30ae4..c5f428854a 160000 --- a/components/esp_wifi/lib +++ b/components/esp_wifi/lib @@ -1 +1 @@ -Subproject commit c9cff30ae4aa2aaf251d9823f3feef4e784c7fd2 +Subproject commit c5f428854abaf40104fe8c6a3d198d1836069d77 From b62d63b767b5c06191676b1a70310217a4b0a70d Mon Sep 17 00:00:00 2001 From: jgujarathi Date: Fri, 27 Oct 2023 10:26:27 +0530 Subject: [PATCH 09/14] fix(esp_wifi): Add more descriptive reasons for disconnect Adds 3 more ddisconnect reasons in case of No AP found. 1. REASON_NO_AP_FOUND_IN_RSSI_THRESHOLD : AP rejected because it did not meet rssi threshold. 2. REASON_NO_AP_FOUND_IN_AUTHMODE THRESHOLD : AP rejected because it did not meet security threshold. 3. REASON_NO_AP_FOUND_WITH_COMPATIBLE_ SECURITY : AP rejected because of incompatible security configuration. These situations could include -- bss offerring WEP, but our password is not WEP compliant, -- Encrypted AP bss but we have no password config set. -- AP is Enterprise but we have not setup enterprise config and vice versa Closes https://github.com/espressif/esp-idf/issues/5957 --- components/esp_wifi/include/esp_wifi_types.h | 3 +++ components/esp_wifi/lib | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/components/esp_wifi/include/esp_wifi_types.h b/components/esp_wifi/include/esp_wifi_types.h index 8500fb3b76..baabe01113 100644 --- a/components/esp_wifi/include/esp_wifi_types.h +++ b/components/esp_wifi/include/esp_wifi_types.h @@ -133,6 +133,9 @@ typedef enum { WIFI_REASON_ROAMING = 207, WIFI_REASON_ASSOC_COMEBACK_TIME_TOO_LONG = 208, WIFI_REASON_SA_QUERY_TIMEOUT = 209, + WIFI_REASON_NO_AP_FOUND_W_COMPATIBLE_SECURITY = 210, + WIFI_REASON_NO_AP_FOUND_IN_AUTHMODE_THRESHOLD = 211, + WIFI_REASON_NO_AP_FOUND_IN_RSSI_THRESHOLD = 212, } wifi_err_reason_t; typedef enum { diff --git a/components/esp_wifi/lib b/components/esp_wifi/lib index c5f428854a..2b823173bb 160000 --- a/components/esp_wifi/lib +++ b/components/esp_wifi/lib @@ -1 +1 @@ -Subproject commit c5f428854abaf40104fe8c6a3d198d1836069d77 +Subproject commit 2b823173bb72ac120e1ed9698d0f294e24cf1db2 From f5b7b148f1d0ea52165fabb99b76eb0cc38c6913 Mon Sep 17 00:00:00 2001 From: xueyunfei Date: Thu, 31 Aug 2023 14:58:58 +0800 Subject: [PATCH 10/14] Fix(esp_wifi): Add the missing header file to the wifi header files. --- .../include/esp_private/wifi_os_adapter.h | 4 ++++ .../esp_wifi/include/esp_wifi_crypto_types.h | 3 +++ .../esp_wifi/include/esp_wifi_default.h | 1 + components/esp_wifi/include/esp_wifi_netif.h | 8 ++++++- components/esp_wifi/include/smartconfig_ack.h | 22 ++++++++----------- tools/ci/check_copyright_ignore.txt | 1 - tools/ci/check_public_headers_exceptions.txt | 6 ----- 7 files changed, 24 insertions(+), 21 deletions(-) diff --git a/components/esp_wifi/include/esp_private/wifi_os_adapter.h b/components/esp_wifi/include/esp_private/wifi_os_adapter.h index 4b55b9c6b4..84ace9fd1b 100644 --- a/components/esp_wifi/include/esp_private/wifi_os_adapter.h +++ b/components/esp_wifi/include/esp_private/wifi_os_adapter.h @@ -8,6 +8,10 @@ #define ESP_WIFI_OS_ADAPTER_H_ #include +#include +#include +#include +#include "sdkconfig.h" #ifdef __cplusplus extern "C" { diff --git a/components/esp_wifi/include/esp_wifi_crypto_types.h b/components/esp_wifi/include/esp_wifi_crypto_types.h index 31832560fd..1c7ec82a8f 100644 --- a/components/esp_wifi/include/esp_wifi_crypto_types.h +++ b/components/esp_wifi/include/esp_wifi_crypto_types.h @@ -14,6 +14,9 @@ During normal operation, you don't need to use any of these types or functions in this header. See esp_wifi.h & esp_wifi_types.h instead. */ +#include +#include +#include #ifdef __cplusplus extern "C" { diff --git a/components/esp_wifi/include/esp_wifi_default.h b/components/esp_wifi/include/esp_wifi_default.h index 0bb6450ab7..d30d512e35 100644 --- a/components/esp_wifi/include/esp_wifi_default.h +++ b/components/esp_wifi/include/esp_wifi_default.h @@ -8,6 +8,7 @@ #define _ESP_WIFI_DEFAULT_H #include "esp_netif.h" +#include "esp_wifi_types.h" #ifdef __cplusplus extern "C" { diff --git a/components/esp_wifi/include/esp_wifi_netif.h b/components/esp_wifi/include/esp_wifi_netif.h index c25c52edd9..7dfa724b06 100644 --- a/components/esp_wifi/include/esp_wifi_netif.h +++ b/components/esp_wifi/include/esp_wifi_netif.h @@ -1,11 +1,17 @@ /* - * SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2019-2023 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #pragma once +#include +#include +#include "esp_err.h" +#include "esp_wifi_types.h" +#include "esp_netif_types.h" + #ifdef __cplusplus extern "C" { #endif diff --git a/components/esp_wifi/include/smartconfig_ack.h b/components/esp_wifi/include/smartconfig_ack.h index abfada3ffa..ea2cee5943 100644 --- a/components/esp_wifi/include/smartconfig_ack.h +++ b/components/esp_wifi/include/smartconfig_ack.h @@ -1,20 +1,16 @@ -// Copyright 2010-2017 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2010-2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifndef SMARTCONFIG_ACK_H #define SMARTCONFIG_ACK_H +#include "esp_smartconfig.h" +#include "esp_err.h" +#include + #ifdef __cplusplus extern "C" { #endif diff --git a/tools/ci/check_copyright_ignore.txt b/tools/ci/check_copyright_ignore.txt index 511f6dae29..4eb9d26b3f 100644 --- a/tools/ci/check_copyright_ignore.txt +++ b/tools/ci/check_copyright_ignore.txt @@ -502,7 +502,6 @@ components/esp_system/test_eh_frame_parser/linker.ld components/esp_system/ubsan.c components/esp_wifi/include/esp_private/esp_wifi_types_private.h components/esp_wifi/include/esp_private/wifi_types.h -components/esp_wifi/include/smartconfig_ack.h components/esp_wifi/src/mesh_event.c components/fatfs/diskio/diskio.c components/fatfs/diskio/diskio_impl.h diff --git a/tools/ci/check_public_headers_exceptions.txt b/tools/ci/check_public_headers_exceptions.txt index 88de916a08..7a33314af8 100644 --- a/tools/ci/check_public_headers_exceptions.txt +++ b/tools/ci/check_public_headers_exceptions.txt @@ -88,7 +88,6 @@ components/esp_hw_support/include/esp_private/esp_memprot_internal.h ### Here are the files that use CONFIG_XXX values but don't include sdkconfig.h # -components/esp_wifi/include/esp_private/wifi_os_adapter.h components/esp_coex/include/private/esp_coexist_adapter.h components/esp_coex/include/esp_coex_i154.h ### To be fixed: headers that rely on implicit inclusion @@ -110,10 +109,6 @@ components/esp_rom/include/esp32s2/rom/secure_boot.h components/esp_rom/include/esp32s2/rom/opi_flash.h components/esp_rom/include/esp32s2/rom/efuse.h components/esp_ringbuf/include/freertos/ringbuf.h -components/esp_wifi/include/esp_wifi_crypto_types.h -components/esp_wifi/include/esp_wifi_netif.h -components/esp_wifi/include/smartconfig_ack.h -components/esp_wifi/include/esp_wifi_default.h components/esp_netif/include/esp_netif_defaults.h components/esp_netif/include/esp_netif_net_stack.h components/esp_netif/include/esp_netif_ppp.h @@ -121,7 +116,6 @@ components/protocomm/include/transports/protocomm_httpd.h components/fatfs/src/diskio.h components/fatfs/diskio/diskio_sdmmc.h components/mbedtls/esp_crt_bundle/include/esp_crt_bundle.h -components/wifi_provisioning/include/wifi_provisioning/scheme_softap.h components/usb/include/esp_private/usb_phy.h components/usb/include/usb/usb_types_stack.h From 539c4d8cd0df11f6725cf836305edf264428c121 Mon Sep 17 00:00:00 2001 From: zhangyanjiao Date: Thu, 7 Sep 2023 19:47:33 +0800 Subject: [PATCH 11/14] doc(Wi-Fi/Vendor): Update comments for wifi_csi_info_t --- components/esp_wifi/include/esp_wifi_types.h | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/components/esp_wifi/include/esp_wifi_types.h b/components/esp_wifi/include/esp_wifi_types.h index baabe01113..f8eb1baab4 100644 --- a/components/esp_wifi/include/esp_wifi_types.h +++ b/components/esp_wifi/include/esp_wifi_types.h @@ -453,24 +453,26 @@ typedef struct { signed rssi:8; /**< Received Signal Strength Indicator(RSSI) of packet. unit: dBm */ unsigned rate:5; /**< PHY rate encoding of the packet. Only valid for non HT(11bg) packet */ unsigned :1; /**< reserved */ - unsigned sig_mode:2; /**< 0: non HT(11bg) packet; 1: HT(11n) packet; 3: VHT(11ac) packet */ + unsigned sig_mode:2; /**< Protocol of the reveived packet, 0: non HT(11bg) packet; 1: HT(11n) packet; 3: VHT(11ac) packet */ unsigned :16; /**< reserved */ unsigned mcs:7; /**< Modulation Coding Scheme. If is HT(11n) packet, shows the modulation, range from 0 to 76(MSC0 ~ MCS76) */ unsigned cwb:1; /**< Channel Bandwidth of the packet. 0: 20MHz; 1: 40MHz */ unsigned :16; /**< reserved */ - unsigned smoothing:1; /**< reserved */ - unsigned not_sounding:1; /**< reserved */ + unsigned smoothing:1; /**< Set to 1 indicates that channel estimate smoothing is recommended. + Set to 0 indicates that only per-carrierindependent (unsmoothed) channel estimate is recommended. */ + unsigned not_sounding:1; /**< Set to 0 indicates that PPDU is a sounding PPDU. Set to 1indicates that the PPDU is not a sounding PPDU. + sounding PPDU is used for channel estimation by the request receiver */ unsigned :1; /**< reserved */ unsigned aggregation:1; /**< Aggregation. 0: MPDU packet; 1: AMPDU packet */ unsigned stbc:2; /**< Space Time Block Code(STBC). 0: non STBC packet; 1: STBC packet */ - unsigned fec_coding:1; /**< Flag is set for 11n packets which are LDPC */ + unsigned fec_coding:1; /**< Forward Error Correction(FEC). Flag is set for 11n packets which are LDPC */ unsigned sgi:1; /**< Short Guide Interval(SGI). 0: Long GI; 1: Short GI */ #if CONFIG_IDF_TARGET_ESP32 signed noise_floor:8; /**< noise floor of Radio Frequency Module(RF). unit: dBm*/ #elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C2 unsigned :8; /**< reserved */ #endif - unsigned ampdu_cnt:8; /**< ampdu cnt */ + unsigned ampdu_cnt:8; /**< the number of subframes aggregated in AMPDU */ unsigned channel:4; /**< primary channel on which this packet is received */ unsigned secondary_channel:4; /**< secondary channel on which this packet is received. 0: none; 1: above; 2: below */ unsigned :8; /**< reserved */ @@ -575,9 +577,9 @@ typedef struct { wifi_pkt_rx_ctrl_t rx_ctrl;/**< received packet radio metadata header of the CSI data */ uint8_t mac[6]; /**< source MAC address of the CSI data */ uint8_t dmac[6]; /**< destination MAC address of the CSI data */ - bool first_word_invalid; /**< first four bytes of the CSI data is invalid or not */ - int8_t *buf; /**< buffer of CSI data */ - uint16_t len; /**< length of CSI data */ + bool first_word_invalid; /**< first four bytes of the CSI data is invalid or not, true indicates the first four bytes is invalid due to hardware limition */ + int8_t *buf; /**< valid buffer of CSI data */ + uint16_t len; /**< valid length of CSI data */ } wifi_csi_info_t; /** From 00484dc8a726cc34656f57422d159a392a810d6c Mon Sep 17 00:00:00 2001 From: zhangyanjiao Date: Fri, 8 Sep 2023 11:46:12 +0800 Subject: [PATCH 12/14] feat(wifi/vendor): get more wifi information in csi rx callback --- components/esp_wifi/include/esp_wifi_types.h | 3 +++ components/esp_wifi/lib | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/components/esp_wifi/include/esp_wifi_types.h b/components/esp_wifi/include/esp_wifi_types.h index f8eb1baab4..2a0e69c519 100644 --- a/components/esp_wifi/include/esp_wifi_types.h +++ b/components/esp_wifi/include/esp_wifi_types.h @@ -580,6 +580,9 @@ typedef struct { bool first_word_invalid; /**< first four bytes of the CSI data is invalid or not, true indicates the first four bytes is invalid due to hardware limition */ int8_t *buf; /**< valid buffer of CSI data */ uint16_t len; /**< valid length of CSI data */ + uint8_t *hdr; /**< header of the wifi packet */ + uint8_t *payload; /**< payload of the wifi packet */ + uint16_t payload_len; /**< payload len of the wifi packet */ } wifi_csi_info_t; /** diff --git a/components/esp_wifi/lib b/components/esp_wifi/lib index 2b823173bb..5b70cdbe16 160000 --- a/components/esp_wifi/lib +++ b/components/esp_wifi/lib @@ -1 +1 @@ -Subproject commit 2b823173bb72ac120e1ed9698d0f294e24cf1db2 +Subproject commit 5b70cdbe16fe862925a50f9a5a251e7aa4b69f43 From eb513746157e61616551cbf02903b1348ae220df Mon Sep 17 00:00:00 2001 From: Sarvesh Bodakhe Date: Mon, 15 May 2023 18:09:52 +0530 Subject: [PATCH 13/14] fix(wpa_supplicant): Add some bugfixes in wpa_supplicant 1) Add parameter to configure reason code of deauth frame 2) Add logs to indicate MIC failure 4-Way-Handshake 3) Process RSNXE capabilities only if AP advertises them --- components/wpa_supplicant/src/ap/wpa_auth.c | 42 +++++++++++++------ components/wpa_supplicant/src/ap/wpa_auth_i.h | 1 + components/wpa_supplicant/src/rsn_supp/wpa.c | 14 ++++--- 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/components/wpa_supplicant/src/ap/wpa_auth.c b/components/wpa_supplicant/src/ap/wpa_auth.c index 5b0b4ae901..713a384bb7 100644 --- a/components/wpa_supplicant/src/ap/wpa_auth.c +++ b/components/wpa_supplicant/src/ap/wpa_auth.c @@ -217,10 +217,10 @@ int wpa_auth_for_each_sta(struct wpa_authenticator *wpa_auth, } static void wpa_sta_disconnect(struct wpa_authenticator *wpa_auth, - const u8 *addr) + const u8 *addr, u16 reason) { wpa_printf(MSG_DEBUG, "wpa_sta_disconnect STA " MACSTR, MAC2STR(addr)); - esp_wifi_ap_deauth_internal((uint8_t*)addr, WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT); + esp_wifi_ap_deauth_internal((uint8_t*)addr, reason); return; } @@ -797,7 +797,8 @@ continue_processing: "collect more entropy for random number " "generation"); random_mark_pool_ready(); - wpa_sta_disconnect(wpa_auth, sm->addr); + wpa_sta_disconnect(wpa_auth, sm->addr, + WLAN_REASON_PREV_AUTH_NOT_VALID); return; } if (wpa_parse_kde_ies((u8 *) (key + 1), key_data_length, @@ -824,12 +825,14 @@ continue_processing: wpa_hexdump(MSG_DEBUG, "WPA IE in msg 2/4", eapol_key_ie, eapol_key_ie_len); /* MLME-DEAUTHENTICATE.request */ - wpa_sta_disconnect(wpa_auth, sm->addr); + wpa_sta_disconnect(wpa_auth, sm->addr, + WLAN_REASON_PREV_AUTH_NOT_VALID); return; } #ifdef CONFIG_IEEE80211R_AP if (ft && ft_check_msg_2_of_4(wpa_auth, sm, &kde) < 0) { - wpa_sta_disconnect(wpa_auth, sm->addr); + wpa_sta_disconnect(wpa_auth, sm->addr, + WLAN_REASON_PREV_AUTH_NOT_VALID); return; } #endif /* CONFIG_IEEE80211R_AP */ @@ -863,6 +866,8 @@ continue_processing: if (sm->PTK_valid && !sm->update_snonce) { if (wpa_verify_key_mic(sm->wpa_key_mgmt, &sm->PTK, data, data_len)) { + wpa_printf(MSG_INFO, + "received EAPOL-Key with invalid MIC"); return; } sm->MICVerified = TRUE; @@ -876,6 +881,8 @@ continue_processing: memcpy(sm->req_replay_counter, key->replay_counter, WPA_REPLAY_COUNTER_LEN); } else { + wpa_printf(MSG_INFO, + "received EAPOL-Key request with invalid MIC"); return; } @@ -1359,9 +1366,14 @@ SM_STATE(WPA_PTK, INITIALIZE) SM_STATE(WPA_PTK, DISCONNECT) { + u16 reason = sm->disconnect_reason; + SM_ENTRY_MA(WPA_PTK, DISCONNECT, wpa_ptk); sm->Disconnect = FALSE; - wpa_sta_disconnect(sm->wpa_auth, sm->addr); + sm->disconnect_reason = 0; + if (!reason) + reason = WLAN_REASON_PREV_AUTH_NOT_VALID; + wpa_sta_disconnect(sm->wpa_auth, sm->addr, reason); } @@ -1431,7 +1443,8 @@ SM_STATE(WPA_PTK, AUTHENTICATION2) if (os_get_random(sm->ANonce, WPA_NONCE_LEN)) { wpa_printf( MSG_ERROR, "WPA: Failed to get random data for " "ANonce."); - wpa_sta_disconnect(sm->wpa_auth, sm->addr); + wpa_sta_disconnect(sm->wpa_auth, sm->addr, + WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT); return; } wpa_hexdump(MSG_DEBUG, "WPA: Assign ANonce", sm->ANonce, @@ -1645,11 +1658,8 @@ SM_STATE(WPA_PTK, PTKCALCNEGOTIATING) if (wpa_verify_key_mic(sm->wpa_key_mgmt, &PTK, sm->last_rx_eapol_key, sm->last_rx_eapol_key_len) == 0) { - wpa_printf( MSG_DEBUG, "mic verify ok, pmk=%p", pmk); ok = 1; break; - } else { - wpa_printf( MSG_DEBUG, "mic verify fail, pmk=%p", pmk); } if (!wpa_key_mgmt_wpa_psk(sm->wpa_key_mgmt) || @@ -1660,6 +1670,7 @@ SM_STATE(WPA_PTK, PTKCALCNEGOTIATING) } if (!ok) { + wpa_printf(MSG_INFO, "invalid MIC in msg 2/4 of 4-Way Handshake"); return; } @@ -1705,7 +1716,8 @@ SM_STATE(WPA_PTK, PTKCALCNEGOTIATING) sm->rsnxe, sm->rsnxe_len); wpa_hexdump(MSG_DEBUG, "RSNXE in EAPOL-Key msg 2/4", kde.rsnxe, kde.rsnxe_len); - wpa_sta_disconnect(sm->wpa_auth, sm->addr); + wpa_sta_disconnect(sm->wpa_auth, sm->addr, + WLAN_REASON_PREV_AUTH_NOT_VALID); return; } @@ -1950,7 +1962,8 @@ SM_STATE(WPA_PTK, PTKINITDONE) int klen = wpa_cipher_key_len(sm->pairwise); if (wpa_auth_set_key(sm->wpa_auth, 0, alg, sm->addr, 0, sm->PTK.tk, klen)) { - wpa_sta_disconnect(sm->wpa_auth, sm->addr); + wpa_sta_disconnect(sm->wpa_auth, sm->addr, + WLAN_REASON_PREV_AUTH_NOT_VALID); return; } /* FIX: MLME-SetProtection.Request(TA, Tx_Rx) */ @@ -2062,6 +2075,8 @@ SM_STEP(WPA_PTK) SM_ENTER(WPA_PTK, PTKCALCNEGOTIATING); else if (sm->TimeoutCtr > (int) dot11RSNAConfigPairwiseUpdateCount) { + sm->disconnect_reason = + WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT; SM_ENTER(WPA_PTK, DISCONNECT); } else if (sm->TimeoutEvt) SM_ENTER(WPA_PTK, PTKSTART); @@ -2086,6 +2101,8 @@ SM_STEP(WPA_PTK) SM_ENTER(WPA_PTK, PTKINITDONE); else if (sm->TimeoutCtr > (int) dot11RSNAConfigPairwiseUpdateCount) { + sm->disconnect_reason = + WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT; SM_ENTER(WPA_PTK, DISCONNECT); } else if (sm->TimeoutEvt) SM_ENTER(WPA_PTK, PTKINITNEGOTIATING); @@ -2191,6 +2208,7 @@ SM_STATE(WPA_PTK_GROUP, KEYERROR) sm->group->GKeyDoneStations--; sm->GUpdateStationKeys = FALSE; sm->Disconnect = TRUE; + sm->disconnect_reason = WLAN_REASON_GROUP_KEY_UPDATE_TIMEOUT; } diff --git a/components/wpa_supplicant/src/ap/wpa_auth_i.h b/components/wpa_supplicant/src/ap/wpa_auth_i.h index 672cc09425..2516b34f69 100644 --- a/components/wpa_supplicant/src/ap/wpa_auth_i.h +++ b/components/wpa_supplicant/src/ap/wpa_auth_i.h @@ -47,6 +47,7 @@ struct wpa_state_machine { Boolean AuthenticationRequest; Boolean ReAuthenticationRequest; Boolean Disconnect; + u16 disconnect_reason; /* specific reason code to use with Disconnect */ int TimeoutCtr; int GTimeoutCtr; Boolean TimeoutEvt; diff --git a/components/wpa_supplicant/src/rsn_supp/wpa.c b/components/wpa_supplicant/src/rsn_supp/wpa.c index 94cfa95fbc..42c8912b1b 100644 --- a/components/wpa_supplicant/src/rsn_supp/wpa.c +++ b/components/wpa_supplicant/src/rsn_supp/wpa.c @@ -2740,14 +2740,16 @@ int wpa_sm_set_ap_rsnxe(const u8 *ie, size_t len) sm->ap_rsnxe_len = len; } - sm->sae_pwe = esp_wifi_get_config_sae_pwe_h2e_internal(WIFI_IF_STA); + if (sm->ap_rsnxe != NULL) { + sm->sae_pwe = esp_wifi_get_config_sae_pwe_h2e_internal(WIFI_IF_STA); #ifdef CONFIG_SAE_PK - const u8 *pw = (const u8 *)esp_wifi_sta_get_prof_password_internal(); - if (esp_wifi_sta_get_config_sae_pk_internal() != WPA3_SAE_PK_MODE_DISABLED && - sae_pk_valid_password((const char*)pw)) { - sm->sae_pk = true; - } + const u8 *pw = (const u8 *)esp_wifi_sta_get_prof_password_internal(); + if (esp_wifi_sta_get_config_sae_pk_internal() != WPA3_SAE_PK_MODE_DISABLED && + sae_pk_valid_password((const char*)pw)) { + sm->sae_pk = true; + } #endif /* CONFIG_SAE_PK */ + } return 0; } From 8baaeb2fa3276f7419441768b3bbe6a85a96fabe Mon Sep 17 00:00:00 2001 From: Sarvesh Bodakhe Date: Wed, 15 Nov 2023 08:27:49 +0530 Subject: [PATCH 14/14] fix(wifi): fix bug in 'esp_wifi_deauthenticate_internal' and other improvements --- components/esp_wifi/lib | 2 +- components/wpa_supplicant/src/ap/wpa_auth.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/components/esp_wifi/lib b/components/esp_wifi/lib index 5b70cdbe16..6d324abd92 160000 --- a/components/esp_wifi/lib +++ b/components/esp_wifi/lib @@ -1 +1 @@ -Subproject commit 5b70cdbe16fe862925a50f9a5a251e7aa4b69f43 +Subproject commit 6d324abd923bf4895099680956c817e63005ce4f diff --git a/components/wpa_supplicant/src/ap/wpa_auth.c b/components/wpa_supplicant/src/ap/wpa_auth.c index 713a384bb7..9b380a4b1a 100644 --- a/components/wpa_supplicant/src/ap/wpa_auth.c +++ b/components/wpa_supplicant/src/ap/wpa_auth.c @@ -1443,8 +1443,7 @@ SM_STATE(WPA_PTK, AUTHENTICATION2) if (os_get_random(sm->ANonce, WPA_NONCE_LEN)) { wpa_printf( MSG_ERROR, "WPA: Failed to get random data for " "ANonce."); - wpa_sta_disconnect(sm->wpa_auth, sm->addr, - WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT); + sm->Disconnect = true; return; } wpa_hexdump(MSG_DEBUG, "WPA: Assign ANonce", sm->ANonce,