linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [Bluez PATCH v4 1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event
@ 2021-11-25  7:06 Archie Pusaka
  2021-11-25  7:06 ` [Bluez PATCH v4 2/5] Listen and process remote name resolving failure Archie Pusaka
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Archie Pusaka @ 2021-11-25  7:06 UTC (permalink / raw)
  To: linux-bluetooth, Luiz Augusto von Dentz, Marcel Holtmann
  Cc: CrosBT Upstreaming, Archie Pusaka, Miao-chen Chou

From: Archie Pusaka <apusaka@chromium.org>

Report failure when resolving remote name to userspace. This is useful
so the userspace can make an informed decision when to retry name
resolving procedure.

Reviewed-by: Miao-chen Chou <mcchou@chromium.org>
---
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 v4:
* New in this version, separated from the other patch.

 lib/mgmt.h | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lib/mgmt.h b/lib/mgmt.h
index 9f34b7f28b..922a24367f 100644
--- a/lib/mgmt.h
+++ b/lib/mgmt.h
@@ -854,9 +854,10 @@ struct mgmt_ev_auth_failed {
 	uint8_t status;
 } __packed;
 
-#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_CONFIRM_NAME		0x01
+#define MGMT_DEV_FOUND_LEGACY_PAIRING		0x02
+#define MGMT_DEV_FOUND_NOT_CONNECTABLE		0x04
+#define MGMT_DEV_FOUND_NAME_REQUEST_FAILED	0x10
 
 #define MGMT_EV_DEVICE_FOUND		0x0012
 struct mgmt_ev_device_found {
-- 
2.34.0.rc2.393.gf8c9666880-goog


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Bluez PATCH v4 2/5] Listen and process remote name resolving failure
  2021-11-25  7:06 [Bluez PATCH v4 1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event Archie Pusaka
@ 2021-11-25  7:06 ` Archie Pusaka
  2021-11-25  7:06 ` [Bluez PATCH v4 3/5] device: Save remote name request attempts into cache file Archie Pusaka
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Archie Pusaka @ 2021-11-25  7:06 UTC (permalink / raw)
  To: linux-bluetooth, Luiz Augusto von Dentz, Marcel Holtmann
  Cc: CrosBT Upstreaming, Archie Pusaka, Miao-chen Chou

From: Archie Pusaka <apusaka@chromium.org>

When Remote Name Resolve ends with failure, record this occurrence and
prevent remote name resolving for the same device for some time.

Reviewed-by: Miao-chen Chou <mcchou@chromium.org>
---

Changes in v4:
* Use CLOCK_MONOTONIC for timekeeping.
* Constant waiting time between retries instead of increasing.
* Fix conflict merge with adv_monitor.c

Changes in v3:
* Rename MGMT const to align with the doc.

Changes in v2:
* Stay silent instead of sending MGMT_OP_CONFIRM_NAME with DONT_CARE flag.

 src/adapter.c     | 16 +++++++++++++---
 src/adapter.h     |  1 +
 src/adv_monitor.c |  7 +++++--
 src/device.c      | 27 +++++++++++++++++++++++++++
 src/device.h      |  2 ++
 5 files changed, 48 insertions(+), 5 deletions(-)

diff --git a/src/adapter.c b/src/adapter.c
index 98616f17d2..c49f42cfbb 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -6979,6 +6979,7 @@ void btd_adapter_update_found_device(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,
 					bool monitoring)
 {
@@ -7076,6 +7077,9 @@ void btd_adapter_update_found_device(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
@@ -7146,7 +7150,10 @@ void btd_adapter_update_found_device(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_is_name_resolve_allowed(dev)))
 		confirm_name(adapter, bdaddr, bdaddr_type, name_known);
 
 	adapter->discovery_found = g_slist_prepend(adapter->discovery_found,
@@ -7196,8 +7203,9 @@ static void device_found_callback(uint16_t index, uint16_t length,
 	uint32_t flags;
 	bool confirm_name;
 	bool legacy;
-	char addr[18];
 	bool not_connectable;
+	bool name_resolve_failed;
+	char addr[18];
 
 	if (length < sizeof(*ev)) {
 		btd_error(adapter->dev_id,
@@ -7227,10 +7235,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_REQUEST_FAILED);
 
 	btd_adapter_update_found_device(adapter, &ev->addr.bdaddr,
 					ev->addr.type, ev->rssi, confirm_name,
-					legacy, not_connectable, eir, eir_len,
+					legacy, not_connectable,
+					name_resolve_failed, eir, eir_len,
 					false);
 }
 
diff --git a/src/adapter.h b/src/adapter.h
index 2815d4613f..35deb1d117 100644
--- a/src/adapter.h
+++ b/src/adapter.h
@@ -92,6 +92,7 @@ void btd_adapter_update_found_device(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,
 					bool monitored);
 
diff --git a/src/adv_monitor.c b/src/adv_monitor.c
index bf7f2bed3b..602830e30b 100644
--- a/src/adv_monitor.c
+++ b/src/adv_monitor.c
@@ -1585,8 +1585,9 @@ static void adv_monitor_device_found_callback(uint16_t index, uint16_t length,
 	uint32_t flags;
 	bool confirm_name;
 	bool legacy;
-	char addr[18];
 	bool not_connectable;
+	bool name_resolve_failed;
+	char addr[18];
 
 	if (length < sizeof(*ev)) {
 		btd_error(adapter_id,
@@ -1613,10 +1614,12 @@ static void adv_monitor_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_REQUEST_FAILED);
 
 	btd_adapter_update_found_device(adapter, &ev->addr.bdaddr,
 					ev->addr.type, ev->rssi, confirm_name,
-					legacy, not_connectable, ad_data,
+					legacy, not_connectable,
+					name_resolve_failed, ad_data,
 					ad_data_len, true);
 
 	if (handle) {
diff --git a/src/device.c b/src/device.c
index 6b398bd396..a83cb61f8c 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	300 /* seconds */
+
 static DBusConnection *dbus_conn = NULL;
 static unsigned service_state_cb_id;
 
@@ -272,6 +274,8 @@ struct btd_device {
 
 	GIOChannel	*att_io;
 	guint		store_id;
+
+	time_t		name_resolve_failed_time;
 };
 
 static const uint16_t uuid_list[] = {
@@ -4389,6 +4393,29 @@ bool device_name_known(struct btd_device *device)
 	return device->name[0] != '\0';
 }
 
+bool device_is_name_resolve_allowed(struct btd_device *device)
+{
+	struct timespec now;
+
+	if (!device)
+		return false;
+
+	clock_gettime(CLOCK_MONOTONIC, &now);
+	return now.tv_sec >= device->name_resolve_failed_time +
+						NAME_RESOLVE_RETRY_DELAY;
+}
+
+void device_name_resolve_fail(struct btd_device *device)
+{
+	struct timespec now;
+
+	if (!device)
+		return;
+
+	clock_gettime(CLOCK_MONOTONIC, &now);
+	device->name_resolve_failed_time = now.tv_sec;
+}
+
 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 b37a0a3d21..071576d6b3 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_is_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);
-- 
2.34.0.rc2.393.gf8c9666880-goog


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Bluez PATCH v4 3/5] device: Save remote name request attempts into cache file
  2021-11-25  7:06 [Bluez PATCH v4 1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event Archie Pusaka
  2021-11-25  7:06 ` [Bluez PATCH v4 2/5] Listen and process remote name resolving failure Archie Pusaka
@ 2021-11-25  7:06 ` Archie Pusaka
  2021-11-25  7:06 ` [Bluez PATCH v4 4/5] main: add configurable RemoteNameRequestRetryDelay parameter Archie Pusaka
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Archie Pusaka @ 2021-11-25  7:06 UTC (permalink / raw)
  To: linux-bluetooth, Luiz Augusto von Dentz, Marcel Holtmann
  Cc: CrosBT Upstreaming, Archie Pusaka, Miao-chen Chou

From: Archie Pusaka <apusaka@chromium.org>

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: Miao-chen Chou <mcchou@chromium.org>
---

Changes in v4:
* Modify cache to support changes in previous patch

 src/device.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 91 insertions(+), 3 deletions(-)

diff --git a/src/device.c b/src/device.c
index a83cb61f8c..44450b1132 100644
--- a/src/device.c
+++ b/src/device.c
@@ -567,6 +567,59 @@ 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(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 failed_time;
+
+	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);
+	}
+
+	failed_time = (uint64_t) dev->name_resolve_failed_time;
+
+	data_old = g_key_file_to_data(key_file, &length_old, NULL);
+
+	g_key_file_set_uint64(key_file, "NameResolving", "FailedTime",
+								failed_time);
+
+	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;
@@ -3304,6 +3357,32 @@ failed:
 	return str;
 }
 
