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>
This commit is contained in:
Vinayak Kariappa Chettimada 2022-03-08 09:02:44 +05:30 committed by Carles Cufí
commit 4aad6d0d66

View file

@ -5619,9 +5619,6 @@ static void le_ext_adv_legacy_report(struct pdu_data *pdu_data,
#if defined(CONFIG_BT_CTLR_PRIVACY)
uint8_t rl_idx;
#endif /* CONFIG_BT_CTLR_PRIVACY */
#if defined(CONFIG_BT_CTLR_EXT_SCAN_FP)
uint8_t direct_report;
#endif /* CONFIG_BT_CTLR_EXT_SCAN_FP */
if (!(event_mask & BT_EVT_MASK_LE_META_EVENT) ||
!(le_event_mask & BT_EVT_MASK_LE_EXT_ADVERTISING_REPORT)) {
@ -5635,10 +5632,6 @@ static void le_ext_adv_legacy_report(struct pdu_data *pdu_data,
rl_idx = node_rx->hdr.rx_ftr.rl_idx;
#endif /* CONFIG_BT_CTLR_PRIVACY */
#if defined(CONFIG_BT_CTLR_EXT_SCAN_FP)
direct_report = node_rx->hdr.rx_ftr.direct;
#endif /* CONFIG_BT_CTLR_EXT_SCAN_FP */
#if defined(CONFIG_BT_CTLR_PRIVACY)
if (adv->tx_addr) {
/* Update current RPA */
@ -5691,15 +5684,14 @@ static void le_ext_adv_legacy_report(struct pdu_data *pdu_data,
adv_info->rssi = rssi;
adv_info->interval = 0U;
adv_info->direct_addr.type = adv->rx_addr;
#if defined(CONFIG_BT_CTLR_EXT_SCAN_FP)
if (direct_report) {
memcpy(&adv_info->direct_addr.a.val[0],
&adv->direct_ind.tgt_addr[0], sizeof(bt_addr_t));
} else
#endif /* CONFIG_BT_CTLR_EXT_SCAN_FP */
{
memset(&adv_info->direct_addr.a.val[0], 0, sizeof(bt_addr_t));
if (adv->type == PDU_ADV_TYPE_DIRECT_IND) {
adv_info->direct_addr.type = adv->rx_addr;
bt_addr_copy(&adv_info->direct_addr.a,
(void *)adv->direct_ind.tgt_addr);
} else {
adv_info->direct_addr.type = 0U;
(void)memset(adv_info->direct_addr.a.val, 0U,
sizeof(adv_info->direct_addr.a.val));
}
adv_info->length = data_len;