Lines Matching refs:hcon

27 	struct hci_conn	*hcon;  member
107 if (conn->hcon) { in iso_conn_free()
108 conn->hcon->iso_data = NULL; in iso_conn_free()
109 hci_conn_drop(conn->hcon); in iso_conn_free()
200 static struct iso_conn *iso_conn_add(struct hci_conn *hcon) in iso_conn_add() argument
202 struct iso_conn *conn = hcon->iso_data; in iso_conn_add()
206 if (!conn->hcon) { in iso_conn_add()
208 conn->hcon = hcon; in iso_conn_add()
223 hcon->iso_data = conn; in iso_conn_add()
224 conn->hcon = hcon; in iso_conn_add()
227 BT_DBG("hcon %p conn %p", hcon, conn); in iso_conn_add()
264 static void iso_conn_del(struct hci_conn *hcon, int err) in iso_conn_del() argument
266 struct iso_conn *conn = hcon->iso_data; in iso_conn_del()
273 BT_DBG("hcon %p conn %p, err %d", hcon, conn, err); in iso_conn_del()
338 struct hci_conn *hcon; in iso_connect_bis() local
371 hcon = hci_bind_bis(hdev, &iso_pi(sk)->dst, iso_pi(sk)->bc_sid, in iso_connect_bis()
375 if (IS_ERR(hcon)) { in iso_connect_bis()
376 err = PTR_ERR(hcon); in iso_connect_bis()
380 hcon = hci_connect_bis(hdev, &iso_pi(sk)->dst, in iso_connect_bis()
385 if (IS_ERR(hcon)) { in iso_connect_bis()
386 err = PTR_ERR(hcon); in iso_connect_bis()
392 iso_pi(sk)->bc_sid = hcon->sid; in iso_connect_bis()
395 conn = iso_conn_add(hcon); in iso_connect_bis()
397 hci_conn_drop(hcon); in iso_connect_bis()
411 bacpy(&iso_pi(sk)->src, &hcon->src); in iso_connect_bis()
413 if (hcon->state == BT_CONNECTED) { in iso_connect_bis()
435 struct hci_conn *hcon; in iso_connect_cis() local
475 hcon = hci_bind_cis(hdev, &iso_pi(sk)->dst, in iso_connect_cis()
479 if (IS_ERR(hcon)) { in iso_connect_cis()
480 err = PTR_ERR(hcon); in iso_connect_cis()
484 hcon = hci_connect_cis(hdev, &iso_pi(sk)->dst, in iso_connect_cis()
488 if (IS_ERR(hcon)) { in iso_connect_cis()
489 err = PTR_ERR(hcon); in iso_connect_cis()
494 conn = iso_conn_add(hcon); in iso_connect_cis()
496 hci_conn_drop(hcon); in iso_connect_cis()
510 bacpy(&iso_pi(sk)->src, &hcon->src); in iso_connect_cis()
512 if (hcon->state == BT_CONNECTED) { in iso_connect_cis()
534 return &iso_pi(sk)->conn->hcon->iso_qos; in iso_sock_get_qos()
562 hci_send_iso(conn->hcon, skb); in iso_send_frame()
765 if (iso_pi(parent)->conn && iso_pi(parent)->conn->hcon) { in iso_sock_cleanup_listen()
801 struct hci_conn *hcon = iso_pi(sk)->conn->hcon; in iso_sock_disconn() local
803 if (test_bit(HCI_CONN_BIG_CREATED, &hcon->flags)) { in iso_sock_disconn()
813 hcon->state = BT_OPEN; in iso_sock_disconn()
814 hcon->iso_data = NULL; in iso_sock_disconn()
815 iso_pi(sk)->conn->hcon = NULL; in iso_sock_disconn()
817 iso_chan_del(sk, bt_to_errno(hcon->abort_reason)); in iso_sock_disconn()
825 hci_conn_drop(iso_pi(sk)->conn->hcon); in iso_sock_disconn()
826 iso_pi(sk)->conn->hcon = NULL; in iso_sock_disconn()
842 if (iso_pi(sk)->conn->hcon) in __iso_sock_close()
849 if (iso_pi(sk)->conn->hcon && in __iso_sock_close()
850 (test_bit(HCI_CONN_PA_SYNC, &iso_pi(sk)->conn->hcon->flags) || in __iso_sock_close()
851 test_bit(HCI_CONN_PA_SYNC_FAILED, &iso_pi(sk)->conn->hcon->flags))) in __iso_sock_close()
1043 if (conn->hcon) in iso_conn_get_hdev()
1044 hdev = hci_dev_hold(conn->hcon->hdev); in iso_conn_get_hdev()
1080 bis = iso_pi(sk)->conn->hcon; in iso_sock_rebind_bc()
1090 if (!iso_pi(sk)->conn || iso_pi(sk)->conn->hcon != bis) { in iso_sock_rebind_bc()
1220 struct hci_conn *hcon; in iso_listen_bis() local
1251 hcon = hci_pa_create_sync(hdev, &iso_pi(sk)->dst, in iso_listen_bis()
1254 if (IS_ERR(hcon)) { in iso_listen_bis()
1255 err = PTR_ERR(hcon); in iso_listen_bis()
1259 conn = iso_conn_add(hcon); in iso_listen_bis()
1261 hci_conn_drop(hcon); in iso_listen_bis()
1268 hci_conn_drop(hcon); in iso_listen_bis()
1447 struct hci_conn *hcon = iso_pi(sk)->conn ? in iso_sock_getname() local
1448 iso_pi(sk)->conn->hcon : NULL; in iso_sock_getname()
1453 if (hcon && (hcon->type == BIS_LINK || hcon->type == PA_LINK)) { in iso_sock_getname()
1501 mtu = iso_pi(sk)->conn->hcon->mtu; in iso_sock_sendmsg()
1584 err = hci_conn_big_create_sync(hdev, iso_pi(sk)->conn->hcon, in iso_conn_big_sync()
1624 iso_conn_defer_accept(pi->conn->hcon); in iso_sock_recvmsg()
1899 base_len = iso_pi(sk)->conn->hcon->le_per_adv_data_len; in iso_sock_getsockopt()
1900 base = iso_pi(sk)->conn->hcon->le_per_adv_data; in iso_sock_getsockopt()
2015 struct hci_conn *hcon = data; in iso_match_big_hcon() local
2017 return hcon->iso_qos.bcast.big == iso_pi(sk)->qos.bcast.big; in iso_match_big_hcon()
2037 struct hci_conn *hcon; in iso_conn_ready() local
2046 if (conn->hcon->type == BIS_LINK && in iso_conn_ready()
2047 conn->hcon->role == HCI_ROLE_MASTER && in iso_conn_ready()
2048 !bacmp(&conn->hcon->dst, BDADDR_ANY)) { in iso_conn_ready()
2049 struct hci_conn *bis = conn->hcon; in iso_conn_ready()
2064 hcon = conn->hcon; in iso_conn_ready()
2065 if (!hcon) in iso_conn_ready()
2068 hdev = hcon->hdev; in iso_conn_ready()
2070 if (test_bit(HCI_CONN_BIG_SYNC, &hcon->flags)) { in iso_conn_ready()
2076 parent = iso_get_sock(hdev, &hcon->src, &hcon->dst, in iso_conn_ready()
2078 hcon); in iso_conn_ready()
2079 } else if (test_bit(HCI_CONN_BIG_SYNC_FAILED, &hcon->flags)) { in iso_conn_ready()
2080 ev = hci_recv_event_data(hcon->hdev, in iso_conn_ready()
2084 parent = iso_get_sock(hdev, &hcon->src, &hcon->dst, in iso_conn_ready()
2089 parent = iso_get_sock(hdev, &hcon->src, in iso_conn_ready()
2090 &hcon->dst, in iso_conn_ready()
2093 } else if (test_bit(HCI_CONN_PA_SYNC_FAILED, &hcon->flags)) { in iso_conn_ready()
2094 ev2 = hci_recv_event_data(hcon->hdev, in iso_conn_ready()
2097 parent = iso_get_sock(hdev, &hcon->src, in iso_conn_ready()
2098 &hcon->dst, in iso_conn_ready()
2101 } else if (test_bit(HCI_CONN_PA_SYNC, &hcon->flags)) { in iso_conn_ready()
2102 ev3 = hci_recv_event_data(hcon->hdev, in iso_conn_ready()
2105 parent = iso_get_sock(hdev, &hcon->src, in iso_conn_ready()
2106 &hcon->dst, in iso_conn_ready()
2113 parent = iso_get_sock(hdev, &hcon->src, BDADDR_ANY, in iso_conn_ready()
2130 bacpy(&iso_pi(sk)->src, &hcon->src); in iso_conn_ready()
2133 if (hcon->src_type == ADDR_LE_DEV_PUBLIC) in iso_conn_ready()
2143 if (!bacmp(&hcon->dst, BDADDR_ANY)) { in iso_conn_ready()
2144 bacpy(&hcon->dst, &iso_pi(parent)->dst); in iso_conn_ready()
2145 hcon->dst_type = le_addr_type(iso_pi(parent)->dst_type); in iso_conn_ready()
2148 if (test_bit(HCI_CONN_PA_SYNC, &hcon->flags)) { in iso_conn_ready()
2150 hcon->iso_qos = iso_pi(sk)->qos; in iso_conn_ready()
2158 bacpy(&iso_pi(sk)->dst, &hcon->dst); in iso_conn_ready()
2161 if (hcon->dst_type == ADDR_LE_DEV_PUBLIC) in iso_conn_ready()
2170 hci_conn_hold(hcon); in iso_conn_ready()
2300 struct hci_conn *hcon = iso_pi(sk)->conn->hcon; in iso_connect_ind() local
2309 err = hci_conn_big_create_sync(hdev, hcon, in iso_connect_ind()
2330 struct hci_conn *hcon; in iso_connect_ind() local
2337 hcon = iso_pi(sk)->conn->hcon; in iso_connect_ind()
2338 if (!hcon) in iso_connect_ind()
2343 memset(hcon->le_per_adv_data, 0, in iso_connect_ind()
2345 hcon->le_per_adv_data_len = 0; in iso_connect_ind()
2346 hcon->le_per_adv_data_offset = 0; in iso_connect_ind()
2350 if (hcon->le_per_adv_data_offset + ev3->length > in iso_connect_ind()
2354 memcpy(hcon->le_per_adv_data + hcon->le_per_adv_data_offset, in iso_connect_ind()
2356 hcon->le_per_adv_data_offset += ev3->length; in iso_connect_ind()
2360 hcon->le_per_adv_data_len = in iso_connect_ind()
2361 hcon->le_per_adv_data_offset; in iso_connect_ind()
2362 hcon->le_per_adv_data_offset = 0; in iso_connect_ind()
2365 base = eir_get_service_data(hcon->le_per_adv_data, in iso_connect_ind()
2366 hcon->le_per_adv_data_len, in iso_connect_ind()
2379 hcon->le_per_adv_data_len = 0; in iso_connect_ind()
2398 static void iso_connect_cfm(struct hci_conn *hcon, __u8 status) in iso_connect_cfm() argument
2400 if (hcon->type != CIS_LINK && hcon->type != BIS_LINK && in iso_connect_cfm()
2401 hcon->type != PA_LINK) { in iso_connect_cfm()
2402 if (hcon->type != LE_LINK) in iso_connect_cfm()
2409 list_for_each_entry_safe(link, t, &hcon->link_list, in iso_connect_cfm()
2417 hci_le_create_cis_pending(hcon->hdev); in iso_connect_cfm()
2421 BT_DBG("hcon %p bdaddr %pMR status %d", hcon, &hcon->dst, status); in iso_connect_cfm()
2428 if (!status || test_bit(HCI_CONN_BIG_SYNC_FAILED, &hcon->flags) || in iso_connect_cfm()
2429 test_bit(HCI_CONN_PA_SYNC_FAILED, &hcon->flags)) { in iso_connect_cfm()
2432 conn = iso_conn_add(hcon); in iso_connect_cfm()
2436 iso_conn_del(hcon, bt_to_errno(status)); in iso_connect_cfm()
2440 static void iso_disconn_cfm(struct hci_conn *hcon, __u8 reason) in iso_disconn_cfm() argument
2442 if (hcon->type != CIS_LINK && hcon->type != BIS_LINK && in iso_disconn_cfm()
2443 hcon->type != PA_LINK) in iso_disconn_cfm()
2446 BT_DBG("hcon %p reason %d", hcon, reason); in iso_disconn_cfm()
2448 iso_conn_del(hcon, bt_to_errno(reason)); in iso_disconn_cfm()
2453 struct hci_conn *hcon; in iso_recv() local
2460 hcon = hci_conn_hash_lookup_handle(hdev, handle); in iso_recv()
2461 if (!hcon) { in iso_recv()
2467 conn = iso_conn_hold_unless_zero(hcon->iso_data); in iso_recv()
2468 hcon = NULL; in iso_recv()