Before a LL_FEATURE_REQ is sent, verify that the Data Length Update
procedure is still supported as it could have been unmasked as the result
of a previously completed Feature Exchange procedure.
Add unit test to verify the case of enqueuing both a
Feature Exchange procedure and Data Length Update procedure, where the
Feature Exchange procedure would result in the unmasking of the Data
Length Update procedure.
Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
Resume the TX Data Q when a LL_UNKNOWN_RSP is recieved instead of a
LL_PHY_RSP.
Update PHY Update unit test with more coverage of the TX Data Q pause
state.
Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
Advertising data has to be truncated at a PDU boundary
Similar to earlier fix for extended advertising reports
Found in several EBQ tests, including LL/DDI/SCN/BV-25-C,
LL/DDI/SCN/BV-21-C and LL/DDI/SCN/BV-46-C
Signed-off-by: Troels Nilsson <trnn@demant.com>
This commit updates nordic lll controller to use
IRQ_DIRECT_CONNECT where applicable instead of
using IRQ_CONNECT with ISR_FLAG_DIRECT.
Signed-off-by: Radosław Koppel <radoslaw.koppel@nordicsemi.no>
Fix Periodic Advertising Synchronization leading to
Peripheral ACL connection supervision timeout, due to
direction finding related radio hardware registers being
updated in the implementation that is not built for
direction finding feature support.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Enfore a range for BT_CTLR_ADV_AUX_SYNC_OFFSET such that
it does not take negative integer values.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix MFIFO_DEFINE to reduce FLASH usage by moving the pool
outside the struct that is static initialized.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix missing call to ull_chan_reset(), this fixes
uninitialized channel map being used after LL reset.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix RXFIFO_DEFINE to reduce FLASH usage by moving the pool
outside the struct that is static initialized.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix radio packet length configuration when first subevent
has empty PDU in the BIG event.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix ISO Synchronized Receiver sequential packing BIS PDU
being dropped in the first repetation just after previous
BIS subevents where skipped.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix Broadcast ISO Create Scheduling to consider reducing
Host requested RTN value. And also use maximum overhead
calculation when Extended Advertising and Periodic
Advertising have not been started before BIG create.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix incorrect HCI ISO data length check for Broadcast ISO
transmissions.
Removed initially added code when preliminary support for
Broadcast ISO was implemented.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix double prepare overhead considered in scheduling
extended, periodic and ISO broadcast radio events when using
LOW LAT variant.
ticks_slot maintained in ticker includes the overhead, the
ticks_slot stored in role/state context exclude the overhead
hence take care to include ticks_slot_overhead when value is
used from context and not when value used from ticker nodes.
Add jitter due to ticker resolution unit between scheduled
radio events. This will allow the synchronizing side too to
not overlap due to ticker resolution related jitter.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix ISO Synchronized Receiver sequential packing subevent
skip to next BIS subevent, so that radio channel is
correctly calculated.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix assertion due to LLL scheduling of auxiliary PDU
reception was not considered in the ULL when checking for
accumulated data length exceeding the supported maximum scan
data length. This caused the auxiliary context to be release
while LLL was still active with scheduled PDU reception.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Instead of asserting, handle CIS creation latency for the peripheral by
finding next valid ISO event at which to start the CIG ticker.
Refactored calculations of the cig_offset to separate functions, to be
used also when calculating a new start offset.
Signed-off-by: Morten Priess <mtpr@oticon.com>
Fix missing ISO Synchronized Receiver radio event time
reservation that did not calculate for all the subevents.
Introduce BT_CTLR_SYNC_ISO_RESERVE_MAX Kconfig option to
allow using a minimal time reservation if needed to allow
other role to pre-empt ISO Synchronized Receiver in
pre-transmission and control subevents.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Add support for DYNAMIC_INTERRUPTS and ARM specific
DYNAMIC_DIRECT_INTERRUPTS.
Co-authored-by: Radosław Koppel <radoslaw.koppel@nordicsemi.no>
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix ull_prepare_dequeue to not skip events when preempt
does not match the event in the head of the prepare queue.
The head of the prepare queue does not match when
ull_prepare_dequeue has put the head of the queue to the
last of the queue when it is calling lll_resume interface.
This happens when there is already an active event which
needs a preempt timeout to be setup and there is another
non-resume event in the pipeline which now becomes the
head. The fix ensure to restore the order of the events
if a preempt timeout was to be setup.
Currently ull_prepare_dequeue loops through all events
before stopping at the original way the queue was. This is
not efficient and is a scope for improvement in future.
This reverts commit 91781306e9 ("Revert "Bluetooth:
Controller: Fix ull_prepare_dequeue for skipped events"").
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Add functions to do XOR on arrays of memory, with one that
takes arbitrary sizes and one for 32 bits and 128 bits as
those are common sizes for this functionality.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
If an instant based remote procedure 'overtakes' a local ditto
the local procedure will be 'completed' by remote rejection
but collision flag would not get set ensuring that a new local
conflicting procedure cannot be started before the remote is completed.
This can thus lead to invalid local initiation.
Added unittest to cover case
Fix by ensuring collision flag is set also in the above mentioned
scenario.
Signed-off-by: Erik Brockhoff <erbr@oticon.com>
Revert back to implementation that did early abort of
previous prepare when a short prepare is enqueued.
Adds back implementation deleted in
commit 7f388bb70a ("Bluetooth: Controller: Fix short
prepare when many enqueued in pipeline").
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Minor refactor of Kconfig order such that the advanced
feature Kconfig is just above the enabling/visible of the
advanced features menu.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Add implementation to reduce CIG's CIS retransmissions so as
to meet the Host requested Maximum Transport Latency.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fixes failing EBQ test LL/DDI/SCN/BV-88-C Extended Scanning,
Active, Properly Ignore RFU Fields
Several minor modifications made to le_ext_adv_report() to
properly ignore any invalid fields present in the received PDUs
Signed-off-by: Troels Nilsson <trnn@demant.com>
radio_pkt_big_ctrl_get() returns a statically allocated
buffer of type pdu_big_ctrl, but the callers expect a
buffer where a whole PDU for a BIG control packet can fit
(not just space for the payload),
and use it as such, overflowing this statically
allocated buffer, and smashing other variables after.
Let's fix it by allocating a buffer of the correct size
to fit a BIG control PDU.
Fixes https://github.com/zephyrproject-rtos/zephyr/issues/64497
Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
With very fast HCI interfaces (for ex. in the simulated nrf5340)
the tx_rate calculation can do a division by 0
(if to packets are enqueued in the same 32KHz clock period).
Let's avoid it.
Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
Fix missing Extended Advertising terminate event and
advertising scheduling not being stopped.
Under race conditions, auxiliary event is aborted without
the generation of done extra event which is suppose to
stop the scheduling when max events count is used.
The fix now generates the done extra event.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix periodic advertising sync window calculation to include
the scheduling resolution margin, i.e. be double as with
the event jitter value.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Fix bitfield crossing byte boundary - replaced with macros for
setting/getting the values
Fix missing endianness conversion for evt_cntr
Changed aa from uint32_t to uint8_t[4] to align with the rest of
the code and avoid any potential endianness issues
Signed-off-by: Troels Nilsson <trnn@demant.com>