All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/7] [IrDA] net-2.6.22 fixes
@ 2007-04-18 21:32 samuel-jcdQHdrhKHMdnm+yROfE0A
  2007-04-18 21:32 ` [PATCH 1/7] [IrDA] af_irda: irda_recvmsg_stream cleanup samuel-jcdQHdrhKHMdnm+yROfE0A
                   ` (6 more replies)
  0 siblings, 7 replies; 21+ messages in thread
From: samuel-jcdQHdrhKHMdnm+yROfE0A @ 2007-04-18 21:32 UTC (permalink / raw)
  To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
	irda-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

Hi Dave,

Here go 7 patches for IrDA, against your latest net-2.6.22.
They are mainly af_irda.c fixes/cleanup. Also, I just sent another af_irda.c
oops fix, against net-2.6 ("IrDA: Correctly handling socket error").
If you want it against net-2.6.22 as well, just let me know.

Cheers,
Samuel.



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

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

* [PATCH 1/7] [IrDA] af_irda: irda_recvmsg_stream cleanup
  2007-04-18 21:32 [PATCH 0/7] [IrDA] net-2.6.22 fixes samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-18 21:32 ` samuel-jcdQHdrhKHMdnm+yROfE0A
  2007-04-21  5:05   ` David Miller
  2007-04-18 21:32 ` [PATCH 2/7] [IrDA] af_irda: Silence kernel message in irda_recvmsg_stream samuel-jcdQHdrhKHMdnm+yROfE0A
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 21+ messages in thread
From: samuel-jcdQHdrhKHMdnm+yROfE0A @ 2007-04-18 21:32 UTC (permalink / raw)
  To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA, Olaf Kirch,
	irda-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

[-- Attachment #1: 0002-IrDA-net-2.6.22-af_irda-irda_recvmsg_stream-cle.patch --]
[-- Type: text/plain, Size: 2862 bytes --]

From: Olaf Kirch <olaf.kirch-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>

This patch cleans up some code in irda_recvmsg_stream, replacing some
homebrew code with prepare_to_wait/finish_wait, and by making the
code honor sock_rcvtimeo.

Signed-off-by: Olaf Kirch <olaf.kirch-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
Signed-off-by: Samuel Ortiz <samuel-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
---
 net/irda/af_irda.c |   31 +++++++++++++------------------
 1 files changed, 13 insertions(+), 18 deletions(-)

Index: net-2.6.22-quilt/net/irda/af_irda.c
===================================================================
--- net-2.6.22-quilt.orig/net/irda/af_irda.c	2007-04-18 01:40:14.000000000 +0300
+++ net-2.6.22-quilt/net/irda/af_irda.c	2007-04-18 01:40:28.000000000 +0300
@@ -1403,8 +1403,8 @@
 	struct irda_sock *self = irda_sk(sk);
 	int noblock = flags & MSG_DONTWAIT;
 	size_t copied = 0;
-	int target = 1;
-	DECLARE_WAITQUEUE(waitq, current);
+	int target;
+	long timeo;
 
 	IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
 
@@ -1417,8 +1417,8 @@
 	if (flags & MSG_OOB)
 		return -EOPNOTSUPP;
 
-	if (flags & MSG_WAITALL)
-		target = size;
+	target = sock_rcvlowat(sk, flags & MSG_WAITALL, size);
+	timeo = sock_rcvtimeo(sk, noblock);
 
 	msg->msg_namelen = 0;
 
@@ -1426,19 +1426,14 @@
 		int chunk;
 		struct sk_buff *skb = skb_dequeue(&sk->sk_receive_queue);
 
-		if (skb==NULL) {
+		if (skb == NULL) {
+			DEFINE_WAIT(wait);
 			int ret = 0;
 
 			if (copied >= target)
 				break;
 
-			/* The following code is a cut'n'paste of the
-			 * wait_event_interruptible() macro.
-			 * We don't us the macro because the test condition
-			 * is messy. - Jean II */
-			set_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
-			add_wait_queue(sk->sk_sleep, &waitq);
-			set_current_state(TASK_INTERRUPTIBLE);
+			prepare_to_wait_exclusive(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
 
 			/*
 			 *	POSIX 1003.1g mandates this order.
@@ -1451,17 +1446,17 @@
 			else if (noblock)
 				ret = -EAGAIN;
 			else if (signal_pending(current))
-				ret = -ERESTARTSYS;
+				ret = sock_intr_errno(timeo);
+			else if (sk->sk_state != TCP_ESTABLISHED)
+				ret = -ENOTCONN;
 			else if (skb_peek(&sk->sk_receive_queue) == NULL)
 				/* Wait process until data arrives */
 				schedule();
 
-			current->state = TASK_RUNNING;
-			remove_wait_queue(sk->sk_sleep, &waitq);
-			clear_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
+			finish_wait(sk->sk_sleep, &wait);
 
-			if(ret)
-				return(ret);
+			if (ret)
+				return ret;
 			if (sk->sk_shutdown & RCV_SHUTDOWN)
 				break;
 

--


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

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

* [PATCH 2/7] [IrDA] af_irda: Silence kernel message in irda_recvmsg_stream
  2007-04-18 21:32 [PATCH 0/7] [IrDA] net-2.6.22 fixes samuel-jcdQHdrhKHMdnm+yROfE0A
  2007-04-18 21:32 ` [PATCH 1/7] [IrDA] af_irda: irda_recvmsg_stream cleanup samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-18 21:32 ` samuel-jcdQHdrhKHMdnm+yROfE0A
  2007-04-21  5:09   ` David Miller
  2007-04-18 21:32 ` [PATCH 3/7] [IrDA] af_irda: irda_accept cleanup samuel-jcdQHdrhKHMdnm+yROfE0A
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 21+ messages in thread
From: samuel-jcdQHdrhKHMdnm+yROfE0A @ 2007-04-18 21:32 UTC (permalink / raw)
  To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA, Olaf Kirch,
	irda-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

[-- Attachment #1: 0003-IrDA-net-2.6.22-af_irda-Silence-kernel-message.patch --]
[-- Type: text/plain, Size: 2888 bytes --]

From: Olaf Kirch <olaf.kirch-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>

This patch silences an IRDA_ASSERT in irda_recvmsg_stream, as described in
http://bugzilla.kernel.org/show_bug.cgi?id=7512 irda_disconnect_indication
would set sk->sk_err to ECONNRESET, and a subsequent call to recvmsg
would print an irritating kernel message and return -1.

When a connected socket is closed by the peer, recvmsg should return 0
rather than an error. This patch fixes this.

Signed-off-by: Olaf Kirch <olaf.kirch-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
Signed-off-by: Samuel Ortiz <samuel-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
---
 net/irda/af_irda.c |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)

Index: net-2.6.22-quilt/net/irda/af_irda.c
===================================================================
--- net-2.6.22-quilt.orig/net/irda/af_irda.c	2007-04-18 02:10:56.000000000 +0300
+++ net-2.6.22-quilt/net/irda/af_irda.c	2007-04-18 02:14:24.000000000 +0300
@@ -131,15 +131,13 @@
 	}
 
 	/* Prevent race conditions with irda_release() and irda_shutdown() */
+	bh_lock_sock(sk);
 	if (!sock_flag(sk, SOCK_DEAD) && sk->sk_state != TCP_CLOSE) {
-		lock_sock(sk);
 		sk->sk_state     = TCP_CLOSE;
-		sk->sk_err       = ECONNRESET;
 		sk->sk_shutdown |= SEND_SHUTDOWN;
 
 		sk->sk_state_change(sk);
 		sock_orphan(sk);
-		release_sock(sk);
 
 		/* Close our TSAP.
 		 * If we leave it open, IrLMP put it back into the list of
@@ -159,6 +157,7 @@
 			self->tsap = NULL;
 		}
 	}
+	bh_unlock_sock(sk);
 
 	/* Note : once we are there, there is not much you want to do
 	 * with the socket anymore, apart from closing it.
@@ -1062,7 +1061,8 @@
 
 	if (sk->sk_state != TCP_ESTABLISHED) {
 		sock->state = SS_UNCONNECTED;
-		return sock_error(sk);	/* Always set at this point */
+		err = sock_error(sk);
+		return err? err : -ECONNRESET;
 	}
 
 	sock->state = SS_CONNECTED;
@@ -1356,7 +1356,9 @@
 	IRDA_DEBUG(4, "%s()\n", __FUNCTION__);
 
 	IRDA_ASSERT(self != NULL, return -1;);
-	IRDA_ASSERT(!sock_error(sk), return -1;);
+
+	if ((err = sock_error(sk)) < 0)
+		return err;
 
 	skb = skb_recv_datagram(sk, flags & ~MSG_DONTWAIT,
 				flags & MSG_DONTWAIT, &err);
@@ -1403,13 +1405,15 @@
 	struct irda_sock *self = irda_sk(sk);
 	int noblock = flags & MSG_DONTWAIT;
 	size_t copied = 0;
-	int target;
+	int target, err;
 	long timeo;
 
 	IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
 
 	IRDA_ASSERT(self != NULL, return -1;);
-	IRDA_ASSERT(!sock_error(sk), return -1;);
+
+	if ((err = sock_error(sk)) < 0)
+		return err;
 
 	if (sock->flags & __SO_ACCEPTCON)
 		return(-EINVAL);

--


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

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

* [PATCH 3/7] [IrDA] af_irda: irda_accept cleanup
  2007-04-18 21:32 [PATCH 0/7] [IrDA] net-2.6.22 fixes samuel-jcdQHdrhKHMdnm+yROfE0A
  2007-04-18 21:32 ` [PATCH 1/7] [IrDA] af_irda: irda_recvmsg_stream cleanup samuel-jcdQHdrhKHMdnm+yROfE0A
  2007-04-18 21:32 ` [PATCH 2/7] [IrDA] af_irda: Silence kernel message in irda_recvmsg_stream samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-18 21:32 ` samuel-jcdQHdrhKHMdnm+yROfE0A
  2007-04-21  5:09   ` David Miller
  2007-04-18 21:32 ` [PATCH 4/7] [IrDA] af_irda: IRDA_ASSERT cleanups samuel-jcdQHdrhKHMdnm+yROfE0A
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 21+ messages in thread
From: samuel-jcdQHdrhKHMdnm+yROfE0A @ 2007-04-18 21:32 UTC (permalink / raw)
  To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA, Olaf Kirch,
	irda-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

