Make timeout configurable outside of the TFTP loop invocation, and store the timeout in TFTP context. This is a preparatory patch for porting of the DFU TFTP to LwIP, which requires a different timeout than the LwIP default one.
Signed-off-by: Marek Vasut <[email protected]> --- Cc: Ilias Apalodimas <[email protected]> Cc: James Hilliard <[email protected]> Cc: Jerome Forissier <[email protected]> Cc: Lukasz Majewski <[email protected]> Cc: Mattijs Korpershoek <[email protected]> Cc: Quentin Schulz <[email protected]> Cc: Tom Rini <[email protected]> Cc: [email protected] --- net/lwip/tftp.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/net/lwip/tftp.c b/net/lwip/tftp.c index 48c6eb7022a..1d0e95d826b 100644 --- a/net/lwip/tftp.c +++ b/net/lwip/tftp.c @@ -36,6 +36,7 @@ struct tftp_ctx { ulong block_count; ulong hash_count; ulong start_time; + ulong timeout; enum done_state done; bool is_server; bool wrq_accepted; @@ -59,7 +60,7 @@ static void transfer_timeout(void *arg) static void restart_transfer_timeout(struct tftp_ctx *ctx) { sys_untimeout(transfer_timeout, ctx); - sys_timeout(TFTP_TIMEOUT_MSECS, transfer_timeout, ctx); + sys_timeout(ctx->timeout, transfer_timeout, ctx); } /** @@ -227,7 +228,7 @@ static void no_response(void *arg) } static int tftp_loop(struct net_lwip_ctx *net, ulong addr, char *fname, - ip_addr_t srvip, uint16_t srvport) + ip_addr_t srvip, uint16_t srvport, unsigned long timeout) { int blksize = CONFIG_TFTP_BLOCKSIZE; struct tftp_ctx ctx; @@ -248,6 +249,7 @@ static int tftp_loop(struct net_lwip_ctx *net, ulong addr, char *fname, ctx.is_server = false; ctx.wrq_accepted = false; ctx.fname[0] = '\0'; + ctx.timeout = timeout; printf("Using %s device\n", net->dev->name); printf("TFTP from server %s; our IP address is %s\n", @@ -535,7 +537,7 @@ int do_tftpb(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) goto out; } - if (tftp_loop(&net, laddr, fname, srvip, port) < 0) + if (tftp_loop(&net, laddr, fname, srvip, port, TFTP_TIMEOUT_MSECS) < 0) ret = CMD_RET_FAILURE; else image_load_addr = laddr; -- 2.53.0
