Bluetooth: Controller: BT_CTLR_ISO_TX_BUFFER_SIZE from BT_ISO_TX_MTU

Derive BT_CTLR_ISO_TX_BUFFER_SIZE from BT_ISO_TX_MTU to have
optimal Controller memory allocations.
BT_CTLR_ISO_TX_BUFFER_SIZE can be set lower than
BT_ISO_TX_MTU in which case upper layer can send fragmented
SDU to the Controller.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
Vinayak Kariappa Chettimada 2024-05-06 12:54:28 +02:00 committed by Carles Cufí
commit 2c6306d099
31 changed files with 138 additions and 88 deletions

View file

@ -14,11 +14,7 @@ CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=155
CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2 CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2
CONFIG_BT_CTLR_ISOAL_SOURCES=2 CONFIG_BT_CTLR_ISOAL_SOURCES=2
# FIXME: Host needs CONFIG_BT_ISO_TX_MTU + 4 bytes for sequence number, and optionally # Support the highest SDU size required by any BAP LC3 presets (155) + 8 bytes of HCI ISO Data
# additional + 4 bytes for timestamp when not using BT_ISO_TIMESTAMP_NONE in bt_iso_chan_send(), # packet overhead (the Packet_Sequence_Number, ISO_SDU_Length, Packet_Status_Flag fields; and
# otherwise Host tries to fragment ISO data. # the optional Time_Stamp field, if supplied)
# When Host is fixed, CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE can inherit the
# CONFIG_BT_ISO_TX_MTU value.
#
# Supports the highest SDU size required by any BAP LC3 presets (155)
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=163 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=163

View file

@ -0,0 +1,33 @@
# Zephyr Bluetooth Controller
CONFIG_BT_LL_SW_SPLIT=y
# Zephyr Bluetooth LE Controller needs 16 event buffers to generate Extended
# Advertising Report for receiving the complete 1650 bytes of data
CONFIG_BT_BUF_EVT_RX_COUNT=16
# Set maximum scan data length for Extended Scanning in Bluetooth LE Controller
CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX=1650
# Increase Zephyr Bluetooth LE Controller Rx buffer to receive complete chain
# of PDUs
CONFIG_BT_CTLR_RX_BUFFERS=9
# Sufficient ISO SDU and PDU length for this sample with ISO_TX_MTU of 247
CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=247
CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251
# Number of supported streami sources and sinks
CONFIG_BT_CTLR_ISOAL_SOURCES=2
CONFIG_BT_CTLR_ISOAL_SINKS=1
# Support the highest SDU size required by this sample 247 + 8 bytes of HCI ISO Data
# packet overhead (timestamp and HCI ISO Data packet header)
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255
CONFIG_BT_CTLR_ISO_TX_BUFFERS=4
# Use Low Latency Connected ISO policy
CONFIG_BT_CTLR_ADVANCED_FEATURES=y
CONFIG_BT_CTLR_CONN_ISO_LOW_LATENCY_POLICY=y
# Use the below if the sample is sending stale packet sequence number
# CONFIG_BT_CTLR_ISOAL_SN_STRICT=n

View file

@ -8,3 +8,14 @@ tests:
integration_platforms: integration_platforms:
- qemu_x86 - qemu_x86
tags: bluetooth tags: bluetooth
sample.bluetooth.central_iso.bt_ll_sw_split:
harness: bluetooth
platform_allow:
- qemu_cortex_m3
- qemu_x86
- nrf52_bsim
- nrf52833dk/nrf52833
integration_platforms:
- nrf52833dk/nrf52833
extra_args: OVERLAY_CONFIG=overlay-bt_ll_sw_split.conf
tags: bluetooth

View file

