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.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 7c9ac01cd8f9..6077a651aac6 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -391,6 +391,35 @@ static void hci_cc_host_buffer_size(struct hci_dev *hdev, struct sk_buff *skb)
391 hci_req_complete(hdev, status); 391 hci_req_complete(hdev, status);
392} 392}
393 393
394static void hci_cc_read_ssp_mode(struct hci_dev *hdev, struct sk_buff *skb)
395{
396 struct hci_rp_read_ssp_mode *rp = (void *) skb->data;
397
398 BT_DBG("%s status 0x%x", hdev->name, rp->status);
399
400 if (rp->status)
401 return;
402
403 hdev->ssp_mode = rp->mode;
404}
405
406static void hci_cc_write_ssp_mode(struct hci_dev *hdev, struct sk_buff *skb)
407{
408 __u8 status = *((__u8 *) skb->data);
409 void *sent;
410
411 BT_DBG("%s status 0x%x", hdev->name, status);
412
413 if (status)
414 return;
415
416 sent = hci_sent_cmd_data(hdev, HCI_OP_WRITE_SSP_MODE);
417 if (!sent)
418 return;
419
420 hdev->ssp_mode = *((__u8 *) sent);
421}
422
394static void hci_cc_read_local_version(struct hci_dev *hdev, struct sk_buff *skb) 423static void hci_cc_read_local_version(struct hci_dev *hdev, struct sk_buff *skb)
395{ 424{
396 struct hci_rp_read_local_version *rp = (void *) skb->data; 425 struct hci_rp_read_local_version *rp = (void *) skb->data;
@@ -1084,6 +1113,14 @@ static inline void hci_cmd_complete_evt(struct hci_dev *hdev, struct sk_buff *sk
1084 hci_cc_host_buffer_size(hdev, skb); 1113 hci_cc_host_buffer_size(hdev, skb);
1085 break; 1114 break;
1086 1115
1116 case HCI_OP_READ_SSP_MODE:
1117 hci_cc_read_ssp_mode(hdev, skb);
1118 break;
1119
1120 case HCI_OP_WRITE_SSP_MODE:
1121 hci_cc_write_ssp_mode(hdev, skb);
1122 break;
1123
1087 case HCI_OP_READ_LOCAL_VERSION: 1124 case HCI_OP_READ_LOCAL_VERSION:
1088 hci_cc_read_local_version(hdev, skb); 1125 hci_cc_read_local_version(hdev, skb);
1089 break; 1126 break;