patch-2.4.0-test12 linux/net/irda/irlap_event.c

Next file: linux/net/packet/af_packet.c
Previous file: linux/net/irda/irlan/irlan_client_event.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test11/linux/net/irda/irlap_event.c linux/net/irda/irlap_event.c
@@ -4,10 +4,10 @@
  * Version:       0.9
  * Description:   IrLAP state machine implementation
  * Status:        Experimental.
- * Author:        Dag Brattli <dagb@cs.uit.no>
+ * Author:        Dag Brattli <dag@brattli.net>
  * Created at:    Sat Aug 16 00:59:29 1997
  * Modified at:   Sat Dec 25 21:07:57 1999
- * Modified by:   Dag Brattli <dagb@cs.uit.no>
+ * Modified by:   Dag Brattli <dag@brattli.net>
  * 
  *     Copyright (c) 1998-2000 Dag Brattli <dag@brattli.net>,
  *     Copyright (c) 1998      Thomas Davis <ratbert@radiks.net>
@@ -551,13 +551,15 @@
 		 * since we want to work even with devices that violate the
 		 * timing requirements.
 		 */
-		if (irda_device_is_receiving(self->netdev)) {
-			IRDA_DEBUG(1, __FUNCTION__ 
+		if (irda_device_is_receiving(self->netdev) && !self->add_wait) {
+			IRDA_DEBUG(2, __FUNCTION__ 
 				   "(), device is slow to answer, "
 				   "waiting some more!\n");
 			irlap_start_slot_timer(self, MSECS_TO_JIFFIES(10));
+			self->add_wait = TRUE;
 			return ret;
 		}
+		self->add_wait = FALSE;
 
 		if (self->s < self->S) {
 			irlap_send_discovery_xid_frame(self, self->S, 
@@ -1324,9 +1326,7 @@
 		 *  of receiving a frame (page 45, IrLAP). Check that
 		 *  we only do this once for each frame.
 		 */
-		if (irda_device_is_receiving(self->netdev) && 
-		    !self->add_wait) 
-		{
+		if (irda_device_is_receiving(self->netdev) && !self->add_wait) {
 			IRDA_DEBUG(1, "FINAL_TIMER_EXPIRED when receiving a "
 			      "frame! Waiting a little bit more!\n");
 			irlap_start_final_timer(self, MSECS_TO_JIFFIES(300));

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)