+static void load_cached_name_resolve(struct btd_device *device,
+					const char *local, const char *peer)
+{
+	char filename[PATH_MAX];
+	GKeyFile *key_file;
+	uint64_t failed_time;
+
+	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;
+
+	failed_time = g_key_file_get_uint64(key_file, "NameResolving",
+							"FailedTime", NULL);
+
+	device->name_resolve_failed_time = failed_time;
+
+failed:
+	g_key_file_free(key_file);
+}
+
 static struct csrk_info *load_csrk(GKeyFile *key_file, const char *group)
 {
 	struct csrk_info *csrk;
@@ -4311,6 +4390,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);
@@ -4326,13 +4406,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(device, storage_dir, dst);
+
 	return device;
 }
 
@@ -4401,7 +4483,12 @@ bool device_is_name_resolve_allowed(struct btd_device *device)
 		return false;
 
 	clock_gettime(CLOCK_MONOTONIC, &now);
-	return now.tv_sec >= device->name_resolve_failed_time +
+
+	/* If now < failed_time, it means the clock has somehow turned back,
+	 * possibly because of system restart. Allow name request in this case.
+	 */
+	return now.tv_sec < device->name_resolve_failed_time ||
+		now.tv_sec >= device->name_resolve_failed_time +
 						NAME_RESOLVE_RETRY_DELAY;
 }
 
