You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by GitBox <gi...@apache.org> on 2018/06/04 08:27:10 UTC

[GitHub] sjanc closed pull request #121: nimble/ll: Fix reconnection with peers using public address

sjanc closed pull request #121: nimble/ll: Fix reconnection with peers using public address
URL: https://github.com/apache/mynewt-nimble/pull/121
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/nimble/controller/src/ble_ll_conn.c b/nimble/controller/src/ble_ll_conn.c
index 43061264..699da432 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 1627d7c2..5274d15c 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 {


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services