#
# 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
	select BT
	select BT_PERIPHERAL
	select BT_CENTRAL
	select BT_SMP
	select 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
