Commit Graph

1865 Commits

Author SHA1 Message Date
Vinayak Kariappa Chettimada
97adf875b8 Bluetooth: Controller: Flush pending Tx PDUs before PHY update
Flush any pending Tx PDUs in the lower link layer before
enqueueing PHY_UPDATE_IND PDU with instant to ensure the
PDU is transmitted before the instant occurs.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-28 11:38:42 +02:00
Vinayak Kariappa Chettimada
ad1edf1cc4 Bluetooth: Controller: Advanced scheduling for Extended Initiator
Implement the advanced scheduling for Extended Initiator to
group central connections established to Extended
Advertisements.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-28 11:38:29 +02:00
Vinayak Kariappa Chettimada
d8f4759c5f Bluetooth: Controller: Fail on multiple PHY use in PHY_UPDATE_IND
Disconnect connection if peer central uses multiple PHYs in
PHY_UPDATE_IND PDU.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-28 11:38:15 +02:00
Vinayak Kariappa Chettimada
9a1b5c68f5 Bluetooth: Controller: Explicitly check previous auxiliary PDU for ADI
To be consistent in how order header flags are handled when
updating the common header format fields, explicit check
for ADI flag in previous auxiliary PDU buffer.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-26 15:30:04 +02:00
Vinayak Kariappa Chettimada
ad8f4d368a Bluetooth: Controller: Remember last used DID for each SID
Remember last used DID for each SID, so that DID value used,
when updating the advertising PDU fields, change between
consecutive changes to PDU fields.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-26 15:30:04 +02:00
Vinayak Kariappa Chettimada
a919e1ba40 Bluetooth: Controller: Make Extended Advertising DID unique
Make the Extended Advertising DID value updated to be unique
for every new advertising set created.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-26 15:30:04 +02:00
Vinayak Kariappa Chettimada
d19476c3c2 Bluetooth: Controller: Fix corrupt AD data after directed advertising
Fix corrupt AD data used after directed advertising by
storing a backup of the AD data before switching to directed
advertising. Restore back the AD data with switching to non-
directed advertising.

The fix also addresses AD data backup when switching between
Legacy and Extended Advertising.

Fixes #18850.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-26 15:29:55 +02:00
Vinayak Kariappa Chettimada
4e6357e549 Bluetooth: Controller: Resolve AdvA in AUX_CONNECT_RSP PDU
Add implementation to resolve AdvA in the received
AUX_CONNECT_RSP PDU before generating the connection
complete.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-26 15:29:41 +02:00
Vinayak Kariappa Chettimada
2c606239e2 Bluetooth: Controller: Make adva and tgta check function file static
The functions to check advertising and target address in a
PDU are used only inside the same file, hence make them file
static functions.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-22 17:35:22 +02:00
Vinayak Kariappa Chettimada
33c06e6992 Bluetooth: Controller: Move assignments close to locality of reference
Minor refactor to move assignment statements close to their
locality of reference.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-22 17:35:22 +02:00
Vinayak Kariappa Chettimada
dee5b53b73 Bluetooth: Controller: Add target address check to extended scanning
Add target address check to extended scanning implementation
to detect invalid target address present in primary and
auxiliary channel PDU. Implementation is reuse of the check
used in the initiator after refactoring to pass parameter to
differentiate, its use for primary or auxiliary channel, and
for scanning or initiating.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-22 17:35:22 +02:00
Lingao Meng
40365babaa Bluetooth: Modify kconfig to use related path
Because we use the extended kconfig, we have already
supported relative paths, and it is clearer to use
relative paths in the bluetooth submodules.

