|
@@ -405,26 +405,20 @@ void amp_physical_cfm(struct hci_conn *bredr_hcon, struct hci_conn *hs_hcon)
|
|
|
|
|
|
void amp_create_logical_link(struct l2cap_chan *chan)
|
|
|
{
|
|
|
+ struct hci_conn *hs_hcon = chan->hs_hcon;
|
|
|
struct hci_cp_create_accept_logical_link cp;
|
|
|
- struct hci_conn *hcon;
|
|
|
struct hci_dev *hdev;
|
|
|
|
|
|
- BT_DBG("chan %p", chan);
|
|
|
+ BT_DBG("chan %p hs_hcon %p dst %pMR", chan, hs_hcon, chan->conn->dst);
|
|
|
|
|
|
- if (!chan->hs_hcon)
|
|
|
+ if (!hs_hcon)
|
|
|
return;
|
|
|
|
|
|
hdev = hci_dev_hold(chan->hs_hcon->hdev);
|
|
|
if (!hdev)
|
|
|
return;
|
|
|
|
|
|
- BT_DBG("chan %p dst %pMR", chan, chan->conn->dst);
|
|
|
-
|
|
|
- hcon = hci_conn_hash_lookup_ba(hdev, AMP_LINK, chan->conn->dst);
|
|
|
- if (!hcon)
|
|
|
- goto done;
|
|
|
-
|
|
|
- cp.phy_handle = hcon->handle;
|
|
|
+ cp.phy_handle = hs_hcon->handle;
|
|
|
|
|
|
cp.tx_flow_spec.id = chan->local_id;
|
|
|
cp.tx_flow_spec.stype = chan->local_stype;
|
|
@@ -440,14 +434,13 @@ void amp_create_logical_link(struct l2cap_chan *chan)
|
|
|
cp.rx_flow_spec.acc_lat = cpu_to_le32(chan->remote_acc_lat);
|
|
|
cp.rx_flow_spec.flush_to = cpu_to_le32(chan->remote_flush_to);
|
|
|
|
|
|
- if (hcon->out)
|
|
|
+ if (hs_hcon->out)
|
|
|
hci_send_cmd(hdev, HCI_OP_CREATE_LOGICAL_LINK, sizeof(cp),
|
|
|
&cp);
|
|
|
else
|
|
|
hci_send_cmd(hdev, HCI_OP_ACCEPT_LOGICAL_LINK, sizeof(cp),
|
|
|
&cp);
|
|
|
|
|
|
-done:
|
|
|
hci_dev_put(hdev);
|
|
|
}
|
|
|
|