diff --git a/doc/nrf/releases_and_maturity/known_issues.rst b/doc/nrf/releases_and_maturity/known_issues.rst index bb1a4db85d46..0341892ada3c 100644 --- a/doc/nrf/releases_and_maturity/known_issues.rst +++ b/doc/nrf/releases_and_maturity/known_issues.rst @@ -191,6 +191,14 @@ Bluetooth LE .. rst-class:: v2-9-0-nRF54H20-rc1 v2-9-0 v2-8-0 v2-7-0 v2-6-2 v2-6-1 v2-6-0 +DRGN-24352: hci_ipc and ipc_radio samples do not support stream flow control and drop bytes + With the deferred disconnection complete generation added in v2-6-0, we see in cases of CONFIG_BT_HCI_ACL_FLOW_CONTROL=y, and the CONFIG_BT_BUF_CMD_TX_COUNT < (CONFIG_BT_BUF_ACL_RX_COUNT + 1), we may drop HCI command packets. + The symptom visible is a missing disconnect event, and subsequent failure in connection, if a peripheral device falls out of range / is powered off. + + **Workaround:** Build Assert added to ensure CONFIG_BT_CTLR_RX_BUFFERS < BT_BUF_CMD_TX_COUNT. + +.. rst-class:: v2-9-0-nRF54H20-rc1 v2-9-0 v2-8-0 v2-7-0 v2-6-2 v2-6-1 v2-6-0 + NCSDK-31095: Issues with the :kconfig:option:`CONFIG_SEGGER_SYSVIEW` Kconfig option Using this Kconfig option causes the data parameter in the macros :c:macro:`k_fifo_put`, :c:macro:`k_fifo_alloc_put`, :c:macro:`k_lifo_put`, and :c:macro:`k_lifo_alloc_put` to be evaluated multiple times. This can cause problems if the data parameter is a function call incrementing a reference counter. diff --git a/subsys/bluetooth/controller/hci_driver.c b/subsys/bluetooth/controller/hci_driver.c index 56e5251af63b..2fb65b465fc2 100644 --- a/subsys/bluetooth/controller/hci_driver.c +++ b/subsys/bluetooth/controller/hci_driver.c @@ -68,6 +68,23 @@ BUILD_ASSERT(!IS_ENABLED(CONFIG_BT_CENTRAL) || BUILD_ASSERT(!IS_ENABLED(CONFIG_BT_PERIPHERAL) || (CONFIG_BT_CTLR_SDC_PERIPHERAL_COUNT > 0)); +#if defined(CONFIG_BT_HCI_ACL_FLOW_CONTROL) + /* + * The Host will generate up to acl_pkts number of Host Number of Completed Packets command plus a + * number of normal HCI commands, as such we need to ensure the tx command buffer count is big + * enough to not block incoming ACKs from the host. + * + * When Controller to Host data flow control is supported, ensure that BT_BUF_CMD_TX_COUNT is + * greater than or equal to (BT_BUF_ACL_RX_COUNT + Ncmd), where Ncmd is the supported maximum + * Num_HCI_Command_Packets. + * + * The SDC controller (currently) does not support Num_HCI_Command_Packets > 1, which means Ncmd + * is always 1. + */ +BUILD_ASSERT(CONFIG_BT_CTLR_RX_BUFFERS < BT_BUF_CMD_TX_COUNT, + "Too low HCI command buffers compared to ACL Rx buffers."); +#endif + #if defined(CONFIG_BT_BROADCASTER) #if defined(CONFIG_BT_CTLR_ADV_EXT) #define SDC_ADV_SET_COUNT CONFIG_BT_CTLR_ADV_SET