1
0
Fork 0

Bluetooth: Add new quirk for broken local ext features max_page

Some adapters (e.g. RTL8723CS) advertise that they have more than
2 pages for local ext features, but they don't support any features
declared in these pages. RTL8723CS reports max_page = 2 and declares
support for sync train and secure connection, but it responds with
either garbage or with error in status on corresponding commands.

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
alistair/sunxi64-5.5-dsi
Vasily Khoruzhick 2018-10-31 19:40:18 -07:00 committed by Alistair Francis
parent 3cfe803765
commit a7df17cfca
2 changed files with 10 additions and 1 deletions

View File

@ -204,6 +204,13 @@ enum {
*
*/
HCI_QUIRK_NON_PERSISTENT_SETUP,
/* When this quirk is set, max_page for local extended features
* is set to 1, even if controller reports higher number. Some
* controllers (e.g. RTL8723CS) report more pages, but they
* don't actually support features declared there.
*/
HCI_QUIRK_BROKEN_LOCAL_EXT_FTR_MAX_PAGE,
};
/* HCI device flags */

View File

@ -684,7 +684,9 @@ static void hci_cc_read_local_ext_features(struct hci_dev *hdev,
if (rp->status)
return;
if (hdev->max_page < rp->max_page)
if (!test_bit(HCI_QUIRK_BROKEN_LOCAL_EXT_FTR_MAX_PAGE,
&hdev->quirks) &&
hdev->max_page < rp->max_page)
hdev->max_page = rp->max_page;
if (rp->page < HCI_MAX_PAGES)