summaryrefslogtreecommitdiff
path: root/0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-unsupported.patch
diff options
context:
space:
mode:
Diffstat (limited to '0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-unsupported.patch')
-rw-r--r--0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-unsupported.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-unsupported.patch b/0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-unsupported.patch
new file mode 100644
index 0000000..b51b75f
--- /dev/null
+++ b/0002-Bluetooth-Fix-attempting-to-set-RPA-timeout-when-unsupported.patch
@@ -0,0 +1,48 @@
+From 538fc2513b46f71985af6cb12344fee501ef58a5 Mon Sep 17 00:00:00 2001
+From: Edward Vear <edwardvear@gmail.com>
+Date: Tue, 27 Oct 2020 00:02:03 -0700
+Subject: Bluetooth: Fix attempting to set RPA timeout when unsupported
+
+During controller initialization, an LE Set RPA Timeout command is sent
+to the controller if supported. However, the value checked to determine
+if the command is supported is incorrect. Page 1921 of the Bluetooth
+Core Spec v5.2 shows that bit 2 of octet 35 of the Supported_Commands
+field corresponds to the LE Set RPA Timeout command, but currently
+bit 6 of octet 35 is checked. This patch checks the correct value
+instead.
+
+This issue led to the error seen in the following btmon output during
+initialization of an adapter (rtl8761b) and prevented initialization
+from completing.
+
+< HCI Command: LE Set Resolvable Private Address Timeout (0x08|0x002e) plen 2
+ Timeout: 900 seconds
+> HCI Event: Command Complete (0x0e) plen 4
+ LE Set Resolvable Private Address Timeout (0x08|0x002e) ncmd 2
+ Status: Unsupported Remote Feature / Unsupported LMP Feature (0x1a)
+= Close Index: 00:E0:4C:6B:E5:03
+
+The error did not appear when running with this patch.
+
+Signed-off-by: Edward Vear <edwardvear@gmail.com>
+Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
+---
+ net/bluetooth/hci_core.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
+index 502552d6e9af..c4aa2cbb9269 100644
+--- a/net/bluetooth/hci_core.c
++++ b/net/bluetooth/hci_core.c
+@@ -763,7 +763,7 @@ static int hci_init3_req(struct hci_request *req, unsigned long opt)
+ hci_req_add(req, HCI_OP_LE_CLEAR_RESOLV_LIST, 0, NULL);
+ }
+
+- if (hdev->commands[35] & 0x40) {
++ if (hdev->commands[35] & 0x04) {
+ __le16 rpa_timeout = cpu_to_le16(hdev->rpa_timeout);
+
+ /* Set RPA timeout */
+--
+cgit v1.2.3-1-gf6bb5
+