linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format
@ 2021-10-20 21:48 Luiz Augusto von Dentz
  2021-10-20 21:48 ` [PATCH BlueZ 2/6] monitor/msft: Add feature bits definition Luiz Augusto von Dentz
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2021-10-20 21:48 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

128 bits are actually 16 octecs not 8.
---
 monitor/msft.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/monitor/msft.h b/monitor/msft.h
index 79692537f..d2921f4c8 100644
--- a/monitor/msft.h
+++ b/monitor/msft.h
@@ -87,7 +87,7 @@ struct msft_le_monitor_adv_uuid {
 	union {
 		uint16_t u16;
 		uint32_t u32;
-		uint8_t  u128[8];
+		uint8_t  u128[16];
 	} value;
 } __attribute__((packed));
 
-- 
2.31.1


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

* [PATCH BlueZ 2/6] monitor/msft: Add feature bits definition
  2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
@ 2021-10-20 21:48 ` Luiz Augusto von Dentz
  2021-10-20 21:48 ` [PATCH BlueZ 3/6] emulator/vhci: Fix writing msft_opcode using binary format Luiz Augusto von Dentz
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2021-10-20 21:48 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

This adds the feature bits definition used in
HCI_VS_MSFT_Read_Supported_Features.
---
 monitor/msft.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/monitor/msft.h b/monitor/msft.h
index d2921f4c8..e6e3019be 100644
--- a/monitor/msft.h
+++ b/monitor/msft.h
@@ -30,6 +30,13 @@ struct msft_cmd_read_supported_features {
 	uint8_t subcmd;
 } __attribute__((packed));
 
+#define MSFT_MONITOR_BREDR_RSSI			BIT(0)
+#define MSFT_MONITOR_LE_RSSI			BIT(1)
+#define MSFT_MONITOR_LE_LEGACY_RSSI		BIT(2)
+#define MSFT_MONITOR_LE_ADV			BIT(3)
+#define MSFT_MONITOR_SSP_VALIDATION		BIT(4)
+#define MSFT_MONITOR_LE_ADV_CONTINUOS		BIT(5)
+
 struct msft_rsp_read_supported_features {
 	uint8_t  status;
 	uint8_t  subcmd;
-- 
2.31.1


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

* [PATCH BlueZ 3/6] emulator/vhci: Fix writing msft_opcode using binary format
  2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
  2021-10-20 21:48 ` [PATCH BlueZ 2/6] monitor/msft: Add feature bits definition Luiz Augusto von Dentz
@ 2021-10-20 21:48 ` Luiz Augusto von Dentz
  2021-10-20 21:48 ` [PATCH BlueZ 4/6] btdev: Use Linux Foundation as manufacturer Luiz Augusto von Dentz
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2021-10-20 21:48 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

debugfs expects values in string format not binary format.
---
 emulator/vhci.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/emulator/vhci.c b/emulator/vhci.c
index f8560e0c5..59ad1ecb8 100644
--- a/emulator/vhci.c
+++ b/emulator/vhci.c
@@ -230,7 +230,16 @@ int vhci_set_force_wakeup(struct vhci *vhci, bool enable)
 
 int vhci_set_msft_opcode(struct vhci *vhci, uint16_t opcode)
 {
-	return vhci_debugfs_write(vhci, "msft_opcode", &opcode, sizeof(opcode));
+	int err;
+	char val[7];
+
+	snprintf(val, sizeof(val), "0x%4x", opcode);
+
+	err = vhci_debugfs_write(vhci, "msft_opcode", &val, sizeof(val));
+	if (err)
+		return err;
+
+	return btdev_set_msft_opcode(vhci->btdev, opcode);
 }
 
 int vhci_set_aosp_capable(struct vhci *vhci, bool enable)
-- 
2.31.1


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

* [PATCH BlueZ 4/6] btdev: Use Linux Foundation as manufacturer
  2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
  2021-10-20 21:48 ` [PATCH BlueZ 2/6] monitor/msft: Add feature bits definition Luiz Augusto von Dentz
  2021-10-20 21:48 ` [PATCH BlueZ 3/6] emulator/vhci: Fix writing msft_opcode using binary format Luiz Augusto von Dentz
@ 2021-10-20 21:48 ` Luiz Augusto von Dentz
  2021-10-20 21:48 ` [PATCH BlueZ 5/6] monitor: Enable decoding of MSFT extension with emulator Luiz Augusto von Dentz
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2021-10-20 21:48 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

