diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/bluetooth/hci_event.c | 37 |
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 | ||
394 | static 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 | |||
406 | static 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 | |||
394 | static void hci_cc_read_local_version(struct hci_dev *hdev, struct sk_buff *skb) | 423 | static 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; |