diff mbox series

[v2,5/9] avdtp: Add a flag in struct avdtp to control MSFT a2dp offload

Message ID 20211119094235.2432-5-kiran.k@intel.com (mailing list archive)
State Changes Requested
Headers show
Series [v2,1/9] adapter: Enable MSFT a2dp offload codec when Experimental is set | expand

Checks

Context Check Description
tedd_an/checkpatch success Checkpatch PASS
tedd_an/gitlint success Gitlint PASS

Commit Message

K, Kiran Nov. 19, 2021, 9:42 a.m. UTC
Define a flag in struct avdtp to mark the support of MSFT
a2dp codecs. If the flag is set, for a2dp streaming offload
path will be selected.
---
 profiles/audio/avdtp.c | 7 +++++++
 src/adapter.c          | 9 +++++++++
 2 files changed, 16 insertions(+)
diff mbox series

Patch

diff --git a/profiles/audio/avdtp.c b/profiles/audio/avdtp.c
index d3dfbf96dda3..58d419fb3148 100644
--- a/profiles/audio/avdtp.c
+++ b/profiles/audio/avdtp.c
@@ -409,6 +409,9 @@  struct avdtp {
 
 	/* Attempt stream setup instead of disconnecting */
 	gboolean stream_setup;
+
+	/* use offload for transport */
+	gboolean use_offload;
 };
 
 static GSList *state_callbacks = NULL;
@@ -2425,6 +2428,7 @@  struct avdtp *avdtp_new(GIOChannel *chan, struct btd_device *device,
 							struct queue *lseps)
 {
 	struct avdtp *session;
+	char *use_offload;
 
 	session = g_new0(struct avdtp, 1);
 
@@ -2436,6 +2440,9 @@  struct avdtp *avdtp_new(GIOChannel *chan, struct btd_device *device,
 
 	session->version = get_version(session);
 
+	if (is_msft_a2dp_offload_supported(avdtp_get_adapter(session)))
+		session->use_offload = TRUE;
+
 	if (!chan)
 		return session;
 
diff --git a/src/adapter.c b/src/adapter.c
index fd5ce614bec5..235748c52780 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -9796,6 +9796,15 @@  static void codec_offload_func(struct btd_adapter *adapter, uint8_t action)
 	btd_error(adapter->dev_id, "Failed to set Codec Offload");
 }
 
+static bool is_exp_feature_uuid_the_same(const void *data,
+					 const void *match_data)
+{
+	if (sizeof(data) != sizeof(match_data))
+		return false;
+
+	return memcmp(data, match_data, sizeof(data)) == 0;
+}
+
 bool is_msft_a2dp_offload_supported(struct btd_adapter *adapter)
 {
 	return queue_find(adapter->exps, is_exp_feature_uuid_the_same,