#
# 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 y if !NET_L2_ETHERNET && NET_TEST
	help
	  Add a dummy L2 layer driver. This is usually only needed when
	  simulating a network interface when running network stack inside QEMU.

config NET_L2_BT
	bool "Enable Bluetooth support"
	depends on NET_IPV6
	depends on BT
	depends on BT_PERIPHERAL
	depends on BT_CENTRAL
	depends on BT_SMP
	depends on BT_L2CAP_DYNAMIC_CHANNEL
	select NET_6LO
	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.

if NET_L2_BT
config NET_L2_BT_ZEP1656
	bool "***Workaround to work with Linux.***"
	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://github.com/zephyrproject-rtos/zephyr/issues/3111

config NET_L2_BT_SEC_LEVEL
	int "Security level of Bluetooth Link"
	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

module = NET_L2_BT
module-dep = NET_LOG
module-str = Log level for Bluetooth L2 layer
module-help = Enables Bluetooth L2 to output debug messages.
source "subsys/net/Kconfig.template.log_config.net"
endif

config NET_L2_BT_MGMT
	bool "Enable Bluetooth Network Management support"
	depends on NET_L2_BT
	select NET_MGMT
	select NET_MGMT_EVENT

config NET_L2_BT_SHELL
	bool "Enable Bluetooth shell module"
	select SHELL
	select NET_L2_BT_MGMT
	help
	  This can be used for testing Bluetooth management commands through the
	  console via a shell module named "net_bt".

source "subsys/net/l2/ethernet/Kconfig"

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

source "subsys/net/l2/openthread/Kconfig"

config NET_L2_WIFI_MGMT
	bool "Enable WiFi Management support"
	select NET_MGMT
	select NET_MGMT_EVENT
	select NET_MGMT_EVENT_INFO
	help
	Add support for WiFi Management interface.

if NET_L2_WIFI_MGMT
module = NET_L2_WIFI_MGMT
module-dep = NET_LOG
module-str = Log level for WiFi management layer
module-help = Enables WiFi management interface to output debug messages.
source "subsys/net/Kconfig.template.log_config.net"
endif # NET_L2_WIFI_MGMT

config NET_L2_WIFI_SHELL
	bool "Enable WiFi shell module"
	select NET_L2_WIFI_MGMT
	help
	  This can be used for controlling WiFi through the console via
	  exposing a shell module named "wifi".

config NET_L2_CANBUS
	bool "Enable CANBUS l2 layer"
	help
	  Add a CANBUS L2 layer driver.

endmenu
