diff -u -p linux/include/net/irda/irlap.d4.h linux/include/net/irda/irlap.h --- linux/include/net/irda/irlap.d4.h Wed Jan 7 16:27:07 2004 +++ linux/include/net/irda/irlap.h Wed Jan 7 16:29:31 2004 @@ -283,4 +283,10 @@ static inline int irlap_is_primary(struc return(ret); } +/* Clear a pending IrLAP disconnect. - Jean II */ +static inline void irlap_clear_disconnect(struct irlap_cb *self) +{ + self->disconnect_pending = FALSE; +} + #endif diff -u -p linux/net/irda/irlmp_event.d4.c linux/net/irda/irlmp_event.c --- linux/net/irda/irlmp_event.d4.c Wed Jan 7 16:25:13 2004 +++ linux/net/irda/irlmp_event.c Wed Jan 7 16:32:08 2004 @@ -391,6 +391,14 @@ static void irlmp_state_active(struct la IRDA_DEBUG(4, "%s(), LS_CONNECT_REQUEST\n", __FUNCTION__); /* + * IrLAP may have a pending disconnect. We tried to close + * IrLAP, but it was postponed because the link was + * busy or we were still sending packets. As we now + * need it, make sure it stays on. Jean II + */ + irlap_clear_disconnect(self->irlap); + + /* * LAP connection already active, just bounce back! Since we * don't know which LSAP that tried to do this, we have to * notify all LSAPs using this LAP, but that should be safe to