# Copyright 2020 Espressif Systems (Shanghai) PTE LTD

menuconfig WIFI_ESP32
	bool "ESP32 SoC WiFi support"
	default y
	depends on DT_HAS_ESPRESSIF_ESP32_WIFI_ENABLED
	depends on !SMP
	select THREAD_CUSTOM_DATA
	select NET_L2_WIFI_MGMT
	select WIFI_USE_NATIVE_NETWORKING
	select MBEDTLS
	select MBEDTLS_ENTROPY_ENABLED
	select MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
	select MBEDTLS_ECP_ALL_ENABLED
	help
	  Enable ESP32 SoC WiFi support. Only supported in single
	  core mode because the network stack is not aware of SMP
	  stuff.

if WIFI_ESP32

config ESP32_WIFI_SSID
	string "SSID of WiFi network"
	help
	  SSID (network name) for the application to connect to.

config ESP32_WIFI_PASSWORD
	string "Password (WPA or WPA2) of WiFi network"
	help
	  WiFi password (WPA or WPA2) for the example to use.

config ESP32_WIFI_STA_AUTO_DHCPV4
	bool "Automatically starts DHCP4 negotiation"
	depends on NET_DHCPV4
	depends on NET_IPV4
	help
	  WiFi driver will automatically initiate DHCPV4 negotiation when connected.

config ESP32_WIFI_STA_RECONNECT
	bool "WiFi connection retry"
	help
	  Set auto WiFI reconnection when disconnected.

config ESP32_WIFI_EVENT_TASK_STACK_SIZE
	int "Event Task Stack Size"
	default 4096

config ESP32_WIFI_EVENT_TASK_PRIO
	int "Event Task Priority"
	default 4

config ESP32_WIFI_STATIC_RX_BUFFER_NUM
	int "Max number of WiFi static RX buffers"
	range 2 25
	default 10
	help
	  Set the number of WiFi static RX buffers. Each buffer takes approximately
	  1.6KB of RAM. The static rx buffers are allocated when esp_wifi_init is
	  called, they are not freed until esp_wifi_deinit is called.

	  WiFi hardware use these buffers to receive all 802.11 frames. A higher
	  number may allow higher throughput but increases memory use.
	  If ESP32_WIFI_AMPDU_RX_ENABLED is enabled, this value is recommended to
	  set equal or bigger than ESP32_WIFI_RX_BA_WIN in order to achieve better
	  throughput and compatibility with both stations and APs.

config ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM
	int "Max number of WiFi dynamic RX buffers"
	range 0 128
	default 32
	help
	  Set the number of WiFi dynamic RX buffers, 0 means unlimited RX buffers
	  will be allocated (provided sufficient free RAM). The size of each dynamic
	  RX buffer depends on the size of the received data frame.

	  For each received data frame, the WiFi driver makes a copy to an RX buffer
	  and then delivers it to the high layer TCP/IP stack. The dynamic RX buffer
	  is freed after the higher layer has successfully received the data frame.

	  For some applications, WiFi data frames may be received faster than the
	  application can process them. In these cases we may run out of memory if
	  RX buffer number is unlimited (0). If a dynamic RX buffer limit is set,
	  it should be at least the number of static RX buffers.

choice ESP32_WIFI_TX_BUFFER
	prompt "Type of WiFi TX buffers"
	default ESP32_WIFI_DYNAMIC_TX_BUFFER
	help
	  Select type of WiFi TX buffers:

	  If "Static" is selected, WiFi TX buffers are allocated when WiFi is
	  initialized and released when WiFi is de-initialized. The size of each
	  static TX buffer is fixed to about 1.6KB.

	  If "Dynamic" is selected, each WiFi TX buffer is allocated as needed
	  when a data frame is delivered to the Wifi driver from the TCP/IP stack.
	  The buffer is freed after the data frame has been sent by the WiFi driver.
	  The size of each dynamic TX buffer depends on the length of each data
	  frame sent by the TCP/IP layer.

	  If PSRAM is enabled, "Static" should be selected to guarantee enough
	  WiFi TX buffers. If PSRAM is disabled, "Dynamic" should be selected
	  to improve the utilization of RAM.

	config ESP32_WIFI_STATIC_TX_BUFFER
		bool "Static"
	config ESP32_WIFI_DYNAMIC_TX_BUFFER
		bool "Dynamic"
endchoice

config ESP32_WIFI_TX_BUFFER_TYPE
	int
	default 0 if ESP32_WIFI_STATIC_TX_BUFFER
	default 1 if ESP32_WIFI_DYNAMIC_TX_BUFFER

