Skip to content

Commit

Permalink
softdevice_controller: rev d85f37138db71ea6376260fb3ed5819faa4b97ee
Browse files Browse the repository at this point in the history
CHANGELOG.rst contains the list of changes.

Signed-off-by: Erik Sandgren <[email protected]>
  • Loading branch information
eriksandgren authored and rugeGerritsen committed Jan 23, 2025
1 parent aa1f069 commit b5c1a84
Show file tree
Hide file tree
Showing 36 changed files with 85 additions and 112 deletions.
21 changes: 20 additions & 1 deletion softdevice_controller/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,30 @@ Bug fixes

* Fixed an issue where ACL connections could not be created if a Periodic Advertiser was configured when the :kconfig:option:`CONFIG_BT_CTLR_SDC_PAWR_ADV` Kconfig option was selected. (DRGN-24148)
* Fixed a rare issue where the scanner would assert when scanning and initiating at the same time. (DRGN-24198)

The issue would only happen if all the conditions are met:

* :kconfig:option:`BT_CTLR_SDC_ALLOW_PARALLEL_SCANNING_AND_INITIATING` is set to the non-default value 2.
* :kconfig:option:`BT_CTLR_SDC_ALLOW_PARALLEL_SCANNING_AND_INITIATING` is selected.
* :kconfig:option:`BT_CTLR_SDC_SCAN_BUFFER_COUNT` is set to the non-default value 2.
* The initiator has received a connectable ``ADV_EXT_IND``.
* The initiator is canceled.
* Fixed an issue where the central device would disconnect 40 s after responding to a ``LL_SUBRATE_REQ`` with reason "LMP Response Timeout (0x22)".
This would only occur on nRF52 Series and nRF53 Series devices. (DRGN-24310)
* Fixed a very rare issue where the scanner would assert, hang or stop producing reports when scanning and initiating at the same time. (DRGN-24370)

The issue would only happen if all the conditions are met:

* :kconfig:option:`BT_CTLR_SDC_ALLOW_PARALLEL_SCANNING_AND_INITIATING` is selected.
* The timing events are not combined for the scanner and the initiator.
* The initiator is canceled or the scanner is stopped after receiving an extended advertising PDU pointing to a AUX_ADV_IND or AUX_CHAIN_IND PDU, but the AUX_ADV_IND or AUX_CHAIN_IND PDU was not received yet.
The issue may also occur if the reception of the AUX_ADV_IND or AUX_CHAIN_IND fails to be scheduled.

See :ref:`concurrent_scanner_initiator_timing` for information on how to select parameters where the timing events are combined.
* Fixed a rare issue where the scanner would fail to receive a secondary channel packet. (DRGN-24300)
The issue would only happen if all the conditions are met:

* The configured scan window is larger than 500 milliseconds.
* The ``ADV_EXT_IND`` is received at the very end of the scan window.

nRF Connect SDK v2.9.0
**********************
Expand Down
11 changes: 6 additions & 5 deletions softdevice_controller/doc/scheduling.rst
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ ACL connection timing

ACL connection timing-events are scheduled every connection interval.
Each connection event is allocated a window of length :math:`\mathsf{t_{event}}` for transmission and reception of packets.
In the |NCS|, this time allocation is configured with the :kconfig:option:`CONFIG_BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT` Kconfig option, or with the vendor-specific HCI command defined by :c:func:`sdc_hci_cmd_vs_event_length_set`.
In the |NCS|, this time allocation is configured with the :kconfig:option:`CONFIG_BT_CTLR_SDC_MAX_CONN_EVENT_LEN_DEFAULT` Kconfig option, or with the vendor-specific HCI command defined by :c:func:`hci_vs_sdc_event_length_set`.
This allows the application to control the bandwidth of each link.
If :ref:`Connection Event Length Extension <connection_timing_with_connection_event_length_extension>` is enabled, the time available for each connection event may be extended beyond the configured value.

Expand Down Expand Up @@ -340,11 +340,10 @@ Central and peripheral links can extend the event if there is radio time availab

The connection event is the time within a timing-event reserved for sending or receiving packets.
The |controller| can be configured to dynamically extend the connection event length to fit the maximum number of packets inside the connection event before the timing-event must be ended.
The time is extended one packet pair at a time until the maximum extend time is reached.
The connection event cannot be longer than the connection interval; when the interval is reached, the connection event ends and the next connection event begins.
A connection event cannot be extended if it will collide with another timing-event, regardless of the priorities of the timing-events.
In |NCS| connection event extension is enabled by default.
It can be turned off using the vendor-specific HCI command defined by :c:func:`sdc_hci_cmd_vs_conn_event_extend`.
By default, the connection event is extended as much as possible up to one connection interval.
That is, either until the start of the next connection event, or another conflicting timing-event of equal or higher priority.
It can be turned off by using the :kconfig:option:`CONFIG_BT_CTLR_SDC_CONN_EVENT_EXTEND_DEFAULT` Kconfig option, or with the vendor-specific HCI command defined by :c:func:`hci_vs_sdc_conn_event_extend`.

