diff --git a/components/ethernet/Kconfig b/components/ethernet/Kconfig index f7281bc4cb..dab89ff105 100644 --- a/components/ethernet/Kconfig +++ b/components/ethernet/Kconfig @@ -42,4 +42,11 @@ config EMAC_TASK_PRIORITY help Ethernet MAC task priority. +config EMAC_TASK_STACK_SIZE + int "Stack Size of EMAC Task" + default 3072 + range 2000 8000 + help + Stack Size of Ethernet MAC task. + endmenu diff --git a/components/ethernet/emac_common.h b/components/ethernet/emac_common.h index 4b20c6aca3..c862773834 100644 --- a/components/ethernet/emac_common.h +++ b/components/ethernet/emac_common.h @@ -106,6 +106,7 @@ struct emac_close_cmd { #define DMA_RX_BUF_NUM CONFIG_DMA_RX_BUF_NUM #define DMA_TX_BUF_NUM CONFIG_DMA_TX_BUF_NUM #define EMAC_TASK_PRIORITY CONFIG_EMAC_TASK_PRIORITY +#define EMAC_TASK_STACK_SIZE CONFIG_EMAC_TASK_STACK_SIZE #define DMA_RX_BUF_SIZE 1600 #define DMA_TX_BUF_SIZE 1600 diff --git a/components/ethernet/emac_main.c b/components/ethernet/emac_main.c index f89c56952f..208a83e39a 100644 --- a/components/ethernet/emac_main.c +++ b/components/ethernet/emac_main.c @@ -769,6 +769,7 @@ static void emac_start(void *param) emac_enable_clk(true); emac_reset(); + emac_dma_init(); emac_set_macaddr_reg(); @@ -1101,7 +1102,8 @@ esp_err_t esp_eth_init_internal(eth_config_t *config) emac_rx_xMutex = xSemaphoreCreateRecursiveMutex(); emac_tx_xMutex = xSemaphoreCreateRecursiveMutex(); emac_xqueue = xQueueCreate(EMAC_EVT_QNUM, sizeof(emac_event_t)); - xTaskCreate(emac_task, "emacT", 2048, NULL, EMAC_TASK_PRIORITY, &emac_task_hdl); + xTaskCreate(emac_task, "emacT", EMAC_TASK_STACK_SIZE, NULL, + EMAC_TASK_PRIORITY, &emac_task_hdl); emac_enable_clk(false); esp_intr_alloc(ETS_ETH_MAC_INTR_SOURCE, 0, emac_process_intr, NULL, NULL);