Bluetooth: Pass local identity to bt_conn_add_le()

This makes the identity initialization consistent and actually catches
a few branches where it may not have properly happened.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
Johan Hedberg 2019-09-11 13:40:50 +03:00 committed by Johan Hedberg
commit 73baaaa3dc
3 changed files with 10 additions and 16 deletions

View file

@ -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);

View file

@ -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);

View file

@ -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)) {