Bluetooth: Move BR/EDR default events behind its features
authorMarcel Holtmann <marcel@holtmann.org>
Sun, 1 Nov 2015 08:39:49 +0000 (09:39 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 19 Nov 2015 16:50:26 +0000 (17:50 +0100)
There are some BR/EDR default events for Bluetooth 1.2 or later
controllers that are not conditional on their features being present.

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

index 62edbf1b114e8371fe7167eb81d75c59ebe47908..db423657935ad70b40370d3c6983dcc506dda428 100644 (file)
@@ -531,10 +531,6 @@ static void hci_setup_event_mask(struct hci_request *req)
 
        if (lmp_bredr_capable(hdev)) {
                events[4] |= 0x01; /* Flow Specification Complete */
-               events[4] |= 0x02; /* Inquiry Result with RSSI */
-               events[4] |= 0x04; /* Read Remote Extended Features Complete */
-               events[5] |= 0x08; /* Synchronous Connection Complete */
-               events[5] |= 0x10; /* Synchronous Connection Changed */
        } else {
                /* Use a different default for LE-only devices */
                memset(events, 0, sizeof(events));
@@ -555,6 +551,14 @@ static void hci_setup_event_mask(struct hci_request *req)
        if (lmp_inq_rssi_capable(hdev))
                events[4] |= 0x02; /* Inquiry Result with RSSI */
 
+       if (lmp_ext_feat_capable(hdev))
+               events[4] |= 0x04; /* Read Remote Extended Features Complete */
+
+       if (lmp_esco_capable(hdev)) {
+               events[5] |= 0x08; /* Synchronous Connection Complete */
+               events[5] |= 0x10; /* Synchronous Connection Changed */
+       }
+
        if (lmp_sniffsubr_capable(hdev))
                events[5] |= 0x20; /* Sniff Subrating */