mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-21 20:34:38 +00:00
net: lwip: add TFTP_BLOCKSIZE
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> Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
This commit is contained in:
parent
27d7ccda94
commit
e65c5e3e73
2 changed files with 12 additions and 10 deletions
20
net/Kconfig
20
net/Kconfig
|
@ -60,16 +60,6 @@ config SYS_FAULT_ECHO_LINK_DOWN
|
||||||
this option is active, then CONFIG_SYS_FAULT_MII_ADDR also needs to
|
this option is active, then CONFIG_SYS_FAULT_MII_ADDR also needs to
|
||||||
be configured.
|
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.
|
|
||||||
|
|
||||||
config TFTP_PORT
|
config TFTP_PORT
|
||||||
bool "Set TFTP UDP source/destination ports via the environment"
|
bool "Set TFTP UDP source/destination ports via the environment"
|
||||||
help
|
help
|
||||||
|
@ -254,6 +244,16 @@ config NET_RANDOM_ETHADDR
|
||||||
generated. It will be saved to the appropriate environment variable,
|
generated. It will be saved to the appropriate environment variable,
|
||||||
too.
|
too.
|
||||||
|
|
||||||
|
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
|
endif # if NET || NET_LWIP
|
||||||
|
|
||||||
config SYS_RX_ETH_BUFFER
|
config SYS_RX_ETH_BUFFER
|
||||||
|
|
|
@ -139,6 +139,8 @@ static int tftp_loop(struct udevice *udev, ulong addr, char *fname,
|
||||||
if (!(err == ERR_OK || err == ERR_USE))
|
if (!(err == ERR_OK || err == ERR_USE))
|
||||||
log_err("tftp_init_client err: %d\n", err);
|
log_err("tftp_init_client err: %d\n", err);
|
||||||
|
|
||||||
|
tftp_client_set_blksize(CONFIG_TFTP_BLOCKSIZE);
|
||||||
|
|
||||||
ctx.start_time = get_timer(0);
|
ctx.start_time = get_timer(0);
|
||||||
err = tftp_get(&ctx, &srvip, srvport, fname, TFTP_MODE_OCTET);
|
err = tftp_get(&ctx, &srvip, srvport, fname, TFTP_MODE_OCTET);
|
||||||
/* might return different errors, like routing problems */
|
/* might return different errors, like routing problems */
|
||||||
|
|
Loading…
Add table
Reference in a new issue