Signed-off-by: Lingao Meng <menglingao@xiaomi.com>
2021-07-20 20:02:34 -04:00
Vinayak Kariappa Chettimada
d84397f66d Bluetooth: Controller: Disable scan unreserved for LOW_LAT option
Disable use of BT_CTLR_SCAN_UNRESERVED with BT_CTLR_LOW_LAT.
nRF51x SoC needs to block any CPU use inside radio events,
hence use of radio without time reservation is required for
proper functioning of Controller in nRF51x.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-20 13:35:49 +02:00
Vinayak Kariappa Chettimada
c1792c002d Bluetooth: Controller: Fix HCI reset assert initiating on coded PHY
Fix HCI Reset Command from asserting when there is pending
connection creation requested on coded PHY.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 14:19:25 +02:00
Vinayak Kariappa Chettimada
a5ac9c65f1 Bluetooth: Controller: Fix SID for legacy advertising reported
SID value for legacy advertising reported shall be 255.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 14:19:15 +02:00
Vinayak Kariappa Chettimada
8818c51cec Bluetooth: Controller: Use sizeof(uint8_t) for Tx Power field size
Use sizeof(uint8_t) for Tx Power field size instead of
auto-increment ++.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 14:19:00 +02:00
Vinayak Kariappa Chettimada
1922a0e982 Bluetooth: Controller: Add target address into common extended header
Add and retain in subsequent updates the target address
in the auxiliary PDUs.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 14:19:00 +02:00
Vinayak Kariappa Chettimada
6e0692fc4c Bluetooth: Controller: Fix legacy advertising PDU length initialization
Fix missing initialization of legacy advertising PDU length
when advertising sets are reused between extended and legacy
advertising modes.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 14:18:40 +02:00
Vinayak Kariappa Chettimada
e34ec9fc25 Bluetooth: Controller: Use BT_CTLR_BROADCAST_ISO Kconfig option
Use CONFIG_BT_CTLR_BROADCAST_ISO when CONFIG_BT_CTLR_ADV_ISO
or CONFIG_BT_CTLR_SYNC_ISO Kconfig option is supported.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 14:18:31 +02:00
Vinayak Kariappa Chettimada
ba6be70129 Bluetooth: Controller: Added comments for CSA #2 implementation
Added Bluetooth Specification references to the
implementation of Channel Selection algorithm #2 in the
Controller.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 14:18:31 +02:00
Vinayak Kariappa Chettimada
7b12723aad Bluetooth: Controller: Replace test vector inputs with auto variable
Replace hard coded channel map count and channel identifier
with an auto variables.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 14:18:31 +02:00
Vinayak Kariappa Chettimada
b329d198a7 Bluetooth: controller: Implement CSA #2 for SubEvents
Implement the functions required to calculate the SubEvent 1
and SubEvent n mapped channel indices.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 14:18:31 +02:00
Vinayak Kariappa Chettimada
3501148922 Bluetooth: Controller: Legacy vs Extended check for Periodic Adv HCI
Add the check for mixed use of Legacy vs Extended HCI
commands for Periodic Advertising related HCI commands.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 12:28:55 +02:00
Vinayak Kariappa Chettimada
591007206d Bluetooth: Controller: Fix directed advertising report
Fix extended advertising report to set the directed bit in
the event type when receiving directed non-connectable
advertising.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 12:05:10 +02:00
Vinayak Kariappa Chettimada
449d0b29b7 Bluetooth: Controller: Fix extended advertising timeout
Fix extended advertising PDUs seen after the advertising
duration has elapsed, by considering the events skipped
due to overlap with other events which is provided by
the ticker lazy parameter.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 12:04:56 +02:00
Vinayak Kariappa Chettimada
5659b005f1 Bluetooth: Controller: Add checks for invalid PHYs
Add checks for invalid PHYs supplied to HCI LE Extended Scan
Parameters and LE Extended Create Connection commands.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 12:04:36 +02:00
Vinayak Kariappa Chettimada
027835fea6 Bluetooth: Controller: Disallow anonymous legacy advertising
Check and disallow legacy advertising from being anonymous.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-19 12:03:35 +02:00
Piotr Pryga
378a1e082a Bluetooth: controller: remove unnecessary ull_adv_ext_hdr_data struct
After extracting from ull_adv_sync_pdu_set_clear functions:
ull_adv_sync_pdu_alloc, ull_adv_sync_extra_data_set_clear
Use of ull_adv_ext_hrd_data structure became unnecessary.
The extra_data member of the structure was never used
due to separate function responsible for setting extra_data
content.
In all cases content for extended advertising header fields
may be passed to the ull_adv_sync_pdu_set_clear directly
as void * pointer, instead of pointer to ull_adv_ext_hdr_data.

This simplifies use of ull_adv_sync_pdu_set_clear as well
as removes unneccesary code to handle special structure type.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-07-17 16:43:08 -04:00
Piotr Pryga
4c3d76bf8b Bluetooth: controller: remove extra_data use in BIG create and terminate
extra_data is not used by ll_big_create and ll_big_terminate.
extra_data_prev and extra_data_new are optional arguments for
ull_adv_sync_pdu_alloc.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-07-17 16:43:08 -04:00
Piotr Pryga
bef9d14f7f Bluetooth: controller: simplify arg list of ull_adv_sync_pdu_alloc
ull_adv_sync_pdu_alloc function was extracted from ull_adv_sync_pdu_-
-set_clear function. The arguments list of ull_adv_sync_pdu_alloc
was derived from source function but the acutal functionality is
only part of what it was before.

The ull_adv_sync_pdu_alloc does not change extended advertising
PDU header fileds. The hdr_add_fields and hdr_rem_fields arguments
were used to allocate or not allocate memory for extra_data related
with new periodic advertising PDU. Also hrd_data pointer was
not used by the function.

The function arguments list was simplified.
New enum ull_adv_pdu_extra_data_flag was introduced to provide
named flags for extra_data memory management.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-07-17 16:43:08 -04:00
Vinayak Kariappa Chettimada
78e3fe3d75 Bluetooth: Controller: Refactor Periodic Advertising time update
Refactor Periodic Advertising time update function to use
caller supplied Periodic Advertising PDU to calculate the
time reservations.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Vinayak Kariappa Chettimada
ab6d4693da Bluetooth: Controller: Use BT_HCI_ERR_SUCCESS return and other changes
Apply suggestions from code review, and change to using
BT_HCI_ERR_SUCCESS instead of returning 0.

