Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6d97b53e92af822890b87818c99820df47fc589b
Commit:     6d97b53e92af822890b87818c99820df47fc589b
Parent:     775516bfa2bd7993620c9039191a0c30b8d8a496
Author:     Robie Basak <[EMAIL PROTECTED]>
AuthorDate: Fri Jan 18 23:56:54 2008 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Mon Jan 28 15:08:08 2008 -0800

    [IrDA]: Resend frames on timeout.
    
    When final timer expires, it might also mean that the i:cmd wasn't
    received properly. If we have rejected frames, we can try to resend them.
    
    Signed-off-by: Robie Basak <[EMAIL PROTECTED]>
    Signed-off-by: Samuel Ortiz <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/irda/irlap_event.c |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/net/irda/irlap_event.c b/net/irda/irlap_event.c
index 4c33bf5..6d3aff8 100644
--- a/net/irda/irlap_event.c
+++ b/net/irda/irlap_event.c
@@ -1514,9 +1514,15 @@ static int irlap_state_nrm_p(struct irlap_cb *self, 
IRLAP_EVENT event,
 
                /* N2 is the disconnect timer. Until we reach it, we retry */
                if (self->retry_count < self->N2) {
-                       /* Retry sending the pf bit to the secondary */
-                       irlap_wait_min_turn_around(self, &self->qos_tx);
-                       irlap_send_rr_frame(self, CMD_FRAME);
+                       if (skb_peek(&self->wx_list) == NULL) {
+                               /* Retry sending the pf bit to the secondary */
+                               IRDA_DEBUG(4, "nrm_p: resending rr");
+                               irlap_wait_min_turn_around(self, &self->qos_tx);
+                               irlap_send_rr_frame(self, CMD_FRAME);
+                       } else {
+                               IRDA_DEBUG(4, "nrm_p: resend frames");
+                               irlap_resend_rejected_frames(self, CMD_FRAME);
+                       }
 
                        irlap_start_final_timer(self, self->final_timeout);
                        self->retry_count++;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to