Lines Matching full:conn
47 struct hci_conn *conn; member
70 void hci_connect_le_scan_cleanup(struct hci_conn *conn, u8 status) in hci_connect_le_scan_cleanup() argument
73 struct hci_dev *hdev = conn->hdev; in hci_connect_le_scan_cleanup()
78 bdaddr = &conn->dst; in hci_connect_le_scan_cleanup()
79 bdaddr_type = conn->dst_type; in hci_connect_le_scan_cleanup()
93 if (params->conn) { in hci_connect_le_scan_cleanup()
94 hci_conn_drop(params->conn); in hci_connect_le_scan_cleanup()
95 hci_conn_put(params->conn); in hci_connect_le_scan_cleanup()
96 params->conn = NULL; in hci_connect_le_scan_cleanup()
109 mgmt_connect_failed(hdev, conn, status); in hci_connect_le_scan_cleanup()
139 static void hci_conn_cleanup(struct hci_conn *conn) in hci_conn_cleanup() argument
141 struct hci_dev *hdev = conn->hdev; in hci_conn_cleanup()
143 if (test_bit(HCI_CONN_PARAM_REMOVAL_PEND, &conn->flags)) in hci_conn_cleanup()
144 hci_conn_params_del(conn->hdev, &conn->dst, conn->dst_type); in hci_conn_cleanup()
146 if (test_and_clear_bit(HCI_CONN_FLUSH_KEY, &conn->flags)) in hci_conn_cleanup()
147 hci_remove_link_key(hdev, &conn->dst); in hci_conn_cleanup()
149 hci_chan_list_flush(conn); in hci_conn_cleanup()
151 hci_conn_hash_del(hdev, conn); in hci_conn_cleanup()
153 if (HCI_CONN_HANDLE_UNSET(conn->handle)) in hci_conn_cleanup()
154 ida_free(&hdev->unset_handle_ida, conn->handle); in hci_conn_cleanup()
156 if (conn->cleanup) in hci_conn_cleanup()
157 conn->cleanup(conn); in hci_conn_cleanup()
159 if (conn->type == SCO_LINK || conn->type == ESCO_LINK) { in hci_conn_cleanup()
160 switch (conn->setting & SCO_AIRMODE_MASK) { in hci_conn_cleanup()
172 debugfs_remove_recursive(conn->debugfs); in hci_conn_cleanup()
174 hci_conn_del_sysfs(conn); in hci_conn_cleanup()
179 int hci_disconnect(struct hci_conn *conn, __u8 reason) in hci_disconnect() argument
181 BT_DBG("hcon %p", conn); in hci_disconnect()
188 if (conn->type == ACL_LINK && conn->role == HCI_ROLE_MASTER && in hci_disconnect()
189 (conn->state == BT_CONNECTED || conn->state == BT_CONFIG)) { in hci_disconnect()
190 struct hci_dev *hdev = conn->hdev; in hci_disconnect()
193 clkoff_cp.handle = cpu_to_le16(conn->handle); in hci_disconnect()
198 return hci_abort_conn(conn, reason); in hci_disconnect()
201 static void hci_add_sco(struct hci_conn *conn, __u16 handle) in hci_add_sco() argument
203 struct hci_dev *hdev = conn->hdev; in hci_add_sco()
206 BT_DBG("hcon %p", conn); in hci_add_sco()
208 conn->state = BT_CONNECT; in hci_add_sco()
209 conn->out = true; in hci_add_sco()
211 conn->attempt++; in hci_add_sco()
214 cp.pkt_type = cpu_to_le16(conn->pkt_type); in hci_add_sco()
219 static bool find_next_esco_param(struct hci_conn *conn, in find_next_esco_param() argument
222 if (!conn->parent) in find_next_esco_param()
225 for (; conn->attempt <= size; conn->attempt++) { in find_next_esco_param()
226 if (lmp_esco_2m_capable(conn->parent) || in find_next_esco_param()
227 (esco_param[conn->attempt - 1].pkt_type & ESCO_2EV3)) in find_next_esco_param()
230 conn, conn->attempt); in find_next_esco_param()
233 return conn->attempt <= size; in find_next_esco_param()
285 struct hci_conn *conn = conn_handle->conn; in hci_enhanced_setup_sync() local
292 if (!hci_conn_valid(hdev, conn)) in hci_enhanced_setup_sync()
295 bt_dev_dbg(hdev, "hcon %p", conn); in hci_enhanced_setup_sync()
297 configure_datapath_sync(hdev, &conn->codec); in hci_enhanced_setup_sync()
299 conn->state = BT_CONNECT; in hci_enhanced_setup_sync()
300 conn->out = true; in hci_enhanced_setup_sync()
302 conn->attempt++; in hci_enhanced_setup_sync()
311 switch (conn->codec.id) { in hci_enhanced_setup_sync()
313 if (!find_next_esco_param(conn, esco_param_msbc, in hci_enhanced_setup_sync()
317 param = &esco_param_msbc[conn->attempt - 1]; in hci_enhanced_setup_sync()
332 cp.in_data_path = conn->codec.data_path; in hci_enhanced_setup_sync()
333 cp.out_data_path = conn->codec.data_path; in hci_enhanced_setup_sync()
339 if (!find_next_esco_param(conn, esco_param_msbc, in hci_enhanced_setup_sync()
342 param = &esco_param_msbc[conn->attempt - 1]; in hci_enhanced_setup_sync()
357 cp.in_data_path = conn->codec.data_path; in hci_enhanced_setup_sync()
358 cp.out_data_path = conn->codec.data_path; in hci_enhanced_setup_sync()
364 if (conn->parent && lmp_esco_capable(conn->parent)) { in hci_enhanced_setup_sync()
365 if (!find_next_esco_param(conn, esco_param_cvsd, in hci_enhanced_setup_sync()
368 param = &esco_param_cvsd[conn->attempt - 1]; in hci_enhanced_setup_sync()
370 if (conn->attempt > ARRAY_SIZE(sco_param_cvsd)) in hci_enhanced_setup_sync()
372 param = &sco_param_cvsd[conn->attempt - 1]; in hci_enhanced_setup_sync()
388 cp.in_data_path = conn->codec.data_path; in hci_enhanced_setup_sync()
389 cp.out_data_path = conn->codec.data_path; in hci_enhanced_setup_sync()
407 static bool hci_setup_sync_conn(struct hci_conn *conn, __u16 handle) in hci_setup_sync_conn() argument
409 struct hci_dev *hdev = conn->hdev; in hci_setup_sync_conn()
413 bt_dev_dbg(hdev, "hcon %p", conn); in hci_setup_sync_conn()
415 conn->state = BT_CONNECT; in hci_setup_sync_conn()
416 conn->out = true; in hci_setup_sync_conn()
418 conn->attempt++; in hci_setup_sync_conn()
424 cp.voice_setting = cpu_to_le16(conn->setting); in hci_setup_sync_conn()
426 switch (conn->setting & SCO_AIRMODE_MASK) { in hci_setup_sync_conn()
428 if (!find_next_esco_param(conn, esco_param_msbc, in hci_setup_sync_conn()
431 param = &esco_param_msbc[conn->attempt - 1]; in hci_setup_sync_conn()
434 if (conn->parent && lmp_esco_capable(conn->parent)) { in hci_setup_sync_conn()
435 if (!find_next_esco_param(conn, esco_param_cvsd, in hci_setup_sync_conn()
438 param = &esco_param_cvsd[conn->attempt - 1]; in hci_setup_sync_conn()
440 if (conn->attempt > ARRAY_SIZE(sco_param_cvsd)) in hci_setup_sync_conn()
442 param = &sco_param_cvsd[conn->attempt - 1]; in hci_setup_sync_conn()
459 bool hci_setup_sync(struct hci_conn *conn, __u16 handle) in hci_setup_sync() argument
464 if (enhanced_sync_conn_capable(conn->hdev)) { in hci_setup_sync()
470 conn_handle->conn = conn; in hci_setup_sync()
472 result = hci_cmd_sync_queue(conn->hdev, hci_enhanced_setup_sync, in hci_setup_sync()
480 return hci_setup_sync_conn(conn, handle); in hci_setup_sync()
483 u8 hci_le_conn_update(struct hci_conn *conn, u16 min, u16 max, u16 latency, in hci_le_conn_update() argument
486 struct hci_dev *hdev = conn->hdev; in hci_le_conn_update()
492 params = hci_conn_params_lookup(hdev, &conn->dst, conn->dst_type); in hci_le_conn_update()
503 cp.handle = cpu_to_le16(conn->handle); in hci_le_conn_update()
519 void hci_le_start_enc(struct hci_conn *conn, __le16 ediv, __le64 rand, in hci_le_start_enc() argument
522 struct hci_dev *hdev = conn->hdev; in hci_le_start_enc()
525 BT_DBG("hcon %p", conn); in hci_le_start_enc()
529 cp.handle = cpu_to_le16(conn->handle); in hci_le_start_enc()
538 void hci_sco_setup(struct hci_conn *conn, __u8 status) in hci_sco_setup() argument
542 link = list_first_entry_or_null(&conn->link_list, struct hci_link, list); in hci_sco_setup()
543 if (!link || !link->conn) in hci_sco_setup()
546 BT_DBG("hcon %p", conn); in hci_sco_setup()
549 if (lmp_esco_capable(conn->hdev)) in hci_sco_setup()
550 hci_setup_sync(link->conn, conn->handle); in hci_sco_setup()
552 hci_add_sco(link->conn, conn->handle); in hci_sco_setup()
554 hci_connect_cfm(link->conn, status); in hci_sco_setup()
555 hci_conn_del(link->conn); in hci_sco_setup()
561 struct hci_conn *conn = container_of(work, struct hci_conn, in hci_conn_timeout() local
563 int refcnt = atomic_read(&conn->refcnt); in hci_conn_timeout()
565 BT_DBG("hcon %p state %s", conn, state_to_string(conn->state)); in hci_conn_timeout()
571 * l2cap_chan_del for each channel, and inside l2cap_chan_del conn is in hci_conn_timeout()
573 * conn. For now make sure that ACL is alive if refcnt is higher then 0, in hci_conn_timeout()
579 hci_abort_conn(conn, hci_proto_disconn_ind(conn)); in hci_conn_timeout()
585 struct hci_conn *conn = container_of(work, struct hci_conn, in hci_conn_idle() local
587 struct hci_dev *hdev = conn->hdev; in hci_conn_idle()
589 BT_DBG("hcon %p mode %d", conn, conn->mode); in hci_conn_idle()
591 if (!lmp_sniff_capable(hdev) || !lmp_sniff_capable(conn)) in hci_conn_idle()
594 if (conn->mode != HCI_CM_ACTIVE || !(conn->link_policy & HCI_LP_SNIFF)) in hci_conn_idle()
597 if (lmp_sniffsubr_capable(hdev) && lmp_sniffsubr_capable(conn)) { in hci_conn_idle()
599 cp.handle = cpu_to_le16(conn->handle); in hci_conn_idle()
606 if (!test_and_set_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->flags)) { in hci_conn_idle()
608 cp.handle = cpu_to_le16(conn->handle); in hci_conn_idle()
619 struct hci_conn *conn = container_of(work, struct hci_conn, in hci_conn_auto_accept() local
622 hci_send_cmd(conn->hdev, HCI_OP_USER_CONFIRM_REPLY, sizeof(conn->dst), in hci_conn_auto_accept()
623 &conn->dst); in hci_conn_auto_accept()
645 struct hci_conn *conn = container_of(work, struct hci_conn, in le_conn_timeout() local
647 struct hci_dev *hdev = conn->hdev; in le_conn_timeout()
656 if (conn->role == HCI_ROLE_SLAVE) { in le_conn_timeout()
660 hci_conn_failed(conn, HCI_ERROR_ADVERTISING_TIMEOUT); in le_conn_timeout()
665 hci_abort_conn(conn, HCI_ERROR_REMOTE_USER_TERM); in le_conn_timeout()
684 static void bis_list(struct hci_conn *conn, void *data) in bis_list() argument
689 if (bacmp(&conn->dst, BDADDR_ANY)) in bis_list()
692 if (d->big != conn->iso_qos.bcast.big || d->bis == BT_ISO_QOS_BIS_UNSET || in bis_list()
693 d->bis != conn->iso_qos.bcast.bis) in bis_list()
721 static int hci_le_terminate_big(struct hci_dev *hdev, struct hci_conn *conn) in hci_le_terminate_big() argument
726 bt_dev_dbg(hdev, "big 0x%2.2x bis 0x%2.2x", conn->iso_qos.bcast.big, in hci_le_terminate_big()
727 conn->iso_qos.bcast.bis); in hci_le_terminate_big()
733 d->big = conn->iso_qos.bcast.big; in hci_le_terminate_big()
734 d->bis = conn->iso_qos.bcast.bis; in hci_le_terminate_big()
735 d->big_term = test_and_clear_bit(HCI_CONN_BIG_CREATED, &conn->flags); in hci_le_terminate_big()
761 static void find_bis(struct hci_conn *conn, void *data) in find_bis() argument
766 if (d->big != conn->iso_qos.bcast.big) in find_bis()
772 static int hci_le_big_terminate(struct hci_dev *hdev, u8 big, struct hci_conn *conn) in hci_le_big_terminate() argument
777 bt_dev_dbg(hdev, "big 0x%2.2x sync_handle 0x%4.4x", big, conn->sync_handle); in hci_le_big_terminate()
784 d->sync_handle = conn->sync_handle; in hci_le_big_terminate()
786 if (test_and_clear_bit(HCI_CONN_PA_SYNC, &conn->flags)) { in hci_le_big_terminate()
796 if (test_and_clear_bit(HCI_CONN_BIG_SYNC, &conn->flags)) { in hci_le_big_terminate()
818 static void bis_cleanup(struct hci_conn *conn) in bis_cleanup() argument
820 struct hci_dev *hdev = conn->hdev; in bis_cleanup()
823 bt_dev_dbg(hdev, "conn %p", conn); in bis_cleanup()
825 if (conn->role == HCI_ROLE_MASTER) { in bis_cleanup()
826 if (!test_and_clear_bit(HCI_CONN_PER_ADV, &conn->flags)) in bis_cleanup()
832 bis = hci_conn_hash_lookup_big(hdev, conn->iso_qos.bcast.big); in bis_cleanup()
836 hci_le_terminate_big(hdev, conn); in bis_cleanup()
838 hci_le_big_terminate(hdev, conn->iso_qos.bcast.big, in bis_cleanup()
839 conn); in bis_cleanup()
858 static void find_cis(struct hci_conn *conn, void *data) in find_cis() argument
863 if (!bacmp(&conn->dst, BDADDR_ANY) || d->cig != conn->iso_qos.ucast.cig) in find_cis()
873 static void cis_cleanup(struct hci_conn *conn) in cis_cleanup() argument
875 struct hci_dev *hdev = conn->hdev; in cis_cleanup()
878 if (conn->iso_qos.ucast.cig == BT_ISO_QOS_CIG_UNSET) in cis_cleanup()
882 d.cig = conn->iso_qos.ucast.cig; in cis_cleanup()
893 hci_le_remove_cig(hdev, conn->iso_qos.ucast.cig); in cis_cleanup()
905 struct hci_conn *conn; in __hci_conn_add() local
935 conn = kzalloc(sizeof(*conn), GFP_KERNEL); in __hci_conn_add()
936 if (!conn) in __hci_conn_add()
939 bacpy(&conn->dst, dst); in __hci_conn_add()
940 bacpy(&conn->src, &hdev->bdaddr); in __hci_conn_add()
941 conn->handle = handle; in __hci_conn_add()
942 conn->hdev = hdev; in __hci_conn_add()
943 conn->type = type; in __hci_conn_add()
944 conn->role = role; in __hci_conn_add()
945 conn->mode = HCI_CM_ACTIVE; in __hci_conn_add()
946 conn->state = BT_OPEN; in __hci_conn_add()
947 conn->auth_type = HCI_AT_GENERAL_BONDING; in __hci_conn_add()
948 conn->io_capability = hdev->io_capability; in __hci_conn_add()
949 conn->remote_auth = 0xff; in __hci_conn_add()
950 conn->key_type = 0xff; in __hci_conn_add()
951 conn->rssi = HCI_RSSI_INVALID; in __hci_conn_add()
952 conn->tx_power = HCI_TX_POWER_INVALID; in __hci_conn_add()
953 conn->max_tx_power = HCI_TX_POWER_INVALID; in __hci_conn_add()
954 conn->sync_handle = HCI_SYNC_HANDLE_INVALID; in __hci_conn_add()
955 conn->sid = HCI_SID_INVALID; in __hci_conn_add()
957 set_bit(HCI_CONN_POWER_SAVE, &conn->flags); in __hci_conn_add()
958 conn->disc_timeout = HCI_DISCONN_TIMEOUT; in __hci_conn_add()
961 conn->auth_payload_timeout = DEFAULT_AUTH_PAYLOAD_TIMEOUT; in __hci_conn_add()
963 if (conn->role == HCI_ROLE_MASTER) in __hci_conn_add()
964 conn->out = true; in __hci_conn_add()
968 conn->pkt_type = hdev->pkt_type & ACL_PTYPE_MASK; in __hci_conn_add()
969 conn->mtu = hdev->acl_mtu; in __hci_conn_add()
972 /* conn->src should reflect the local identity address */ in __hci_conn_add()
973 hci_copy_identity_address(hdev, &conn->src, &conn->src_type); in __hci_conn_add()
974 conn->mtu = hdev->le_mtu ? hdev->le_mtu : hdev->acl_mtu; in __hci_conn_add()
977 /* conn->src should reflect the local identity address */ in __hci_conn_add()
978 hci_copy_identity_address(hdev, &conn->src, &conn->src_type); in __hci_conn_add()
982 conn->cleanup = bis_cleanup; in __hci_conn_add()
983 else if (conn->role == HCI_ROLE_MASTER) in __hci_conn_add()
984 conn->cleanup = cis_cleanup; in __hci_conn_add()
986 conn->mtu = hdev->iso_mtu ? hdev->iso_mtu : in __hci_conn_add()
991 conn->pkt_type = (hdev->esco_type & SCO_ESCO_MASK) | in __hci_conn_add()
994 conn->pkt_type = hdev->pkt_type & SCO_PTYPE_MASK; in __hci_conn_add()
996 conn->mtu = hdev->sco_mtu; in __hci_conn_add()
999 conn->pkt_type = hdev->esco_type & ~EDR_ESCO_MASK; in __hci_conn_add()
1000 conn->mtu = hdev->sco_mtu; in __hci_conn_add()
1004 skb_queue_head_init(&conn->data_q); in __hci_conn_add()
1006 INIT_LIST_HEAD(&conn->chan_list); in __hci_conn_add()
1007 INIT_LIST_HEAD(&conn->link_list); in __hci_conn_add()
1009 INIT_DELAYED_WORK(&conn->disc_work, hci_conn_timeout); in __hci_conn_add()
1010 INIT_DELAYED_WORK(&conn->auto_accept_work, hci_conn_auto_accept); in __hci_conn_add()
1011 INIT_DELAYED_WORK(&conn->idle_work, hci_conn_idle); in __hci_conn_add()
1012 INIT_DELAYED_WORK(&conn->le_conn_timeout, le_conn_timeout); in __hci_conn_add()
1014 atomic_set(&conn->refcnt, 0); in __hci_conn_add()
1018 hci_conn_hash_add(hdev, conn); in __hci_conn_add()
1024 if (conn->type != SCO_LINK && conn->type != ESCO_LINK) { in __hci_conn_add()
1029 hci_conn_init_sysfs(conn); in __hci_conn_add()
1031 return conn; in __hci_conn_add()
1057 static void hci_conn_cleanup_child(struct hci_conn *conn, u8 reason) in hci_conn_cleanup_child() argument
1062 /* Due to race, SCO/ISO conn might be not established yet at this point, in hci_conn_cleanup_child()
1066 switch (conn->type) { in hci_conn_cleanup_child()
1069 if (HCI_CONN_HANDLE_UNSET(conn->handle)) in hci_conn_cleanup_child()
1070 hci_conn_failed(conn, reason); in hci_conn_cleanup_child()
1073 if ((conn->state != BT_CONNECTED && in hci_conn_cleanup_child()
1074 !test_bit(HCI_CONN_CREATE_CIS, &conn->flags)) || in hci_conn_cleanup_child()
1075 test_bit(HCI_CONN_BIG_CREATED, &conn->flags)) in hci_conn_cleanup_child()
1076 hci_conn_failed(conn, reason); in hci_conn_cleanup_child()
1081 static void hci_conn_unlink(struct hci_conn *conn) in hci_conn_unlink() argument
1083 struct hci_dev *hdev = conn->hdev; in hci_conn_unlink()
1085 bt_dev_dbg(hdev, "hcon %p", conn); in hci_conn_unlink()
1087 if (!conn->parent) { in hci_conn_unlink()
1090 list_for_each_entry_safe(link, t, &conn->link_list, list) { in hci_conn_unlink()
1091 struct hci_conn *child = link->conn; in hci_conn_unlink()
1103 hci_conn_cleanup_child(child, conn->abort_reason); in hci_conn_unlink()
1109 if (!conn->link) in hci_conn_unlink()
1112 list_del_rcu(&conn->link->list); in hci_conn_unlink()
1115 hci_conn_drop(conn->parent); in hci_conn_unlink()
1116 hci_conn_put(conn->parent); in hci_conn_unlink()
1117 conn->parent = NULL; in hci_conn_unlink()
1119 kfree(conn->link); in hci_conn_unlink()
1120 conn->link = NULL; in hci_conn_unlink()
1123 void hci_conn_del(struct hci_conn *conn) in hci_conn_del() argument
1125 struct hci_dev *hdev = conn->hdev; in hci_conn_del()
1127 BT_DBG("%s hcon %p handle %d", hdev->name, conn, conn->handle); in hci_conn_del()
1129 hci_conn_unlink(conn); in hci_conn_del()
1131 disable_delayed_work_sync(&conn->disc_work); in hci_conn_del()
1132 disable_delayed_work_sync(&conn->auto_accept_work); in hci_conn_del()
1133 disable_delayed_work_sync(&conn->idle_work); in hci_conn_del()
1135 if (conn->type == ACL_LINK) { in hci_conn_del()
1137 hdev->acl_cnt += conn->sent; in hci_conn_del()
1138 } else if (conn->type == LE_LINK) { in hci_conn_del()
1139 cancel_delayed_work(&conn->le_conn_timeout); in hci_conn_del()
1142 hdev->le_cnt += conn->sent; in hci_conn_del()
1144 hdev->acl_cnt += conn->sent; in hci_conn_del()
1147 if (conn->type == ISO_LINK) { in hci_conn_del()
1149 hdev->iso_cnt += conn->sent; in hci_conn_del()
1151 hdev->le_cnt += conn->sent; in hci_conn_del()
1153 hdev->acl_cnt += conn->sent; in hci_conn_del()
1157 skb_queue_purge(&conn->data_q); in hci_conn_del()
1164 hci_conn_cleanup(conn); in hci_conn_del()
1167 hci_cmd_sync_dequeue(hdev, NULL, conn, NULL); in hci_conn_del()
1231 static void hci_le_conn_failed(struct hci_conn *conn, u8 status) in hci_le_conn_failed() argument
1233 struct hci_dev *hdev = conn->hdev; in hci_le_conn_failed()
1235 hci_connect_le_scan_cleanup(conn, status); in hci_le_conn_failed()
1244 void hci_conn_failed(struct hci_conn *conn, u8 status) in hci_conn_failed() argument
1246 struct hci_dev *hdev = conn->hdev; in hci_conn_failed()
1250 switch (conn->type) { in hci_conn_failed()
1252 hci_le_conn_failed(conn, status); in hci_conn_failed()
1255 mgmt_connect_failed(hdev, conn, status); in hci_conn_failed()
1259 /* In case of BIG/PA sync failed, clear conn flags so that in hci_conn_failed()
1262 test_and_clear_bit(HCI_CONN_BIG_SYNC_FAILED, &conn->flags); in hci_conn_failed()
1263 test_and_clear_bit(HCI_CONN_PA_SYNC_FAILED, &conn->flags); in hci_conn_failed()
1265 conn->state = BT_CLOSED; in hci_conn_failed()
1266 hci_connect_cfm(conn, status); in hci_conn_failed()
1267 hci_conn_del(conn); in hci_conn_failed()
1271 u8 hci_conn_set_handle(struct hci_conn *conn, u16 handle) in hci_conn_set_handle() argument
1273 struct hci_dev *hdev = conn->hdev; in hci_conn_set_handle()
1275 bt_dev_dbg(hdev, "hcon %p handle 0x%4.4x", conn, handle); in hci_conn_set_handle()
1277 if (conn->handle == handle) in hci_conn_set_handle()
1289 if (conn->abort_reason) in hci_conn_set_handle()
1290 return conn->abort_reason; in hci_conn_set_handle()
1292 if (HCI_CONN_HANDLE_UNSET(conn->handle)) in hci_conn_set_handle()
1293 ida_free(&hdev->unset_handle_ida, conn->handle); in hci_conn_set_handle()
1295 conn->handle = handle; in hci_conn_set_handle()
1304 struct hci_conn *conn; in hci_connect_le() local
1327 conn = hci_conn_hash_lookup_le(hdev, dst, dst_type); in hci_connect_le()
1328 if (conn && !test_bit(HCI_CONN_SCANNING, &conn->flags)) { in hci_connect_le()
1352 if (conn) { in hci_connect_le()
1353 bacpy(&conn->dst, dst); in hci_connect_le()
1355 conn = hci_conn_add_unset(hdev, LE_LINK, dst, role); in hci_connect_le()
1356 if (IS_ERR(conn)) in hci_connect_le()
1357 return conn; in hci_connect_le()
1358 hci_conn_hold(conn); in hci_connect_le()
1359 conn->pending_sec_level = sec_level; in hci_connect_le()
1362 conn->dst_type = dst_type; in hci_connect_le()
1363 conn->sec_level = BT_SECURITY_LOW; in hci_connect_le()
1364 conn->conn_timeout = conn_timeout; in hci_connect_le()
1365 conn->le_adv_phy = phy; in hci_connect_le()
1366 conn->le_adv_sec_phy = sec_phy; in hci_connect_le()
1368 err = hci_connect_le_sync(hdev, conn); in hci_connect_le()
1370 hci_conn_del(conn); in hci_connect_le()
1374 return conn; in hci_connect_le()
1379 struct hci_conn *conn; in is_connected() local
1381 conn = hci_conn_hash_lookup_le(hdev, addr, type); in is_connected()
1382 if (!conn) in is_connected()
1385 if (conn->state != BT_CONNECTED) in is_connected()
1431 struct hci_conn *conn; in qos_set_big() local
1438 conn = hci_conn_hash_lookup_big(hdev, big); in qos_set_big()
1439 if (!conn) in qos_set_big()
1455 struct hci_conn *conn; in qos_set_bis() local
1461 conn = hci_conn_hash_lookup_big(hdev, qos->bcast.big); in qos_set_bis()
1463 if (conn) { in qos_set_bis()
1467 qos->bcast.bis = conn->iso_qos.bcast.bis; in qos_set_bis()
1478 conn = hci_conn_hash_lookup_bis(hdev, BDADDR_ANY, bis); in qos_set_bis()
1479 if (!conn) in qos_set_bis()
1498 struct hci_conn *conn; in hci_add_bis() local
1517 conn = hci_conn_hash_lookup_per_adv_bis(hdev, dst, qos->bcast.big, in hci_add_bis()
1519 if (conn) in hci_add_bis()
1525 conn = hci_conn_hash_lookup_big(hdev, qos->bcast.big); in hci_add_bis()
1527 if (conn && (memcmp(qos, &conn->iso_qos, sizeof(*qos)) || in hci_add_bis()
1528 base_len != conn->le_per_adv_data_len || in hci_add_bis()
1529 memcmp(conn->le_per_adv_data, base, base_len))) in hci_add_bis()
1532 conn = hci_conn_add_unset(hdev, ISO_LINK, dst, HCI_ROLE_MASTER); in hci_add_bis()
1533 if (IS_ERR(conn)) in hci_add_bis()
1534 return conn; in hci_add_bis()
1536 conn->state = BT_CONNECT; in hci_add_bis()
1538 hci_conn_hold(conn); in hci_add_bis()
1539 return conn; in hci_add_bis()
1548 struct hci_conn *conn; in hci_connect_le_scan() local
1567 conn = hci_conn_hash_lookup_le(hdev, dst, dst_type); in hci_connect_le_scan()
1568 if (conn) { in hci_connect_le_scan()
1569 if (conn->pending_sec_level < sec_level) in hci_connect_le_scan()
1570 conn->pending_sec_level = sec_level; in hci_connect_le_scan()
1576 conn = hci_conn_add_unset(hdev, LE_LINK, dst, HCI_ROLE_MASTER); in hci_connect_le_scan()
1577 if (IS_ERR(conn)) in hci_connect_le_scan()
1578 return conn; in hci_connect_le_scan()
1581 hci_conn_del(conn); in hci_connect_le_scan()
1585 conn->state = BT_CONNECT; in hci_connect_le_scan()
1586 set_bit(HCI_CONN_SCANNING, &conn->flags); in hci_connect_le_scan()
1587 conn->dst_type = dst_type; in hci_connect_le_scan()
1588 conn->sec_level = BT_SECURITY_LOW; in hci_connect_le_scan()
1589 conn->pending_sec_level = sec_level; in hci_connect_le_scan()
1590 conn->conn_timeout = conn_timeout; in hci_connect_le_scan()
1591 conn->conn_reason = conn_reason; in hci_connect_le_scan()
1596 hci_conn_hold(conn); in hci_connect_le_scan()
1597 return conn; in hci_connect_le_scan()
1651 struct hci_conn *conn) in hci_conn_link() argument
1656 bt_dev_dbg(hdev, "parent %p hcon %p", parent, conn); in hci_conn_link()
1658 if (conn->link) in hci_conn_link()
1659 return conn->link; in hci_conn_link()
1661 if (conn->parent) in hci_conn_link()
1668 link->conn = hci_conn_hold(conn); in hci_conn_link()
1669 conn->link = link; in hci_conn_link()
1670 conn->parent = hci_conn_get(parent); in hci_conn_link()
1727 static int hci_le_create_big(struct hci_conn *conn, struct bt_iso_qos *qos) in hci_le_create_big() argument
1729 struct hci_dev *hdev = conn->hdev; in hci_le_create_big()
1763 struct hci_conn *conn; in set_cig_params_sync() local
1768 conn = hci_conn_hash_lookup_cig(hdev, cig_id); in set_cig_params_sync()
1769 if (!conn) in set_cig_params_sync()
1772 qos = &conn->iso_qos; in set_cig_params_sync()
1790 conn = hci_conn_hash_lookup_cis(hdev, NULL, 0, cig_id, cis_id); in set_cig_params_sync()
1791 if (!conn) in set_cig_params_sync()
1794 qos = &conn->iso_qos; in set_cig_params_sync()
1798 cis->c_sdu = cpu_to_le16(conn->iso_qos.ucast.out.sdu); in set_cig_params_sync()
1799 cis->p_sdu = cpu_to_le16(conn->iso_qos.ucast.in.sdu); in set_cig_params_sync()
1817 static bool hci_le_set_cig_params(struct hci_conn *conn, struct bt_iso_qos *qos) in hci_le_set_cig_params() argument
1819 struct hci_dev *hdev = conn->hdev; in hci_le_set_cig_params()
1942 bool hci_iso_setup_path(struct hci_conn *conn) in hci_iso_setup_path() argument
1944 struct hci_dev *hdev = conn->hdev; in hci_iso_setup_path()
1949 if (conn->iso_qos.ucast.out.sdu) { in hci_iso_setup_path()
1950 cmd.handle = cpu_to_le16(conn->handle); in hci_iso_setup_path()
1960 if (conn->iso_qos.ucast.in.sdu) { in hci_iso_setup_path()
1961 cmd.handle = cpu_to_le16(conn->handle); in hci_iso_setup_path()
1974 int hci_conn_check_create_cis(struct hci_conn *conn) in hci_conn_check_create_cis() argument
1976 if (conn->type != ISO_LINK || !bacmp(&conn->dst, BDADDR_ANY)) in hci_conn_check_create_cis()
1979 if (!conn->parent || conn->parent->state != BT_CONNECTED || in hci_conn_check_create_cis()
1980 conn->state != BT_CONNECT || HCI_CONN_HANDLE_UNSET(conn->handle)) in hci_conn_check_create_cis()
1993 struct hci_conn *conn; in hci_le_create_cis_pending() local
1998 list_for_each_entry_rcu(conn, &hdev->conn_hash.list, list) { in hci_le_create_cis_pending()
1999 if (test_bit(HCI_CONN_CREATE_CIS, &conn->flags)) { in hci_le_create_cis_pending()
2004 if (!hci_conn_check_create_cis(conn)) in hci_le_create_cis_pending()
2017 static void hci_iso_qos_setup(struct hci_dev *hdev, struct hci_conn *conn, in hci_iso_qos_setup() argument
2022 qos->sdu = conn->mtu; in hci_iso_qos_setup()
2031 qos->interval = conn->le_conn_interval * 1250; in hci_iso_qos_setup()
2035 qos->latency = conn->le_conn_latency; in hci_iso_qos_setup()
2040 struct hci_conn *conn = data; in create_big_sync() local
2041 struct bt_iso_qos *qos = &conn->iso_qos; in create_big_sync()
2055 err = hci_start_per_adv_sync(hdev, qos->bcast.bis, conn->le_per_adv_data_len, in create_big_sync()
2056 conn->le_per_adv_data, flags, interval, in create_big_sync()
2061 return hci_le_create_big(conn, &conn->iso_qos); in create_big_sync()
2072 static bool hci_conn_check_create_pa_sync(struct hci_conn *conn) in hci_conn_check_create_pa_sync() argument
2074 if (conn->type != ISO_LINK || conn->sid == HCI_SID_INVALID) in hci_conn_check_create_pa_sync()
2083 struct hci_conn *conn; in create_pa_sync() local
2102 list_for_each_entry_rcu(conn, &hdev->conn_hash.list, list) { in create_pa_sync()
2103 if (test_bit(HCI_CONN_CREATE_PA_SYNC, &conn->flags)) in create_pa_sync()
2107 list_for_each_entry_rcu(conn, &hdev->conn_hash.list, list) { in create_pa_sync()
2108 if (hci_conn_check_create_pa_sync(conn)) { in create_pa_sync()
2109 struct bt_iso_qos *qos = &conn->iso_qos; in create_pa_sync()
2112 cp.sid = conn->sid; in create_pa_sync()
2113 cp.addr_type = conn->dst_type; in create_pa_sync()
2114 bacpy(&cp.addr, &conn->dst); in create_pa_sync()
2130 set_bit(HCI_CONN_CREATE_PA_SYNC, &conn->flags); in create_pa_sync()
2139 clear_bit(HCI_CONN_CREATE_PA_SYNC, &conn->flags); in create_pa_sync()
2157 struct hci_conn *conn; in hci_pa_create_sync() local
2159 conn = hci_conn_add_unset(hdev, ISO_LINK, dst, HCI_ROLE_SLAVE); in hci_pa_create_sync()
2160 if (IS_ERR(conn)) in hci_pa_create_sync()
2161 return conn; in hci_pa_create_sync()
2163 conn->iso_qos = *qos; in hci_pa_create_sync()
2164 conn->dst_type = dst_type; in hci_pa_create_sync()
2165 conn->sid = sid; in hci_pa_create_sync()
2166 conn->state = BT_LISTEN; in hci_pa_create_sync()
2168 hci_conn_hold(conn); in hci_pa_create_sync()
2172 return conn; in hci_pa_create_sync()
2175 static bool hci_conn_check_create_big_sync(struct hci_conn *conn) in hci_conn_check_create_big_sync() argument
2177 if (!conn->num_bis) in hci_conn_check_create_big_sync()
2194 struct hci_conn *conn; in big_create_sync() local
2213 list_for_each_entry_rcu(conn, &hdev->conn_hash.list, list) { in big_create_sync()
2214 if (test_bit(HCI_CONN_CREATE_BIG_SYNC, &conn->flags)) in big_create_sync()
2218 list_for_each_entry_rcu(conn, &hdev->conn_hash.list, list) { in big_create_sync()
2219 if (hci_conn_check_create_big_sync(conn)) { in big_create_sync()
2220 struct bt_iso_qos *qos = &conn->iso_qos; in big_create_sync()
2222 set_bit(HCI_CONN_CREATE_BIG_SYNC, &conn->flags); in big_create_sync()
2225 pdu->sync_handle = cpu_to_le16(conn->sync_handle); in big_create_sync()
2231 pdu->num_bis = conn->num_bis; in big_create_sync()
2232 memcpy(pdu->bis, conn->bis, conn->num_bis); in big_create_sync()
2281 struct hci_conn *conn = data; in create_big_complete() local
2283 bt_dev_dbg(hdev, "conn %p", conn); in create_big_complete()
2287 hci_connect_cfm(conn, err); in create_big_complete()
2288 hci_conn_del(conn); in create_big_complete()
2296 struct hci_conn *conn; in hci_bind_bis() local
2302 conn = hci_conn_hash_lookup_big_state(hdev, qos->bcast.big, BT_OPEN); in hci_bind_bis()
2303 if (conn) { in hci_bind_bis()
2304 memcpy(qos, &conn->iso_qos, sizeof(*qos)); in hci_bind_bis()
2305 conn->state = BT_CONNECTED; in hci_bind_bis()
2306 return conn; in hci_bind_bis()
2314 conn = hci_add_bis(hdev, dst, qos, base_len, eir); in hci_bind_bis()
2315 if (IS_ERR(conn)) in hci_bind_bis()
2316 return conn; in hci_bind_bis()
2319 conn->le_tx_phy = qos->bcast.out.phy; in hci_bind_bis()
2320 conn->le_tx_phy = qos->bcast.out.phy; in hci_bind_bis()
2324 memcpy(conn->le_per_adv_data, eir, sizeof(eir)); in hci_bind_bis()
2325 conn->le_per_adv_data_len = base_len; in hci_bind_bis()
2328 hci_iso_qos_setup(hdev, conn, &qos->bcast.out, in hci_bind_bis()
2329 conn->le_tx_phy ? conn->le_tx_phy : in hci_bind_bis()
2332 conn->iso_qos = *qos; in hci_bind_bis()
2333 conn->state = BT_BOUND; in hci_bind_bis()
2337 conn->iso_qos.bcast.big); in hci_bind_bis()
2338 if (parent && parent != conn) { in hci_bind_bis()
2339 link = hci_conn_link(parent, conn); in hci_bind_bis()
2340 hci_conn_drop(conn); in hci_bind_bis()
2345 return conn; in hci_bind_bis()
2348 static void bis_mark_per_adv(struct hci_conn *conn, void *data) in bis_mark_per_adv() argument
2353 if (bacmp(&conn->dst, BDADDR_ANY)) in bis_mark_per_adv()
2356 if (d->big != conn->iso_qos.bcast.big || in bis_mark_per_adv()
2358 d->bis != conn->iso_qos.bcast.bis) in bis_mark_per_adv()
2361 set_bit(HCI_CONN_PER_ADV, &conn->flags); in bis_mark_per_adv()
2368 struct hci_conn *conn; in hci_connect_bis() local
2372 conn = hci_bind_bis(hdev, dst, qos, base_len, base); in hci_connect_bis()
2373 if (IS_ERR(conn)) in hci_connect_bis()
2374 return conn; in hci_connect_bis()
2376 if (conn->state == BT_CONNECTED) in hci_connect_bis()
2377 return conn; in hci_connect_bis()
2390 err = hci_cmd_sync_queue(hdev, create_big_sync, conn, in hci_connect_bis()
2393 hci_conn_drop(conn); in hci_connect_bis()
2397 return conn; in hci_connect_bis()
2446 int hci_conn_check_link_mode(struct hci_conn *conn) in hci_conn_check_link_mode() argument
2448 BT_DBG("hcon %p", conn); in hci_conn_check_link_mode()
2454 if (hci_dev_test_flag(conn->hdev, HCI_SC_ONLY)) { in hci_conn_check_link_mode()
2455 if (!hci_conn_sc_enabled(conn) || in hci_conn_check_link_mode()
2456 !test_bit(HCI_CONN_AES_CCM, &conn->flags) || in hci_conn_check_link_mode()
2457 conn->key_type != HCI_LK_AUTH_COMBINATION_P256) in hci_conn_check_link_mode()
2471 if (conn->sec_level == BT_SECURITY_FIPS && in hci_conn_check_link_mode()
2472 !test_bit(HCI_CONN_AES_CCM, &conn->flags)) { in hci_conn_check_link_mode()
2473 bt_dev_err(conn->hdev, in hci_conn_check_link_mode()
2478 if (hci_conn_ssp_enabled(conn) && in hci_conn_check_link_mode()
2479 !test_bit(HCI_CONN_ENCRYPT, &conn->flags)) in hci_conn_check_link_mode()
2486 static int hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type) in hci_conn_auth() argument
2488 BT_DBG("hcon %p", conn); in hci_conn_auth()
2490 if (conn->pending_sec_level > sec_level) in hci_conn_auth()
2491 sec_level = conn->pending_sec_level; in hci_conn_auth()
2493 if (sec_level > conn->sec_level) in hci_conn_auth()
2494 conn->pending_sec_level = sec_level; in hci_conn_auth()
2495 else if (test_bit(HCI_CONN_AUTH, &conn->flags)) in hci_conn_auth()
2499 auth_type |= (conn->auth_type & 0x01); in hci_conn_auth()
2501 conn->auth_type = auth_type; in hci_conn_auth()
2503 if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->flags)) { in hci_conn_auth()
2506 cp.handle = cpu_to_le16(conn->handle); in hci_conn_auth()
2507 hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED, in hci_conn_auth()
2513 if (!test_bit(HCI_CONN_ENCRYPT, &conn->flags)) in hci_conn_auth()
2514 set_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags); in hci_conn_auth()
2521 static void hci_conn_encrypt(struct hci_conn *conn) in hci_conn_encrypt() argument
2523 BT_DBG("hcon %p", conn); in hci_conn_encrypt()
2525 if (!test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags)) { in hci_conn_encrypt()
2527 cp.handle = cpu_to_le16(conn->handle); in hci_conn_encrypt()
2529 hci_send_cmd(conn->hdev, HCI_OP_SET_CONN_ENCRYPT, sizeof(cp), in hci_conn_encrypt()
2535 int hci_conn_security(struct hci_conn *conn, __u8 sec_level, __u8 auth_type, in hci_conn_security() argument
2538 BT_DBG("hcon %p", conn); in hci_conn_security()
2540 if (conn->type == LE_LINK) in hci_conn_security()
2541 return smp_conn_security(conn, sec_level); in hci_conn_security()
2549 if (sec_level == BT_SECURITY_LOW && !hci_conn_ssp_enabled(conn)) in hci_conn_security()
2553 if (!test_bit(HCI_CONN_AUTH, &conn->flags)) in hci_conn_security()
2556 switch (conn->key_type) { in hci_conn_security()
2585 if (sec_level <= BT_SECURITY_MEDIUM || conn->pin_length == 16) in hci_conn_security()
2593 if (test_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags)) in hci_conn_security()
2597 set_bit(HCI_CONN_AUTH_INITIATOR, &conn->flags); in hci_conn_security()
2599 if (!hci_conn_auth(conn, sec_level, auth_type)) in hci_conn_security()
2603 if (test_bit(HCI_CONN_ENCRYPT, &conn->flags)) { in hci_conn_security()
2607 if (!conn->enc_key_size) in hci_conn_security()
2614 hci_conn_encrypt(conn); in hci_conn_security()
2620 int hci_conn_check_secure(struct hci_conn *conn, __u8 sec_level) in hci_conn_check_secure() argument
2622 BT_DBG("hcon %p", conn); in hci_conn_check_secure()
2629 if (conn->sec_level == BT_SECURITY_HIGH || in hci_conn_check_secure()
2630 conn->sec_level == BT_SECURITY_FIPS) in hci_conn_check_secure()
2639 int hci_conn_switch_role(struct hci_conn *conn, __u8 role) in hci_conn_switch_role() argument
2641 BT_DBG("hcon %p", conn); in hci_conn_switch_role()
2643 if (role == conn->role) in hci_conn_switch_role()
2646 if (!test_and_set_bit(HCI_CONN_RSWITCH_PEND, &conn->flags)) { in hci_conn_switch_role()
2648 bacpy(&cp.bdaddr, &conn->dst); in hci_conn_switch_role()
2650 hci_send_cmd(conn->hdev, HCI_OP_SWITCH_ROLE, sizeof(cp), &cp); in hci_conn_switch_role()
2658 void hci_conn_enter_active_mode(struct hci_conn *conn, __u8 force_active) in hci_conn_enter_active_mode() argument
2660 struct hci_dev *hdev = conn->hdev; in hci_conn_enter_active_mode()
2662 BT_DBG("hcon %p mode %d", conn, conn->mode); in hci_conn_enter_active_mode()
2664 if (conn->mode != HCI_CM_SNIFF) in hci_conn_enter_active_mode()
2667 if (!test_bit(HCI_CONN_POWER_SAVE, &conn->flags) && !force_active) in hci_conn_enter_active_mode()
2670 if (!test_and_set_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->flags)) { in hci_conn_enter_active_mode()
2672 cp.handle = cpu_to_le16(conn->handle); in hci_conn_enter_active_mode()
2678 queue_delayed_work(hdev->workqueue, &conn->idle_work, in hci_conn_enter_active_mode()
2686 struct hci_conn *conn; in hci_conn_hash_flush() local
2694 while ((conn = list_first_entry_or_null(head, in hci_conn_hash_flush()
2697 conn->state = BT_CLOSED; in hci_conn_hash_flush()
2698 hci_disconn_cfm(conn, HCI_ERROR_LOCAL_HOST_TERM); in hci_conn_hash_flush()
2699 hci_conn_del(conn); in hci_conn_hash_flush()
2703 static u32 get_link_mode(struct hci_conn *conn) in get_link_mode() argument
2707 if (conn->role == HCI_ROLE_MASTER) in get_link_mode()
2710 if (test_bit(HCI_CONN_ENCRYPT, &conn->flags)) in get_link_mode()
2713 if (test_bit(HCI_CONN_AUTH, &conn->flags)) in get_link_mode()
2716 if (test_bit(HCI_CONN_SECURE, &conn->flags)) in get_link_mode()
2719 if (test_bit(HCI_CONN_FIPS, &conn->flags)) in get_link_mode()
2782 struct hci_conn *conn; in hci_get_conn_info() local
2789 conn = hci_conn_hash_lookup_ba(hdev, req.type, &req.bdaddr); in hci_get_conn_info()
2790 if (conn) { in hci_get_conn_info()
2791 bacpy(&ci.bdaddr, &conn->dst); in hci_get_conn_info()
2792 ci.handle = conn->handle; in hci_get_conn_info()
2793 ci.type = conn->type; in hci_get_conn_info()
2794 ci.out = conn->out; in hci_get_conn_info()
2795 ci.state = conn->state; in hci_get_conn_info()
2796 ci.link_mode = get_link_mode(conn); in hci_get_conn_info()
2800 if (!conn) in hci_get_conn_info()
2809 struct hci_conn *conn; in hci_get_auth_info() local
2815 conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &req.bdaddr); in hci_get_auth_info()
2816 if (conn) in hci_get_auth_info()
2817 req.type = conn->auth_type; in hci_get_auth_info()
2820 if (!conn) in hci_get_auth_info()
2826 struct hci_chan *hci_chan_create(struct hci_conn *conn) in hci_chan_create() argument
2828 struct hci_dev *hdev = conn->hdev; in hci_chan_create()
2831 BT_DBG("%s hcon %p", hdev->name, conn); in hci_chan_create()
2833 if (test_bit(HCI_CONN_DROP, &conn->flags)) { in hci_chan_create()
2842 chan->conn = hci_conn_get(conn); in hci_chan_create()
2846 list_add_rcu(&chan->list, &conn->chan_list); in hci_chan_create()
2853 struct hci_conn *conn = chan->conn; in hci_chan_del() local
2854 struct hci_dev *hdev = conn->hdev; in hci_chan_del()
2856 BT_DBG("%s hcon %p chan %p", hdev->name, conn, chan); in hci_chan_del()
2863 set_bit(HCI_CONN_DROP, &conn->flags); in hci_chan_del()
2865 hci_conn_put(conn); in hci_chan_del()
2871 void hci_chan_list_flush(struct hci_conn *conn) in hci_chan_list_flush() argument
2875 BT_DBG("hcon %p", conn); in hci_chan_list_flush()
2877 list_for_each_entry_safe(chan, n, &conn->chan_list, list) in hci_chan_list_flush()
2913 u32 hci_conn_get_phy(struct hci_conn *conn) in hci_conn_get_phy() argument
2921 switch (conn->type) { in hci_conn_get_phy()
2936 if (conn->pkt_type & (HCI_DM3 | HCI_DH3)) in hci_conn_get_phy()
2939 if (conn->pkt_type & (HCI_DM5 | HCI_DH5)) in hci_conn_get_phy()
2945 if (!(conn->pkt_type & HCI_2DH1)) in hci_conn_get_phy()
2948 if (!(conn->pkt_type & HCI_2DH3)) in hci_conn_get_phy()
2951 if (!(conn->pkt_type & HCI_2DH5)) in hci_conn_get_phy()
2957 if (!(conn->pkt_type & HCI_3DH1)) in hci_conn_get_phy()
2960 if (!(conn->pkt_type & HCI_3DH3)) in hci_conn_get_phy()
2963 if (!(conn->pkt_type & HCI_3DH5)) in hci_conn_get_phy()
2972 if (!(conn->pkt_type & (ESCO_EV4 | ESCO_EV5))) in hci_conn_get_phy()
2976 if (!(conn->pkt_type & ESCO_2EV3)) in hci_conn_get_phy()
2979 if (!(conn->pkt_type & ESCO_2EV5)) in hci_conn_get_phy()
2983 if (!(conn->pkt_type & ESCO_3EV3)) in hci_conn_get_phy()
2986 if (!(conn->pkt_type & ESCO_3EV5)) in hci_conn_get_phy()
2992 if (conn->le_tx_phy & HCI_LE_SET_PHY_1M) in hci_conn_get_phy()
2995 if (conn->le_rx_phy & HCI_LE_SET_PHY_1M) in hci_conn_get_phy()
2998 if (conn->le_tx_phy & HCI_LE_SET_PHY_2M) in hci_conn_get_phy()
3001 if (conn->le_rx_phy & HCI_LE_SET_PHY_2M) in hci_conn_get_phy()
3004 if (conn->le_tx_phy & HCI_LE_SET_PHY_CODED) in hci_conn_get_phy()
3007 if (conn->le_rx_phy & HCI_LE_SET_PHY_CODED) in hci_conn_get_phy()
3018 struct hci_conn *conn = data; in abort_conn_sync() local
3020 if (!hci_conn_valid(hdev, conn)) in abort_conn_sync()
3023 return hci_abort_conn_sync(hdev, conn, conn->abort_reason); in abort_conn_sync()
3026 int hci_abort_conn(struct hci_conn *conn, u8 reason) in hci_abort_conn() argument
3028 struct hci_dev *hdev = conn->hdev; in hci_abort_conn()
3033 if (conn->abort_reason) in hci_abort_conn()
3036 bt_dev_dbg(hdev, "handle 0x%2.2x reason 0x%2.2x", conn->handle, reason); in hci_abort_conn()
3038 conn->abort_reason = reason; in hci_abort_conn()
3047 if (conn->state == BT_CONNECT && hdev->req_status == HCI_REQ_PEND) { in hci_abort_conn()
3057 } else if (!hci_cancel_connect_sync(hdev, conn)) { in hci_abort_conn()
3065 return hci_cmd_sync_run_once(hdev, abort_conn_sync, conn, NULL); in hci_abort_conn()