Hi Ilias, On 7/29/24 14:29, Ilias Apalodimas wrote: > Hi Jerome, > > On Thu, 25 Jul 2024 at 15:59, Jerome Forissier > <jerome.foriss...@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.foriss...@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 >>