This is an automated email from the ASF dual-hosted git repository.

xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit a7e30d59d9ca0ddb8794a498a003e106f678e5fb
Author: Daniel P. Carvalho <[email protected]>
AuthorDate: Sat Oct 10 15:44:12 2026 -0300

    arch/mips/pic32mz: document the size of the Ethernet RX ring.
    
    The RX ring has to absorb the burst that the TCP window allows.  When it
    is too small at 100 Mbit/s, the hardware drops frames without a counter
    and the TCP throughput collapses.  Say so in the help of
    PIC32MZ_ETH_NRXDESC.
    
    Assisted-by: Claude Code:claude-sonnet-5-5
    Signed-off-by: Daniel P. Carvalho <[email protected]>
---
 arch/mips/src/pic32mz/Kconfig | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/arch/mips/src/pic32mz/Kconfig b/arch/mips/src/pic32mz/Kconfig
index d32fe474f1d..bde9d829c7f 100644
--- a/arch/mips/src/pic32mz/Kconfig
+++ b/arch/mips/src/pic32mz/Kconfig
@@ -1262,6 +1262,15 @@ config PIC32MZ_ETH_NRXDESC
        ---help---
                Configured number of Rx descriptors. Default: 4
 
+               The ring must absorb the burst that the TCP window allows, which
+               is about (free IOBs - IOB_THROTTLE) * IOB_BUFSIZE / frame size
+               frames.  At 100 Mbit/s the sender sends the window at line rate,
+               and a ring that is too small overruns in the hardware without 
any
+               counter; the TCP throughput then collapses to a few Mbit/s 
because
+               of retransmission timeouts.  For example, 32 descriptors for 48
+               IOBs of 1600 bytes with IOB_THROTTLE=16.  The default of 4 only
+               suits small IOBs and windows (24 IOBs of 196 bytes).
+
 config PIC32MZ_ETH_PRIORITY
        int "Interrupt priority"
        default 7

Reply via email to