Bluetooth: Fix enabling Authenticated Payload Timeout Expired event
authorMarcel Holtmann <marcel@holtmann.org>
Wed, 9 Jul 2014 07:49:05 +0000 (09:49 +0200)
committerJohan Hedberg <johan.hedberg@intel.com>
Wed, 9 Jul 2014 08:19:15 +0000 (11:19 +0300)
The Authenticated Payload Timeout Expired event is valid for
controllers with BR/EDR Secure Connections support, but also for
LE only controllers supporting LE Ping feature. When either of them
is available enable this event. Previous it was not enabled when
the controller was only supporting LE operation.

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 6ed1f7288f1314bb2d361813e700ce46a5f14e69..a01236e2df1327673946899f0a93f22e2672195f 100644 (file)
@@ -357,6 +357,7 @@ enum {
 
 /* LE features */
 #define HCI_LE_CONN_PARAM_REQ_PROC     0x02
+#define HCI_LE_PING                    0x10
 
 /* Connection modes */
 #define HCI_CM_ACTIVE  0x0000
index 8ffaca0290f891806d00a294ab884a53a05003ed..421faf5fa1f54ab9dbf5985c24d79de6cf98010c 100644 (file)
@@ -1569,7 +1569,7 @@ static void hci_set_event_mask_page_2(struct hci_request *req)
        }
 
        /* Enable Authenticated Payload Timeout Expired event if supported */
-       if (lmp_ping_capable(hdev))
+       if (lmp_ping_capable(hdev) || hdev->le_features[0] & HCI_LE_PING)
                events[2] |= 0x80;
 
        hci_req_add(req, HCI_OP_SET_EVENT_MASK_PAGE_2, sizeof(events), events);