Lines Matching refs:conn

2784 			struct hci_conn *conn;
2786 conn = hci_conn_hash_lookup_ba(hdev, ISO_LINK,
2788 if (conn) {
2789 struct bt_iso_qos *qos = &conn->iso_qos;
3251 struct hci_conn *conn;
3253 conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &b->bdaddr);
3254 if (!conn)
3257 if (conn->state != BT_CONNECTED && conn->state != BT_CONFIG)
4961 if (p->conn) {
4962 hci_conn_drop(p->conn);
4963 hci_conn_put(p->conn);
4964 p->conn = NULL;
5256 static int hci_disconnect_sync(struct hci_dev *hdev, struct hci_conn *conn,
5261 if (test_bit(HCI_CONN_BIG_CREATED, &conn->flags)) {
5266 hci_conn_failed(conn, reason);
5273 cp.handle = cpu_to_le16(conn->handle);
5292 struct hci_conn *conn, u8 reason)
5297 if (test_bit(HCI_CONN_SCANNING, &conn->flags))
5300 if (conn->role == HCI_ROLE_SLAVE ||
5301 test_and_set_bit(HCI_CONN_CANCEL, &conn->flags))
5308 static int hci_connect_cancel_sync(struct hci_dev *hdev, struct hci_conn *conn,
5311 if (conn->type == LE_LINK)
5312 return hci_le_connect_cancel_sync(hdev, conn, reason);
5314 if (conn->type == ISO_LINK) {
5323 if (test_bit(HCI_CONN_CREATE_CIS, &conn->flags))
5324 return hci_disconnect_sync(hdev, conn, reason);
5327 if (bacmp(&conn->dst, BDADDR_ANY))
5346 6, &conn->dst,
5351 6, &conn->dst, HCI_CMD_TIMEOUT);
5354 static int hci_reject_sco_sync(struct hci_dev *hdev, struct hci_conn *conn,
5360 bacpy(&cp.bdaddr, &conn->dst);
5373 static int hci_le_reject_cis_sync(struct hci_dev *hdev, struct hci_conn *conn,
5379 cp.handle = cpu_to_le16(conn->handle);
5386 static int hci_reject_conn_sync(struct hci_dev *hdev, struct hci_conn *conn,
5391 if (conn->type == ISO_LINK)
5392 return hci_le_reject_cis_sync(hdev, conn, reason);
5394 if (conn->type == SCO_LINK || conn->type == ESCO_LINK)
5395 return hci_reject_sco_sync(hdev, conn, reason);
5398 bacpy(&cp.bdaddr, &conn->dst);
5405 int hci_abort_conn_sync(struct hci_dev *hdev, struct hci_conn *conn, u8 reason)
5408 u16 handle = conn->handle;
5412 switch (conn->state) {
5415 err = hci_disconnect_sync(hdev, conn, reason);
5418 err = hci_connect_cancel_sync(hdev, conn, reason);
5421 err = hci_reject_conn_sync(hdev, conn, reason);
5435 if (!c || c != conn) {
5446 conn->state = BT_CLOSED;
5447 hci_disconn_cfm(conn, reason);
5448 hci_conn_del(conn);
5450 hci_conn_failed(conn, reason);
5461 struct hci_conn *conn;
5464 while ((conn = list_first_or_null_rcu(head, struct hci_conn, list))) {
5466 conn = hci_conn_get(conn);
5473 hci_abort_conn_sync(hdev, conn, reason);
5474 hci_conn_put(conn);
6074 static bool conn_use_rpa(struct hci_conn *conn)
6076 struct hci_dev *hdev = conn->hdev;
6082 struct hci_conn *conn)
6089 err = hci_update_random_address_sync(hdev, false, conn_use_rpa(conn),
6097 err = hci_get_random_address(hdev, false, conn_use_rpa(conn), NULL,
6111 cp.peer_addr_type = conn->dst_type;
6112 bacpy(&cp.peer_addr, &conn->dst);
6145 struct hci_conn *conn)
6153 return hci_le_ext_directed_advertising_sync(hdev, conn);
6165 status = hci_update_random_address_sync(hdev, false, conn_use_rpa(conn),
6181 cp.direct_addr_type = conn->dst_type;
6182 bacpy(&cp.direct_addr, &conn->dst);
6196 static void set_ext_conn_params(struct hci_conn *conn,
6199 struct hci_dev *hdev = conn->hdev;
6205 p->conn_interval_min = cpu_to_le16(conn->le_conn_min_interval);
6206 p->conn_interval_max = cpu_to_le16(conn->le_conn_max_interval);
6207 p->conn_latency = cpu_to_le16(conn->le_conn_latency);
6208 p->supervision_timeout = cpu_to_le16(conn->le_supv_timeout);
6214 struct hci_conn *conn, u8 own_addr_type)
6226 bacpy(&cp->peer_addr, &conn->dst);
6227 cp->peer_addr_type = conn->dst_type;
6232 if (scan_1m(hdev) && (conn->le_adv_phy == HCI_ADV_PHY_1M ||
6233 conn->le_adv_sec_phy == HCI_ADV_PHY_1M)) {
6235 set_ext_conn_params(conn, p);
6241 if (scan_2m(hdev) && (conn->le_adv_phy == HCI_ADV_PHY_2M ||
6242 conn->le_adv_sec_phy == HCI_ADV_PHY_2M)) {
6244 set_ext_conn_params(conn, p);
6250 if (scan_coded(hdev) && (conn->le_adv_phy == HCI_ADV_PHY_CODED ||
6251 conn->le_adv_sec_phy == HCI_ADV_PHY_CODED)) {
6253 set_ext_conn_params(conn, p);
6261 conn->conn_timeout, NULL);
6270 struct hci_conn *conn = data;
6272 if (!hci_conn_valid(hdev, conn))
6275 bt_dev_dbg(hdev, "conn %p", conn);
6277 clear_bit(HCI_CONN_SCANNING, &conn->flags);
6278 conn->state = BT_CONNECT;
6281 if (conn->role == HCI_ROLE_SLAVE) {
6288 hci_conn_del(conn);
6295 err = hci_le_directed_advertising_sync(hdev, conn);
6303 params = hci_conn_params_lookup(hdev, &conn->dst, conn->dst_type);
6305 conn->le_conn_min_interval = params->conn_min_interval;
6306 conn->le_conn_max_interval = params->conn_max_interval;
6307 conn->le_conn_latency = params->conn_latency;
6308 conn->le_supv_timeout = params->supervision_timeout;
6310 conn->le_conn_min_interval = hdev->le_conn_min_interval;
6311 conn->le_conn_max_interval = hdev->le_conn_max_interval;
6312 conn->le_conn_latency = hdev->le_conn_latency;
6313 conn->le_supv_timeout = hdev->le_supv_timeout;
6330 err = hci_update_random_address_sync(hdev, false, conn_use_rpa(conn),
6336 err = hci_le_ext_create_conn_sync(hdev, conn, own_addr_type);
6345 bacpy(&cp.peer_addr, &conn->dst);
6346 cp.peer_addr_type = conn->dst_type;
6348 cp.conn_interval_min = cpu_to_le16(conn->le_conn_min_interval);
6349 cp.conn_interval_max = cpu_to_le16(conn->le_conn_max_interval);
6350 cp.conn_latency = cpu_to_le16(conn->le_conn_latency);
6351 cp.supervision_timeout = cpu_to_le16(conn->le_supv_timeout);
6366 conn->conn_timeout, NULL);
6370 hci_le_connect_cancel_sync(hdev, conn, 0x00);
6381 struct hci_conn *conn;
6412 list_for_each_entry_rcu(conn, &hdev->conn_hash.list, list) {
6413 if (test_bit(HCI_CONN_CREATE_CIS, &conn->flags))
6418 list_for_each_entry_rcu(conn, &hdev->conn_hash.list, list) {
6421 if (hci_conn_check_create_cis(conn))
6424 cig = conn->iso_qos.ucast.cig;
6442 list_for_each_entry_rcu(conn, &hdev->conn_hash.list, list) {
6445 if (hci_conn_check_create_cis(conn) ||
6446 conn->iso_qos.ucast.cig != cig)
6449 set_bit(HCI_CONN_CREATE_CIS, &conn->flags);
6450 cis->acl_handle = cpu_to_le16(conn->parent->handle);
6451 cis->cis_handle = cpu_to_le16(conn->handle);
6471 conn->conn_timeout, NULL);
6595 struct hci_conn *conn = data;
6600 if (!hci_conn_valid(hdev, conn))
6618 conn->state = BT_CONNECT;
6619 conn->out = true;
6620 conn->role = HCI_ROLE_MASTER;
6622 conn->attempt++;
6624 conn->link_policy = hdev->link_policy;
6627 bacpy(&cp.bdaddr, &conn->dst);
6630 ie = hci_inquiry_cache_lookup(hdev, &conn->dst);
6639 memcpy(conn->dev_class, ie->data.dev_class, 3);
6642 cp.pkt_type = cpu_to_le16(conn->pkt_type);
6651 conn->conn_timeout, NULL);
6654 int hci_connect_acl_sync(struct hci_dev *hdev, struct hci_conn *conn)
6656 return hci_cmd_sync_queue_once(hdev, hci_acl_create_conn_sync, conn,
6662 struct hci_conn *conn = data;
6671 if (!hci_conn_valid(hdev, conn))
6675 hci_connect_le_scan_cleanup(conn, 0x00);
6680 if (conn != hci_lookup_le_connect(hdev))
6683 /* Flush to make sure we send create conn cancel command if needed */
6684 flush_delayed_work(&conn->le_conn_timeout);
6685 hci_conn_failed(conn, bt_status(err));
6691 int hci_connect_le_sync(struct hci_dev *hdev, struct hci_conn *conn)
6693 return hci_cmd_sync_queue_once(hdev, hci_le_create_conn_sync, conn,
6697 int hci_cancel_connect_sync(struct hci_dev *hdev, struct hci_conn *conn)
6699 if (conn->state != BT_OPEN)
6702 switch (conn->type) {
6706 conn, NULL);
6709 conn, create_le_conn_complete);