aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth/hci_event.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/bluetooth/hci_event.c')
-rw-r--r--net/bluetooth/hci_event.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 75b03fc78002..87e6f74af6fe 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -409,7 +409,8 @@ static void hci_cc_read_voice_setting(struct hci_dev *hdev, struct sk_buff *skb)
409 hdev->notify(hdev, HCI_NOTIFY_VOICE_SETTING); 409 hdev->notify(hdev, HCI_NOTIFY_VOICE_SETTING);
410} 410}
411 411
412static void hci_cc_write_voice_setting(struct hci_dev *hdev, struct sk_buff *skb) 412static void hci_cc_write_voice_setting(struct hci_dev *hdev,
413 struct sk_buff *skb)
413{ 414{
414 __u8 status = *((__u8 *) skb->data); 415 __u8 status = *((__u8 *) skb->data);
415 __u16 setting; 416 __u16 setting;
@@ -648,7 +649,8 @@ static void hci_setup_link_policy(struct hci_dev *hdev)
648 hci_send_cmd(hdev, HCI_OP_WRITE_DEF_LINK_POLICY, sizeof(cp), &cp); 649 hci_send_cmd(hdev, HCI_OP_WRITE_DEF_LINK_POLICY, sizeof(cp), &cp);
649} 650}
650 651
651static void hci_cc_read_local_commands(struct hci_dev *hdev, struct sk_buff *skb) 652static void hci_cc_read_local_commands(struct hci_dev *hdev,
653 struct sk_buff *skb)
652{ 654{
653 struct hci_rp_read_local_commands *rp = (void *) skb->data; 655 struct hci_rp_read_local_commands *rp = (void *) skb->data;
654 656
@@ -666,7 +668,8 @@ done:
666 hci_req_complete(hdev, HCI_OP_READ_LOCAL_COMMANDS, rp->status); 668 hci_req_complete(hdev, HCI_OP_READ_LOCAL_COMMANDS, rp->status);
667} 669}
668 670
669static void hci_cc_read_local_features(struct hci_dev *hdev, struct sk_buff *skb) 671static void hci_cc_read_local_features(struct hci_dev *hdev,
672 struct sk_buff *skb)
670{ 673{
671 struct hci_rp_read_local_features *rp = (void *) skb->data; 674 struct hci_rp_read_local_features *rp = (void *) skb->data;
672 675
@@ -1845,7 +1848,8 @@ static void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
1845 if (ie) 1848 if (ie)
1846 memcpy(ie->data.dev_class, ev->dev_class, 3); 1849 memcpy(ie->data.dev_class, ev->dev_class, 3);
1847 1850
1848 conn = hci_conn_hash_lookup_ba(hdev, ev->link_type, &ev->bdaddr); 1851 conn = hci_conn_hash_lookup_ba(hdev, ev->link_type,
1852 &ev->bdaddr);
1849 if (!conn) { 1853 if (!conn) {
1850 conn = hci_conn_add(hdev, ev->link_type, &ev->bdaddr); 1854 conn = hci_conn_add(hdev, ev->link_type, &ev->bdaddr);
1851 if (!conn) { 1855 if (!conn) {
@@ -2623,7 +2627,8 @@ static void hci_mode_change_evt(struct hci_dev *hdev, struct sk_buff *skb)
2623 conn->mode = ev->mode; 2627 conn->mode = ev->mode;
2624 conn->interval = __le16_to_cpu(ev->interval); 2628 conn->interval = __le16_to_cpu(ev->interval);
2625 2629
2626 if (!test_and_clear_bit(HCI_CONN_MODE_CHANGE_PEND, &conn->flags)) { 2630 if (!test_and_clear_bit(HCI_CONN_MODE_CHANGE_PEND,
2631 &conn->flags)) {
2627 if (conn->mode == HCI_CM_ACTIVE) 2632 if (conn->mode == HCI_CM_ACTIVE)
2628 set_bit(HCI_CONN_POWER_SAVE, &conn->flags); 2633 set_bit(HCI_CONN_POWER_SAVE, &conn->flags);
2629 else 2634 else
@@ -2714,8 +2719,8 @@ static void hci_link_key_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
2714 2719
2715 if (key->type == HCI_LK_COMBINATION && key->pin_len < 16 && 2720 if (key->type == HCI_LK_COMBINATION && key->pin_len < 16 &&
2716 conn->pending_sec_level == BT_SECURITY_HIGH) { 2721 conn->pending_sec_level == BT_SECURITY_HIGH) {
2717 BT_DBG("%s ignoring key unauthenticated for high \ 2722 BT_DBG("%s ignoring key unauthenticated for high security",
2718 security", hdev->name); 2723 hdev->name);
2719 goto not_found; 2724 goto not_found;
2720 } 2725 }
2721 2726
@@ -3097,8 +3102,8 @@ static void hci_io_capa_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
3097 conn->auth_type = hci_get_auth_req(conn); 3102 conn->auth_type = hci_get_auth_req(conn);
3098 cp.authentication = conn->auth_type; 3103 cp.authentication = conn->auth_type;
3099 3104
3100 if ((conn->out || test_bit(HCI_CONN_REMOTE_OOB, &conn->flags)) && 3105 if (hci_find_remote_oob_data(hdev, &conn->dst) &&
3101 hci_find_remote_oob_data(hdev, &conn->dst)) 3106 (conn->out || test_bit(HCI_CONN_REMOTE_OOB, &conn->flags)))
3102 cp.oob_data = 0x01; 3107 cp.oob_data = 0x01;
3103 else 3108 else
3104 cp.oob_data = 0x00; 3109 cp.oob_data = 0x00;