@ -77,7 +77,7 @@ CONFIG_BT_CTLR_LLCP_LOCAL_PROC_CTX_BUF_NUM=6
CONFIG_BT_CTLR_ADV_EXT=y CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_BT_CTLR_ADV_PERIODIC=y CONFIG_BT_CTLR_ADV_PERIODIC=y
CONFIG_BT_CTLR_ADV_ISO=y CONFIG_BT_CTLR_ADV_ISO=y
CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=247
CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2 CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2
# ISO Receive Controller # ISO Receive Controller
@ -89,7 +89,7 @@ CONFIG_BT_CTLR_SYNC_ISO_STREAM_MAX=2
# ISO Transmissions # ISO Transmissions
CONFIG_BT_CTLR_ISO_TX_BUFFERS=8 CONFIG_BT_CTLR_ISO_TX_BUFFERS=8
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=251 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255
CONFIG_BT_CTLR_ISOAL_SOURCES=2 CONFIG_BT_CTLR_ISOAL_SOURCES=2
# ISO Receptions # ISO Receptions

View file

@ -77,12 +77,12 @@ CONFIG_BT_CTLR_LLCP_LOCAL_PROC_CTX_BUF_NUM=6
# ISO Connection Oriented # ISO Connection Oriented
CONFIG_BT_CTLR_CENTRAL_ISO=y CONFIG_BT_CTLR_CENTRAL_ISO=y
CONFIG_BT_CTLR_PERIPHERAL_ISO=y CONFIG_BT_CTLR_PERIPHERAL_ISO=y
CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=247
CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251
# ISO Transmissions # ISO Transmissions
CONFIG_BT_CTLR_ISO_TX_BUFFERS=8 CONFIG_BT_CTLR_ISO_TX_BUFFERS=8
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=251 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255
CONFIG_BT_CTLR_ISOAL_SOURCES=2 CONFIG_BT_CTLR_ISOAL_SOURCES=2
# ISO Receptions # ISO Receptions

View file

@ -82,7 +82,7 @@ CONFIG_BT_CTLR_LLCP_LOCAL_PROC_CTX_BUF_NUM=6
CONFIG_BT_CTLR_ADV_EXT=y CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_BT_CTLR_ADV_PERIODIC=y CONFIG_BT_CTLR_ADV_PERIODIC=y
CONFIG_BT_CTLR_ADV_ISO=y CONFIG_BT_CTLR_ADV_ISO=y
CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=247
CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2 CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2
# ISO Receive Controller # ISO Receive Controller
@ -95,12 +95,12 @@ CONFIG_BT_CTLR_SYNC_ISO_STREAM_MAX=2
# ISO Connection Oriented # ISO Connection Oriented
CONFIG_BT_CTLR_CENTRAL_ISO=y CONFIG_BT_CTLR_CENTRAL_ISO=y
CONFIG_BT_CTLR_PERIPHERAL_ISO=y CONFIG_BT_CTLR_PERIPHERAL_ISO=y
CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=247
CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251
# ISO Transmissions # ISO Transmissions
CONFIG_BT_CTLR_ISO_TX_BUFFERS=8 CONFIG_BT_CTLR_ISO_TX_BUFFERS=8
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=251 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255
CONFIG_BT_CTLR_ISOAL_SOURCES=2 CONFIG_BT_CTLR_ISOAL_SOURCES=2
# ISO Receptions # ISO Receptions

View file

@ -31,8 +31,8 @@ CONFIG_BT_CTLR_ADV_PERIODIC=y
CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=191 CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=191
CONFIG_BT_CTLR_ADV_ISO=y CONFIG_BT_CTLR_ADV_ISO=y
CONFIG_BT_CTLR_ISO_TX_BUFFERS=16 CONFIG_BT_CTLR_ISO_TX_BUFFERS=16
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=251 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255
CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=247
CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2 CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2
CONFIG_BT_CTLR_ISOAL_SOURCES=2 CONFIG_BT_CTLR_ISOAL_SOURCES=2

View file

@ -44,12 +44,12 @@ CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX=191
# ISO Connection Oriented # ISO Connection Oriented
CONFIG_BT_CTLR_CENTRAL_ISO=y CONFIG_BT_CTLR_CENTRAL_ISO=y
CONFIG_BT_CTLR_PERIPHERAL_ISO=n CONFIG_BT_CTLR_PERIPHERAL_ISO=n
CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=247
CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251
# ISO Transmissions # ISO Transmissions
CONFIG_BT_CTLR_ISO_TX_BUFFERS=16 CONFIG_BT_CTLR_ISO_TX_BUFFERS=16
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=251 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255
CONFIG_BT_CTLR_ISOAL_SOURCES=2 CONFIG_BT_CTLR_ISOAL_SOURCES=2
# ISO Receptions # ISO Receptions

