Skip to content

Commit

Permalink
Bluetooth: Print broken quirks
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Vudentz authored and intel-lab-lkp committed Mar 25, 2022
1 parent 5b43dc8 commit 5ca7f4a
Showing 1 changed file with 44 additions and 0 deletions.
44 changes: 44 additions & 0 deletions net/bluetooth/hci_sync.c
Expand Up @@ -3825,6 +3825,48 @@ static int hci_init_sync(struct hci_dev *hdev)
return 0;
}

#define HCI_BROKEN(_quirk, _desc) \
{ \
.quirk = _quirk, \
.desc = _desc, \
}

struct hci_broken {
unsigned long quirk;
const char *desc;
} hci_broken_table[] = {
HCI_BROKEN(HCI_QUIRK_BROKEN_LOCAL_COMMANDS,
"HCI Read Local Supported Commands not supported"),
HCI_BROKEN(HCI_QUIRK_BROKEN_STORED_LINK_KEY,
"HCI Delete Stored Link Key command is advertised, "
"but not supported."),
HCI_BROKEN(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING,
"HCI Read Default Erroneous Data Reporting command is "
"advertised, but not supported."),
HCI_BROKEN(HCI_QUIRK_BROKEN_READ_TRANSMIT_POWER,
"HCI Read Transmit Power Level command is advertised, "
"but not supported."),
HCI_BROKEN(HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL,
"HCI Set Event Filter command not supported."),
HCI_BROKEN(HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN,
"HCI Enhanced Setup Synchronous Connection command is "
"advertised, but not supported.")
};

static void hci_dev_print_broken(struct hci_dev *hdev)
{
int i;

bt_dev_dbg(hdev, "");

for (i = 0; i < ARRAY_SIZE(hci_broken_table); i++) {
struct hci_broken *broken = &hci_broken_table[i];

if (test_bit(broken->quirk, &hdev->quirks))
bt_dev_warn(hdev, "%s", broken->desc);
}
}

int hci_dev_open_sync(struct hci_dev *hdev)
{
int ret = 0;
Expand Down Expand Up @@ -4031,6 +4073,8 @@ int hci_dev_open_sync(struct hci_dev *hdev)
}

done:
hci_dev_print_broken(hdev);

return ret;
}

Expand Down

0 comments on commit 5ca7f4a

Please sign in to comment.