This makes the emulator use Linux Foundation manufacturer id which
shall be simpler to distinguish emulator instances since it is unlikely
there will be other vendors using it.
---
 emulator/btdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/emulator/btdev.c b/emulator/btdev.c
index d9c55d99d..18aefed11 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -6263,7 +6263,7 @@ struct btdev *btdev_create(enum btdev_type type, uint16_t id)
 
 	btdev->type = type;
 	btdev->id = id;
-	btdev->manufacturer = 63;
+	btdev->manufacturer = 1521;
 	btdev->revision = 0x0000;
 
 	switch (btdev->type) {
-- 
2.31.1


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

* [PATCH BlueZ 5/6] monitor: Enable decoding of MSFT extension with emulator
  2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
                   ` (2 preceding siblings ...)
  2021-10-20 21:48 ` [PATCH BlueZ 4/6] btdev: Use Linux Foundation as manufacturer Luiz Augusto von Dentz
@ 2021-10-20 21:48 ` Luiz Augusto von Dentz
  2021-10-20 21:48 ` [PATCH BlueZ 6/6] emulator: Add initial support for MSFT vendor commands Luiz Augusto von Dentz
  2021-10-20 22:34 ` [BlueZ,1/6] monitor/msft: Fix uuid.u128 format bluez.test.bot
  5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2021-10-20 21:48 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

This enables decoding MSFT extension with emulator instances since it
shall be the only one using Linux Foundation as manufacturer.
---
 monitor/packet.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/monitor/packet.c b/monitor/packet.c
index 9b81cfc89..9030f2493 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -4021,6 +4021,15 @@ void packet_monitor(struct timeval *tv, struct ucred *cred,
 				 */
 				index_list[index].msft_opcode = 0xFCF0;
 				break;
+			case 1521:
+				/*
+				 * Emulator controllers use Linux Foundation as
+				 * manufacturer and support the
+				 * Microsoft vendor extenions using
+				 * 0xFC1E for VsMsftOpCode.
+				 */
+				index_list[index].msft_opcode = 0xFC1E;
+				break;
 			}
 		}
 
-- 
2.31.1


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

* [PATCH BlueZ 6/6] emulator: Add initial support for MSFT vendor commands
  2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
                   ` (3 preceding siblings ...)
  2021-10-20 21:48 ` [PATCH BlueZ 5/6] monitor: Enable decoding of MSFT extension with emulator Luiz Augusto von Dentz
@ 2021-10-20 21:48 ` Luiz Augusto von Dentz
  2021-10-20 22:34 ` [BlueZ,1/6] monitor/msft: Fix uuid.u128 format bluez.test.bot
  5 siblings, 0 replies; 7+ messages in thread
From: Luiz Augusto von Dentz @ 2021-10-20 21:48 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

This adds the initial support for MSFT vendor commands and enable them
when in btvirt:

< HCI Command: Microsoft Ex.. (0x3f|0x001e) plen 1
      Read Supported Features (0x00)
> HCI Event: Command Complete (0x0e) plen 14
      Microsoft Extension (0x3f|0x001e) ncmd 1
      Read Supported Features (0x00)
        Status: Success (0x00)
        Features: 0x3f 0x00 0x00 0x00 0x00 0x00 0x00 0x00
          RSSI Monitoring feature for BR/EDR
          RSSI Monitoring feature for LE connections
          RSSI Monitoring of LE advertisements
          Advertising Monitoring of LE advertisements
          Verifying the validity of P-192 and P-256 keys
          Continuous Advertising Monitoring
        Event prefix length: 0
        Event prefix:
< HCI Command: Microsoft Ex.. (0x3f|0x001e) plen 2
      LE Set Advertisement Filter Enable (0x05)
        Enable: All filter conditions (0x01)
> HCI Event: Command Complete (0x0e) plen 5
      Microsoft Extension (0x3f|0x001e) ncmd 1
      LE Set Advertisement Filter Enable (0x05)
        Status: Success (0x00)
---
 emulator/btdev.c | 245 ++++++++++++++++++++++++++++++++++++++++++-----
 emulator/main.c  |   2 +
 2 files changed, 223 insertions(+), 24 deletions(-)

diff --git a/emulator/btdev.c b/emulator/btdev.c
index 18aefed11..096ba2da4 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -33,6 +33,7 @@
 #include "src/shared/ecc.h"
 #include "src/shared/queue.h"
 #include "monitor/bt.h"
+#include "monitor/msft.h"
 #include "btdev.h"
 
 #define AL_SIZE			16
@@ -139,6 +140,7 @@ struct btdev {
 	uint8_t  le_states[8];
 	const struct btdev_cmd *cmds;
 	uint16_t msft_opcode;
+	const struct btdev_cmd *msft_cmds;
 	bool aosp_capable;
 
 	uint16_t default_link_policy;
@@ -6440,41 +6442,76 @@ static void num_completed_packets(struct btdev *btdev, uint16_t handle)
 	}
 }
 
+static const struct btdev_cmd *run_cmd(struct btdev *btdev,
+					const struct btdev_cmd *cmd,
+					const void *data, uint8_t len)
+{
+	uint8_t status = BT_HCI_ERR_UNKNOWN_COMMAND;
+	int err;
+
+	err = cmd->func(btdev, data, len);
+	switch (err) {
+	case 0:
+		return cmd;
+	case -ENOTSUP:
+		status = BT_HCI_ERR_UNKNOWN_COMMAND;
+		break;
+	case -EINVAL:
+		status = BT_HCI_ERR_INVALID_PARAMETERS;
+		break;
+	case -EPERM:
+		status = BT_HCI_ERR_COMMAND_DISALLOWED;
+		break;
+	default:
+		status = BT_HCI_ERR_UNSPECIFIED_ERROR;
+		break;
+	}
+
+	cmd_status(btdev, status, cmd->opcode);
+
+	return NULL;
+}
+
+static const struct btdev_cmd *msft_cmd(struct btdev *btdev, const void *data,
+								uint8_t len)
+{
+	const struct btdev_cmd *cmd;
+
+	for (cmd = btdev->msft_cmds; cmd->func; cmd++) {
+		if (cmd->opcode != ((uint8_t *)data)[0])
+			continue;
+
+		return run_cmd(btdev, cmd, data, len);
+	}
+
+	util_debug(btdev->debug_callback, btdev->debug_data,
+			"Unsupported MSFT subcommand 0x%2.2x\n",
+			((uint8_t *)data)[0]);
+
+	cmd_status(btdev, BT_HCI_ERR_UNKNOWN_COMMAND, btdev->msft_opcode);
+
+	return NULL;
+}
+
 static const struct btdev_cmd *default_cmd(struct btdev *btdev, uint16_t opcode,
 						const void *data, uint8_t len)
 {
 	const struct btdev_cmd *cmd;
-	uint8_t status = BT_HCI_ERR_UNKNOWN_COMMAND;
-	int err;
+
+	if (btdev->msft_opcode == opcode)
+		return msft_cmd(btdev, data, len);
 
 	for (cmd = btdev->cmds; cmd->func; cmd++) {
 		if (cmd->opcode != opcode)
 			continue;
 
-		err = cmd->func(btdev, data, len);
-		switch (err) {
-		case 0:
-			return cmd;
-		case -ENOTSUP:
-			status = BT_HCI_ERR_UNKNOWN_COMMAND;
-			goto failed;
-		case -EINVAL:
-			status = BT_HCI_ERR_INVALID_PARAMETERS;
-			goto failed;
-		case -EPERM:
-			status = BT_HCI_ERR_COMMAND_DISALLOWED;
-			goto failed;
-		default:
-			status = BT_HCI_ERR_UNSPECIFIED_ERROR;
-			goto failed;
-		}
+		return run_cmd(btdev, cmd, data, len);
 	}
 
 	util_debug(btdev->debug_callback, btdev->debug_data,
 			"Unsupported command 0x%4.4x\n", opcode);
 
-failed:
-	cmd_status(btdev, status, opcode);
+	cmd_status(btdev, BT_HCI_ERR_UNKNOWN_COMMAND, opcode);
 
 	return NULL;
 }
@@ -6719,14 +6756,174 @@ bool btdev_del_hook(struct btdev *btdev, enum btdev_hook_type type,
 	return false;
 }
 
+static int cmd_msft_read_features(struct btdev *dev, const void *data,
+							uint8_t len)
+{
+	struct msft_rsp_read_supported_features rsp;
+
+	memset(&rsp, 0, sizeof(rsp));
+	rsp.status = BT_HCI_ERR_SUCCESS;
+	rsp.subcmd = MSFT_SUBCMD_READ_SUPPORTED_FEATURES;
+	rsp.features[0] = MSFT_MONITOR_BREDR_RSSI | MSFT_MONITOR_LE_RSSI |
+				MSFT_MONITOR_LE_LEGACY_RSSI |
+				MSFT_MONITOR_LE_ADV |
+				MSFT_MONITOR_SSP_VALIDATION |
+				MSFT_MONITOR_LE_ADV_CONTINUOS;
+
+	cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+	return 0;
+}
+
+static int cmd_msft_monitor_rssi(struct btdev *dev, const void *data,
+							uint8_t len)
+{
+	const struct msft_cmd_monitor_rssi *cmd = data;
+	struct msft_rsp_monitor_rssi rsp;
+	struct btdev_conn *conn;
+
+	memset(&rsp, 0, sizeof(rsp));
+	rsp.status = BT_HCI_ERR_SUCCESS;
+	rsp.subcmd = MSFT_SUBCMD_MONITOR_RSSI;
+
+	conn = queue_find(dev->conns, match_handle,
+				UINT_TO_PTR(le16_to_cpu(cmd->handle)));
+	if (!conn)
+		rsp.status = BT_HCI_ERR_UNKNOWN_CONN_ID;
+
+	cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+	return 0;
+}
+
+static int cmd_msft_cancel_monitor_rssi(struct btdev *dev, const void *data,
+							uint8_t len)
+{
+	const struct msft_cmd_cancel_monitor_rssi *cmd = data;
+	struct msft_rsp_cancel_monitor_rssi rsp;
+	struct btdev_conn *conn;
+
+	memset(&rsp, 0, sizeof(rsp));
+	rsp.status = BT_HCI_ERR_SUCCESS;
+	rsp.subcmd = MSFT_SUBCMD_CANCEL_MONITOR_RSSI;
+
+	conn = queue_find(dev->conns, match_handle,
+				UINT_TO_PTR(le16_to_cpu(cmd->handle)));
+	if (!conn)
+		rsp.status = BT_HCI_ERR_UNKNOWN_CONN_ID;
+
+	cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+	return 0;
+}
+
+static int cmd_msft_le_monitor_adv(struct btdev *dev, const void *data,
+							uint8_t len)
+{
+	const struct msft_cmd_le_monitor_adv *cmd = data;
+	struct msft_rsp_le_monitor_adv rsp;
+	static uint8_t handle;
+
+	memset(&rsp, 0, sizeof(rsp));
+	rsp.status = BT_HCI_ERR_SUCCESS;
+	rsp.subcmd = MSFT_SUBCMD_LE_MONITOR_ADV;
+
+	switch (cmd->type) {
+	case MSFT_LE_MONITOR_ADV_PATTERN:
+	case MSFT_LE_MONITOR_ADV_UUID:
+	case MSFT_LE_MONITOR_ADV_IRK:
+	case MSFT_LE_MONITOR_ADV_ADDR:
+		rsp.handle = handle++;
+		break;
+	default:
+		rsp.status = BT_HCI_ERR_INVALID_PARAMETERS;
+		break;
+	}
+
+	cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+	return 0;
+}
+
+static int cmd_msft_le_cancel_monitor_adv(struct btdev *dev, const void *data,
+							uint8_t len)
+{
+	struct msft_rsp_le_cancel_monitor_adv rsp;
+
+	memset(&rsp, 0, sizeof(rsp));
+	rsp.status = BT_HCI_ERR_SUCCESS;
+	rsp.subcmd = MSFT_SUBCMD_LE_CANCEL_MONITOR_ADV;
+
+	cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+	return 0;
+}
+
+static int cmd_msft_le_monitor_adv_enable(struct btdev *dev, const void *data,
+							uint8_t len)
+{
+	struct msft_rsp_le_cancel_monitor_adv rsp;
+
+	memset(&rsp, 0, sizeof(rsp));
+	rsp.status = BT_HCI_ERR_SUCCESS;
+	rsp.subcmd = MSFT_SUBCMD_LE_MONITOR_ADV_ENABLE;
+
+	cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+	return 0;
+}
+
+static int cmd_msft_read_abs_rssi(struct btdev *dev, const void *data,
+							uint8_t len)
+{
+	struct msft_rsp_read_abs_rssi rsp;
+
+	memset(&rsp, 0, sizeof(rsp));
+	rsp.status = BT_HCI_ERR_SUCCESS;
+	rsp.subcmd = MSFT_SUBCMD_READ_ABS_RSSI;
+
+	cmd_complete(dev, dev->msft_opcode, &rsp, sizeof(rsp));
+
+	return 0;
+}
+
+#define CMD_MSFT \
+	CMD(MSFT_SUBCMD_READ_SUPPORTED_FEATURES, cmd_msft_read_features, \
+						NULL), \
+	CMD(MSFT_SUBCMD_MONITOR_RSSI, cmd_msft_monitor_rssi, NULL), \
+	CMD(MSFT_SUBCMD_CANCEL_MONITOR_RSSI, cmd_msft_cancel_monitor_rssi, \
+						NULL), \
+	CMD(MSFT_SUBCMD_LE_MONITOR_ADV, cmd_msft_le_monitor_adv, NULL),	\
+	CMD(MSFT_SUBCMD_LE_CANCEL_MONITOR_ADV, cmd_msft_le_cancel_monitor_adv, \
+						NULL), \
+	CMD(MSFT_SUBCMD_LE_MONITOR_ADV_ENABLE, cmd_msft_le_monitor_adv_enable, \
+						NULL), \
+	CMD(MSFT_SUBCMD_READ_ABS_RSSI, cmd_msft_read_abs_rssi, NULL)
+
+static const struct btdev_cmd cmd_msft[] = {
+	CMD_MSFT,
+	{}
+};
+
 int btdev_set_msft_opcode(struct btdev *btdev, uint16_t opcode)
 {
 	if (!btdev)
 		return -EINVAL;
 
-	btdev->msft_opcode = opcode;
-
-	return 0;
+	switch (btdev->type) {
+	case BTDEV_TYPE_BREDRLE:
+	case BTDEV_TYPE_BREDRLE50:
+	case BTDEV_TYPE_BREDRLE52:
+		btdev->msft_opcode = opcode;
+		btdev->msft_cmds = cmd_msft;
+		return 0;
+	case BTDEV_TYPE_BREDR:
+	case BTDEV_TYPE_LE:
+	case BTDEV_TYPE_AMP:
+	case BTDEV_TYPE_BREDR20:
+	default:
+		return -ENOTSUP;
+	}
 }
 
 int btdev_set_aosp_capable(struct btdev *btdev, bool enable)
diff --git a/emulator/main.c b/emulator/main.c
index f64d46a5e..3c215efbc 100644
--- a/emulator/main.c
+++ b/emulator/main.c
@@ -192,6 +192,8 @@ int main(int argc, char *argv[])
 
 		if (debug_enabled)
 			vhci_set_debug(vhci, vhci_debug, UINT_TO_PTR(i), NULL);
+
+		vhci_set_msft_opcode(vhci, 0xfc1e);
 	}
 
 	if (serial_enabled) {
-- 
2.31.1


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

* RE: [BlueZ,1/6] monitor/msft: Fix uuid.u128 format
  2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
                   ` (4 preceding siblings ...)
  2021-10-20 21:48 ` [PATCH BlueZ 6/6] emulator: Add initial support for MSFT vendor commands Luiz Augusto von Dentz
@ 2021-10-20 22:34 ` bluez.test.bot
  5 siblings, 0 replies; 7+ messages in thread
From: bluez.test.bot @ 2021-10-20 22:34 UTC (permalink / raw)
  To: linux-bluetooth, luiz.dentz

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

---Test result---

Test Summary:
CheckPatch                    PASS      8.45 seconds
GitLint                       PASS      5.65 seconds
Prep - Setup ELL              PASS      39.54 seconds
Build - Prep                  PASS      0.44 seconds
Build - Configure             PASS      7.45 seconds
Build - Make                  PASS      169.13 seconds
Make Check                    PASS      9.24 seconds
Make Distcheck                PASS      202.33 seconds
Build w/ext ELL - Configure   PASS      7.73 seconds
Build w/ext ELL - Make        PASS      156.56 seconds



---
Regards,
Linux Bluetooth


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

end of thread, other threads:[~2021-10-20 22:35 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-20 21:48 [PATCH BlueZ 1/6] monitor/msft: Fix uuid.u128 format Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 2/6] monitor/msft: Add feature bits definition Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 3/6] emulator/vhci: Fix writing msft_opcode using binary format Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 4/6] btdev: Use Linux Foundation as manufacturer Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 5/6] monitor: Enable decoding of MSFT extension with emulator Luiz Augusto von Dentz
2021-10-20 21:48 ` [PATCH BlueZ 6/6] emulator: Add initial support for MSFT vendor commands Luiz Augusto von Dentz
2021-10-20 22:34 ` [BlueZ,1/6] monitor/msft: Fix uuid.u128 format bluez.test.bot

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