Lines Matching refs:hdev
64 hci_send_cmd(conn->hdev, HCI_OP_LE_CREATE_CONN_CANCEL, 0, NULL); in hci_le_create_connection_cancel()
69 struct hci_dev *hdev = conn->hdev; in hci_acl_create_connection() local
81 conn->link_policy = hdev->link_policy; in hci_acl_create_connection()
87 ie = hci_inquiry_cache_lookup(hdev, &conn->dst); in hci_acl_create_connection()
102 if (lmp_rswitch_capable(hdev) && !(hdev->link_mode & HCI_LM_MASTER)) in hci_acl_create_connection()
107 hci_send_cmd(hdev, HCI_OP_CREATE_CONN, sizeof(cp), &cp); in hci_acl_create_connection()
116 if (conn->hdev->hci_ver < BLUETOOTH_VER_1_2) in hci_acl_create_connection_cancel()
120 hci_send_cmd(conn->hdev, HCI_OP_CREATE_CONN_CANCEL, sizeof(cp), &cp); in hci_acl_create_connection_cancel()
130 hci_send_cmd(conn->hdev, HCI_OP_REJECT_SYNC_CONN_REQ, sizeof(cp), &cp); in hci_reject_sco()
145 struct hci_dev *hdev = conn->hdev; in hci_disconnect() local
149 hci_send_cmd(hdev, HCI_OP_READ_CLOCK_OFFSET, sizeof(clkoff_cp), in hci_disconnect()
157 return hci_send_cmd(conn->hdev, HCI_OP_DISCONNECT, sizeof(cp), &cp); in hci_disconnect()
170 hci_send_cmd(conn->hdev, HCI_OP_DISCONN_PHY_LINK, in hci_amp_disconn()
176 struct hci_dev *hdev = conn->hdev; in hci_add_sco() local
189 hci_send_cmd(hdev, HCI_OP_ADD_SCO, sizeof(cp), &cp); in hci_add_sco()
194 struct hci_dev *hdev = conn->hdev; in hci_setup_sync() local
236 if (hci_send_cmd(hdev, HCI_OP_SETUP_SYNC_CONN, sizeof(cp), &cp) < 0) in hci_setup_sync()
245 struct hci_dev *hdev = conn->hdev; in hci_le_conn_update() local
249 hci_dev_lock(hdev); in hci_le_conn_update()
251 params = hci_conn_params_lookup(hdev, &conn->dst, conn->dst_type); in hci_le_conn_update()
259 hci_dev_unlock(hdev); in hci_le_conn_update()
270 hci_send_cmd(hdev, HCI_OP_LE_CONN_UPDATE, sizeof(cp), &cp); in hci_le_conn_update()
281 struct hci_dev *hdev = conn->hdev; in hci_le_start_enc() local
293 hci_send_cmd(hdev, HCI_OP_LE_START_ENC, sizeof(cp), &cp); in hci_le_start_enc()
307 if (lmp_esco_capable(conn->hdev)) in hci_sco_setup()
369 struct hci_dev *hdev = conn->hdev; in hci_conn_idle() local
373 if (!lmp_sniff_capable(hdev) || !lmp_sniff_capable(conn)) in hci_conn_idle()
379 if (lmp_sniffsubr_capable(hdev) && lmp_sniffsubr_capable(conn)) { in hci_conn_idle()
385 hci_send_cmd(hdev, HCI_OP_SNIFF_SUBRATE, sizeof(cp), &cp); in hci_conn_idle()
391 cp.max_interval = cpu_to_le16(hdev->sniff_max_interval); in hci_conn_idle()
392 cp.min_interval = cpu_to_le16(hdev->sniff_min_interval); in hci_conn_idle()
395 hci_send_cmd(hdev, HCI_OP_SNIFF_MODE, sizeof(cp), &cp); in hci_conn_idle()
404 hci_send_cmd(conn->hdev, HCI_OP_USER_CONFIRM_REPLY, sizeof(conn->dst), in hci_conn_auto_accept()
412 struct hci_dev *hdev = conn->hdev; in le_conn_timeout() local
423 hci_send_cmd(hdev, HCI_OP_LE_SET_ADV_ENABLE, sizeof(enable), in le_conn_timeout()
432 struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst, in hci_conn_add() argument
437 BT_DBG("%s dst %pMR", hdev->name, dst); in hci_conn_add()
444 bacpy(&conn->src, &hdev->bdaddr); in hci_conn_add()
445 conn->hdev = hdev; in hci_conn_add()
451 conn->io_capability = hdev->io_capability; in hci_conn_add()
466 conn->pkt_type = hdev->pkt_type & ACL_PTYPE_MASK; in hci_conn_add()
470 hci_copy_identity_address(hdev, &conn->src, &conn->src_type); in hci_conn_add()
473 if (lmp_esco_capable(hdev)) in hci_conn_add()
474 conn->pkt_type = (hdev->esco_type & SCO_ESCO_MASK) | in hci_conn_add()
475 (hdev->esco_type & EDR_ESCO_MASK); in hci_conn_add()
477 conn->pkt_type = hdev->pkt_type & SCO_PTYPE_MASK; in hci_conn_add()
480 conn->pkt_type = hdev->esco_type & ~EDR_ESCO_MASK; in hci_conn_add()
495 hci_dev_hold(hdev); in hci_conn_add()
497 hci_conn_hash_add(hdev, conn); in hci_conn_add()
498 if (hdev->notify) in hci_conn_add()
499 hdev->notify(hdev, HCI_NOTIFY_CONN_ADD); in hci_conn_add()
508 struct hci_dev *hdev = conn->hdev; in hci_conn_del() local
510 BT_DBG("%s hcon %p handle %d", hdev->name, conn, conn->handle); in hci_conn_del()
522 hdev->acl_cnt += conn->sent; in hci_conn_del()
526 if (hdev->le_pkts) in hci_conn_del()
527 hdev->le_cnt += conn->sent; in hci_conn_del()
529 hdev->acl_cnt += conn->sent; in hci_conn_del()
543 hci_conn_hash_del(hdev, conn); in hci_conn_del()
544 if (hdev->notify) in hci_conn_del()
545 hdev->notify(hdev, HCI_NOTIFY_CONN_DEL); in hci_conn_del()
554 hci_conn_params_del(conn->hdev, &conn->dst, conn->dst_type); in hci_conn_del()
556 hci_dev_put(hdev); in hci_conn_del()
566 struct hci_dev *hdev = NULL, *d; in hci_get_route() local
585 hdev = d; break; in hci_get_route()
589 hdev = d; break; in hci_get_route()
594 if (hdev) in hci_get_route()
595 hdev = hci_dev_hold(hdev); in hci_get_route()
598 return hdev; in hci_get_route()
605 struct hci_dev *hdev = conn->hdev; in hci_le_conn_failed() local
608 params = hci_pend_le_action_lookup(&hdev->pend_le_conns, &conn->dst, in hci_le_conn_failed()
618 mgmt_connect_failed(hdev, &conn->dst, conn->type, conn->dst_type, in hci_le_conn_failed()
628 hci_update_background_scan(hdev); in hci_le_conn_failed()
633 mgmt_reenable_advertising(hdev); in hci_le_conn_failed()
636 static void create_le_conn_complete(struct hci_dev *hdev, u8 status, u16 opcode) in create_le_conn_complete() argument
646 hci_dev_lock(hdev); in create_le_conn_complete()
648 conn = hci_conn_hash_lookup_state(hdev, LE_LINK, BT_CONNECT); in create_le_conn_complete()
655 hci_dev_unlock(hdev); in create_le_conn_complete()
662 struct hci_dev *hdev = conn->hdev; in hci_req_add_le_create_conn() local
673 cp.scan_interval = cpu_to_le16(hdev->le_scan_interval); in hci_req_add_le_create_conn()
674 cp.scan_window = cpu_to_le16(hdev->le_scan_window); in hci_req_add_le_create_conn()
693 struct hci_dev *hdev = req->hdev; in hci_req_directed_advertising() local
703 hci_dev_clear_flag(hdev, HCI_LE_ADV); in hci_req_directed_advertising()
716 cp.channel_map = hdev->le_adv_channel_map; in hci_req_directed_advertising()
726 struct hci_conn *hci_connect_le(struct hci_dev *hdev, bdaddr_t *dst, in hci_connect_le() argument
737 if (!hci_dev_test_flag(hdev, HCI_LE_ENABLED)) { in hci_connect_le()
738 if (lmp_le_capable(hdev)) in hci_connect_le()
753 conn = hci_conn_hash_lookup_ba(hdev, LE_LINK, dst); in hci_connect_le()
762 conn = hci_conn_hash_lookup_state(hdev, LE_LINK, BT_CONNECT); in hci_connect_le()
779 irk = hci_find_irk_by_addr(hdev, dst, dst_type); in hci_connect_le()
785 conn = hci_conn_add(hdev, LE_LINK, dst, role); in hci_connect_le()
794 hci_req_init(&req, hdev); in hci_connect_le()
802 if (hci_dev_test_flag(hdev, HCI_LE_ADV)) { in hci_connect_le()
813 if (hci_dev_test_flag(hdev, HCI_LE_SCAN) && in hci_connect_le()
814 hdev->le_scan_type == LE_SCAN_ACTIVE) { in hci_connect_le()
824 params = hci_conn_params_lookup(hdev, &conn->dst, conn->dst_type); in hci_connect_le()
831 conn->le_conn_min_interval = hdev->le_conn_min_interval; in hci_connect_le()
832 conn->le_conn_max_interval = hdev->le_conn_max_interval; in hci_connect_le()
833 conn->le_conn_latency = hdev->le_conn_latency; in hci_connect_le()
834 conn->le_supv_timeout = hdev->le_supv_timeout; in hci_connect_le()
843 if (hci_dev_test_flag(hdev, HCI_LE_SCAN)) { in hci_connect_le()
845 hci_dev_set_flag(hdev, HCI_LE_SCAN_INTERRUPTED); in hci_connect_le()
862 struct hci_conn *hci_connect_acl(struct hci_dev *hdev, bdaddr_t *dst, in hci_connect_acl() argument
867 if (!hci_dev_test_flag(hdev, HCI_BREDR_ENABLED)) { in hci_connect_acl()
868 if (lmp_bredr_capable(hdev)) in hci_connect_acl()
874 acl = hci_conn_hash_lookup_ba(hdev, ACL_LINK, dst); in hci_connect_acl()
876 acl = hci_conn_add(hdev, ACL_LINK, dst, HCI_ROLE_MASTER); in hci_connect_acl()
893 struct hci_conn *hci_connect_sco(struct hci_dev *hdev, int type, bdaddr_t *dst, in hci_connect_sco() argument
899 acl = hci_connect_acl(hdev, dst, BT_SECURITY_LOW, HCI_AT_NO_BONDING); in hci_connect_sco()
903 sco = hci_conn_hash_lookup_ba(hdev, type, dst); in hci_connect_sco()
905 sco = hci_conn_add(hdev, type, dst, HCI_ROLE_MASTER); in hci_connect_sco()
945 if (hci_dev_test_flag(conn->hdev, HCI_SC_ONLY)) { in hci_conn_check_link_mode()
981 hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED, in hci_conn_auth()
1005 hci_send_cmd(conn->hdev, HCI_OP_SET_CONN_ENCRYPT, sizeof(cp), in hci_conn_encrypt()
1111 hci_send_cmd(conn->hdev, HCI_OP_SWITCH_ROLE, sizeof(cp), &cp); in hci_conn_switch_role()
1121 struct hci_dev *hdev = conn->hdev; in hci_conn_enter_active_mode() local
1134 hci_send_cmd(hdev, HCI_OP_EXIT_SNIFF_MODE, sizeof(cp), &cp); in hci_conn_enter_active_mode()
1138 if (hdev->idle_timeout > 0) in hci_conn_enter_active_mode()
1139 queue_delayed_work(hdev->workqueue, &conn->idle_work, in hci_conn_enter_active_mode()
1140 msecs_to_jiffies(hdev->idle_timeout)); in hci_conn_enter_active_mode()
1144 void hci_conn_hash_flush(struct hci_dev *hdev) in hci_conn_hash_flush() argument
1146 struct hci_conn_hash *h = &hdev->conn_hash; in hci_conn_hash_flush()
1149 BT_DBG("hdev %s", hdev->name); in hci_conn_hash_flush()
1160 void hci_conn_check_pending(struct hci_dev *hdev) in hci_conn_check_pending() argument
1164 BT_DBG("hdev %s", hdev->name); in hci_conn_check_pending()
1166 hci_dev_lock(hdev); in hci_conn_check_pending()
1168 conn = hci_conn_hash_lookup_state(hdev, ACL_LINK, BT_CONNECT2); in hci_conn_check_pending()
1172 hci_dev_unlock(hdev); in hci_conn_check_pending()
1202 struct hci_dev *hdev; in hci_get_conn_list() local
1217 hdev = hci_dev_get(req.dev_id); in hci_get_conn_list()
1218 if (!hdev) { in hci_get_conn_list()
1225 hci_dev_lock(hdev); in hci_get_conn_list()
1226 list_for_each_entry(c, &hdev->conn_hash.list, list) { in hci_get_conn_list()
1236 hci_dev_unlock(hdev); in hci_get_conn_list()
1238 cl->dev_id = hdev->id; in hci_get_conn_list()
1242 hci_dev_put(hdev); in hci_get_conn_list()
1250 int hci_get_conn_info(struct hci_dev *hdev, void __user *arg) in hci_get_conn_info() argument
1260 hci_dev_lock(hdev); in hci_get_conn_info()
1261 conn = hci_conn_hash_lookup_ba(hdev, req.type, &req.bdaddr); in hci_get_conn_info()
1270 hci_dev_unlock(hdev); in hci_get_conn_info()
1278 int hci_get_auth_info(struct hci_dev *hdev, void __user *arg) in hci_get_auth_info() argument
1286 hci_dev_lock(hdev); in hci_get_auth_info()
1287 conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &req.bdaddr); in hci_get_auth_info()
1290 hci_dev_unlock(hdev); in hci_get_auth_info()
1300 struct hci_dev *hdev = conn->hdev; in hci_chan_create() local
1303 BT_DBG("%s hcon %p", hdev->name, conn); in hci_chan_create()
1326 struct hci_dev *hdev = conn->hdev; in hci_chan_del() local
1328 BT_DBG("%s hcon %p chan %p", hdev->name, conn, chan); in hci_chan_del()
1366 struct hci_chan *hci_chan_lookup_handle(struct hci_dev *hdev, __u16 handle) in hci_chan_lookup_handle() argument
1368 struct hci_conn_hash *h = &hdev->conn_hash; in hci_chan_lookup_handle()