Commit Graph

2640 Commits

Author SHA1 Message Date
Erik Brockhoff
0d94ad69f6 Bluetooth: controller: removing unused functionality
Removing llcp_tx_flush() as it turns out it is not needed.

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
2022-04-27 10:09:03 +02:00
Erik Brockhoff
025b9745d3 Bluetooth: controller: implementing state check for ENC reply API
Now checking that encryption procedure is in correct state to accept
a reply from host.

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
2022-04-27 10:09:03 +02:00
Erik Brockhoff
06078ee54e Bluetooth: controller: DO TODO, compile out members of struct re. CPR
Compile out misc. members not used when Connection Parameter Request
is not supported.
Implement missing tests re. unsupported features in CU/CPR procedure

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
2022-04-27 10:09:03 +02:00
Erik Brockhoff
d8f0c1adf6 Bluetooth: controller: implement connection termination on invalid pdus
When a running procedure receives a REJECT or UNKNOWN_RSP PDU that is
not an expected part of the procedure flow this leads to termination
of the connection

This affects procedures:
CU/CPR, CTE, PHY, PING, DLE, FEX, VEX, CHMU

Unit tests are updated to cover the updated behaviour.

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
2022-04-26 14:06:16 +02:00
Vinayak Kariappa Chettimada
31f49936e2 Bluetooth: Controller: Fix missing cond. compile for ext. scan filter
Fix missing conditional compile when Advertising Extensions
is enabled without Extended Scan Filter Policy support.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-25 11:44:22 -07:00
Thomas Ebert Hansen
d1c9efa83d Bluetooth: controller: LLCP PRT rewrite
Rewrite the entire Procedure Response Timeout mechanism.

Use two separate timers for local and remote initiated procedures.

Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
2022-04-25 15:36:16 +02:00
Andries Kruithof
ecae7a9c7f Bluetooth: controller: llcp: terminate connection on collission
As per bluetooth spec Vol. 6 part B section 5.3 we need to terminate
the connection under given situation

Signed-off-by: Andries Kruithof <andries.kruithof@nordicsemi.no>
2022-04-25 15:35:45 +02:00
Piotr Pryga
0ead951649 Bluetooth: Controller: llcp: Fix PHY update instant val if no PHY change
BT Core spec 5.3 Vol 6, Part B section 2.4.23 LL_PHY_UPDATE_IND says:
"If both the PHY_C_TO_P and PHY_P_TO_C fields are zero then there is no
Instant and the Instant field is reserved for future use."
Fields that are reserved for future shall be filled with zeros.

New LLCPs implementation didn't handle this case and set the instant
as if there were a PHY change. That caused qualification tests to fail.

The commit fixes the issue.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-04-25 13:10:42 +02:00
Vinayak Kariappa Chettimada
4efd9b80c8 Bluetooth: Controller: Fix typo in BT_CTLR_ISOAL_SOURCES prompt
Fix typo in BT_CTLR_ISOAL_SOURCES Kconfig prompt message.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-24 19:47:46 +02:00
Kamil Gawor
3defc3dfc2 Bluetooth: Controller: Fix timings for Tx test
The Tx interval is now calculated at the beginning
of the Tx test and the next transmission is
triggerd by the switch timer instead of event
timer. This fixes a corner case issue when
timer rollover.

Signed-off-by: Kamil Gawor <Kamil.Gawor@nordicsemi.no>
2022-04-22 13:46:34 +02:00
Piotr Pryga
77ae58ee72 Bluetooth: Controller: fix wrong use of LE Features in CTE REQ llcp
When Host calls HCI_LE_Connection_CTE_Request_Enable with cte type
set to AoD with 1us slots or AoD with  2 us slots, the Controller
verifies if peer device supports Antenna Switching During CTE
Transmission (AoD) feature.

That is wrong because the feature is marked as optional when send
to peer, so it shall be igonerd by remote device.

There are no means to check if peer device supports particular
CTE type, hence the check has to be removed.

The check causes enable CTE REQ procedure to fail after feature
exchange has happened.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-04-22 09:45:27 +02:00
Piotr Pryga
45bba8e5f8 Bluetooth: Controller: df: Fix missing disable CTE req LLCP after compl
The CTE request procedure can be run in periodic and non-periodic mode.
In periodic mode it stays enabled until Host call HCI_LE_Connection_CTE-
_Request_Enable(Enable=0x0).
In non-periodic mode the command is disabled after completion,
LL_CTE_RSP is successfully received.

There is missing disable of the procedure in the current code,
so Host is not able to run the command HCI_LE_Connection_CTE_Request_-
Enable(Enable=0x1) again without explicit call to HCI_LE_Connection_-
CTE_Request_Enable(Enable=0x0).

The commit adds missing code responsible for disable of the procedure.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-04-22 09:45:14 +02:00
Vinayak Kariappa Chettimada
13fe3bb6c3 Bluetooth: Controller: Fix assert on LL BIG terminate
Fix assert on LL BIG terminate call before BIG sync is
established. Assert was caused due to duplicate calls to
release stream contexts, once in LL BIG terminate function
then when releasing the HCI BIG sync failed to be
established node rx was being released.

Use iso_broadcast and iso_receive samples, power cycle the
iso_broadcast device when iso_receive sample is waiting for
BIG sync to be established, iso_receive sample will perform
a BIG sync terminate that leads to the assert.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-22 09:41:50 +02:00
Vinayak Kariappa Chettimada
335315fc71 Bluetooth: Controller: Fix spurious transmit after mic failure
Fix spurious transmit of corrupt PDU after reception of PDU
with MIC failure.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-22 09:41:32 +02:00
Piotr Pryga
b53657a058 Bluetooth: Controller: hci: Wrong opcode when handling CTE req failed
HCI_LE_CTE_Request_Failed may be generated in case received LL_CTE_RSP
PDU didn't contain CTE or if peer rejected the request. HCI function
encode_data_ctrl responsible for dispatching received control PDUs
should not expect a PDU with PDU_DATA_LLCTRL_TYPE_CTE_REQ opcode.
It should never happen. The correct opcode here is PDU_DATA_LLCTRL_TYPE-
_CTE_RSP.

Result of this issue is an assert when LL_CTE_RSP PDU is received
but it does not include CTE.

The commit fixes the problem.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-04-13 13:40:59 -07:00
Szymon Janc
1f27849457 Bluetooth: controller: Fix build with new LLCP enabled
PR44014 introduced new pause logic for procedures but PR44297
was merged without being update to use it.

Signed-off-by: Szymon Janc <szymon.janc@codecoup.pl>
2022-04-12 12:57:44 +02:00
Erik Brockhoff
f056eb516d Bluetooth: controller: Implementing LL param checks for refactored CPR
Now refactored Connection Parameter Request procedure supports
parameter checking, and implements reject_ext_ind on invalid parameters

Updates to TODO description for remaining work

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
2022-04-12 09:57:43 +02:00
Piotr Pryga
ab17f6d9f7 Bluetooth: Controller: Fix missing event counter sub by one
The event counter value for connection and periodic advertising
events is updated to next value during event preparation (in one
of prepare_cb functions in LLL).
IQ report is prepared after event preparation, so value of event
counter is ahead of the current event value by one, hence it has
to be subtracted.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-04-12 09:54:07 +02:00
Piotr Pryga
7dd3d8ff87 Bluetooth: Controller: df: Fix wrong value of event counter in iq report
HCI_LE_Connectionless_IQ_Report and HCI_LE_Connection_IQ_Report
events has fields that store event counter values: Periodic_Event_-
Counter and Event_Counter, respectively.
Values assigned to this HCI events are taken directly from
lower link layer objects. In case of too slow processing of
HCI events values provided by LLL contexts could be changed before
HCI sends events to Host. That can happen e.g. in case of short
periodic advertising interval and slow UART baudrate.
In such situation event counter values will be corrupted.

To prevent that situation, event counter values connected with
IQ sample reports, has to be stored in node_rx_iq_report when
a report instance is filled in LLL.

This commit introduces required changes.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-04-12 09:54:07 +02:00
Lingao Meng
37e561f42e Bluetooth: Host: Add choice select whether BT RX
Change CONFIG_BT_RECV_IS_RX_THREAD into a
choice:CONFIG_BT_RECV_CONTEXT with the following options
(names can be discussed further of course):

    CONFIG_BT_RECV_BLOCKING
    CONFIG_BT_RECV_WORKQ_BT
    CONFIG_BT_RECV_WORKQ_SYS

This way users would be able to choose what to run most of
the BLE stack on, they wouldn't be forced to a single model.

We would default to CONFIG_BT_RECV_BLOCKING so that we wouldn't
need to change the system workqueue stack size by default, instead
asking users to do so if they select the CONFIG_BT_RECV_WORKQ_SYS option

Signed-off-by: Lingao Meng <menglingao@xiaomi.com>
2022-04-11 10:58:09 +02:00
Pieterjan Camerlynck
53327e30f2 Bluetooth: Controller: Fix null pointer dereference
Fix null pointer dereference in Controller when receiving an extended
advertisement and CONFIG_BT_LOG_LEVEL_DBG is enabled.

