diff mbox series

[v1,3/3] Bluetooth: btusb: Remove HCI_QUIRK_BROKEN_ERR_DATA_REPORTING for fake CSR

Message ID 1658326045-9931-4-git-send-email-quic_zijuhu@quicinc.com (mailing list archive)
State Superseded
Headers show
Series Bluetooth: Remove HCI_QUIRK_BROKEN_ERR_DATA_REPORTING | expand

Checks

Context Check Description
netdev/tree_selection success Guessed tree name to be net-next
netdev/fixes_present success Fixes tag not required for -next series
netdev/subject_prefix success Link
netdev/cover_letter success Series has a cover letter
netdev/patch_count success Link
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit fail Errors and warnings before: 5 this patch: 7
netdev/cc_maintainers success CCed 4 of 4 maintainers
netdev/build_clang success Errors and warnings before: 6 this patch: 0
netdev/module_param success Was 0 now: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn fail Errors and warnings before: 5 this patch: 7
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 7 lines checked
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

quic_zijuhu July 20, 2022, 2:07 p.m. UTC
Fake CSR BT controllers do not enable feature "Erroneous Data Reporting"
currently, BT core driver will check the feature bit instead of the quirk
to decide if HCI command HCI_Read|Write_Default_Erroneous_Data_Reporting
work fine, so remove HCI_QUIRK_BROKEN_ERR_DATA_REPORTING for fake CSR.

Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
---
 drivers/bluetooth/btusb.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Luiz Augusto von Dentz July 20, 2022, 3:38 p.m. UTC | #1
Hi Zijun,

On Wed, Jul 20, 2022 at 7:07 AM Zijun Hu <quic_zijuhu@quicinc.com> wrote:
>
> Fake CSR BT controllers do not enable feature "Erroneous Data Reporting"
> currently, BT core driver will check the feature bit instead of the quirk
> to decide if HCI command HCI_Read|Write_Default_Erroneous_Data_Reporting
> work fine, so remove HCI_QUIRK_BROKEN_ERR_DATA_REPORTING for fake CSR.
>
> Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
> ---
>  drivers/bluetooth/btusb.c | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index f0f86c5c3b37..f2b3d31d56cf 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -2072,7 +2072,6 @@ static int btusb_setup_csr(struct hci_dev *hdev)
>                  * without these the controller will lock up.
>                  */
>                 set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
> -               set_bit(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, &hdev->quirks);
>                 set_bit(HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL, &hdev->quirks);
>                 set_bit(HCI_QUIRK_NO_SUSPEND_NOTIFIER, &hdev->quirks);

You will probably need to remove HCI_QUIRK_BROKEN_ERR_DATA_REPORTING
last otherwise it breaks the build in between patches, and please
double check if there are no other instances of driver using it or
perhaps leave it defined in case the feature is broken for some reason
but then we need a macro that checks both the quirk and the feature
bit.

> --
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
>
quic_zijuhu July 21, 2022, 1:28 a.m. UTC | #2
On 7/20/2022 11:38 PM, Luiz Augusto von Dentz wrote:
> Hi Zijun,
> 
> On Wed, Jul 20, 2022 at 7:07 AM Zijun Hu <quic_zijuhu@quicinc.com> wrote:
>>
>> Fake CSR BT controllers do not enable feature "Erroneous Data Reporting"
>> currently, BT core driver will check the feature bit instead of the quirk
>> to decide if HCI command HCI_Read|Write_Default_Erroneous_Data_Reporting
>> work fine, so remove HCI_QUIRK_BROKEN_ERR_DATA_REPORTING for fake CSR.
>>
>> Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
>> ---
>>  drivers/bluetooth/btusb.c | 1 -
>>  1 file changed, 1 deletion(-)
>>
>> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
>> index f0f86c5c3b37..f2b3d31d56cf 100644
>> --- a/drivers/bluetooth/btusb.c
>> +++ b/drivers/bluetooth/btusb.c
>> @@ -2072,7 +2072,6 @@ static int btusb_setup_csr(struct hci_dev *hdev)
>>                  * without these the controller will lock up.
>>                  */
>>                 set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
>> -               set_bit(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, &hdev->quirks);
>>                 set_bit(HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL, &hdev->quirks);
>>                 set_bit(HCI_QUIRK_NO_SUSPEND_NOTIFIER, &hdev->quirks);
> 
> You will probably need to remove HCI_QUIRK_BROKEN_ERR_DATA_REPORTING
> last otherwise it breaks the build in between patches, and please
> double check if there are no other instances of driver using it or
> perhaps leave it defined in case the feature is broken for some reason
> but then we need a macro that checks both the quirk and the feature
> bit.
> 
okay, i will split this change to solve build error between patches.

yes.  only QCA and CSR device with USB I/F use it. no other driver use it

the quirk was introduced to mark HCI_Read|Write_Default_Erroneous_Data_Reporting
broken, but the reason why these two HCI commands don't work fine is that the feature
"Erroneous Data Reporting" is not enabled by firmware.
so we need to check the feature bit instead of the quirk and don't also need the quirk.

>> --
>> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
>>
> 
>
diff mbox series

Patch

diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index f0f86c5c3b37..f2b3d31d56cf 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -2072,7 +2072,6 @@  static int btusb_setup_csr(struct hci_dev *hdev)
 		 * without these the controller will lock up.
 		 */
 		set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
-		set_bit(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, &hdev->quirks);
 		set_bit(HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL, &hdev->quirks);
 		set_bit(HCI_QUIRK_NO_SUSPEND_NOTIFIER, &hdev->quirks);