Bluetooth: Move LE event mask setting into init3 phase
authorAndre Guedes <andre.guedes@openbossa.org>
Tue, 1 Jul 2014 21:10:09 +0000 (18:10 -0300)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 3 Jul 2014 15:42:55 +0000 (17:42 +0200)
During init2 phase, the LE local features have not be read yet so
we aren't able to rely on hdev->le_features to determine if the
controller supports the Connection Parameters Request Procedure.

For that reason, this patch moves LE event mask setting from init2
into init3 initialization phase.

The hdev->le_features mask will be checked by the next patch in order
to know if "LE Remote Connection Parameter Request Event" should be
enabled.

Signed-off-by: Andre Guedes <andre.guedes@openbossa.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/hci_core.c

index 72eb41424d04cd459b2af102327ab15c82ce060d..5788e031b869c41472235da7a830ce7d3354164d 100644 (file)
@@ -1437,13 +1437,6 @@ static void hci_setup_event_mask(struct hci_request *req)
                events[7] |= 0x20;      /* LE Meta-Event */
 
        hci_req_add(req, HCI_OP_SET_EVENT_MASK, sizeof(events), events);
-
-       if (lmp_le_capable(hdev)) {
-               memset(events, 0, sizeof(events));
-               events[0] = 0x1f;
-               hci_req_add(req, HCI_OP_LE_SET_EVENT_MASK,
-                           sizeof(events), events);
-       }
 }
 
 static void hci_init2_req(struct hci_request *req, unsigned long opt)
@@ -1613,8 +1606,16 @@ static void hci_init3_req(struct hci_request *req, unsigned long opt)
        if (hdev->commands[5] & 0x10)
                hci_setup_link_policy(req);
 
-       if (lmp_le_capable(hdev))
+       if (lmp_le_capable(hdev)) {
+               u8 events[8];
+
+               memset(events, 0, sizeof(events));
+               events[0] = 0x1f;
+               hci_req_add(req, HCI_OP_LE_SET_EVENT_MASK, sizeof(events),
+                           events);
+
                hci_set_le_support(req);
+       }
 
        /* Read features beyond page 1 if available */
        for (p = 2; p < HCI_MAX_PAGES && p <= hdev->max_page; p++) {