All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] Remove IMTU and OMTU properties and return its values on Acquire reply
@ 2011-01-18 10:00 Luiz Augusto von Dentz
  2011-01-18 10:00 ` [PATCH 2/4] Updade a2dpsink to use new Acquire API Luiz Augusto von Dentz
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Luiz Augusto von Dentz @ 2011-01-18 10:00 UTC (permalink / raw)
  To: linux-bluetooth

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

This should make Acquire blocking friendly since the client no longer has
to call GetProperties to discover how much it can write/read when using
the acquired file descriptor.
---
 audio/transport.c |   56 +++++++++++++++++++++++++++++++---------------------
 doc/media-api.txt |   13 ++---------
 2 files changed, 36 insertions(+), 33 deletions(-)

diff --git a/audio/transport.c b/audio/transport.c
index bdec157..d575590 100644
--- a/audio/transport.c
+++ b/audio/transport.c
@@ -181,14 +181,6 @@ static gboolean media_transport_set_fd(struct media_transport *transport,
 
 	info("%s: fd(%d) ready", transport->path, fd);
 
-	emit_property_changed(transport->conn, transport->path,
-				MEDIA_TRANSPORT_INTERFACE, "IMTU",
-				DBUS_TYPE_UINT16, &transport->imtu);
-
-	emit_property_changed(transport->conn, transport->path,
-				MEDIA_TRANSPORT_INTERFACE, "OMTU",
-				DBUS_TYPE_UINT16, &transport->omtu);
-
 	return TRUE;
 }
 
@@ -209,6 +201,7 @@ static void a2dp_resume_complete(struct avdtp *session,
 	struct avdtp_stream *stream;
 	int fd;
 	uint16_t imtu, omtu;
+	gboolean ret;
 
 	req->id = 0;
 
@@ -219,15 +212,24 @@ static void a2dp_resume_complete(struct avdtp *session,
 	if (stream == NULL)
 		goto fail;
 
-	if (avdtp_stream_get_transport(stream, &fd, &imtu, &omtu, NULL) ==
-			FALSE)
+	ret = avdtp_stream_get_transport(stream, &fd, &imtu, &omtu, NULL);
+	if (ret == FALSE)
 		goto fail;
 
 	media_transport_set_fd(transport, fd, imtu, omtu);
 
-	if (g_dbus_send_reply(transport->conn, req->msg,
-				DBUS_TYPE_UNIX_FD, &fd,
-				DBUS_TYPE_INVALID) == FALSE)
+	if (g_strstr_len(owner->accesstype, -1, "r") == NULL)
+		imtu = 0;
+
+	if (g_strstr_len(owner->accesstype, -1, "w") == NULL)
+		omtu = 0;
+
+	ret = g_dbus_send_reply(transport->conn, req->msg,
+						DBUS_TYPE_UNIX_FD, &fd,
+						DBUS_TYPE_UINT16, &imtu,
+						DBUS_TYPE_UINT16, &omtu,
+						DBUS_TYPE_INVALID);
+	if (ret == FALSE)
 		goto fail;
 
 	return;
@@ -282,6 +284,8 @@ static void headset_resume_complete(struct audio_device *dev, void *user_data)
 	struct acquire_request *req = owner->request;
 	struct media_transport *transport = owner->transport;
 	int fd;
+	uint16_t imtu, omtu;
+	gboolean ret;
 
 	req->id = 0;
 
@@ -292,11 +296,23 @@ static void headset_resume_complete(struct audio_device *dev, void *user_data)
 	if (fd < 0)
 		goto fail;
 
-	media_transport_set_fd(transport, fd, 48, 48);
+	imtu = 48;
+	omtu = 48;
 
-	if (g_dbus_send_reply(transport->conn, req->msg,
-				DBUS_TYPE_UNIX_FD, &fd,
-				DBUS_TYPE_INVALID) == FALSE)
+	media_transport_set_fd(transport, fd, imtu, omtu);
+
+	if (g_strstr_len(owner->accesstype, -1, "r") == NULL)
+		imtu = 0;
+
+	if (g_strstr_len(owner->accesstype, -1, "w") == NULL)
+		omtu = 0;
+
+	ret = g_dbus_send_reply(transport->conn, req->msg,
+						DBUS_TYPE_UNIX_FD, &fd,
+						DBUS_TYPE_UINT16, &imtu,
+						DBUS_TYPE_UINT16, &omtu,
+						DBUS_TYPE_INVALID);
+	if (ret == FALSE)
 		goto fail;
 
 	return;
@@ -607,12 +623,6 @@ void transport_get_properties(struct media_transport *transport,
 	dict_append_entry(&dict, "Device", DBUS_TYPE_OBJECT_PATH,
 						&transport->device->path);
 
-	dict_append_entry(&dict, "IMTU", DBUS_TYPE_UINT16,
-						&transport->imtu);
-
-	dict_append_entry(&dict, "OMTU", DBUS_TYPE_UINT16,
-						&transport->omtu);
-
 	uuid = media_endpoint_get_uuid(transport->endpoint);
 	dict_append_entry(&dict, "UUID", DBUS_TYPE_STRING, &uuid);
 
diff --git a/doc/media-api.txt b/doc/media-api.txt
index 5338974..92b8b3f 100644
--- a/doc/media-api.txt
+++ b/doc/media-api.txt
@@ -86,9 +86,10 @@ Methods		dict GetProperties()
 			Returns all properties for the interface. See the
 			properties section for available properties.
 
-		fd Acquire(string accesstype)
+		fd, uint16, uint16 Acquire(string accesstype)
 
-			Acquire transport file descriptor.
+			Acquire transport file descriptor and the MTU for read
+			and write respectively.
 
 			possible accesstype:
 
@@ -118,14 +119,6 @@ Properties	object Device [readonly]
 
 			Device object which the transport is connected to.
 
-		uint16 IMTU [readonly]
-
-			Transport input MTU.
-
-		uint16 OMTU [readonly]
-
-			Transport output MTU.
-
 		string UUID [readonly]
 
 			UUID of the profile which the transport is for.
-- 
1.7.1


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

* [PATCH 2/4] Updade a2dpsink to use new Acquire API
  2011-01-18 10:00 [PATCH 1/4] Remove IMTU and OMTU properties and return its values on Acquire reply Luiz Augusto von Dentz
@ 2011-01-18 10:00 ` Luiz Augusto von Dentz
  2011-01-19 15:16   ` Johan Hedberg
  2011-01-18 10:00 ` [PATCH 3/4] Add Routing property to MediaTransport interface Luiz Augusto von Dentz
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Luiz Augusto von Dentz @ 2011-01-18 10:00 UTC (permalink / raw)
  To: linux-bluetooth

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

