summaryrefslogtreecommitdiffstats
path: root/net/irda/irlap_event.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-02-04 07:40:19 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-02-04 07:40:19 +0000
commit33263fc5f9ac8e8cb2b22d06af3ce5ac1dd815e4 (patch)
tree2d1b86a40bef0958a68cf1a2eafbeb0667a70543 /net/irda/irlap_event.c
parent216f5f51aa02f8b113aa620ebc14a9631a217a00 (diff)
Merge with Linux 2.3.32.
Diffstat (limited to 'net/irda/irlap_event.c')
-rw-r--r--net/irda/irlap_event.c47
1 files changed, 30 insertions, 17 deletions
diff --git a/net/irda/irlap_event.c b/net/irda/irlap_event.c
index fa9369863..7ddadc761 100644
--- a/net/irda/irlap_event.c
+++ b/net/irda/irlap_event.c
@@ -6,7 +6,7 @@
* Status: Experimental.
* Author: Dag Brattli <dagb@cs.uit.no>
* Created at: Sat Aug 16 00:59:29 1997
- * Modified at: Sun Oct 10 11:14:22 1999
+ * Modified at: Tue Nov 16 12:33:41 1999
* Modified by: Dag Brattli <dagb@cs.uit.no>
*
* Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>,
@@ -343,8 +343,9 @@ static int irlap_state_ndm(struct irlap_cb *self, IRLAP_EVENT event,
irlap_connect_indication(self, skb);
} else {
- IRDA_DEBUG(0, __FUNCTION__ "(), SNRM frame does not contain"
- " and I field!\n");
+ IRDA_DEBUG(0, __FUNCTION__
+ "(), SNRM frame does not contain"
+ " and I field!\n");
dev_kfree_skb(skb);
}
break;
@@ -601,36 +602,48 @@ static int irlap_state_conn(struct irlap_cb *self, IRLAP_EVENT event,
irlap_qos_negotiate(self, skb);
- irlap_initiate_connection_state( self);
+ irlap_initiate_connection_state(self);
- /*
- * We are allowed to send two frames!
+#if 0
+ /*
+ * We are allowed to send two frames, but this may increase
+ * the connect latency, so lets not do it for now.
*/
irlap_send_ua_response_frame(self, &self->qos_rx);
- irlap_send_ua_response_frame(self, &self->qos_rx);
-
+#endif
+
+ /*
+ * Applying the parameters now will make sure we change speed
+ * after we have sent the next frame
+ */
irlap_apply_connection_parameters(self, &self->qos_tx);
+ /*
+ * Sending this frame will force a speed change after it has
+ * been sent
+ */
+ irlap_send_ua_response_frame(self, &self->qos_rx);
+
/*
* The WD-timer could be set to the duration of the P-timer
* for this case, but it is recommended to use twice the
* value (note 3 IrLAP p. 60).
*/
irlap_start_wd_timer(self, self->wd_timeout);
- irlap_next_state( self, LAP_NRM_S);
+ irlap_next_state(self, LAP_NRM_S);
break;
case RECV_DISCOVERY_XID_CMD:
- IRDA_DEBUG( 3, __FUNCTION__ "(), event RECV_DISCOVER_XID_CMD!\n");
- irlap_next_state( self, LAP_NDM);
+ IRDA_DEBUG(3, __FUNCTION__ "(), event RECV_DISCOVER_XID_CMD!\n");
+ irlap_next_state(self, LAP_NDM);
break;
case DISCONNECT_REQUEST:
- irlap_send_dm_frame( self);
+ irlap_send_dm_frame(self);
irlap_next_state( self, LAP_CONN);
break;
default:
- IRDA_DEBUG(1, __FUNCTION__ "(), Unknown event %d, %s\n", event,
- irlap_event[event]);
-
+ IRDA_DEBUG(1, __FUNCTION__ "(), Unknown event %d, %s\n", event,
+ irlap_event[event]);
+
if (skb)
dev_kfree_skb(skb);
@@ -739,8 +752,8 @@ static int irlap_state_setup(struct irlap_cb *self, IRLAP_EVENT event,
irlap_apply_connection_parameters(self, &self->qos_tx);
self->retry_count = 0;
- /* This frame will just be sent at the old speed */
- /* irlap_send_rr_frame( self, CMD_FRAME); */
+ /* This frame will actually force the speed change */
+ irlap_send_rr_frame(self, CMD_FRAME);
irlap_start_final_timer(self, self->final_timeout/2);
irlap_next_state(self, LAP_NRM_P);