linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [BlueZ PATCH 1/3] doc/mgmt-api: Update for Add Extended Advertisement Command
@ 2022-06-16 19:58 Tedd Ho-Jeong An
  2022-06-16 19:58 ` [BlueZ PATCH 2/3] monitor: Update flag information for Extended Advertismement Tedd Ho-Jeong An
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Tedd Ho-Jeong An @ 2022-06-16 19:58 UTC (permalink / raw)
  To: linux-bluetooth

From: Tedd Ho-Jeong An <tedd.an@intel.com>

This patch aligns the input parameter for Add Extended Advertisement
command with actual data struct and add missing flag descriptions.
---
 doc/mgmt-api.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/doc/mgmt-api.txt b/doc/mgmt-api.txt
index a429f0ef3..23ea42228 100644
--- a/doc/mgmt-api.txt
+++ b/doc/mgmt-api.txt
@@ -3593,7 +3593,6 @@ Add Extended Advertising Parameters Command
 	Controller Index:	<controller id>
 	Command Parameters:	Instance (1 Octet)
 				Flags (4 Octets)
-				Params (2 Octets)
 				Duration (2 Octets)
 				Timeout (2 Octets)
 				MinInterval (4 Octets)
@@ -3631,6 +3630,8 @@ Add Extended Advertising Parameters Command
 		7	Secondary Channel with LE 1M
 		8	Secondary Channel with LE 2M
 		9	Secondary Channel with LE Coded
+		10	Indicate tx power can be specified
+		11	Indicate HW supports the advertising offload
 		12	The Duration parameter should be used
 		13	The Timeout parameter should be used
 		14	The Interval parameters should be used
-- 
2.34.1


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

* [BlueZ PATCH 2/3] monitor: Update flag information for Extended Advertismement
  2022-06-16 19:58 [BlueZ PATCH 1/3] doc/mgmt-api: Update for Add Extended Advertisement Command Tedd Ho-Jeong An
@ 2022-06-16 19:58 ` Tedd Ho-Jeong An
  2022-06-16 19:58 ` [BlueZ PATCH 3/3] tools/btmgmt: Add support Add Ext Adv command Tedd Ho-Jeong An
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Tedd Ho-Jeong An @ 2022-06-16 19:58 UTC (permalink / raw)
  To: linux-bluetooth

From: Tedd Ho-Jeong An <tedd.an@intel.com>

This patch updates the missing flag details for Advertisement flags

@ MGMT Event: Command Complete (0x0001) plen 11
      Read Advertising Features (0x003d) plen 8
        Status: Success (0x00)
        Flags: 0x0001ffff
	...
          Unknown advertising flag (0x00010c00)
	...
---
 monitor/packet.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/monitor/packet.c b/monitor/packet.c
index bd9efd2c7..3d081c544 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -12667,10 +12667,13 @@ static const struct bitfield_data mgmt_adv_flags_table[] = {
 	{  7, "Advertise in 1M on Secondary channel"	},
 	{  8, "Advertise in 2M on Secondary channel"	},
 	{  9, "Advertise in CODED on Secondary channel"	},
+	{  10, "Support setting Tx Power"		},
+	{  11, "Support HW offload"			},
 	{  12, "Use provided duration parameter"	},
 	{  13, "Use provided timeout parameter"		},
 	{  14, "Use provided interval parameters"	},
 	{  15, "Use provided tx power parameter"	},
+	{  16, "Contain Scan Response Data"		},
 	{ }
 };
 #define MGMT_ADV_PARAM_DURATION		(1 << 12)
-- 
2.34.1


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

* [BlueZ PATCH 3/3] tools/btmgmt: Add support Add Ext Adv command
  2022-06-16 19:58 [BlueZ PATCH 1/3] doc/mgmt-api: Update for Add Extended Advertisement Command Tedd Ho-Jeong An
  2022-06-16 19:58 ` [BlueZ PATCH 2/3] monitor: Update flag information for Extended Advertismement Tedd Ho-Jeong An
