Bluetooth: Enabled LE Direct Advertising Report event if supported
authorMarcel Holtmann <marcel@holtmann.org>
Fri, 5 Dec 2014 15:20:12 +0000 (16:20 +0100)
committerJohan Hedberg <johan.hedberg@intel.com>
Fri, 5 Dec 2014 16:15:33 +0000 (18:15 +0200)
When the controller supports the Extended Scanner Filter Policies, it
supports the LE Direct Advertising Report event. However by default
that event is blocked by the LE event mask. It is required to enable
it during controller setup.

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

index ffebd393af4f0a274ba0e6c8fd8554b7494d2a92..40129b3838b2aa8d811756a61900de4ecf7e850c 100644 (file)
@@ -343,6 +343,7 @@ enum {
 #define HCI_LE_ENCRYPTION              0x01
 #define HCI_LE_CONN_PARAM_REQ_PROC     0x02
 #define HCI_LE_PING                    0x10
+#define HCI_LE_EXT_SCAN_POLICY         0x80
 
 /* Connection modes */
 #define HCI_CM_ACTIVE  0x0000
index 523700eefdd13e998ab8221ce15b3b5915bcc397..da8969e08b0cf44865f5ee26b152e208f54ac9c5 100644 (file)
@@ -1735,6 +1735,14 @@ static void hci_init3_req(struct hci_request *req, unsigned long opt)
                                                 * Parameter Request
                                                 */
 
+               /* If the controller supports Extended Scanner Filter
+                * Policies, enable the correspondig event.
+                */
+               if (hdev->le_features[0] & HCI_LE_EXT_SCAN_POLICY)
+                       events[1] |= 0x04;      /* LE Direct Advertising
+                                                * Report
+                                                */
+
                hci_req_add(req, HCI_OP_LE_SET_EVENT_MASK, sizeof(events),
                            events);