View file

@ -44,12 +44,12 @@ CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=191
# ISO Connection Oriented # ISO Connection Oriented
CONFIG_BT_CTLR_CENTRAL_ISO=n CONFIG_BT_CTLR_CENTRAL_ISO=n
CONFIG_BT_CTLR_PERIPHERAL_ISO=y CONFIG_BT_CTLR_PERIPHERAL_ISO=y
CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=247
CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251
# ISO Transmissions # ISO Transmissions
CONFIG_BT_CTLR_ISO_TX_BUFFERS=16 CONFIG_BT_CTLR_ISO_TX_BUFFERS=16
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=251 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255
CONFIG_BT_CTLR_ISOAL_SOURCES=2 CONFIG_BT_CTLR_ISOAL_SOURCES=2
# ISO Receptions # ISO Receptions

View file

@ -80,7 +80,7 @@ CONFIG_BT_CTLR_DF_CONN_CTE_REQ=y
CONFIG_BT_CTLR_ADV_EXT=y CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_BT_CTLR_ADV_PERIODIC=y CONFIG_BT_CTLR_ADV_PERIODIC=y
CONFIG_BT_CTLR_ADV_ISO=y CONFIG_BT_CTLR_ADV_ISO=y
CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=247
CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2 CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2
# ISO Receive Controller # ISO Receive Controller
@ -93,12 +93,12 @@ CONFIG_BT_CTLR_SYNC_ISO_STREAM_MAX=2
# ISO Connection Oriented # ISO Connection Oriented
CONFIG_BT_CTLR_CENTRAL_ISO=y CONFIG_BT_CTLR_CENTRAL_ISO=y
CONFIG_BT_CTLR_PERIPHERAL_ISO=y CONFIG_BT_CTLR_PERIPHERAL_ISO=y
CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=247
CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251
# ISO Transmissions # ISO Transmissions
CONFIG_BT_CTLR_ISO_TX_BUFFERS=8 CONFIG_BT_CTLR_ISO_TX_BUFFERS=8
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=251 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255
CONFIG_BT_CTLR_ISOAL_SOURCES=2 CONFIG_BT_CTLR_ISOAL_SOURCES=2
# ISO Receptions # ISO Receptions

View file

@ -1,13 +1,20 @@
CONFIG_BT_CTLR_ADV_ISO=y # Zephyr Bluetooth Controller
CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=4 CONFIG_BT_LL_SW_SPLIT=y
CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2
# Zephyr Controller tested maximum advertising data that can be set in a single HCI command
CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=191
# Enable support for Broadcast ISO in Zephyr Bluetooth Controller
CONFIG_BT_CTLR_ADV_ISO=y
# Sufficient ISO PDU length for this sample
CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=4
# Number of supported streams
CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2
CONFIG_BT_CTLR_ISOAL_SOURCES=2 CONFIG_BT_CTLR_ISOAL_SOURCES=2
# FIXME: Host needs CONFIG_BT_ISO_TX_MTU + 4 bytes for sequence number, and # Support the highest SDU size required by any BAP LC3 presets (155) + 8 bytes of HCI ISO Data
# optionally additional + 4 bytes for timestamp when not using # packet overhead (the Packet_Sequence_Number, ISO_SDU_Length, Packet_Status_Flag fields; and
# BT_ISO_TIMESTAMP_NONE in bt_iso_chan_send(), otherwise Host tries to fragment # the optional Time_Stamp field, if supplied)
# ISO data.
# When Host is fixed, CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE can inherit the
# CONFIG_BT_ISO_TX_MTU value.
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=12 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=12

View file

