From a69fa692b094347e3a1dbcd9198d426f671dec0c Mon Sep 17 00:00:00 2001 From: Andrew Drake Date: Thu, 30 Jun 2022 00:39:58 -0700 Subject: [PATCH] adapter: Fix advertising monitor on Linux 5.12-5.17 The existing code assumes that, if a device supports advertising monitor offload, DEVICE_FOUND events can be ignored since the kernel will send ADV_MONITOR_DEVICE_FOUND events instead. Unfortunately, these new events were added in 5.18, but offload was added in 5.12. This patch adds a check on the MGMT API version so we can process the older DEVICE_FOUND events when the new events are not supported. Fixes: https://github.com/bluez/bluez/issues/357 --- src/adapter.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/adapter.c b/src/adapter.c index c4d5ad2e2..6e33281c1 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -6907,7 +6907,9 @@ void btd_adapter_update_found_device(struct btd_adapter *adapter, bool duplicate = false; struct queue *matched_monitors = NULL; - if (!btd_adv_monitor_offload_enabled(adapter->adv_monitor_manager)) { + if (!btd_adv_monitor_offload_enabled(adapter->adv_monitor_manager) || + (MGMT_VERSION(mgmt_version, mgmt_revision) < + MGMT_VERSION(1, 22))) { if (bdaddr_type != BDADDR_BREDR) ad = bt_ad_new_with_data(data_len, data); -- 2.47.3