@ 2022-06-16 19:58 ` Tedd Ho-Jeong An
  2022-06-16 22:49 ` [BlueZ,1/3] doc/mgmt-api: Update for Add Extended Advertisement Command bluez.test.bot
  2022-06-17 21:10 ` [BlueZ PATCH 1/3] " patchwork-bot+bluetooth
  3 siblings, 0 replies; 5+ messages in thread
From: Tedd Ho-Jeong An @ 2022-06-16 19:58 UTC (permalink / raw)
  To: linux-bluetooth

From: Tedd Ho-Jeong An <tedd.an@intel.com>

This patch adds new command to support the following MGMT API:
 Add Extended Advertising Parameters Command
 Add Extended Advertising Data Command
---
 tools/btmgmt.c | 377 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 377 insertions(+)

diff --git a/tools/btmgmt.c b/tools/btmgmt.c
index 8f63f12ba..3bf2c21c1 100644
--- a/tools/btmgmt.c
+++ b/tools/btmgmt.c
@@ -4891,6 +4891,377 @@ static void cmd_clr_adv(int argc, char **argv)
 	cmd_rm_adv(2, rm_argv);
 }
 
+static void add_ext_adv_params_rsp(uint8_t status, uint16_t len,
+					const void *param, void *user_data)
+{
+	const struct mgmt_rp_add_ext_adv_params *rp = param;
+
+	if (status != 0) {
+		error("Add Ext Adv Params failed status 0x%02x (%s)",
+						status, mgmt_errstr(status));
+		return bt_shell_noninteractive_quit(EXIT_FAILURE);
+	}
+
+	if (len != sizeof(*rp)) {
+		error("Invalid Add Ext Adv Params response length (%u)", len);
+		return bt_shell_noninteractive_quit(EXIT_FAILURE);
+	}
+
+	print("Instance added: %u", rp->instance);
+	print("Tx Power: %u", rp->tx_power);
+	print("Max adv data len: %u", rp->max_adv_data_len);
+	print("Max scan resp len: %u", rp->max_scan_rsp_len);
+
+	return bt_shell_noninteractive_quit(EXIT_SUCCESS);
+}
+
+static void add_ext_adv_params_usage(void)
+{
+	bt_shell_usage();
+	print("Options:\n"
+		"\t -d, --duration <duration>  Duration in seconds\n"
+		"\t -t, --timeout <timeout>    Timeout in seconds\n"
+		"\t -r, --min-interval <valr>  Minimum interval\n"
+		"\t -x, --max-interval <valr>  Maximum interval\n"
+		"\t -w, --tx-power <power>     Tx power\n"
+		"\t -P, --phy <phy>            Phy type, Specify 1M/2M/CODED\n"
+		"\t -c, --connectable          \"connectable\" flag\n"
+		"\t -g, --general-discov       \"general-discoverable\" flag\n"
+		"\t -l, --limited-discov       \"limited-discoverable\" flag\n"
+		"\t -m, --managed-flags        \"managed-flags\" flag\n"
+		"\t -p, --add-tx-power         \"tx-power\" flag\n"
+		"\t -a, --scan-rsp-appearance  \"appearance\" flag\n"
+		"\t -n, --scan-rsp-local-name  \"local-name\" flag\n"
+		"\t -s, --adv-scan-rsp         \"scan resp in adv\" flag\n"
+		"\t -h, --help                 Show help\n"
+		"e.g.:\n"
+		"\tadd-ext-adv-params -r 0x801 -x 0x802 -P 2M -g 1");
+}
+
+static struct option add_ext_adv_params_options[] = {
+	{ "help",		0, 0, 'h' },
+	{ "duration",		1, 0, 'd' },
+	{ "timeout",		1, 0, 't' },
+	{ "min-internal",	1, 0, 'r' },
+	{ "max-interval",	1, 0, 'x' },
+	{ "tx-power",		1, 0, 'w' },
+	{ "phy",		1, 0, 'P' },
+	{ "connectable",	0, 0, 'c' },
+	{ "general-discov",	0, 0, 'g' },
+	{ "limited-discov",	0, 0, 'l' },
+	{ "scan-rsp-local-name", 0, 0, 'n' },
+	{ "scan-rsp-appearance", 0, 0, 'a' },
+	{ "managed-flags",	0, 0, 'm' },
+	{ "add-tx-power",	0, 0, 'p' },
+	{ "adv-scan-rsp",	0, 0, 's' },
+	{ 0, 0, 0, 0}
+};
+
+static void cmd_add_ext_adv_params(int argc, char **argv)
+{
+	struct mgmt_cp_add_ext_adv_params *cp = NULL;
+	int opt;
+	uint16_t timeout = 0, duration = 0;
+	uint8_t instance;
+	bool success = false;
+	bool quit = true;
+	uint32_t flags = 0;
+	uint32_t min_interval = 0;
+	uint32_t max_interval = 0;
+	uint8_t tx_power = 0;
+	uint16_t index;
+
+	while ((opt = getopt_long(argc, argv, "d:t:r:x:w:P:cglmpansh",
+				add_ext_adv_params_options, NULL)) != -1) {
+		switch (opt) {
+		case 'd':
+			duration = strtol(optarg, NULL, 0);
+			flags |= MGMT_ADV_PARAM_DURATION;
+			break;
+		case 't':
+			timeout = strtol(optarg, NULL, 0);
+			flags |= MGMT_ADV_PARAM_TIMEOUT;
+			break;
+		case 'r':
+			min_interval = strtol(optarg, NULL, 0);
+			break;
+		case 'x':
+			max_interval = strtol(optarg, NULL, 0);
+			break;
+		case 'w':
+			tx_power = strtol(optarg, NULL, 0);
+			flags |= MGMT_ADV_PARAM_TX_POWER;
+			break;
+		case 'P':
+			if (strcasecmp(optarg, "1M") == 0)
+				flags |= MGMT_ADV_FLAG_SEC_1M;
+			else if (strcasecmp(optarg, "2M") == 0)
+				flags |= MGMT_ADV_FLAG_SEC_2M;
+			else if (strcasecmp(optarg, "CODED") == 0)
+				flags |= MGMT_ADV_FLAG_SEC_CODED;
+			else
+				goto done;
+			break;
+		case 'c':
+			flags |= MGMT_ADV_FLAG_CONNECTABLE;
+			break;
+		case 'g':
+			flags |= MGMT_ADV_FLAG_DISCOV;
+			break;
+		case 'l':
+			flags |= MGMT_ADV_FLAG_LIMITED_DISCOV;
+			break;
+		case 'n':
+			flags |= MGMT_ADV_FLAG_LOCAL_NAME;
+			break;
+		case 'a':
+			flags |= MGMT_ADV_FLAG_APPEARANCE;
+			break;
+		case 'm':
+			flags |= MGMT_ADV_FLAG_MANAGED_FLAGS;
+			break;
+		case 'p':
+			flags |= MGMT_ADV_FLAG_TX_POWER;
+			break;
+		case 's':
+			flags |= MGMT_ADV_PARAM_SCAN_RSP;
+			break;
+		case 'h':
+			success = true;
+			/* fall through */
+		default:
+			add_ext_adv_params_usage();
+			optind = 0;
+			goto done;
+		}
+	}
+
+	argc -= optind;
+	argv += optind;
+	optind = 0;
+
+	if (argc != 1) {
+		add_ext_adv_params_usage();
+		goto done;
+	}
+
+	/* Only if both min_interval and max_interval are defined */
+	if (min_interval && max_interval)
+		flags |= MGMT_ADV_PARAM_INTERVALS;
+
+	instance = strtol(argv[0], NULL, 0);
+
+	index = mgmt_index;
+	if (index == MGMT_INDEX_NONE)
+		index = 0;
+
+	cp = malloc0(sizeof(*cp));
+	if (!cp)
+		goto done;
+
+	cp->instance = instance;
+	put_le32(flags, &cp->flags);
+	put_le16(timeout, &cp->timeout);
+	put_le16(duration, &cp->duration);
+	put_le32(min_interval, &cp->min_interval);
+	put_le32(max_interval, &cp->max_interval);
+	cp->tx_power = tx_power;
+
+	if (!mgmt_send(mgmt, MGMT_OP_ADD_EXT_ADV_PARAMS, index, sizeof(*cp), cp,
+					add_ext_adv_params_rsp, NULL, NULL)) {
+		error("Unable to send \"Add Ext Advertising Params\" command");
+		goto done;
+	}
+
+	quit = false;
+
+done:
+	free(cp);
+
+	if (quit)
+		bt_shell_noninteractive_quit(success ?
+						EXIT_SUCCESS : EXIT_FAILURE);
+}
+
+static void add_ext_adv_data_rsp(uint8_t status, uint16_t len,
+					const void *param, void *user_data)
+{
+	const struct mgmt_rp_add_ext_adv_data *rp = param;
+
+	if (status != 0) {
+		error("Add Ext Advertising Data failed with status 0x%02x (%s)",
+						status, mgmt_errstr(status));
+		return bt_shell_noninteractive_quit(EXIT_FAILURE);
+	}
+
+	if (len != sizeof(*rp)) {
+		error("Invalid Add Ext Advertising Data response length (%u)",
+									len);
+		return bt_shell_noninteractive_quit(EXIT_FAILURE);
+	}
+
+	print("Instance added: %u", rp->instance);
+
+	return bt_shell_noninteractive_quit(EXIT_SUCCESS);
+}
+
+static void add_ext_adv_data_usage(void)
+{
+	bt_shell_usage();
+	print("Options:\n"
+		"\t -u, --uuid <uuid>         Service UUID\n"
+		"\t -d, --adv-data <data>     Advertising Data bytes\n"
+		"\t -s, --scan-rsp <data>     Scan Response Data bytes\n"
+		"e.g.:\n"
+		"\tadd-ext-adv-data -u 180d -u 180f -d 080954657374204C45 1");
+}
+
+static struct option add_ext_adv_data_options[] = {
+	{ "help",		0, 0, 'h' },
+	{ "uuid",		1, 0, 'u' },
+	{ "adv-data",		1, 0, 'd' },
+	{ "scan-rsp",		1, 0, 's' },
+	{ 0, 0, 0, 0}
+};
+
+static void cmd_add_ext_adv_data(int argc, char **argv)
+{
+	struct mgmt_cp_add_ext_adv_data *cp = NULL;
+	int opt;
+	uint8_t *adv_data = NULL, *scan_rsp = NULL;
+	size_t adv_len = 0, scan_rsp_len = 0;
+	size_t cp_len;
+	uint8_t uuids[MAX_AD_UUID_BYTES];
+	size_t uuid_bytes = 0;
+	uint8_t uuid_type = 0;
+	uint8_t instance;
+	uuid_t uuid;
+	bool success = false;
+	bool quit = true;
+	uint16_t index;
+
+	while ((opt = getopt_long(argc, argv, "+u:d:s:h",
+				add_ext_adv_data_options, NULL)) != -1) {
+		switch (opt) {
+		case 'u':
+			if (bt_string2uuid(&uuid, optarg) < 0) {
+				print("Invalid UUID: %s", optarg);
+				goto done;
+			}
+
+			if (uuid_type && uuid_type != uuid.type) {
+				print("UUID types must be consistent");
+				goto done;
+			}
+
+			if (uuid.type == SDP_UUID16) {
+				if (uuid_bytes + 2 >= MAX_AD_UUID_BYTES) {
+					print("Too many UUIDs");
+					goto done;
+				}
+
+				put_le16(uuid.value.uuid16, uuids + uuid_bytes);
+				uuid_bytes += 2;
+			} else if (uuid.type == SDP_UUID128) {
+				if (uuid_bytes + 16 >= MAX_AD_UUID_BYTES) {
+					print("Too many UUIDs");
+					goto done;
+				}
+
+				bswap_128(uuid.value.uuid128.data,
+							uuids + uuid_bytes);
+				uuid_bytes += 16;
+			} else {
+				printf("Unsupported UUID type");
+				goto done;
+			}
+
+			if (!uuid_type)
+				uuid_type = uuid.type;
+
+			break;
+		case 'd':
+			if (adv_len) {
+				print("Only one adv-data option allowed");
+				goto done;
+			}
+
+			if (!parse_bytes(optarg, &adv_data, &adv_len))
+				goto done;
+			break;
+		case 's':
+			if (scan_rsp_len) {
+				print("Only one scan-rsp option allowed");
+				goto done;
+			}
+
+			if (!parse_bytes(optarg, &scan_rsp, &scan_rsp_len))
+				goto done;
+			break;
+		case 'h':
+			success = true;
+			/* fall through */
+		default:
+			add_ext_adv_data_usage();
+			optind = 0;
+			goto done;
+		}
+	}
+
+	argc -= optind;
+	argv += optind;
+	optind = 0;
+
+	if (argc != 1) {
+		add_ext_adv_data_usage();
+		goto done;
+	}
+
+	if (uuid_bytes)
+		uuid_bytes += 2;
+
+	instance = strtol(argv[0], NULL, 0);
+
+	index = mgmt_index;
+	if (index == MGMT_INDEX_NONE)
+		index = 0;
+
+	cp_len = sizeof(*cp) + uuid_bytes + adv_len + scan_rsp_len;
+	cp = malloc0(cp_len);
+	if (!cp)
+		goto done;
+
+	cp->instance = instance;
+	cp->adv_data_len = adv_len + uuid_bytes;
+	cp->scan_rsp_len = scan_rsp_len;
+
+	if (uuid_bytes) {
+		cp->data[0] = uuid_bytes - 1;
+		cp->data[1] = uuid_type == SDP_UUID16 ? 0x03 : 0x07;
+		memcpy(cp->data + 2, uuids, uuid_bytes - 2);
+	}
+
+	memcpy(cp->data + uuid_bytes, adv_data, adv_len);
+	memcpy(cp->data + uuid_bytes + adv_len, scan_rsp, scan_rsp_len);
+
+	if (!mgmt_send(mgmt, MGMT_OP_ADD_EXT_ADV_DATA, index, cp_len, cp,
+					add_ext_adv_data_rsp, NULL, NULL)) {
+		error("Unable to send \"Add Ext Advertising Data\" command");
+		goto done;
+	}
+
+	quit = false;
+
+done:
+	free(adv_data);
+	free(scan_rsp);
+	free(cp);
+
+	if (quit)
+		bt_shell_noninteractive_quit(success ?
+						EXIT_SUCCESS : EXIT_FAILURE);
+}
+
 static void appearance_rsp(uint8_t status, uint16_t len, const void *param,
 							void *user_data)
 {
@@ -5618,6 +5989,12 @@ static const struct bt_shell_menu main_menu = {
 		cmd_rm_adv,		"Remove advertising instance"	},
 	{ "clr-adv",		NULL,
 		cmd_clr_adv,		"Clear advertising instances"	},
+	{ "add-ext-adv-params",	"[options] <instance_id>",
+		cmd_add_ext_adv_params,
+				"Add extended advertising params"	},
+	{ "add-ext-adv-data",	"[options] <instance_id>",
+		cmd_add_ext_adv_data,
+				"Add extended advertising data"		},
 	{ "appearance",		"<appearance>",
 		cmd_appearance,		"Set appearance"		},
 	{ "phy",		"[LE1MTX] [LE1MRX] [LE2MTX] [LE2MRX] "
-- 
2.34.1


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

* RE: [BlueZ,1/3] doc/mgmt-api: Update for Add Extended Advertisement Command
  2022-06-16 19:58 [BlueZ PATCH 1/3] doc/mgmt-api: Update for Add Extended Advertisement Command Tedd Ho-Jeong An
  2022-06-16 19:58 ` [BlueZ PATCH 2/3] monitor: Update flag information for Extended Advertismement Tedd Ho-Jeong An
  2022-06-16 19:58 ` [BlueZ PATCH 3/3] tools/btmgmt: Add support Add Ext Adv command Tedd Ho-Jeong An
@ 2022-06-16 22:49 ` bluez.test.bot
  2022-06-17 21:10 ` [BlueZ PATCH 1/3] " patchwork-bot+bluetooth
  3 siblings, 0 replies; 5+ messages in thread
From: bluez.test.bot @ 2022-06-16 22:49 UTC (permalink / raw)
  To: linux-bluetooth, hj.tedd.an

[-- Attachment #1: Type: text/plain, Size: 2333 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=651141

---Test result---

Test Summary:
CheckPatch                    FAIL      3.59 seconds
GitLint                       FAIL      2.34 seconds
Prep - Setup ELL              PASS      51.57 seconds
Build - Prep                  PASS      0.63 seconds
Build - Configure             PASS      10.34 seconds
Build - Make                  PASS      1503.91 seconds
Make Check                    PASS      12.39 seconds
Make Check w/Valgrind         PASS      540.37 seconds
Make Distcheck                PASS      282.70 seconds
Build w/ext ELL - Configure   PASS      10.49 seconds
Build w/ext ELL - Make        PASS      1443.36 seconds
Incremental Build with patchesPASS      4517.59 seconds

Details
##############################
Test: CheckPatch - FAIL
Desc: Run checkpatch.pl script with rule in .checkpatch.conf
Output:
[BlueZ,3/3] tools/btmgmt: Add support Add Ext Adv command
WARNING:PREFER_FALLTHROUGH: Prefer 'fallthrough;' over fallthrough comment
#233: FILE: tools/btmgmt.c:5031:
+			/* fall through */

WARNING:PREFER_FALLTHROUGH: Prefer 'fallthrough;' over fallthrough comment
#405: FILE: tools/btmgmt.c:5203:
+			/* fall through */

/github/workspace/src/12884720.patch total: 0 errors, 2 warnings, 389 lines checked

NOTE: For some of the reported defects, checkpatch may be able to
      mechanically convert to the typical style using --fix or --fix-inplace.

/github/workspace/src/12884720.patch has style problems, please review.

NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO

NOTE: If any of the errors are false positives, please report
      them to the maintainer, see CHECKPATCH in MAINTAINERS.


##############################
Test: GitLint - FAIL
Desc: Run gitlint with rule in .gitlint
Output:
[BlueZ,2/3] monitor: Update flag information for Extended Advertismement
11: B3 Line contains hard tab characters (\t): "	..."
13: B3 Line contains hard tab characters (\t): "	..."




---
Regards,
Linux Bluetooth


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

* Re: [BlueZ PATCH 1/3] doc/mgmt-api: Update for Add Extended Advertisement Command
  2022-06-16 19:58 [BlueZ PATCH 1/3] doc/mgmt-api: Update for Add Extended Advertisement Command Tedd Ho-Jeong An
                   ` (2 preceding siblings ...)
  2022-06-16 22:49 ` [BlueZ,1/3] doc/mgmt-api: Update for Add Extended Advertisement Command bluez.test.bot
@ 2022-06-17 21:10 ` patchwork-bot+bluetooth
  3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+bluetooth @ 2022-06-17 21:10 UTC (permalink / raw)
  To: Tedd Ho-Jeong An; +Cc: linux-bluetooth

