mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-06 13:23:18 +00:00
Bluetooth: Print broken quirks
This prints warnings for controllers setting broken quirks to increase their visibility and warn about broken controllers firmware that probably needs updates to behave properly. Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
05abad8572
commit
6b5c1cdac4
@ -3825,6 +3825,30 @@ static int hci_init_sync(struct hci_dev *hdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define HCI_QUIRK_BROKEN(_quirk, _desc) { HCI_QUIRK_BROKEN_##_quirk, _desc }
|
||||
|
||||
static const struct {
|
||||
unsigned long quirk;
|
||||
const char *desc;
|
||||
} hci_broken_table[] = {
|
||||
HCI_QUIRK_BROKEN(LOCAL_COMMANDS,
|
||||
"HCI Read Local Supported Commands not supported"),
|
||||
HCI_QUIRK_BROKEN(STORED_LINK_KEY,
|
||||
"HCI Delete Stored Link Key command is advertised, "
|
||||
"but not supported."),
|
||||
HCI_QUIRK_BROKEN(ERR_DATA_REPORTING,
|
||||
"HCI Read Default Erroneous Data Reporting command is "
|
||||
"advertised, but not supported."),
|
||||
HCI_QUIRK_BROKEN(READ_TRANSMIT_POWER,
|
||||
"HCI Read Transmit Power Level command is advertised, "
|
||||
"but not supported."),
|
||||
HCI_QUIRK_BROKEN(FILTER_CLEAR_ALL,
|
||||
"HCI Set Event Filter command not supported."),
|
||||
HCI_QUIRK_BROKEN(ENHANCED_SETUP_SYNC_CONN,
|
||||
"HCI Enhanced Setup Synchronous Connection command is "
|
||||
"advertised, but not supported.")
|
||||
};
|
||||
|
||||
int hci_dev_open_sync(struct hci_dev *hdev)
|
||||
{
|
||||
int ret = 0;
|
||||
@ -3886,12 +3910,19 @@ int hci_dev_open_sync(struct hci_dev *hdev)
|
||||
if (hci_dev_test_flag(hdev, HCI_SETUP) ||
|
||||
test_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks)) {
|
||||
bool invalid_bdaddr;
|
||||
size_t i;
|
||||
|
||||
hci_sock_dev_event(hdev, HCI_DEV_SETUP);
|
||||
|
||||
if (hdev->setup)
|
||||
ret = hdev->setup(hdev);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(hci_broken_table); i++) {
|
||||
if (test_bit(hci_broken_table[i].quirk, &hdev->quirks))
|
||||
bt_dev_warn(hdev, "%s",
|
||||
hci_broken_table[i].desc);
|
||||
}
|
||||
|
||||
/* The transport driver can set the quirk to mark the
|
||||
* BD_ADDR invalid before creating the HCI device or in
|
||||
* its setup callback.
|
||||
|
Loading…
Reference in New Issue
Block a user