@ -17,8 +17,8 @@ tests:
- qemu_cortex_m3 - qemu_cortex_m3
- qemu_x86 - qemu_x86
- nrf52_bsim - nrf52_bsim
- nrf52dk/nrf52832 - nrf52833dk/nrf52833
integration_platforms: integration_platforms:
- nrf52dk/nrf52832 - nrf52833dk/nrf52833
extra_args: OVERLAY_CONFIG=overlay-bt_ll_sw_split.conf extra_args: OVERLAY_CONFIG=overlay-bt_ll_sw_split.conf
tags: bluetooth tags: bluetooth

View file

@ -14,11 +14,7 @@ CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=155
CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2 CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2
CONFIG_BT_CTLR_ISOAL_SOURCES=2 CONFIG_BT_CTLR_ISOAL_SOURCES=2
# FIXME: Host needs CONFIG_BT_ISO_TX_MTU + 4 bytes for sequence number, and optionally # Support the highest SDU size required by any BAP LC3 presets (155) + 8 bytes of HCI ISO Data
# additional + 4 bytes for timestamp when not using BT_ISO_TIMESTAMP_NONE in bt_iso_chan_send(), # packet overhead (the Packet_Sequence_Number, ISO_SDU_Length, Packet_Status_Flag fields; and
# otherwise Host tries to fragment ISO data. # the optional Time_Stamp field, if supplied)
# When Host is fixed, CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE can inherit the
# CONFIG_BT_ISO_TX_MTU value.
#
# Supports the highest SDU size required by any BAP LC3 presets (155)
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=163 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=163

View file

@ -1,4 +0,0 @@
CONFIG_BT_CTLR_PERIPHERAL_ISO=y
# Supports the highest SDU size required by any BAP LC3 presets (155)
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=155

View file

@ -1,4 +0,0 @@
CONFIG_BT_CTLR_CENTRAL_ISO=y
# Supports the highest SDU size required by any BAP LC3 presets (155)
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=155

View file

@ -1,4 +0,0 @@
CONFIG_BT_CTLR_CENTRAL_ISO=y
# Supports the highest SDU size required by any BAP LC3 presets (155)
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=155

View file

@ -1,4 +0,0 @@
CONFIG_BT_CTLR_PERIPHERAL_ISO=y
# Supports the highest SDU size required by any BAP LC3 presets (155)
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=155

View file

@ -1,4 +0,0 @@
CONFIG_BT_CTLR_CENTRAL_ISO=y
# Supports the highest SDU size required by any BAP LC3 presets (155)
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=155

View file

@ -1,9 +1,14 @@
CONFIG_BT_LL_SW_SPLIT=y CONFIG_BT_LL_SW_SPLIT=y
CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX=1650 CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX=1650
CONFIG_BT_CTLR_ISO_TX_BUFFERS=4 CONFIG_BT_CTLR_ISO_TX_BUFFERS=4
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=155
CONFIG_BT_CTLR_ISOAL_SOURCES=2 CONFIG_BT_CTLR_ISOAL_SOURCES=2
CONFIG_BT_CTLR_ISOAL_SINKS=1 CONFIG_BT_CTLR_ISOAL_SINKS=1
# Support the highest SDU size required by any BAP LC3 presets (155) + 8 bytes of HCI ISO Data
# packet overhead (the Packet_Sequence_Number, ISO_SDU_Length, Packet_Status_Flag fields; and
# the optional Time_Stamp field, if supplied)
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=163
CONFIG_BT_CTLR_ADVANCED_FEATURES=y CONFIG_BT_CTLR_ADVANCED_FEATURES=y
CONFIG_BT_CTLR_CONN_ISO_LOW_LATENCY_POLICY=y CONFIG_BT_CTLR_CONN_ISO_LOW_LATENCY_POLICY=y

View file

@ -1,4 +0,0 @@
CONFIG_BT_CTLR_PERIPHERAL_ISO=y
# Supports the highest SDU size required by any BAP LC3 presets (155)
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=155

View file

