Updates for net-2.6
Subsystems (2)
cover Updates for net-2.6
Hi Dave,
These 2 patches are bug fixes and should thus be considered for net-2.6 inclusion.
Cheers,
Samuel.
PATCH 1/2 Fix Rx/Tx path race
From: G. Liakhovetski <gl-o/[email protected]>
We need to switch to NRM _before_ sending the final packet otherwise we might hit a race condition where we get the first packet from the peer while we're still in LAP_XMIT_P.
--- include/net/irda/irlap.h | 17 +++++++++++++++++ net/irda/irlap_event.c | 18 ------------------ net/irda/irlap_frame.c | 3 +++ 3 files changed, 20 insertions(+), 18 deletions(-)
include/net/irda/irlap.h +17 -0
@@ -289,4 +289,21 @@ self->disconnect_pending = FALSE; } +/* +* Function irlap_next_state (self, state) +* +* Switches state and provides debug information +* +*/ +static inline void irlap_next_state (struct irlap_cb *self,IRLAP_STATE state) +{ +/* +if (!self || self->magic != LAP_MAGIC) +return; + +IRDA_DEBUG(4, "next LAP state = %s\n", irlap_state[state]); +*/ + self->state = state; +} +#endif
net/irda/irlap_event.c +0 -18
@@ -317,23 +317,6 @@ }/* -* Function irlap_next_state (self, state) -* -* Switches state and provides debug information -* -*/ -static inline void irlap_next_state (struct irlap_cb *self,IRLAP_STATE state) -{ -/* -if (!self || self->magic != LAP_MAGIC) -return; - -IRDA_DEBUG(4, "next LAP state = %s\n", irlap_state[state]); -*/ - self->state = state; -} - -/* * Function irlap_state_ndm (event, skb, frame) * * NDM (Normal Disconnected Mode) state
@@ -1086,7 +1069,6 @@ }else {/* Final packet of window */ irlap_send_data_primary_poll (self, skb); -irlap_next_state (self,LAP_NRM_P );/* * Make sure state machine does not try to send
net/irda/irlap_frame.c +3 -0
@@ -798,16 +798,19 @@ self->vs = (self->vs +1 ) %8 ; self->ack_required = FALSE; +irlap_next_state (self,LAP_NRM_P );irlap_send_i_frame (self, tx_skb,CMD_FRAME ); }else {IRDA_DEBUG (4 ,"%s(), sending unreliable frame\n" , __FUNCTION__);if (self->ack_required) {irlap_send_ui_frame (self,skb_get (skb), self->caddr,CMD_FRAME ); +irlap_next_state (self,LAP_NRM_P );irlap_send_rr_frame (self,CMD_FRAME ); self->ack_required = FALSE; }else { skb->data[1 ] |=PF_BIT ; +irlap_next_state (self,LAP_NRM_P );irlap_send_ui_frame (self,skb_get (skb), self->caddr,CMD_FRAME ); } }
Signature · 5 lines
------------------------------------------------------------------------- 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/
PATCH 2/2 f-timer reloading when sending rejected frames
In reply to [email protected]Jean II was right: you have to re-charge the final timer when resending rejected frames. Otherwise it triggers at a wrong time and can break the currently running communication. Reproducible under rt-preempt.
net/irda/irlap_event.c +4 -6
@@ -1418,14 +1418,14 @@*/ self->remote_busy = FALSE; +/* Stop final timer */ +del_timer (&self->final_timer); +/* * Nr as expected? */ ret =irlap_validate_nr_received (self, info->nr);if (ret ==NR_EXPECTED ) { -/* Stop final timer */ -del_timer (&self->final_timer); -/* Update Nr received */ irlap_update_nr_received (self, info->nr);
@@ -1457,14 +1457,12 @@/* Resend rejected frames */ irlap_resend_rejected_frames (self,CMD_FRAME ); - -/* Final timer ??? Jean II */ +irlap_start_final_timer (self, self->final_timeout *2 );irlap_next_state (self,LAP_NRM_P ); }else if (ret ==NR_INVALID ) {IRDA_DEBUG (1 ,"%s(), Received RR with " "invalid nr !\n" , __FUNCTION__); -del_timer (&self->final_timer);irlap_next_state (self,LAP_RESET_WAIT );
Signature · 5 lines
------------------------------------------------------------------------- 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/
A message that is not in the archive (sent off-list or not yet received): [email protected]
From: [email protected]
Date: Sat, 09 Jun 2007 04:08:15 +0300
Quoted 2 lines
These 2 patches are bug fixes and should thus be considered for net-2.6 inclusion.
Both patches applied, thanks Sam.
-------------------------------------------------------------------------
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/