You've already forked linux-t2-patches
mirror of
https://github.com/t2linux/linux-t2-patches.git
synced 2026-04-30 13:52:11 -07:00
38 lines
1.3 KiB
Diff
38 lines
1.3 KiB
Diff
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
|
|
index fe7935be7dc4..47e1ee6f275d 100644
|
|
--- a/include/net/bluetooth/hci.h
|
|
+++ b/include/net/bluetooth/hci.h
|
|
@@ -274,6 +274,17 @@ enum {
|
|
* during the hdev->setup vendor callback.
|
|
*/
|
|
HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN,
|
|
+
|
|
+ /*
|
|
+ * When this quirk is set, the upper 8 bits of the evt_type field of
|
|
+ * the LE Extended Advertising Report events are discarded.
|
|
+ * Some Broadcom controllers found in Apple machines put the channel
|
|
+ * the report was received on into these reserved bits.
|
|
+ *
|
|
+ * This quirk can be set before hci_register_dev is called or
|
|
+ * during the hdev->setup vendor callback.
|
|
+ */
|
|
+ HCI_QUIRK_FIXUP_LE_EXT_ADV_REPORT_EVT_TYPE,
|
|
};
|
|
|
|
/* HCI device flags */
|
|
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
|
|
index af17dfb20e01..0b5d70aeea93 100644
|
|
--- a/net/bluetooth/hci_event.c
|
|
+++ b/net/bluetooth/hci_event.c
|
|
@@ -6237,6 +6237,10 @@ static void hci_le_ext_adv_report_evt(struct hci_dev *hdev, void *data,
|
|
break;
|
|
|
|
evt_type = __le16_to_cpu(info->type);
|
|
+ if (test_bit(HCI_QUIRK_FIXUP_LE_EXT_ADV_REPORT_EVT_TYPE,
|
|
+ &hdev->quirks))
|
|
+ evt_type &= 0xff;
|
|
+
|
|
legacy_evt_type = ext_evt_type_to_legacy(hdev, evt_type);
|
|
if (legacy_evt_type != LE_ADV_INVALID) {
|
|
process_adv_report(hdev, legacy_evt_type, &info->bdaddr,
|