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

menuconfig NET_L2_IEEE802154
	bool "Enable IEEE 802.15.4 Radio"
	default n
	help
	  Add support for low rate WPAN IEEE 802.15.4 technology.

if NET_L2_IEEE802154

config NET_L2_IEEE802154_MGMT
	bool
	select NET_MGMT
	select NET_MGMT_EVENT
	default n

config NET_L2_IEEE802154_SUB_GHZ
	bool
	default n
	help
	  Enable support for Sub-GHz devices. This will add a tiny bit more
	  logic in L2 code for channel management. This option is automatically
	  selected when relevant device driver is enabled.

config NET_DEBUG_L2_IEEE802154
	bool "Enable IEEE 802.15.4 stack debug messages"
	default n
	default y if NET_LOG_GLOBAL
	depends on NET_LOG
	help
	  Enable it if you want to see what's happening. Only useful
	  for developers.

config NET_DEBUG_L2_IEEE802154_DISPLAY_PACKET
	bool "Enable IEEE 802.15.4 packet display"
	default n
	depends on NET_LOG
	help
	  Enable printing out in/out 802.15.4 packets. This is extremely
	  verbose, do not enable this unless you know what you are doing.

if NET_DEBUG_L2_IEEE802154_DISPLAY_PACKET

choice
	prompt "Which packet do you want to print-out?"
	default NET_DEBUG_L2_IEEE802154_DISPLAY_PACKET_FULL

config NET_DEBUG_L2_IEEE802154_DISPLAY_PACKET_FULL
	bool "Print-out both RX and TX packets"
	help
	  This will print-out both received and transmitted packets.

config NET_DEBUG_L2_IEEE802154_DISPLAY_PACKET_RX
	bool "Print-out only RX packets"
	help
	  This will print-out received packets only.

config NET_DEBUG_L2_IEEE802154_DISPLAY_PACKET_TX
	bool "Print-out only TX packets"
	help
	  This will print-out transmitted packets only.

endchoice

endif # NET_DEBUG_L2_IEEE802154_DISPLAY_PACKET

config NET_L2_IEEE802154_ACK_REPLY
	bool "Enable IEEE 802.15.4 ACK reply logic"
	default n
	help
	  Enable inner stack's logic on handling ACK request. Note that
	  if the hw driver has an AUTOACK feature, this is then unnecessary.

choice
	prompt "Device features level support"
	default NET_L2_IEEE802154_RFD
	help
	  Select which features level you want on the device. Depending on it,
	  the device might expose more or less 802.15.4 protocol features.
	  Only RFD is supported for now.

config NET_L2_IEEE802154_RFD
	bool "Support Reduced Functionality Device level"
	select NET_L2_IEEE802154_MGMT
	help
	  This is the level for PAN device, not PAN coordinator. This will make
	  possible to do active and/or passive scans, as well as associating
	  and disassociating to/from a PAN. Current support is very fragile,
	  thus it is not set as the default level.
endchoice

config NET_L2_IEEE802154_SHELL
	bool "Enable IEEE 802.15.4 shell module"
	default n
	select CONSOLE_SHELL
	depends on NET_L2_IEEE802154_RFD
	help
	  This can be used for testing 15.4 through the console via exposing
	  a shell module named "ieee15_4".

config NET_L2_IEEE802154_FRAGMENT
	bool "Enable 802.15.4 fragmentation support"
	default y
	depends on NET_6LO
	help
	  If IPv6 packets size more than 802.15.4 MTU, packet is fragmented
	  and reassemble incoming packets according to RFC4944/6282.

config NET_L2_IEEE802154_FRAGMENT_REASS_CACHE_SIZE
	int "IEEE 802.15.4 Reassembly cache size"
	depends on NET_L2_IEEE802154_FRAGMENT
	default 1
	help
	  Simultaneously reassemble 802.15.4 fragments depending on
	  cache size.

config NET_L2_IEEE802154_REASSEMBLY_TIMEOUT
	int "IEEE 802.15.4 Reassembly timeout in seconds"
	depends on NET_L2_IEEE802154_FRAGMENT
	default 5
	range 1 60
	help
	  Reassembly timer will start as soon as first packet received
	  from peer. Reassembly should be finished within a given time.
	  Otherwise all accumulated fragments are dropped.

config  NET_DEBUG_L2_IEEE802154_FRAGMENT
	bool "Enable debug support for IEEE 802.15.4 fragmentation"
	depends on NET_L2_IEEE802154_FRAGMENT && NET_LOG
	default n
	default y if NET_LOG_GLOBAL

config NET_L2_IEEE802154_SECURITY
	bool "Enable IEEE 802.15.4 security [EXPERIMENTAL]"
	default n
	help
	  Enable 802.15.4 frame security handling, in order to bring data
	  confidentiality and authenticity.

config NET_L2_IEEE802154_SECURITY_CRYPTO_DEV_NAME
	string "Crypto device name used for <en/de>cryption"
	default ""
	depends on NET_L2_IEEE802154_SECURITY
	help
	  This option should be used to set the crypto device name that
	  IEEE 802.15.4 soft MAC will use to run authentication, encryption and
	  decryption operations on incoming/outgoing frames.

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

endif