---
 audio/gstavdtpsink.c |   19 +++++++------------
 1 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/audio/gstavdtpsink.c b/audio/gstavdtpsink.c
index 95c4811..f3b15b3 100644
--- a/audio/gstavdtpsink.c
+++ b/audio/gstavdtpsink.c
@@ -1281,16 +1281,7 @@ static gboolean gst_avdtp_sink_transport_parse_property(GstAvdtpSink *self,
 
 		break;
 	}
-	case DBUS_TYPE_UINT16: {
-		uint16_t value;
-		dbus_message_iter_get_basic(&variant_i, &value);
-
-		if (g_str_equal(key, "OMTU") == TRUE)
-			self->data->link_mtu = value;
-
-		break;
-	}
-        case DBUS_TYPE_STRING: {
+	case DBUS_TYPE_STRING: {
 		const char *value;
 		dbus_message_iter_get_basic(&variant_i, &value);
 
@@ -1329,6 +1320,7 @@ static gboolean gst_avdtp_sink_transport_acquire(GstAvdtpSink *self)
 	DBusError err;
 	const char *access_type = "w";
 	int fd;
+	uint16_t imtu, omtu;
 
 	dbus_error_init(&err);
 
@@ -1349,14 +1341,17 @@ static gboolean gst_avdtp_sink_transport_acquire(GstAvdtpSink *self)
 		goto fail;
 
 	if (dbus_message_get_args(reply, &err, DBUS_TYPE_UNIX_FD, &fd,
-					DBUS_TYPE_INVALID) == FALSE)
+						DBUS_TYPE_UINT16, &imtu,
+						DBUS_TYPE_UINT16, &omtu,
+						DBUS_TYPE_INVALID) == FALSE)
 		goto fail;
 
 	dbus_message_unref(reply);
 
 	self->stream = g_io_channel_unix_new(fd);
 	g_io_channel_set_close_on_unref(self->stream, TRUE);