@ -1,10 +1,14 @@
CONFIG_BT_LL_SW_SPLIT=y CONFIG_BT_LL_SW_SPLIT=y
CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=191 CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=191
CONFIG_BT_CTLR_ISO_TX_BUFFERS=2 CONFIG_BT_CTLR_ISO_TX_BUFFERS=2
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=155
CONFIG_BT_CTLR_ISOAL_SOURCES=1 CONFIG_BT_CTLR_ISOAL_SOURCES=1
CONFIG_BT_CTLR_ISOAL_SINKS=2 CONFIG_BT_CTLR_ISOAL_SINKS=2
# Support the highest SDU size required by any BAP LC3 presets (155) + 8 bytes of HCI ISO Data
# packet overhead (the Packet_Sequence_Number, ISO_SDU_Length, Packet_Status_Flag fields; and
# the optional Time_Stamp field, if supplied)
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=163
# Use the below if the sample is sending stale packet sequence number # Use the below if the sample is sending stale packet sequence number
# CONFIG_BT_CTLR_ADVANCED_FEATURES=y # CONFIG_BT_CTLR_ADVANCED_FEATURES=y
# CONFIG_BT_CTLR_ISOAL_SN_STRICT=n # CONFIG_BT_CTLR_ISOAL_SN_STRICT=n

View file

@ -105,14 +105,15 @@ config BT_ISO_TX_FRAG_COUNT
config BT_ISO_TX_MTU config BT_ISO_TX_MTU
int "Maximum supported MTU for Isochronous TX buffers" int "Maximum supported MTU for Isochronous TX buffers"
default 251
range 1 4095 range 1 4095
default 247
help help
Maximum MTU for Isochronous channels TX buffers. Maximum MTU for Isochronous channels TX buffers.
This is the actual data payload. It doesn't include the optional This is the actual data payload. It doesn't include the optional
HCI ISO Data packet fields (e.g. `struct bt_hci_iso_sdu_ts_hdr`). HCI ISO Data packet fields (e.g. `struct bt_hci_iso_sdu_ts_hdr`).
Set this value to 247 to fit 247 bytes of data within a single Set this value to 247 to fit 247 bytes of data within a single
HCI ISO Data packet with a size of 255, without utilizing timestamps. HCI ISO Data packet with Data_Total_Length of 255, utilizing
timestamps.
config BT_ISO_RX_BUF_COUNT config BT_ISO_RX_BUF_COUNT
int "Number of Isochronous RX buffers" int "Number of Isochronous RX buffers"

View file

@ -202,12 +202,19 @@ config BT_CTLR_ISO_TX_BUFFERS
config BT_CTLR_ISO_TX_BUFFER_SIZE config BT_CTLR_ISO_TX_BUFFER_SIZE
int "Isochronous Tx buffer size" int "Isochronous Tx buffer size"
depends on BT_CTLR_ADV_ISO || BT_CTLR_CONN_ISO depends on BT_CTLR_ADV_ISO || BT_CTLR_CONN_ISO
range 1 4095 range 9 4103 if BT_LL_SW_SPLIT
default BT_ISO_TX_MTU if BT_ISO range 1 65535
default 9 if BT_LL_SW_SPLIT
default 1 default 1
help help
Size of the Isochronous Tx buffers and the value returned in HCI LE Size of the Isochronous Tx buffers and the value returned in HCI LE
Read Buffer Size V2 command response. Read Buffer Size V2 command response. This is the data portion of the
HCI ISO Data packet, corresponding to the Data_Total_Length field.
Currently the maximum SDU length is 4095 bytes, hence add HCI ISO
Data packet overhead (the Packet_Sequence_Number, ISO_SDU_Length,
Packet_Status_Flag fields; and the optional Time_Stamp field, if
supplied) of 8 bytes.
config BT_CTLR_ISOAL_SOURCES config BT_CTLR_ISOAL_SOURCES
int "Number of Isochronous Adaptation Layer sources" int "Number of Isochronous Adaptation Layer sources"
@ -929,7 +936,7 @@ config BT_CTLR_CONN_ISO_PDU_LEN_MAX
config BT_CTLR_CONN_ISO_SDU_LEN_MAX config BT_CTLR_CONN_ISO_SDU_LEN_MAX
int "Maximum Connected Isochronous Channel SDU Length" int "Maximum Connected Isochronous Channel SDU Length"
depends on BT_CTLR_CONN_ISO depends on BT_CTLR_CONN_ISO
range BT_CTLR_CONN_ISO_PDU_LEN_MAX 4095 range 1 4095
default 251 default 251
help help
Maximum Connected Isochronous Channel SDU Length. Maximum Connected Isochronous Channel SDU Length.