Hello:

This series was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Thu, 16 Jun 2022 12:58:01 -0700 you wrote:
> From: Tedd Ho-Jeong An <tedd.an@intel.com>
> 
> This patch aligns the input parameter for Add Extended Advertisement
> command with actual data struct and add missing flag descriptions.
> ---
>  doc/mgmt-api.txt | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)

Here is the summary with links:
  - [BlueZ,1/3] doc/mgmt-api: Update for Add Extended Advertisement Command
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=7378408ed4da
  - [BlueZ,2/3] monitor: Update flag information for Extended Advertismement
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=2479a013a202
  - [BlueZ,3/3] tools/btmgmt: Add support Add Ext Adv command
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=3075ff8fffec

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

end of thread, other threads:[~2022-06-17 21:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-16 19:58 [BlueZ PATCH 1/3] doc/mgmt-api: Update for Add Extended Advertisement Command Tedd Ho-Jeong An
2022-06-16 19:58 ` [BlueZ PATCH 2/3] monitor: Update flag information for Extended Advertismement Tedd Ho-Jeong An
2022-06-16 19:58 ` [BlueZ PATCH 3/3] tools/btmgmt: Add support Add Ext Adv command Tedd Ho-Jeong An
2022-06-16 22:49 ` [BlueZ,1/3] doc/mgmt-api: Update for Add Extended Advertisement Command bluez.test.bot
2022-06-17 21:10 ` [BlueZ PATCH 1/3] " patchwork-bot+bluetooth

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).