tools: kwboot: Do not change received character in kwboot_xm_recv_reply()

Marvell BootROM expects retransmission of previous xmodem packet only in
the case when it sends NAK response to the host.

Do not change non-xmodem response (possibly UART transfer error) to NAK
in kwboot_xm_recv_reply() function. Allow caller to receive original
response from device.

Change argument 'nak_on_non_xm' to 'stop_on_non_xm'. Instead of changing
non-xmodem character to NAK, stop processing on invalid character and
return it.

Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
Pali Rohár 2022-01-25 18:13:04 +01:00 committed by Stefan Roese
parent 94c906a0dd
commit 950ed24d23

View file

@ -875,7 +875,7 @@ kwboot_baud_magic_handle(int fd, char c, int baudrate)
} }
static int static int
kwboot_xm_recv_reply(int fd, char *c, int nak_on_non_xm, kwboot_xm_recv_reply(int fd, char *c, int stop_on_non_xm,
int ignore_nak_reply, int ignore_nak_reply,
int allow_non_xm, int *non_xm_print, int allow_non_xm, int *non_xm_print,
int baudrate, int *baud_changed) int baudrate, int *baud_changed)
@ -931,10 +931,8 @@ kwboot_xm_recv_reply(int fd, char *c, int nak_on_non_xm,
*non_xm_print = 1; *non_xm_print = 1;
} }
} else { } else {
if (nak_on_non_xm) { if (stop_on_non_xm)
*c = NAK;
break; break;
}
timeout = recv_until - _now(); timeout = recv_until - _now();
if (timeout < 0) { if (timeout < 0) {
errno = ETIMEDOUT; errno = ETIMEDOUT;