Co-authored-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Vinayak Kariappa Chettimada
ead034d514 Bluetooth: Controller: Fix Extended and Periodic Coded PHY time
Fix Extended and Periodic Coded PHY time reservation. The
define earlier used does not have calculations for Coded
PHY.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Vinayak Kariappa Chettimada
177ebac790 Bluetooth: Controller: Periodic advertising time reservation
Implementation to update Periodic Advertising time
reservations when advertising data and/or CTE length is
updated.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Vinayak Kariappa Chettimada
91956dadcd Bluetooth: Controller: Disallow Periodic Adv Enable if already enabled
Add check for already enabled and started Periodic
Advertising when HCI LE Set Periodic Advertising Parameters
command is called.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Vinayak Kariappa Chettimada
baca5c2c55 Bluetooth: Controller: Refactor out Periodic Advertising time calc
Refactor out Periodic Advertising time calculations so that
it can be reused when PDU length is updated as part of
advertising data updates.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Vinayak Kariappa Chettimada
f93e41202d Bluetooth: Controller: Extended advertising time reservation
Implementation to update Extended Advertising time
reservations when advertising and scan response data are
updated.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Vinayak Kariappa Chettimada
9928c81fbf Bluetooth: Controller: Export primary adv channel event time calc
Export the function calculating the primary channel
advertising event time reservation, so that Extended
Advertising implementation can reuse it.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Vinayak Kariappa Chettimada
dd1b296d46 Bluetooth: Controller: Update DID when scan response data removed
Update DID value when scan response data is remove, length
set to 0.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Vinayak Kariappa Chettimada
739b8ad903 Bluetooth: Controller: Refactor out Extended Advertising time calc
Refactor out Extended Advertising time calculations so that
it can be reused when PDU length is updated as part of
advertising data and scan response data updates.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Vinayak Kariappa Chettimada
ee04896ca9 Bluetooth: Controller: Legacy advertising time reservation
Implementation to update legacy advertising time
reservations when advertising and scan response data are
updated.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Vinayak Kariappa Chettimada
e50e4f97e0 Bluetooth: Controller: Refactor out advertising time calculations
Refactor out advertising time calculations so that it can be
reused when PDU length is updated as part of advertising
data and scan response data updates.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Vinayak Kariappa Chettimada
85c4095b76 Bluetooth: controller: Extended/Periodic Advertising time reservations
Add Extended and Periodic Advertising radio event time
reservations.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Vinayak Kariappa Chettimada
8822b24b17 Bluetooth: Controller: nRF5: Use conservative Tx-Rx turnaround timing
Use a conservative turnaround time of 150us covering slower
nRF51 and faster nRF52 CPU that influence the turnaround
timing.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-16 10:48:39 +02:00
Piotr Pryga
a95457a984 Bluetooth: controller: df: Fixes truncated transmission of CTE
There was an issue with wrong length of CTE send in connectionless
mode, with periodic advertising PDUs. Radio peripheral was not
configured to send CTE with correct length while PDU had CTEInfo
field informing receiver that CTE is attached to the PDU.

Source of the problem was in ll_df_set_cl_cte_tx_enable function.

Order of parameters in ull_adv_sync_pdu_alloc was wrong.
ULL_ADV_PDU_HDR_FIELD_CTE_INFO was speficed as hdr_rem_fields.
Because of that extra_data, memory used to provide CTE configuration
to LLL, was not allocated. PDU content is prepared in ULL, so CTEInfo
field included correct information, while Radio was never configured
by LLL to send CTE.

ull_adv_sync_extra_data_set_clear received a pointer to hdr_data,
instead of a direct pointer to df_cfg structure. When extra_data
was allocated correclty, wrong CTE configuration was provided
copied there and LLL received invalid CTE length. It was different
than the length in PDUs CTEInfo field.

Signed-off-by: Piotr Pryga <piotr.pryga@nordicsemi.no>
2021-07-15 11:39:13 +02:00
Vinayak Kariappa Chettimada
9bc9e15852 Bluetooth: Controller: Fix Periodic Sync setup with invalid channels
Fix Periodic Synchronization setup when handling invalid
number of channel count in Periodic Advertising's Sync Info
structure.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-12 17:23:51 +02:00
Vinayak Kariappa Chettimada
40374df24f Bluetooth: Controller: Use macros for SCA and Channel Map access
Use macros to access SCA and Channel Map fields in the Sync
Info structure in advertising PDUs.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-12 13:19:46 +02:00
Vinayak Kariappa Chettimada
71c6d11b08 Bluetooth: Controller: Minor fix debug message with channel map mask
Minor fix to channel map mask used in debug message to print
sync info fields.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-12 13:19:46 +02:00
Vinayak Kariappa Chettimada
53cd7f7152 Bluetooth: controller: Refactor sync_info population
Based on review comments, refactor out sync_info population
to be performed by the caller of the function that prepares
the extended advertising PDU.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-12 13:19:46 +02:00
Vinayak Kariappa Chettimada
300f1bb6a0 Bluetooth: controller: Use set/clear to add/remove ACAD
Use the set/clear function to modify the common extended
header format in the PDU to add/remove ACAD.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2021-07-12 13:19:46 +02:00