File tree 4 files changed +23
-2
lines changed
4 files changed +23
-2
lines changed Original file line number Diff line number Diff line change @@ -2787,6 +2787,9 @@ static int btintel_setup_combined(struct hci_dev *hdev)
2787
2787
set_bit (HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED ,
2788
2788
& hdev -> quirks );
2789
2789
2790
+ /* These variants don't seem to support LE Coded PHY */
2791
+ set_bit (HCI_QUIRK_BROKEN_LE_CODED , & hdev -> quirks );
2792
+
2790
2793
/* Setup MSFT Extension support */
2791
2794
btintel_set_msft_opcode (hdev , ver .hw_variant );
2792
2795
@@ -2858,6 +2861,9 @@ static int btintel_setup_combined(struct hci_dev *hdev)
2858
2861
*/
2859
2862
set_bit (HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED , & hdev -> quirks );
2860
2863
2864
+ /* These variants don't seem to support LE Coded PHY */
2865
+ set_bit (HCI_QUIRK_BROKEN_LE_CODED , & hdev -> quirks );
2866
+
2861
2867
/* Set Valid LE States quirk */
2862
2868
set_bit (HCI_QUIRK_VALID_LE_STATES , & hdev -> quirks );
2863
2869
Original file line number Diff line number Diff line change @@ -319,6 +319,16 @@ enum {
319
319
* This quirk must be set before hci_register_dev is called.
320
320
*/
321
321
HCI_QUIRK_USE_MSFT_EXT_ADDRESS_FILTER ,
322
+
323
+ /*
324
+ * When this quirk is set, LE Coded PHY shall not be used. This is
325
+ * required for some Intel controllers which erroneously claim to
326
+ * support it but it causes problems with extended scanning.
327
+ *
328
+ * This quirk can be set before hci_register_dev is called or
329
+ * during the hdev->setup vendor callback.
330
+ */
331
+ HCI_QUIRK_BROKEN_LE_CODED ,
322
332
};
323
333
324
334
/* HCI device flags */
Original file line number Diff line number Diff line change @@ -1817,7 +1817,9 @@ void hci_conn_del_sysfs(struct hci_conn *conn);
1817
1817
#define scan_2m (dev ) (((dev)->le_tx_def_phys & HCI_LE_SET_PHY_2M) || \
1818
1818
((dev)->le_rx_def_phys & HCI_LE_SET_PHY_2M))
1819
1819
1820
- #define le_coded_capable (dev ) (((dev)->le_features[1] & HCI_LE_PHY_CODED))
1820
+ #define le_coded_capable (dev ) (((dev)->le_features[1] & HCI_LE_PHY_CODED) && \
1821
+ !test_bit(HCI_QUIRK_BROKEN_LE_CODED, \
1822
+ &(dev)->quirks))
1821
1823
1822
1824
#define scan_coded (dev ) (((dev)->le_tx_def_phys & HCI_LE_SET_PHY_CODED) || \
1823
1825
((dev)->le_rx_def_phys & HCI_LE_SET_PHY_CODED))
Original file line number Diff line number Diff line change @@ -4668,7 +4668,10 @@ static const struct {
4668
4668
"advertised, but not supported." ),
4669
4669
HCI_QUIRK_BROKEN (SET_RPA_TIMEOUT ,
4670
4670
"HCI LE Set Random Private Address Timeout command is "
4671
- "advertised, but not supported." )
4671
+ "advertised, but not supported." ),
4672
+ HCI_QUIRK_BROKEN (LE_CODED ,
4673
+ "HCI LE Coded PHY feature bit is set, "
4674
+ "but its usage is not supported." )
4672
4675
};
4673
4676
4674
4677
/* This function handles hdev setup stage:
You can’t perform that action at this time.
0 commit comments