esp_wifi: fully support connectionless traffic with ps and coex

pull/9068/head
liuning 2022-03-15 17:08:12 +08:00 zatwierdzone przez BOT
rodzic 0ae391ef07
commit e0decf4839
12 zmienionych plików z 68 dodań i 29 usunięć

Wyświetl plik

@ -6,10 +6,10 @@ Version 3 API's imported from the ROM
esf_buf_alloc_dynamic = 0x400015c0;
esf_buf_recycle = 0x400015c4;
/*lmacTxDone = 0x4000162c;*/
ppMapTxQueue = 0x400016d8;
/*ppMapTxQueue = 0x400016d8;*/
rcGetSched = 0x40001764;
wDevCheckBlockError = 0x400017b4;
ppProcTxDone = 0x40001804;
/*ppProcTxDone = 0x40001804;*/
sta_input = rom_sta_input;
/***************************************

Wyświetl plik

@ -1525,7 +1525,7 @@ lmacReachShortLimit = 0x4000161c;
lmacRecycleMPDU = 0x40001620;
lmacRxDone = 0x40001624;
lmacSetTxFrame = 0x40001628;
lmacTxFrame = 0x40001630;
/*lmacTxFrame = 0x40001630;*/
mac_tx_set_duration = 0x40001634;
/* mac_tx_set_htsig = 0x40001638;*/
mac_tx_set_plcp0 = 0x4000163c;
@ -1553,7 +1553,7 @@ pm_rx_beacon_process = 0x40001690;
pm_rx_data_process = 0x40001694;
/*pm_sleep = 0x40001698;*/
pm_sleep_for = 0x4000169c;
pm_tbtt_process = 0x400016a0;
/*pm_tbtt_process = 0x400016a0;*/
ppAMPDU2Normal = 0x400016a4;
ppAssembleAMPDU = 0x400016a8;
ppCalFrameTimes = 0x400016ac;
@ -1761,7 +1761,7 @@ coex_core_pti_get = 0x400018c0;
coex_core_release = 0x400018c4;
coex_core_request = 0x400018c8;
coex_core_status_get = 0x400018cc;
coex_core_timer_idx_get = 0x400018d0;
/*coex_core_timer_idx_get = 0x400018d0;*/
coex_event_duration_get = 0x400018d4;
coex_hw_timer_disable = 0x400018d8;
coex_hw_timer_enable = 0x400018dc;

Wyświetl plik

@ -1830,7 +1830,7 @@ lmacRecycleMPDU = 0x400053a0;
lmacRxDone = 0x400053ac;
lmacSetTxFrame = 0x400053b8;
lmacTxDone = 0x400053c4;
lmacTxFrame = 0x400053d0;
/*lmacTxFrame = 0x400053d0;*/
mac_tx_set_duration = 0x400053dc;
/* mac_tx_set_htsig = 0x400053e8;*/
mac_tx_set_plcp0 = 0x400053f4;
@ -1858,7 +1858,7 @@ pm_rx_beacon_process = 0x400054f0;
pm_rx_data_process = 0x400054fc;
/*pm_sleep = 0x40005508;*/
pm_sleep_for = 0x40005514;
pm_tbtt_process = 0x40005520;
/*pm_tbtt_process = 0x40005520;*/
ppAMPDU2Normal = 0x4000552c;
ppAssembleAMPDU = 0x40005538;
ppCalFrameTimes = 0x40005544;
@ -1872,7 +1872,7 @@ ppEnqueueRxq = 0x40005598;
ppEnqueueTxDone = 0x400055a4;
ppGetTxQFirstAvail_Locked = 0x400055b0;
ppGetTxframe = 0x400055bc;
ppMapTxQueue = 0x400055c8;
/*ppMapTxQueue = 0x400055c8;*/
ppProcessRxPktHdr = 0x400055e0;
ppProcessTxQ = 0x400055ec;
ppRecordBarRRC = 0x400055f8;
@ -1946,7 +1946,7 @@ wDev_ProcessRxSucData = 0x4000591c;
wdevProcessRxSucDataAll = 0x40005928;
wdev_csi_len_align = 0x40005934;
ppDequeueTxDone_Locked = 0x40005940;
ppProcTxDone = 0x4000594c;
/*ppProcTxDone = 0x4000594c;*/
/*pm_tx_data_done_process = 0x40005958;*/
config_is_cache_tx_buf_enabled = 0x40005964;
ppMapWaitTxq = 0x40005970;
@ -2073,7 +2073,7 @@ coex_core_pti_get = 0x40005ba4;
coex_core_release = 0x40005bb0;
coex_core_request = 0x40005bbc;
coex_core_status_get = 0x40005bc8;
coex_core_timer_idx_get = 0x40005bd4;
/*coex_core_timer_idx_get = 0x40005bd4;*/
coex_event_duration_get = 0x40005be0;
coex_hw_timer_disable = 0x40005bec;
coex_hw_timer_enable = 0x40005bf8;

