Bluetooth: Read stored link key information when powering on controller
authorMarcel Holtmann <marcel@holtmann.org>
Mon, 12 Jan 2015 17:21:26 +0000 (09:21 -0800)
committerJohan Hedberg <johan.hedberg@intel.com>
Mon, 12 Jan 2015 19:54:48 +0000 (21:54 +0200)
The information about max stored link keys and current stored link keys
should be read at controller initialization. So issue HCI Read Stored
Link Key command with BDADDR_ANY and read_all flag set to 0x01 to
retrieve this information.

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

index ba0d1fdccbd9f27899c604a0760aebdbf63ade8f..96572a48948eb6e10aa2c248c7e182e610ac79fd 100644 (file)
@@ -731,6 +731,14 @@ static void hci_init3_req(struct hci_request *req, unsigned long opt)
 
        hci_setup_event_mask(req);
 
+       if (hdev->commands[6] & 0x20) {
+               struct hci_cp_read_stored_link_key cp;
+
+               bacpy(&cp.bdaddr, BDADDR_ANY);
+               cp.read_all = 0x01;
+               hci_req_add(req, HCI_OP_READ_STORED_LINK_KEY, sizeof(cp), &cp);
+       }
+
        /* Some Broadcom based Bluetooth controllers do not support the
         * Delete Stored Link Key command. They are clearly indicating its
         * absence in the bit mask of supported commands.