Signed-off-by: Pieterjan Camerlynck <pieterjan.camerlynck@gmail.com>
2022-04-08 10:22:22 +02:00
Vinayak Kariappa Chettimada
eef7d67926 Bluetooth: Controller: Add +3dBm Tx power support in nRF53 Series
Add implementation in Controller to set radio high voltage
to enable support for +3dBm Tx Power in nRF53 Series SoCs.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-08 09:30:52 +02:00
Vinayak Kariappa Chettimada
11d81f8e0a Bluetooth: controller: Add radio_stop interface
Add radio_stop interface that will be called on radio event
done. This interface can be in turn used to perform H/w
dependent cleanup for every Radio event done.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-08 09:30:52 +02:00
Jakob Krantz
4f05240cec Bluetooth: controller: df: Fix check for saturated IQ samples.
When an int16_t I or Q value was input to IQ_CONVERT_12_TO_8_BIT
the compiler would not make the correct comparison with
IQ_SAMPLE_STATURATED_16_BIT causing saturated IQ samples never
being found.

Signed-off-by: Jakob Krantz <jakob.krantz@u-blox.com>
2022-04-06 11:24:02 +02:00
Vinayak Kariappa Chettimada
de5510668a Bluetooth: Controller: Fix Extended Scan and Periodic Sync terminate
Fix Extended Scan disable and Periodic Synchronization
terminate to cover scenarios where chain PDU reception could
complete while thread context is waiting for the radio event
to be done.

Changes here ensure auxiliary context is not released twice
which is caught as an assertion in flush() when checking for
validity of aux->parent pointer.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-05 14:50:18 +02:00
Vinayak Kariappa Chettimada
2ed87e13cd Bluetooth: Controller: Fix missing check already stopped periodic aux
Fix missing return value check when Periodic Synchronization
Auxiliary PDU reception has already been stopped, this can
be due to PDU reception in LLL completing while stop has
been requested.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-05 14:50:18 +02:00
Vinayak Kariappa Chettimada
6321b9666e Bluetooth: Controller: Add additional assert check for aux release
Add additional assertion check in the control path leading
to auxiliary context release to catch regressions that may
lead to duplicate auxiliary context release.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-05 14:50:18 +02:00
Vinayak Kariappa Chettimada
5cf39c4755 Bluetooth: Controller: Fix missing Tx demux for LOW LAT ULL variant
Fix missing execution of Tx demux for LOW LAT ULL variant
which caused connection events not being maintained to
transmit the latest Tx Data enqueued while being inside a
connection event.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-05 14:47:23 +02:00
Timothy Keys
e34c63012e Bluetooth: Controller: Fix -40 tx power kconfig for nrf53
Fix -40 dbm kconfig tx power option dependency rules preventing use
on nrf53 boards.

Signed-off-by: Timothy Keys <timothy.keys@nordicsemi.no>
2022-04-05 14:47:13 +02:00
Andries Kruithof
94f7bb9194 Bluetooth: controller: llcp: remove extra initialisation
There was an extra call to llcp_lr_init and llcp_rr_init, which is
removed in this commit

Signed-off-by: Andries Kruithof <andries.kruithof@nordicsemi.no>
2022-04-04 15:34:17 +02:00
Thomas Ebert Hansen
060ac37166 Bluetooth: controller: Fix RX data pause
Reset pause_rx_data to 0 during adv enable or connection creation.

Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
2022-04-04 15:34:09 +02:00
Thomas Ebert Hansen
fefa83d5ed Bluetooth: controller: Rework procedure pause logic
llcp_lr_pause()/llcp_rr_pause() only pauses currently pending procedures
in their respective request machines, any future initiations are not
paused, thus they are allowed to run, when the opposite was expected.

Change the procedure pause logic into a global pause on the request
machines them self, this is essence what the per-procedure pause
flag was trying to achieve.

Add new query function llcp_?r_ispaused() to not expose the logic behind
the pause functionality.

Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
2022-04-04 15:34:09 +02:00
Thomas Ebert Hansen
79092c3cf4 Bluetooth: controller: Rework TX data pause
Change LLCP TX data pause into using mask to allow for pausing from
multiple different sources - but only once per source
(the underlying TX queue still just has an integer counter).

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
2022-04-04 15:34:09 +02:00
Andries Kruithof
b909647d0a Bluetooth: controller: llcp: serialize phy update notifications
The PHY update procedure may trigger a DLE update in certain
situations
When a limited number of rx buffers is available there may not be
enough for doing the phy update and dle update notifications
at once.

Fixes #41788

Signed-off-by: Andries Kruithof <Andries.Kruithof@nordicsemi.no>
2022-04-04 15:33:59 +02:00
Thomas Ebert Hansen
3c5243fa9c Bluetooth: controller: Rewrite LLCP PDU RX handling
Rewrite ull_cp_rx to handle the following cases:

(1)
  Local active procedure
  Unexpected local procedure PDU
  Remote active procedure
  Unexpected remote procedure PDU
  => Invalid Behaviour

(2)
  Local active procedure
  Unexpected local procedure PDU
  Remote active procedure
  Expected remote procedure PDU
  => Process PDU in remote procedure

(3)
  Local active procedure
  Expected local procedure PDU
  Remote active procedure
  Unexpected remote procedure PDU
  => Process PDU in local procedure

(4)
  Local active procedure
  Expected local procedure PDU
  Remote active procedure
  Expected remote procedure PDU
  => This cannot happen

(5)
  Local active procedure
  Unexpected local procedure PDU
  No remote active procedure
  => Process PDU as a new remote request

(6)
  Local active procedure
  Expected local procedure PDU
  No remote active procedure
  => Process PDU in local procedure

(7)
  No local active procedure
  Remote active procedure
  => Process PDU in remote procedure

(8)
  No local active procedure
  No remote active procedure
  => Process PDU as a new remote request

Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
2022-04-04 15:20:16 +02:00
Vinayak Kariappa Chettimada
9530fb739b Bluetooth: Controller: Fix use of uninitialized secondary PHY
Fix connectable advertising to not use uninitialized
secondary PHY value to set the max_tx_time and max_rx_time
for a non-extended connectable advertising context.

The symptoms being Data Length Update event being generated
when peer central initiated Data Length Update Procedure
does not change from default 27 byte 328 us values.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-04 14:11:32 +02:00
Vinayak Kariappa Chettimada
08311d747d Bluetooth: Controller: Use macro to check scanning on PHY enabled
Use a macro to check where scanning on 1M and/or Coded PHY
is enabled.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-04 14:11:24 +02:00
Vinayak Kariappa Chettimada
4137a5b1af Bluetooth: Controller: Offset Coded PHY scan window
Offset the Coded PHY scan window by 1M PHY scan window
duration so that when 1M PHY scan window is less than
scan interval then Coded PHY scan window can utilize the
radio thereafter for its scan window duration. For
example, with 20 ms interval and 10 ms window there can
be 10 ms 1M PHY followed by 10 ms of Coded PHY scanning.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-04 14:11:24 +02:00
Vinayak Kariappa Chettimada
6316ca44af Bluetooth: Controller: Introduce a timeout to get HCI event buffer
Introduce a timeout to get HCI event buffer when preparing
Extended and Periodic Advertising reports. This will prevent
silent hanging of Controller in case of insuffient Rx buffer
configurations.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-04 14:09:51 +02:00
Vinayak Kariappa Chettimada
36c4c64675 Bluetooth: Controller: Workaround nRF52840 Revision 3 Errata 191
Add workaround for nRF52840 Revision 3 Errata 191. Removed
workaround for fixed nRF52840 Engineering Revision A Errata
164.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-04 13:03:08 +02:00
Kamil Gawor
54c9a3b8e9 Bluetooth: Controller: Fix b2b rx shorts
This fixes Radio Rx when switching back-to-back is
used and device support CTE. For the CTE reception we need to use
PHYEND->DISABLE short instead of END->DISABLE short.
Using NRF_RADIO_SHORTS_PDU_END_DISABLE short handles
both cases.

Signed-off-by: Kamil Gawor <Kamil.Gawor@nordicsemi.no>
2022-04-04 11:14:52 +02:00
Kamil Gawor
c2a0d7f761 Bluetooth: Controller: Improve handling iq samples in DTM
This adds improvements in handling IQ samples
in the Direct Test Mode.

