From patchwork Mon Nov 15 09:06:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Archie Pusaka X-Patchwork-Id: 12619113 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EF959C433F5 for ; Mon, 15 Nov 2021 09:06:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CE9A56321A for ; Mon, 15 Nov 2021 09:06:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236481AbhKOJJu (ORCPT ); Mon, 15 Nov 2021 04:09:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37876 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236411AbhKOJJf (ORCPT ); Mon, 15 Nov 2021 04:09:35 -0500 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 09930C061766 for ; Mon, 15 Nov 2021 01:06:39 -0800 (PST) Received: by mail-yb1-xb4a.google.com with SMTP id v7-20020a25ab87000000b005c2130838beso25982358ybi.0 for ; Mon, 15 Nov 2021 01:06:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:message-id:mime-version:subject:from:to:cc; bh=jDHvBd+Hfi1pIRJAz3nMt35Oxhkb5zlffgJspuw39Yg=; b=ENkk1xMvWD/C93oBmTgAjhFUfFUwnniIpLAFsewCK80x2lS7ARmrVnrf+rpVJk3BaC 1dXvzrBRijj4FFXSNBhxgeFNrNlv0K/7OmOOWz43j341B4EBaxAk861WC9B/a2O9Tiyp U/88CQH+dUO15aYoYGwgNXS0alrthlcT7f7kQktZBKCPv+7rKryEJVxx0aALltDIaTVp 7gTfKTN538qSmQraYbepg9pBucUNuqN017I2hBqRRffMYVir2yTd4LO6XKK756JF+eBr N5wyBiAkDYMTSQi6xIpo55MPxLv3BBOjVmOv1CRNHG9O+mxr5tABTzriOB+6IbZ3uFdw DRJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=jDHvBd+Hfi1pIRJAz3nMt35Oxhkb5zlffgJspuw39Yg=; b=rxbo5eJ9qH2vhf8ZJLG92i5WPP0x61pOWFxIHgx4Him+WBB7Xc/OR3FAeyepM7QE6n i9P6XzpA7cY8JPSG7ecEMDAmluBf/ahHM4brB66f6UTrlg0KngLXX9KssA9tAMcn6DsW kC17x+EbEraTTjM6a+dxv/QaGrvA26eqNImdkWz4W696rTPc3ddNy9gM9h8/+6t3h6rx iQ/kvgQtc83mFE+9T+xdRattZKdSG93D1vpZxm+yg0O3C91SaI1kq1geoPB+GFn0s+1G QMMGgXoXcEbjRsNwjrWPEgCUoz7ZyCIhIKEIWeAbibnT+NWGUUQcQqH60M5dHTGaZQDR YTkA== X-Gm-Message-State: AOAM532sqKhaiTSZKYq3j2JDefJtUa4dLa37OKpuKQLyOjhx0Ab35QDb 5CfatFraw4/sMjyvrJ5YgMAiHE+G1f9hwefjj4kdRxldyXuftH6OXdJJ/Sswci1wLOqayiT2xWf pIe4y81UEYZUrWfUGOrbMD/AixJkr8fXeFmJO8enOhGvjZ0p97iJBlUyARR30kL05w1FP5aTIYH hX X-Google-Smtp-Source: ABdhPJwseCU9bCD3wSt8xrNzfaj6VcEHdfujRPJBzxHBeql3Cgz35nC2KNnFen/OXykA2D7X4x+6DYCZJ8nf X-Received: from apusaka-p920.tpe.corp.google.com ([2401:fa00:1:10:5c8f:7191:e5ca:14fb]) (user=apusaka job=sendgmr) by 2002:a25:ba0f:: with SMTP id t15mr42098345ybg.62.1636967198149; Mon, 15 Nov 2021 01:06:38 -0800 (PST) Date: Mon, 15 Nov 2021 17:06:22 +0800 Message-Id: <20211115170538.Bluez.v2.1.I9fc087b25433a9347b2d8c8ff7a25fadf448ef49@changeid> Mime-Version: 1.0 X-Mailer: git-send-email 2.34.0.rc1.387.gb447b232ab-goog Subject: [Bluez PATCH v2 1/3] Listen and process remote name resolving failure From: Archie Pusaka To: linux-bluetooth , Luiz Augusto von Dentz , Marcel Holtmann Cc: CrosBT Upstreaming , Archie Pusaka Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org From: Archie Pusaka When Remote Name Resolve ends with failure, record this occurrence and prevent remote name resolving for the same device for some time. Increase the time duration for subsequent failures. --- Hi maintainers, This is the patch series for remote name request as was discussed here. https://patchwork.kernel.org/project/bluetooth/patch/20211028191805.1.I35b7f3a496f834de6b43a32f94b6160cb1467c94@changeid/ Please also review the corresponding kernel space change. Changes in v2: * Stay silent instead of sending MGMT_OP_CONFIRM_NAME with DONT_CARE flag. lib/mgmt.h | 1 + src/adapter.c | 15 +++++++++++++-- src/device.c | 23 +++++++++++++++++++++++ src/device.h | 2 ++ 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/lib/mgmt.h b/lib/mgmt.h index 0d1678f01d..468d31cafb 100644 --- a/lib/mgmt.h +++ b/lib/mgmt.h @@ -856,6 +856,7 @@ struct mgmt_ev_auth_failed { #define MGMT_DEV_FOUND_CONFIRM_NAME 0x01 #define MGMT_DEV_FOUND_LEGACY_PAIRING 0x02 #define MGMT_DEV_FOUND_NOT_CONNECTABLE 0x04 +#define MGMT_DEV_FOUND_NAME_RESOLVE_FAILED 0x10 #define MGMT_EV_DEVICE_FOUND 0x0012 struct mgmt_ev_device_found { diff --git a/src/adapter.c b/src/adapter.c index d0d38621b8..0003bc5d42 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -6989,6 +6989,7 @@ static void update_found_devices(struct btd_adapter *adapter, uint8_t bdaddr_type, int8_t rssi, bool confirm, bool legacy, bool not_connectable, + bool name_resolve_failed, const uint8_t *data, uint8_t data_len) { struct btd_device *dev; @@ -7081,6 +7082,9 @@ static void update_found_devices(struct btd_adapter *adapter, device_set_legacy(dev, legacy); + if (name_resolve_failed) + device_name_resolve_fail(dev); + if (adapter->filtered_discovery) device_set_rssi_with_delta(dev, rssi, 0); else @@ -7151,7 +7155,10 @@ static void update_found_devices(struct btd_adapter *adapter, if (g_slist_find(adapter->discovery_found, dev)) return; - if (confirm) + /* If name is unknown but it's not allowed to resolve, don't send + * MGMT_OP_CONFIRM_NAME. + */ + if (confirm && (name_known || device_name_resolve_allowed(dev))) confirm_name(adapter, bdaddr, bdaddr_type, name_known); adapter->discovery_found = g_slist_prepend(adapter->discovery_found, @@ -7201,6 +7208,8 @@ static void device_found_callback(uint16_t index, uint16_t length, uint32_t flags; bool confirm_name; bool legacy; + bool not_connectable; + bool name_resolve_failed; char addr[18]; if (length < sizeof(*ev)) { @@ -7230,10 +7239,12 @@ static void device_found_callback(uint16_t index, uint16_t length, confirm_name = (flags & MGMT_DEV_FOUND_CONFIRM_NAME); legacy = (flags & MGMT_DEV_FOUND_LEGACY_PAIRING); + not_connectable = (flags & MGMT_DEV_FOUND_NOT_CONNECTABLE); + name_resolve_failed = (flags & MGMT_DEV_FOUND_NAME_RESOLVE_FAILED); update_found_devices(adapter, &ev->addr.bdaddr, ev->addr.type, ev->rssi, confirm_name, legacy, - flags & MGMT_DEV_FOUND_NOT_CONNECTABLE, + not_connectable, name_resolve_failed, eir, eir_len); } diff --git a/src/device.c b/src/device.c index fdc2d50a47..699faeba3b 100644 --- a/src/device.c +++ b/src/device.c @@ -79,6 +79,8 @@ #define GATT_INCLUDE_UUID_STR "2802" #define GATT_CHARAC_UUID_STR "2803" +#define NAME_RESOLVE_RETRY_DELAY 120 /* seconds */ + static DBusConnection *dbus_conn = NULL; static unsigned service_state_cb_id; @@ -272,6 +274,9 @@ struct btd_device { GIOChannel *att_io; guint store_id; + + time_t name_resolve_earliest_allow_time; + uint8_t name_resolve_fail_count; }; static const uint16_t uuid_list[] = { @@ -4361,6 +4366,24 @@ bool device_name_known(struct btd_device *device) return device->name[0] != '\0'; } +bool device_name_resolve_allowed(struct btd_device *device) +{ + return time(NULL) >= device->name_resolve_earliest_allow_time; +} + +void device_name_resolve_fail(struct btd_device *device) +{ + if (!device) + return; + + /* Punish this device by not allowing name resolve for some time. + * increase punishment time for subsequent failures. + */ + device->name_resolve_fail_count++; + device->name_resolve_earliest_allow_time = time(NULL) + + NAME_RESOLVE_RETRY_DELAY * device->name_resolve_fail_count; +} + void device_set_class(struct btd_device *device, uint32_t class) { if (device->class == class) diff --git a/src/device.h b/src/device.h index 5f615cb4b6..76d79855f8 100644 --- a/src/device.h +++ b/src/device.h @@ -25,6 +25,8 @@ void btd_device_device_set_name(struct btd_device *device, const char *name); void device_store_cached_name(struct btd_device *dev, const char *name); void device_get_name(struct btd_device *device, char *name, size_t len); bool device_name_known(struct btd_device *device); +bool device_name_resolve_allowed(struct btd_device *device); +void device_name_resolve_fail(struct btd_device *device); void device_set_class(struct btd_device *device, uint32_t class); void device_update_addr(struct btd_device *device, const bdaddr_t *bdaddr, uint8_t bdaddr_type); From patchwork Mon Nov 15 09:06:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Archie Pusaka X-Patchwork-Id: 12619117 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 00B1DC433FE for ; Mon, 15 Nov 2021 09:07:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D9F2E63223 for ; Mon, 15 Nov 2021 09:07:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230432AbhKOJJz (ORCPT ); Mon, 15 Nov 2021 04:09:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37914 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236478AbhKOJJp (ORCPT ); Mon, 15 Nov 2021 04:09:45 -0500 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6F717C061746 for ; Mon, 15 Nov 2021 01:06:48 -0800 (PST) Received: by mail-yb1-xb4a.google.com with SMTP id t24-20020a252d18000000b005c225ae9e16so25916772ybt.15 for ; Mon, 15 Nov 2021 01:06:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=jbHbixo7emzfL/F0ImZygG8UOnWaD9volVJgAu+usN8=; b=r41eLf2MZUIr3RIjxKHBY/OSqJYh1XIq9mxFXAS3JVIL4m0gO7w/PScHjTn7M97ooe 6tbVqzpXX3VJ56pbnp4LfAWeGbLt2M7BfJ/lOAkfbIYLh5dnjzEjrB3cdySLSPwNy6rZ PF1CSBLrZd4Odm2hHrDUd0lBYnpWP08Zm+l6mrbOwZtAnUd580P6nFGmY1UNXjuBomt9 rVPVVCStVlvjOfcfSRGXO6NQHOidiC3yV7WONuNXA4xjPnu+8D5WMu6/edMfMhQAhqgb Pva29aSPHWxlUTz285ByCKH8xV1elFe0i21Tw0Sr53NxoRbCv2EyU4X3aXsNWgRxlTVL PRcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=jbHbixo7emzfL/F0ImZygG8UOnWaD9volVJgAu+usN8=; b=Sm6c4A8S9ZMVFnFkJy/L+KQkTb63Iyr0nSouJ2l4PqOUlbpfDCXEHdQNVo/1legcWF 9uG5Sx/tqSY940yLODoJFRlBDW0VKbo7cNMd1tS8WFkEE0WMj2Jh8VNVUCOC5eGeavGg 1LOMEZj24gW3s8+O3/NIr04NJThkUhV2qZp9S+OGBvh49OUFOpdVIVb5fnrGRmM8rZIV Sb67UeMN9i091e8XlFkqH4zUEUVK0OCDO59c+fytFw6E9eKoN05mdNDLUxvA8wlGj7vq Yc25R7SNgNIVcip2zumvRqqMfwJ5mHLOqdSS3hU4hAKVOwP0yOIGiBlBEXXCyJvjEpNW EaAQ== X-Gm-Message-State: AOAM533uR7hacSnRVysuMWTRFu7j4zfeoH5xutf8NQHnuH4ZTBcrC2nd H28Xd03npdGRjbh8ZOB3M8wiU7mlm09Y+Y9iyd3aGXqsSEDpJYOhNxd2BwlYP0TMuwVKU6SRKkr wJNtFrYXcKXWpCqssUA4npROPxWzGXTzSd+UQXlaVEBxZdwxIW7D7xG4OTS91jcgjE2f2hSWgIP 4f X-Google-Smtp-Source: ABdhPJyEjQNN/e9iMzIgleD7X+iMiaMiFewPp/r/0iHlDVXo+ZDPt5nNp6K9o2wWU4nXaFUhmfl5swfYyw6b X-Received: from apusaka-p920.tpe.corp.google.com ([2401:fa00:1:10:5c8f:7191:e5ca:14fb]) (user=apusaka job=sendgmr) by 2002:a05:6902:724:: with SMTP id l4mr40386077ybt.544.1636967207683; Mon, 15 Nov 2021 01:06:47 -0800 (PST) Date: Mon, 15 Nov 2021 17:06:23 +0800 In-Reply-To: <20211115170538.Bluez.v2.1.I9fc087b25433a9347b2d8c8ff7a25fadf448ef49@changeid> Message-Id: <20211115170538.Bluez.v2.2.I08d192861aa6b2025fbc575a7e0caffaa6170ed5@changeid> Mime-Version: 1.0 References: <20211115170538.Bluez.v2.1.I9fc087b25433a9347b2d8c8ff7a25fadf448ef49@changeid> X-Mailer: git-send-email 2.34.0.rc1.387.gb447b232ab-goog Subject: [Bluez PATCH v2 2/3] device: Save remote name request attempts into cache file From: Archie Pusaka To: linux-bluetooth , Luiz Augusto von Dentz , Marcel Holtmann Cc: CrosBT Upstreaming , Archie Pusaka , Sonny Sasaka , Miao-chen Chou Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org From: Archie Pusaka Since a peer device is potentially removed if not discovered for more than 30 seconds, we would lost the remote name request activity when the device is rediscovered. This could end up with a remote name request much sooner than we intend it to be. Therefore, put the RNR record into a cache file, so we can recover it when the peer device is rediscovered. Reviewed-by: Sonny Sasaka Reviewed-by: Miao-chen Chou --- (no changes since v1) src/device.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 94 insertions(+), 2 deletions(-) diff --git a/src/device.c b/src/device.c index 699faeba3b..fa6e3abc37 100644 --- a/src/device.c +++ b/src/device.c @@ -568,6 +568,63 @@ void device_store_cached_name(struct btd_device *dev, const char *name) g_key_file_free(key_file); } +static void device_store_cached_name_resolve_attempts(struct btd_device *dev) +{ + char filename[PATH_MAX]; + char d_addr[18]; + GKeyFile *key_file; + GError *gerr = NULL; + char *data; + char *data_old; + gsize length = 0; + gsize length_old = 0; + uint64_t earliest_allowed; + unsigned int num_failures; + + if (device_address_is_private(dev)) { + DBG("Can't store name resolve for private addressed device %s", + dev->path); + return; + } + + ba2str(&dev->bdaddr, d_addr); + snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", + btd_adapter_get_storage_dir(dev->adapter), d_addr); + create_file(filename, 0600); + + key_file = g_key_file_new(); + if (!g_key_file_load_from_file(key_file, filename, 0, &gerr)) { + error("Unable to load key file from %s: (%s)", filename, + gerr->message); + g_error_free(gerr); + } + + earliest_allowed = (uint64_t) dev->name_resolve_earliest_allow_time; + num_failures = dev->name_resolve_fail_count; + + data_old = g_key_file_to_data(key_file, &length_old, NULL); + + g_key_file_set_uint64(key_file, "NameResolve", "EarliestAllowed", + earliest_allowed); + g_key_file_set_integer(key_file, "NameResolve", "NumFailures", + num_failures); + + data = g_key_file_to_data(key_file, &length, NULL); + + if ((length != length_old) || (memcmp(data, data_old, length))) { + if (!g_file_set_contents(filename, data, length, &gerr)) { + error("Unable set contents for %s: (%s)", filename, + gerr->message); + g_error_free(gerr); + } + } + + g_free(data); + g_free(data_old); + + g_key_file_free(key_file); +} + static void browse_request_free(struct browse_req *req) { struct btd_device *device = req->device; @@ -3277,6 +3334,36 @@ failed: return str; } +static void load_cached_name_resolve_attempts(struct btd_device *device, + const char *local, const char *peer) +{ + char filename[PATH_MAX]; + GKeyFile *key_file; + uint64_t earliest_allowed; + unsigned int num_failures; + + if (device_address_is_private(device)) + return; + + snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", local, peer); + + key_file = g_key_file_new(); + + if (!g_key_file_load_from_file(key_file, filename, 0, NULL)) + goto failed; + + earliest_allowed = g_key_file_get_uint64(key_file, "NameResolve", + "EarliestAllowed", NULL); + num_failures = g_key_file_get_uint64(key_file, "NameResolve", + "NumFailures", NULL); + + device->name_resolve_earliest_allow_time = earliest_allowed; + device->name_resolve_fail_count = (uint8_t) num_failures; + +failed: + g_key_file_free(key_file); +} + static struct csrk_info *load_csrk(GKeyFile *key_file, const char *group) { struct csrk_info *csrk; @@ -4284,6 +4371,7 @@ struct btd_device *device_create(struct btd_adapter *adapter, struct btd_device *device; char dst[18]; char *str; + const char *storage_dir; ba2str(bdaddr, dst); DBG("dst %s", dst); @@ -4299,13 +4387,15 @@ struct btd_device *device_create(struct btd_adapter *adapter, else device->le = true; - str = load_cached_name(device, btd_adapter_get_storage_dir(adapter), - dst); + storage_dir = btd_adapter_get_storage_dir(adapter); + str = load_cached_name(device, storage_dir, dst); if (str) { strcpy(device->name, str); g_free(str); } + load_cached_name_resolve_attempts(device, storage_dir, dst); + return device; } @@ -4382,6 +4472,8 @@ void device_name_resolve_fail(struct btd_device *device) device->name_resolve_fail_count++; device->name_resolve_earliest_allow_time = time(NULL) + NAME_RESOLVE_RETRY_DELAY * device->name_resolve_fail_count; + + device_store_cached_name_resolve_attempts(device); } void device_set_class(struct btd_device *device, uint32_t class) From patchwork Mon Nov 15 09:06:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Archie Pusaka X-Patchwork-Id: 12619115 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 90E89C433EF for ; Mon, 15 Nov 2021 09:07:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 68D226321A for ; Mon, 15 Nov 2021 09:07:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236575AbhKOJJw (ORCPT ); Mon, 15 Nov 2021 04:09:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234526AbhKOJJu (ORCPT ); Mon, 15 Nov 2021 04:09:50 -0500 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 679E4C061766 for ; Mon, 15 Nov 2021 01:06:55 -0800 (PST) Received: by mail-yb1-xb4a.google.com with SMTP id w5-20020a25ac05000000b005c55592df4dso25616535ybi.12 for ; Mon, 15 Nov 2021 01:06:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=CrUmcslhzzM6ekmANoCOB8Gym39OQf4Ao70U2CK1CIM=; b=V3kKQKDXgoRw6elyn+ps+y67RwrVhCdSQMWT1gMgC6F2Qpv5piO+QQHlFBmGoasSPB p7++/Ndj9JLgM+jpQ4AmDvAPQ8zpEj0+Bq9+kHwDXTOt5ygUtDKb3drVOCMKiGq8kAq2 o4HGCXE97MnYZLzQ0pipG58Oj1XrtWVbLqEyRa5ENU4TEwFRcKz+ito3gVO3PStrEqj/ TU9dxpFkpCrCt2MD2bPjPP3uMr1TRR4R99GC6WzlIY0F516AVWNkiyYhWGd/Lr/RKx/c c8i4dpkKoPQy6BgR32XVvqv4dAV8zE60lvr3CDGM6gLhZ1plOZupUQhhWE0BS60Xea3f x6Uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=CrUmcslhzzM6ekmANoCOB8Gym39OQf4Ao70U2CK1CIM=; b=JNMtHxkeS5FfdNz9GDQRpKIFvmGax/W70Uxo+JDpc77npi995CuVJF0/g0vi//+lNx KE+R63sedyxa+nOB2Jb+8R32JCxseGmoKIZrRSwPpDBrN04YFwJzPy5GPpc/uB7Ct5gY BforSpNACseHjUVmFCa+pOHaplxcqBA8NL4es0F8XDkqPuvRSws+5IOqQzcSEZg0WKew Jr4bEf0qSfI7afxiVEVX6ofp3YtDRg+osxy7bCda7zHtDPv5D/QpP3w8o3pZHPWu+Ad8 WFDJ8fK3HIIE8kXanwrnQuQcKesMhhI9FaeufO2mgbcOXolu+q7rsCBnsgYpObNJR6vK GXqg== X-Gm-Message-State: AOAM533IQVrQxnLqkYrxdNM6L3NDdfRYij+LQx0vN1gI0eCuLiQ1MRxm tvc363aVklW3tgM+3rRO4smHIyTtSPIql0QyDVLfa9SUPUh/WIWzc7VvwjoHBXn3mAUYWHlb6ES X3pUUdAZAZ10IXkzvk+JQAJcAJM684ORkVHiSXKgInXF/VmFrj+1fgj1UbaekfXRV2cR5wUJau3 Z6 X-Google-Smtp-Source: ABdhPJzHujGiYJ5+8ZV3kcQJlB3blI3mBMRZAF5hN5Y+n5JKSwWXWmF8i5GtzvlCkvurUxnvQ0kr4cGipxoR X-Received: from apusaka-p920.tpe.corp.google.com ([2401:fa00:1:10:5c8f:7191:e5ca:14fb]) (user=apusaka job=sendgmr) by 2002:a25:25d4:: with SMTP id l203mr40410179ybl.228.1636967214610; Mon, 15 Nov 2021 01:06:54 -0800 (PST) Date: Mon, 15 Nov 2021 17:06:24 +0800 In-Reply-To: <20211115170538.Bluez.v2.1.I9fc087b25433a9347b2d8c8ff7a25fadf448ef49@changeid> Message-Id: <20211115170538.Bluez.v2.3.I29367ca288fc8f4fcc3b4063425b791501c6534c@changeid> Mime-Version: 1.0 References: <20211115170538.Bluez.v2.1.I9fc087b25433a9347b2d8c8ff7a25fadf448ef49@changeid> X-Mailer: git-send-email 2.34.0.rc1.387.gb447b232ab-goog Subject: [Bluez PATCH v2 3/3] doc: Add Name Resolve Fail flag in device found event From: Archie Pusaka To: linux-bluetooth , Luiz Augusto von Dentz , Marcel Holtmann Cc: CrosBT Upstreaming , Archie Pusaka Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org From: Archie Pusaka Userspace should use this new flag to decide whether to do the remote name resolving or not, by sending Confirm Name MGMT command and set the appropriate flag. --- Changes in v2: * Update docs to reflect not sending DONT_CARE flag behavior. doc/mgmt-api.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/mgmt-api.txt b/doc/mgmt-api.txt index 97d33e30a1..340d8ffa85 100644 --- a/doc/mgmt-api.txt +++ b/doc/mgmt-api.txt @@ -4089,6 +4089,7 @@ Device Connected Event 1 Legacy Pairing 2 Reserved (not in use) 3 Initiated Connection + 4 Reserved (not in use) Device Disconnected Event @@ -4263,6 +4264,7 @@ Device Found Event 1 Legacy Pairing 2 Not Connectable 3 Reserved (not in use) + 4 Name Resolve Failed For the RSSI field a value of 127 indicates that the RSSI is not available. That can happen with Bluetooth 1.1 and earlier @@ -4285,6 +4287,11 @@ Device Found Event accept any connections. This can be indicated by Low Energy devices that are in broadcaster role. + The Name Resolve Failed flag indicates that name resolving + procedure has ended with failure for this device. The user space + should use this information to determine when is a good time to + retry the name resolving procedure. + Discovering Event =================