diff --git a/subsys/bluetooth/host/conn.c b/subsys/bluetooth/host/conn.c index 1e7fb93d117..4c409010555 100644 --- a/subsys/bluetooth/host/conn.c +++ b/subsys/bluetooth/host/conn.c @@ -1525,7 +1525,7 @@ void bt_conn_process_tx(struct bt_conn *conn) } } -struct bt_conn *bt_conn_add_le(const bt_addr_le_t *peer) +struct bt_conn *bt_conn_add_le(u8_t id, const bt_addr_le_t *peer) { struct bt_conn *conn = conn_new(); @@ -1533,6 +1533,7 @@ struct bt_conn *bt_conn_add_le(const bt_addr_le_t *peer) return NULL; } + conn->id = id; bt_addr_le_copy(&conn->le.dst, peer); #if defined(CONFIG_BT_SMP) conn->sec_level = BT_SECURITY_L1; @@ -2204,14 +2205,12 @@ struct bt_conn *bt_conn_create_le(const bt_addr_le_t *peer, bt_addr_le_copy(&dst, bt_lookup_id_addr(BT_ID_DEFAULT, peer)); } - conn = bt_conn_add_le(&dst); + /* Only default identity supported for now */ + conn = bt_conn_add_le(BT_ID_DEFAULT, &dst); if (!conn) { return NULL; } - /* Only default identity supported for now */ - conn->id = BT_ID_DEFAULT; - start_scan: bt_conn_set_param_le(conn, param); @@ -2232,18 +2231,16 @@ int bt_le_set_auto_conn(const bt_addr_le_t *addr, return -EINVAL; } + /* Only default identity is supported */ conn = bt_conn_lookup_addr_le(BT_ID_DEFAULT, addr); if (!conn) { - conn = bt_conn_add_le(addr); + conn = bt_conn_add_le(BT_ID_DEFAULT, addr); if (!conn) { return -ENOMEM; } } if (param) { - /* Only default identity is supported */ - conn->id = BT_ID_DEFAULT; - bt_conn_set_param_le(conn, param); if (!atomic_test_and_set_bit(conn->flags, @@ -2315,13 +2312,11 @@ struct bt_conn *bt_conn_create_slave_le(const bt_addr_le_t *peer, } } - conn = bt_conn_add_le(peer); + conn = bt_conn_add_le(param->id, peer); if (!conn) { return NULL; } - conn->id = param->id; - start_adv: bt_conn_set_state(conn, BT_CONN_CONNECT_DIR_ADV); diff --git a/subsys/bluetooth/host/conn_internal.h b/subsys/bluetooth/host/conn_internal.h index 167a0a4b3ad..d345df03695 100644 --- a/subsys/bluetooth/host/conn_internal.h +++ b/subsys/bluetooth/host/conn_internal.h @@ -153,7 +153,7 @@ static inline int bt_conn_send(struct bt_conn *conn, struct net_buf *buf) } /* Add a new LE connection */ -struct bt_conn *bt_conn_add_le(const bt_addr_le_t *peer); +struct bt_conn *bt_conn_add_le(u8_t id, const bt_addr_le_t *peer); /* Add a new BR/EDR connection */ struct bt_conn *bt_conn_add_br(const bt_addr_t *peer); diff --git a/subsys/bluetooth/host/hci_core.c b/subsys/bluetooth/host/hci_core.c index ba953781e3f..cf8a02b3e96 100644 --- a/subsys/bluetooth/host/hci_core.c +++ b/subsys/bluetooth/host/hci_core.c @@ -1124,7 +1124,7 @@ static void enh_conn_complete(struct bt_hci_evt_le_enh_conn_complete *evt) /* for slave we may need to add new connection */ if (!conn) { - conn = bt_conn_add_le(&id_addr); + conn = bt_conn_add_le(bt_dev.adv_id, &id_addr); } } @@ -1133,7 +1133,7 @@ static void enh_conn_complete(struct bt_hci_evt_le_enh_conn_complete *evt) evt->role == BT_HCI_ROLE_MASTER) { /* for whitelist initiator me may need to add new connection. */ if (!conn) { - conn = bt_conn_add_le(&id_addr); + conn = bt_conn_add_le(BT_ID_DEFAULT, &id_addr); } } @@ -1157,7 +1157,6 @@ static void enh_conn_complete(struct bt_hci_evt_le_enh_conn_complete *evt) */ if (IS_ENABLED(CONFIG_BT_PERIPHERAL) && conn->role == BT_HCI_ROLE_SLAVE) { - conn->id = bt_dev.adv_id; bt_addr_le_copy(&conn->le.init_addr, &peer_addr); if (IS_ENABLED(CONFIG_BT_PRIVACY)) {