diff --git a/nimble/controller/src/ble_ll_conn.c b/nimble/controller/src/ble_ll_conn.c index 430612645..699da4328 100644 --- a/nimble/controller/src/ble_ll_conn.c +++ b/nimble/controller/src/ble_ll_conn.c @@ -1735,19 +1735,6 @@ ble_ll_conn_master_init(struct ble_ll_conn_sm *connsm, if (hcc->filter_policy == 0) { memcpy(&connsm->peer_addr, &hcc->peer_addr, BLE_DEV_ADDR_LEN); connsm->peer_addr_type = hcc->peer_addr_type; - - /* If device was added to resolve list peer type has different meaning - * and we need to adjust here. If device is on resolve list mark type as - * 'identity' as this means also RPA is allowed for connection. - */ -#if (MYNEWT_VAL(BLE_LL_CFG_FEAT_LL_PRIVACY) == 1) - if ((connsm->peer_addr_type < BLE_HCI_CONN_PEER_ADDR_PUBLIC_IDENT) && - ble_ll_resolv_list_find(connsm->peer_addr, - connsm->peer_addr_type)) { - connsm->peer_addr_type += 2; - } -#endif - } /* XXX: for now, just make connection interval equal to max */ @@ -1851,19 +1838,6 @@ ble_ll_conn_ext_master_init(struct ble_ll_conn_sm *connsm, if (hcc->filter_policy == 0) { memcpy(&connsm->peer_addr, &hcc->peer_addr, BLE_DEV_ADDR_LEN); connsm->peer_addr_type = hcc->peer_addr_type; - - /* In LE Extended Create Connection peer type has different meaning - * than legacy LE Create Connection and since legacy values are used - * internally we need to adjust here. If device is on resolve list - * mark type as 'identity' as this means also RPA is allowed for - * connection. - */ -#if (MYNEWT_VAL(BLE_LL_CFG_FEAT_LL_PRIVACY) == 1) - if (ble_ll_resolv_list_find(connsm->peer_addr, - connsm->peer_addr_type)) { - connsm->peer_addr_type += 2; - } -#endif } connsm->initial_params = *hcc; diff --git a/nimble/controller/src/ble_ll_conn_hci.c b/nimble/controller/src/ble_ll_conn_hci.c index 1627d7c27..5274d15c5 100644 --- a/nimble/controller/src/ble_ll_conn_hci.c +++ b/nimble/controller/src/ble_ll_conn_hci.c @@ -223,7 +223,15 @@ ble_ll_conn_comp_event_send(struct ble_ll_conn_sm *connsm, uint8_t status, memcpy(evdata, rpa, BLE_DEV_ADDR_LEN); } - if (connsm->peer_addr_type > BLE_HCI_CONN_PEER_ADDR_RANDOM) { + /* We need to adjust peer type if device connected using RPA + * and was resolved since RPA needs to be added to HCI event. + */ + if (connsm->peer_addr_type < BLE_HCI_CONN_PEER_ADDR_PUBLIC_IDENT + && (connsm->rpa_index > -1)) { + peer_addr_type += 2; + } + + if (peer_addr_type > BLE_HCI_CONN_PEER_ADDR_RANDOM) { if (connsm->conn_role == BLE_LL_CONN_ROLE_MASTER) { rpa = ble_ll_scan_get_peer_rpa(); } else {