[-- Attachment #1: 0004-IrDA-net-2.6.22-af_irda-irda_accept-cleanup.patch --]
[-- Type: text/plain, Size: 2081 bytes --]

This patch removes a cut'n'paste copy of wait_event_interruptible
from irda_accept.

Signed-off-by: Samuel Ortiz <samuel-1iRGAI7R+ZvYtjvyW6yDsg@public.gmane.org>
Acked-by: Olaf Kirch <olaf.kirch-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
---
 net/irda/af_irda.c |   34 ++++++++--------------------------
 1 files changed, 8 insertions(+), 26 deletions(-)

Index: net-2.6.22-quilt/net/irda/af_irda.c
===================================================================
--- net-2.6.22-quilt.orig/net/irda/af_irda.c	2007-04-18 02:16:43.000000000 +0300
+++ net-2.6.22-quilt/net/irda/af_irda.c	2007-04-18 02:16:43.000000000 +0300
@@ -873,37 +873,19 @@
 	 * calling us, the data is waiting for us ;-)
 	 * Jean II
 	 */
-	skb = skb_dequeue(&sk->sk_receive_queue);
-	if (skb == NULL) {
-		int ret = 0;
-		DECLARE_WAITQUEUE(waitq, current);
+	while (1) {
+		skb = skb_dequeue(&sk->sk_receive_queue);
+		if (skb)
+			break;
 
 		/* Non blocking operation */
 		if (flags & O_NONBLOCK)
 			return -EWOULDBLOCK;
 
-		/* The following code is a cut'n'paste of the
-		 * wait_event_interruptible() macro.
-		 * We don't us the macro because the condition has
-		 * side effects : we want to make sure that only one
-		 * skb get dequeued - Jean II */
-		add_wait_queue(sk->sk_sleep, &waitq);
-		for (;;) {
-			set_current_state(TASK_INTERRUPTIBLE);
-			skb = skb_dequeue(&sk->sk_receive_queue);
-			if (skb != NULL)
-				break;
-			if (!signal_pending(current)) {
-				schedule();
-				continue;
-			}
-			ret = -ERESTARTSYS;
-			break;
-		}
-		current->state = TASK_RUNNING;
-		remove_wait_queue(sk->sk_sleep, &waitq);
-		if(ret)
-			return -ERESTARTSYS;
+		err = wait_event_interruptible(*(sk->sk_sleep),
+					skb_peek(&sk->sk_receive_queue));
+		if (err)
+			return err;
 	}
 
 	newsk = newsock->sk;

--


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

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

* [PATCH 4/7] [IrDA] af_irda: IRDA_ASSERT cleanups
  2007-04-18 21:32 [PATCH 0/7] [IrDA] net-2.6.22 fixes samuel-jcdQHdrhKHMdnm+yROfE0A
                   ` (2 preceding siblings ...)
  2007-04-18 21:32 ` [PATCH 3/7] [IrDA] af_irda: irda_accept cleanup samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-18 21:32 ` samuel-jcdQHdrhKHMdnm+yROfE0A
  2007-04-21  5:10   ` David Miller
  2007-04-18 21:32 ` [PATCH 5/7] [IrDA] IrDA monitor mode samuel-jcdQHdrhKHMdnm+yROfE0A
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 21+ messages in thread
From: samuel-jcdQHdrhKHMdnm+yROfE0A @ 2007-04-18 21:32 UTC (permalink / raw)
  To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
	irda-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

[-- Attachment #1: 0005-IrDA-net-2.6.22-af_irda-IRDA_ASSERT-cleanups.patch --]
[-- Type: text/plain, Size: 4293 bytes --]

In af_irda.c, the multiple IRDA_ASSERT() are either hiding bugs, useless, or
returning the wrong value.
Let's clean that up.

Signed-off-by: Samuel Ortiz <samuel-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
---
 net/irda/af_irda.c |   32 +++++---------------------------
 1 files changed, 5 insertions(+), 27 deletions(-)

Index: net-2.6.22-quilt/net/irda/af_irda.c
===================================================================
--- net-2.6.22-quilt.orig/net/irda/af_irda.c	2007-04-18 02:16:43.000000000 +0300
+++ net-2.6.22-quilt/net/irda/af_irda.c	2007-04-18 02:16:43.000000000 +0300
@@ -89,7 +89,6 @@
 
 	self = instance;
 	sk = instance;
-	IRDA_ASSERT(sk != NULL, return -1;);
 
 	err = sock_queue_rcv_skb(sk, skb);
 	if (err) {
@@ -306,8 +305,6 @@
 
 	IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
 
-	IRDA_ASSERT(self != NULL, return;);
-
 	skb = alloc_skb(TTP_MAX_HEADER + TTP_SAR_HEADER,
 			GFP_ATOMIC);
 	if (skb == NULL) {
@@ -337,7 +334,7 @@
 
 	self = instance;
 	sk = instance;
-	IRDA_ASSERT(sk != NULL, return;);
+	BUG_ON(sk == NULL);
 
 	switch (flow) {
 	case FLOW_STOP:
@@ -449,7 +446,7 @@
 	IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
 
 	self = (struct irda_sock *) priv;
-	IRDA_ASSERT(self != NULL, return;);
+	BUG_ON(self == NULL);
 
 	/* Nothing for the caller */
 	self->cachelog = NULL;
@@ -546,8 +543,6 @@
 {
 	IRDA_DEBUG(2, "%s(%p, %s)\n", __FUNCTION__, self, name);
 
-	IRDA_ASSERT(self != NULL, return -1;);
-
 	if (self->iriap) {
 		IRDA_WARNING("%s(): busy with a previous query\n",
 			     __FUNCTION__);
@@ -635,8 +630,6 @@
 
 	IRDA_DEBUG(2, "%s(), name=%s\n", __FUNCTION__, name);
 
-	IRDA_ASSERT(self != NULL, return -1;);
-
 	/* Ask lmp for the current discovery log
 	 * Note : we have to use irlmp_get_discoveries(), as opposed
 	 * to play with the cachelog directly, because while we are
@@ -784,8 +777,6 @@
 	struct irda_sock *self = irda_sk(sk);
 	int err;
 
-	IRDA_ASSERT(self != NULL, return -1;);
-
 	IRDA_DEBUG(2, "%s(%p)\n", __FUNCTION__, self);
 
 	if (addr_len != sizeof(struct sockaddr_irda))
@@ -841,8 +832,6 @@
 
 	IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
 
-	IRDA_ASSERT(self != NULL, return -1;);
-
 	err = irda_create(newsock, sk->sk_protocol);
 	if (err)
 		return err;
@@ -889,10 +878,12 @@
 	}
 
 	newsk = newsock->sk;
+	if (newsk == NULL)
+		return -EIO;
+
 	newsk->sk_state = TCP_ESTABLISHED;
 
 	new = irda_sk(newsk);
-	IRDA_ASSERT(new != NULL, return -1;);
 
 	/* Now attach up the new socket */
 	new->tsap = irttp_dup(self->tsap, new);
@@ -1154,8 +1145,6 @@
 {
 	IRDA_DEBUG(2, "%s(%p)\n", __FUNCTION__, self);
 
-	IRDA_ASSERT(self != NULL, return;);
-
 	/* Unregister with IrLMP */
 	irlmp_unregister_client(self->ckey);
 	irlmp_unregister_service(self->skey);
@@ -1274,7 +1263,6 @@
 		return -ENOTCONN;
 
 	self = irda_sk(sk);
-	IRDA_ASSERT(self != NULL, return -1;);
 
 	/* Check if IrTTP is wants us to slow down */
 
@@ -1337,8 +1325,6 @@
 
 	IRDA_DEBUG(4, "%s()\n", __FUNCTION__);
 
-	IRDA_ASSERT(self != NULL, return -1;);
-
 	if ((err = sock_error(sk)) < 0)
 		return err;
 
@@ -1392,8 +1378,6 @@
 
 	IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
 
-	IRDA_ASSERT(self != NULL, return -1;);
-
 	if ((err = sock_error(sk)) < 0)
 		return err;
 
@@ -1527,7 +1511,6 @@
 		return -ENOTCONN;
 
 	self = irda_sk(sk);
-	IRDA_ASSERT(self != NULL, return -1;);
 
 	/*
 	 * Check that we don't send out too big frames. This is an unreliable
@@ -1596,7 +1579,6 @@
 	}
 
 	self = irda_sk(sk);
-	IRDA_ASSERT(self != NULL, return -1;);
 
 	/* Check if an address was specified with sendto. Jean II */
 	if (msg->msg_name) {
@@ -1670,8 +1652,6 @@
 	struct sock *sk = sock->sk;
 	struct irda_sock *self = irda_sk(sk);
 
-	IRDA_ASSERT(self != NULL, return -1;);
-
 	IRDA_DEBUG(1, "%s(%p)\n", __FUNCTION__, self);
 
 	sk->sk_state       = TCP_CLOSE;
@@ -1844,8 +1824,6 @@
 	struct ias_attrib *	ias_attr;	/* Attribute in IAS object */
 	int opt;
 
-	IRDA_ASSERT(self != NULL, return -1;);
-
 	IRDA_DEBUG(2, "%s(%p)\n", __FUNCTION__, self);
 
 	if (level != SOL_IRLMP)

--


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

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

* [PATCH 5/7] [IrDA] IrDA monitor mode
  2007-04-18 21:32 [PATCH 0/7] [IrDA] net-2.6.22 fixes samuel-jcdQHdrhKHMdnm+yROfE0A
                   ` (3 preceding siblings ...)
  2007-04-18 21:32 ` [PATCH 4/7] [IrDA] af_irda: IRDA_ASSERT cleanups samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-18 21:32 ` samuel-jcdQHdrhKHMdnm+yROfE0A
  2007-04-21  5:11   ` David Miller
  2007-04-18 21:32 ` [PATCH 6/7] [IrDA] Adding carriage returns to mcs7780 debug statements samuel-jcdQHdrhKHMdnm+yROfE0A
  2007-04-18 21:32 ` [PATCH 7/7] [IrDA] Misc spelling corrections samuel-jcdQHdrhKHMdnm+yROfE0A
  6 siblings, 1 reply; 21+ messages in thread
From: samuel-jcdQHdrhKHMdnm+yROfE0A @ 2007-04-18 21:32 UTC (permalink / raw)
  To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
	irda-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

[-- Attachment #1: 0006-IrDA-net-2.6.22-IrDA-monitor-mode.patch --]
[-- Type: text/plain, Size: 4783 bytes --]

Through a protocol specific ioctl, one can disable IrDA TX in order to
monitor an IrDA link.

Signed-off-by: Samuel Ortiz <samuel-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
---
 include/linux/irda.h     |    7 +++++
 include/net/irda/irlap.h |    2 +
 net/irda/af_irda.c       |   58 +++++++++++++++++++++++++++++++++++++++++++++-
 net/irda/irlap_frame.c   |    8 ++++++
 4 files changed, 74 insertions(+), 1 deletions(-)

Index: net-2.6.22-quilt/include/linux/irda.h
===================================================================
--- net-2.6.22-quilt.orig/include/linux/irda.h	2007-04-18 01:57:48.000000000 +0300
+++ net-2.6.22-quilt/include/linux/irda.h	2007-04-18 02:16:43.000000000 +0300
@@ -172,6 +172,12 @@
 #define SIOCSDTRRTS    (SIOCDEVPRIVATE + 8)
 #define SIOCGQOS       (SIOCDEVPRIVATE + 9)
 
+/* Protocol private ioctls */
+#define SIOCIRDASETMODE (SIOCPROTOPRIVATE + 0)
+#define SIOCIRDAGETMODE (SIOCPROTOPRIVATE + 1)
+
+#define IRDA_MODE_MONITOR   0x1
+
 /* No reason to include <linux/if.h> just because of this one ;-) */
 #define IRNAMSIZ 16 
 
@@ -209,6 +215,7 @@
 	} ifr_ifru;
 };
 
+#define ifr_name      ifr_ifrn.ifrn_name
 #define ifr_baudrate  ifr_ifru.ifru_qos.baudrate
 #define ifr_receiving ifr_ifru.ifru_receiving 
 #define ifr_dongle    ifr_ifru.ifru_dongle
Index: net-2.6.22-quilt/include/net/irda/irlap.h
===================================================================
--- net-2.6.22-quilt.orig/include/net/irda/irlap.h	2007-04-18 01:57:48.000000000 +0300
+++ net-2.6.22-quilt/include/net/irda/irlap.h	2007-04-18 02:16:43.000000000 +0300
@@ -208,6 +208,8 @@
 	int    xbofs_delay;   /* Nr of XBOF's used to MTT */
 	int    bofs_count;    /* Negotiated extra BOFs */
 	int    next_bofs;     /* Negotiated extra BOFs after next frame */
+
+	int    mode;     /* 1 is for monitor mode (TX disabled) */
 };
 
 /* 
Index: net-2.6.22-quilt/net/irda/af_irda.c
===================================================================
--- net-2.6.22-quilt.orig/net/irda/af_irda.c	2007-04-18 02:16:43.000000000 +0300
+++ net-2.6.22-quilt/net/irda/af_irda.c	2007-04-18 02:16:43.000000000 +0300
@@ -49,7 +49,6 @@
 #include <linux/sockios.h>
 #include <linux/init.h>
 #include <linux/net.h>
-#include <linux/irda.h>
 #include <linux/poll.h>
 
 #include <asm/ioctls.h>		/* TIOCOUTQ, TIOCINQ */
@@ -1745,6 +1744,7 @@
 static int irda_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
 {
 	struct sock *sk = sock->sk;
+	void __user *argp = (void __user *)arg;
 
 	IRDA_DEBUG(4, "%s(), cmd=%#x\n", __FUNCTION__, cmd);
 
@@ -1786,6 +1786,62 @@
 	case SIOCGIFMETRIC:
 	case SIOCSIFMETRIC:
 		return -EINVAL;
+
+	case SIOCIRDASETMODE: {
+		struct if_irda_req if_irda;
+		struct net_device * dev;
+		struct irlap_cb * irlap;
+
+		if (!capable(CAP_NET_ADMIN))
+			return -EPERM;
+
+		if (copy_from_user(&if_irda, argp, sizeof(struct if_irda_req)))
+			return -EFAULT;
+
+		dev = dev_get_by_name(if_irda.ifr_name);
+		if (!dev)
+			return -ENODEV;
+
+		irlap = (struct irlap_cb *)dev->atalk_ptr;
+		if (!irlap)
+			return -ENODEV;
+
+		IRDA_DEBUG(4, "%s(): Setting %s to 0x%x\n", __FUNCTION__,
+			   dev->name, if_irda.ifr_mode);
+
+		irlap->mode = if_irda.ifr_mode;
+
+		dev_put(dev);
+
+		break;
+	}
+	case SIOCIRDAGETMODE: {
+		struct if_irda_req if_irda;
+		struct net_device * dev;
+		struct irlap_cb * irlap;
+
+		if (copy_from_user(&if_irda, argp, sizeof(struct if_irda_req)))
+			return -EFAULT;
+
+		dev = dev_get_by_name(if_irda.ifr_name);
+		if (!dev)
+			return -ENODEV;
+
+		irlap = (struct irlap_cb *)dev->atalk_ptr;
+		if (!irlap)
+			return -ENODEV;
+
+		if_irda.ifr_mode = irlap->mode;
+
+		dev_put(dev);
+
+		IRDA_DEBUG(4, "%s(): %s mode is 0x%x\n", __FUNCTION__,
+			   dev->name, if_irda.ifr_mode);
+
+		if (copy_to_user(argp, &if_irda, sizeof(struct if_irda_req)))
+			return -EFAULT;
+	}
+		break;
 	default:
 		IRDA_DEBUG(1, "%s(), doing device ioctl!\n", __FUNCTION__);
 		return -ENOIOCTLCMD;
Index: net-2.6.22-quilt/net/irda/irlap_frame.c
===================================================================
--- net-2.6.22-quilt.orig/net/irda/irlap_frame.c	2007-04-18 01:57:48.000000000 +0300
+++ net-2.6.22-quilt/net/irda/irlap_frame.c	2007-04-18 02:16:43.000000000 +0300
@@ -101,6 +101,14 @@
 
 	irlap_insert_info(self, skb);
 
+	if (unlikely(self->mode & IRDA_MODE_MONITOR)) {
+		IRDA_DEBUG(3, "%s(): %s is in monitor mode\n", __FUNCTION__,
+			   self->netdev->name);
+		dev_kfree_skb(skb);
+		return;
+	}
+
+
 	dev_queue_xmit(skb);
 }
 

--


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

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

* [PATCH 6/7] [IrDA] Adding carriage returns to mcs7780 debug statements
  2007-04-18 21:32 [PATCH 0/7] [IrDA] net-2.6.22 fixes samuel-jcdQHdrhKHMdnm+yROfE0A
                   ` (4 preceding siblings ...)
  2007-04-18 21:32 ` [PATCH 5/7] [IrDA] IrDA monitor mode samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-18 21:32 ` samuel-jcdQHdrhKHMdnm+yROfE0A
  2007-04-21  5:12   ` David Miller
  2007-04-18 21:32 ` [PATCH 7/7] [IrDA] Misc spelling corrections samuel-jcdQHdrhKHMdnm+yROfE0A
  6 siblings, 1 reply; 21+ messages in thread
From: samuel-jcdQHdrhKHMdnm+yROfE0A @ 2007-04-18 21:32 UTC (permalink / raw)
  To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
	irda-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

[-- Attachment #1: 0007-IrDA-net-2.6.22-Adding-carriage-returns-to-mcs77.patch --]
[-- Type: text/plain, Size: 4326 bytes --]


Signed-off-by: Samuel Ortiz <samuel-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
---
 drivers/net/irda/mcs7780.c |   26 +++++++++++++-------------
 1 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/net/irda/mcs7780.c b/drivers/net/irda/mcs7780.c
index 54d1d54..0de8672 100644
--- a/drivers/net/irda/mcs7780.c
+++ b/drivers/net/irda/mcs7780.c
@@ -200,14 +200,14 @@ static inline int mcs_setup_transceiver_vishay(struct mcs_cb *mcs)
 /* Setup a communication between mcs7780 and agilent chip. */
 static inline int mcs_setup_transceiver_agilent(struct mcs_cb *mcs)
 {
-	IRDA_WARNING("This transceiver type is not supported yet.");
+	IRDA_WARNING("This transceiver type is not supported yet.\n");
 	return 1;
 }
 
 /* Setup a communication between mcs7780 and sharp chip. */
 static inline int mcs_setup_transceiver_sharp(struct mcs_cb *mcs)
 {
-	IRDA_WARNING("This transceiver type is not supported yet.");
+	IRDA_WARNING("This transceiver type is not supported yet.\n");
 	return 1;
 }
 
@@ -279,7 +279,7 @@ static inline int mcs_setup_transceiver(struct mcs_cb *mcs)
 		break;
 
 	default:
-		IRDA_WARNING("Unknown transceiver type: %d",
+		IRDA_WARNING("Unknown transceiver type: %d\n",
 			     mcs->transceiver_type);
 		ret = 1;
 	}
@@ -318,7 +318,7 @@ static inline int mcs_setup_transceiver(struct mcs_cb *mcs)
 		return ret;
 
 error:
-	IRDA_ERROR("%s", msg);
+	IRDA_ERROR("%s\n", msg);
 	return ret;
 }
 
@@ -587,7 +587,7 @@ static int mcs_speed_change(struct mcs_cb *mcs)
 	} while(cnt++ < 100 && (rval & MCS_IRINTX));
 
 	if(cnt >= 100) {
-		IRDA_ERROR("unable to change speed");
+		IRDA_ERROR("unable to change speed\n");
 		ret = -EIO;
 		goto error;
 	}
