All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH BlueZ 1/7] media: Fix not storing Preferred Delay properly
@ 2023-04-25 20:47 Luiz Augusto von Dentz
  2023-04-25 20:47 ` [PATCH BlueZ 2/7] shared/bap: Fix crash detaching streams Luiz Augusto von Dentz
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Luiz Augusto von Dentz @ 2023-04-25 20:47 UTC (permalink / raw)
  To: linux-bluetooth

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

Preferred Delay properties were being stored as qos->pd_* instead of
qos->ppd_*.
---
 profiles/audio/media.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/profiles/audio/media.c b/profiles/audio/media.c
index 540e91bc6706..23c63f4172dd 100644
--- a/profiles/audio/media.c
+++ b/profiles/audio/media.c
@@ -1477,11 +1477,11 @@ static int parse_properties(DBusMessageIter *props, const char **uuid,
 		} else if (strcasecmp(key, "PreferredMinimumDelay") == 0) {
 			if (var != DBUS_TYPE_UINT16)
 				return -EINVAL;
-			dbus_message_iter_get_basic(&value, &qos->pd_min);
+			dbus_message_iter_get_basic(&value, &qos->ppd_min);
 		} else if (strcasecmp(key, "PreferredMaximumDelay") == 0) {
 			if (var != DBUS_TYPE_UINT16)
 				return -EINVAL;
-			dbus_message_iter_get_basic(&value, &qos->pd_max);
+			dbus_message_iter_get_basic(&value, &qos->ppd_max);
 		}
 
 		dbus_message_iter_next(props);
-- 
2.40.0


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

* [PATCH BlueZ 2/7] shared/bap: Fix crash detaching streams
  2023-04-25 20:47 [PATCH BlueZ 1/7] media: Fix not storing Preferred Delay properly Luiz Augusto von Dentz
@ 2023-04-25 20:47 ` Luiz Augusto von Dentz
  2023-04-25 20:47 ` [PATCH BlueZ 3/7] share/bap: Fix not removing timeout on bap_free Luiz Augusto von Dentz
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Luiz Augusto von Dentz @ 2023-04-25 20:47 UTC (permalink / raw)
  To: linux-bluetooth

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

If a stream is being detached but bt_bap reference is already 0 don't
attempt to detach the stream as they would be freed anyway:

Invalid read of size 8
   at 0x19A360: bap_free (bap.c:2576)
   by 0x19A360: bt_bap_unref (bap.c:2735)
   by 0x19A360: bt_bap_unref (bap.c:2727)
   by 0x160E9A: test_teardown (test-bap.c:412)
   by 0x1A8BCA: teardown_callback (tester.c:434)
 Address 0x55e05e0 is 16 bytes inside a block of size 160 free'd
   at 0x48480E4: free (vg_replace_malloc.c:872)
   by 0x1AD5F6: queue_foreach (queue.c:207)
   by 0x19A1C5: bt_bap_detach (bap.c:3879)
   by 0x19A1C5: bt_bap_detach (bap.c:3855)
   by 0x19A33F: bap_free (bap.c:2574)
---
 src/shared/bap.c | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/src/shared/bap.c b/src/shared/bap.c
index 1fff7e0fd21f..f48cbdf5d6f9 100644
--- a/src/shared/bap.c
+++ b/src/shared/bap.c
@@ -1168,6 +1168,14 @@ static void bap_stream_set_io(void *data, void *user_data)
 	}
 }
 
+static struct bt_bap *bt_bap_ref_safe(struct bt_bap *bap)
+{
+	if (!bap || !bap->ref_count)
+		return NULL;
+
+	return bt_bap_ref(bap);
+}
+
 static void bap_stream_state_changed(struct bt_bap_stream *stream)
 {
 	struct bt_bap *bap = stream->bap;
@@ -1178,7 +1186,14 @@ static void bap_stream_state_changed(struct bt_bap_stream *stream)
 			bt_bap_stream_statestr(stream->ep->old_state),
 			bt_bap_stream_statestr(stream->ep->state));
 
-	bt_bap_ref(bap);
+	/* Check if ref_count is already 0 which means detaching is in
+	 * progress.
+	 */
+	bap = bt_bap_ref_safe(bap);
+	if (!bap) {
+		bap_stream_detach(stream);
+		return;
+	}
 
 	/* Pre notification updates */
 	switch (stream->ep->state) {
@@ -2716,14 +2731,6 @@ struct bt_bap *bt_bap_ref(struct bt_bap *bap)
 	return bap;
 }
 
-static struct bt_bap *bt_bap_ref_safe(struct bt_bap *bap)
-{
-	if (!bap || !bap->ref_count)
-		return NULL;
-
-	return bt_bap_ref(bap);
-}
-
 void bt_bap_unref(struct bt_bap *bap)
 {
 	if (!bap)
-- 
2.40.0


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

* [PATCH BlueZ 3/7] share/bap: Fix not removing timeout on bap_free
  2023-04-25 20:47 [PATCH BlueZ 1/7] media: Fix not storing Preferred Delay properly Luiz Augusto von Dentz
  2023-04-25 20:47 ` [PATCH BlueZ 2/7] shared/bap: Fix crash detaching streams Luiz Augusto von Dentz
@ 2023-04-25 20:47 ` Luiz Augusto von Dentz
  2023-04-25 20:47 ` [PATCH BlueZ 4/7] shared/tester: Add support for NULL PDUs Luiz Augusto von Dentz
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Luiz Augusto von Dentz @ 2023-04-25 20:47 UTC (permalink / raw)
  To: linux-bluetooth

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

This fixes not removing the process_id timeout when freeing the session
which can cause the following crash:

Invalid read of size 8
  at 0x18EB39: bap_debug (bap.c:553)
  by 0x1913A8: bap_process_queue (bap.c:3542)
  by 0x1A8630: timeout_callback (timeout-glib.c:25)
Address 0x55e0650 is 128 bytes inside a block of size 160 free'd
  at 0x48480E4: free (vg_replace_malloc.c:872)
---
 src/shared/bap.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/shared/bap.c b/src/shared/bap.c
