[v1] Bluetooth: btusb: Fix enable failure for a CSR BT dongle

Message ID 1666868760-4680-1-git-send-email-quic_zijuhu@quicinc.com
State New
Headers
Series [v1] Bluetooth: btusb: Fix enable failure for a CSR BT dongle |

Commit Message

quic_zijuhu Oct. 27, 2022, 11:06 a.m. UTC
  From: Zijun Hu <zijuhu@qti.qualcomm.com>

A CSR BT dongle fails to be enabled bcz it is not detected as fake
rightly, fixed by correcting fake detection condition.

below btmon error log says HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL is not set.

< HCI Command: Set Event Filter (0x03|0x0005) plen 1        #23 [hci0]
        Type: Clear All Filters (0x00)
> HCI Event: Command Complete (0x0e) plen 4                 #24 [hci0]
      Set Event Filter (0x03|0x0005) ncmd 1
        Status: Invalid HCI Command Parameters (0x12)

the quirk is not set bcz current fake detection does not mark the dongle
as fake with below version info.

< HCI Command: Read Local Version In.. (0x04|0x0001) plen 0  #1 [hci0]
> HCI Event: Command Complete (0x0e) plen 12                 #2 [hci0]
      Read Local Version Information (0x04|0x0001) ncmd 1
        Status: Success (0x00)
        HCI version: Bluetooth 4.0 (0x06) - Revision 12576 (0x3120)
        LMP version: Bluetooth 4.0 (0x06) - Subversion 8891 (0x22bb)
        Manufacturer: Cambridge Silicon Radio (10)

Link: https://bugzilla.kernel.org/show_bug.cgi?id=60824
Signed-off-by: Zijun Hu <zijuhu@qti.qualcomm.com>
---
 drivers/bluetooth/btusb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Paul Menzel Oct. 27, 2022, 11:18 a.m. UTC | #1
Dear Zijun,


Thank you for the patch.


Am 27.10.22 um 13:06 schrieb Zijun Hu:
> From: Zijun Hu <zijuhu@qti.qualcomm.com>

I‘d be more specific in the summary/title. Maybe:

Correct quirk check to include BT 4.0

> A CSR BT dongle fails to be enabled bcz it is not detected as fake

I’d write *because*.

> rightly, fixed by correcting fake detection condition.
> 
> below btmon error log says HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL is not set.
> 
> < HCI Command: Set Event Filter (0x03|0x0005) plen 1        #23 [hci0]
>          Type: Clear All Filters (0x00)
>> HCI Event: Command Complete (0x0e) plen 4                 #24 [hci0]
>        Set Event Filter (0x03|0x0005) ncmd 1
>          Status: Invalid HCI Command Parameters (0x12)
> 
> the quirk is not set bcz current fake detection does not mark the dongle
> as fake with below version info.
> 
> < HCI Command: Read Local Version In.. (0x04|0x0001) plen 0  #1 [hci0]
>> HCI Event: Command Complete (0x0e) plen 12                 #2 [hci0]
>        Read Local Version Information (0x04|0x0001) ncmd 1
>          Status: Success (0x00)
>          HCI version: Bluetooth 4.0 (0x06) - Revision 12576 (0x3120)
>          LMP version: Bluetooth 4.0 (0x06) - Subversion 8891 (0x22bb)
>          Manufacturer: Cambridge Silicon Radio (10)
> 
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=60824
> Signed-off-by: Zijun Hu <zijuhu@qti.qualcomm.com>

Please add a Fixes: tag.


Kind regards,

Paul


> ---
>   drivers/bluetooth/btusb.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 420be2ee2acf..727469d073f9 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -2155,7 +2155,7 @@ static int btusb_setup_csr(struct hci_dev *hdev)
>   		is_fake = true;
>   
>   	else if (le16_to_cpu(rp->lmp_subver) <= 0x22bb &&
> -		 le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_4_0)
> +		 le16_to_cpu(rp->hci_ver) >= BLUETOOTH_VER_4_0)
>   		is_fake = true;
>   
>   	/* Other clones which beat all the above checks */
  
quic_zijuhu Oct. 28, 2022, 2:57 a.m. UTC | #2
On 10/27/2022 7:18 PM, Paul Menzel wrote:
> Dear Zijun,
> 
> 
> Thank you for the patch.
> 
> 
> Am 27.10.22 um 13:06 schrieb Zijun Hu:
>> From: Zijun Hu <zijuhu@qti.qualcomm.com>
> 
> I‘d be more specific in the summary/title. Maybe:
> 
> Correct quirk check to include BT 4.0
> 
>> A CSR BT dongle fails to be enabled bcz it is not detected as fake
> 
> I’d write *because*.
> 
>> rightly, fixed by correcting fake detection condition.
>>
>> below btmon error log says HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL is not set.
>>
>> < HCI Command: Set Event Filter (0x03|0x0005) plen 1        #23 [hci0]
>>          Type: Clear All Filters (0x00)
>>> HCI Event: Command Complete (0x0e) plen 4                 #24 [hci0]
>>        Set Event Filter (0x03|0x0005) ncmd 1
>>          Status: Invalid HCI Command Parameters (0x12)
>>
>> the quirk is not set bcz current fake detection does not mark the dongle
>> as fake with below version info.
>>
>> < HCI Command: Read Local Version In.. (0x04|0x0001) plen 0  #1 [hci0]
>>> HCI Event: Command Complete (0x0e) plen 12                 #2 [hci0]
>>        Read Local Version Information (0x04|0x0001) ncmd 1
>>          Status: Success (0x00)
>>          HCI version: Bluetooth 4.0 (0x06) - Revision 12576 (0x3120)
>>          LMP version: Bluetooth 4.0 (0x06) - Subversion 8891 (0x22bb)
>>          Manufacturer: Cambridge Silicon Radio (10)
>>
>> Link: https://bugzilla.kernel.org/show_bug.cgi?id=60824
>> Signed-off-by: Zijun Hu <zijuhu@qti.qualcomm.com>
> 
> Please add a Fixes: tag.
> 
> 
> Kind regards,
> 
> Paul
> 
> 
>> ---
>>   drivers/bluetooth/btusb.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
>> index 420be2ee2acf..727469d073f9 100644
>> --- a/drivers/bluetooth/btusb.c
>> +++ b/drivers/bluetooth/btusb.c
>> @@ -2155,7 +2155,7 @@ static int btusb_setup_csr(struct hci_dev *hdev)
>>           is_fake = true;
>>         else if (le16_to_cpu(rp->lmp_subver) <= 0x22bb &&
>> -         le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_4_0)
>> +         le16_to_cpu(rp->hci_ver) >= BLUETOOTH_VER_4_0)
>>           is_fake = true;
>>         /* Other clones which beat all the above checks */

thank you Paul for your code review.
i am sorry, please Ignore this wrong fix.
the enable failure should be  caused that below fix is not be picked up
https://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next.git/commit/?id=b3cf94c8b6b2f1a2b94825a025db291da2b151fd
  

Patch

diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index 420be2ee2acf..727469d073f9 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -2155,7 +2155,7 @@  static int btusb_setup_csr(struct hci_dev *hdev)
 		is_fake = true;
 
 	else if (le16_to_cpu(rp->lmp_subver) <= 0x22bb &&
-		 le16_to_cpu(rp->hci_ver) > BLUETOOTH_VER_4_0)
+		 le16_to_cpu(rp->hci_ver) >= BLUETOOTH_VER_4_0)
 		is_fake = true;
 
 	/* Other clones which beat all the above checks */