@@ -4414,6 +4501,7 @@ void device_name_resolve_fail(struct btd_device *device)
 
 	clock_gettime(CLOCK_MONOTONIC, &now);
 	device->name_resolve_failed_time = now.tv_sec;
+	device_store_cached_name_resolve(device);
 }
 
 void device_set_class(struct btd_device *device, uint32_t class)
-- 
2.34.0.rc2.393.gf8c9666880-goog


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Bluez PATCH v4 4/5] main: add configurable RemoteNameRequestRetryDelay parameter
  2021-11-25  7:06 [Bluez PATCH v4 1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event Archie Pusaka
  2021-11-25  7:06 ` [Bluez PATCH v4 2/5] Listen and process remote name resolving failure Archie Pusaka
  2021-11-25  7:06 ` [Bluez PATCH v4 3/5] device: Save remote name request attempts into cache file Archie Pusaka
@ 2021-11-25  7:06 ` Archie Pusaka
  2021-11-25  7:06 ` [Bluez PATCH v4 5/5] doc: Add Name Request Fail flag in device found event Archie Pusaka
  2021-11-25  7:37 ` [Bluez,v4,1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event bluez.test.bot
  4 siblings, 0 replies; 7+ messages in thread
From: Archie Pusaka @ 2021-11-25  7:06 UTC (permalink / raw)
  To: linux-bluetooth, Luiz Augusto von Dentz, Marcel Holtmann
  Cc: CrosBT Upstreaming, Archie Pusaka, Miao-chen Chou

From: Archie Pusaka <apusaka@chromium.org>

This specifies how long will the userspace ignore a peer with an
unknown name after a failed remote name resolving procedure.

The peer device can still be connected, this only prevents the remote
name resolving procedure retry.

Reviewed-by: Miao-chen Chou <mcchou@chromium.org>
---

Changes in v4:
* New in this version.

 src/btd.h     |  1 +
 src/device.c  |  4 +---
 src/main.c    | 19 ++++++++++++++++---
 src/main.conf |  5 +++++
 4 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/src/btd.h b/src/btd.h
index ff9f082f19..a805a40d7d 100644
--- a/src/btd.h
+++ b/src/btd.h
@@ -104,6 +104,7 @@ struct btd_opts {
 	uint32_t	tmpto;
 	uint8_t		privacy;
 	bool		device_privacy;
+	uint32_t	name_request_retry_delay;
 
 	struct btd_defaults defaults;
 
diff --git a/src/device.c b/src/device.c
index 44450b1132..0e2612825b 100644
--- a/src/device.c
+++ b/src/device.c
@@ -79,8 +79,6 @@
 #define GATT_INCLUDE_UUID_STR "2802"
 #define GATT_CHARAC_UUID_STR "2803"
 
-#define NAME_RESOLVE_RETRY_DELAY	300 /* seconds */
-
 static DBusConnection *dbus_conn = NULL;
 static unsigned service_state_cb_id;
 
@@ -4489,7 +4487,7 @@ bool device_is_name_resolve_allowed(struct btd_device *device)
 	 */
 	return now.tv_sec < device->name_resolve_failed_time ||
 		now.tv_sec >= device->name_resolve_failed_time +
-						NAME_RESOLVE_RETRY_DELAY;
+					btd_opts.name_request_retry_delay;
 }
 
 void device_name_resolve_fail(struct btd_device *device)
diff --git a/src/main.c b/src/main.c
index 3adcdc1087..8cc2dfca61 100644
--- a/src/main.c
+++ b/src/main.c
@@ -55,9 +55,10 @@
 
 #define BLUEZ_NAME "org.bluez"
 
-#define DEFAULT_PAIRABLE_TIMEOUT       0 /* disabled */
-#define DEFAULT_DISCOVERABLE_TIMEOUT 180 /* 3 minutes */
-#define DEFAULT_TEMPORARY_TIMEOUT     30 /* 30 seconds */
+#define DEFAULT_PAIRABLE_TIMEOUT           0 /* disabled */
+#define DEFAULT_DISCOVERABLE_TIMEOUT     180 /* 3 minutes */
+#define DEFAULT_TEMPORARY_TIMEOUT         30 /* 30 seconds */
+#define DEFAULT_NAME_REQUEST_RETRY_DELAY 300 /* 5 minutes */
 
 #define SHUTDOWN_GRACE_SECONDS 10
 
@@ -82,6 +83,7 @@ static const char *supported_options[] = {
 	"JustWorksRepairing",
 	"TemporaryTimeout",
 	"Experimental",
+	"RemoteNameRequestRetryDelay",
 	NULL
 };
 
@@ -816,6 +818,16 @@ static void parse_config(GKeyFile *config)
 		g_strfreev(strlist);
 	}
 
+	val = g_key_file_get_integer(config, "General",
+					"RemoteNameRequestRetryDelay", &err);
+	if (err) {
+		DBG("%s", err->message);
+		g_clear_error(&err);
+	} else {
+		DBG("RemoteNameRequestRetryDelay=%d", val);
+		btd_opts.name_request_retry_delay = val;
+	}
+
 	str = g_key_file_get_string(config, "GATT", "Cache", &err);
 	if (err) {
 		DBG("%s", err->message);
@@ -927,6 +939,7 @@ static void init_defaults(void)
 	btd_opts.name_resolv = TRUE;
 	btd_opts.debug_keys = FALSE;
 	btd_opts.refresh_discovery = TRUE;
+	btd_opts.name_request_retry_delay = DEFAULT_NAME_REQUEST_RETRY_DELAY;
 
 	btd_opts.defaults.num_entries = 0;
 	btd_opts.defaults.br.page_scan_type = 0xFFFF;
diff --git a/src/main.conf b/src/main.conf
index 0c41d77420..49b9e67550 100644
--- a/src/main.conf
+++ b/src/main.conf
@@ -119,6 +119,11 @@
 # Defaults to false.
 #Experimental = false
 
+# The duration to avoid retrying to resolve a peer's name, if the previous
+# try failed.
+# The value is in seconds. Default is 300, i.e. 5 minutes.
+#RemoteNameRequestRetryDelay = 300
+
 [BR]
 # The following values are used to load default adapter parameters for BR/EDR.
 # BlueZ loads the values into the kernel before the adapter is powered if the
-- 
2.34.0.rc2.393.gf8c9666880-goog


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Bluez PATCH v4 5/5] doc: Add Name Request Fail flag in device found event
  2021-11-25  7:06 [Bluez PATCH v4 1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event Archie Pusaka
                   ` (2 preceding siblings ...)
  2021-11-25  7:06 ` [Bluez PATCH v4 4/5] main: add configurable RemoteNameRequestRetryDelay parameter Archie Pusaka
@ 2021-11-25  7:06 ` Archie Pusaka
  2021-11-25  7:37 ` [Bluez,v4,1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event bluez.test.bot
  4 siblings, 0 replies; 7+ messages in thread
From: Archie Pusaka @ 2021-11-25  7:06 UTC (permalink / raw)
  To: linux-bluetooth, Luiz Augusto von Dentz, Marcel Holtmann
  Cc: CrosBT Upstreaming, Archie Pusaka

From: Archie Pusaka <apusaka@chromium.org>

Userspace should use this new flag to decide whether to do the remote
name resolving or not.
---

Changes in v4:
* Add information about NameResolving cache

Changes in v3:
* Update the flag name to be more inlined with the spec.

Changes in v2:
* Update docs to reflect not sending DONT_CARE flag behavior.

 doc/mgmt-api.txt         |  7 +++++++
 doc/settings-storage.txt | 11 ++++++++++-
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/doc/mgmt-api.txt b/doc/mgmt-api.txt
index 1ab513eb17..ebe56afa44 100644
--- a/doc/mgmt-api.txt
+++ b/doc/mgmt-api.txt
@@ -4090,6 +4090,7 @@ Device Connected Event
 		1	Legacy Pairing
 		2	Reserved (not in use)
 		3	Initiated Connection
+		4	Reserved (not in use)
 
 
 Device Disconnected Event
@@ -4264,6 +4265,7 @@ Device Found Event
 		1	Legacy Pairing
 		2	Not Connectable
 		3	Reserved (not in use)
+		4	Name Request 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
@@ -4286,6 +4288,11 @@ Device Found Event
 	accept any connections. This can be indicated by Low Energy
 	devices that are in broadcaster role.
 
+	The Name Request 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
 =================
diff --git a/doc/settings-storage.txt b/doc/settings-storage.txt
index 3c637c3521..26584f2015 100644
--- a/doc/settings-storage.txt
+++ b/doc/settings-storage.txt
@@ -179,7 +179,7 @@ Cache directory file format
 ============================
 
 Each file, named by remote device address, may includes multiple groups
-(General, ServiceRecords, Attributes, Endpoints).
+(General, ServiceRecords, Attributes, Endpoints, NameResolving).
 
 In ServiceRecords, SDP records are stored using their handle as key
 (hexadecimal format).
@@ -193,6 +193,9 @@ In "Endpoints" group A2DP remote endpoints are stored using the seid as key
 an entry which key is set to "LastUsed" which represented the last endpoint
 used.
 
+In "NameResolving", information regarding remote name resolving are stored to
+prevent wasting time resolving name for unresponsive devices.
+
 [General] group contains:
 
   Name		String		Remote device friendly name
@@ -247,6 +250,12 @@ Sample Attributes section:
 					local and remote seids as hexadecimal
 					encoded string.
 
+[NameResolving] group contains:
+
+  FailedTime	Integer		The last time  we failed to complete name
+				resolving procedure, measured from an
+				arbitrary, fixed point in the past.
+
 Info file format
 ================
 
-- 
2.34.0.rc2.393.gf8c9666880-goog


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* RE: [Bluez,v4,1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event
  2021-11-25  7:06 [Bluez PATCH v4 1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event Archie Pusaka
                   ` (3 preceding siblings ...)
  2021-11-25  7:06 ` [Bluez PATCH v4 5/5] doc: Add Name Request Fail flag in device found event Archie Pusaka
@ 2021-11-25  7:37 ` bluez.test.bot
  2021-11-29 17:49   ` Luiz Augusto von Dentz
  4 siblings, 1 reply; 7+ messages in thread
From: bluez.test.bot @ 2021-11-25  7:37 UTC (permalink / raw)
  To: linux-bluetooth, apusaka

[-- Attachment #1: Type: text/plain, Size: 1233 bytes --]

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=585657

---Test result---

Test Summary:
CheckPatch                    PASS      6.86 seconds
GitLint                       FAIL      4.42 seconds
Prep - Setup ELL              PASS      48.93 seconds
Build - Prep                  PASS      0.49 seconds
Build - Configure             PASS      9.03 seconds
Build - Make                  PASS      215.85 seconds
Make Check                    PASS      10.07 seconds
Make Distcheck                PASS      264.17 seconds
Build w/ext ELL - Configure   PASS      9.51 seconds
Build w/ext ELL - Make        PASS      203.22 seconds

Details
##############################
Test: GitLint - FAIL
Desc: Run gitlint with rule in .gitlint
Output:
[Bluez,v4,1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event
14: B1 Line exceeds max length (121>80): "https://patchwork.kernel.org/project/bluetooth/patch/20211028191805.1.I35b7f3a496f834de6b43a32f94b6160cb1467c94@changeid/"




---
Regards,
Linux Bluetooth


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Bluez,v4,1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event
  2021-11-25  7:37 ` [Bluez,v4,1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event bluez.test.bot
@ 2021-11-29 17:49   ` Luiz Augusto von Dentz
  0 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2021-11-29 17:49 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Archie Pusaka

Hi Archie,

On Fri, Nov 26, 2021 at 4:10 AM <bluez.test.bot@gmail.com> wrote:
>
> 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=585657
>
> ---Test result---
>
> Test Summary:
> CheckPatch                    PASS      6.86 seconds
> GitLint                       FAIL      4.42 seconds
> Prep - Setup ELL              PASS      48.93 seconds
> Build - Prep                  PASS      0.49 seconds
> Build - Configure             PASS      9.03 seconds
> Build - Make                  PASS      215.85 seconds
> Make Check                    PASS      10.07 seconds
> Make Distcheck                PASS      264.17 seconds
> Build w/ext ELL - Configure   PASS      9.51 seconds
> Build w/ext ELL - Make        PASS      203.22 seconds
>
> Details
> ##############################
> Test: GitLint - FAIL
> Desc: Run gitlint with rule in .gitlint
> Output:
> [Bluez,v4,1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event
> 14: B1 Line exceeds max length (121>80): "https://patchwork.kernel.org/project/bluetooth/patch/20211028191805.1.I35b7f3a496f834de6b43a32f94b6160cb1467c94@changeid/"
>
>
>
>
> ---
> Regards,
> Linux Bluetooth

Applied, thanks.



--
Luiz Augusto von Dentz

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-11-29 22:48 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-25  7:06 [Bluez PATCH v4 1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event Archie Pusaka
2021-11-25  7:06 ` [Bluez PATCH v4 2/5] Listen and process remote name resolving failure Archie Pusaka
2021-11-25  7:06 ` [Bluez PATCH v4 3/5] device: Save remote name request attempts into cache file Archie Pusaka
2021-11-25  7:06 ` [Bluez PATCH v4 4/5] main: add configurable RemoteNameRequestRetryDelay parameter Archie Pusaka
2021-11-25  7:06 ` [Bluez PATCH v4 5/5] doc: Add Name Request Fail flag in device found event Archie Pusaka
2021-11-25  7:37 ` [Bluez,v4,1/5] mgmt: Add NAME_REQUEST_FAILED flag for device_found event bluez.test.bot
2021-11-29 17:49   ` Luiz Augusto von Dentz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).