#
# Copyright (c) 2016 Intel Corporation.
#
# SPDX-License-Identifier: Apache-2.0
#

menu "Link layer options"

config NET_L2_DUMMY
	bool "Enable dummy l2 layer"
	default n
	default y if !NET_L2_ETHERNET && NET_SLIP_TUN
	help
	Add a dummy L2 layer driver, usually in case you need SLIP in
	TUN mode.

config NET_L2_ETHERNET
	bool "Enable ethernet support"
	default n
	help
	Add support for Ethernet, enabling selecting relevant hardware drivers.
	If SLIP_TAP is selected, NET_L2_ETHERNET will enable to fully simulate
	ethernet through SLIP.

config NET_DEBUG_L2_ETHERNET
	bool "Debug Ethernet L2 layer"
	default n
	depends on NET_LOG
	help
	Enables Ethernet L2 output debug messages

config NET_L2_OFFLOAD_IP
	bool "Offload IP stack [EXPERIMENTAL]"
	default n
	help
	Enables IP stack to be offload to a co-processor.

config NET_DEBUG_L2_OFFLOAD
	bool "Debug IP Offload L2 layer"
	default n
	depends on NET_LOG
	depends on NET_L2_OFFLOAD
	help
	Enables offload IP stack L2 output debug messages.

config NET_L2_BLUETOOTH
	bool "Enable Bluetooth support"
	select BLUETOOTH
	select BLUETOOTH_PERIPHERAL
	select BLUETOOTH_CENTRAL
	select BLUETOOTH_SMP
	select BLUETOOTH_L2CAP_DYNAMIC_CHANNEL
	select NET_6LO
	default n
	help
	  Enable Bluetooth driver that send and receives IPv6 packets,
	  does header compression on it and writes it to the
	  Bluetooth stack via L2CAP channel.

config NET_L2_BLUETOOTH_ZEP1656
	bool "***Workaround to work with Linux.***"
	depends on NET_L2_BLUETOOTH
	default n
	help
	This workaround is necessary to interoperate with Linux up to 4.10 but
	it might not be compliant with RFC 7668 as it cause the stack to skip
	Neighbor Discovery cache causing the destination link address to be
	omitted. For more details why this is needed see:
	https://jira.zephyrproject.org/browse/ZEP-1656

config NET_L2_BLUETOOTH_SEC_LEVEL
	int "Security level of Bluetooth Link"
	depends on NET_L2_BLUETOOTH
	default 1
	range 1 4
	help
	Security level of Bluetooth Link:
	Level 1 (BT_SECURITY_LOW) = No encryption or authentication required
	Level 2 (BT_SECURITY_MEDIUM) = Only encryption required
	Level 3 (BT_SECURITY_HIGH) = Encryption and authentication required
	Level 4 (BT_SECURITY_FIPS) = Secure connection required

config NET_DEBUG_L2_BLUETOOTH
	bool "Debug Bluetooth L2 layer"
	default n
	depends on NET_LOG
	depends on NET_L2_BLUETOOTH
	help
	Enables Bluetooth L2 output debug messages

config NET_L2_BLUETOOTH_MGMT
	bool "Enable Blueooth Network Management support"
	depends on NET_L2_BLUETOOTH
	select NET_MGMT
	select NET_MGMT_EVENT
	default n

config NET_L2_BLUETOOTH_SHELL
	bool "Enable Bluetooth shell module"
	default n
	select CONSOLE_SHELL
	select NET_L2_BLUETOOTH_MGMT
	help
	This can be used for testing Bluetooth management commands through the
	console via a shell module named "net_bt".

source "subsys/net/ip/l2/ieee802154/Kconfig"

config NET_ARP
	bool "Enable ARP"
	default y
	depends on NET_IPV4 && NET_L2_ETHERNET
	help
	Enable ARP support. This is necessary on hardware that requires it to
	get IPv4 working (like Ethernet devices).

config NET_ARP_TABLE_SIZE
	int "Number of entries in ARP table."
	depends on NET_ARP
	default 2
	help
	Each entry in the ARP table consumes 22 bytes of memory.

config NET_DEBUG_ARP
	bool "Debug IPv4 ARP"
	depends on NET_ARP && NET_LOG
	default n
	help
	Enables core ARP code part to output debug messages

endmenu
