|
@@ -1381,7 +1381,8 @@ static void l2cap_le_conn_ready(struct l2cap_conn *conn)
|
|
|
|
|
|
/* Check if we have socket listening on cid */
|
|
|
pchan = l2cap_global_chan_by_scid(BT_LISTEN, L2CAP_CID_ATT,
|
|
|
- conn->src, conn->dst);
|
|
|
+ &conn->hcon->hdev->bdaddr,
|
|
|
+ &conn->hcon->dst);
|
|
|
if (!pchan)
|
|
|
return;
|
|
|
|
|
@@ -1399,8 +1400,8 @@ static void l2cap_le_conn_ready(struct l2cap_conn *conn)
|
|
|
|
|
|
chan->dcid = L2CAP_CID_ATT;
|
|
|
|
|
|
- bacpy(&bt_sk(chan->sk)->src, conn->src);
|
|
|
- bacpy(&bt_sk(chan->sk)->dst, conn->dst);
|
|
|
+ bacpy(&bt_sk(chan->sk)->src, &conn->hcon->hdev->bdaddr);
|
|
|
+ bacpy(&bt_sk(chan->sk)->dst, &conn->hcon->dst);
|
|
|
|
|
|
__l2cap_chan_add(conn, chan);
|
|
|
|
|
@@ -1665,9 +1666,6 @@ static struct l2cap_conn *l2cap_conn_add(struct hci_conn *hcon)
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- conn->src = &hcon->hdev->bdaddr;
|
|
|
- conn->dst = &hcon->dst;
|
|
|
-
|
|
|
conn->feat_mask = 0;
|
|
|
|
|
|
if (hcon->type == ACL_LINK)
|
|
@@ -1861,7 +1859,7 @@ int l2cap_chan_connect(struct l2cap_chan *chan, __le16 psm, u16 cid,
|
|
|
}
|
|
|
|
|
|
/* Update source addr of the socket */
|
|
|
- bacpy(src, conn->src);
|
|
|
+ bacpy(src, &hdev->bdaddr);
|
|
|
|
|
|
l2cap_chan_unlock(chan);
|
|
|
l2cap_chan_add(conn, chan);
|
|
@@ -3761,7 +3759,9 @@ static struct l2cap_chan *l2cap_connect(struct l2cap_conn *conn,
|
|
|
BT_DBG("psm 0x%2.2x scid 0x%4.4x", __le16_to_cpu(psm), scid);
|
|
|
|
|
|
/* Check if we have socket listening on psm */
|
|
|
- pchan = l2cap_global_chan_by_psm(BT_LISTEN, psm, conn->src, conn->dst);
|
|
|
+ pchan = l2cap_global_chan_by_psm(BT_LISTEN, psm,
|
|
|
+ &conn->hcon->hdev->bdaddr,
|
|
|
+ &conn->hcon->dst);
|
|
|
if (!pchan) {
|
|
|
result = L2CAP_CR_BAD_PSM;
|
|
|
goto sendresp;
|
|
@@ -3799,8 +3799,8 @@ static struct l2cap_chan *l2cap_connect(struct l2cap_conn *conn,
|
|
|
*/
|
|
|
conn->hcon->disc_timeout = HCI_DISCONN_TIMEOUT;
|
|
|
|
|
|
- bacpy(&bt_sk(sk)->src, conn->src);
|
|
|
- bacpy(&bt_sk(sk)->dst, conn->dst);
|
|
|
+ bacpy(&bt_sk(sk)->src, &conn->hcon->hdev->bdaddr);
|
|
|
+ bacpy(&bt_sk(sk)->dst, &conn->hcon->dst);
|
|
|
chan->psm = psm;
|
|
|
chan->dcid = scid;
|
|
|
chan->local_amp_id = amp_id;
|
|
@@ -4479,7 +4479,8 @@ static int l2cap_create_channel_req(struct l2cap_conn *conn,
|
|
|
struct amp_mgr *mgr = conn->hcon->amp_mgr;
|
|
|
struct hci_conn *hs_hcon;
|
|
|
|
|
|
- hs_hcon = hci_conn_hash_lookup_ba(hdev, AMP_LINK, conn->dst);
|
|
|
+ hs_hcon = hci_conn_hash_lookup_ba(hdev, AMP_LINK,
|
|
|
+ &conn->hcon->dst);
|
|
|
if (!hs_hcon) {
|
|
|
hci_dev_put(hdev);
|
|
|
return -EBADSLT;
|
|
@@ -4922,7 +4923,7 @@ static inline int l2cap_move_channel_req(struct l2cap_conn *conn,
|
|
|
*/
|
|
|
if ((__chan_is_moving(chan) ||
|
|
|
chan->move_role != L2CAP_MOVE_ROLE_NONE) &&
|
|
|
- bacmp(conn->src, conn->dst) > 0) {
|
|
|
+ bacmp(&conn->hcon->hdev->bdaddr, &conn->hcon->dst) > 0) {
|
|
|
result = L2CAP_MR_COLLISION;
|
|
|
goto send_move_response;
|
|
|
}
|
|
@@ -6437,7 +6438,8 @@ static void l2cap_conless_channel(struct l2cap_conn *conn, __le16 psm,
|
|
|
if (hcon->type != ACL_LINK)
|
|
|
goto drop;
|
|
|
|
|
|
- chan = l2cap_global_chan_by_psm(0, psm, conn->src, conn->dst);
|
|
|
+ chan = l2cap_global_chan_by_psm(0, psm, &conn->hcon->hdev->bdaddr,
|
|
|
+ &conn->hcon->dst);
|
|
|
if (!chan)
|
|
|
goto drop;
|
|
|
|
|
@@ -6466,7 +6468,8 @@ static void l2cap_att_channel(struct l2cap_conn *conn,
|
|
|
goto drop;
|
|
|
|
|
|
chan = l2cap_global_chan_by_scid(BT_CONNECTED, L2CAP_CID_ATT,
|
|
|
- conn->src, conn->dst);
|
|
|
+ &conn->hcon->hdev->bdaddr,
|
|
|
+ &conn->hcon->dst);
|
|
|
if (!chan)
|
|
|
goto drop;
|
|
|
|