# Bluetooth ATT/GATT configuration options

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

menu "L2CAP Options"

config BT_L2CAP_RX_MTU
	int "Maximum supported L2CAP MTU for incoming data"
	default 200 if BT_BREDR
	default BT_EATT_RX_MTU if BT_EATT
	default 65 if BT_SMP
	default 23
	range 70 1300 if BT_EATT
	range 65 1300 if BT_SMP
	range 23 1300
	help
	  Maximum size of each incoming L2CAP PDU.

config BT_L2CAP_TX_BUF_COUNT
	int "Number of L2CAP TX buffers"
	default NET_BUF_TX_COUNT if NET_L2_BT
	default BT_CTLR_TX_BUFFERS if BT_CTLR
	default 3
	range 2 255
	help
	  Number of buffers available for outgoing L2CAP packets.

config BT_L2CAP_TX_FRAG_COUNT
	int "Number of L2CAP TX fragment buffers"
	default NET_BUF_TX_COUNT if NET_L2_BT
	default 2
	range 0 255
	help
	  Number of buffers available for fragments of TX buffers. Warning:
	  setting this to 0 means that the application must ensure that
	  queued TX buffers never need to be fragmented, i.e. that the
	  controller's buffer size is large enough. If this is not ensured,
	  and there are no dedicated fragment buffers, a deadlock may occur.
	  In most cases the default value of 2 is a safe bet.

config BT_L2CAP_TX_MTU
	int "Maximum supported L2CAP MTU for L2CAP TX buffers"
	default 253 if BT_BREDR
	default 65 if BT_SMP
	default 23
	range 65 2000 if BT_SMP
	range 23 2000
	help
	  Maximum L2CAP MTU for L2CAP TX buffers.

config BT_L2CAP_DYNAMIC_CHANNEL
	bool "L2CAP Dynamic Channel support"
	depends on BT_SMP
	help
	  This option enables support for LE Connection oriented Channels,
	  allowing the creation of dynamic L2CAP Channels.

config BT_L2CAP_ECRED
	bool "L2CAP Enhanced Credit Based Flow Control support"
	depends on BT_L2CAP_DYNAMIC_CHANNEL
	help
	  This option enables support for LE Connection oriented Channels with
	  Enhanced Credit Based Flow Control support on dynamic L2CAP Channels.

config BT_DEBUG_L2CAP
	bool "Bluetooth L2CAP debug"
	depends on BT_DEBUG
	help
	  This option enables debug support for the Bluetooth
	  L2ACP layer.

endmenu
