Bluetooth: Track changes from HCI Write Simple Pairing Debug Mode command
authorMarcel Holtmann <marcel@holtmann.org>
Sat, 31 Jan 2015 23:07:52 +0000 (15:07 -0800)
committerJohan Hedberg <johan.hedberg@intel.com>
Sun, 1 Feb 2015 07:13:23 +0000 (09:13 +0200)
When the HCI Write Simple Pairing Debug Mode command has been issued,
the result needs to be tracked and stored. The hdev->ssp_debug_mode
variable is already present, but was never updated when the mode in
the controller was actually changed.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
net/bluetooth/hci_event.c

index af181f455f6fce5c761b898ccb554d94bce997fb..2f2abd986997de7b4004c47b55c4e4520242b62b 100644 (file)
@@ -1489,6 +1489,21 @@ unlock:
        hci_dev_unlock(hdev);
 }
 
+static void hci_cc_write_ssp_debug_mode(struct hci_dev *hdev, struct sk_buff *skb)
+{
+       u8 status = *((u8 *) skb->data);
+       u8 *mode;
+
+       BT_DBG("%s status 0x%2.2x", hdev->name, status);
+
+       if (status)
+               return;
+
+       mode = hci_sent_cmd_data(hdev, HCI_OP_WRITE_SSP_DEBUG_MODE);
+       if (mode)
+               hdev->ssp_debug_mode = *mode;
+}
+
 static void hci_cs_inquiry(struct hci_dev *hdev, __u8 status)
 {
        BT_DBG("%s status 0x%2.2x", hdev->name, status);
@@ -2983,6 +2998,10 @@ static void hci_cmd_complete_evt(struct hci_dev *hdev, struct sk_buff *skb)
                hci_cc_read_tx_power(hdev, skb);
                break;
 
+       case HCI_OP_WRITE_SSP_DEBUG_MODE:
+               hci_cc_write_ssp_debug_mode(hdev, skb);
+               break;
+
        default:
                BT_DBG("%s opcode 0x%4.4x", hdev->name, opcode);
                break;