Signed-off-by: Kamil Gawor <Kamil.Gawor@nordicsemi.no>
2022-04-04 11:14:44 +02:00
Vinayak Kariappa Chettimada
cfc44101a6 Bluetooth: Controller: Update to increase simultaneous connection limit
Update Controller to use uint16_t instead of uint8_t to
allow buffer counts to exceed beyond 255. Also fix pointer
arithmetic from being restricted to uint16_t that prevented
calculating the memory index for large offsets. This will
now allow support for 250 simultaneous connections, limited
by ticker_id type being uint8_t.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-04 10:24:34 +02:00
Vinayak Kariappa Chettimada
8ef4cfc577 Bluetooth: Controller: Force MD feature not supported in LOW LAT ULL
Add Kconfig dependency to disable use of Force MD feature
when using LOW LAT ULL variant of the Controller.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-04 10:24:19 +02:00
Vinayak Kariappa Chettimada
018f59e46f Bluetooth: Controller: NULL structure fields before release to pool
NULL structure fields before releasing memory back to pool.
Add assertion check to prevent NULL pointer dereferencing of
node rx.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-02 15:40:09 +02:00
Erik Brockhoff
046ef86e7a bluetooth: controller: optimizing random get in encryption procedure
Utilizing packed location of SKDm/s and IVm/s to only call
csrand_get() once

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
2022-04-02 15:40:02 +02:00
Erik Brockhoff
e42d453e3e bluetooth: controller: use global ull_conn_event_counter() in procedures
Replace the use of local event_counter() functions with one defined
in ull_conn.c

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
2022-04-02 15:40:02 +02:00
Erik Brockhoff
045735787d bluetooth: controller: removing 'no-brainer' TODOs from refactored LLCP
Getting rid of TODOs that are fairly straight forward to resolve
* introduce role checks in ENC API
* Remove ASSERT on re-rx of LL_VERSION_IND, ignore instead
* in tests/.../ctrl_chmu: rename variable and initialize initial ch map
* in tests/.../mock_ctrl/util.c: Changing TODO into FYI
* in tests/.../helper_features.h update mask and remove TODO comment
* in ull_llcp_remote.c: re-order cases in proc_with_instant switch
* in ull_conn_upd.c: PARAM REQ only uses REJECT_EXT_IND
* in ull_llcp_common.c: in CENTRAL on rx of LL_MIN_USED_CHANNELS_IND
     chose to do nothing re. channel map. Update unit test accordingly

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
2022-04-02 15:40:02 +02:00
Erik Brockhoff
628d3224f9 bluetooth: controller: removing 'empty' TODO's from refactored LLCP
Cleanup, removing TODOs that should just be removed

Signed-off-by: Erik Brockhoff <erbr@oticon.com>
2022-04-02 15:40:02 +02:00
Andrzej Głąbek
586e26e8fc soc: nrf: Use data from DTS to populate HAS_HW_NRF_* Kconfig options
Instead of selecting appropriate HAS_HW_NRF_* options for particular
nRF SoCs (and simulated nRF52 target), set their values basing on
information from devicetree.
Correct also semantics of those options so that they are set only when
a corresponding DT node is enabled. This allows using them directly in
Kconfig dependencies of Zephyr drivers for nRF peripherals. Update
appropriately these dependencies.

Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
2022-04-02 15:14:38 +02:00
Vinayak Kariappa Chettimada
7802d88309 Bluetooth: Controller: Fix missing dup filtering cond. compile
Fix missing duplicate filtering feature conditional
compilation which caused build error when duplicate
filtering feature is disabled when Periodic Advertising
feature selected.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-04-01 12:39:37 -05:00
Vinayak Kariappa Chettimada
aab1b579b7 Bluetooth: Controller: Workaround nRF5340 Revision 1 Errata 117
Add implementation workaround for nRF5340 Revision 1 Errata
117.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-31 13:43:57 +02:00
Rubin Gerritsen
b52397584a Bluetooth: Controller: Enhance experimental SW_SPLIT Kconfigs names
This makes the it more intuitive when searching.

Signed-off-by: Rubin Gerritsen <rubin.gerritsen@nordicsemi.no>
2022-03-31 10:29:21 +02:00
Rubin Gerritsen
8649eb122e Bluetooth: Controller: Only show one prompt for experimental configs
Uses the proposed workaround in
https://github.com/ulfalizer/Kconfiglib/issues/117

Signed-off-by: Rubin Gerritsen <rubin.gerritsen@nordicsemi.no>
2022-03-31 10:29:21 +02:00
Saleh Mehdikhani
d201d4d79a Bluetooth: Controller: Fixing value of sample_offset when PHY is 1M
When PHY is set to 1M, due to missed "break" statement of switch/case
the sample_offset will be set to the corresponding values of 2M
which causes improper function of sampling CTE signals.
By adding "break" statement the problem has solved.

Fixes: #44296

Signed-off-by: Saleh Mehdikhani <saleh.mehdikhani@unikie.com>
2022-03-30 11:30:05 +02:00
Marek Pieta
15ebdfafe2 Bluetooth: Controller: Fix filter bdaddr list size
The lll_filter is used for rl_filter and fal_filter. Size of bdaddr
must be big enough for the worst case.

Signed-off-by: Marek Pieta <Marek.Pieta@nordicsemi.no>
2022-03-25 16:13:06 +01:00
Vinayak Kariappa Chettimada
2954658d3b Bluetooth: Controller: Cond. compile ISOAL for broadcast/receive only
Conditional compile ISOAL implementation to support ISO
Broadcast only and ISO Receive only application builds.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-25 12:52:11 +01:00
Vinayak Kariappa Chettimada
1825f81cd3 Bluetooth: Controller: Fix compiler error due to missing include file
Fix compile error, compiling the connectionless direction
finding samples, due to missing include file.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-25 10:42:14 +01:00
Vinayak Kariappa Chettimada
690fc52a03 Bluetooth: Controller: Fix Periodic Sync CTE time reservations
Fix Periodic Advertising Synchronization time reservation
updated when enabling/disabling direction finding IQ
sampling.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-25 10:42:14 +01:00
Piotr Pryga
3604a7bf9a Bluetooth: Controller: df: Fix CTE req send wrong ntf in single shot run
In case the CTE request was executed as a single shot and Controller
successfully received LL_CTE_RSP PDU there was an assertion.
The assertion was caused by not completely prepared notification PDU.
The notification PDU was send towards Host by CTE request handling code
due to an error in lp_comm_complete function. If the CTE request was
single shot it went into wrong if-else statement, despite that the
LL_CTE_RSP was correctly received.

A check if-clause if the procedure is periodic should not affect the
procedure completion. It should affect whether req_expire counter has
to be restored.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-03-24 15:26:50 +01:00
Piotr Pryga
09cd296962 Bluetooth: Controller: radio: Fix num of antennas returned by controller
The antenna number returned by controller if antenna switching is not
enabled was zero. That is not compliant with  BT 5.3. Core Spec Vol 4.
Part E section 7.8.87. In this situation returned value should be 1.

There is always single antenna available that is responsible for PDU
reception and transmission.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-03-24 11:59:31 +01:00
Vinayak Kariappa Chettimada
68f63246a0 Bluetooth: Controller: Fix filter accept list with periodic adv list use
Fix implementation to be able to establish synchronization
when scan filter accept list is in use and periodic
synchronization needs to be established using specified peer
address or using periodic advertiser list.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-23 16:32:49 +01:00
Piotr Pryga
e6f685991f Bluetooth: Controller: llcp: fix missing remote CTE REQ was handling
The CTE request has two parts: transmission of a CTE request and
reception of a CTE request. The outcome of reception of a CTE request
is transmission of CTE response.

In the new_proc_lut table for allowed remotely requested control procedures
the CTE request was quarded by CONFIG_BT_CTLR_DF_CONN_CTE_REQ.
In case of a build where CTE request is not enabled but CTE response is
the receiver part of CTE request should be enabled also.

The entry in the new_proc_lut should be quarded by CONFIG_BT_CTLR_DF_CONN_-
CTE_RSP.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-03-23 14:10:47 +01:00
Michał Barnaś
a1ab8da862 kconfig: fix dt_node_has_prop and add nodelabel functions
The Kconfig function "dt_node_has_prop" was using label as its
parameter, where other functions use either chosen or path.
The documentation says that the parameter is path, so this patch
makes the function as documentation says and as other functions
in the file.
The additional nodelabel functions were added as counterparts that
are using nodes labels instead of paths.

Signed-off-by: Michał Barnaś <mb@semihalf.com>
2022-03-23 13:25:21 +01:00
Vinayak Kariappa Chettimada
fef56b3223 Bluetooth: Controller: Fix aux context release before aux done event
Fix scan aux context release when (ULL) ticker scheduling
fails due to overlapping events (example a new scan window)
and aux context being released before scan aux done event is
processed, caused assertion when processing the done event
with corrupt ULL reference count.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-23 13:15:12 +01:00
Vinayak Kariappa Chettimada
11db2d95f8 Bluetooth: Controller: Increase event done max count for Coded PHY
Increase the event done max count when supporting Extended
Scanning with Coded PHY support, wherein prepare queue will
hold an extra resume prepare when both 1M and Coded PHY
are enabled in continuous scanning.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-23 13:15:03 +01:00
Vinayak Kariappa Chettimada
1f973f4330 Bluetooth: Controller: Fix Extended Scan disable livelock
Fix implementation from enqueueing duplicate node_rx which
leads to infinite loop processing the node_rx list.