index f48cbdf5d6f9..52878fcf0368 100644
--- a/src/shared/bap.c
+++ b/src/shared/bap.c
@@ -2586,6 +2586,8 @@ static void bap_free(void *data)
 {
 	struct bt_bap *bap = data;
 
+	timeout_remove(bap->process_id);
+
 	bt_bap_detach(bap);
 
 	bap_db_free(bap->rdb);
-- 
2.40.0


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

* [PATCH BlueZ 4/7] shared/tester: Add support for NULL PDUs
  2023-04-25 20:47 [PATCH BlueZ 1/7] media: Fix not storing Preferred Delay properly Luiz Augusto von Dentz
  2023-04-25 20:47 ` [PATCH BlueZ 2/7] shared/bap: Fix crash detaching streams Luiz Augusto von Dentz
  2023-04-25 20:47 ` [PATCH BlueZ 3/7] share/bap: Fix not removing timeout on bap_free Luiz Augusto von Dentz
@ 2023-04-25 20:47 ` Luiz Augusto von Dentz
  2023-04-25 20:47 ` [PATCH BlueZ 5/7] shared/bap: Fix typo Luiz Augusto von Dentz
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Luiz Augusto von Dentz @ 2023-04-25 20:47 UTC (permalink / raw)
  To: linux-bluetooth

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

This adds support for NULL PDUs which can be used to skip a round of
TX/RX.
---
 src/shared/tester.c | 6 +++++-
 src/shared/tester.h | 2 ++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/shared/tester.c b/src/shared/tester.c
index 1feaba48335c..61647eb0b176 100644
--- a/src/shared/tester.c
+++ b/src/shared/tester.c
@@ -914,8 +914,12 @@ static bool test_io_send(struct io *io, void *user_data)
 
 	g_assert_cmpint(len, ==, iov->iov_len);
 
-	if (!test->iovcnt && test->io_complete_func)
+	if (!test->iovcnt && test->io_complete_func) {
 		test->io_complete_func(test->test_data);
+	} else if (!test->iov->iov_base) {
+		test_get_iov(test);
+		return test_io_send(io, user_data);
+	}
 
 	return false;
 }
diff --git a/src/shared/tester.h b/src/shared/tester.h
index 49610185a444..16f41022db2b 100644
--- a/src/shared/tester.h
+++ b/src/shared/tester.h
@@ -21,6 +21,8 @@
 		.iov_len = sizeof(data(args)), \
 	}
 
+#define IOV_NULL {}
+
 void tester_init(int *argc, char ***argv);
 int tester_run(void);
 
-- 
2.40.0


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

* [PATCH BlueZ 5/7] shared/bap: Fix typo
  2023-04-25 20:47 [PATCH BlueZ 1/7] media: Fix not storing Preferred Delay properly Luiz Augusto von Dentz
                   ` (2 preceding siblings ...)
  2023-04-25 20:47 ` [PATCH BlueZ 4/7] shared/tester: Add support for NULL PDUs Luiz Augusto von Dentz
@ 2023-04-25 20:47 ` Luiz Augusto von Dentz
  2023-04-25 20:47 ` [PATCH BlueZ 6/7] shared/lc3: Update configuration to use iovec Luiz Augusto von Dentz
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Luiz Augusto von Dentz @ 2023-04-25 20:47 UTC (permalink / raw)
  To: linux-bluetooth

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

Fix typo s/BT_BAP_CONFIG_LATENCY_BALACED/BT_BAP_CONFIG_LATENCY_BALANCED
---
 src/shared/bap.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/shared/bap.h b/src/shared/bap.h
index bd13abef9ce5..b080324f9525 100644
--- a/src/shared/bap.h
+++ b/src/shared/bap.h
@@ -26,7 +26,7 @@
 #define BT_BAP_STREAM_STATE_RELEASING	0x06
 
 #define BT_BAP_CONFIG_LATENCY_LOW	0x01
-#define BT_BAP_CONFIG_LATENCY_BALACED	0x02
+#define BT_BAP_CONFIG_LATENCY_BALANCED	0x02
 #define BT_BAP_CONFIG_LATENCY_HIGH	0x03
 
 #define BT_BAP_CONFIG_PHY_1M		0x01
-- 
2.40.0


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

* [PATCH BlueZ 6/7] shared/lc3: Update configuration to use iovec
  2023-04-25 20:47 [PATCH BlueZ 1/7] media: Fix not storing Preferred Delay properly Luiz Augusto von Dentz
                   ` (3 preceding siblings ...)
  2023-04-25 20:47 ` [PATCH BlueZ 5/7] shared/bap: Fix typo Luiz Augusto von Dentz
@ 2023-04-25 20:47 ` Luiz Augusto von Dentz
  2023-04-25 20:47 ` [PATCH BlueZ 7/7] test-bap: Introduce SCC tests Luiz Augusto von Dentz
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: Luiz Augusto von Dentz @ 2023-04-25 20:47 UTC (permalink / raw)
  To: linux-bluetooth

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

This use iovec as expected storage for capabilities and configuration
so it is inline with what bluetoothctl has been using making it simpler
to reuse these definitions.
---
 src/shared/lc3.h | 93 +++++++++++++++++++++++++++++++++++-------------
 1 file changed, 69 insertions(+), 24 deletions(-)

diff --git a/src/shared/lc3.h b/src/shared/lc3.h
index fd9eb15a73ea..c702a951f50c 100644
--- a/src/shared/lc3.h
+++ b/src/shared/lc3.h
@@ -7,11 +7,12 @@
  *
  */
 
-#define LTV(_type, _bytes...) \
+#define data(args...) ((const unsigned char[]) { args })
+
+#define LC3_IOV(args...) \
 	{ \
-		.len = 1 + sizeof((uint8_t []) { _bytes }), \
-		.type = _type, \
-		.data = { _bytes }, \
+		.iov_base = (void *)data(args), \
+		.iov_len = sizeof(data(args)), \
 	}
 
 #define LC3_ID			0x06
@@ -52,13 +53,11 @@
 #define LC3_FRAME_COUNT		(LC3_BASE + 4)
 
 #define LC3_CAPABILITIES(_freq, _duration, _chan_count, _len_min, _len_max) \
