[PATCH] net: lwip: scale buffer pool size with TFTP block size
Jerome Forissier
jerome.forissier at arm.com
Mon Mar 9 09:07:52 CET 2026
Hi Pranav,
On 05/03/2026 07:40, Pranav Tilak wrote:
> TFTP transfers fail when tftpblocksize is set to 8192 or larger due to
> insufficient buffer resources for IP fragment reassembly.
>
> Adjust PBUF_POOL_SIZE and IP_REASS_MAX_PBUFS based on
> CONFIG_TFTP_BLOCKSIZE to support larger TFTP transfers
> while keeping memory usage efficient.
>
> - CONFIG_TFTP_BLOCKSIZE >= 12288:PBUF_POOL_SIZE=18, IP_REASS_MAX_PBUFS=12
>
> - CONFIG_TFTP_BLOCKSIZE >= 8192:PBUF_POOL_SIZE=12, IP_REASS_MAX_PBUFS=6
>
> - CONFIG_TFTP_BLOCKSIZE undefined: PBUF_POOL_SIZE=8, IP_REASS_MAX_PBUFS=4
How are these values computed? Could you find a formula instead of using
#if/#elif/#else/endif?
Thanks,
--
Jerome
> Signed-off-by: Pranav Tilak <pranav.vinaytilak at amd.com>
> ---
> lib/lwip/u-boot/lwipopts.h | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/lib/lwip/u-boot/lwipopts.h b/lib/lwip/u-boot/lwipopts.h
> index e8a2c9d7a0a..b4ff31096fe 100644
> --- a/lib/lwip/u-boot/lwipopts.h
> +++ b/lib/lwip/u-boot/lwipopts.h
> @@ -65,7 +65,14 @@
> #define MEM_ALIGNMENT 8
>
> #define MEMP_NUM_TCP_SEG 16
> +
> +#if defined(CONFIG_TFTP_BLOCKSIZE) && CONFIG_TFTP_BLOCKSIZE >= 12288
> +#define PBUF_POOL_SIZE 18
> +#elif defined(CONFIG_TFTP_BLOCKSIZE) && CONFIG_TFTP_BLOCKSIZE >= 8192
> +#define PBUF_POOL_SIZE 12
> +#else
> #define PBUF_POOL_SIZE 8
> +#endif
>
> #define LWIP_ARP 1
> #define ARP_TABLE_SIZE 4
> @@ -76,7 +83,15 @@
> #define IP_REASSEMBLY 1
> #define IP_FRAG 1
> #define IP_REASS_MAXAGE 3
> +
> +#if defined(CONFIG_TFTP_BLOCKSIZE) && CONFIG_TFTP_BLOCKSIZE >= 12288
> +#define IP_REASS_MAX_PBUFS 12
> +#elif defined(CONFIG_TFTP_BLOCKSIZE) && CONFIG_TFTP_BLOCKSIZE >= 8192
> +#define IP_REASS_MAX_PBUFS 6
> +#else
> #define IP_REASS_MAX_PBUFS 4
> +#endif
> +
> #define IP_FRAG_USES_STATIC_BUF 0
>
> #define IP_DEFAULT_TTL 255
More information about the U-Boot
mailing list