Lines Matching refs:hcon

26 	struct hci_conn	*hcon;
137 static struct iso_conn *iso_conn_add(struct hci_conn *hcon)
139 struct iso_conn *conn = hcon->iso_data;
142 if (!conn->hcon)
143 conn->hcon = hcon;
154 hcon->iso_data = conn;
155 conn->hcon = hcon;
158 BT_DBG("hcon %p conn %p", hcon, conn);
179 if (conn->hcon)
180 hci_conn_drop(conn->hcon);
199 struct hci_conn *hcon = data;
204 return hcon->sync_handle == iso_pi(sk)->sync_handle;
207 static void iso_conn_del(struct hci_conn *hcon, int err)
209 struct iso_conn *conn = hcon->iso_data;
216 BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
228 /* While a PA sync hcon is in the process of closing,
234 parent = iso_get_sock_listen(&hcon->src,
235 &hcon->dst,
237 hcon);
255 hcon->iso_data = NULL;
304 struct hci_conn *hcon;
337 hcon = hci_bind_bis(hdev, &iso_pi(sk)->dst,
340 if (IS_ERR(hcon)) {
341 err = PTR_ERR(hcon);
345 hcon = hci_connect_bis(hdev, &iso_pi(sk)->dst,
349 if (IS_ERR(hcon)) {
350 err = PTR_ERR(hcon);
355 conn = iso_conn_add(hcon);
357 hci_conn_drop(hcon);
371 bacpy(&iso_pi(sk)->src, &hcon->src);
373 if (hcon->state == BT_CONNECTED) {
395 struct hci_conn *hcon;
428 hcon = hci_bind_cis(hdev, &iso_pi(sk)->dst,
431 if (IS_ERR(hcon)) {
432 err = PTR_ERR(hcon);
436 hcon = hci_connect_cis(hdev, &iso_pi(sk)->dst,
439 if (IS_ERR(hcon)) {
440 err = PTR_ERR(hcon);
445 conn = iso_conn_add(hcon);
447 hci_conn_drop(hcon);
461 bacpy(&iso_pi(sk)->src, &hcon->src);
463 if (hcon->state == BT_CONNECTED) {
485 return &iso_pi(sk)->conn->hcon->iso_qos;
511 hci_send_iso(conn->hcon, skb);
643 * properly disconnect the hcon and socket.
645 if (iso_pi(parent)->conn && iso_pi(parent)->conn->hcon &&
646 test_bit(HCI_CONN_PA_SYNC, &iso_pi(parent)->conn->hcon->flags)) {
677 hci_conn_drop(iso_pi(sk)->conn->hcon);
678 iso_pi(sk)->conn->hcon = NULL;
694 if (iso_pi(sk)->conn->hcon)
701 if (iso_pi(sk)->conn->hcon &&
702 (test_bit(HCI_CONN_PA_SYNC, &iso_pi(sk)->conn->hcon->flags) ||
703 test_bit(HCI_CONN_PA_SYNC_FAILED, &iso_pi(sk)->conn->hcon->flags)))
1138 mtu = iso_pi(sk)->conn->hcon->hdev->iso_mtu;
1213 err = hci_le_big_create_sync(hdev, iso_pi(sk)->conn->hcon,
1236 if (pi->conn->hcon &&
1237 test_bit(HCI_CONN_PA_SYNC, &pi->conn->hcon->flags)) {
1241 iso_conn_defer_accept(pi->conn->hcon);
1488 base_len = iso_pi(sk)->conn->hcon->le_per_adv_data_len;
1489 base = iso_pi(sk)->conn->hcon->le_per_adv_data;
1594 struct hci_conn *hcon;
1617 struct hci_conn *hcon;
1624 hcon = conn->hcon;
1625 if (!hcon)
1628 if (test_bit(HCI_CONN_BIG_SYNC, &hcon->flags) ||
1629 test_bit(HCI_CONN_BIG_SYNC_FAILED, &hcon->flags)) {
1630 ev = hci_recv_event_data(hcon->hdev,
1634 parent = iso_get_sock_listen(&hcon->src,
1635 &hcon->dst,
1638 parent = iso_get_sock_listen(&hcon->src,
1639 &hcon->dst,
1641 } else if (test_bit(HCI_CONN_PA_SYNC_FAILED, &hcon->flags)) {
1642 ev2 = hci_recv_event_data(hcon->hdev,
1645 parent = iso_get_sock_listen(&hcon->src,
1646 &hcon->dst,
1648 } else if (test_bit(HCI_CONN_PA_SYNC, &hcon->flags)) {
1649 ev3 = hci_recv_event_data(hcon->hdev,
1652 parent = iso_get_sock_listen(&hcon->src,
1653 &hcon->dst,
1658 parent = iso_get_sock_listen(&hcon->src,
1675 bacpy(&iso_pi(sk)->src, &hcon->src);
1678 if (hcon->src_type == ADDR_LE_DEV_PUBLIC)
1683 /* If hcon has no destination address (BDADDR_ANY) it means it
1688 if (!bacmp(&hcon->dst, BDADDR_ANY)) {
1689 bacpy(&hcon->dst, &iso_pi(parent)->dst);
1690 hcon->dst_type = iso_pi(parent)->dst_type;
1691 hcon->sync_handle = iso_pi(parent)->sync_handle;
1697 hcon->iso_qos = iso_pi(sk)->qos;
1703 bacpy(&iso_pi(sk)->dst, &hcon->dst);
1704 iso_pi(sk)->dst_type = hcon->dst_type;
1709 hci_conn_hold(hcon);
1854 static void iso_connect_cfm(struct hci_conn *hcon, __u8 status)
1856 if (hcon->type != ISO_LINK) {
1857 if (hcon->type != LE_LINK)
1864 list_for_each_entry_safe(link, t, &hcon->link_list,
1872 hci_le_create_cis_pending(hcon->hdev);
1876 BT_DBG("hcon %p bdaddr %pMR status %d", hcon, &hcon->dst, status);
1883 if (!status || test_bit(HCI_CONN_BIG_SYNC_FAILED, &hcon->flags) ||
1884 test_bit(HCI_CONN_PA_SYNC_FAILED, &hcon->flags)) {
1887 conn = iso_conn_add(hcon);
1891 iso_conn_del(hcon, bt_to_errno(status));
1895 static void iso_disconn_cfm(struct hci_conn *hcon, __u8 reason)
1897 if (hcon->type != ISO_LINK)
1900 BT_DBG("hcon %p reason %d", hcon, reason);
1902 iso_conn_del(hcon, bt_to_errno(reason));
1905 void iso_recv(struct hci_conn *hcon, struct sk_buff *skb, u16 flags)
1907 struct iso_conn *conn = hcon->iso_data;