-	{ \
-		LTV(LC3_FREQ, _freq), \
-		LTV(LC3_DURATION, _duration), \
-		LTV(LC3_CHAN_COUNT, _chan_count), \
-		LTV(LC3_FRAME_LEN, _len_min, _len_min >> 8, \
-				_len_max, _len_max >> 8), \
-	}
+	LC3_IOV(0x02, LC3_FREQ, _freq, _freq >>8, \
+		0x02, LC3_DURATION, _duration, \
+		0x02, LC3_CHAN_COUNT, _chan_count, \
+		0x05, LC3_FRAME_LEN, _len_min, _len_min >> 8, \
+		_len_max, _len_max >> 8)
 
 #define LC3_CONFIG_BASE		0x01
 
@@ -81,32 +80,78 @@
 #define LC3_CONFIG_FRAME_LEN	(LC3_CONFIG_BASE + 3)
 
 #define LC3_CONFIG(_freq, _duration, _len) \
-	{ \
-		LTV(LC3_CONFIG_FREQ, _freq), \
-		LTV(LC3_CONFIG_DURATION, _duration), \
-		LTV(LC3_CONFIG_FRAME_LEN, _len, _len >> 8), \
-	}
+	LC3_IOV(0x02, LC3_CONFIG_FREQ, _freq, \
+		0x02, LC3_CONFIG_DURATION, _duration, \
+		0x03, LC3_CONFIG_FRAME_LEN, _len, _len >> 8)
 
-#define LC3_CONFIG_8KHZ(_duration, _len) \
+#define LC3_CONFIG_8(_duration, _len) \
 	LC3_CONFIG(LC3_CONFIG_FREQ_8KHZ, _duration, _len)
 
-#define LC3_CONFIG_11KHZ(_duration, _len) \
+#define LC3_CONFIG_11(_duration, _len) \
 	LC3_CONFIG(LC3_CONFIG_FREQ_11KHZ, _duration, _len)
 
-#define LC3_CONFIG_16KHZ(_duration, _len) \
+#define LC3_CONFIG_16(_duration, _len) \
 	LC3_CONFIG(LC3_CONFIG_FREQ_16KHZ, _duration, _len)
 
-#define LC3_CONFIG_22KHZ(_duration, _len) \
+#define LC3_CONFIG_22(_duration, _len) \
 	LC3_CONFIG(LC3_CONFIG_FREQ_22KHZ, _duration, _len)
 
-#define LC3_CONFIG_24KHZ(_duration, _len) \
+#define LC3_CONFIG_24(_duration, _len) \
 	LC3_CONFIG(LC3_CONFIG_FREQ_24KHZ, _duration, _len)
 
-#define LC3_CONFIG_32KHZ(_duration, _len) \
+#define LC3_CONFIG_32(_duration, _len) \
 	LC3_CONFIG(LC3_CONFIG_FREQ_32KHZ, _duration, _len)
 
-#define LC3_CONFIG_44KHZ(_duration, _len) \
+#define LC3_CONFIG_44(_duration, _len) \
 	LC3_CONFIG(LC3_CONFIG_FREQ_44KHZ, _duration, _len)
 
-#define LC3_CONFIG_48KHZ(_duration, _len) \
+#define LC3_CONFIG_48(_duration, _len) \
 	LC3_CONFIG(LC3_CONFIG_FREQ_48KHZ, _duration, _len)
+
+#define LC3_CONFIG_8_1 \
+	LC3_CONFIG_8(LC3_CONFIG_DURATION_7_5, 26u)
+
+#define LC3_CONFIG_8_2 \
+	LC3_CONFIG_8(LC3_CONFIG_DURATION_10, 30u)
+
+#define LC3_CONFIG_16_1 \
+	LC3_CONFIG_16(LC3_CONFIG_DURATION_7_5, 30u)
+
+#define LC3_CONFIG_16_2 \
+	LC3_CONFIG_16(LC3_CONFIG_DURATION_10, 40u)
+
+#define LC3_CONFIG_24_1 \
+	LC3_CONFIG_24(LC3_CONFIG_DURATION_7_5, 45u)
+
+#define LC3_CONFIG_24_2 \
+	LC3_CONFIG_24(LC3_CONFIG_DURATION_10, 60u)
+
+#define LC3_CONFIG_32_1 \
+	LC3_CONFIG_32(LC3_CONFIG_DURATION_7_5, 60u)
+
+#define LC3_CONFIG_32_2 \
+	LC3_CONFIG_32(LC3_CONFIG_DURATION_10, 80u)
+
+#define LC3_CONFIG_44_1 \
+	LC3_CONFIG_44(LC3_CONFIG_DURATION_7_5, 98u)
+
+#define LC3_CONFIG_44_2 \
+	LC3_CONFIG_44(LC3_CONFIG_DURATION_10, 130u)
+
+#define LC3_CONFIG_48_1 \
+	LC3_CONFIG_48(LC3_CONFIG_DURATION_7_5, 75u)
+
+#define LC3_CONFIG_48_2 \
+	LC3_CONFIG_48(LC3_CONFIG_DURATION_10, 100u)
+
+#define LC3_CONFIG_48_3 \
+	LC3_CONFIG_48(LC3_CONFIG_DURATION_7_5, 90u)
+
+#define LC3_CONFIG_48_4 \
+	LC3_CONFIG_48(LC3_CONFIG_DURATION_10, 120u)
+
+#define LC3_CONFIG_48_5 \
+	LC3_CONFIG_48(LC3_CONFIG_DURATION_7_5, 117u)
+
+#define LC3_CONFIG_48_6 \
+	LC3_CONFIG_48(LC3_CONFIG_DURATION_10, 155u)
-- 
2.40.0


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

* [PATCH BlueZ 7/7] test-bap: Introduce SCC tests
  2023-04-25 20:47 [PATCH BlueZ 1/7] media: Fix not storing Preferred Delay properly Luiz Augusto von Dentz
                   ` (4 preceding siblings ...)
  2023-04-25 20:47 ` [PATCH BlueZ 6/7] shared/lc3: Update configuration to use iovec Luiz Augusto von Dentz
