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

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

commit 6742f6328c74b1670dca369e819714b2f67e01fe
Author: alexcekay <[email protected]>
AuthorDate: Tue Aug 25 18:57:38 2026 +0200

    arch/arm/stm32: Make Ethernet TX watchdog timeout configurable
    
    The STM32 Ethernet MAC drivers hard-code a 60-second TX watchdog
    timeout. While this is a reasonable general default, certain board
    designs and use-cases require a shorter or longer value.
    
    Introduce CONFIG_STM32_ETH_TXTIMEOUT via the shared Kconfig.eth
    with a #ifndef fallback. The default is kept at 60 seconds
    to preserve existing behavior.
    
    Assisted-by: Claude Code:claude-sonnet-5
    Signed-off-by: alexcekay <[email protected]>
---
 arch/arm/src/common/stm32/Kconfig.eth         | 8 ++++++++
 arch/arm/src/common/stm32/stm32_eth_m3m4_v1.c | 7 +++++--
 arch/arm/src/stm32f7/stm32_ethernet.c         | 7 +++++--
 arch/arm/src/stm32h5/stm32_ethernet.c         | 7 +++++--
 arch/arm/src/stm32h7/stm32_ethernet.c         | 7 +++++--
 5 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/arch/arm/src/common/stm32/Kconfig.eth 
b/arch/arm/src/common/stm32/Kconfig.eth
index 7a5359fa578..d682b5d3459 100644
--- a/arch/arm/src/common/stm32/Kconfig.eth
+++ b/arch/arm/src/common/stm32/Kconfig.eth
@@ -309,3 +309,11 @@ config STM32_ETH_NTXDESC
        default 4
        ---help---
                Number of TX DMA descriptors to use.
+
+config STM32_ETH_TXTIMEOUT
+       int "TX watchdog timeout (seconds)"
+       depends on STM32_ETHMAC
+       default 60
+       ---help---
+               Seconds before the TX watchdog resets the MAC when a 
transmission
+               does not complete.
diff --git a/arch/arm/src/common/stm32/stm32_eth_m3m4_v1.c 
b/arch/arm/src/common/stm32/stm32_eth_m3m4_v1.c
index 3fc669d3ff7..c1a01a6faf6 100644
--- a/arch/arm/src/common/stm32/stm32_eth_m3m4_v1.c
+++ b/arch/arm/src/common/stm32/stm32_eth_m3m4_v1.c
@@ -252,6 +252,9 @@
 #ifndef CONFIG_STM32_ETH_NTXDESC
 #  define CONFIG_STM32_ETH_NTXDESC 4
 #endif
+#ifndef CONFIG_STM32_ETH_TXTIMEOUT
+#  define CONFIG_STM32_ETH_TXTIMEOUT 60
+#endif
 
 /* We need at least one more free buffer than transmit buffers */
 
@@ -285,9 +288,9 @@
 
 /* Timing *******************************************************************/
 
-/* TX timeout = 1 minute */
+/* TX timeout */
 
-#define STM32_TXTIMEOUT   (60*CLK_TCK)
+#define STM32_TXTIMEOUT   (CONFIG_STM32_ETH_TXTIMEOUT*CLK_TCK)
 
 /* PHY reset/configuration delays in milliseconds */
 
diff --git a/arch/arm/src/stm32f7/stm32_ethernet.c 
b/arch/arm/src/stm32f7/stm32_ethernet.c
index 666186b2ceb..89847d7662a 100644
--- a/arch/arm/src/stm32f7/stm32_ethernet.c
+++ b/arch/arm/src/stm32f7/stm32_ethernet.c
@@ -213,6 +213,9 @@
 #ifndef CONFIG_STM32_ETH_NTXDESC
 #  define CONFIG_STM32_ETH_NTXDESC 4
 #endif
+#ifndef CONFIG_STM32_ETH_TXTIMEOUT
+#  define CONFIG_STM32_ETH_TXTIMEOUT 60
+#endif
 
 /* We need at least one more free buffer than transmit buffers */
 
@@ -280,9 +283,9 @@
 
 /* Timing *******************************************************************/
 
-/* TX timeout = 1 minute */
+/* TX timeout */
 
-#define STM32_TXTIMEOUT   (60*CLK_TCK)
+#define STM32_TXTIMEOUT   (CONFIG_STM32_ETH_TXTIMEOUT*CLK_TCK)
 
 /* PHY reset/configuration delays in milliseconds */
 
diff --git a/arch/arm/src/stm32h5/stm32_ethernet.c 
b/arch/arm/src/stm32h5/stm32_ethernet.c
index 0ef2f2eb4b9..7e0e53feca9 100644
--- a/arch/arm/src/stm32h5/stm32_ethernet.c
+++ b/arch/arm/src/stm32h5/stm32_ethernet.c
@@ -206,6 +206,9 @@
 #ifndef CONFIG_STM32_ETH_NTXDESC
 #  define CONFIG_STM32_ETH_NTXDESC 4
 #endif
+#ifndef CONFIG_STM32_ETH_TXTIMEOUT
+#  define CONFIG_STM32_ETH_TXTIMEOUT 60
+#endif
 
 /* We need at least one more free buffer than transmit buffers */
 
@@ -266,9 +269,9 @@
 
 /* Timing *******************************************************************/
 
-/* TX timeout = 1 minute */
+/* TX timeout */
 
-#define STM32_TXTIMEOUT   (60*CLK_TCK)
+#define STM32_TXTIMEOUT   (CONFIG_STM32_ETH_TXTIMEOUT*CLK_TCK)
 
 /* PHY reset/configuration delays in milliseconds */
 
diff --git a/arch/arm/src/stm32h7/stm32_ethernet.c 
b/arch/arm/src/stm32h7/stm32_ethernet.c
index bdf09e82f65..ee1a6d32f42 100644
--- a/arch/arm/src/stm32h7/stm32_ethernet.c
+++ b/arch/arm/src/stm32h7/stm32_ethernet.c
@@ -290,6 +290,9 @@
 #ifndef CONFIG_STM32_ETH_NTXDESC
 #  define CONFIG_STM32_ETH_NTXDESC 4
 #endif
+#ifndef CONFIG_STM32_ETH_TXTIMEOUT
+#  define CONFIG_STM32_ETH_TXTIMEOUT 60
+#endif
 
 /* We need at least one more free buffer than transmit buffers */
 
@@ -350,9 +353,9 @@
 
 /* Timing *******************************************************************/
 
-/* TX timeout = 1 minute */
+/* TX timeout */
 
-#define STM32_TXTIMEOUT   (60*CLK_TCK)
+#define STM32_TXTIMEOUT   (CONFIG_STM32_ETH_TXTIMEOUT*CLK_TCK)
 
 /* PHY reset/configuration delays in milliseconds */
 

Reply via email to