Relates to commit a5fb434705 ("Bluetooth: Controller: Fix
to stop Extended Auxiliary Scan context").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-23 12:57:08 +01:00
Vinayak Kariappa Chettimada
4548bd9a25 Bluetooth: Controller: Use ticker yield to allow chain PDU receive
Use ticker yield interface to allow chain PDU reception that
overlaps with currently reserved time for received PDU.
Without the yield ULL scheduling to receive auxiliary PDU
fails to be scheduled using ticker.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-23 12:53:38 +01:00
Vinayak Kariappa Chettimada
53996ba459 Bluetooth: Controller: Yield stopped ticker time reservations
Update ticker_yield_abs implementation to allow yielding
expired single shot tickers.

Relates to commit bce82ad49b ("Bluetooth: controller: Add
ticker_yield_abs interface").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-23 12:53:38 +01:00
Vinayak Kariappa Chettimada
8482c95884 Bluetooth: Controller: Use minimal time reservation for aux receive
Use minimal time reservation for aux receive.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-23 12:53:38 +01:00
Vinayak Kariappa Chettimada
5dc29b2c8c Bluetooth: controller: Fix aux offset overhead calculation and margin
Fix missing use of EVENT_TICKER_RES_MARGIN_US and receive
chain delay in the calculation of overhead value that
determines if ULL or LLL scheduling to be used to receive
auxiliary PDUs.

Also, fix missing use of EVENT_TICKER_RES_MARGIN_US when
ULL scheduling for reception of auxiliary PDU.

See also commit 544acb9804 ("Bluetooth: controller: Fix
missing EVENT_TICKER_RES_MARGIN_US").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-23 12:53:38 +01:00
Kamil Gawor
71a4c05120 Bluetooth: controller: Use rx back to back interface
Use the back-to-back receive of PDU with a
configurable inter frame spacing. This fixes an issue
when nRF53 was able to receive only one Rx PDU and
was not able to switch to next Rx.

Signed-off-by: Kamil Gawor <Kamil.Gawor@nordicsemi.no>
2022-03-22 12:40:12 +01:00
Vinayak Kariappa Chettimada
fc25cc82a1 Bluetooth: controller: nRF5: Back-to-Back Radio Rx interface
Add Radio interface to perform back-to-back receive of PDU
with a configurable inter frame spacing.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-22 12:40:12 +01:00
Tim Sørensen
9312b79b1c edtt: Extend Zephyr EDTT test app with IXIT request/response command
This command is used to obtain 'Implementation eXtra Information for Test'
(IXIT) values that are required to proceed with BT qualification tests.

Signed-off-by: Tim Sørensen <tims@demant.com>
2022-03-22 12:35:32 +01:00
Vinayak Kariappa Chettimada
d214bc5340 Bluetooth: Controller: Fix uninitialized param in sync report
Fix uninitialized param field when generating incomplete
no more data to come periodic advertising report.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-22 12:33:49 +01:00
Vinayak Kariappa Chettimada
6fb38eb24f Bluetooth: Controller: Fix sync reports post terminate and rx disable
Fix generating periodic advertising reports post sync
terminate under race condition when disabling reporting or
terminating the sync or while performing HCI reset.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-22 12:33:49 +01:00
Vinayak Kariappa Chettimada
a602a18660 Bluetooth: Controller: Add static build assert to check mem member
Added BUILD_ASSERT definition to check for safe access to
memory pool allocated memory structure member after the
memory has been released back to mem pool.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-22 12:33:49 +01:00
Nirosharn Amarasinghe
3cdaf72d9d bluetooth: controller: Add ISO-AL TX unframed fragmentation
- Implemented ISO-AL TX interface functions for fragmentation of
  unframed PDUs
- Implemented ISO-AL source construct and its creation for an input
  data path

Signed-off-by: Nirosharn Amarasinghe <niag@demant.com>
2022-03-21 19:03:56 +01:00
Vinayak Kariappa Chettimada
70a1827fc1 Bluetooth: Controller: Use the received coding scheme for Periodic Sync
Use the received coding scheme when receiving Periodic
Advertising PDUs for correctly calculating the receive
chain delay and on-air PDU time.

Relates to commit 6911e7e1d8 ("Bluetooth: Controller: Use
the received coding scheme when scanning").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-21 16:09:38 +01:00
Vinayak Kariappa Chettimada
37026650a1 Bluetooth: Controller: Use the received coding scheme for advertising
Use the received coding scheme when receiving Extended
Advertising PDUs for correctly calculating the receive
chain delay and on-air PDU time.

Relates to commit 6911e7e1d8 ("Bluetooth: Controller: Use
the received coding scheme when scanning").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-21 16:09:38 +01:00
Vinayak Kariappa Chettimada
df666d1809 Bluetooth: Controller: Use PHY_FLAGS_S8 define
Use PHY_FLAGS_S8 define instead of hardcoded values.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-21 16:09:38 +01:00
Vinayak Kariappa Chettimada
54ddd8d031 Bluetooth: Controller: nRF53: Fix compile error when debug pins enabled
Fix compile error when debug pins are enabled for nRF53
Series SoCs.

Regression introduced in commit 743b0583fc ("Bluetooth:
controller: Enable debug pins with TF-M enabled").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-21 12:50:19 +01:00
Vinayak Kariappa Chettimada
8c89a9fd42 Bluetooth: Controller: Fix missing periodic accept list SID assignment
Fix missing assignment of SID in the Periodic Advertiser
Accept List. This cause advertisers with SID 0 only to be
accepted when using list.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-21 12:49:45 +01:00
Vinayak Kariappa Chettimada
311eabeda1 Bluetooth: Controller: Fix Tx Power in Extended and Periodic Adv Report
Fix Tx Power field in Extended and Periodic Advertising
for chain PDU reception. Tx Power shall be from the
current PDU containing the AD Data, Scan Response Data and
from first PDU of Periodic Advertising Data be used to
prepare the HCI report.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-21 12:49:37 +01:00
Piotr Pryga
9cb4e58a48 Bluetooth: Controller: df: make radio_df_vendor_hal.h compile in always
The header file radio_df_vendor_hal.h was conditionally copiled in.
There were a dependency on a CONFIG_BT_CTRL_DR. The dependency is
removed because radio_df_vendor_hal.h and radio_df.h hasn't got any
DF related type dependencies. What more it allows to use IS_ENABLED
for code that uses types and functions defined in radio_df.h.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-03-21 10:15:39 +01:00
Piotr Pryga
07f02f90ae Bluetooth: Conroller: radio: Clear EVENTS_CTEPRESENT always if DF supp
The EVENTS_CTEPRESENT is available when radio peripheral has
direction finding support. The event is set if received
PDU has CTEInfo and there were collected IQ samples during
CTE reception.

The event should be cleared always when other events are cleared.
That guarantees that the event is not set when use of radio for
following activities.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-03-21 10:15:39 +01:00
Piotr Pryga
15b1c3eaf8 Bluetooth: Controller: lll: df: Check CTEPRESENT before radio reset
The radio_df_cte_ready function returns state of EVENTS_CTEPRESENT.
The function may not be used in create_iq_report function, because
it is called after lll_isr_rx_status_reset. The lll_isr_rx_status-
_reset clears EVENTS_CTEPRESENT value.

The result of this calls chain is lack of IQ sample report no matter
if the PDU has CTEInfo and radio has collected IQ samples.

To fix the problem, state of EVENTS_CTEPRESENT has to be get when
e.g. rssi_ready is get.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-03-21 10:15:39 +01:00
Vinayak Kariappa Chettimada
7f97c04bf8 Bluetooth: Controller: Fix jitter between primary and auxiliary PDU
As Extended Advertising primary PDUs do not use ticker
remainder value for fine scheduling of radio events, do not
use the remainder value for auxiliary PDUs. This fixes the
jitter in the aux_offset value that caused the auxiliary PDU
being observed to be late compared to the aux_offset value
filled in the primary PDUs.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-21 10:14:59 +01:00
Nazar Kazakov
f483b1bc4c everywhere: fix typos
Fix a lot of typos

Signed-off-by: Nazar Kazakov <nazar.kazakov.work@gmail.com>
2022-03-18 13:24:08 -04:00
Kamil Gawor
a80416fede bluetooth: controller: Align the Openisa test ll API
Alignes the Openisa ll_test_tx and ll_test_rx functions
with the new test API.

Signed-off-by: Kamil Gawor <Kamil.Gawor@nordicsemi.no>
2022-03-18 12:00:03 +01:00
Kamil Gawor
5db0302c99 bluetooth: controller: Add support for all DTM commands
This adds support for the following Direct Test mode
commands:
- HCI LE Receiver Test [v3]
- HCI LE Transmitter Test [v3]
- HCI LE Transmitter Test [v4]

Those commands set add a possibility to test an CTE
reception and transmission. The HCI LE Transmitter
Test [v4] commands allows also setting a transmit power.

Signed-off-by: Kamil Gawor <Kamil.Gawor@nordicsemi.no>
2022-03-18 12:00:03 +01:00
Szymon Janc
a5364567ec Bluetooth: controller: Make sure effective DLE is valid
If peer sends invalid data length in response IUT should fix those
when calculating effective data length.

This was affecting following qualification test cases:
LL/CON/PER/BI-10-C
LL/CON/PER/BI-11-C
LL/CON/PER/BI-12-C
LL/CON/CEN/BI-07-C
LL/CON/CEN/BI-08-C
LL/CON/CEN/BI-09-C

Signed-off-by: Szymon Janc <szymon.janc@codecoup.pl>
2022-03-18 11:39:27 +01:00
Vinayak Kariappa Chettimada
4aad6d0d66 Bluetooth: Controller: Fix Extended Legacy Direct Advertising report
Fix Extended Legacy Direct Advertising report to have the
correct Target Address.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-17 11:38:40 +01:00
Vinayak Kariappa Chettimada
07ff037da3 Bluetooth: Controller: Avoid pre-empting when extended active scanning
Avoid pre-empting scan window when extended active scanning.
If a scan request has been transmitted, then avoid being
pre-empted at the end of window when in continuous scanning.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-17 11:38:17 +01:00
Vinayak Kariappa Chettimada
7c7da5d4a4 Bluetooth: Controller: Fix power amp for transmit of chain scan resp
Fix power amp for transmitting of chain scan response
wherein capture of PDU end timestamp was missing causing
power amplifier from not being enabled for first chain PDU.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-17 11:37:41 +01:00
Vinayak Kariappa Chettimada
d402dbb652 Bluetooth: Controller: Fix auxiliary context flush on auxiliary stop
Fix auxiliary context from being flushed when scanner or
periodic synchronization is stopped, to avoid using the
disable_cb by both. Fixes an assertion when this race
condition happens.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-17 11:36:05 +01:00
Vinayak Kariappa Chettimada
3325aac985 Bluetooth: Controller: Fix to not send release message to HCI
Do not enqueue NODE_RX_TYPE_RELEASE into Auxiliary context
when stopping scanner, as this type is not to be passed to
HCI processing, which would lead to assertion.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-17 11:36:05 +01:00
Vinayak Kariappa Chettimada
8b26752199 Bluetooth: Controller: Fix auxiliary context leak on stop
Fix auxiliary context leak on stop, under race condition
where ULL High execution context does not release the
auxiliary context as stop has been requested, and done
has decremented the auxiliary context's reference count.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-17 11:36:05 +01:00
Vinayak Kariappa Chettimada
c1e78c232e Bluetooth: Controller: Fix the order of Periodic Sync in HCI Reset
Fix the order of Periodic Synchronize reset during HCI
Reset Command. Perform scan reset last after Periodic
Synchronize reset to avoid resetting the auxiliary
context which may be in use by Periodic Synchronize.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-17 11:33:43 +01:00
Rubin Gerritsen
d13ff191c3 Bluetooth: Kconfig: Remove Controller comment line
The controller configuration is already a submenu

Signed-off-by: Rubin Gerritsen <rubin.gerritsen@nordicsemi.no>
2022-03-17 11:12:47 +01:00
Andrzej Głąbek
222d42c22a modules: hal_nordic: Improve reservation of resources for BT_CTLR
Instead of including from nrfx_glue.h a specific Zephyr Bluetooth
controller header file that defines PPI and GPIOTE resources to be
reserved for exclusive use by the controller, include a file with
only a fixed name and expect the chosen Bluetooth controller to
provide the location of this file in include paths. This way, when
a different Bluetooth controller implementation is used downstream,
a different file can be easily pointed to.

Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
2022-03-15 14:59:35 +01:00
Thomas Ebert Hansen
7f4471c84e Bluetooth: controller: Rename local proc ctx config
Rename
BT_CTLR_LLCP_PROC_CTX_BUF_NUM
to
BT_CTLR_LLCP_LOCAL_PROC_CTX_BUF_NUM
to match naming scheme of
BT_CTLR_LLCP_REMOTE_PROC_CTX_BUF_NUM

Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
2022-03-14 11:38:09 +01:00
Thomas Ebert Hansen
33cb9e3433 Bluetooth: controller: Add remote proc ctx pool
Add a separate procedure context pool for remote initiated procedures.
Make it configurable in size by BT_CTLR_LLCP_REMOTE_PROC_CTX_BUF_NUM.
Fix all unit tests referring to the amount of free context buffers.

Fixes #41823

Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
2022-03-14 11:38:09 +01:00
Thomas Ebert Hansen
cecb12e9d9 Bluetooth: controller: Improve mem mngt of proc ctx
Move the mem_pool structure to the internal header for wider access.
Introduce a mem_pool owner in the proc_ctx, sch that multiple mem_pool
could be used for memory management of proc_ctx, also static 'foreign'
allocated proc_ctx would be supported by this.

Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
2022-03-14 11:38:09 +01:00
Piotr Pryga
008fd88d6f Bluetooth: Controller: Add sampling and switching offset configuration
Start of the antenna switching and sampling CTE is configured by use
of DFECTRL2 register in Nodric Radio peripheral. As of now the
configuration was set to defaults, so antenna switching has started
immediately after CTE procedure was started (end of CRC).

Sampling was started at the very beginning of a sampling slot.
It should be delayed for at least 125 ns from beginning of sampling
slot and not more than 125 ns to the end of sampling slot. This is a
requirement from BT 5.3 Core specification Vol 6, Part B section 2.5.4
IQ sampling.

Although it seems to me that when samples are taken depends on
implementation and used hardware. Taking that into account
there is provided a set of KConfig options to configure samples
offset for PHY 1M, PHY 2M and sapling slots 1 us and 2us separetely.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-03-14 11:31:24 +01:00
Piotr Pryga
b7bbe4b702 Bluetooth: Controller: Fix per adv chain broken after per adv re-enable
If there is enabled support for ADI in periodic advertising and
periodic advertising uses chained PDUs there is an assert when
periodic advertising is re-enabled.

There is missing a code that will set a chain for PDU with
updated ADI field.

The commit fixes the issue.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-03-14 11:29:59 +01:00
Gerard Marull-Paretas
749afa38e1 bluetooth: controller: ll_sw: obtain entropy device using DEVICE_DT_GET
The entropy device can be obtained at compile time.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-03-11 15:27:05 -08:00
Piotr Pryga
ce0ad0e30a Bluetooth: Controller: df: Do not send IQ rep for PDU without CTE
Check if the CTE was discovered by Radio peripheral should be
done with use of CTEPRESENT event. Samples count should not
be used for that purpose. If samples count is a value different
than zero for PDUs that don't have CTE, unwanted IQ samples
report will be generated. CTEPRESENT event is set only in case the
CTEInfo filed was correctly parsed by Radio peripheral during
PDU reception.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-03-10 13:45:41 -05:00
Gerard Marull-Paretas
95fb0ded6b kconfig: remove Enable from boolean prompts
According to Kconfig guidelines, boolean prompts must not start with
"Enable...". The following command has been used to automate the changes
in this patch:

sed -i "s/bool \"[Ee]nables\? \(\w\)/bool \"\U\1/g" **/Kconfig*

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-03-09 15:35:54 +01:00
Vinayak Kariappa Chettimada
d510663c26 Bluetooth: Controller: Fix Extended Advertising Power Amp setup
Fix Extended Advertising implementation to setup Power
Amplifier (PA) GPIO toggle for transmission instead of
incorrect Low Noise Amplifier (LNA) setup which is for
reception.

Relates to commit 4e5290948e ("Bluetooth: Controller: Fix
Periodic Advertising to setup Power Amp").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-09 14:22:04 +01:00
Vinayak Kariappa Chettimada
681127f6ce Bluetooth: Controller: Fix allocations for chain reception
Do not implicitly allocate Rx buffers for maximum chain PDU
reception. Instead let applications increase as required the
Kconfig CONFIG_BT_CTLR_RX_BUFFERS.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-09 14:20:47 +01:00
Vinayak Kariappa Chettimada
39570bd1d7 Bluetooth: Controller: Fix missing configure of Device Address Match
Fix missing configure of Device Address Matching when
receiving auxiliary PDUs.

This fixes some privacy related conformance test cases.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-09 13:59:23 +01:00
Vinayak Kariappa Chettimada
e60ac093b4 Bluetooth: Controller: Fix missing RPA timer start for Broadcaster
Fix missing RPA timer start in Broadcaster only controller
builds.

Without the fix private resolvable addresses where not
updated at RPA timeout.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-09 13:58:41 +01:00
Vinayak Kariappa Chettimada
b36a0ee071 Bluetooth: Controller: Fix private address update in auxiliary PDUs
Fix missing implementation to update private resolvable
address in auxiliary PDUs on RPA timeout.

Without the implementation the controller asserted on RPA
timeout when AdvA is not present in the primary channel PDU
of Extended Advertising set.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-09 13:58:41 +01:00
Vinayak Kariappa Chettimada
d54f3bd5f7 Bluetooth: Controller: Fix missing reset of sync create association
Fix missing reset of sync create association with scan
context when associated with both 1M and Coded PHY contexts,
and sync create cancel is called.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-09 13:58:17 +01:00
Vinayak Kariappa Chettimada
5494f475b8 Bluetooth: Controller: Fix address resolution when max entries in list
Fix address resolution when trying to match the maximum
entries in the resolving list.

Wait for address resolution AAR peripheral to complete with
checking with all the entries in the IRK list.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-09 13:57:57 +01:00
Vinayak Kariappa Chettimada
a10cb58295 Bluetooth: Controller: Fix out-of-bound memory write
Fix out-of-bound memory write during mem_init due to
regression introduced in commit c6750de9c1 ("Bluetooth:
Controller: Fix missing ISOAL sink destroy").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-09 12:44:42 +01:00
Krzysztof Chruscinski
47ae656cc1 all: Deprecate UTIL_LISTIFY and replace with LISTIFY
UTIL_LISTIFY is deprecated. Replacing it with LISTIFY.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2022-03-08 11:03:30 +01:00
Thomas Ebert Hansen
0b0a90ae84 Bluetooth: controller: Unsupported proc handling
Add handling of unsupported procedures based on opcode and role.

Signed-off-by: Thomas Ebert Hansen <thoh@oticon.com>
2022-03-07 16:15:54 +01:00
Vinayak Kariappa Chettimada
fdda91d4b4 Bluetooth: Controller: Fix k_sem_give call from Zero Latency IRQs
Fix k_sem_give() from being called from Zero Latency IRQs
when the Controller is configured with BT_CTLR_ZLI=y.

Kernel features shall not be used from Zero Latency IRQs as
these IRQs cannot be locked by the kernel to maintain
context safety of the kernel objects.

Relates to commit 92e017fd70 ("Bluetooth: controller:
split: Support Zero Latency IRQs") and
commit c842eef3ae ("Bluetooth: controller: Add semaphore
to indicate free AD data buffers").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-07 10:53:50 +01:00
Piotr Pryga
89a6a3a7c2 Bluetooth: Controller: Fix per adv scheduling issue
sw_switch implementation uses two parallel groups of
PPIs connecting radio and timer tasks and events.
The groups are used interchaneably, one is set for
following radio TX/RX event while the other is in use
(enabled).

The group should be disabled by timer compare event that
starts Radio to TX/RX a PDU. The timer is responsible for
maintenance of TIFS/TMAFS. The disabled group collects
all PPIs required to maintain the TIFS/TMASF. After
the time is reached Radio is started and the group is
disabled. It will be enabled again by software radio
swich during next call.

If the group is not disabled then it will work in parallel
to other one. That causes issues in correct maintenance of
instant when radio shoudl be started for next TX/RX  event
e.g. radio may be enabled to early.

In case the PHY CODED was enabled and periodic advertising
included chained PDUs, that are transmitted back-to-back,
there was missing group delay disable. The missing case was
sw_switch function called with dir_curr and dir_next set
to SW_SWITCH_TX.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-03-07 10:53:30 +01:00
Vinayak Kariappa Chettimada
c6750de9c1 Bluetooth: Controller: Fix missing ISOAL sink destroy
Fix missing call to ISOAL sink instance destroy interface,
without this there is leak in ISOAL sink instances when
removing ISO data path.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-02 14:52:41 +01:00
Nirosharn Amarasinghe
8b09d524a5 bluetooth: controller: fixed problems in ISO-AL RX
[*] Fixed setting of SDU production status when exiting the
    ISOAL_ERR_SPOOL state for framed PDU consumption when receiving the
    start of the next SDU
[*] Changed condition identifying a padding PDU to include padding PDUs
    with errors received after the end fragment is seen and expanded
    unit tests to cover new condition
[*] Changed definition of ISOAL_PDU_STATUS_xxx errors to match value of
    similar errors defined for the SDU status

Signed-off-by: Nirosharn Amarasinghe <niag@demant.com>
2022-03-02 11:22:33 +01:00
Vinayak Kariappa Chettimada
25169d92d8 Bluetooth: Controller: Broadcast ISO Tx ack on event close
Improvement to generate Tx ack early when the event close
compared to being done at the start of the next event.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 14:54:35 +01:00
Vinayak Kariappa Chettimada
6c983adedb Bluetooth: Controller: Initial broadcast ISO Tx data path
Initial work on adding ISO Tx data path for ISO Broadcast.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 14:54:35 +01:00
Vinayak Kariappa Chettimada
ccf1ecbdee Bluetooth: Controller: Add define for Connected ISO Stream handle base
Add define for Connected ISO Stream handle base.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 14:54:35 +01:00
Vinayak Kariappa Chettimada
73d8fff54e Bluetooth: Controller: Fix Extended Advertising conditional compiles
Fix Extended Advertising conditional compiles in header files.
Do not conditional compile declarations, definitions of
functions in source files only be compiled out.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 14:54:35 +01:00
Vinayak Kariappa Chettimada
0ab8f1b102 Bluetooth: Controller: Pass link_type to data_buffer_overflow
Refactored implementation to pass link type to data buffer
overflow function.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 14:54:35 +01:00
Vinayak Kariappa Chettimada
213a14594e Bluetooth: Controller: Fix ISO Broadcast and Sync related cond. compile
Fix ISO Broadcast and ISO Synchronized Receiver related
conditional compilation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 14:54:35 +01:00
Vinayak Kariappa Chettimada
e0cd316049 Bluetooth: Controller: Fix missing ll_adv_cmds_set
Fix to include ll_adv_cmds_set when broadcast role is not
enabled in the Controller but advertising extensions is
enabled (Extended Scanning is used).

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 14:54:35 +01:00
Vinayak Kariappa Chettimada
adca553f04 Bluetooth: Controller: Rename use of mstr word to cen for Central
Rename the use of mstr word in advanced scheduling
implementation to cen as a representation for Central
role.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 11:51:46 +01:00
Vinayak Kariappa Chettimada
4e787d0a2a Bluetooth: Controller: Use conn interval unit for Auxiliary event
Use connection interval units of 1250 us for periodic
scheduling of Extended Advertising auxiliary PDU events so
that auxiliary events can be periodically grouped alongwith
the Periodic Advertising Events. This will permit
mitigating overlaps amongst them.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 11:51:46 +01:00
Vinayak Kariappa Chettimada
0f407597bd Bluetooth: Controller: Use define TICKER_NULL instead of 0xFF
Use the define TICKER_NULL to represent invalid ticker id.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 11:51:46 +01:00
Vinayak Kariappa Chettimada
3a6b8e1bc0 Bluetooth: Controller: Schedule BIG event after Periodic Adv event
Add implementation to find free slot after Periodic
Advertising event, to place the BIG event.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 11:51:46 +01:00
Vinayak Kariappa Chettimada
62144e4326 Bluetooth: Controller: Expose the Periodic Adv time reservation func
Make the Periodic Advertising time reservation calculation
function internal public so that advanced scheduling can
use it to scheduling the BIG event after the Periodic
Advertising radio events.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 11:51:46 +01:00
Vinayak Kariappa Chettimada
74c13daa23 Bluetooth: Controller: Refactor free slot after role implementation
Refactor the implementation to get free slot after a
state/role so that it is easy for reused for scheduling
Broadcast ISO events.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 11:51:46 +01:00
Vinayak Kariappa Chettimada
c169347ea8 Bluetooth: Controller: Fix scheduling of Periodic Advertising events
Fix scheduling of Periodic Advertising events to be after
the group of Auxiliary set events. Do not reduce the slot
offsets as time reservations in ticker for non low latency
variant of controller does not include the slot offsets in
the reservation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 11:51:46 +01:00
Vinayak Kariappa Chettimada
ac5d5c1100 Bluetooth: Controller: Refactor scheduling function depth
Refactor the implementation to get free slot after a
state/role so that the code depth is reduced.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-03-01 11:51:46 +01:00
Vinayak Kariappa Chettimada
bd3ee8608c Bluetooth: Controller: Refactor rx link and node rx release
Refactor implemenation of rx link and node rx release, and
replenish of their quota.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-23 13:16:07 +01:00
Vinayak Kariappa Chettimada
b29aaff415 Bluetooth: Controller: ISO Synchronized Receiver Channel Map Update
Initial implementation support for ISO Synchronized Receiver
Channel Map Update Procedure.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-23 13:16:07 +01:00
Vinayak Kariappa Chettimada
28489fc900 Bluetooth: Controller: ISO Broadcast Channel Map Update
Initial implementation of ISO Broadcast Channel Map Update
Procedure.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-23 13:16:07 +01:00
Vinayak Kariappa Chettimada
7437743982 Bluetooth: Controller: Fix Periodic Advertising PDU ACAD set and clear
Fix Periodic Advertising PDU ACAD set and clear interface to
support updating ACAD when previous and new PDU buffer are
same (i.e. when previous new PDU not consumed yet by LLL).

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-23 13:16:07 +01:00
Vinayak Kariappa Chettimada
d607d1cc6a Bluetooth: Controller: Update assertion check when traversing ACAD
Update implementation to have assertion when not finding the
Channel Map Update Indication field in ACAD.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-23 13:16:07 +01:00
Morten Priess
1417e8f8c7 rf: JIT scheduler fixes and improvements
- Prevent double callback with ADV re-scheduling
  For configurations using CONFIG_BT_CTLR_JIT_SCHEDULING, when last
  ADV before initiating connection is re-scheduled with a small delay,
  the disabled_cb would be called a second time. This would unexpectedly
  invoke a second conn setup with illegal parameters.
  To avoid this JIT scheduler phenomenon, clear the ADV disabled_cb
  when invoked.
- Add priority to LLL header. This allows the conn priority to be
  associated with the object. Used in vendor LLL implementation.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2022-02-21 22:00:57 -05:00
Morten Priess
9f7ea41780 Bluetooth: controller: Minor scoping fixes for vendor implementations
Make sure declarations are in scope for certain vendor specific
configurations.

Signed-off-by: Morten Priess <mtpr@oticon.com>
2022-02-21 22:00:39 -05:00
Andries Kruithof
2f98f8f7cf Bluetooth: controller: llcp: inclusive naming in unittests
There were some references to slave and master left in the unittests
for the refactored LLCP.
These are changed in respectively peripheral and central

Signed-off-by: Andries Kruithof <Andries.Kruithof@nordicsemi.no>
2022-02-21 19:43:10 -05:00
Piotr Pryga
777ddc053d Bluetooth: Controller: df: Fix missing node_rx release if wrong CTE type
Periodic advertising sync may be created with CTE type filtering
enabled. When received AUX_SYNC_IND, there are HCI_LE_Periodic_-
Advertising_Sync_Established and HCI_LE_Periodic_Advertising_Report
events generated. In case received AUX_SYNC_IND has wrong CTE type,
HCI_LE_Periodic_Advertising_Sync_Established event is generated.
There may not be HCI_LE_Periodic_Advertising_Report event generated.
In this case node_rx, prepared by LLL, was not released in ULL.
It was lost in ull_sync_established_report.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-17 13:08:45 +01:00
Piotr Pryga
523f0f9bc6 Bluetooth: Controller: df: Fix build err if scan cte rx disabled
CONFIG_BT_CTLR_DF_CTE_RX is enabled by default if CONFIG_BT_CLTR_DF
is enabled and there is support for DF in given SOC.
If CONFIG_BT_CTLR_DF_SCAN_CTE_RX is disabled then the CONFIG_BT_CTLR-
_PER_SCAN_CTE_NUM_MAX is not available.
It causes build errors if that particular configuration is used by
an application. It was a case for example in split builds of direction
finding connectionless TX sample application were periodic advertising
was enabled but perddioc advertising sync was disabled.

The commit fixes the problem.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-17 13:07:12 +01:00
Vinayak Kariappa Chettimada
230f4f1c1b Bluetooth: Controller: Fix to use non-discardable buffer
Fix to use non-discardable Rx buffer for handling Extended
and Periodic Advertising Report.

Regression introduced in
commit 18171bc774 ("Bluetooth: Host: Non-discardable event
buffer size is 255 for ext adv"). The default discardable Rx
buffer size was reduced causing increased fragmentation and
deadlock trying to get more free discardable Rx buffers to
generate HCI Extended and Periodic Advertising reports.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-10 20:05:11 +01:00
Vinayak Kariappa Chettimada
d367447d64 Bluetooth: Controller: Fix scanner window close by using lll_disable
Fix race condition in setting up ISR callback and parameter
caused between ULL_HIGH and LLL context. As LLL IRQ is not
disabled the parameter and ISR callback would get out of
sync causing incorrect parameter supplied to callback and
hence leading to development assert in ull_scan_done().

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-09 19:49:27 +01:00
Vinayak Kariappa Chettimada
7f24d3bc6b Bluetooth: Controller: Fix missing aux release on abort of LLL sched
Fix missing auxiliary context release message on abort of
LLL scheduling scheduling used by scan context.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-09 19:49:27 +01:00
Vinayak Kariappa Chettimada
c2dda0950d Bluetooth: Controller: Fix missing auxiliary context done event
Fix missing use of auxiliary context to generate done event
which caused leak in release of auxiliary context being not
release when reference count that should decrease to zero.

Regression in 'commit 665a8d2c6e ("Bluetooth: Controller:
Fix repeated per sync drift compensations").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-09 19:49:27 +01:00
Vinayak Kariappa Chettimada
4591c0173f Bluetooth: Controller: Fix auxiliary context release on scan done
Fix auxiliary context release on scan done, do not wait for
reference count to reduce when Periodic Sync events overlap.

Regression introduced in commit 624e003064 ("Bluetooth:
controller: Fix auxiliary scan context release").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-09 19:49:27 +01:00
Vinayak Kariappa Chettimada
0748474831 Bluetooth: Controller: Fix reset of is_aux_sched flag
Fix reset of is_aux_sched flag when closing the primary and
auxiliary PDU reception. Without this fix when scan window
is closed there would be duplicate auxiliary release message
generated causing memory corruption.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-09 19:49:27 +01:00
Vinayak Kariappa Chettimada
4d87a7ff15 Bluetooth: Controller: Auxiliary PDU reception continuation
Implementation to continue Auxiliary PDU reception when
overlapping with scan events.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-09 19:49:27 +01:00
Vinayak Kariappa Chettimada
bd4086b847 Bluetooth: Controller: Periodic Sync Chain reception continuation
Implementation to continue Periodic Sync Chain reception
when overlapping with scan events.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-09 19:49:27 +01:00
Vinayak Kariappa Chettimada
481a334d2b Bluetooth: Controller: Remove minor redundant assignment
Minor change to remove redundant assignment statement.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-09 19:49:27 +01:00
Vinayak Kariappa Chettimada
0a290bd51d Bluetooth: Controller: Add assert check to detect sync aux context leak
Add assertion check to detect sync aux context leak.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-09 19:49:27 +01:00
Vinayak Kariappa Chettimada
e5e0470ed3 Bluetooth: Controller: Add development assert to check aux context
Add development assert to check the validity of auxiliary
context allocation. This is to ensure that primary PDU
reception does not have an auxiliary context allocated until
ULL has processed the node rx.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-09 19:49:27 +01:00
Vinayak Kariappa Chettimada
18ca682357 Bluetooth: Controller: Add development assert to check auxiliary parent
Add development assert to check the validity of auxiliary
context's parent. This is to ensure a released auxiliary
context is not reused without allocation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-09 19:49:27 +01:00
Vinayak Kariappa Chettimada
ebe64beb2a Bluetooth: Controller: Add assert to check IQ sample allocation
Add assert to check IQ sample allocation.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-09 19:49:27 +01:00
Vinayak Kariappa Chettimada
31c6a9cf18 Bluetooth: Controller: Fix Periodic Sync lost implementation
Fix Periodic Advertising Synchronization lost implementation
to avoid processing done event twice in cases of overlapping
events or race between sync terminate being requested.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-09 11:02:37 +01:00
Vinayak Kariappa Chettimada
fc9f976485 Bluetooth: Controller: Add sync established code comment
Add code comment related to sync context field used to
indicate the sync established event being generated towards
HCI Layer.

Co-authored-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-08 14:50:17 +01:00
Vinayak Kariappa Chettimada
bebc7a0df8 Bluetooth: Controller: Fix Sync Failed to be Established on no memory
Update implementation to generate Periodic Sync Failed to be
Established when Sync Established message could not be
generate due to lack of free node rx buffers and when there
is sync lost before sync established message could be
generated.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-08 14:50:17 +01:00
Vinayak Kariappa Chettimada
a5fb434705 Bluetooth: Controller: Fix to stop Extended Auxiliary Scan context
Fix any stray Extended Auxiliary PDU from being scanned
when disabling Extended Scanning.

Updated Extended Scan disable implementation to find any
active auxiliary scan context and stop them.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-08 13:53:07 +01:00
Vinayak Kariappa Chettimada
ffeee6ce1f Bluetooth: Controller: Update ull_disable with -EALREADY return
Update ull_disable implementation to return -EALREADY if
LLL event is already disabled.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-08 13:53:07 +01:00
Vinayak Kariappa Chettimada
179fe06a80 Bluetooth: Controller: Fix advertising pdu latest get
Fix advertising pdu latest get to defer release of stale
PDU chain buffers. Returning NULL after some buffers where
released causes LLL to assert when chained PDUs are
switched.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-08 13:51:56 +01:00
Piotr Pryga
d04456f4d9 Bluetooth: Controller: df: Fix IQ sample data saturation info drop
Nordic Semiconductor Radio peripheral provides IQ samples as
12 bits signed integer with sign extended to 16 bits.
Where out of range IQ samples (saturated) have value -32768.

Due to conversion of IQ samples to 8 bit signed integer, required by
BT 5.3 Core Vol 4, Part E sections 7.7.65.21 and 7.7.65.22 the
saturation information was lost.

The PR fixes that issue by use of value -128 to mark saturated
IQ samples. Note that BT 5.3 Core does not give any particular
value of IQ sample a special meaning.

This is a vendor specific solution and does not affect other
implementations of lower link layer.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-07 17:22:49 +01:00
Vinayak Kariappa Chettimada
32e812c944 Bluetooth: Controller: Fix Periodic Sync Terminate race condition
Fix Periodic Sync Terminate implementation for race
conditions with ULL scheduling by using a flag to stop any
new ULL scheduling to receive chain PDUs.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-04 15:03:09 +01:00
Piotr Pryga
87bd890dc3 Bluetooth: Controller: llcp: Add missing PDU initialization
There was missing a PDU initialization. CP bit in data channel
PDU heder was not cleared. Also cte_info byte was not crelader.
That lead to malformed control procedures PDUs and issues
with connection maintenance.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-04 14:32:42 +01:00
Piotr Pryga
4fc0bfb0e8 Bluetooth: Controller: df: CP bit not cleared in DF conn mode RX
In direction finding connected mode there is a CP bit that is set
data PDU header. The bit was initialized only if CTE transmission
was enabled. In case of reception of a CTE the bit was available
in PDUs but not initialized.
That caused issues in connection maintenance if PDU memory buffers
were reused. PDU were malformed and connections were lost.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-04 14:32:42 +01:00
Vinayak Kariappa Chettimada
8f444e490c Bluetooth: Controller: Fix missing offset adjust field assignment
Fix missing offset adjust field assignment in the Periodic
Advertising's sync_info struct that is present in the
Extended Advertising PDU.

When the sync offset is equal or over 2.4576 seconds from
the Extended Advertising PDU, then the sync offset has to
be reduced by 2.4576 seconds and the offs_adjust flag be
set in the sync_info field.

This fixes a bug where Periodic Synchronization could not
be established for Periodic Advertisings with intervals
greater than 2.4576 seconds as the sync offset was
incorrect due to rollover in the 13-bit offset field.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-04 11:19:14 +01:00
Vinayak Kariappa Chettimada
7570af6c94 Bluetooth: Controller: Avoid reporting IQ samples after terminate
Avoid reporting IQ samples after terminate.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-04 11:15:07 +01:00
Piotr Pryga
281ad2102e Bluetooth: Controller: Make PHY check in conn mode Kconf dependent
Constant Tone Extension may not be transmittied with PHY CODED.
There were check to avoid situation that controller tries to
transmit or receive CTE when PHY is set to CODED.
These check were not conditionally compilated, hence when
PHY Update feature is disabled code did build.

The commit fixes the issue.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-03 14:57:17 +01:00
Vinayak Kariappa Chettimada
fc348614e6 Bluetooth: Controller: Fix duplicate incomplete data status
Fix duplicate incomplete data status generated for Periodic
Advertising Report when LLL scheduling is used but auxiliary
context failed to be allocated in ULL.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-02 16:59:08 +01:00
Vinayak Kariappa Chettimada
a7d0b5e980 Bluetooth: Controller: Fix race condition in sync create cancel
Fix race condition in sync create cancel that assigned NULL
scan context's associated periodic sync context which caused
ULL to dereference NULL pointer.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-02 16:59:02 +01:00
Vinayak Kariappa Chettimada
0cfcc56d9d Bluetooth: Controller: Fix duplicate release of auxiliary context
Fix duplicate release of auxiliary context when scanning
uses LLL scheduling for reception of auxiliary PDU but the
reception fails.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-02 16:58:31 +01:00
Vinayak Kariappa Chettimada
f5a2b05b0d Bluetooth: Controller: Fix same peer periodic sync check
Move the same peer periodic sync check to after check for
existing periodic sync create on both 1M  and Coded PHY.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-02 12:11:21 +01:00
Vinayak Kariappa Chettimada
c474e374a7 Bluetooth: Controller: Fix Periodic Sync memq link leak
Fix memq link buffer leak on Periodic Sync failed to be
established.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-02 12:11:14 +01:00
Vinayak Kariappa Chettimada
79e3be3c63 Bluetooth: Controller: Fix extended scan rx flush for continous scan
Fix missing progression of the rx_last pointer when
appending rx buffers before flushing them towards Host.
Under continuous scanning, as the disabled_cb would only
be called when reference count reaches zero, the rx_last
pointer needs to progress when appending the rx buffers.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-02 12:11:08 +01:00
Vinayak Kariappa Chettimada
5f4d6e34bc Bluetooth: Controller: Fix missing Periodic ULL sched incomplete report
Fix missing Periodic Advertising Report with incomplete
data status when ULL scheduled chain reception is aborted.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-02 12:11:00 +01:00
Vinayak Kariappa Chettimada
03f74c7ec2 Bluetooth: Controller: Fix missing Periodic LLL sched incomplete report
Fix missing Periodic Advertising Report with incomplete
data status when LLL scheduled chain reception is aborted.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-02 12:11:00 +01:00
Vinayak Kariappa Chettimada
d43435a727 Bluetooth: Controller: Fix Periodic Sync Aux context leak on -ENOMEM
Fix Controller implementation to release auxiliary context
when there is no node rx buffer available to receive
Periodic Advertising Sync AUX_CHAIN_IND PDUs.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-02 12:11:00 +01:00
Vinayak Kariappa Chettimada
ee8994ee42 Bluetooth: Controller: Refactor Periodic Advertising cond. compilation
Refactor Periodic Advertising conditional compilation to use
IS_ENABLED define.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-02 12:11:00 +01:00
Vinayak Kariappa Chettimada
1b3671005f Bluetooth: Controller: Fix to defer Periodic Report after ULL schedule
Fix Periodic Advertising Report data status when ULL
scheduling to receive auxiliary PDU fails. Defer the
dispatch of Periodic Advertising Report until ULL
scheduling status is comfirmed and assign the correct
value to aux_sched flag.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-02-02 12:11:00 +01:00
Piotr Pryga
fc208bb7eb Bluetooth: Controller: llcp: Add wait for nrf state in CTE REQ
There were no wait for free notification buffer (pdu object
used to send notifications to Host).
That may cause assertion in lp_comm_ntf function.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-02 10:53:51 +01:00
Piotr Pryga
dbf86b0359 Bluetooth: Controller: Add CTE REQ disable when change PHY to CODED
Accodring to BT 5.3 Core Vol 4, Part E section 7.8.85 the CTE request
procedure has to be disabled as if Host issued the HCI_LE_Connection-
CTE_Request_Enable with enable property set to 0. It means a Controller
should automaticall  disable the procedure.

There were no handling of this part of specification.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-02 10:53:51 +01:00
Piotr Pryga
9603e103b9 Bluetooth: Controller: llcp: Add missing CTE pause in remote PHY change
There were missing pause of CTE request in case remote PHY change
was handled. That may end in violation of BT 5.3 Core Vol 6, Part B
section 5.1.10.1 Packet transmission restrictions.
Without the change there was a possibility to transmitt CTE when
PHY is about to change to PHY CODED.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-02 10:53:51 +01:00
Piotr Pryga
ff45244928 Bluetooth: Controller: df: Add clarifying comment
Add comment to clarify what is a disable_cb callback purpose
and when it is set.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-02 10:53:51 +01:00
Piotr Pryga
c9431ee622 Bluetooth: Controller: df: Remove not needed if statement
Removes a if statement that was always true.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-02 10:53:51 +01:00
Piotr Pryga
d487476f4a Bluetooth: Controller: llcp: add complete evt handling in idle state
Add handling of complete event in idle state of localy innitiated
control procedures.
The transition will be used by CTE request disable if PHY changes
to CODED while the procedure is waiting in the waiting queue.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-02 10:53:51 +01:00
Piotr Pryga
9684dd6c48 Bluetooth: Controller: df: Fix wrong PHY type check in CTE req enable
CTE request may not be enabled when actual PHY does not support
transmission of constant tone extension. In case a connection is
asymetric, receive PHY is required to support transmission of CTE.
Receive PHY will be used by a device to get PDU with CTE.

In ll_df_set_conn_cte_req_enable was checking TX PHY type.
It should check RX PHY type.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-02 10:53:51 +01:00
Piotr Pryga
f79f9d155d Bluetooth: Controller: df: refactor CTE REQ set disable
Add a function that is responsible for set CTE request disabled.
It is a refactoring, to have a single place where CTE request
is_enabled and req_interval are zeroed.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-02 10:53:51 +01:00
Piotr Pryga
1856c6b23e Bluetooth: Controller: df: Add missing CTE request is_enabled set
There were missing set of is_enabled member of CTE request.
That allowed host to run HCI_LE_Connection_CTE_Request_Enable
command with enable parameter set to true sequently.
That violates BT 5.3 Core specification Vol 4 Part B section
7.8.8.85.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2022-02-02 10:53:51 +01:00
Joakim Andersson
743b0583fc Bluetooth: controller: Enable debug pins with TF-M enabled
Enable debug pins when TF-M has been enabled for the image.
This would otherwise produce an error message as the DEBUG_SETUP would
not have been defined for the non-secure image.

Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
2022-02-01 11:31:36 +01:00
Vinayak Kariappa Chettimada
b5ab2f1353 Bluetooth: Controller: Fix missing ISO data packet receive
Fix missing ISO Data packet received by Synchronized
Receiver due to incorrect check on sink handle that did
not permit handle value of 0.

Fixed function to get ISO stream context to check for
valid ISO sync context, i.e. not being terminated.

Regression introduced in commit 7c89f1fe9f ("Bluetooth:
controller: Support for separate ISO RX data path").

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-01-31 18:12:10 +01:00
Vinayak Kariappa Chettimada
3f37210cd6 Bluetooth: Controller: Fix parsing empty ADV_EXT_IND and ADV_SYNC_IND
Fix implementation to check for empty ADV_EXT_IND and
ADV_SYNC_IND PDUs, and not parse them incorrectly.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-01-31 12:13:08 +01:00
Vinayak Kariappa Chettimada
faa89c779c Bluetooth: Controller: Fix Periodic Adv Report to scan max data length
Fix implementation to limit Periodic Advertising data to a
configurable maximum length when generating HCI reports.

Bluetooth Test Specification defines Scan_Max_Data value
in IXIT. When HCI LE Periodic Advertising Report events are
generated by assembling the chain PDUs, the test cases
expect that if the data length is no more than
Scan_Max_Data, then at least once the IUT shall not
truncate the data in the advertising report.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-01-28 19:13:56 -05:00
Vinayak Kariappa Chettimada
93d6d1e114 Bluetooth: Controller: Minor fix isr_done context parameter passed
Remove redundant parameter pass of lll_aux to isr_done as
the auxiliary context use is always for scan context as the
parent.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-01-28 19:13:56 -05:00
Vinayak Kariappa Chettimada
1fe80ec62a Bluetooth: Controller: Minor refactor for consistent variable names
Minor refactor of auxiliary scanning implementation to use
consistent variable naming and assignment close to its
locality of reference.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2022-01-28 19:13:56 -05:00