@ 2023-04-25 20:47 ` Luiz Augusto von Dentz
  2023-04-25 23:10 ` [BlueZ,1/7] media: Fix not storing Preferred Delay properly bluez.test.bot
  2023-04-26 19:49 ` bluez.test.bot
  7 siblings, 0 replies; 9+ messages in thread
From: Luiz Augusto von Dentz @ 2023-04-25 20:47 UTC (permalink / raw)
  To: linux-bluetooth

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

Test Summary
------------
BAP/UCL/SCC/BV-001-C                                 Passed
BAP/UCL/SCC/BV-002-C                                 Passed
BAP/UCL/SCC/BV-003-C                                 Passed
BAP/UCL/SCC/BV-004-C                                 Passed
BAP/UCL/SCC/BV-005-C                                 Passed
BAP/UCL/SCC/BV-006-C                                 Passed
BAP/UCL/SCC/BV-007-C                                 Passed
BAP/UCL/SCC/BV-008-C                                 Passed
BAP/UCL/SCC/BV-009-C                                 Passed
BAP/UCL/SCC/BV-010-C                                 Passed
BAP/UCL/SCC/BV-011-C                                 Passed
BAP/UCL/SCC/BV-012-C                                 Passed
BAP/UCL/SCC/BV-013-C                                 Passed
BAP/UCL/SCC/BV-014-C                                 Passed
BAP/UCL/SCC/BV-015-C                                 Passed
BAP/UCL/SCC/BV-016-C                                 Passed
BAP/UCL/SCC/BV-017-C                                 Passed
BAP/UCL/SCC/BV-018-C                                 Passed
BAP/UCL/SCC/BV-019-C                                 Passed
BAP/UCL/SCC/BV-020-C                                 Passed
BAP/UCL/SCC/BV-021-C                                 Passed
BAP/UCL/SCC/BV-022-C                                 Passed
BAP/UCL/SCC/BV-023-C                                 Passed
BAP/UCL/SCC/BV-024-C                                 Passed
BAP/UCL/SCC/BV-025-C                                 Passed
BAP/UCL/SCC/BV-026-C                                 Passed
BAP/UCL/SCC/BV-027-C                                 Passed
BAP/UCL/SCC/BV-028-C                                 Passed
BAP/UCL/SCC/BV-029-C                                 Passed
BAP/UCL/SCC/BV-030-C                                 Passed
BAP/UCL/SCC/BV-031-C                                 Passed
BAP/UCL/SCC/BV-032-C                                 Passed
Total: 32, Passed: 32 (100.0%), Failed: 0, Not Run: 0
Overall execution time: 0.373 seconds
---
 unit/test-bap.c | 533 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 526 insertions(+), 7 deletions(-)

diff --git a/unit/test-bap.c b/unit/test-bap.c
index afeefac84091..e4b1dcafd527 100644
--- a/unit/test-bap.c
+++ b/unit/test-bap.c
@@ -30,20 +30,45 @@
 #include "src/shared/gatt-db.h"
 #include "src/shared/gatt-client.h"
 #include "src/shared/bap.h"
+#include "src/shared/lc3.h"
+
+struct test_config {
+	struct bt_bap_pac_qos pqos;
+	struct iovec cc;
+	struct bt_bap_qos qos;
+	bool snk;
+	bool src;
+};
 
 struct test_data {
 	struct bt_gatt_client *client;
 	struct bt_bap *bap;
+	struct bt_bap_pac *snk;
+	struct bt_bap_pac *src;
+	struct iovec *caps;
+	struct test_config *cfg;
+	struct bt_bap_stream *stream;
 	size_t iovcnt;
 	struct iovec *iov;
 };
 
+/*
+ * Frequencies: 8Khz 11Khz 16Khz 22Khz 24Khz 32Khz 44.1Khz 48Khz
+ * Duration: 7.5 ms 10 ms
+ * Channel count: 3
+ * Frame length: 30-240
+ */
+static struct iovec lc3_caps = LC3_CAPABILITIES(LC3_FREQ_ANY, LC3_DURATION_ANY,
+								3u, 30, 240);
+
 #define iov_data(args...) ((const struct iovec[]) { args })
 
-#define define_test(name, function, args...)			\
+#define define_test(name, function, _cfg, args...)		\
 	do {							\
 		const struct iovec iov[] = { args };		\
 		static struct test_data data;			\
+		data.caps = &lc3_caps;				\
+		data.cfg = _cfg;				\
 		data.iovcnt = ARRAY_SIZE(iov_data(args));	\
 		data.iov = util_iov_dup(iov, ARRAY_SIZE(iov_data(args))); \
 		tester_add(name, &data, test_setup, function,	\
@@ -307,6 +332,38 @@ static void test_complete_cb(const void *user_data)
 	tester_test_passed();
 }
 
+static void bap_config(struct bt_bap_stream *stream,
+					uint8_t code, uint8_t reason,
+					void *user_data)
+{
+	if (code)
+		tester_test_failed();
+}
+
+static bool pac_found(struct bt_bap_pac *lpac, struct bt_bap_pac *rpac,
+							void *user_data)
+{
+	struct test_data *data = user_data;
+	unsigned int config_id;
+
+	data->stream = bt_bap_stream_new(data->bap, lpac, rpac,
+						&data->cfg->qos,
+						&data->cfg->cc);
+	g_assert(data->stream);
+
+	config_id = bt_bap_stream_config(data->stream, &data->cfg->qos,
+					&data->cfg->cc, bap_config, data);
+	g_assert(config_id);
+
+	return true;
+}
+
+static void bap_ready(struct bt_bap *bap, void *user_data)
+{
+	bt_bap_foreach_pac(bap, BT_BAP_SINK, pac_found, user_data);
+	bt_bap_foreach_pac(bap, BT_BAP_SOURCE, pac_found, user_data);
+}
+
 static void test_client(const void *user_data)
 {
 	struct test_data *data = (void *)user_data;
@@ -321,11 +378,29 @@ static void test_client(const void *user_data)
 	db = gatt_db_new();
 	g_assert(db);
 
+	if (data->cfg) {
+		if (data->cfg->src) {
+			data->snk = bt_bap_add_pac(db, "test-bap-snk",
+							BT_BAP_SINK, LC3_ID,
+							NULL, data->caps, NULL);
+			g_assert(data->snk);
+		}
+
+		if (data->cfg->snk) {
+			data->src = bt_bap_add_pac(db, "test-bap-src",
+							BT_BAP_SOURCE, LC3_ID,
+							NULL, data->caps, NULL);
+			g_assert(data->src);
+		}
+	}
+
 	data->bap = bt_bap_new(db, bt_gatt_client_get_db(data->client));
 	g_assert(data->bap);
 
 	bt_bap_set_debug(data->bap, print_debug, "bt_bap:", NULL);
 
+	bt_bap_ready_register(data->bap, bap_ready, data, NULL);
+
 	bt_bap_attach(data->bap, data->client);
 }
 
@@ -531,22 +606,22 @@ static void test_disc(void)
 	 * The IUT reads the values of the characteristics specified in the PAC
 	 * Characteristic and Location Characteristic columns.
 	 */
-	define_test("BAP/UCL/DISC/BV-01-C", test_client, DISC_SINK_PAC);
-	define_test("BAP/UCL/DISC/BV-02-C", test_client, DISC_SOURCE_PAC);
+	define_test("BAP/UCL/DISC/BV-01-C", test_client, NULL, DISC_SINK_PAC);
+	define_test("BAP/UCL/DISC/BV-02-C", test_client, NULL, DISC_SOURCE_PAC);
 
 	/* BAP/UCL/DISC/BV-06-C [Discover Available Audio Contexts]
 	 *
 	 * The IUT successfully reads the value of the Available Audio Contexts
 	 * characteristic on the LowerTester.
 	 */
-	define_test("BAP/UCL/DISC/BV-06-C", test_client, DISC_CTX);
+	define_test("BAP/UCL/DISC/BV-06-C", test_client, NULL, DISC_CTX);
 
 	/* BAP/UCL/DISC/BV-05-C [Discover Supported Audio Contexts]
 	 *
 	 * The IUT successfully reads the value of the Supported Audio Contexts
 	 * characteristic on the Lower Tester.
 	 */
-	define_test("BAP/UCL/DISC/BV-05-C", test_client, DISC_SUP_CTX);
+	define_test("BAP/UCL/DISC/BV-05-C", test_client, NULL, DISC_SUP_CTX);
 
 	/* BAP/UCL/DISC/BV-03-C [Discover Sink ASE_ID]
 	 * BAP/UCL/DISC/BV-04-C [Discover Source ASE_ID]
@@ -554,8 +629,451 @@ static void test_disc(void)
 	 * The IUT successfully reads the ASE_ID values of each discovered ASE
 	 * characteristic on the LowerTester.
 	 */
-	define_test("BAP/UCL/DISC/BV-03-C", test_client, DISC_SINK_ASE);
-	define_test("BAP/UCL/DISC/BV-04-C", test_client, DISC_SOURCE_ASE);
+	define_test("BAP/UCL/DISC/BV-03-C", test_client, NULL, DISC_SINK_ASE);
+	define_test("BAP/UCL/DISC/BV-04-C", test_client, NULL, DISC_SOURCE_ASE);
+}
+
+/* ATT: Write Command (0x52) len 23
+ *  Handle: 0x0022
+ *    Data: 010101020206000000000_cfg
+ * ATT: Handle Value Notification (0x1b) len 7
+ *   Handle: 0x0022
+ *     Data: 0101010000
+ * ATT: Handle Value Notification (0x1b) len 37
+ *   Handle: 0x0016
+ *     Data: 01010102010a00204e00409c00204e00409c000600000000_cfg
+ */
+#define SCC_SNK(_cfg...) \
+	DISC_SOURCE_ASE, \
+	IOV_DATA(0x52, 0x22, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x06, 0x00, \
+			0x00, 0x00, 0x00, _cfg), \
+	IOV_DATA(0x1b, 0x22, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00), \
+	IOV_NULL, \
+	IOV_DATA(0x1b, 0x16, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x0a, 0x00, \
+			0x20, 0x4e, 0x00, 0x40, 0x9c, 0x00, 0x20, 0x4e, 0x00, \
+			0x40, 0x9c, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, _cfg)
+
+#define QOS_BALANCED_2M \
+	{ \
+		.target_latency = BT_BAP_CONFIG_LATENCY_BALANCED, \
+		.phy = BT_BAP_CONFIG_PHY_2M, \
+	}
+
+static struct test_config cfg_snk_8_1 = {
+	.cc = LC3_CONFIG_8_1,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_8_1 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x01, 0x02, 0x02, 0x00, 0x03, 0x04, 0x1a, \
+			0x00)
+
+static struct test_config cfg_snk_8_2 = {
+	.cc = LC3_CONFIG_8_2,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_8_2 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x04, 0x1e, \
+			0x00)
+
+static struct test_config cfg_snk_16_1 = {
+	.cc = LC3_CONFIG_16_1,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_16_1 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x03, 0x02, 0x02, 0x00, 0x03, 0x04, 0x1e, \
+			0x00)
+
+static struct test_config cfg_snk_16_2 = {
+	.cc = LC3_CONFIG_16_2,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_16_2 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x03, 0x02, 0x02, 0x01, 0x03, 0x04, 0x28, \
+			0x00)
+
+static struct test_config cfg_snk_24_1 = {
+	.cc = LC3_CONFIG_24_1,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_24_1 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x05, 0x02, 0x02, 0x00, 0x03, 0x04, 0x2d, \
+			0x00)
+
+static struct test_config cfg_snk_24_2 = {
+	.cc = LC3_CONFIG_24_2,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_24_2 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x05, 0x02, 0x02, 0x01, 0x03, 0x04, 0x3c, \
+			0x00)
+
+static struct test_config cfg_snk_32_1 = {
+	.cc = LC3_CONFIG_32_1,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_32_1 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x06, 0x02, 0x02, 0x00, 0x03, 0x04, 0x3c, \
+			0x00)
+
+static struct test_config cfg_snk_32_2 = {
+	.cc = LC3_CONFIG_32_2,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_32_2 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x06, 0x02, 0x02, 0x01, 0x03, 0x04, 0x50, \
+			0x00)
+
+static struct test_config cfg_snk_44_1 = {
+	.cc = LC3_CONFIG_44_1,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_44_1 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x07, 0x02, 0x02, 0x00, 0x03, 0x04, 0x62, \
+			0x00)
+
+static struct test_config cfg_snk_44_2 = {
+	.cc = LC3_CONFIG_44_2,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_44_2 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x07, 0x02, 0x02, 0x01, 0x03, 0x04, 0x82, \
+			0x00)
+
+static struct test_config cfg_snk_48_1 = {
+	.cc = LC3_CONFIG_48_1,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_48_1 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x08, 0x02, 0x02, 0x00, 0x03, 0x04, 0x4b, \
+			0x00)
+
+static struct test_config cfg_snk_48_2 = {
+	.cc = LC3_CONFIG_48_2,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_48_2 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x08, 0x02, 0x02, 0x01, 0x03, 0x04, 0x64, \
+			0x00)
+
+static struct test_config cfg_snk_48_3 = {
+	.cc = LC3_CONFIG_48_3,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_48_3 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x08, 0x02, 0x02, 0x00, 0x03, 0x04, 0x5a, \
+			0x00)
+
+static struct test_config cfg_snk_48_4 = {
+	.cc = LC3_CONFIG_48_4,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_48_4 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x08, 0x02, 0x02, 0x01, 0x03, 0x04, 0x78, \
+			0x00)
+
+static struct test_config cfg_snk_48_5 = {
+	.cc = LC3_CONFIG_48_5,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_48_5 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x08, 0x02, 0x02, 0x00, 0x03, 0x04, 0x75, \
+			0x00)
+
+static struct test_config cfg_snk_48_6 = {
+	.cc = LC3_CONFIG_48_6,
+	.qos = QOS_BALANCED_2M,
+	.snk = true,
+};
+
+#define SCC_SNK_48_6 \
+	SCC_SNK(0x0a, 0x02, 0x01, 0x08, 0x02, 0x02, 0x01, 0x03, 0x04, 0x9b, \
+			0x00)
+
+/* ATT: Write Command (0x52) len 23
+ *  Handle: 0x0022
+ *    Data: 010103020206000000000_cfg
+ * ATT: Handle Value Notification (0x1b) len 7
+ *   Handle: 0x0022
+ *     Data: 0101030000
+ * ATT: Handle Value Notification (0x1b) len 37
+ *   Handle: 0x001c
+ *     Data: 03010102010a00204e00409c00204e00409c000600000000_cfg
+ */
+#define SCC_SRC(_cfg...) \
+	DISC_SOURCE_ASE, \
+	IOV_DATA(0x52, 0x22, 0x00, 0x01, 0x01, 0x03, 0x02, 0x02, 0x06, 0x00, \
+			0x00, 0x00, 0x00, _cfg), \
+	IOV_DATA(0x1b, 0x22, 0x00, 0x01, 0x01, 0x03, 0x00, 0x00), \
+	IOV_NULL, \
+	IOV_DATA(0x1b, 0x1c, 0x00, 0x03, 0x01, 0x01, 0x02, 0x01, 0x0a, 0x00, \
+			0x20, 0x4e, 0x00, 0x40, 0x9c, 0x00, 0x20, 0x4e, 0x00, \
+			0x40, 0x9c, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, _cfg)
+
+static struct test_config cfg_src_8_1 = {
+	.cc = LC3_CONFIG_8_1,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_8_1 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x01, 0x02, 0x02, 0x00, 0x03, 0x04, 0x1a, \
+			0x00)
+
+static struct test_config cfg_src_8_2 = {
+	.cc = LC3_CONFIG_8_2,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_8_2 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x04, 0x1e, \
+			0x00)
+
+static struct test_config cfg_src_16_1 = {
+	.cc = LC3_CONFIG_16_1,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_16_1 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x03, 0x02, 0x02, 0x00, 0x03, 0x04, 0x1e, \
+			0x00)
+
+static struct test_config cfg_src_16_2 = {
+	.cc = LC3_CONFIG_16_2,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_16_2 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x03, 0x02, 0x02, 0x01, 0x03, 0x04, 0x28, \
+			0x00)
+
+static struct test_config cfg_src_24_1 = {
+	.cc = LC3_CONFIG_24_1,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_24_1 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x05, 0x02, 0x02, 0x00, 0x03, 0x04, 0x2d, \
+			0x00)
+
+static struct test_config cfg_src_24_2 = {
+	.cc = LC3_CONFIG_24_2,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_24_2 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x05, 0x02, 0x02, 0x01, 0x03, 0x04, 0x3c, \
+			0x00)
+
+static struct test_config cfg_src_32_1 = {
+	.cc = LC3_CONFIG_32_1,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_32_1 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x06, 0x02, 0x02, 0x00, 0x03, 0x04, 0x3c, \
+			0x00)
+
+static struct test_config cfg_src_32_2 = {
+	.cc = LC3_CONFIG_32_2,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_32_2 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x06, 0x02, 0x02, 0x01, 0x03, 0x04, 0x50, \
+			0x00)
+
+static struct test_config cfg_src_44_1 = {
+	.cc = LC3_CONFIG_44_1,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_44_1 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x07, 0x02, 0x02, 0x00, 0x03, 0x04, 0x62, \
+			0x00)
+
+static struct test_config cfg_src_44_2 = {
+	.cc = LC3_CONFIG_44_2,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_44_2 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x07, 0x02, 0x02, 0x01, 0x03, 0x04, 0x82, \
+			0x00)
+
+static struct test_config cfg_src_48_1 = {
+	.cc = LC3_CONFIG_48_1,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_48_1 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x08, 0x02, 0x02, 0x00, 0x03, 0x04, 0x4b, \
+			0x00)
+
+static struct test_config cfg_src_48_2 = {
+	.cc = LC3_CONFIG_48_2,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_48_2 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x08, 0x02, 0x02, 0x01, 0x03, 0x04, 0x64, \
+			0x00)
+
+static struct test_config cfg_src_48_3 = {
+	.cc = LC3_CONFIG_48_3,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_48_3 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x08, 0x02, 0x02, 0x00, 0x03, 0x04, 0x5a, \
+			0x00)
+
+static struct test_config cfg_src_48_4 = {
+	.cc = LC3_CONFIG_48_4,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_48_4 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x08, 0x02, 0x02, 0x01, 0x03, 0x04, 0x78, \
+			0x00)
+
+static struct test_config cfg_src_48_5 = {
+	.cc = LC3_CONFIG_48_5,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_48_5 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x08, 0x02, 0x02, 0x00, 0x03, 0x04, 0x75, \
+			0x00)
+
+static struct test_config cfg_src_48_6 = {
+	.cc = LC3_CONFIG_48_6,
+	.qos = QOS_BALANCED_2M,
+	.src = true,
+};
+
+#define SCC_SRC_48_6 \
+	SCC_SRC(0x0a, 0x02, 0x01, 0x08, 0x02, 0x02, 0x01, 0x03, 0x04, 0x9b, \
+			0x00)
+
+static void test_scc(void)
+{
+	/* The IUT successfully writes to the ASE Control point with the opcode
+	 * set to 0x01 (Config Codec) and correctly formatted parameter values
+	 * from Table 4.9. The Codec_ID field is a 5-octet field with octet 0
+	 * set to the LC3 Coding_Format value defined in Bluetooth Assigned
+	 * Numbers, octets 1–4 set to 0x0000. Each parameter (if present)
+	 * included in the data sent in Codec_Specific_Configuration is
+	 * formatted in an LTV structure with the length, type, and value
+	 * specified in Table 4.10.
+	 */
+	define_test("BAP/UCL/SCC/BV-001-C", test_client, &cfg_snk_8_1,
+							SCC_SNK_8_1);
+	define_test("BAP/UCL/SCC/BV-002-C", test_client, &cfg_snk_8_2,
+							SCC_SNK_8_2);
+	define_test("BAP/UCL/SCC/BV-003-C", test_client, &cfg_snk_16_1,
+							SCC_SNK_16_1);
+	define_test("BAP/UCL/SCC/BV-004-C", test_client, &cfg_snk_16_2,
+							SCC_SNK_16_2);
+	define_test("BAP/UCL/SCC/BV-005-C", test_client, &cfg_snk_24_1,
+							SCC_SNK_24_1);
+	define_test("BAP/UCL/SCC/BV-006-C", test_client, &cfg_snk_24_2,
+							SCC_SNK_24_2);
+	define_test("BAP/UCL/SCC/BV-007-C", test_client, &cfg_snk_32_1,
+							SCC_SNK_32_1);
+	define_test("BAP/UCL/SCC/BV-008-C", test_client, &cfg_snk_32_2,
+							SCC_SNK_32_2);
+	define_test("BAP/UCL/SCC/BV-009-C", test_client, &cfg_snk_44_1,
+							SCC_SNK_44_1);
+	define_test("BAP/UCL/SCC/BV-010-C", test_client, &cfg_snk_44_2,
+							SCC_SNK_44_2);
+	define_test("BAP/UCL/SCC/BV-011-C", test_client, &cfg_snk_48_1,
+							SCC_SNK_48_1);
+	define_test("BAP/UCL/SCC/BV-012-C", test_client, &cfg_snk_48_2,
+							SCC_SNK_48_2);
+	define_test("BAP/UCL/SCC/BV-013-C", test_client, &cfg_snk_48_3,
+							SCC_SNK_48_3);
+	define_test("BAP/UCL/SCC/BV-014-C", test_client, &cfg_snk_48_4,
+							SCC_SNK_48_4);
+	define_test("BAP/UCL/SCC/BV-015-C", test_client, &cfg_snk_48_5,
+							SCC_SNK_48_5);
+	define_test("BAP/UCL/SCC/BV-016-C", test_client, &cfg_snk_48_6,
+							SCC_SNK_48_6);
+	define_test("BAP/UCL/SCC/BV-017-C", test_client, &cfg_src_8_1,
+							SCC_SRC_8_1);
+	define_test("BAP/UCL/SCC/BV-018-C", test_client, &cfg_src_8_2,
+							SCC_SRC_8_2);
+	define_test("BAP/UCL/SCC/BV-019-C", test_client, &cfg_src_16_1,
+							SCC_SRC_16_1);
+	define_test("BAP/UCL/SCC/BV-020-C", test_client, &cfg_src_16_2,
+							SCC_SRC_16_2);
+	define_test("BAP/UCL/SCC/BV-021-C", test_client, &cfg_src_24_1,
+							SCC_SRC_24_1);
+	define_test("BAP/UCL/SCC/BV-022-C", test_client, &cfg_src_24_2,
+							SCC_SRC_24_2);
+	define_test("BAP/UCL/SCC/BV-023-C", test_client, &cfg_src_32_1,
+							SCC_SRC_32_1);
+	define_test("BAP/UCL/SCC/BV-024-C", test_client, &cfg_src_32_2,
+							SCC_SRC_32_2);
+	define_test("BAP/UCL/SCC/BV-025-C", test_client, &cfg_src_44_1,
+							SCC_SRC_44_1);
+	define_test("BAP/UCL/SCC/BV-026-C", test_client, &cfg_src_44_2,
+							SCC_SRC_44_2);
+	define_test("BAP/UCL/SCC/BV-027-C", test_client, &cfg_src_48_1,
+							SCC_SRC_48_1);
+	define_test("BAP/UCL/SCC/BV-028-C", test_client, &cfg_src_48_2,
+							SCC_SRC_48_2);
+	define_test("BAP/UCL/SCC/BV-029-C", test_client, &cfg_src_48_3,
+							SCC_SRC_48_3);
+	define_test("BAP/UCL/SCC/BV-030-C", test_client, &cfg_src_48_4,
+							SCC_SRC_48_4);
+	define_test("BAP/UCL/SCC/BV-031-C", test_client, &cfg_src_48_5,
+							SCC_SRC_48_5);
+	define_test("BAP/UCL/SCC/BV-032-C", test_client, &cfg_src_48_6,
+							SCC_SRC_48_6);
 }
 
 int main(int argc, char *argv[])
@@ -563,6 +1081,7 @@ int main(int argc, char *argv[])
 	tester_init(&argc, &argv);
 
 	test_disc();
+	test_scc();
 
 	return tester_run();
 }
-- 
2.40.0


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

* RE: [BlueZ,1/7] media: Fix not storing Preferred Delay properly
  2023-04-25 20:47 [PATCH BlueZ 1/7] media: Fix not storing Preferred Delay properly Luiz Augusto von Dentz
                   ` (5 preceding siblings ...)
  2023-04-25 20:47 ` [PATCH BlueZ 7/7] test-bap: Introduce SCC tests Luiz Augusto von Dentz
@ 2023-04-25 23:10 ` bluez.test.bot
  2023-04-26 19:49 ` bluez.test.bot
  7 siblings, 0 replies; 9+ messages in thread
From: bluez.test.bot @ 2023-04-25 23:10 UTC (permalink / raw)
  To: linux-bluetooth, luiz.dentz

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

---Test result---

Test Summary:
CheckPatch                    FAIL      3.54 seconds
GitLint                       PASS      1.82 seconds
BuildEll                      PASS      26.72 seconds
BluezMake                     PASS      771.20 seconds
MakeCheck                     FAIL      11.44 seconds
MakeDistcheck                 PASS      154.02 seconds
CheckValgrind                 PASS      245.93 seconds
CheckSmatch                   PASS      329.77 seconds
bluezmakeextell               PASS      99.34 seconds
IncrementalBuild              PASS      4381.54 seconds
ScanBuild                     PASS      999.98 seconds

Details
##############################
Test: CheckPatch - FAIL
Desc: Run checkpatch.pl script
Output:
[BlueZ,6/7] shared/lc3: Update configuration to use iovec
ERROR:SPACING: need consistent spacing around '>>' (ctx:WxV)
#124: FILE: src/shared/lc3.h:56:
+	LC3_IOV(0x02, LC3_FREQ, _freq, _freq >>8, \
 	                                     ^

/github/workspace/src/src/13223798.patch total: 1 errors, 0 warnings, 125 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/src/13223798.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: MakeCheck - FAIL
Desc: Run Bluez Make Check
Output:

make[3]: *** [Makefile:11261: test-suite.log] Error 1
make[2]: *** [Makefile:11369: check-TESTS] Error 2
make[1]: *** [Makefile:11777: check-am] Error 2
make: *** [Makefile:11779: check] Error 2


---
Regards,
Linux Bluetooth


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

* RE: [BlueZ,1/7] media: Fix not storing Preferred Delay properly
  2023-04-25 20:47 [PATCH BlueZ 1/7] media: Fix not storing Preferred Delay properly Luiz Augusto von Dentz
                   ` (6 preceding siblings ...)
  2023-04-25 23:10 ` [BlueZ,1/7] media: Fix not storing Preferred Delay properly bluez.test.bot
@ 2023-04-26 19:49 ` bluez.test.bot
  7 siblings, 0 replies; 9+ messages in thread
