From: Diego Francio <dfrancio@gmail.com>
To: luiz.dentz@gmail.com, marcel@holtmann.org
Cc: linux-bluetooth@vger.kernel.org
Subject: [PATCH 1/2] Bluetooth: Add HCI_QUIRK_BROKEN_LL_PRIVACY
Date: Tue, 27 Oct 2026 13:43:58 -0300 [thread overview]
Message-ID: <20261027164359.460369-2-dfrancio@gmail.com> (raw)
In-Reply-To: <20261027164359.460369-1-dfrancio@gmail.com>
Some controllers set the LL Privacy bit in their LE features but their
firmware misbehaves once the resolving list is actually programmed.
Add a quirk that makes ll_privacy_capable() return false for such
controllers, so that the resolving list and the related commands are
never used, mirroring what le_coded_capable() does for
HCI_QUIRK_BROKEN_LE_CODED.
No functional change for controllers that do not set the quirk.
Signed-off-by: Diego Francio <dfrancio@gmail.com>
---
include/net/bluetooth/hci.h | 10 ++++++++++
include/net/bluetooth/hci_core.h | 4 +++-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 1c992e8..3554abf 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -375,6 +375,16 @@ enum {
*/
HCI_QUIRK_BROKEN_READ_PAGE_SCAN_TYPE,
+ /* When this quirk is set, the controller is not treated as LL Privacy
+ * capable even though it claims to support it in its LE features, so
+ * the resolving list is never used. This is required for controllers
+ * whose firmware crashes (Hardware Error) when the resolving list is
+ * programmed.
+ *
+ * This quirk must be set before hci_register_dev is called.
+ */
+ HCI_QUIRK_BROKEN_LL_PRIVACY,
+
__HCI_NUM_QUIRKS,
};
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index 9d5d3ab..48fcfb2 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -2066,7 +2066,9 @@ void hci_conn_del_sysfs(struct hci_conn *conn);
#define scan_coded(dev) (((dev)->le_tx_def_phys & HCI_LE_SET_PHY_CODED) || \
((dev)->le_rx_def_phys & HCI_LE_SET_PHY_CODED))
-#define ll_privacy_capable(dev) ((dev)->le_features[0] & HCI_LE_LL_PRIVACY)
+#define ll_privacy_capable(dev) (((dev)->le_features[0] & HCI_LE_LL_PRIVACY) && \
+ !hci_test_quirk((dev), \
+ HCI_QUIRK_BROKEN_LL_PRIVACY))
#define ll_privacy_enabled(dev) (le_enabled(dev) && ll_privacy_capable(dev))
#define privacy_mode_capable(dev) (ll_privacy_capable(dev) && \
--
2.53.0
next prev parent reply other threads:[~2026-10-27 16:44 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-27 16:43 [PATCH 0/2] Bluetooth: Disable LL Privacy on Intel JfP (8087:0aaa) Diego Francio
2026-10-27 16:43 ` Diego Francio [this message]
2026-10-27 21:23 ` bluez.test.bot
2026-10-27 16:43 ` [PATCH 2/2] Bluetooth: btusb: " Diego Francio
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261027164359.460369-2-dfrancio@gmail.com \
--to=dfrancio@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=luiz.dentz@gmail.com \
--cc=marcel@holtmann.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.