Lines Matching refs:hcon
27 struct hci_conn *hcon; member
106 if (conn->hcon) { in iso_conn_free()
107 conn->hcon->iso_data = NULL; in iso_conn_free()
108 hci_conn_drop(conn->hcon); in iso_conn_free()
197 static struct iso_conn *iso_conn_add(struct hci_conn *hcon) in iso_conn_add() argument
199 struct iso_conn *conn = hcon->iso_data; in iso_conn_add()
203 if (!conn->hcon) { in iso_conn_add()
205 conn->hcon = hcon; in iso_conn_add()
220 hcon->iso_data = conn; in iso_conn_add()
221 conn->hcon = hcon; in iso_conn_add()
224 BT_DBG("hcon %p conn %p", hcon, conn); in iso_conn_add()
261 static void iso_conn_del(struct hci_conn *hcon, int err) in iso_conn_del() argument
263 struct iso_conn *conn = hcon->iso_data; in iso_conn_del()
270 BT_DBG("hcon %p conn %p, err %d", hcon, conn, err); in iso_conn_del()
335 struct hci_conn *hcon; in iso_connect_bis() local
368 hcon = hci_bind_bis(hdev, &iso_pi(sk)->dst, in iso_connect_bis()
371 if (IS_ERR(hcon)) { in iso_connect_bis()
372 err = PTR_ERR(hcon); in iso_connect_bis()
376 hcon = hci_connect_bis(hdev, &iso_pi(sk)->dst, in iso_connect_bis()
380 if (IS_ERR(hcon)) { in iso_connect_bis()
381 err = PTR_ERR(hcon); in iso_connect_bis()
386 conn = iso_conn_add(hcon); in iso_connect_bis()
388 hci_conn_drop(hcon); in iso_connect_bis()
402 bacpy(&iso_pi(sk)->src, &hcon->src); in iso_connect_bis()
404 if (hcon->state == BT_CONNECTED) { in iso_connect_bis()
426 struct hci_conn *hcon; in iso_connect_cis() local
459 hcon = hci_bind_cis(hdev, &iso_pi(sk)->dst, in iso_connect_cis()
462 if (IS_ERR(hcon)) { in iso_connect_cis()
463 err = PTR_ERR(hcon); in iso_connect_cis()
467 hcon = hci_connect_cis(hdev, &iso_pi(sk)->dst, in iso_connect_cis()
470 if (IS_ERR(hcon)) { in iso_connect_cis()
471 err = PTR_ERR(hcon); in iso_connect_cis()
476 conn = iso_conn_add(hcon); in iso_connect_cis()
478 hci_conn_drop(hcon); in iso_connect_cis()
492 bacpy(&iso_pi(sk)->src, &hcon->src); in iso_connect_cis()
494 if (hcon->state == BT_CONNECTED) { in iso_connect_cis()
516 return &iso_pi(sk)->conn->hcon->iso_qos; in iso_sock_get_qos()
544 hci_send_iso(conn->hcon, skb); in iso_send_frame()
729 if (iso_pi(parent)->conn && iso_pi(parent)->conn->hcon) { in iso_sock_cleanup_listen()
758 struct hci_conn *hcon = iso_pi(sk)->conn->hcon; in iso_sock_disconn() local
760 if (test_bit(HCI_CONN_BIG_CREATED, &hcon->flags)) { in iso_sock_disconn()
770 hcon->state = BT_OPEN; in iso_sock_disconn()
771 hcon->iso_data = NULL; in iso_sock_disconn()
772 iso_pi(sk)->conn->hcon = NULL; in iso_sock_disconn()
774 iso_chan_del(sk, bt_to_errno(hcon->abort_reason)); in iso_sock_disconn()
782 hci_conn_drop(iso_pi(sk)->conn->hcon); in iso_sock_disconn()
783 iso_pi(sk)->conn->hcon = NULL; in iso_sock_disconn()
799 if (iso_pi(sk)->conn->hcon) in __iso_sock_close()
806 if (iso_pi(sk)->conn->hcon && in __iso_sock_close()
807 (test_bit(HCI_CONN_PA_SYNC, &iso_pi(sk)->conn->hcon->flags) || in __iso_sock_close()
808 test_bit(HCI_CONN_PA_SYNC_FAILED, &iso_pi(sk)->conn->hcon->flags))) in __iso_sock_close()
1113 struct hci_conn *hcon; in iso_listen_bis() local
1144 hcon = hci_pa_create_sync(hdev, &iso_pi(sk)->dst, in iso_listen_bis()
1147 if (IS_ERR(hcon)) { in iso_listen_bis()
1148 err = PTR_ERR(hcon); in iso_listen_bis()
1152 conn = iso_conn_add(hcon); in iso_listen_bis()
1154 hci_conn_drop(hcon); in iso_listen_bis()
1161 hci_conn_drop(hcon); in iso_listen_bis()
1382 mtu = iso_pi(sk)->conn->hcon->mtu; in iso_sock_sendmsg()
1465 err = hci_conn_big_create_sync(hdev, iso_pi(sk)->conn->hcon, in iso_conn_big_sync()
1505 iso_conn_defer_accept(pi->conn->hcon); in iso_sock_recvmsg()
1769 base_len = iso_pi(sk)->conn->hcon->le_per_adv_data_len; in iso_sock_getsockopt()
1770 base = iso_pi(sk)->conn->hcon->le_per_adv_data; in iso_sock_getsockopt()
1885 struct hci_conn *hcon = data; in iso_match_big_hcon() local
1887 return hcon->iso_qos.bcast.big == iso_pi(sk)->qos.bcast.big; in iso_match_big_hcon()
1902 struct hci_conn *hcon; in iso_conn_ready() local
1909 hcon = conn->hcon; in iso_conn_ready()
1910 if (!hcon) in iso_conn_ready()
1913 if (test_bit(HCI_CONN_BIG_SYNC, &hcon->flags)) { in iso_conn_ready()
1919 parent = iso_get_sock(&hcon->src, &hcon->dst, in iso_conn_ready()
1921 hcon); in iso_conn_ready()
1922 } else if (test_bit(HCI_CONN_BIG_SYNC_FAILED, &hcon->flags)) { in iso_conn_ready()
1923 ev = hci_recv_event_data(hcon->hdev, in iso_conn_ready()
1927 parent = iso_get_sock(&hcon->src, &hcon->dst, in iso_conn_ready()
1932 parent = iso_get_sock(&hcon->src, in iso_conn_ready()
1933 &hcon->dst, in iso_conn_ready()
1936 } else if (test_bit(HCI_CONN_PA_SYNC_FAILED, &hcon->flags)) { in iso_conn_ready()
1937 ev2 = hci_recv_event_data(hcon->hdev, in iso_conn_ready()
1940 parent = iso_get_sock(&hcon->src, in iso_conn_ready()
1941 &hcon->dst, in iso_conn_ready()
1944 } else if (test_bit(HCI_CONN_PA_SYNC, &hcon->flags)) { in iso_conn_ready()
1945 ev3 = hci_recv_event_data(hcon->hdev, in iso_conn_ready()
1948 parent = iso_get_sock(&hcon->src, in iso_conn_ready()
1949 &hcon->dst, in iso_conn_ready()
1956 parent = iso_get_sock(&hcon->src, BDADDR_ANY, in iso_conn_ready()
1973 bacpy(&iso_pi(sk)->src, &hcon->src); in iso_conn_ready()
1976 if (hcon->src_type == ADDR_LE_DEV_PUBLIC) in iso_conn_ready()
1986 if (!bacmp(&hcon->dst, BDADDR_ANY)) { in iso_conn_ready()
1987 bacpy(&hcon->dst, &iso_pi(parent)->dst); in iso_conn_ready()
1988 hcon->dst_type = iso_pi(parent)->dst_type; in iso_conn_ready()
1993 hcon->iso_qos = iso_pi(sk)->qos; in iso_conn_ready()
1999 bacpy(&iso_pi(sk)->dst, &hcon->dst); in iso_conn_ready()
2000 iso_pi(sk)->dst_type = hcon->dst_type; in iso_conn_ready()
2005 hci_conn_hold(hcon); in iso_conn_ready()
2106 struct hci_conn *hcon = iso_pi(sk)->conn->hcon; in iso_connect_ind() local
2115 err = hci_conn_big_create_sync(hdev, hcon, in iso_connect_ind()
2136 struct hci_conn *hcon; in iso_connect_ind() local
2143 hcon = iso_pi(sk)->conn->hcon; in iso_connect_ind()
2144 if (!hcon) in iso_connect_ind()
2149 memset(hcon->le_per_adv_data, 0, in iso_connect_ind()
2151 hcon->le_per_adv_data_len = 0; in iso_connect_ind()
2152 hcon->le_per_adv_data_offset = 0; in iso_connect_ind()
2156 if (hcon->le_per_adv_data_offset + ev3->length > in iso_connect_ind()
2160 memcpy(hcon->le_per_adv_data + hcon->le_per_adv_data_offset, in iso_connect_ind()
2162 hcon->le_per_adv_data_offset += ev3->length; in iso_connect_ind()
2166 hcon->le_per_adv_data_len = in iso_connect_ind()
2167 hcon->le_per_adv_data_offset; in iso_connect_ind()
2168 hcon->le_per_adv_data_offset = 0; in iso_connect_ind()
2171 base = eir_get_service_data(hcon->le_per_adv_data, in iso_connect_ind()
2172 hcon->le_per_adv_data_len, in iso_connect_ind()
2185 hcon->le_per_adv_data_len = 0; in iso_connect_ind()
2204 static void iso_connect_cfm(struct hci_conn *hcon, __u8 status) in iso_connect_cfm() argument
2206 if (hcon->type != ISO_LINK) { in iso_connect_cfm()
2207 if (hcon->type != LE_LINK) in iso_connect_cfm()
2214 list_for_each_entry_safe(link, t, &hcon->link_list, in iso_connect_cfm()
2222 hci_le_create_cis_pending(hcon->hdev); in iso_connect_cfm()
2226 BT_DBG("hcon %p bdaddr %pMR status %d", hcon, &hcon->dst, status); in iso_connect_cfm()
2233 if (!status || test_bit(HCI_CONN_BIG_SYNC_FAILED, &hcon->flags) || in iso_connect_cfm()
2234 test_bit(HCI_CONN_PA_SYNC_FAILED, &hcon->flags)) { in iso_connect_cfm()
2237 conn = iso_conn_add(hcon); in iso_connect_cfm()
2241 iso_conn_del(hcon, bt_to_errno(status)); in iso_connect_cfm()
2245 static void iso_disconn_cfm(struct hci_conn *hcon, __u8 reason) in iso_disconn_cfm() argument
2247 if (hcon->type != ISO_LINK) in iso_disconn_cfm()
2250 BT_DBG("hcon %p reason %d", hcon, reason); in iso_disconn_cfm()
2252 iso_conn_del(hcon, bt_to_errno(reason)); in iso_disconn_cfm()
2255 void iso_recv(struct hci_conn *hcon, struct sk_buff *skb, u16 flags) in iso_recv() argument
2257 struct iso_conn *conn = hcon->iso_data; in iso_recv()