diff --git a/doc/nrf/releases_and_maturity/known_issues.rst b/doc/nrf/releases_and_maturity/known_issues.rst index bb1a4db85d46..b40aeb5a50ba 100644 --- a/doc/nrf/releases_and_maturity/known_issues.rst +++ b/doc/nrf/releases_and_maturity/known_issues.rst @@ -189,6 +189,16 @@ KRKNWK-14299: NRPA MAC address cannot be set in Zephyr Bluetooth LE ============ +.. rst-class:: v2-9-0-nRF54H20-1 v2-9-0 v2-8-0 v2-7-0 v2-6-2 v2-6-1 v2-6-0 + +DRGN-24352: Missing disconnection events when HCI Controller to host flow control is enabled + :zephyr:code-sample:`bluetooth_hci_ipc` and :ref:`ipc_radio application` do not support stream flow control and drop bytes. + With the deferred disconnection complete generation added in the |NCS| v2.6.0, there are cases where the :kconfig:option:`CONFIG_BT_HCI_ACL_FLOW_CONTROL` Kconfig option has value ``y``, and the value of :kconfig:option:`CONFIG_BT_BUF_CMD_TX_COUNT` is smaller than (:kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT` + 1). + This might result in dropped HCI command packets. + The symptom visible is a missing disconnect event, and subsequent failure in connection, if a peripheral device falls out of range or is powered off. + + **Workaround:** Users should ensure in their project that the value of :kconfig:option:`CONFIG_BT_BUF_ACL_RX_COUNT` is smaller thant the one for :kconfig:option:`CONFIG_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 diff --git a/subsys/bluetooth/controller/hci_driver.c b/subsys/bluetooth/controller/hci_driver.c index 56e5251af63b..2532d8dd59ce 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_BUF_ACL_RX_COUNT < CONFIG_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