Hi Pali, On Tue, 3 Aug 2021 at 08:29, Pali Rohár <p...@kernel.org> wrote: > > Transfer termination tries to instruct sender that transfer was terminated. > > Print error message and indicates aborted transfer in return value. > > Signed-off-by: Pali Rohár <p...@kernel.org> > --- > cmd/load.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-)
Reviewed-by: Simon Glass <s...@chromium.org> > > diff --git a/cmd/load.c b/cmd/load.c > index fb8c191fb64f..1ed05a9cd21e 100644 > --- a/cmd/load.c > +++ b/cmd/load.c > @@ -975,6 +975,7 @@ static ulong load_serial_ymodem(ulong offset, int mode) > res = xyzModem_stream_open(&info, &err); > if (!res) { > > + err = 0; > while ((res = > xyzModem_stream_read(ymodemBuf, 1024, &err)) > 0) { > store_addr = addr + offset; > @@ -987,6 +988,9 @@ static ulong load_serial_ymodem(ulong offset, int mode) > rc = flash_write((char *) ymodemBuf, > store_addr, res); > if (rc != 0) { > + xyzModem_stream_terminate(true, > &getcxmodem); > + xyzModem_stream_close(&err); > + printf("\n"); > flash_perror(rc); > return (~0); > } > @@ -998,12 +1002,20 @@ static ulong load_serial_ymodem(ulong offset, int mode) > } > > } > + if (err) { > + xyzModem_stream_terminate((err == xyzModem_cancel) ? > false : true, &getcxmodem); > + xyzModem_stream_close(&err); > + printf("\n%s\n", xyzModem_error(err)); > + return (~0); /* Download aborted */ > + } > + > if (IS_ENABLED(CONFIG_CMD_BOOTEFI)) > efi_set_bootdev("Uart", "", "", > map_sysmem(offset, 0), size); > > } else { > - printf("%s\n", xyzModem_error(err)); > + printf("\n%s\n", xyzModem_error(err)); > + return (~0); /* Download aborted */ Should not have brackets around return value. > } > > xyzModem_stream_terminate(false, &getcxmodem); > -- > 2.20.1 > Regards, Simon