config ESP32_WIFI_STATIC_TX_BUFFER_NUM
	int "Max number of WiFi static TX buffers"
	depends on ESP32_WIFI_STATIC_TX_BUFFER
	range 1 64
	default 16
	help
	  Set the number of WiFi static TX buffers. Each buffer takes approximately
	  1.6KB of RAM. The static RX buffers are allocated when esp_wifi_init() is
	  called, they are not released until esp_wifi_deinit() is called.

	  For each transmitted data frame from the higher layer TCP/IP stack,
	  the WiFi driver makes a copy of it in a TX buffer.  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 buffers.

config ESP32_WIFI_CACHE_TX_BUFFER_NUM
	int "Max number of WiFi cache TX buffers"
	range 16 128
	default 32
	help
	  Set the number of WiFi cache TX buffer number.

	  For each TX packet from uplayer, such as LWIP etc, WiFi driver needs to
	  allocate a static TX buffer and makes a copy of uplayer packet. If WiFi
	  driver fails to allocate the static TX buffer, it caches the uplayer
	  packets to a dedicated buffer queue, this option is used to configure the
	  size of the cached TX queue.

config ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM
	int "Max number of WiFi dynamic TX buffers"
	depends on ESP32_WIFI_DYNAMIC_TX_BUFFER
	range 1 128
	default 32
	help
	  Set the number of WiFi dynamic TX buffers. The size of each
	  dynamic TXbuffer is not fixed, it depends on the size of each
	  transmitted data frame.

	  For each transmitted frame from the higher layer TCP/IP stack,
	  the WiFi driver makes a copy of it in a TX buffer. 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
	  buffers.

config ESP32_WIFI_CSI_ENABLED
	bool "WiFi CSI(Channel State Information)"
	help
	  Select this option to enable CSI(Channel State Information) feature.
	  CSI takes about CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM KB of RAM.
	  If CSI is not used, it is better to disable this feature in order
	  to save memory.

config ESP32_WIFI_AMPDU_TX_ENABLED
	bool "WiFi AMPDU TX"
	default y
	help
	  Select this option to enable AMPDU TX feature. It improves transmission
	  error checking and overall network performance with the cost of processing
	  speed. Helpful when the device is operating in crowded wireless area.

config ESP32_WIFI_TX_BA_WIN
	int "WiFi AMPDU TX BA window size"
	depends on ESP32_WIFI_AMPDU_TX_ENABLED
	range 2 32
	default 6
	help
	  Set the size of WiFi Block Ack TX window. Generally a bigger value means
	  higher throughput but more memory. Most of time we should NOT change the
	  default value unless special reason, e.g. test the maximum
	  UDP TX throughput with iperf etc. For iperf test in shieldbox,
	  the recommended value is 9~12.

config ESP32_WIFI_AMPDU_RX_ENABLED
	bool "WiFi AMPDU RX"
	default y
	help
	  Select this option to enable AMPDU RX feature. It improves transmission
	  error checking and overall network performance with the cost of processing
	  speed. Helpful when the device is operating in crowded wireless area.

config ESP32_WIFI_RX_BA_WIN
	int "WiFi AMPDU RX BA window size"
	depends on ESP32_WIFI_AMPDU_RX_ENABLED
	range 2 32
	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. 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 9~12. If PSRAM is used and WiFi memory
	  is preferred to be allocated in PSRAM first, the default and minimum value
	  should be 16 to achieve better throughput and compatibility with both
	  stations and APs.

choice ESP32_WIFI_TASK_CORE_ID
	prompt "WiFi Task Core ID"
	default ESP32_WIFI_TASK_PINNED_TO_CORE_0
	help
	  Pinned WiFi task to core 0 (core 1 not supported yet)

	config ESP32_WIFI_TASK_PINNED_TO_CORE_0
		bool "Core 0"
endchoice

config ESP32_WIFI_SW_COEXIST_ENABLE
	bool
	help
	  Software controls WiFi/Bluetooth coexistence. Not supported yet.

config ESP32_WIFI_IRAM_OPT
	bool "WiFi IRAM speed optimization"
	default y
	help
	  Select this option to place frequently called Wi-Fi library functions in IRAM.
	  When this option is disabled, more than 10Kbytes of IRAM memory will be saved
	  but Wi-Fi throughput will be reduced.

config ESP32_WIFI_RX_IRAM_OPT
	bool "WiFi RX IRAM speed optimization"
	default y
	help
	  Select this option to place frequently called Wi-Fi library RX functions in IRAM.
	  When this option is disabled, more than 17Kbytes of IRAM memory will be saved
	  but Wi-Fi performance will be reduced.

config ESP32_WIFI_NET_ALLOC_SPIRAM
	bool "Allocate memory of WiFi and NET in SPIRAM"
	depends on ESP_SPIRAM
	help
	  Allocate memory of WiFi and NET stack in SPIRAM, increasing available RAM memory space
	  for application stack.

endif # WIFI_ESP32
