Re: [PATCH v5 18/20] net-lwip: add TFTP_BLOCKSIZE

Ilias Apalodimas
2024-07-30T09:57:51Z

On Mon, 29 Jul 2024 at 18:18, Jerome Forissier
<jerome.forissier@linaro.org> wrote:
>
> Hi Ilias,
>
> On 7/29/24 14:29, Ilias Apalodimas wrote:
> > Hi Jerome,
> >
> > On Thu, 25 Jul 2024 at 15:59, Jerome Forissier
> > <jerome.forissier@linaro.org> wrote:
> >>
> >> Add support for setting the TFTP block size. The default value (1468)
> >> is fine for Ethernet and allows a better throughput than the TFTP
> >> default (512), if the server supports the blksize option of course.
> >>
> >> I tested this change with qemu_arm64_lwip_defconfig. The throughput is
> >> now 875 KiB/s vs. 313 KiB/s before. That is still a low number, but I
> >> think we can't expect more without implementing the windowsize option.
> >>
> >> Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
> >> ---
> >> net/Kconfig | 20 ++++++++++----------
> >> net/lwip/tftp.c | 2 ++
> >> 2 files changed, 12 insertions(+), 10 deletions(-)
> >>
> >> diff --git a/net/Kconfig b/net/Kconfig
> >> index 952690d677d..7e5406bb923 100644
> >> --- a/net/Kconfig
> >> +++ b/net/Kconfig
> >> @@ -69,16 +69,6 @@ config SYS_FAULT_ECHO_LINK_DOWN
> >> this option is active, then CONFIG_SYS_FAULT_MII_ADDR also needs to
> >> be configured.
> >>
> >> -config TFTP_BLOCKSIZE
> >> - int "TFTP block size"
> >> - default 1468
> >> - help
> >> - Default TFTP block size.
> >> - The MTU is typically 1500 for ethernet, so a TFTP block of
> >> - 1468 (MTU minus eth.hdrs) provides a good throughput with
> >> - almost-MTU block sizes.
> >> - You can also activate CONFIG_IP_DEFRAG to set a larger block.
> >> -
> >
> > Why do you have to move the config option?
>
> It is moved from the 'if NET' block to the 'if NET || NET_LWIP' block since
> it now applies to both.
>
> Thanks,
> --
> Jerome
>
> >
> > Cheers
> > /Ilias
> >> config TFTP_PORT
> >> bool "Set TFTP UDP source/destination ports via the environment"
> >> help
> >> @@ -263,4 +253,14 @@ config SYS_RX_ETH_BUFFER
> >> since all buffers can be full shortly after enabling the interface on
> >> high Ethernet traffic.
> >>
> >> +config TFTP_BLOCKSIZE
> >> + int "TFTP block size"
> >> + default 1468
> >> + help
> >> + Default TFTP block size.
> >> + The MTU is typically 1500 for ethernet, so a TFTP block of
> >> + 1468 (MTU minus eth.hdrs) provides a good throughput with
> >> + almost-MTU block sizes.
> >> + You can also activate CONFIG_IP_DEFRAG to set a larger block.
> >> +
> >> endif # if NET || NET_LWIP
> >> diff --git a/net/lwip/tftp.c b/net/lwip/tftp.c
> >> index 78de0bd0dba..1fe948c84ec 100644
> >> --- a/net/lwip/tftp.c
> >> +++ b/net/lwip/tftp.c
> >> @@ -136,6 +136,8 @@ static int tftp_loop(struct udevice *udev, ulong addr, char *fname,
> >> if (!(err == ERR_OK || err == ERR_USE))
> >> log_err("tftp_init_client err: %d\n", err);
> >>
> >> + tftp_client_set_blksize(CONFIG_TFTP_BLOCKSIZE);
> >> +
> >> ctx.start_time = get_timer(0);
> >> err = tftp_get(&ctx, &srvip, srvport, fname, TFTP_MODE_OCTET);
> >> /* might return different errors, like routing problems */
> >> --
> >> 2.40.1
> >>

Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>