-	GST_DEBUG_OBJECT(self, "stream_fd=%d", fd);
+	self->data->link_mtu = omtu;
+	GST_DEBUG_OBJECT(self, "stream_fd=%d mtu=%d", fd, omtu);
 
 	return TRUE;
 
-- 
1.7.1


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

* [PATCH 3/4] Add Routing property to MediaTransport interface
  2011-01-18 10:00 [PATCH 1/4] Remove IMTU and OMTU properties and return its values on Acquire reply Luiz Augusto von Dentz
  2011-01-18 10:00 ` [PATCH 2/4] Updade a2dpsink to use new Acquire API Luiz Augusto von Dentz
@ 2011-01-18 10:00 ` Luiz Augusto von Dentz
  2011-01-19 15:20   ` Johan Hedberg
  2011-01-18 10:00 ` [PATCH 4/4] Add proper tracking mechanism to NREC Luiz Augusto von Dentz
  2011-01-19 15:14 ` [PATCH 1/4] Remove IMTU and OMTU properties and return its values on Acquire reply Johan Hedberg
  3 siblings, 1 reply; 8+ messages in thread
From: Luiz Augusto von Dentz @ 2011-01-18 10:00 UTC (permalink / raw)
  To: linux-bluetooth

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

This should indicate to the endpoint what routing the transport is using
---
 audio/transport.c |    4 ++++
 doc/media-api.txt |    6 ++++++
 2 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/audio/transport.c b/audio/transport.c
index d575590..b5a9e48 100644
--- a/audio/transport.c
+++ b/audio/transport.c
@@ -599,12 +599,16 @@ static void get_properties_headset(struct media_transport *transport,
 						DBusMessageIter *dict)
 {
 	gboolean nrec, inband;
+	const char *routing;
 
 	nrec = headset_get_nrec(transport->device);
 	dict_append_entry(dict, "NREC", DBUS_TYPE_BOOLEAN, &nrec);
 
 	inband = headset_get_inband(transport->device);
 	dict_append_entry(dict, "InbandRingtone", DBUS_TYPE_BOOLEAN, &inband);
+
+	routing = headset_get_sco_hci(transport->device) ? "HCI" : "PCM";
+	dict_append_entry(dict, "Routing", DBUS_TYPE_STRING, &routing);
 }
 
 void transport_get_properties(struct media_transport *transport,
diff --git a/doc/media-api.txt b/doc/media-api.txt
index 92b8b3f..84903d6 100644
--- a/doc/media-api.txt
+++ b/doc/media-api.txt
@@ -152,3 +152,9 @@ Properties	object Device [readonly]
 			Optional. Indicates if the transport support sending
 			ringtones, this property is only writeable when the
 			transport was acquired by the sender.
+
+		string Routing [readonly]
+
+			Optional. Indicates where is the transport being routed
+
+			Possible Values: "HCI" or "PCM"
-- 
1.7.1


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

* [PATCH 4/4] Add proper tracking mechanism to NREC
  2011-01-18 10:00 [PATCH 1/4] Remove IMTU and OMTU properties and return its values on Acquire reply Luiz Augusto von Dentz
  2011-01-18 10:00 ` [PATCH 2/4] Updade a2dpsink to use new Acquire API Luiz Augusto von Dentz
  2011-01-18 10:00 ` [PATCH 3/4] Add Routing property to MediaTransport interface Luiz Augusto von Dentz
@ 2011-01-18 10:00 ` Luiz Augusto von Dentz
  2011-01-19 15:22   ` Johan Hedberg
  2011-01-19 15:14 ` [PATCH 1/4] Remove IMTU and OMTU properties and return its values on Acquire reply Johan Hedberg
  3 siblings, 1 reply; 8+ messages in thread
