Some driver implements it's own network packet pool, so PKTBUFSRX is zero.
This results in zero-size TCP receive window, so data transfer doesn't
work. Avoid it by setting a reasonable fallback value.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevets...@iopsys.eu>
Reviewed-by: Simon Glass <s...@chromium.org>
---
 net/tcp.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/net/tcp.c b/net/tcp.c
index 0778c153aca..32ee1fe03ce 100644
--- a/net/tcp.c
+++ b/net/tcp.c
@@ -36,7 +36,11 @@
 #define TCP_SEND_RETRY         3
 #define TCP_SEND_TIMEOUT       2000UL
 #define TCP_RX_INACTIVE_TIMEOUT        30000UL
-#define TCP_RCV_WND_SIZE       (PKTBUFSRX * TCP_MSS)
+#if PKTBUFSRX != 0
+  #define TCP_RCV_WND_SIZE     (PKTBUFSRX * TCP_MSS)
+#else
+  #define TCP_RCV_WND_SIZE     (4 * TCP_MSS)
+#endif
 
 #define TCP_PACKET_OK          0
 #define TCP_PACKET_DROP                1
-- 
2.43.0

Reply via email to