2023-02-25 21:42:59

by Pauli Virtanen

[permalink] [raw]
Subject: [PATCH BlueZ 2/2] iso-tester: Add test for central receiving timestamped ISO packet

This attempts to receive a timestamped HCI ISO data packet on central.

With kernel 6.2 HCI ISO packet parsing this test fails with
Bluetooth: Frame malformed (len 40, expected len 0)

Link: https://lore.kernel.org/linux-bluetooth/1fd2d4523c139deda93aab2c31f1508d79c32472.1676921889.git.pav@iki.fi/
---
tools/iso-tester.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/tools/iso-tester.c b/tools/iso-tester.c
index dcfd6a045..7bcb1b3ca 100644
--- a/tools/iso-tester.c
+++ b/tools/iso-tester.c
@@ -149,6 +149,7 @@ struct iso_client_data {
bool bcast;
bool defer;
bool disconnect;
+ bool ts;
};

static void mgmt_debug(const char *str, void *user_data)
@@ -572,6 +573,14 @@ static const struct iso_client_data listen_16_2_1_recv = {
.server = true,
};

+static const struct iso_client_data listen_16_2_1_recv_ts = {
+ .qos = QOS_16_2_1,
+ .expect_err = 0,
+ .recv = &send_16_2_1,
+ .server = true,
+ .ts = true,
+};
+
static const struct iso_client_data defer_16_2_1 = {
.qos = QOS_16_2_1,
.expect_err = 0,
@@ -1157,7 +1166,8 @@ static void iso_recv(struct test_data *data, GIOChannel *io)
}

host = hciemu_client_get_host(data->hciemu);
- bthost_send_iso(host, data->handle, false, sn++, 0, isodata->recv, 1);
+ bthost_send_iso(host, data->handle, isodata->ts, sn++, 0,
+ isodata->recv, 1);

data->io_id[0] = g_io_add_watch(io, G_IO_IN, iso_recv_data, data);
}
@@ -1809,6 +1819,10 @@ int main(int argc, char *argv[])
test_iso("ISO Receive - Success", &listen_16_2_1_recv, setup_powered,
test_listen);

+ test_iso("ISO Receive Timestamped - Success", &listen_16_2_1_recv_ts,
+ setup_powered,
+ test_listen);
+
test_iso("ISO Defer - Success", &defer_16_2_1, setup_powered,
test_defer);

--
2.39.2