Wyświetl plik

@ -646,6 +646,15 @@ static int coex_schm_curr_phase_idx_get_wrapper(void)
#endif
}
static int coex_register_start_cb_wrapper(int (* cb)(void))
{
#if CONFIG_SW_COEXIST_ENABLE
return coex_register_start_cb(cb);
#else
return 0;
#endif
}
static void IRAM_ATTR esp_empty_wrapper(void)
{
@ -773,6 +782,7 @@ wifi_osi_funcs_t g_wifi_osi_funcs = {
._coex_schm_curr_phase_get = coex_schm_curr_phase_get_wrapper,
._coex_schm_curr_phase_idx_set = coex_schm_curr_phase_idx_set_wrapper,
._coex_schm_curr_phase_idx_get = coex_schm_curr_phase_idx_get_wrapper,
._coex_register_start_cb = coex_register_start_cb_wrapper,
._magic = ESP_WIFI_OS_ADAPTER_MAGIC,
};

Wyświetl plik

@ -642,6 +642,15 @@ static int coex_schm_curr_phase_idx_get_wrapper(void)
#endif
}
static int coex_register_start_cb_wrapper(int (* cb)(void))
{
#if CONFIG_SW_COEXIST_ENABLE
return coex_register_start_cb(cb);
#else
return 0;
#endif
}
static void IRAM_ATTR esp_empty_wrapper(void)
{
@ -763,6 +772,7 @@ wifi_osi_funcs_t g_wifi_osi_funcs = {
._coex_schm_curr_phase_get = coex_schm_curr_phase_get_wrapper,
._coex_schm_curr_phase_idx_set = coex_schm_curr_phase_idx_set_wrapper,
._coex_schm_curr_phase_idx_get = coex_schm_curr_phase_idx_get_wrapper,
._coex_register_start_cb = coex_register_start_cb_wrapper,
._magic = ESP_WIFI_OS_ADAPTER_MAGIC,
};

Wyświetl plik

@ -649,6 +649,15 @@ static int coex_schm_curr_phase_idx_get_wrapper(void)
#endif
}
static int coex_register_start_cb_wrapper(int (* cb)(void))
{
#if CONFIG_SW_COEXIST_ENABLE
return coex_register_start_cb(cb);
#else
return 0;
#endif
}
static void IRAM_ATTR esp_empty_wrapper(void)
{
@ -775,6 +784,7 @@ wifi_osi_funcs_t g_wifi_osi_funcs = {
._coex_schm_curr_phase_get = coex_schm_curr_phase_get_wrapper,
._coex_schm_curr_phase_idx_set = coex_schm_curr_phase_idx_set_wrapper,
._coex_schm_curr_phase_idx_get = coex_schm_curr_phase_idx_get_wrapper,
._coex_register_start_cb = coex_register_start_cb_wrapper,
._magic = ESP_WIFI_OS_ADAPTER_MAGIC,
};

Wyświetl plik

@ -666,6 +666,15 @@ static int coex_schm_curr_phase_idx_get_wrapper(void)
#endif
}
static int coex_register_start_cb_wrapper(int (* cb)(void))
{
#if CONFIG_SW_COEXIST_ENABLE
return coex_register_start_cb(cb);
#else
return 0;
#endif
}
static void IRAM_ATTR esp_empty_wrapper(void)
{
@ -792,6 +801,7 @@ wifi_osi_funcs_t g_wifi_osi_funcs = {
._coex_schm_curr_phase_get = coex_schm_curr_phase_get_wrapper,
._coex_schm_curr_phase_idx_set = coex_schm_curr_phase_idx_set_wrapper,
._coex_schm_curr_phase_idx_get = coex_schm_curr_phase_idx_get_wrapper,
._coex_register_start_cb = coex_register_start_cb_wrapper,
._magic = ESP_WIFI_OS_ADAPTER_MAGIC,
};

Wyświetl plik

@ -196,8 +196,10 @@ int coex_schm_curr_phase_idx_set(int idx);
int coex_schm_curr_phase_idx_get(void);
/**
* @brief TODO - WIFI-4423
* @brief Register WiFi callback for coexistence starts.
*
* @param cb : WiFi callback
* @return : 0 - success, other - failed
*/
int coex_register_start_cb(int (* cb)(void));

Wyświetl plik

@ -309,15 +309,13 @@ esp_err_t esp_now_get_peer_num(esp_now_peer_num_t *num);
esp_err_t esp_now_set_pmk(const uint8_t *pmk);
/**
* @brief Set esp_now wake window for sta_disconnected power management
* @brief Set wake window for esp_now to wake up in interval unit
*
* @param window how much microsecond would the chip keep waked each interval, vary from 0 to 65535
* @param window Milliseconds would the chip keep waked each interval, from 0 to 65535.
*
* @attention 1. Only when ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is enabled, this configuration could work
* @attention 2. This configuration only work for station mode and disconnected status
* @attention 3. If more than one module has configured its wake_window, chip would choose the largest one to stay waked
* @attention 4. If the gap between interval and window is smaller than 5ms, the chip would keep waked all the time
* @attention 5. If never configured wake_window, the chip would keep waked at disconnected once it uses esp_now
* @attention 1. This configuration could work at connected status.
* When ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is enabled, this configuration could work at disconnected status.
* @attention 2. Default value is the maximum.
*
* @return
* - ESP_OK : succeed

Wyświetl plik

@ -22,8 +22,6 @@ extern "C" {
#define OSI_QUEUE_SEND_BACK 1
#define OSI_QUEUE_SEND_OVERWRITE 2
typedef int(* coex_start_wifi_cb_t)(void);
typedef struct {
int32_t _version;
bool (* _env_is_chip)(void);
@ -146,7 +144,7 @@ typedef struct {
void * (* _coex_schm_curr_phase_get)(void);
int (* _coex_schm_curr_phase_idx_set)(int idx);
int (* _coex_schm_curr_phase_idx_get)(void);
int (* _coex_register_start_cb)(coex_start_wifi_cb_t cb);
int (* _coex_register_start_cb)(int (* cb)(void));
int32_t _magic;
} wifi_osi_funcs_t;

Wyświetl plik

@ -1209,16 +1209,17 @@ esp_err_t esp_wifi_ftm_resp_set_offset(int16_t offset_cm);
esp_err_t esp_wifi_config_11b_rate(wifi_interface_t ifx, bool disable);
/**
* @brief Set interval for station to wake up periodically at disconnected.
* @brief Set wake interval for connectionless modules to wake up periodically.
*
* @attention 1. Only when ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is enabled, this configuration could work
* @attention 2. This configuration only work for station mode and disconnected status
* @attention 3. This configuration would influence nothing until some module configure wake_window
* @attention 4. A sensible interval which is not too small is recommended (e.g. 100ms)
* @attention 1. Only one wake interval for all connectionless modules.
* @attention 2. This configuration could work at connected status.
* When ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is enabled, this configuration could work at disconnected status.
* @attention 3. Event WIFI_EVENT_CONNECTIONLESS_MODULE_WAKE_INTERVAL_START would be posted each time wake interval starts.
* @attention 4. Recommend to configure interval in multiples of hundred. (e.g. 100ms)
*
* @param interval how much micriosecond would the chip wake up, from 1 to 65535.
* @param wake_interval Milliseconds after would the chip wake up, from 1 to 65535.
*/
esp_err_t esp_wifi_connectionless_module_set_wake_interval(uint16_t interval);
esp_err_t esp_wifi_connectionless_module_set_wake_interval(uint16_t wake_interval);
/**
* @brief configure country

@ -1 +1 @@
Subproject commit a0b316b22acb6fbc6001f8dc7da8d26cd564cc05
Subproject commit 05794b1c8898c9b43bd8c1b3418dea0f140ec303