Bluetooth: Add workaround for buggy max_page features page value
Some controllers list the max_page value from the extended features response as 0 when SSP has not yet been enabled. To workaround this issue, force the max_page value to 1 when SSP support has been detected. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
Родитель
dfb826a8b0
Коммит
57af75a8cf
|
@ -834,6 +834,14 @@ static void hci_init2_req(struct hci_request *req, unsigned long opt)
|
|||
hci_req_add(req, HCI_OP_READ_LOCAL_COMMANDS, 0, NULL);
|
||||
|
||||
if (lmp_ssp_capable(hdev)) {
|
||||
/* When SSP is available, then the host features page
|
||||
* should also be available as well. However some
|
||||
* controllers list the max_page as 0 as long as SSP
|
||||
* has not been enabled. To achieve proper debugging
|
||||
* output, force the minimum max_page to 1 at least.
|
||||
*/
|
||||
hdev->max_page = 0x01;
|
||||
|
||||
if (test_bit(HCI_SSP_ENABLED, &hdev->dev_flags)) {
|
||||
u8 mode = 0x01;
|
||||
hci_req_add(req, HCI_OP_WRITE_SSP_MODE,
|
||||
|
|
|
@ -555,7 +555,8 @@ static void hci_cc_read_local_ext_features(struct hci_dev *hdev,
|
|||
if (rp->status)
|
||||
return;
|
||||
|
||||
hdev->max_page = rp->max_page;
|
||||
if (hdev->max_page < rp->max_page)
|
||||
hdev->max_page = rp->max_page;
|
||||
|
||||
if (rp->page < HCI_MAX_PAGES)
|
||||
memcpy(hdev->features[rp->page], rp->features, 8);
|
||||
|
|
Загрузка…
Ссылка в новой задаче