diff --git a/components/ethernet/Kconfig b/components/ethernet/Kconfig index 5808c525d..c91ad5d57 100644 --- a/components/ethernet/Kconfig +++ b/components/ethernet/Kconfig @@ -50,4 +50,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 4b20c6aca..c86277383 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 042e2de1f..5a0b38891 100644 --- a/components/ethernet/emac_main.c +++ b/components/ethernet/emac_main.c @@ -816,6 +816,7 @@ static void emac_start(void *param) emac_enable_clk(true); emac_reset(); + emac_dma_init(); emac_set_macaddr_reg(); @@ -1155,8 +1156,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);