View file

@ -1398,7 +1398,7 @@ static void le_read_buffer_size_v2(struct net_buf *buf, struct net_buf **evt)
rp->acl_max_len = sys_cpu_to_le16(LL_LENGTH_OCTETS_TX_MAX); rp->acl_max_len = sys_cpu_to_le16(LL_LENGTH_OCTETS_TX_MAX);
rp->acl_max_num = CONFIG_BT_BUF_ACL_TX_COUNT; rp->acl_max_num = CONFIG_BT_BUF_ACL_TX_COUNT;
rp->iso_max_len = sys_cpu_to_le16(CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE); rp->iso_max_len = sys_cpu_to_le16(BT_CTLR_ISO_TX_BUFFER_SIZE);
rp->iso_max_num = CONFIG_BT_CTLR_ISO_TX_BUFFERS; rp->iso_max_num = CONFIG_BT_CTLR_ISO_TX_BUFFERS;
} }
#endif /* CONFIG_BT_CTLR_ADV_ISO || CONFIG_BT_CTLR_CONN_ISO */ #endif /* CONFIG_BT_CTLR_ADV_ISO || CONFIG_BT_CTLR_CONN_ISO */

View file

@ -189,10 +189,23 @@
#define LL_FEAT_BIT_CIS_PERIPHERAL 0 #define LL_FEAT_BIT_CIS_PERIPHERAL 0
#endif /* !CONFIG_BT_CTLR_PERIPHERAL_ISO */ #endif /* !CONFIG_BT_CTLR_PERIPHERAL_ISO */
#if defined(CONFIG_BT_CTLR_ADV_ISO) || defined(CONFIG_BT_CTLR_CONN_ISO)
#if defined(CONFIG_BT_ISO_TX_MTU)
#define BT_CTLR_ISO_TX_BUFFER_SIZE MIN((CONFIG_BT_ISO_TX_MTU + \
BT_HCI_ISO_SDU_TS_HDR_SIZE), \
MAX(CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE, \
(BT_HCI_ISO_SDU_TS_HDR_SIZE + 1U)))
#else
#define BT_CTLR_ISO_TX_BUFFER_SIZE MAX(CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE, \
(BT_HCI_ISO_SDU_TS_HDR_SIZE + 1U))
#endif /* CONFIG_BT_ISO_TX_MTU */
#endif /* CONFIG_BT_CTLR_ADV_ISO || CONFIG_BT_CTLR_CONN_ISO */
#if defined(CONFIG_BT_CTLR_CENTRAL_ISO) || \ #if defined(CONFIG_BT_CTLR_CENTRAL_ISO) || \
defined(CONFIG_BT_CTLR_PERIPHERAL_ISO) defined(CONFIG_BT_CTLR_PERIPHERAL_ISO)
#define LL_CIS_OCTETS_TX_MAX MIN(CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX, \ #define LL_CIS_OCTETS_TX_MAX MIN(CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX, \
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE) (BT_CTLR_ISO_TX_BUFFER_SIZE - \
BT_HCI_ISO_SDU_TS_HDR_SIZE))
#define LL_CIS_OCTETS_RX_MAX CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX #define LL_CIS_OCTETS_RX_MAX CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX
#else /* !CONFIG_BT_CTLR_CENTRAL_ISO && !CONFIG_BT_CTLR_PERIPHERAL_ISO */ #else /* !CONFIG_BT_CTLR_CENTRAL_ISO && !CONFIG_BT_CTLR_PERIPHERAL_ISO */
#define LL_CIS_OCTETS_TX_MAX 0 #define LL_CIS_OCTETS_TX_MAX 0
@ -202,7 +215,8 @@
#if defined(CONFIG_BT_CTLR_ADV_ISO) #if defined(CONFIG_BT_CTLR_ADV_ISO)
#define LL_FEAT_BIT_ISO_BROADCASTER BIT64(BT_LE_FEAT_BIT_ISO_BROADCASTER) #define LL_FEAT_BIT_ISO_BROADCASTER BIT64(BT_LE_FEAT_BIT_ISO_BROADCASTER)
#define LL_BIS_OCTETS_TX_MAX MIN(CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX, \ #define LL_BIS_OCTETS_TX_MAX MIN(CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX, \
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE) (BT_CTLR_ISO_TX_BUFFER_SIZE - \
BT_HCI_ISO_SDU_TS_HDR_SIZE))
#else /* !CONFIG_BT_CTLR_ADV_ISO */ #else /* !CONFIG_BT_CTLR_ADV_ISO */
#define LL_FEAT_BIT_ISO_BROADCASTER 0 #define LL_FEAT_BIT_ISO_BROADCASTER 0
#define LL_BIS_OCTETS_TX_MAX 0 #define LL_BIS_OCTETS_TX_MAX 0

