# NXP ENET Ethernet driver configuration options

# Copyright 2023 NXP
# SPDX-License-Identifier: Apache-2.0

menuconfig ETH_NXP_ENET
	bool "NXP ENET Ethernet driver"
	default y
	depends on DT_HAS_NXP_ENET_MAC_ENABLED
	select NOCACHE_MEMORY if HAS_MCUX_CACHE
	select ARM_MPU if CPU_CORTEX_M7
	select MDIO if DT_HAS_NXP_ENET_MDIO_ENABLED
	select EXPERIMENTAL
	help
	  Enable NXP ENET Ethernet driver.

if ETH_NXP_ENET

config ETH_NXP_ENET_HW_ACCELERATION
	bool "Hardware acceleration"
	default y
	depends on !NET_IPV6
	help
	  Enable hardware acceleration for the following:
	  - IPv4, UDP and TCP checksum (both Rx and Tx)

config ETH_NXP_ENET_USE_DTCM_FOR_DMA_BUFFER
	bool "Use DTCM for hardware DMA buffers"
	default y
	help
	  Place the hardware DMA buffers into DTCM for better
	  networking performance.

config ETH_NXP_ENET_RX_THREAD_STACK_SIZE
	int "NXP ENET RX thread stack size"
	default 1600
	help
	  ENET RX thread stack size in bytes.

config ETH_NXP_ENET_RX_BUFFERS
	int "Number of RX buffers for ethernet driver"
	default 6
	range 6 16
	help
	  Set the number of RX buffers provided to the NXP ENET driver.

config ETH_NXP_ENET_TX_BUFFERS
	int "Number of TX buffers for ethernet driver"
	default 1
	range 1 16
	help
	  Set the number of TX buffers provided to the NXP ENET driver.

endif # ETH_NXP_ENET