From: Luiz Augusto von Dentz @ 2011-01-18 10:00 UTC (permalink / raw)
  To: linux-bluetooth

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

NREC may change during the connections so it has to be tracked in order
to signal changes to applications.
---
 audio/headset.c   |   62 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 audio/headset.h   |    6 +++++
 audio/transport.c |   17 ++++++++++++++
 3 files changed, 84 insertions(+), 1 deletions(-)

diff --git a/audio/headset.c b/audio/headset.c
index 53a594d..62596c4 100644
--- a/audio/headset.c
+++ b/audio/headset.c
@@ -109,6 +109,12 @@ struct headset_state_callback {
 	unsigned int id;
 };
 
+struct headset_nrec_callback {
+	unsigned int id;
+	headset_nrec_cb cb;
+	void *user_data;
+};
+
 struct connect_cb {
 	unsigned int id;
 	headset_stream_cb_t cb;
@@ -137,6 +143,7 @@ struct headset_slc {
 	gboolean inband_ring;
 	gboolean nrec;
 	gboolean nrec_req;
+	GSList *nrec_cbs;
 
 	int sp_gain;
 	int mic_gain;
@@ -1096,8 +1103,17 @@ int telephony_nr_and_ec_rsp(void *telephony_device, cme_error_t err)
 	struct headset *hs = device->headset;
 	struct headset_slc *slc = hs->slc;
 
-	if (err == CME_ERROR_NONE)
+	if (err == CME_ERROR_NONE) {
+		GSList *l;
+
+		for (l = slc->nrec_cbs; l; l = l->next) {
+			struct headset_nrec_callback *nrec_cb = l->data;
+
+			nrec_cb->cb(device, slc->nrec_req, nrec_cb->user_data);
+		}
+
 		slc->nrec = hs->slc->nrec_req;
+	}
 
 	return telephony_generic_rsp(telephony_device, err);
 }
@@ -2102,6 +2118,9 @@ static int headset_close_rfcomm(struct audio_device *dev)
 		hs->rfcomm = NULL;
 	}
 
+	g_slist_foreach(hs->slc->nrec_cbs, (GFunc) g_free, NULL);
+	g_slist_free(hs->slc->nrec_cbs);
+
 	g_free(hs->slc);
 	hs->slc = NULL;
 
@@ -2638,6 +2657,47 @@ gboolean headset_get_nrec(struct audio_device *dev)
 	return hs->slc->nrec;
 }
 