@@ -638,7 +638,7 @@ static int mcs_speed_change(struct mcs_cb *mcs)
 
 		default:
 			ret = 1;
-			IRDA_WARNING("Unknown transceiver type: %d",
+			IRDA_WARNING("Unknown transceiver type: %d\n",
 				     mcs->transceiver_type);
 		}
 	if (unlikely(ret))
@@ -733,7 +733,7 @@ static int mcs_net_open(struct net_device *netdev)
 	sprintf(hwname, "usb#%d", mcs->usbdev->devnum);
 	mcs->irlap = irlap_open(netdev, &mcs->qos, hwname);
 	if (!mcs->irlap) {
-		IRDA_ERROR("mcs7780: irlap_open failed");
+		IRDA_ERROR("mcs7780: irlap_open failed\n");
 		goto error2;
 	}
 
@@ -862,7 +862,7 @@ static int mcs_hard_xmit(struct sk_buff *skb, struct net_device *ndev)
 			  mcs->out_buf, wraplen, mcs_send_irq, mcs);
 
 	if ((ret = usb_submit_urb(mcs->tx_urb, GFP_ATOMIC))) {
-		IRDA_ERROR("failed tx_urb: %d", ret);
+		IRDA_ERROR("failed tx_urb: %d\n", ret);
 		switch (ret) {
 		case -ENODEV:
 		case -EPIPE:
@@ -897,7 +897,7 @@ static int mcs_probe(struct usb_interface *intf,
 	if (!ndev)
 		goto error1;
 
-	IRDA_DEBUG(1, "MCS7780 USB-IrDA bridge found at %d.", udev->devnum);
+	IRDA_DEBUG(1, "MCS7780 USB-IrDA bridge found at %d.\n", udev->devnum);
 
 	/* what is it realy for? */
 	SET_MODULE_OWNER(ndev);
@@ -905,7 +905,7 @@ static int mcs_probe(struct usb_interface *intf,
 
 	ret = usb_reset_configuration(udev);
 	if (ret != 0) {
-		IRDA_ERROR("mcs7780: usb reset configuration failed");
+		IRDA_ERROR("mcs7780: usb reset configuration failed\n");
 		goto error2;
 	}
 
@@ -950,7 +950,7 @@ static int mcs_probe(struct usb_interface *intf,
 	if (ret != 0)
 		goto error2;
 
-	IRDA_DEBUG(1, "IrDA: Registered MosChip MCS7780 device as %s",
+	IRDA_DEBUG(1, "IrDA: Registered MosChip MCS7780 device as %s\n",
 		   ndev->name);
 
 	mcs->transceiver_type = transceiver_type;
@@ -981,7 +981,7 @@ static void mcs_disconnect(struct usb_interface *intf)
 	free_netdev(mcs->netdev);
 
 	usb_set_intfdata(intf, NULL);
-	IRDA_DEBUG(0, "MCS7780 now disconnected.");
+	IRDA_DEBUG(0, "MCS7780 now disconnected.\n");
 }
 
 /* Module insertion */
@@ -992,7 +992,7 @@ static int __init mcs_init(void)
 	/* register this driver with the USB subsystem */
 	result = usb_register(&mcs_driver);
 	if (result)
-		IRDA_ERROR("usb_register failed. Error number %d", result);
+		IRDA_ERROR("usb_register failed. Error number %d\n", result);
 
 	return result;
 }
-- 
1.5.1

--


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

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

* [PATCH 7/7] [IrDA] Misc spelling corrections.
  2007-04-18 21:32 [PATCH 0/7] [IrDA] net-2.6.22 fixes samuel-jcdQHdrhKHMdnm+yROfE0A
                   ` (5 preceding siblings ...)
  2007-04-18 21:32 ` [PATCH 6/7] [IrDA] Adding carriage returns to mcs7780 debug statements samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-18 21:32 ` samuel-jcdQHdrhKHMdnm+yROfE0A
  2007-04-21  5:13   ` David Miller
  6 siblings, 1 reply; 21+ messages in thread
From: samuel-jcdQHdrhKHMdnm+yROfE0A @ 2007-04-18 21:32 UTC (permalink / raw)
  To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA, G. Liakhovetski,
	irda-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

[-- Attachment #1: 0008-IrDA-net-2.6.22-Misc-spelling-corrections.patch --]
[-- Type: text/plain, Size: 5661 bytes --]

From: Guennadi Liakhovetski <gl-o/hVf8ie6tKzQB+pC5nmwQ@public.gmane.org>

Spelling corrections, from "to" to "too".

Signed-off-by: G. Liakhovetski <gl-o/hVf8ie6tKzQB+pC5nmwQ@public.gmane.org>
Signed-off-by: Samuel Ortiz <samuel-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
---
 net/irda/irlap_event.c |    2 +-
 net/irda/irlap_frame.c |   14 +++++++-------
 net/irda/irttp.c       |    4 ++--
 net/irda/parameters.c  |    8 ++++----
 4 files changed, 14 insertions(+), 14 deletions(-)

Index: net-2.6.22-quilt/net/irda/irlap_event.c
===================================================================
--- net-2.6.22-quilt.orig/net/irda/irlap_event.c	2007-04-18 01:57:48.000000000 +0300
+++ net-2.6.22-quilt/net/irda/irlap_event.c	2007-04-18 02:16:44.000000000 +0300
@@ -590,7 +590,7 @@
 		if (!self->discovery_log) {
 			IRDA_WARNING("%s: discovery log is gone! "
 				     "maybe the discovery timeout has been set"
-				     " to short?\n", __FUNCTION__);
+				     " too short?\n", __FUNCTION__);
 			break;
 		}
 		hashbin_insert(self->discovery_log,
Index: net-2.6.22-quilt/net/irda/irlap_frame.c
===================================================================
--- net-2.6.22-quilt.orig/net/irda/irlap_frame.c	2007-04-18 02:16:43.000000000 +0300
+++ net-2.6.22-quilt/net/irda/irlap_frame.c	2007-04-18 02:16:44.000000000 +0300
@@ -421,7 +421,7 @@
 	IRDA_ASSERT(self->magic == LAP_MAGIC, return;);
 
 	if (!pskb_may_pull(skb, sizeof(struct xid_frame))) {
-		IRDA_ERROR("%s: frame to short!\n", __FUNCTION__);
+		IRDA_ERROR("%s: frame too short!\n", __FUNCTION__);
 		return;
 	}
 
@@ -492,7 +492,7 @@
 	char *text;
 
 	if (!pskb_may_pull(skb, sizeof(struct xid_frame))) {
-		IRDA_ERROR("%s: frame to short!\n", __FUNCTION__);
+		IRDA_ERROR("%s: frame too short!\n", __FUNCTION__);
 		return;
 	}
 
@@ -536,7 +536,7 @@
 		/* Check if things are sane at this point... */
 		if((discovery_info == NULL) ||
 		   !pskb_may_pull(skb, 3)) {
-			IRDA_ERROR("%s: discovery frame to short!\n",
+			IRDA_ERROR("%s: discovery frame too short!\n",
 				   __FUNCTION__);
 			return;
 		}
@@ -1181,7 +1181,7 @@
 	IRDA_ASSERT(info != NULL, return;);
 
 	if (!pskb_may_pull(skb, 4)) {
-		IRDA_ERROR("%s: frame to short!\n", __FUNCTION__);
+		IRDA_ERROR("%s: frame too short!\n", __FUNCTION__);
 		return;
 	}
 
@@ -1270,7 +1270,7 @@
 	IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
 
 	if (!pskb_may_pull(skb, sizeof(*frame))) {
-		IRDA_ERROR("%s: frame to short!\n", __FUNCTION__);
+		IRDA_ERROR("%s: frame too short!\n", __FUNCTION__);
 		return;
 	}
 	frame = (struct test_frame *) skb->data;
@@ -1278,7 +1278,7 @@
 	/* Broadcast frames must carry saddr and daddr fields */
 	if (info->caddr == CBROADCAST) {
 		if (skb->len < sizeof(struct test_frame)) {
-			IRDA_DEBUG(0, "%s() test frame to short!\n",
+			IRDA_DEBUG(0, "%s() test frame too short!\n",
 				   __FUNCTION__);
 			return;
 		}
@@ -1344,7 +1344,7 @@
 
 	/* Check if frame is large enough for parsing */
 	if (!pskb_may_pull(skb, 2)) {
-		IRDA_ERROR("%s: frame to short!\n", __FUNCTION__);
+		IRDA_ERROR("%s: frame too short!\n", __FUNCTION__);
 		dev_kfree_skb(skb);
 		return -1;
 	}
Index: net-2.6.22-quilt/net/irda/irttp.c
===================================================================
--- net-2.6.22-quilt.orig/net/irda/irttp.c	2007-04-18 01:57:48.000000000 +0300
+++ net-2.6.22-quilt/net/irda/irttp.c	2007-04-18 02:16:44.000000000 +0300
@@ -551,7 +551,7 @@
 	}
 
 	if (skb->len > self->max_seg_size) {
-		IRDA_DEBUG(1, "%s(), UData is to large for IrLAP!\n",
+		IRDA_DEBUG(1, "%s(), UData is too large for IrLAP!\n",
 			   __FUNCTION__);
 		goto err;
 	}
@@ -598,7 +598,7 @@
 	 *  inside an IrLAP frame
 	 */
 	if ((self->tx_max_sdu_size == 0) && (skb->len > self->max_seg_size)) {
-		IRDA_ERROR("%s: SAR disabled, and data is to large for IrLAP!\n",
+		IRDA_ERROR("%s: SAR disabled, and data is too large for IrLAP!\n",
 			   __FUNCTION__);
 		ret = -EMSGSIZE;
 		goto err;
Index: net-2.6.22-quilt/net/irda/parameters.c
===================================================================
--- net-2.6.22-quilt.orig/net/irda/parameters.c	2007-04-18 01:57:48.000000000 +0300
+++ net-2.6.22-quilt/net/irda/parameters.c	2007-04-18 02:16:44.000000000 +0300
@@ -160,7 +160,7 @@
 	}
 	/* Check if buffer is long enough for insertion */
 	if (len < (2+p.pl)) {
-		IRDA_WARNING("%s: buffer to short for insertion!\n",
+		IRDA_WARNING("%s: buffer too short for insertion!\n",
 			     __FUNCTION__);
 		return -1;
 	}
@@ -216,7 +216,7 @@
 
 	/* Check if buffer is long enough for parsing */
 	if (len < (2+p.pl)) {
-		IRDA_WARNING("%s: buffer to short for parsing! "
+		IRDA_WARNING("%s: buffer too short for parsing! "
 			     "Need %d bytes, but len is only %d\n",
 			     __FUNCTION__, p.pl, len);
 		return -1;
@@ -304,7 +304,7 @@
 
 	/* Check if buffer is long enough for parsing */
 	if (len < (2+p.pl)) {
-		IRDA_WARNING("%s: buffer to short for parsing! "
+		IRDA_WARNING("%s: buffer too short for parsing! "
 			     "Need %d bytes, but len is only %d\n",
 			     __FUNCTION__, p.pl, len);
 		return -1;
@@ -343,7 +343,7 @@
 
 	/* Check if buffer is long enough for parsing */
 	if (len < (2+p.pl)) {
-		IRDA_WARNING("%s: buffer to short for parsing! "
+		IRDA_WARNING("%s: buffer too short for parsing! "
 			     "Need %d bytes, but len is only %d\n",
 			     __FUNCTION__, p.pl, len);
 		return -1;

--


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

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

* Re: [PATCH 1/7] [IrDA] af_irda: irda_recvmsg_stream cleanup
  2007-04-18 21:32 ` [PATCH 1/7] [IrDA] af_irda: irda_recvmsg_stream cleanup samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-21  5:05   ` David Miller
  0 siblings, 0 replies; 21+ messages in thread
From: David Miller @ 2007-04-21  5:05 UTC (permalink / raw)
  To: samuel; +Cc: netdev, irda-users, olaf.kirch

From: samuel@sortiz.org
Date: Thu, 19 Apr 2007 00:32:03 +0300

> From: Olaf Kirch <olaf.kirch@oracle.com>
> 
> This patch cleans up some code in irda_recvmsg_stream, replacing some
> homebrew code with prepare_to_wait/finish_wait, and by making the
> code honor sock_rcvtimeo.
> 
> Signed-off-by: Olaf Kirch <olaf.kirch@oracle.com>
> Signed-off-by: Samuel Ortiz <samuel@sortiz.org>

Applied to net-2.6.22, thanks.

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

* Re: [PATCH 2/7] [IrDA] af_irda: Silence kernel message in irda_recvmsg_stream
  2007-04-18 21:32 ` [PATCH 2/7] [IrDA] af_irda: Silence kernel message in irda_recvmsg_stream samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-21  5:09   ` David Miller
       [not found]     ` <20070420.220900.45154094.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
  0 siblings, 1 reply; 21+ messages in thread
From: David Miller @ 2007-04-21  5:09 UTC (permalink / raw)
  To: samuel; +Cc: netdev, irda-users, olaf.kirch

From: samuel@sortiz.org
Date: Thu, 19 Apr 2007 00:32:04 +0300

> From: Olaf Kirch <olaf.kirch@oracle.com>
> 
> This patch silences an IRDA_ASSERT in irda_recvmsg_stream, as described in
> http://bugzilla.kernel.org/show_bug.cgi?id=7512 irda_disconnect_indication
> would set sk->sk_err to ECONNRESET, and a subsequent call to recvmsg
> would print an irritating kernel message and return -1.
> 
> When a connected socket is closed by the peer, recvmsg should return 0
> rather than an error. This patch fixes this.
> 
> Signed-off-by: Olaf Kirch <olaf.kirch@oracle.com>
> Signed-off-by: Samuel Ortiz <samuel@sortiz.org>

There were some conflicts in this one wrt. the sock_orphan()
bug fix we put into mainline recently, but I did my best
to resolve it when I applied this to net-2.6.22

You can have a look and verify things when I put up my net-2.6.2
tree later this evening.

Thanks.

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

* Re: [PATCH 3/7] [IrDA] af_irda: irda_accept cleanup
  2007-04-18 21:32 ` [PATCH 3/7] [IrDA] af_irda: irda_accept cleanup samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-21  5:09   ` David Miller
  0 siblings, 0 replies; 21+ messages in thread
From: David Miller @ 2007-04-21  5:09 UTC (permalink / raw)
  To: samuel; +Cc: netdev, irda-users, olaf.kirch

From: samuel@sortiz.org
Date: Thu, 19 Apr 2007 00:32:05 +0300

> This patch removes a cut'n'paste copy of wait_event_interruptible
> from irda_accept.
> 
> Signed-off-by: Samuel Ortiz <samuel@ortiz.org>
> Acked-by: Olaf Kirch <olaf.kirch@oracle.com>

Applied to net-2.6.22, thanks.

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

* Re: [PATCH 4/7] [IrDA] af_irda: IRDA_ASSERT cleanups
  2007-04-18 21:32 ` [PATCH 4/7] [IrDA] af_irda: IRDA_ASSERT cleanups samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-21  5:10   ` David Miller
  0 siblings, 0 replies; 21+ messages in thread
From: David Miller @ 2007-04-21  5:10 UTC (permalink / raw)
  To: samuel; +Cc: netdev, irda-users

From: samuel@sortiz.org
Date: Thu, 19 Apr 2007 00:32:06 +0300

> In af_irda.c, the multiple IRDA_ASSERT() are either hiding bugs, useless, or
> returning the wrong value.
> Let's clean that up.
> 
> Signed-off-by: Samuel Ortiz <samuel@sortiz.org>

Applied to net-2.6.22, thanks.

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

* Re: [PATCH 5/7] [IrDA] IrDA monitor mode
  2007-04-18 21:32 ` [PATCH 5/7] [IrDA] IrDA monitor mode samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-21  5:11   ` David Miller
       [not found]     ` <20070420.221143.132446079.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
  0 siblings, 1 reply; 21+ messages in thread
From: David Miller @ 2007-04-21  5:11 UTC (permalink / raw)
  To: samuel; +Cc: netdev, irda-users

From: samuel@sortiz.org
Date: Thu, 19 Apr 2007 00:32:07 +0300

> Through a protocol specific ioctl, one can disable IrDA TX in order to
> monitor an IrDA link.
> 
> Signed-off-by: Samuel Ortiz <samuel@sortiz.org>

I'd really rather see IRDA use netlink instead of these
wonky ioctls, but whatever, if you want to put this dirty
into your stack and you're the maintainer I can't really
stop you :-)

Applied to net-2.6.22, thanks.

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

* Re: [PATCH 6/7] [IrDA] Adding carriage returns to mcs7780 debug statements
  2007-04-18 21:32 ` [PATCH 6/7] [IrDA] Adding carriage returns to mcs7780 debug statements samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-21  5:12   ` David Miller
  0 siblings, 0 replies; 21+ messages in thread
From: David Miller @ 2007-04-21  5:12 UTC (permalink / raw)
  To: samuel; +Cc: netdev, irda-users

From: samuel@sortiz.org
Date: Thu, 19 Apr 2007 00:32:08 +0300

> Signed-off-by: Samuel Ortiz <samuel@sortiz.org>

Applied to net-2.6.22, thanks.

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

* Re: [PATCH 7/7] [IrDA] Misc spelling corrections.
  2007-04-18 21:32 ` [PATCH 7/7] [IrDA] Misc spelling corrections samuel-jcdQHdrhKHMdnm+yROfE0A
@ 2007-04-21  5:13   ` David Miller
  0 siblings, 0 replies; 21+ messages in thread
From: David Miller @ 2007-04-21  5:13 UTC (permalink / raw)
  To: samuel; +Cc: netdev, irda-users, gl

From: samuel@sortiz.org
Date: Thu, 19 Apr 2007 00:32:09 +0300

> From: Guennadi Liakhovetski <gl@dsa-ac.de>
> 
> Spelling corrections, from "to" to "too".
> 
> Signed-off-by: G. Liakhovetski <gl@dsa-ac.de>
> Signed-off-by: Samuel Ortiz <samuel@sortiz.org>

Also applied to net-2.6.22, thanks a lot.

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

* Re: [PATCH 5/7] [IrDA] IrDA monitor mode
       [not found]     ` <20070420.221143.132446079.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
@ 2007-04-21 11:42       ` Samuel Ortiz
       [not found]         ` <20070421114239.GA4337-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
  0 siblings, 1 reply; 21+ messages in thread
From: Samuel Ortiz @ 2007-04-21 11:42 UTC (permalink / raw)
  To: David Miller
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
	irda-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

Hi Dave,

On Fri, Apr 20, 2007 at 10:11:43PM -0700, David Miller wrote:
> From: samuel-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org
> Date: Thu, 19 Apr 2007 00:32:07 +0300
> 
> > Through a protocol specific ioctl, one can disable IrDA TX in order to
> > monitor an IrDA link.
> > 
> > Signed-off-by: Samuel Ortiz <samuel-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
> 
> I'd really rather see IRDA use netlink instead of these
> wonky ioctls, but whatever, if you want to put this dirty
> into your stack and you're the maintainer I can't really
> stop you :-)
I actually asked for your advice about it some time ago:
http://marc.info/?l=linux-netdev&m=117590341703544&w=2
But by looking at the flow of emails on netdev sent to you (and that's only
netdev...), I can easily see how you could have missed it :-)

Regarding this patch, I came up with this ioctl because I thought
implementing an IrDA netlink layer would be an overkill for just one single
command.
What I propose is that you revert this patch before we introduce a new ioctl
upstream while I start implementing a netlink IrDA layer. Would that be ok
with you, or can we let this new ioctl in and have it coexisting with a future
netlink layer ?

Cheers,
Samuel.


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

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

* Re: [PATCH 2/7] [IrDA] af_irda: Silence kernel message in irda_recvmsg_stream
       [not found]     ` <20070420.220900.45154094.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
@ 2007-04-21 12:01       ` Samuel Ortiz
       [not found]         ` <20070421120152.GB4337-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
  0 siblings, 1 reply; 21+ messages in thread
From: Samuel Ortiz @ 2007-04-21 12:01 UTC (permalink / raw)
  To: David Miller
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA, olaf.kirch-QHcLZuEGTsvQT0dZR+AlfA,
	irda-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

On Fri, Apr 20, 2007 at 10:09:00PM -0700, David Miller wrote:
> There were some conflicts in this one wrt. the sock_orphan()
> bug fix we put into mainline recently, but I did my best
> to resolve it when I applied this to net-2.6.22
> 
> You can have a look and verify things when I put up my net-2.6.2
> tree later this evening.
Verified. It's all good, thanks a lot.

Cheers,
Samuel.


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

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

* Re: [PATCH 2/7] [IrDA] af_irda: Silence kernel message in irda_recvmsg_stream
       [not found]         ` <20070421120152.GB4337-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
@ 2007-04-21 17:43           ` David Miller
  0 siblings, 0 replies; 21+ messages in thread
From: David Miller @ 2007-04-21 17:43 UTC (permalink / raw)
  To: samuel-jcdQHdrhKHMdnm+yROfE0A
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA, olaf.kirch-QHcLZuEGTsvQT0dZR+AlfA,
	irda-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

From: Samuel Ortiz <samuel-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
Date: Sat, 21 Apr 2007 15:01:52 +0300

> On Fri, Apr 20, 2007 at 10:09:00PM -0700, David Miller wrote:
> > There were some conflicts in this one wrt. the sock_orphan()
> > bug fix we put into mainline recently, but I did my best
> > to resolve it when I applied this to net-2.6.22
> > 
> > You can have a look and verify things when I put up my net-2.6.2
> > tree later this evening.
> Verified. It's all good, thanks a lot.

Thanks for checking.

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

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

* Re: [PATCH 5/7] [IrDA] IrDA monitor mode
       [not found]         ` <20070421114239.GA4337-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
@ 2007-04-21 17:46           ` David Miller
  2007-04-22 11:29             ` [irda-users] " Samuel Ortiz
  0 siblings, 1 reply; 21+ messages in thread
From: David Miller @ 2007-04-21 17:46 UTC (permalink / raw)
  To: samuel-jcdQHdrhKHMdnm+yROfE0A
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
	irda-users-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

From: Samuel Ortiz <samuel-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
Date: Sat, 21 Apr 2007 14:42:40 +0300

> I actually asked for your advice about it some time ago:
> http://marc.info/?l=linux-netdev&m=117590341703544&w=2
> But by looking at the flow of emails on netdev sent to you (and that's only
> netdev...), I can easily see how you could have missed it :-)
> 
> Regarding this patch, I came up with this ioctl because I thought
> implementing an IrDA netlink layer would be an overkill for just one single
> command.
> What I propose is that you revert this patch before we introduce a new ioctl
> upstream while I start implementing a netlink IrDA layer. Would that be ok
> with you, or can we let this new ioctl in and have it coexisting with a future
> netlink layer ?

The only concern is that once we add the ioctl, we can't get rid of
it, it's there forever.  Please consider this very carefully.

You might discover that once you create the IRDA netlink
layer, you will find it convenient to make it support
all the IRDA stack configuration not just this one thing
:-)

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

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

* Re: [irda-users] [PATCH 5/7] [IrDA] IrDA monitor mode
  2007-04-21 17:46           ` David Miller
@ 2007-04-22 11:29             ` Samuel Ortiz
  2007-04-22 19:59               ` David Miller
  0 siblings, 1 reply; 21+ messages in thread
From: Samuel Ortiz @ 2007-04-22 11:29 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, irda-users

On Sat, Apr 21, 2007 at 10:46:00AM -0700, David Miller wrote:
> From: Samuel Ortiz <samuel@sortiz.org>
> Date: Sat, 21 Apr 2007 14:42:40 +0300
> 
> > I actually asked for your advice about it some time ago:
> > http://marc.info/?l=linux-netdev&m=117590341703544&w=2
> > But by looking at the flow of emails on netdev sent to you (and that's only
> > netdev...), I can easily see how you could have missed it :-)
> > 
> > Regarding this patch, I came up with this ioctl because I thought
> > implementing an IrDA netlink layer would be an overkill for just one single
> > command.
> > What I propose is that you revert this patch before we introduce a new ioctl
> > upstream while I start implementing a netlink IrDA layer. Would that be ok
> > with you, or can we let this new ioctl in and have it coexisting with a future
> > netlink layer ?
> 
> The only concern is that once we add the ioctl, we can't get rid of
> it, it's there forever.  Please consider this very carefully.
> 
> You might discover that once you create the IRDA netlink
> layer, you will find it convenient to make it support
> all the IRDA stack configuration not just this one thing
> :-)
Fair enough, let's revert, and I'll come back to you with an IrDA netlink
layer:

---
This reverts commit 8eb943bbb8d2b59a5dccfed691da2e3797ef7e8e.

Let's not introduce yet another ioctl. The IrDA monitoring feature will be
implemented through the addition of an IrDA netlink layer.

Signed-off-by: Samuel Ortiz <samuel@sortiz.org>
---
 include/linux/irda.h     |    7 -----
 include/net/irda/irlap.h |    2 -
 net/irda/af_irda.c       |   58 +---------------------------------------------
 net/irda/irlap_frame.c   |    8 ------
 4 files changed, 1 insertions(+), 74 deletions(-)

diff --git a/include/linux/irda.h b/include/linux/irda.h
index 1050f98..09d8f10 100644
--- a/include/linux/irda.h
+++ b/include/linux/irda.h
@@ -172,12 +172,6 @@ struct irda_ias_set {
 #define SIOCSDTRRTS    (SIOCDEVPRIVATE + 8)
 #define SIOCGQOS       (SIOCDEVPRIVATE + 9)
 
-/* Protocol private ioctls */
-#define SIOCIRDASETMODE (SIOCPROTOPRIVATE + 0)
-#define SIOCIRDAGETMODE (SIOCPROTOPRIVATE + 1)
-
-#define IRDA_MODE_MONITOR   0x1
-
 /* No reason to include <linux/if.h> just because of this one ;-) */
 #define IRNAMSIZ 16 
 
@@ -215,7 +209,6 @@ struct if_irda_req {
 	} ifr_ifru;
 };
 
-#define ifr_name      ifr_ifrn.ifrn_name
 #define ifr_baudrate  ifr_ifru.ifru_qos.baudrate
 #define ifr_receiving ifr_ifru.ifru_receiving 
 #define ifr_dongle    ifr_ifru.ifru_dongle
diff --git a/include/net/irda/irlap.h b/include/net/irda/irlap.h
index 02b08d2..e77eb88 100644
--- a/include/net/irda/irlap.h
+++ b/include/net/irda/irlap.h
@@ -208,8 +208,6 @@ struct irlap_cb {
 	int    xbofs_delay;   /* Nr of XBOF's used to MTT */
 	int    bofs_count;    /* Negotiated extra BOFs */
 	int    next_bofs;     /* Negotiated extra BOFs after next frame */
-
-	int    mode;     /* 1 is for monitor mode (TX disabled) */
 };
 
 /* 
diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c
index b1aa951..06c97c6 100644
--- a/net/irda/af_irda.c
+++ b/net/irda/af_irda.c
@@ -49,6 +49,7 @@
 #include <linux/sockios.h>
 #include <linux/init.h>
 #include <linux/net.h>
+#include <linux/irda.h>
 #include <linux/poll.h>
 
 #include <asm/ioctls.h>		/* TIOCOUTQ, TIOCINQ */
@@ -1743,7 +1744,6 @@ static unsigned int irda_poll(struct file * file, struct socket *sock,
 static int irda_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
 {
 	struct sock *sk = sock->sk;
-	void __user *argp = (void __user *)arg;
 
 	IRDA_DEBUG(4, "%s(), cmd=%#x\n", __FUNCTION__, cmd);
 
@@ -1785,62 +1785,6 @@ static int irda_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
 	case SIOCGIFMETRIC:
 	case SIOCSIFMETRIC:
 		return -EINVAL;
-
-	case SIOCIRDASETMODE: {
-		struct if_irda_req if_irda;
-		struct net_device * dev;
-		struct irlap_cb * irlap;
-
-		if (!capable(CAP_NET_ADMIN))
-			return -EPERM;
-
-		if (copy_from_user(&if_irda, argp, sizeof(struct if_irda_req)))
-			return -EFAULT;
-
-		dev = dev_get_by_name(if_irda.ifr_name);
-		if (!dev)
-			return -ENODEV;
-
-		irlap = (struct irlap_cb *)dev->atalk_ptr;
-		if (!irlap)
-			return -ENODEV;
-
-		IRDA_DEBUG(4, "%s(): Setting %s to 0x%x\n", __FUNCTION__,
-			   dev->name, if_irda.ifr_mode);
-
-		irlap->mode = if_irda.ifr_mode;
-
-		dev_put(dev);
-
-		break;
-	}
-	case SIOCIRDAGETMODE: {
-		struct if_irda_req if_irda;
-		struct net_device * dev;
-		struct irlap_cb * irlap;
-
-		if (copy_from_user(&if_irda, argp, sizeof(struct if_irda_req)))
-			return -EFAULT;
-
-		dev = dev_get_by_name(if_irda.ifr_name);
-		if (!dev)
-			return -ENODEV;
-
-		irlap = (struct irlap_cb *)dev->atalk_ptr;
-		if (!irlap)
-			return -ENODEV;
-
-		if_irda.ifr_mode = irlap->mode;
-
-		dev_put(dev);
-
-		IRDA_DEBUG(4, "%s(): %s mode is 0x%x\n", __FUNCTION__,
-			   dev->name, if_irda.ifr_mode);
-
-		if (copy_to_user(argp, &if_irda, sizeof(struct if_irda_req)))
-			return -EFAULT;
-	}
-		break;
 	default:
 		IRDA_DEBUG(1, "%s(), doing device ioctl!\n", __FUNCTION__);
 		return -ENOIOCTLCMD;
diff --git a/net/irda/irlap_frame.c b/net/irda/irlap_frame.c
index 8acc356..3c5a68e 100644
--- a/net/irda/irlap_frame.c
+++ b/net/irda/irlap_frame.c
@@ -101,14 +101,6 @@ void irlap_queue_xmit(struct irlap_cb *self, struct sk_buff *skb)
 
 	irlap_insert_info(self, skb);
 
-	if (unlikely(self->mode & IRDA_MODE_MONITOR)) {
-		IRDA_DEBUG(3, "%s(): %s is in monitor mode\n", __FUNCTION__,
-			   self->netdev->name);
-		dev_kfree_skb(skb);
-		return;
-	}
-
-
 	dev_queue_xmit(skb);
 }
 
-- 
1.5.1.1



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

* Re: [irda-users] [PATCH 5/7] [IrDA] IrDA monitor mode
  2007-04-22 11:29             ` [irda-users] " Samuel Ortiz
@ 2007-04-22 19:59               ` David Miller
  0 siblings, 0 replies; 21+ messages in thread
From: David Miller @ 2007-04-22 19:59 UTC (permalink / raw)
  To: samuel; +Cc: netdev, irda-users

From: Samuel Ortiz <samuel@sortiz.org>
Date: Sun, 22 Apr 2007 14:29:07 +0300

> Fair enough, let's revert, and I'll come back to you with an IrDA netlink
> layer:
> 
> ---
> This reverts commit 8eb943bbb8d2b59a5dccfed691da2e3797ef7e8e.

Applied, thanks.

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

end of thread, other threads:[~2007-04-22 19:59 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-04-18 21:32 [PATCH 0/7] [IrDA] net-2.6.22 fixes samuel-jcdQHdrhKHMdnm+yROfE0A
2007-04-18 21:32 ` [PATCH 1/7] [IrDA] af_irda: irda_recvmsg_stream cleanup samuel-jcdQHdrhKHMdnm+yROfE0A
2007-04-21  5:05   ` David Miller
2007-04-18 21:32 ` [PATCH 2/7] [IrDA] af_irda: Silence kernel message in irda_recvmsg_stream samuel-jcdQHdrhKHMdnm+yROfE0A
2007-04-21  5:09   ` David Miller
     [not found]     ` <20070420.220900.45154094.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2007-04-21 12:01       ` Samuel Ortiz
     [not found]         ` <20070421120152.GB4337-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
2007-04-21 17:43           ` David Miller
2007-04-18 21:32 ` [PATCH 3/7] [IrDA] af_irda: irda_accept cleanup samuel-jcdQHdrhKHMdnm+yROfE0A
2007-04-21  5:09   ` David Miller
2007-04-18 21:32 ` [PATCH 4/7] [IrDA] af_irda: IRDA_ASSERT cleanups samuel-jcdQHdrhKHMdnm+yROfE0A
2007-04-21  5:10   ` David Miller
2007-04-18 21:32 ` [PATCH 5/7] [IrDA] IrDA monitor mode samuel-jcdQHdrhKHMdnm+yROfE0A
2007-04-21  5:11   ` David Miller
     [not found]     ` <20070420.221143.132446079.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>
2007-04-21 11:42       ` Samuel Ortiz
     [not found]         ` <20070421114239.GA4337-jcdQHdrhKHMdnm+yROfE0A@public.gmane.org>
2007-04-21 17:46           ` David Miller
2007-04-22 11:29             ` [irda-users] " Samuel Ortiz
2007-04-22 19:59               ` David Miller
2007-04-18 21:32 ` [PATCH 6/7] [IrDA] Adding carriage returns to mcs7780 debug statements samuel-jcdQHdrhKHMdnm+yROfE0A
2007-04-21  5:12   ` David Miller
2007-04-18 21:32 ` [PATCH 7/7] [IrDA] Misc spelling corrections samuel-jcdQHdrhKHMdnm+yROfE0A
2007-04-21  5:13   ` David Miller

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.