View file

@ -206,7 +206,7 @@ CONFIG_LOG_MODE_IMMEDIATE=y
CONFIG_BT_CTLR_ADV_ISO=y CONFIG_BT_CTLR_ADV_ISO=y
CONFIG_BT_CTLR_SYNC_ISO=y CONFIG_BT_CTLR_SYNC_ISO=y
CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX=255 CONFIG_BT_CTLR_SCAN_DATA_LEN_MAX=255
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=251 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255
CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=191 CONFIG_BT_CTLR_ADV_DATA_LEN_MAX=191
# Controller ISO Broadcast Settings # Controller ISO Broadcast Settings

View file

@ -17,7 +17,7 @@ CONFIG_BT_ISO_LOG_LEVEL_DBG=y
# Controller Connected ISO configs # Controller Connected ISO configs
CONFIG_BT_CTLR_CENTRAL_ISO=y CONFIG_BT_CTLR_CENTRAL_ISO=y
CONFIG_BT_CTLR_PERIPHERAL_ISO=y CONFIG_BT_CTLR_PERIPHERAL_ISO=y
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=208
CONFIG_BT_CTLR_ISO_TX_BUFFERS=4
CONFIG_BT_CTLR_ISOAL_SOURCES=2 CONFIG_BT_CTLR_ISOAL_SOURCES=2
CONFIG_BT_CTLR_ISOAL_SINKS=2 CONFIG_BT_CTLR_ISOAL_SINKS=2
CONFIG_BT_CTLR_ISO_TX_BUFFERS=4

View file

@ -8,7 +8,7 @@ CONFIG_BT_PER_ADV_SYNC=y
CONFIG_BT_ISO_BROADCASTER=y CONFIG_BT_ISO_BROADCASTER=y
CONFIG_BT_ISO_SYNC_RECEIVER=y CONFIG_BT_ISO_SYNC_RECEIVER=y
CONFIG_BT_ISO_TX_MTU=251 CONFIG_BT_ISO_TX_MTU=247
CONFIG_BT_ISO_RX_MTU=251 CONFIG_BT_ISO_RX_MTU=251
CONFIG_BT_CTLR_ADV_EXT=y CONFIG_BT_CTLR_ADV_EXT=y
@ -16,8 +16,8 @@ CONFIG_BT_CTLR_ADV_ISO=y
CONFIG_BT_CTLR_SYNC_ISO=y CONFIG_BT_CTLR_SYNC_ISO=y
CONFIG_BT_CTLR_ISO_TX_BUFFERS=2 CONFIG_BT_CTLR_ISO_TX_BUFFERS=2
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=251 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255
CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=247
CONFIG_BT_CTLR_SYNC_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_SYNC_ISO_PDU_LEN_MAX=251
CONFIG_BT_CTLR_TEST=y CONFIG_BT_CTLR_TEST=y