From: bluez.test.bot @ 2023-04-26 19:49 UTC (permalink / raw)
  To: linux-bluetooth, luiz.dentz

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

---Test result---

Test Summary:
CheckPatch                    FAIL      4.01 seconds
GitLint                       PASS      1.94 seconds
BuildEll                      PASS      37.01 seconds
BluezMake                     PASS      1276.07 seconds
MakeCheck                     FAIL      14.14 seconds
MakeDistcheck                 PASS      211.72 seconds
CheckValgrind                 PASS      346.42 seconds
CheckSmatch                   PASS      474.73 seconds
bluezmakeextell               PASS      141.60 seconds
IncrementalBuild              PASS      7451.95 seconds
ScanBuild                     PASS      1514.41 seconds

Details
##############################
Test: CheckPatch - FAIL
Desc: Run checkpatch.pl script
Output:
[BlueZ,6/7] shared/lc3: Update configuration to use iovec
ERROR:SPACING: need consistent spacing around '>>' (ctx:WxV)
#124: FILE: src/shared/lc3.h:56:
+	LC3_IOV(0x02, LC3_FREQ, _freq, _freq >>8, \
 	                                     ^

/github/workspace/src/src/13223798.patch total: 1 errors, 0 warnings, 125 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/src/13223798.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: MakeCheck - FAIL
Desc: Run Bluez Make Check
Output:

make[3]: *** [Makefile:11261: test-suite.log] Error 1
make[2]: *** [Makefile:11369: check-TESTS] Error 2
make[1]: *** [Makefile:11777: check-am] Error 2
make: *** [Makefile:11779: check] Error 2


---
Regards,
Linux Bluetooth


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

end of thread, other threads:[~2023-04-26 19:49 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-25 20:47 [PATCH BlueZ 1/7] media: Fix not storing Preferred Delay properly Luiz Augusto von Dentz
2023-04-25 20:47 ` [PATCH BlueZ 2/7] shared/bap: Fix crash detaching streams Luiz Augusto von Dentz
2023-04-25 20:47 ` [PATCH BlueZ 3/7] share/bap: Fix not removing timeout on bap_free Luiz Augusto von Dentz
2023-04-25 20:47 ` [PATCH BlueZ 4/7] shared/tester: Add support for NULL PDUs Luiz Augusto von Dentz
2023-04-25 20:47 ` [PATCH BlueZ 5/7] shared/bap: Fix typo Luiz Augusto von Dentz
2023-04-25 20:47 ` [PATCH BlueZ 6/7] shared/lc3: Update configuration to use iovec Luiz Augusto von Dentz
2023-04-25 20:47 ` [PATCH BlueZ 7/7] test-bap: Introduce SCC tests Luiz Augusto von Dentz
2023-04-25 23:10 ` [BlueZ,1/7] media: Fix not storing Preferred Delay properly bluez.test.bot
2023-04-26 19:49 ` bluez.test.bot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.