[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 <rb-oss-1@justgohome.co.uk> Signed-off-by: Samuel Ortiz <samuel@sortiz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
775516bfa2
commit
6d97b53e92
@@ -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 */
|
/* N2 is the disconnect timer. Until we reach it, we retry */
|
||||||
if (self->retry_count < self->N2) {
|
if (self->retry_count < self->N2) {
|
||||||
|
if (skb_peek(&self->wx_list) == NULL) {
|
||||||
/* Retry sending the pf bit to the secondary */
|
/* 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_wait_min_turn_around(self, &self->qos_tx);
|
||||||
irlap_send_rr_frame(self, CMD_FRAME);
|
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);
|
irlap_start_final_timer(self, self->final_timeout);
|
||||||
self->retry_count++;
|
self->retry_count++;
|
||||||
|
Reference in New Issue
Block a user