On Mon, Oct 05, 2020 at 07:14:44PM +0200, Marcel Holtmann wrote:
> Hi Greg,
> 
> >>>>>>>>>>> This reverts commit 0eee35bdfa3b472cc986ecc6ad76293fdcda59e2 as it
> >>>>>>>>>>> breaks all bluetooth connections on my machine.
> >>>>>>>>>>> 
> >>>>>>>>>>> Cc: Marcel Holtmann <mar...@holtmann.org>
> >>>>>>>>>>> Cc: Sathish Narsimman <sathish.narasim...@intel.com>
> >>>>>>>>>>> Fixes: 0eee35bdfa3b ("Bluetooth: Update resolving list when 
> >>>>>>>>>>> updating whitelist")
> >>>>>>>>>>> Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
> >>>>>>>>>>> ---
> >>>>>>>>>>> net/bluetooth/hci_request.c | 41 
> >>>>>>>>>>> ++-----------------------------------
> >>>>>>>>>>> 1 file changed, 2 insertions(+), 39 deletions(-)
> >>>>>>>>>>> 
> >>>>>>>>>>> This has been bugging me for since 5.9-rc1, when all bluetooth 
> >>>>>>>>>>> devices
> >>>>>>>>>>> stopped working on my desktop system.  I finally got the time to 
> >>>>>>>>>>> do
> >>>>>>>>>>> bisection today, and it came down to this patch.  Reverting it on 
> >>>>>>>>>>> top of
> >>>>>>>>>>> 5.9-rc7 restored bluetooth devices and now my input devices 
> >>>>>>>>>>> properly
> >>>>>>>>>>> work.
> >>>>>>>>>>> 
> >>>>>>>>>>> As it's almost 5.9-final, any chance this can be merged now to 
> >>>>>>>>>>> fix the
> >>>>>>>>>>> issue?
> >>>>>>>>>> 
> >>>>>>>>>> can you be specific what breaks since our guys and I also think the
> >>>>>>>>>> ChromeOS guys have been testing these series of patches heavily.
> >>>>>>>>> 
> >>>>>>>>> My bluetooth trackball does not connect at all.  With this 
> >>>>>>>>> reverted, it
> >>>>>>>>> all "just works".
> >>>>>>>>> 
> >>>>>>>>> Same I think for a Bluetooth headset, can check that again if you 
> >>>>>>>>> really
> >>>>>>>>> need me to, but the trackball is reliable here.
> >>>>>>>>> 
> >>>>>>>>>> When you run btmon does it indicate any errors?
> >>>>>>>>> 
> >>>>>>>>> How do I run it and where are the errors displayed?
> >>>>>>>> 
> >>>>>>>> you can do btmon -w trace.log and just let it run like tcdpump.
> >>>>>>> 
> >>>>>>> Ok, attached.
> >>>>>>> 
> >>>>>>> The device is not connecting, and then I open the gnome bluetooth 
> >>>>>>> dialog
> >>>>>>> and it scans for devices in the area, but does not connect to my
> >>>>>>> existing devices at all.
> >>>>>>> 
> >>>>>>> Any ideas?
> >>>>>> 
> >>>>>> the trace file is from -rc7 or from -rc7 with this patch reverted?
> >>>>>> 
> >>>>>> I asked, because I see no hint that anything goes wrong. However I 
> >>>>>> have a suspicion if you bisected it to this patch.
> >>>>>> 
> >>>>>> diff --git a/net/bluetooth/hci_request.c b/net/bluetooth/hci_request.c
> >>>>>> index e0269192f2e5..94c0daa9f28d 100644
> >>>>>> --- a/net/bluetooth/hci_request.c
> >>>>>> +++ b/net/bluetooth/hci_request.c
> >>>>>> @@ -732,7 +732,7 @@ static int add_to_white_list(struct hci_request 
> >>>>>> *req,
> >>>>>>              return -1;
> >>>>>> 
> >>>>>>      /* White list can not be used with RPAs */
> >>>>>> -       if (!allow_rpa && !use_ll_privacy(hdev) &&
> >>>>>> +       if (!allow_rpa &&
> >>>>>>          hci_find_irk_by_addr(hdev, &params->addr, params->addr_type)) 
> >>>>>> {
> >>>>>>              return -1;
> >>>>>>      }
> >>>>>> @@ -812,7 +812,7 @@ static u8 update_white_list(struct hci_request 
> >>>>>> *req)
> >>>>>>              }
> >>>>>> 
> >>>>>>              /* White list can not be used with RPAs */
> >>>>>> -               if (!allow_rpa && !use_ll_privacy(hdev) &&
> >>>>>> +               if (!allow_rpa &&
> >>>>>>                  hci_find_irk_by_addr(hdev, &b->bdaddr, 
> >>>>>> b->bdaddr_type)) {
> >>>>>>                      return 0x00;
> >>>>>>              }
> >>>>>> 
> >>>>>> 
> >>>>>> If you just do the above, does thing work for you again?
> >>>>> 
> >>>>> Corrupted white-space issues aside, yes, it works!
> >>>> 
> >>>> I just pasted it from a different terminal ;)
> >>>> 
> >>>>> I am running 5.9-rc8 with just this change on it and my tracball works
> >>>>> just fine.
> >>>>> 
> >>>>>> My suspicion is that the use_ll_privacy check is the wrong one here. 
> >>>>>> It only checks if hardware feature is available, not if it is also 
> >>>>>> enabled.
> >>>>> 
> >>>>> How would one go about enabling such a hardware feature if they wanted
> >>>>> to?  :)
> >>>> 
> >>>> I need to understand what is going wrong for you. I have a suspicion,
> >>>> but first I need to understand what kind of device you have. I hope
> >>>> the trace file is enough.
> >>> 
> >>> If you need any other information, just let me know, this is a USB
> >>> Bluetooth controller from Intel:
> >>> 
> >>>   $ lsusb | grep Blue
> >>>   Bus 009 Device 002: ID 8087:0029 Intel Corp. AX200 Bluetooth
> >>> 
> >>> And the output of usb-devices for it:
> >>>   T:  Bus=09 Lev=01 Prnt=01 Port=04 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
> >>>   D:  Ver= 2.01 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
> >>>   P:  Vendor=8087 ProdID=0029 Rev=00.01
> >>>   C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
> >>>   I:  If#=0x0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
> >>>   I:  If#=0x1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
> >> 
> >> I already figured out that it is one of our controllers. The trace file 
> >> gives it away.
> >> 
> >> So my suspicion is that the device you want to connect to uses RPA (aka 
> >> random addresses). And we added support for resolving them in the 
> >> firmware. Your hardware does support that, but the host side is not fully 
> >> utilizing it and thus your device is filtered out.
> > 
> > Dude, get an email client that line-wraps :)
> > 
> >> If I am not mistaken, then the use_ll_privacy() check in these two 
> >> specific places need to be replaced with LL Privacy Enabled check. And 
> >> then the allow_rpa condition will do its job as expected.
> >> 
> >> We can confirm this if you send me a trace with the patch applied.
> > 
> > Want me to disconnect the device and then reconnect it using
> > bluetootctl?  I'll go do that now...
> > 
> > Ok, it's attached, I did:
> > 
> > $ bluetoothctl disconnect F1:85:91:79:73:70
> > Attempting to disconnect from F1:85:91:79:73:70
> > [CHG] Device F1:85:91:79:73:70 ServicesResolved: no
> > Successful disconnected
> > 
> > And then the gnome bluetooth daemon (or whatever it has) reconnected it
> > automatically, so you can see the connection happen, and some movements
> > in the log.
> > 
> > If there's anything else you need, just let me know.
> 
> so the trace file indicates that you are using static addresses and not RPAs. 
> Now I am confused.
> 
> What is the content of 
> /sys/kernel/debug/bluetooth/hci0/identity_resolving_keys?

f1:85:91:79:73:70 (type 1) f02567096e8537e5dac1cadf548fa750 00:00:00:00:00:00

> The only way I can explain this if you have an entry in that file, but the 
> device is not using it.
> 
> If you have btmgmt (from bluez.git) you can try "./tools/btmgmt irks” to 
> clear that list and try again.

Ok, I did that, and reconnected, this is still with the kernel that has
the patch.  Want me to reboot to a "clean" 5.9-rc8?

thanks,

greg k-h

Reply via email to