Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d97b53e authored by Robie Basak's avatar Robie Basak Committed by David S. Miller
Browse files

[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: default avatarRobie Basak <rb-oss-1@justgohome.co.uk>
Signed-off-by: default avatarSamuel Ortiz <samuel@sortiz.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 775516bf
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -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) {
			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++;