mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-06-06 13:59:16 +08:00
Merge branch 'feature/refactor_and_add_more_wifi_feature_for_11n_certificate' into 'master'
feat(wifi): refactor and add more wifi feature for 11n certificate See merge request sdk/ESP8266_RTOS_SDK!1044
This commit is contained in:
@ -323,7 +323,7 @@ config ESP_ERR_TO_NAME_LOOKUP
|
||||
|
||||
endmenu
|
||||
|
||||
menu WIFI
|
||||
menu Wi-Fi
|
||||
|
||||
config SCAN_AP_MAX
|
||||
int "Max scan AP number"
|
||||
@ -336,12 +336,84 @@ config SCAN_AP_MAX
|
||||
User can use own function "esp_wifi_scan_get_ap_num_max" to determin how many AP to scan , too.
|
||||
|
||||
config WIFI_TX_RATE_SEQUENCE_FROM_HIGH
|
||||
bool "Set wifi tx rate from 54M to 1M"
|
||||
bool "Set WiFi TX rate from 54M to 1M"
|
||||
default y
|
||||
help
|
||||
If this option is enabled, Wifi will try to send packets first from high rate(54M). If it fails, it will
|
||||
If this option is enabled, WiFi will try to send packets first from high rate(54M). If it fails, it will
|
||||
try at low rate until the transmission is successful.
|
||||
|
||||
config ESP8266_WIFI_QOS_ENABLED
|
||||
bool "WiFi QoS"
|
||||
default n
|
||||
help
|
||||
Select this option to enable QoS feature
|
||||
|
||||
config ESP8266_WIFI_AMPDU_RX_ENABLED
|
||||
bool "WiFi AMPDU RX"
|
||||
default n
|
||||
help
|
||||
Select this option to enable AMPDU RX feature
|
||||
|
||||
config ESP8266_WIFI_RX_BA_WIN_SIZE
|
||||
int "WiFi AMPDU RX BA window size"
|
||||
depends on ESP8266_WIFI_AMPDU_RX_ENABLED
|
||||
range 0 16
|
||||
default 6
|
||||
help
|
||||
Set the size of WiFi Block Ack RX window. Generally a bigger value means higher throughput and better
|
||||
compatibility but more memory.
|
||||
|
||||
config ESP8266_WIFI_AMSDU_ENABLED
|
||||
bool "WiFi AMSDU RX"
|
||||
default n
|
||||
help
|
||||
Select this option to enable AMSDU feature
|
||||
|
||||
config ESP8266_WIFI_RX_BUFFER_NUM
|
||||
int "Max number of WiFi RX buffers"
|
||||
range 14 28
|
||||
default 16
|
||||
help
|
||||
Set the number of WiFi RX buffers. Each buffer takes approximately ESP8266_WIFI_RX_BUFFER_LEN bytes of RAM.
|
||||
|
||||
WiFi hardware use these buffers to receive all 802.11 frames.
|
||||
A higher number may allow higher throughput but increases memory use. If ESP8266_WIFI_AMPDU_RX_ENABLED
|
||||
is enabled, this value is recommended to set equal or bigger than 8*1024/ESP8266_WIFI_RX_BUFFER_LEN in order
|
||||
to achieve better throughput and compatibility with both stations and APs.
|
||||
Most of time we should NOT change the default value unless special reason, e.g. test the maximum UDP RX
|
||||
throughput with iperf etc. For iperf test in shieldbox, the recommended value is 26.
|
||||
|
||||
config ESP8266_WIFI_LEFT_CONTINUOUS_RX_BUFFER_NUM
|
||||
int "The min number of WiFi continuous RX buffer"
|
||||
range 0 16
|
||||
default 4
|
||||
help
|
||||
Set the number of WiFi continuous RX buffer num.
|
||||
The smaller the value, the easier RX hang will appear. Most of time we should NOT change the default
|
||||
value unless special reason.
|
||||
|
||||
config ESP8266_WIFI_RX_PKT_NUM
|
||||
int "Max number of WiFi RX packets"
|
||||
range 4 16
|
||||
default 7
|
||||
help
|
||||
Set the max number of signle WiFi packet.
|
||||
|
||||
config ESP8266_WIFI_TX_PKT_NUM
|
||||
int "Max number of WiFi TX packets"
|
||||
range 4 16
|
||||
default 6
|
||||
help
|
||||
Set the number of WiFi TX packets. Each buffer takes approximately 1.6KB of RAM.
|
||||
For some applications especially UDP applications, the upper layer can deliver frames faster than WiFi
|
||||
layer can transmit. In these cases, we may run out of TX packets.
|
||||
|
||||
config ESP8266_WIFI_NVS_ENABLED
|
||||
bool "WiFi NVS flash"
|
||||
default y
|
||||
help
|
||||
Select this option to enable WiFi NVS flash
|
||||
|
||||
config ESP8266_WIFI_DEBUG_LOG_ENABLE
|
||||
bool "Enable WiFi debug log"
|
||||
default n
|
||||
@ -463,6 +535,27 @@ config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_WPS
|
||||
help
|
||||
When this option is enabled, log for wps module will be enabled.
|
||||
|
||||
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_AMPDU
|
||||
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
|
||||
bool "ampdu"
|
||||
default n
|
||||
help
|
||||
When this option is enabled, log for ampdu module will be enabled.
|
||||
|
||||
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_AMSDU
|
||||
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
|
||||
bool "amsdu"
|
||||
default n
|
||||
help
|
||||
When this option is enabled, log for amsdu module will be enabled.
|
||||
|
||||
config ESP8266_WIFI_DEBUG_LOG_SUBMODULE_FRAG
|
||||
depends on ESP8266_WIFI_DEBUG_LOG_SUBMODULE
|
||||
bool "fragment"
|
||||
default n
|
||||
help
|
||||
When this option is enabled, log for frag module will be enabled.
|
||||
|
||||
endmenu
|
||||
|
||||
menu PHY
|
||||
|
@ -97,40 +97,77 @@ extern "C" {
|
||||
* @brief WiFi stack configuration parameters passed to esp_wifi_init call.
|
||||
*/
|
||||
typedef struct {
|
||||
system_event_handler_t event_handler; /**< WiFi event handler */
|
||||
void* osi_funcs; /**< WiFi OS functions */
|
||||
int static_rx_buf_num; /**< WiFi static RX buffer number */
|
||||
int dynamic_rx_buf_num; /**< WiFi dynamic RX buffer number */
|
||||
int tx_buf_type; /**< WiFi TX buffer type */
|
||||
int static_tx_buf_num; /**< WiFi static TX buffer number */
|
||||
int dynamic_tx_buf_num; /**< WiFi dynamic TX buffer number */
|
||||
int csi_enable; /**< WiFi channel state information enable flag */
|
||||
int ampdu_rx_enable; /**< WiFi AMPDU RX feature enable flag */
|
||||
int ampdu_tx_enable; /**< WiFi AMPDU TX feature enable flag */
|
||||
int nvs_enable; /**< WiFi NVS flash enable flag */
|
||||
int nano_enable; /**< Nano option for printf/scan family enable flag */
|
||||
int tx_ba_win; /**< WiFi Block Ack TX window size */
|
||||
int rx_ba_win; /**< WiFi Block Ack RX window size */
|
||||
int magic; /**< WiFi init magic number, it should be the last field */
|
||||
system_event_handler_t event_handler; /**< WiFi event handler */
|
||||
void* osi_funcs; /**< WiFi OS functions */
|
||||
uint8_t qos_enable; /**< WiFi QOS feature enable flag */
|
||||
uint8_t ampdu_rx_enable; /**< WiFi AMPDU RX feature enable flag */
|
||||
uint8_t rx_ba_win; /**< WiFi Block Ack RX window size */
|
||||
uint8_t rx_ampdu_buf_num; /**< WiFi AMPDU RX buffer number */
|
||||
uint32_t rx_ampdu_buf_len; /**< WiFi AMPDU RX buffer length */
|
||||
uint32_t rx_max_single_pkt_len; /**< WiFi RX max single packet size */
|
||||
uint32_t rx_buf_len; /**< WiFi RX buffer size */
|
||||
uint8_t amsdu_rx_enable; /**< WiFi AMSDU RX feature enable flag */
|
||||
uint8_t rx_buf_num; /**< WiFi RX buffer number */
|
||||
uint8_t rx_pkt_num; /**< WiFi RX packet number */
|
||||
uint8_t left_continuous_rx_buf_num; /**< WiFi Rx left continuous rx buffer number */
|
||||
uint8_t tx_buf_num; /**< WiFi TX buffer number */
|
||||
uint8_t nvs_enable; /**< WiFi NVS flash enable flag */
|
||||
uint8_t nano_enable; /**< Nano option for printf/scan family enable flag */
|
||||
uint32_t magic; /**< WiFi init magic number, it should be the last field */
|
||||
} wifi_init_config_t;
|
||||
|
||||
#if CONFIG_ESP8266_WIFI_AMPDU_RX_ENABLED
|
||||
#define WIFI_AMPDU_RX_ENABLED 1
|
||||
#define WIFI_AMPDU_RX_BA_WIN CONFIG_ESP8266_WIFI_RX_BA_WIN_SIZE
|
||||
#define WIFI_RX_MAX_SINGLE_PKT_LEN 1600
|
||||
#else
|
||||
#define WIFI_AMPDU_RX_ENABLED 0
|
||||
#define WIFI_AMPDU_RX_BA_WIN 0 /* unused if ampdu_rx_enable == false */
|
||||
#define WIFI_RX_MAX_SINGLE_PKT_LEN (1600 - 524)
|
||||
#endif
|
||||
#define WIFI_AMPDU_RX_AMPDU_BUF_LEN 72
|
||||
#define WIFI_AMPDU_RX_AMPDU_BUF_NUM 3
|
||||
#define WIFI_HW_RX_BUFFER_LEN 524
|
||||
|
||||
#if CONFIG_ESP8266_WIFI_QOS_ENABLED
|
||||
#define WIFI_QOS_ENABLED 1
|
||||
#else
|
||||
#define WIFI_QOS_ENABLED 0
|
||||
#endif
|
||||
|
||||
#if CONFIG_ESP8266_WIFI_AMSDU_ENABLED
|
||||
#define WIFI_AMSDU_RX_ENABLED 1
|
||||
#undef WIFI_RX_MAX_SINGLE_PKT_LEN
|
||||
#define WIFI_RX_MAX_SINGLE_PKT_LEN 3000
|
||||
#else
|
||||
#define WIFI_AMSDU_RX_ENABLED 0
|
||||
#endif
|
||||
|
||||
#if CONFIG_ESP8266_WIFI_NVS_ENABLED
|
||||
#define WIFI_NVS_ENABLED 1
|
||||
#else
|
||||
#define WIFI_NVS_ENABLED 0
|
||||
#endif
|
||||
|
||||
#define WIFI_INIT_CONFIG_MAGIC 0x1F2F3F4F
|
||||
|
||||
#define WIFI_INIT_CONFIG_DEFAULT() { \
|
||||
.event_handler = &esp_event_send, \
|
||||
.osi_funcs = NULL, \
|
||||
.static_rx_buf_num = 5,\
|
||||
.dynamic_rx_buf_num = 0,\
|
||||
.tx_buf_type = 0,\
|
||||
.static_tx_buf_num = 6,\
|
||||
.dynamic_tx_buf_num = 0,\
|
||||
.csi_enable = 0,\
|
||||
.ampdu_rx_enable = 0,\
|
||||
.ampdu_tx_enable = 0,\
|
||||
.nvs_enable = 1,\
|
||||
.qos_enable = WIFI_QOS_ENABLED,\
|
||||
.ampdu_rx_enable = WIFI_AMPDU_RX_ENABLED,\
|
||||
.rx_ampdu_buf_len = WIFI_AMPDU_RX_AMPDU_BUF_LEN,\
|
||||
.rx_ampdu_buf_num = WIFI_AMPDU_RX_AMPDU_BUF_NUM,\
|
||||
.amsdu_rx_enable = WIFI_AMSDU_RX_ENABLED,\
|
||||
.rx_ba_win = WIFI_AMPDU_RX_BA_WIN,\
|
||||
.rx_max_single_pkt_len = WIFI_RX_MAX_SINGLE_PKT_LEN,\
|
||||
.rx_buf_len = WIFI_HW_RX_BUFFER_LEN,\
|
||||
.rx_buf_num = CONFIG_ESP8266_WIFI_RX_BUFFER_NUM,\
|
||||
.left_continuous_rx_buf_num = CONFIG_ESP8266_WIFI_LEFT_CONTINUOUS_RX_BUFFER_NUM,\
|
||||
.rx_pkt_num = CONFIG_ESP8266_WIFI_RX_PKT_NUM,\
|
||||
.tx_buf_num = CONFIG_ESP8266_WIFI_TX_PKT_NUM,\
|
||||
.nvs_enable = WIFI_NVS_ENABLED,\
|
||||
.nano_enable = 0,\
|
||||
.tx_ba_win = 0,\
|
||||
.rx_ba_win = 0,\
|
||||
.magic = WIFI_INIT_CONFIG_MAGIC\
|
||||
};
|
||||
|
||||
|
@ -53,7 +53,9 @@ typedef enum {
|
||||
#define WIFI_LOG_SUBMODULE_MAC (1<<9)
|
||||
#define WIFI_LOG_SUBMODULE_WPA (1<<10)
|
||||
#define WIFI_LOG_SUBMODULE_WPS (1<<11)
|
||||
|
||||
#define WIFI_LOG_SUBMODULE_AMPDU (1<<12)
|
||||
#define WIFI_LOG_SUBMODULE_AMSDU (1<<13)
|
||||
#define WIFI_LOG_SUBMODULE_FRAG (1<<14)
|
||||
/**
|
||||
* @brief Set WIFI received TCP/IP data cache ram type
|
||||
*
|
||||
|
@ -1,10 +1,10 @@
|
||||
gwen:
|
||||
core: 0dd3307
|
||||
net80211: faae3bc
|
||||
pp: 522f8df
|
||||
wpa: 33a48e5
|
||||
espnow: da96924
|
||||
wps: da96924
|
||||
core: 7f8c705
|
||||
net80211: 7f8c705
|
||||
pp: 7f8c705
|
||||
wpa: 7f8c705
|
||||
espnow: 7f8c705
|
||||
wps: 7f8c705
|
||||
|
||||
smartconfig: 2.8.1
|
||||
phy: 1055_22
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -76,6 +76,15 @@ static void esp_wifi_set_debug_log()
|
||||
#endif
|
||||
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_WPS
|
||||
wifi_log_submodule |= WIFI_LOG_SUBMODULE_WPS;
|
||||
#endif
|
||||
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_AMPDU
|
||||
wifi_log_submodule |= WIFI_LOG_SUBMODULE_AMPDU;
|
||||
#endif
|
||||
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_AMSDU
|
||||
wifi_log_submodule |= WIFI_LOG_SUBMODULE_AMSDU;
|
||||
#endif
|
||||
#if CONFIG_ESP8266_WIFI_DEBUG_LOG_SUBMODULE_FRAG
|
||||
wifi_log_submodule |= WIFI_LOG_SUBMODULE_FRAG;
|
||||
#endif
|
||||
esp_wifi_internal_set_log_level(wifi_log_level);
|
||||
esp_wifi_internal_set_log_mod(wifi_log_submodule);
|
||||
|
@ -29,6 +29,8 @@ void phy_afterwake_set_rfoption(uint8_t);
|
||||
void write_data_to_rtc(uint8_t *);
|
||||
|
||||
void get_data_from_rtc(uint8_t *);
|
||||
int register_chipv6_phy(uint8_t* );
|
||||
void phy_disable_agc();
|
||||
|
||||
uint8_t chip_init(uint8_t* init_data, uint8_t *mac, uint32_t uart_baudrate);
|
||||
|
||||
|
@ -68,12 +68,7 @@ esp_err_t esp_phy_rf_init(const esp_phy_init_data_t* init_data, esp_phy_calibrat
|
||||
{
|
||||
esp_err_t status = ESP_OK;
|
||||
uint8_t sta_mac[6];
|
||||
uint8_t* local_init_data = calloc(1, 256);
|
||||
#ifdef CONFIG_CONSOLE_UART_BAUDRATE
|
||||
const uint32_t uart_baudrate = CONFIG_CONSOLE_UART_BAUDRATE;
|
||||
#else
|
||||
const uint32_t uart_baudrate = 74880; // ROM default baudrate
|
||||
#endif
|
||||
uint8_t *local_init_data = calloc(1, 256);
|
||||
|
||||
memcpy(local_init_data, init_data->params, 128);
|
||||
|
||||
@ -89,9 +84,16 @@ esp_err_t esp_phy_rf_init(const esp_phy_init_data_t* init_data, esp_phy_calibrat
|
||||
}
|
||||
|
||||
esp_efuse_mac_get_default(sta_mac);
|
||||
chip_init(local_init_data, sta_mac, uart_baudrate);
|
||||
ESP_LOGI(TAG, "phy ver: %d_%d", (READ_PERI_REG(0x6000107C) >> 16) & 0xFFF, READ_PERI_REG(0x6000107C) >> 28);
|
||||
get_data_from_rtc((uint8_t*)calibration_data);
|
||||
|
||||
int ret = register_chipv6_phy(local_init_data);
|
||||
if (ret) {
|
||||
ESP_LOGI(TAG, "phy register error, ret:%d", ret);
|
||||
}
|
||||
|
||||
phy_disable_agc();
|
||||
|
||||
ESP_LOGI(TAG, "phy ver: %d_%d", (READ_PERI_REG(0x6000107C)>>16)&0xFFF, READ_PERI_REG(0x6000107C)>>28);
|
||||
get_data_from_rtc((uint8_t *)calibration_data);
|
||||
|
||||
memcpy(rx_gain_dc_table, calibration_data->rx_gain_dc_table, 4 * 125);
|
||||
phy_rx_gain_dc_table = rx_gain_dc_table;
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "internal/esp_wifi_internal.h"
|
||||
#include "internal/esp_system_internal.h"
|
||||
#include "esp8266/eagle_soc.h"
|
||||
#include "esp8266/uart_register.h"
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
@ -47,6 +48,7 @@ extern int wifi_timer_init(void);
|
||||
extern int wifi_nvs_init(void);
|
||||
extern esp_err_t esp_pthread_init(void);
|
||||
extern void phy_get_bb_evm(void);
|
||||
extern void uart_div_modify(uint8_t uart_no, uint16_t DivLatchValue);
|
||||
|
||||
static inline int should_load(uint32_t load_addr)
|
||||
{
|
||||
@ -61,6 +63,19 @@ static inline int should_load(uint32_t load_addr)
|
||||
return 1;
|
||||
}
|
||||
|
||||
static inline void uart_init()
|
||||
{
|
||||
#ifdef CONFIG_CONSOLE_UART_BAUDRATE
|
||||
const uint32_t uart_baudrate = CONFIG_CONSOLE_UART_BAUDRATE;
|
||||
#else
|
||||
const uint32_t uart_baudrate = 74880; // ROM default baudrate
|
||||
#endif
|
||||
while (READ_PERI_REG(UART_STATUS(0)) & (UART_TXFIFO_CNT << UART_TXFIFO_CNT_S));
|
||||
while (READ_PERI_REG(UART_STATUS(1)) & (UART_TXFIFO_CNT << UART_TXFIFO_CNT_S));
|
||||
uart_div_modify(0, UART_CLK_FREQ / uart_baudrate);
|
||||
uart_div_modify(1, UART_CLK_FREQ / uart_baudrate);
|
||||
}
|
||||
|
||||
static void user_init_entry(void *param)
|
||||
{
|
||||
void (**func)(void);
|
||||
@ -76,13 +91,16 @@ static void user_init_entry(void *param)
|
||||
|
||||
phy_get_bb_evm();
|
||||
|
||||
/*enable tsf0 interrupt for pwm*/
|
||||
REG_WRITE(PERIPHS_DPORT_BASEADDR, (REG_READ(PERIPHS_DPORT_BASEADDR) & ~0x1F) | 0x1);
|
||||
REG_WRITE(INT_ENA_WDEV, REG_READ(INT_ENA_WDEV) | WDEV_TSF0_REACH_INT);
|
||||
|
||||
assert(nvs_flash_init() == 0);
|
||||
assert(wifi_nvs_init() == 0);
|
||||
assert(rtc_init() == 0);
|
||||
assert(mac_init() == 0);
|
||||
uart_init();
|
||||
assert(base_gpio_init() == 0);
|
||||
esp_phy_load_cal_and_init(0);
|
||||
assert(wifi_timer_init() == 0);
|
||||
|
||||
esp_wifi_set_rx_pbuf_mem_type(WIFI_RX_PBUF_DRAM);
|
||||
|
||||
|
Reference in New Issue
Block a user