#
# 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/ppp/Kconfig"

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

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

source "subsys/net/l2/canbus/Kconfig"

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

if NET_L2_WIFI_MGMT
module = NET_L2_WIFI_MGMT
module-dep = NET_LOG
module-str = Log level for Wi-Fi management layer
module-help = Enables Wi-Fi 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 Wi-Fi shell module"
	select NET_L2_WIFI_MGMT
	help
	  This can be used for controlling Wi-Fi through the console via
	  exposing a shell module named "wifi".

endmenu
