diff options
Diffstat (limited to 'net/bluetooth/hci_conn.c')
-rw-r--r-- | net/bluetooth/hci_conn.c | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c index 5fdfc9a67d39..797a30bec6fd 100644 --- a/net/bluetooth/hci_conn.c +++ b/net/bluetooth/hci_conn.c | |||
@@ -82,7 +82,7 @@ void hci_acl_connect(struct hci_conn *conn) | |||
82 | else | 82 | else |
83 | cp.role_switch = 0x00; | 83 | cp.role_switch = 0x00; |
84 | 84 | ||
85 | hci_send_cmd(hdev, OGF_LINK_CTL, OCF_CREATE_CONN, sizeof(cp), &cp); | 85 | hci_send_cmd(hdev, HCI_OP_CREATE_CONN, sizeof(cp), &cp); |
86 | } | 86 | } |
87 | 87 | ||
88 | static void hci_acl_connect_cancel(struct hci_conn *conn) | 88 | static void hci_acl_connect_cancel(struct hci_conn *conn) |
@@ -95,8 +95,7 @@ static void hci_acl_connect_cancel(struct hci_conn *conn) | |||
95 | return; | 95 | return; |
96 | 96 | ||
97 | bacpy(&cp.bdaddr, &conn->dst); | 97 | bacpy(&cp.bdaddr, &conn->dst); |
98 | hci_send_cmd(conn->hdev, OGF_LINK_CTL, | 98 | hci_send_cmd(conn->hdev, HCI_OP_CREATE_CONN_CANCEL, sizeof(cp), &cp); |
99 | OCF_CREATE_CONN_CANCEL, sizeof(cp), &cp); | ||
100 | } | 99 | } |
101 | 100 | ||
102 | void hci_acl_disconn(struct hci_conn *conn, __u8 reason) | 101 | void hci_acl_disconn(struct hci_conn *conn, __u8 reason) |
@@ -109,8 +108,7 @@ void hci_acl_disconn(struct hci_conn *conn, __u8 reason) | |||
109 | 108 | ||
110 | cp.handle = cpu_to_le16(conn->handle); | 109 | cp.handle = cpu_to_le16(conn->handle); |
111 | cp.reason = reason; | 110 | cp.reason = reason; |
112 | hci_send_cmd(conn->hdev, OGF_LINK_CTL, | 111 | hci_send_cmd(conn->hdev, HCI_OP_DISCONNECT, sizeof(cp), &cp); |
113 | OCF_DISCONNECT, sizeof(cp), &cp); | ||
114 | } | 112 | } |
115 | 113 | ||
116 | void hci_add_sco(struct hci_conn *conn, __u16 handle) | 114 | void hci_add_sco(struct hci_conn *conn, __u16 handle) |
@@ -126,7 +124,7 @@ void hci_add_sco(struct hci_conn *conn, __u16 handle) | |||
126 | cp.handle = cpu_to_le16(handle); | 124 | cp.handle = cpu_to_le16(handle); |
127 | cp.pkt_type = cpu_to_le16(hdev->pkt_type & SCO_PTYPE_MASK); | 125 | cp.pkt_type = cpu_to_le16(hdev->pkt_type & SCO_PTYPE_MASK); |
128 | 126 | ||
129 | hci_send_cmd(hdev, OGF_LINK_CTL, OCF_ADD_SCO, sizeof(cp), &cp); | 127 | hci_send_cmd(hdev, HCI_OP_ADD_SCO, sizeof(cp), &cp); |
130 | } | 128 | } |
131 | 129 | ||
132 | static void hci_conn_timeout(unsigned long arg) | 130 | static void hci_conn_timeout(unsigned long arg) |
@@ -348,7 +346,7 @@ int hci_conn_auth(struct hci_conn *conn) | |||
348 | if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) { | 346 | if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) { |
349 | struct hci_cp_auth_requested cp; | 347 | struct hci_cp_auth_requested cp; |
350 | cp.handle = cpu_to_le16(conn->handle); | 348 | cp.handle = cpu_to_le16(conn->handle); |
351 | hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_AUTH_REQUESTED, sizeof(cp), &cp); | 349 | hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED, sizeof(cp), &cp); |
352 | } | 350 | } |
353 | return 0; | 351 | return 0; |
354 | } | 352 | } |
@@ -369,7 +367,7 @@ int hci_conn_encrypt(struct hci_conn *conn) | |||
369 | struct hci_cp_set_conn_encrypt cp; | 367 | struct hci_cp_set_conn_encrypt cp; |
370 | cp.handle = cpu_to_le16(conn->handle); | 368 | cp.handle = cpu_to_le16(conn->handle); |
371 | cp.encrypt = 1; | 369 | cp.encrypt = 1; |
372 | hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_SET_CONN_ENCRYPT, sizeof(cp), &cp); | 370 | hci_send_cmd(conn->hdev, HCI_OP_SET_CONN_ENCRYPT, sizeof(cp), &cp); |
373 | } | 371 | } |
374 | return 0; | 372 | return 0; |
375 | } | 373 | } |
@@ -383,7 +381,7 @@ int hci_conn_change_link_key(struct hci_conn *conn) | |||
383 | if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) { | 381 | if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) { |
384 | struct hci_cp_change_conn_link_key cp; | 382 | struct hci_cp_change_conn_link_key cp; |
385 | cp.handle = cpu_to_le16(conn->handle); | 383 | cp.handle = cpu_to_le16(conn->handle); |
386 | hci_send_cmd(conn->hdev, OGF_LINK_CTL, OCF_CHANGE_CONN_LINK_KEY, sizeof(cp), &cp); | 384 | hci_send_cmd(conn->hdev, HCI_OP_CHANGE_CONN_LINK_KEY, sizeof(cp), &cp); |
387 | } | 385 | } |
388 | return 0; | 386 | return 0; |
389 | } | 387 | } |
@@ -401,7 +399,7 @@ int hci_conn_switch_role(struct hci_conn *conn, uint8_t role) | |||
401 | struct hci_cp_switch_role cp; | 399 | struct hci_cp_switch_role cp; |
402 | bacpy(&cp.bdaddr, &conn->dst); | 400 | bacpy(&cp.bdaddr, &conn->dst); |
403 | cp.role = role; | 401 | cp.role = role; |
404 | hci_send_cmd(conn->hdev, OGF_LINK_POLICY, OCF_SWITCH_ROLE, sizeof(cp), &cp); | 402 | hci_send_cmd(conn->hdev, HCI_OP_SWITCH_ROLE, sizeof(cp), &cp); |
405 | } | 403 | } |
406 | return 0; | 404 | return 0; |
407 | } | 405 | } |
@@ -423,8 +421,7 @@ void hci_conn_enter_active_mode(struct hci_conn *conn) | |||
423 | if (!test_and_set_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->pend)) { | 421 | if (!test_and_set_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->pend)) { |
424 | struct hci_cp_exit_sniff_mode cp; | 422 | struct hci_cp_exit_sniff_mode cp; |
425 | cp.handle = cpu_to_le16(conn->handle); | 423 | cp.handle = cpu_to_le16(conn->handle); |
426 | hci_send_cmd(hdev, OGF_LINK_POLICY, | 424 | hci_send_cmd(hdev, HCI_OP_EXIT_SNIFF_MODE, sizeof(cp), &cp); |
427 | OCF_EXIT_SNIFF_MODE, sizeof(cp), &cp); | ||
428 | } | 425 | } |
429 | 426 | ||
430 | timer: | 427 | timer: |
@@ -455,8 +452,7 @@ void hci_conn_enter_sniff_mode(struct hci_conn *conn) | |||
455 | cp.max_latency = cpu_to_le16(0); | 452 | cp.max_latency = cpu_to_le16(0); |
456 | cp.min_remote_timeout = cpu_to_le16(0); | 453 | cp.min_remote_timeout = cpu_to_le16(0); |
457 | cp.min_local_timeout = cpu_to_le16(0); | 454 | cp.min_local_timeout = cpu_to_le16(0); |
458 | hci_send_cmd(hdev, OGF_LINK_POLICY, | 455 | hci_send_cmd(hdev, HCI_OP_SNIFF_SUBRATE, sizeof(cp), &cp); |
459 | OCF_SNIFF_SUBRATE, sizeof(cp), &cp); | ||
460 | } | 456 | } |
461 | 457 | ||
462 | if (!test_and_set_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->pend)) { | 458 | if (!test_and_set_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->pend)) { |
@@ -466,8 +462,7 @@ void hci_conn_enter_sniff_mode(struct hci_conn *conn) | |||
466 | cp.min_interval = cpu_to_le16(hdev->sniff_min_interval); | 462 | cp.min_interval = cpu_to_le16(hdev->sniff_min_interval); |
467 | cp.attempt = cpu_to_le16(4); | 463 | cp.attempt = cpu_to_le16(4); |
468 | cp.timeout = cpu_to_le16(1); | 464 | cp.timeout = cpu_to_le16(1); |
469 | hci_send_cmd(hdev, OGF_LINK_POLICY, | 465 | hci_send_cmd(hdev, HCI_OP_SNIFF_MODE, sizeof(cp), &cp); |
470 | OCF_SNIFF_MODE, sizeof(cp), &cp); | ||
471 | } | 466 | } |
472 | } | 467 | } |
473 | 468 | ||
@@ -493,6 +488,22 @@ void hci_conn_hash_flush(struct hci_dev *hdev) | |||
493 | } | 488 | } |
494 | } | 489 | } |
495 | 490 | ||
491 | /* Check pending connect attempts */ | ||
492 | void hci_conn_check_pending(struct hci_dev *hdev) | ||
493 | { | ||
494 | struct hci_conn *conn; | ||
495 | |||
496 | BT_DBG("hdev %s", hdev->name); | ||
497 | |||
498 | hci_dev_lock(hdev); | ||
499 | |||
500 | conn = hci_conn_hash_lookup_state(hdev, ACL_LINK, BT_CONNECT2); | ||
501 | if (conn) | ||
502 | hci_acl_connect(conn); | ||
503 | |||
504 | hci_dev_unlock(hdev); | ||
505 | } | ||
506 | |||
496 | int hci_get_conn_list(void __user *arg) | 507 | int hci_get_conn_list(void __user *arg) |
497 | { | 508 | { |
498 | struct hci_conn_list_req req, *cl; | 509 | struct hci_conn_list_req req, *cl; |