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

menuconfig ETH_NXP_S32_NETC
	bool "NXP S32 Ethernet Switch and Controller (NETC) driver"
	default y
	depends on (DT_HAS_NXP_S32_NETC_PSI_ENABLED || DT_HAS_NXP_S32_NETC_VSI_ENABLED)
	depends on !NET_TEST
	select MBOX
	select MDIO if DT_HAS_NXP_S32_NETC_PSI_ENABLED
	select NOCACHE_MEMORY
	help
	  Enable Ethernet Switch and Controller (NETC) driver for NXP S32 SoCs.

if ETH_NXP_S32_NETC

config ETH_NXP_S32_RX_THREAD_PRIO
	int "RX thread priority"
	default 2
	help
	  RX thread priority. RX thread is a cooperative thread.

config ETH_NXP_S32_RX_THREAD_STACK_SIZE
	int "RX thread stack size"
	default 1500
	help
	  RX thread stack size.

config ETH_NXP_S32_RX_BUDGET
	int "RX thread budget"
	default 128
	range 1 1024
	help
	  The budget parameter places a limit on the amount of work the driver may
	  do in the RX thread before yielding the processor, in case there is more
	  work to do. This is to prevent the RX thread to starve other threads. Each
	  received frame counts as one unit of work.

config ETH_NXP_S32_TX_RING_LEN
	int "TX ring length"
	default 64
	range 8 256
	help
	  Length of the TX ring. The value must be a multiple of 8.

config ETH_NXP_S32_TX_RING_BUF_SIZE
	int "TX ring data buffer size"
	default 1536
	range 64 1536
	help
	  Size, in bytes, of the TX data buffer. The size must be big enough to
	  store one complete Ethernet frame, and be a multiple of 8.

config ETH_NXP_S32_RX_RING_LEN
	int "RX ring length"
	default 64
	range 8 256
	help
	  Length of the RX ring. The value must be a multiple of 8.

config ETH_NXP_S32_RX_RING_BUF_SIZE
	int "RX ring data buffer size"
	default 1536
	range 64 1536
	help
	  Size, in bytes, of the RX data buffer. The size must be big enough to
	  store one complete Ethernet frame, and be a multiple of 8.

config ETH_NXP_S32_RX_IRQ_PACKET_THRESHOLD
	int "RX interrupt coalescing packet threshold"
	default 32
	range 1 511
	help
	  RX interrupt coalescing packet threshold. This values determines the
	  minimum number of packets received before raising an interrupt.

config ETH_NXP_S32_RX_IRQ_TIMER_THRESHOLD
	int "RX interrupt coalescing timer threshold"
	default 60000
	range 1 4294967295
	help
	  RX interrupt coalescing timer threshold, in units of NETC clock cycles.
	  This value determines the maximum amount of time allowed between a first
	  received packet until RX interrupt coalescing packet threshold is reached.
	  If the timer expires before the threshold is reached, an interrupt is
	  raised.

config ETH_NXP_S32_MAC_FILTER_TABLE_SIZE
	int "MAC filter hash table size"
	default 8
	range 8 128
	help
	  Maximum number of entries supported in the MAC filter hash table.

config ETH_NXP_S32_PSI_INIT_PRIORITY
	int
	default 60
	help
	  PSI initialization priority. It must be lower than VSI priority.

config ETH_NXP_S32_VSI_INIT_PRIORITY
	int
	default 61
	help
	  VSI initialization priority. It must be bigger than PSI priority
	  and lower than CONFIG_NET_INIT_PRIO, so that it can start after the PSI
	  but before the networking sub-system.

endif # ETH_NXP_S32_NETC
