mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-07 11:28:32 +00:00
Bluetooth: Add quirk to disable extended scanning
Broadcom 4377 controllers found in Apple x86 Macs with the T2 chip claim to support extended scanning when querying supported states, < HCI Command: LE Read Supported St.. (0x08|0x001c) plen 0 > HCI Event: Command Complete (0x0e) plen 12 LE Read Supported States (0x08|0x001c) ncmd 1 Status: Success (0x00) States: 0x000003ffffffffff [...] LE Set Extended Scan Parameters (Octet 37 - Bit 5) LE Set Extended Scan Enable (Octet 37 - Bit 6) [...] , but then fail to actually implement the extended scanning: < HCI Command: LE Set Extended Sca.. (0x08|0x0041) plen 8 Own address type: Random (0x01) Filter policy: Accept all advertisement (0x00) PHYs: 0x01 Entry 0: LE 1M Type: Active (0x01) Interval: 11.250 msec (0x0012) Window: 11.250 msec (0x0012) > HCI Event: Command Complete (0x0e) plen 4 LE Set Extended Scan Parameters (0x08|0x0041) ncmd 1 Status: Unknown HCI Command (0x01) Signed-off-by: Sven Peter <sven@svenpeter.dev> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This commit is contained in:
parent
ad38e55e1c
commit
392fca352c
2 changed files with 13 additions and 1 deletions
|
@ -274,6 +274,16 @@ enum {
|
||||||
* during the hdev->setup vendor callback.
|
* during the hdev->setup vendor callback.
|
||||||
*/
|
*/
|
||||||
HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN,
|
HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When this quirk is set, the HCI_OP_LE_SET_EXT_SCAN_ENABLE command is
|
||||||
|
* disabled. This is required for some Broadcom controllers which
|
||||||
|
* erroneously claim to support extended scanning.
|
||||||
|
*
|
||||||
|
* This quirk can be set before hci_register_dev is called or
|
||||||
|
* during the hdev->setup vendor callback.
|
||||||
|
*/
|
||||||
|
HCI_QUIRK_BROKEN_EXT_SCAN,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* HCI device flags */
|
/* HCI device flags */
|
||||||
|
|
|
@ -1690,7 +1690,9 @@ void hci_conn_del_sysfs(struct hci_conn *conn);
|
||||||
|
|
||||||
/* Use ext scanning if set ext scan param and ext scan enable is supported */
|
/* Use ext scanning if set ext scan param and ext scan enable is supported */
|
||||||
#define use_ext_scan(dev) (((dev)->commands[37] & 0x20) && \
|
#define use_ext_scan(dev) (((dev)->commands[37] & 0x20) && \
|
||||||
((dev)->commands[37] & 0x40))
|
((dev)->commands[37] & 0x40) && \
|
||||||
|
!test_bit(HCI_QUIRK_BROKEN_EXT_SCAN, &(dev)->quirks))
|
||||||
|
|
||||||
/* Use ext create connection if command is supported */
|
/* Use ext create connection if command is supported */
|
||||||
#define use_ext_conn(dev) ((dev)->commands[37] & 0x80)
|
#define use_ext_conn(dev) ((dev)->commands[37] & 0x80)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue