Browse Source

Bluetooth: Track changes from HCI Write Simple Pairing Debug Mode command

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>
Marcel Holtmann 11 năm trước cách đây
mục cha
commit
c50b33c80e
1 tập tin đã thay đổi với 19 bổ sung0 xóa
  1. 19 0
      net/bluetooth/hci_event.c

+ 19 - 0
net/bluetooth/hci_event.c

@@ -1489,6 +1489,21 @@ unlock:
 	hci_dev_unlock(hdev);
 	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)
 static void hci_cs_inquiry(struct hci_dev *hdev, __u8 status)
 {
 {
 	BT_DBG("%s status 0x%2.2x", hdev->name, 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);
 		hci_cc_read_tx_power(hdev, skb);
 		break;
 		break;
 
 
+	case HCI_OP_WRITE_SSP_DEBUG_MODE:
+		hci_cc_write_ssp_debug_mode(hdev, skb);
+		break;
+
 	default:
 	default:
 		BT_DBG("%s opcode 0x%4.4x", hdev->name, opcode);
 		BT_DBG("%s opcode 0x%4.4x", hdev->name, opcode);
 		break;
 		break;