47 lines
1.6 KiB
Diff
47 lines
1.6 KiB
Diff
From 942e794211fc05943db36212d41c4e8a68b3c922 Mon Sep 17 00:00:00 2001
|
|
From: Dan Johansen <strit@manjaro.org>
|
|
Date: Mon, 17 Aug 2020 21:32:16 +0200
|
|
Subject: [PATCH] Bluetooth-Add-new-quirk-for-broken-local-ext-features
|
|
|
|
---
|
|
include/net/bluetooth/hci.h | 7 +++++++
|
|
net/bluetooth/hci_event.c | 4 +++-
|
|
2 files changed, 10 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
|
|
index c8e67042a3b1..53f7a8518372 100644
|
|
--- a/include/net/bluetooth/hci.h
|
|
+++ b/include/net/bluetooth/hci.h
|
|
@@ -228,6 +228,13 @@ enum {
|
|
*/
|
|
HCI_QUIRK_VALID_LE_STATES,
|
|
|
|
+ /* When this quirk is set, max_page for local extended features
|
|
+ * is set to 1, even if controller reports higher number. Some
|
|
+ * controllers (e.g. RTL8723CS) report more pages, but they
|
|
+ * don't actually support features declared there.
|
|
+ */
|
|
+ HCI_QUIRK_BROKEN_LOCAL_EXT_FTR_MAX_PAGE,
|
|
+
|
|
/* When this quirk is set, then erroneous data reporting
|
|
* is ignored. This is mainly due to the fact that the HCI
|
|
* Read Default Erroneous Data Reporting command is advertised,
|
|
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
|
|
index 4b7fc430793c..9b165c8f16de 100644
|
|
--- a/net/bluetooth/hci_event.c
|
|
+++ b/net/bluetooth/hci_event.c
|
|
@@ -700,7 +700,9 @@ static void hci_cc_read_local_ext_features(struct hci_dev *hdev,
|
|
if (rp->status)
|
|
return;
|
|
|
|
- if (hdev->max_page < rp->max_page)
|
|
+ if (!test_bit(HCI_QUIRK_BROKEN_LOCAL_EXT_FTR_MAX_PAGE,
|
|
+ &hdev->quirks) &&
|
|
+ hdev->max_page < rp->max_page)
|
|
hdev->max_page = rp->max_page;
|
|
|
|
if (rp->page < HCI_MAX_PAGES)
|
|
--
|
|
2.28.0
|
|
|