+unsigned int headset_add_nrec_cb(struct audio_device *dev,
+					headset_nrec_cb cb, void *user_data)
+{
+	struct headset *hs = dev->headset;
+	struct headset_nrec_callback *nrec_cb;
+	static unsigned int id = 0;
+
+	if (!hs->slc)
+		return 0;
+
+	nrec_cb = g_new(struct headset_nrec_callback, 1);
+	nrec_cb->cb = cb;
+	nrec_cb->user_data = user_data;
+	nrec_cb->id = ++id;
+
+	hs->slc->nrec_cbs = g_slist_prepend(hs->slc->nrec_cbs, nrec_cb);
+
+	return nrec_cb->id;
+}
+
+gboolean headset_remove_nrec_cb(struct audio_device *dev, unsigned int id)
+{
+	struct headset *hs = dev->headset;
+	GSList *l;
+
+	if (!hs->slc)
+		return FALSE;
+
+	for (l = hs->slc->nrec_cbs; l != NULL; l = l->next) {
+		struct headset_nrec_callback *cb = l->data;
+		if (cb && cb->id == id) {
+			hs->slc->nrec_cbs = g_slist_remove(hs->slc->nrec_cbs,
+									cb);
+			g_free(cb);
+			return TRUE;
+		}
+	}
+
+	return FALSE;
+}
+
 gboolean headset_get_inband(struct audio_device *dev)
 {
 	struct headset *hs = dev->headset;
diff --git a/audio/headset.h b/audio/headset.h
index 29dc02c..7ce88c8 100644
--- a/audio/headset.h
+++ b/audio/headset.h
@@ -44,6 +44,9 @@ typedef void (*headset_state_cb) (struct audio_device *dev,
 					headset_state_t old_state,
 					headset_state_t new_state,
 					void *user_data);
+typedef void (*headset_nrec_cb) (struct audio_device *dev,
+					gboolean nrec,
+					void *user_data);
 
 unsigned int headset_add_state_cb(headset_state_cb cb, void *user_data);
 gboolean headset_remove_state_cb(unsigned int id);
@@ -90,6 +93,9 @@ int headset_get_channel(struct audio_device *dev);
 
 int headset_get_sco_fd(struct audio_device *dev);
 gboolean headset_get_nrec(struct audio_device *dev);
+unsigned int headset_add_nrec_cb(struct audio_device *dev,
+					headset_nrec_cb cb, void *user_data);
+gboolean headset_remove_nrec_cb(struct audio_device *dev, unsigned int id);
 gboolean headset_get_inband(struct audio_device *dev);
 gboolean headset_get_sco_hci(struct audio_device *dev);
 
diff --git a/audio/transport.c b/audio/transport.c
index b5a9e48..e2c8237 100644
--- a/audio/transport.c
+++ b/audio/transport.c
@@ -76,6 +76,7 @@ struct media_transport {
 	uint16_t		imtu;		/* Transport input mtu */
 	uint16_t		omtu;		/* Transport output mtu */
 	uint16_t		delay;		/* Transport delay (a2dp only) */
+	unsigned int		nrec_id;	/* Transport nrec watch (headset only) */
 	gboolean		read_lock;
 	gboolean		write_lock;
 	gboolean		in_use;
@@ -685,6 +686,9 @@ static void media_transport_free(void *data)
 	if (transport->session)
 		avdtp_unref(transport->session);
 
+	if (transport->nrec_id)
+		headset_remove_nrec_cb(transport->device, transport->nrec_id);
+
 	if (transport->conn)
 		dbus_connection_unref(transport->conn);
 
@@ -693,6 +697,16 @@ static void media_transport_free(void *data)
 	g_free(transport);
 }
 
+static void headset_nrec_changed(struct audio_device *dev, gboolean nrec,
+							void *user_data)
+{
+	struct media_transport *transport = user_data;
+
+	emit_property_changed(transport->conn, transport->path,
+				MEDIA_TRANSPORT_INTERFACE, "NREC",
+				DBUS_TYPE_BOOLEAN, &nrec);
+}
+
 struct media_transport *media_transport_create(DBusConnection *conn,
 						struct media_endpoint *endpoint,
 						struct audio_device *device,
@@ -728,6 +742,9 @@ struct media_transport *media_transport_create(DBusConnection *conn,
 		transport->cancel = cancel_headset;
 		transport->get_properties = get_properties_headset;
 		transport->set_property = set_property_headset;
+		transport->nrec_id = headset_add_nrec_cb(device,
+							headset_nrec_changed,
+							transport);
 	} else
 		goto fail;
 
-- 
1.7.1


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

* Re: [PATCH 1/4] Remove IMTU and OMTU properties and return its values on Acquire reply
  2011-01-18 10:00 [PATCH 1/4] Remove IMTU and OMTU properties and return its values on Acquire reply Luiz Augusto von Dentz
                   ` (2 preceding siblings ...)
  2011-01-18 10:00 ` [PATCH 4/4] Add proper tracking mechanism to NREC Luiz Augusto von Dentz
@ 2011-01-19 15:14 ` Johan Hedberg
  3 siblings, 0 replies; 8+ messages in thread
From: Johan Hedberg @ 2011-01-19 15:14 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth

Hi Luiz,

On Tue, Jan 18, 2011, Luiz Augusto von Dentz wrote:
> This should make Acquire blocking friendly since the client no longer has
> to call GetProperties to discover how much it can write/read when using
> the acquired file descriptor.
> ---
>  audio/transport.c |   56 +++++++++++++++++++++++++++++++---------------------
>  doc/media-api.txt |   13 ++---------
>  2 files changed, 36 insertions(+), 33 deletions(-)

Pushed upstream. Thanks.

Johan

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

* Re: [PATCH 2/4] Updade a2dpsink to use new Acquire API
  2011-01-18 10:00 ` [PATCH 2/4] Updade a2dpsink to use new Acquire API Luiz Augusto von Dentz
@ 2011-01-19 15:16   ` Johan Hedberg
  0 siblings, 0 replies; 8+ messages in thread
From: Johan Hedberg @ 2011-01-19 15:16 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth

Hi Luiz,

On Tue, Jan 18, 2011, Luiz Augusto von Dentz wrote:
> ---
>  audio/gstavdtpsink.c |   19 +++++++------------
>  1 files changed, 7 insertions(+), 12 deletions(-)

This one doesn't apply -- probably because of the glib deprecated symbol
patches which I merged first (I had to process them first since
otherwise I can't do any compilation checks on the tree). So please fix
and resend.

Johan

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

* Re: [PATCH 3/4] Add Routing property to MediaTransport interface
  2011-01-18 10:00 ` [PATCH 3/4] Add Routing property to MediaTransport interface Luiz Augusto von Dentz
@ 2011-01-19 15:20   ` Johan Hedberg
  0 siblings, 0 replies; 8+ messages in thread
From: Johan Hedberg @ 2011-01-19 15:20 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth

Hi Luiz,

On Tue, Jan 18, 2011, Luiz Augusto von Dentz wrote:
> From: Luiz Augusto von Dentz <luiz.dentz-von@nokia.com>
> 
> This should indicate to the endpoint what routing the transport is using
> ---
>  audio/transport.c |    4 ++++
>  doc/media-api.txt |    6 ++++++
>  2 files changed, 10 insertions(+), 0 deletions(-)

Pushed upstream, though this brings up the question of who should know
the routing setting. There's no standard HCI command for it which makes
it effectively a platform specific feature which either needs to be
statically "known" in some config file or discovered though some
platform specific plugin. Since we've already got platform specific code
on the PulseAudio side (it needs to know where to write the data in the
PCM case) the knowledge might as well be there and that would make the
property unnecessary. Thoughts?

Johan

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

* Re: [PATCH 4/4] Add proper tracking mechanism to NREC
  2011-01-18 10:00 ` [PATCH 4/4] Add proper tracking mechanism to NREC Luiz Augusto von Dentz
@ 2011-01-19 15:22   ` Johan Hedberg
  0 siblings, 0 replies; 8+ messages in thread
From: Johan Hedberg @ 2011-01-19 15:22 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth

Hi Luiz,

On Tue, Jan 18, 2011, Luiz Augusto von Dentz wrote:
> NREC may change during the connections so it has to be tracked in order
> to signal changes to applications.
> ---
>  audio/headset.c   |   62 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
>  audio/headset.h   |    6 +++++
>  audio/transport.c |   17 ++++++++++++++
>  3 files changed, 84 insertions(+), 1 deletions(-)

Pushed upstream. Thanks.

Johan

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

end of thread, other threads:[~2011-01-19 15:22 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-18 10:00 [PATCH 1/4] Remove IMTU and OMTU properties and return its values on Acquire reply Luiz Augusto von Dentz
2011-01-18 10:00 ` [PATCH 2/4] Updade a2dpsink to use new Acquire API Luiz Augusto von Dentz
2011-01-19 15:16   ` Johan Hedberg
2011-01-18 10:00 ` [PATCH 3/4] Add Routing property to MediaTransport interface Luiz Augusto von Dentz
2011-01-19 15:20   ` Johan Hedberg
2011-01-18 10:00 ` [PATCH 4/4] Add proper tracking mechanism to NREC Luiz Augusto von Dentz
2011-01-19 15:22   ` Johan Hedberg
2011-01-19 15:14 ` [PATCH 1/4] Remove IMTU and OMTU properties and return its values on Acquire reply Johan Hedberg

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.