]> www.infradead.org Git - users/jedix/linux-maple.git/commit
Bluetooth: hci_event: Fix handling of HCI_EV_LE_DIRECT_ADV_REPORT
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Thu, 20 Mar 2025 15:22:23 +0000 (11:22 -0400)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tue, 25 Mar 2025 19:22:32 +0000 (15:22 -0400)
commit3a7fdfb7d876910cfe734488f553dbbc938f8f16
treebda9c8e13b74b40a727f3df7fcdc09cdb1a4ae56
parent1f77c05408c96bc0b58ae476a9cadc9e5b9cfd0f
Bluetooth: hci_event: Fix handling of HCI_EV_LE_DIRECT_ADV_REPORT

Some controllers seems to generate HCI_EV_LE_DIRECT_ADV_REPORT even when
scan_filter is not set to 0x02 or 0x03, which indicates that local
privacy is enabled, causing them to be ignored thus breaking
auto-connect logic:

< HCI Command: LE Set Scan Parameters (0x08|0x000b) plen 7
        Type: Passive (0x00)
        Interval: 60.000 msec (0x0060)
        Window: 30.000 msec (0x0030)
        Own address type: Public (0x00)
        Filter policy: Ignore not in accept list (0x01)
...
> HCI Event: LE Meta Event (0x3e) plen 18
      LE Direct Advertising Report (0x0b)
        Num reports: 1
        Event type: Connectable directed - ADV_DIRECT_IND (0x01)
        Address type: Random (0x01)
        Address: XX:XX:XX:XX:XX:XX (Static)
        Direct address type: Random (0x01)
        Direct address: XX:XX:XX:XX:XX:XX (Non-Resolvable)
        RSSI: -54 dBm (0xca)

So this attempts to mitigate the above problem by skipping checking of
direct_addr if local privacy is not enabled.

Link: https://github.com/bluez/bluez/issues/1138
Fixes: e209e5ccc5ac ("Bluetooth: MGMT: Mark LL Privacy as stable")
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
net/bluetooth/hci_event.c