View file

@ -15,7 +15,7 @@ CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_BT_CTLR_ADV_ISO=y CONFIG_BT_CTLR_ADV_ISO=y
CONFIG_BT_CTLR_SYNC_ISO=y CONFIG_BT_CTLR_SYNC_ISO=y
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=251 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255
CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=251
CONFIG_BT_CTLR_SYNC_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_SYNC_ISO_PDU_LEN_MAX=251

View file

@ -28,7 +28,7 @@ CONFIG_LOG=y
CONFIG_BT_LL_SW_SPLIT=y CONFIG_BT_LL_SW_SPLIT=y
CONFIG_BT_CTLR_CENTRAL_ISO=y CONFIG_BT_CTLR_CENTRAL_ISO=y
CONFIG_BT_CTLR_PERIPHERAL_ISO=y CONFIG_BT_CTLR_PERIPHERAL_ISO=y
CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=247
CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251
CONFIG_BT_CTLR_CONN_ISO_STREAMS=9 CONFIG_BT_CTLR_CONN_ISO_STREAMS=9
CONFIG_BT_CTLR_CONN_ISO_STREAMS_PER_GROUP=9 CONFIG_BT_CTLR_CONN_ISO_STREAMS_PER_GROUP=9
@ -36,7 +36,7 @@ CONFIG_BT_CTLR_ISOAL_SOURCES=9
CONFIG_BT_CTLR_ISOAL_SINKS=9 CONFIG_BT_CTLR_ISOAL_SINKS=9
CONFIG_BT_CTLR_ISO_TX_BUFFERS=18 CONFIG_BT_CTLR_ISO_TX_BUFFERS=18
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=251 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255
CONFIG_BT_CTLR_ISO_RX_BUFFERS=1 CONFIG_BT_CTLR_ISO_RX_BUFFERS=1
CONFIG_BT_CTLR_PHY_CODED=n CONFIG_BT_CTLR_PHY_CODED=n

View file

@ -84,7 +84,7 @@ CONFIG_BT_CTLR_LLCP_LOCAL_PROC_CTX_BUF_NUM=9
CONFIG_BT_CTLR_ADV_EXT=y CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_BT_CTLR_ADV_PERIODIC=y CONFIG_BT_CTLR_ADV_PERIODIC=y
CONFIG_BT_CTLR_ADV_ISO=y CONFIG_BT_CTLR_ADV_ISO=y
CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_ADV_ISO_PDU_LEN_MAX=247
CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2 CONFIG_BT_CTLR_ADV_ISO_STREAM_MAX=2
# ISO Receive Controller # ISO Receive Controller
@ -97,14 +97,14 @@ CONFIG_BT_CTLR_SYNC_ISO_STREAM_MAX=2
# ISO Connection Oriented # ISO Connection Oriented
CONFIG_BT_CTLR_CENTRAL_ISO=y CONFIG_BT_CTLR_CENTRAL_ISO=y
CONFIG_BT_CTLR_PERIPHERAL_ISO=y CONFIG_BT_CTLR_PERIPHERAL_ISO=y
CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_SDU_LEN_MAX=247
CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251 CONFIG_BT_CTLR_CONN_ISO_PDU_LEN_MAX=251
CONFIG_BT_CTLR_CONN_ISO_STREAMS=4 CONFIG_BT_CTLR_CONN_ISO_STREAMS=4
CONFIG_BT_CTLR_CONN_ISO_STREAMS_PER_GROUP=4 CONFIG_BT_CTLR_CONN_ISO_STREAMS_PER_GROUP=4
# ISO Transmissions # ISO Transmissions
CONFIG_BT_CTLR_ISO_TX_BUFFERS=18 CONFIG_BT_CTLR_ISO_TX_BUFFERS=18
CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=251 CONFIG_BT_CTLR_ISO_TX_BUFFER_SIZE=255
CONFIG_BT_CTLR_ISOAL_SOURCES=4 CONFIG_BT_CTLR_ISOAL_SOURCES=4
# ISO Receptions # ISO Receptions