Bluetooth: qca: fix wcn3991 device address check
Subsystems (3)
PATCH 1/1 Bluetooth: qca: fix wcn3991 device address check
Qualcomm Bluetooth controllers may not have been provisioned with a valid device address and instead end up using the default address 00:00:00:00:5a:ad.
This address is now used to determine if a controller has a valid address or if one needs to be provided through devicetree or by user space before the controller can be used.
It turns out that the WCN3991 controllers used in Chromium Trogdor machines use a different default address, 39:98:00:00:5a:ad, which also needs to be marked as invalid so that the correct address is fetched from the devicetree.
Qualcomm has unfortunately not yet provided any answers as to whether the 39:98 encodes a hardware id and if there are other variants of the default address that needs to be handled by the driver.
For now, add the Trogdor WCN3991 default address to the device address check to avoid having these controllers start with the default address instead of their assigned addresses.
--- drivers/bluetooth/btqca.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
Luiz and Doug,
As the offending commit is now on its way into 6.9, let's just add the default address that the Trogdor machines uses to the address check.
We can always amend this when/if Qualcomm provides some more details, or, in the worst case, when users report that they need to re-pair their Bluetooth gadgets if there are further variations of the default address.
Johan
drivers/bluetooth/btqca.c +4 -1
@@ -16,6 +16,7 @@#define VERSION "0.1"#define QCA_BDADDR_DEFAULT (&(bdaddr_t) {{ 0xad, 0x5a, 0x00, 0x00, 0x00, 0x00 }}) +#define QCA_BDADDR_WCN3991 (&(bdaddr_t) {{ 0xad, 0x5a, 0x00, 0x00, 0x98, 0x39 }})int qca_read_soc_version (struct hci_dev *hdev,struct qca_btsoc_version *ver,enum qca_btsoc_type soc_type)
@@ -638,8 +639,10 @@ static int qca_check_bdaddr(struct hci_dev *hdev) } bda = (struct hci_rp_read_bd_addr *)skb->data; -if (!bacmp (&bda->bdaddr,QCA_BDADDR_DEFAULT )) +if (!bacmp (&bda->bdaddr,QCA_BDADDR_DEFAULT ) || + !bacmp (&bda->bdaddr,QCA_BDADDR_WCN3991 )) {set_bit (HCI_QUIRK_USE_BDADDR_PROPERTY , &hdev->quirks); + }kfree_skb (skb);
Signature · 1 line
2.43.2
This is automated email and please do not reply to this email!
Dear submitter,
Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=847735
---Test result---
Test Summary:
CheckPatch PASS 0.67 seconds GitLint PASS 0.32 seconds SubjectPrefix PASS 0.12 seconds BuildKernel PASS 30.02 seconds CheckAllWarning PASS 32.43 seconds CheckSparse PASS 38.00 seconds CheckSmatch FAIL 36.16 seconds BuildKernel32 PASS 28.87 seconds TestRunnerSetup PASS 519.69 seconds TestRunner_l2cap-tester PASS 18.30 seconds TestRunner_iso-tester PASS 30.96 seconds TestRunner_bnep-tester PASS 4.69 seconds TestRunner_mgmt-tester FAIL 111.19 seconds TestRunner_rfcomm-tester PASS 7.19 seconds TestRunner_sco-tester PASS 10.92 seconds TestRunner_ioctl-tester PASS 7.60 seconds TestRunner_mesh-tester PASS 5.72 seconds TestRunner_smp-tester PASS 6.72 seconds TestRunner_userchan-tester PASS 4.87 seconds IncrementalBuild PASS 27.66 seconds
Details
##############################
Test: CheckSmatch - FAIL
Desc: Run smatch tool with source
Output:
Segmentation fault (core dumped)
make[4]: *** [scripts/Makefile.build:244: net/bluetooth/hci_core.o] Error 139 make[4]: *** Deleting file 'net/bluetooth/hci_core.o'
make[3]: *** [scripts/Makefile.build:485: net/bluetooth] Error 2 make[2]: *** [scripts/Makefile.build:485: net] Error 2
make[2]: *** Waiting for unfinished jobs....
Segmentation fault (core dumped)
make[4]: *** [scripts/Makefile.build:244: drivers/bluetooth/bcm203x.o] Error 139 make[4]: *** Deleting file 'drivers/bluetooth/bcm203x.o'
make[4]: *** Waiting for unfinished jobs....
Segmentation fault (core dumped)
make[4]: *** [scripts/Makefile.build:244: drivers/bluetooth/bpa10x.o] Error 139 make[4]: *** Deleting file 'drivers/bluetooth/bpa10x.o'
make[3]: *** [scripts/Makefile.build:485: drivers/bluetooth] Error 2 make[2]: *** [scripts/Makefile.build:485: drivers] Error 2
make[1]: *** [/github/workspace/src/src/Makefile:1919: .] Error 2
make: *** [Makefile:240: __sub-make] Error 2
##############################
Test: TestRunner_mgmt-tester - FAIL
Desc: Run mgmt-tester with test-runner
Output:
Total: 492, Passed: 489 (99.4%), Failed: 1, Not Run: 2
Failed Test Cases
LL Privacy - Add Device 7 (AL is full) Failed 0.198 seconds
---
Regards,
Linux Bluetooth
Hi,
Quoted 34 lines · Johan Hovold
Qualcomm Bluetooth controllers may not have been provisioned with a valid device address and instead end up using the default address 00:00:00:00:5a:ad.
This address is now used to determine if a controller has a valid address or if one needs to be provided through devicetree or by user space before the controller can be used.
It turns out that the WCN3991 controllers used in Chromium Trogdor machines use a different default address, 39:98:00:00:5a:ad, which also needs to be marked as invalid so that the correct address is fetched from the devicetree.
Qualcomm has unfortunately not yet provided any answers as to whether the 39:98 encodes a hardware id and if there are other variants of the default address that needs to be handled by the driver.
For now, add the Trogdor WCN3991 default address to the device address check to avoid having these controllers start with the default address instead of their assigned addresses.
Fixes 00567f70051a ("Bluetooth: qca: fix invalid device address check")Cc [email protected] # 6.5Cc Doug Anderson <[email protected]>Cc Janaki Ramaiah Thota <[email protected]>Signed-off-by Johan Hovold <[email protected]>--- drivers/bluetooth/btqca.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)Luiz and Doug,
Quoted 7 lines
As the offending commit is now on its way into 6.9, let's just add the default address that the Trogdor machines uses to the address check.
We can always amend this when/if Qualcomm provides some more details, or, in the worst case, when users report that they need to re-pair their Bluetooth gadgets if there are further variations of the default address.
I can confirm that this at least gets my boards using their proper BT address. While I still wonder if this is the best strategy to go with, I can agree that this is an expedient fix to land it and works:
We can continue discussion in response to your original patch [1] to figure out if this is going to be our long term strategy or not.
This patch was applied to bluetooth/bluetooth-next.git (master) by Luiz Augusto von Dentz <[email protected]>:
Hello:
This patch was applied to bluetooth/bluetooth-next.git (master) by Luiz Augusto von Dentz <[email protected]>:
Quoted 9 lines · On Thu, 25 Apr 2024 09:55:03 +0200 you wrote:
Qualcomm Bluetooth controllers may not have been provisioned with a valid device address and instead end up using the default address 00:00:00:00:5a:ad.
This address is now used to determine if a controller has a valid address or if one needs to be provided through devicetree or by user space before the controller can be used.
[...]
Here is the summary with links:
- Bluetooth: qca: fix wcn3991 device address check
https://git.kernel.org/bluetooth/bluetooth-next/c/0a0f9014b784
You are awesome, thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html