To get the maximum bandwidth on a single link, Connection Event Length Extension should be enabled and the connection interval should be increased.
This will allow the |controller| to send more packets within the event and limit the overhead of processing between connection events.
Expand Down Expand Up @@ -477,6 +476,8 @@ Therefore, the Scanner cannot decide when the secondary scanning timing-events w
Scanner timing - secondary scan timing-events will interleave with connections


.. _concurrent_scanner_initiator_timing:

Concurrent scanner and initiator timing
=======================================

Expand Down
27 changes: 20 additions & 7 deletions softdevice_controller/include/sdc.h
Original file line number Diff line number Diff line change
Expand Up @@ -160,8 +160,8 @@ extern "C" {
*/

/** @brief Auxiliary defines, not to be used outside of this file. */
#define __MEM_MINIMAL_CENTRAL_LINK_SIZE 795
#define __MEM_MINIMAL_PERIPHERAL_LINK_SIZE 891
#define __MEM_MINIMAL_CENTRAL_LINK_SIZE 747
#define __MEM_MINIMAL_PERIPHERAL_LINK_SIZE 867
#define __MEM_TX_BUFFER_OVERHEAD_SIZE 14
#define __MEM_RX_BUFFER_OVERHEAD_SIZE 14

Expand Down Expand Up @@ -209,7 +209,7 @@ extern "C" {
*
* @param[in] num_links Total number of peripheral and central links supported.
*/
#define SDC_MEM_SUBRATING(num_links) ((num_links) > 0 ? (12 + (num_links) * 20) : 0)
#define SDC_MEM_SUBRATING(num_links) ((num_links) > 0 ? (11 + (num_links) * 63) : 0)

/** @brief Maximum memory required when supporting periodic advertising sync transfer.
*
Expand Down Expand Up @@ -341,17 +341,30 @@ extern "C" {
* @param[in] size Maximum size of SDUs being used. */
#define SDC_MEM_ISO_TX_SDU_POOL_SIZE(count, size) ((count) > 0 ? (12 + (count) * ((size) + 49)) : 0)

/** @brief Maximum additional memory required to support Channel Sounding
/** @brief Auxiliary defines, not to be used outside of this file. */
#define __MEM_CS_ANTENNA_PATHS(max_antenna_paths_supported) (((max_antenna_paths_supported) - 1) * 1024)
#define __MEM_CS_STEP_MODE3(step_mode3_supported) ((step_mode3_supported) ? 1536 : 0)

/** @brief Maximum additional memory required to support Channel Sounding.
*
* @param[in] count Maximum number of concurrent connections supporting CS procedure.
* @param[in] max_antenna_paths_supported Maximum number of antenna paths supported in CS.
* @param[in] step_mode3_supported Whether step mode3 is supported.
*/
#define SDC_MEM_CS(count, max_antenna_paths_supported, step_mode3_supported) ((count) > 0 ? (13 + (count) * (4331 + __MEM_CS_ANTENNA_PATHS(max_antenna_paths_supported) + __MEM_CS_STEP_MODE3(step_mode3_supported))) : 0)

/** @brief Maximum additional memory required to support Channel Sounding.
* @note This API will be deprecated and replaced by @ref SDC_MEM_CS.
*
* @param[in] count Maximum number of concurrent connections supporting CS procedure.
*/
#define SDC_MEM_CS(count) ((count) > 0 ? (13 + (count) * 8924) : 0)
#define SDC_MEM_CS_DEPRECATED(count) ((count) > 0 ? (13 + (count) * 8952) : 0)

/** @brief Maximum additional memory required to support Channel Sounding setup phase procedures
/** @brief Maximum additional memory required to support Channel Sounding setup phase procedures.
*
* @param[in] count Total number of links (central + peripheral).
*/
#define SDC_MEM_CS_SETUP_PHASE_LINKS(count) ((count) > 0 ? (11 + (count) * 359) : 0)
#define SDC_MEM_CS_SETUP_PHASE_LINKS(count) ((count) > 0 ? (11 + (count) * 370) : 0)

/** @} end of sdc_mem_defines */

Expand Down
60 changes: 0 additions & 60 deletions softdevice_controller/include/sdc_hci_vs.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,6 @@ enum sdc_hci_opcode_vs
SDC_HCI_OPCODE_CMD_VS_ZEPHYR_WRITE_TX_POWER = 0xfc0e,
/** @brief See @ref sdc_hci_cmd_vs_zephyr_read_tx_power(). */
SDC_HCI_OPCODE_CMD_VS_ZEPHYR_READ_TX_POWER = 0xfc0f,
/** @brief See @ref sdc_hci_cmd_vs_read_supported_vs_commands(). */
SDC_HCI_OPCODE_CMD_VS_READ_SUPPORTED_VS_COMMANDS = 0xfd00,
/** @brief See @ref sdc_hci_cmd_vs_llpm_mode_set(). */
SDC_HCI_OPCODE_CMD_VS_LLPM_MODE_SET = 0xfd01,
/** @brief See @ref sdc_hci_cmd_vs_conn_update(). */
Expand Down Expand Up @@ -166,38 +164,6 @@ enum sdc_hci_vs_tx_power_handle_type
SDC_HCI_VS_TX_POWER_HANDLE_TYPE_ISO_BROADCASTER = 0x04,
};

/** @brief Supported Vendor Specific HCI Commands. */
typedef struct __PACKED __ALIGN(1)
{
uint8_t read_supported_vs_commands : 1;
uint8_t llpm_mode_set : 1;
uint8_t conn_update : 1;
uint8_t conn_event_extend : 1;
uint8_t qos_conn_event_report_enable : 1;
uint8_t event_length_set : 1;
uint8_t periodic_adv_event_length_set : 1;
uint8_t peripheral_latency_mode_set : 1;
uint8_t write_remote_tx_power : 1;
uint8_t set_adv_randomness : 1;
uint8_t qos_channel_survey_enable : 1;
uint8_t set_power_control_request_params : 1;
uint8_t read_average_rssi : 1;
uint8_t central_acl_event_spacing_set : 1;
uint8_t set_conn_event_trigger : 1;
uint8_t get_next_conn_event_counter : 1;
uint8_t allow_parallel_connection_establishments : 1;
uint8_t min_val_of_max_acl_tx_payload_set : 1;
uint8_t iso_read_tx_timestamp : 1;
uint8_t big_reserved_time_set : 1;
uint8_t cig_reserved_time_set : 1;
uint8_t cis_subevent_length_set : 1;
uint8_t scan_channel_map_set : 1;
uint8_t scan_accept_ext_adv_packets_set : 1;
uint8_t set_role_priority : 1;
uint8_t set_event_start_task : 1;
uint8_t conn_anchor_point_update_event_report_enable : 1;
} sdc_hci_vs_supported_vs_commands_t;

/** @brief Zephyr Static Address type. */
typedef struct __PACKED __ALIGN(1)
{
Expand Down Expand Up @@ -439,13 +405,6 @@ typedef struct __PACKED __ALIGN(1)
int8_t selected_tx_power;
} sdc_hci_cmd_vs_zephyr_read_tx_power_return_t;

/** @brief Read Supported Vendor Specific Commands return parameter(s). */
typedef union __PACKED __ALIGN(1)
{
sdc_hci_vs_supported_vs_commands_t params;
uint8_t raw[64];
} sdc_hci_cmd_vs_read_supported_vs_commands_return_t;

/** @brief Set Low Latency Packet Mode command parameter(s). */
typedef struct __PACKED __ALIGN(1)
{
Expand Down Expand Up @@ -950,25 +909,6 @@ uint8_t sdc_hci_cmd_vs_zephyr_write_tx_power(const sdc_hci_cmd_vs_zephyr_write_t
uint8_t sdc_hci_cmd_vs_zephyr_read_tx_power(const sdc_hci_cmd_vs_zephyr_read_tx_power_t * p_params,
sdc_hci_cmd_vs_zephyr_read_tx_power_return_t * p_return);

/** @brief Read Supported Vendor Specific Commands.
*
* This command reads the list of vendor specific HCI commands supported
* for the local Controller.
*
* This command shall return a bitmap of the supported vendor specific
* commands.
*
* Event(s) generated (unless masked away):
* When the command has completed, an HCI_Command_Complete event shall be generated.
*
* @param[out] p_return Extra return parameters.
*
* @retval 0 if success.
* @return Returns value between 0x01-0xFF in case of error.
* See Vol 2, Part D, Error for a list of error codes and descriptions.
*/
uint8_t sdc_hci_cmd_vs_read_supported_vs_commands(sdc_hci_cmd_vs_read_supported_vs_commands_return_t * p_return);

/** @brief Set Low Latency Packet Mode.
*
* This command enables or disables Low Latency Packet Mode support.
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf52/hard-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: f4f268ce33699c0889e295520777b00a93aab5a3
ll_subversion_number: '0x1085'
git_revision: d85f37138db71ea6376260fb3ed5819faa4b97ee
ll_subversion_number: '0x1094'
ll_version_number: '0x0E'
timestamp: '2025-01-07T16:49:25Z'
timestamp: '2025-01-22T14:20:56Z'
Binary file not shown.
Binary file not shown.
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf52/soft-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: f4f268ce33699c0889e295520777b00a93aab5a3
ll_subversion_number: '0x1085'
git_revision: d85f37138db71ea6376260fb3ed5819faa4b97ee
ll_subversion_number: '0x1094'
ll_version_number: '0x0E'
timestamp: '2025-01-07T16:49:25Z'
timestamp: '2025-01-22T14:20:56Z'
Binary file not shown.
Binary file not shown.
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf52/softfp-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: f4f268ce33699c0889e295520777b00a93aab5a3
ll_subversion_number: '0x1085'
git_revision: d85f37138db71ea6376260fb3ed5819faa4b97ee
ll_subversion_number: '0x1094'
ll_version_number: '0x0E'
timestamp: '2025-01-07T16:49:25Z'
timestamp: '2025-01-22T14:20:56Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf53/soft-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: f4f268ce33699c0889e295520777b00a93aab5a3
ll_subversion_number: '0x2085'
git_revision: d85f37138db71ea6376260fb3ed5819faa4b97ee
ll_subversion_number: '0x2094'
ll_version_number: '0x0E'
timestamp: '2025-01-07T16:50:22Z'
timestamp: '2025-01-22T14:21:58Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54h/hard-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: f4f268ce33699c0889e295520777b00a93aab5a3
ll_subversion_number: '0x4085'
git_revision: d85f37138db71ea6376260fb3ed5819faa4b97ee
ll_subversion_number: '0x4094'
ll_version_number: '0x0E'
timestamp: '2025-01-07T16:51:42Z'
timestamp: '2025-01-22T14:22:46Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54h/soft-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: f4f268ce33699c0889e295520777b00a93aab5a3
ll_subversion_number: '0x4085'
git_revision: d85f37138db71ea6376260fb3ed5819faa4b97ee
ll_subversion_number: '0x4094'
ll_version_number: '0x0E'
timestamp: '2025-01-07T16:51:42Z'
timestamp: '2025-01-22T14:22:46Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54h/softfp-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: f4f268ce33699c0889e295520777b00a93aab5a3
ll_subversion_number: '0x4085'
git_revision: d85f37138db71ea6376260fb3ed5819faa4b97ee
ll_subversion_number: '0x4094'
ll_version_number: '0x0E'
timestamp: '2025-01-07T16:51:42Z'
timestamp: '2025-01-22T14:22:46Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54l/hard-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: f4f268ce33699c0889e295520777b00a93aab5a3
ll_subversion_number: '0x3085'
git_revision: d85f37138db71ea6376260fb3ed5819faa4b97ee
ll_subversion_number: '0x3094'
ll_version_number: '0x0E'
timestamp: '2025-01-07T16:52:51Z'
timestamp: '2025-01-22T14:23:56Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54l/soft-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: f4f268ce33699c0889e295520777b00a93aab5a3
ll_subversion_number: '0x3085'
git_revision: d85f37138db71ea6376260fb3ed5819faa4b97ee
ll_subversion_number: '0x3094'
ll_version_number: '0x0E'
timestamp: '2025-01-07T16:52:51Z'
timestamp: '2025-01-22T14:23:56Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54l/softfp-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: f4f268ce33699c0889e295520777b00a93aab5a3
ll_subversion_number: '0x3085'
git_revision: d85f37138db71ea6376260fb3ed5819faa4b97ee
ll_subversion_number: '0x3094'
ll_version_number: '0x0E'
timestamp: '2025-01-07T16:52:51Z'
timestamp: '2025-01-22T14:23:56Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54l_ns/hard-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: f4f268ce33699c0889e295520777b00a93aab5a3
ll_subversion_number: '0x3085'
git_revision: d85f37138db71ea6376260fb3ed5819faa4b97ee
ll_subversion_number: '0x3094'
ll_version_number: '0x0E'
timestamp: '2025-01-07T16:53:57Z'
timestamp: '2025-01-22T14:25:16Z'
Binary file not shown.
6 changes: 3 additions & 3 deletions softdevice_controller/lib/nrf54l_ns/soft-float/manifest.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: f4f268ce33699c0889e295520777b00a93aab5a3
ll_subversion_number: '0x3085'
git_revision: d85f37138db71ea6376260fb3ed5819faa4b97ee
ll_subversion_number: '0x3094'
ll_version_number: '0x0E'
timestamp: '2025-01-07T16:53:57Z'
timestamp: '2025-01-22T14:25:16Z'
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
description: SoftDevice Controller
git_revision: f4f268ce33699c0889e295520777b00a93aab5a3
ll_subversion_number: '0x3085'
git_revision: d85f37138db71ea6376260fb3ed5819faa4b97ee
ll_subversion_number: '0x3094'
ll_version_number: '0x0E'
timestamp: '2025-01-07T16:53:57Z'
timestamp: '2025-01-22T14:25:16Z'

0 comments on commit b5c1a84

Please sign in to comment.