[PATCH v2] net: lwip: scale buffer pool size with TFTP block size

Pranav Tilak pranav.vinaytilak at amd.com
Tue Mar 10 13:58:25 CET 2026


TFTP transfers fail when tftpblocksize is set to 8192 or larger due to
insufficient buffer resources for IP fragment reassembly.

Calculate PBUF_POOL_SIZE and IP_REASS_MAX_PBUFS dynamically based on
CONFIG_TFTP_BLOCKSIZE using IP fragmentation boundaries (1480 usable
bytes per fragment at 1500 MTU). The pool size includes headroom for
TX, ARP, and protocol overhead, while ensuring PBUF_POOL_SIZE remains
greater than IP_REASS_MAX_PBUFS as required by lwIP.

Signed-off-by: Pranav Tilak <pranav.vinaytilak at amd.com>
---
 lib/lwip/u-boot/lwipopts.h | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/lib/lwip/u-boot/lwipopts.h b/lib/lwip/u-boot/lwipopts.h
index e8a2c9d7a0a..4a1f8086673 100644
--- a/lib/lwip/u-boot/lwipopts.h
+++ b/lib/lwip/u-boot/lwipopts.h
@@ -65,7 +65,21 @@
 #define MEM_ALIGNMENT                   8
 
 #define MEMP_NUM_TCP_SEG                16
+
+/* IP fragmentation parameters for TFTP reassembly */
+#define IP_FRAG_MTU_USABLE              1480
+#define PBUF_POOL_HEADROOM              6
+#define PBUF_POOL_RESERVE               4
+#define TFTP_BLOCKSIZE_THRESHOLD        4096
+
+#if defined(CONFIG_TFTP_BLOCKSIZE) && (CONFIG_TFTP_BLOCKSIZE > TFTP_BLOCKSIZE_THRESHOLD)
+#define PBUF_POOL_SIZE			(((CONFIG_TFTP_BLOCKSIZE + (IP_FRAG_MTU_USABLE - 1)) / \
+					  IP_FRAG_MTU_USABLE) + PBUF_POOL_HEADROOM)
+#define IP_REASS_MAX_PBUFS		(PBUF_POOL_SIZE - PBUF_POOL_RESERVE)
+#else
 #define PBUF_POOL_SIZE                  8
+#define IP_REASS_MAX_PBUFS              4
+#endif
 
 #define LWIP_ARP                        1
 #define ARP_TABLE_SIZE                  4
@@ -76,7 +90,7 @@
 #define IP_REASSEMBLY                   1
 #define IP_FRAG                         1
 #define IP_REASS_MAXAGE                 3
-#define IP_REASS_MAX_PBUFS              4
+
 #define IP_FRAG_USES_STATIC_BUF         0
 
 #define IP_DEFAULT_TTL                  255
-- 
2.34.1



More information about the U-Boot mailing list