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

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


The following commit(s) were added to refs/heads/master by this push:
     new a4315fbb452 arch/arm/src: Fix Ethernet RUNNING status regression in 
IMXRT and STM32(F7/H7).
a4315fbb452 is described below

commit a4315fbb452c4a10aaa689021c3b8b28853b490d
Author: aviralgarg05 <[email protected]>
AuthorDate: Sun Jan 25 14:13:03 2026 +0530

    arch/arm/src: Fix Ethernet RUNNING status regression in IMXRT and 
STM32(F7/H7).
    
    Add missing netdev_carrier_on() and netdev_carrier_off() calls to
    imxrt_enet.c, stm32f7/stm32_ethernet.c, stm32h7/stm32_ethernet.c,
    and stm32/stm32_eth.c. This ensures the interfaces correctly report
    IFF_RUNNING status, as required by recent networking stack changes.
    
    Verification:
    - imxrt_enet.c pass ./tools/checkpatch.sh.
    - stm32f7/stm32_ethernet.c pass ./tools/checkpatch.sh.
    - stm32h7/stm32_ethernet.c pass ./tools/checkpatch.sh.
    - stm32/stm32_eth.c pass ./tools/checkpatch.sh.
    - Manual compilation verification for IMXRT1060 driver.
    - Addresses CI failures in arm-13 job (STM32H7).
    
    Signed-off-by: Aviral Garg <[email protected]>
---
 arch/arm/src/imxrt/imxrt_enet.c       | 2 ++
 arch/arm/src/stm32/stm32_eth.c        | 2 ++
 arch/arm/src/stm32f7/stm32_ethernet.c | 2 ++
 arch/arm/src/stm32h7/stm32_ethernet.c | 2 ++
 4 files changed, 8 insertions(+)

diff --git a/arch/arm/src/imxrt/imxrt_enet.c b/arch/arm/src/imxrt/imxrt_enet.c
index 9b6656ea453..160a7ac0ada 100644
--- a/arch/arm/src/imxrt/imxrt_enet.c
+++ b/arch/arm/src/imxrt/imxrt_enet.c
@@ -1508,6 +1508,7 @@ static int imxrt_ifup_action(struct net_driver_s *dev, 
bool resetphy)
   imxrt_enet_modifyreg32(priv, IMXRT_ENET_EIMR_OFFSET, TX_INTERRUPTS,
                          priv->ints);
 
+  netdev_carrier_on(dev);
   return OK;
 }
 
@@ -1595,6 +1596,7 @@ static int imxrt_ifdown(struct net_driver_s *dev)
   /* Mark the device "down" */
 
   priv->bifup = false;
+  netdev_carrier_off(dev);
   leave_critical_section(flags);
   return OK;
 }
diff --git a/arch/arm/src/stm32/stm32_eth.c b/arch/arm/src/stm32/stm32_eth.c
index 8d71b317f4c..5a7501134f3 100644
--- a/arch/arm/src/stm32/stm32_eth.c
+++ b/arch/arm/src/stm32/stm32_eth.c
@@ -2286,6 +2286,7 @@ static int stm32_ifup(struct net_driver_s *dev)
   up_enable_irq(STM32_IRQ_ETH);
 
   stm32_checksetup();
+  netdev_carrier_on(dev);
   return OK;
 }
 
@@ -2351,6 +2352,7 @@ static int stm32_ifdown(struct net_driver_s *dev)
   /* Mark the device "down" */
 
   priv->ifup = false;
+  netdev_carrier_off(dev);
   leave_critical_section(flags);
   return ret;
 }
diff --git a/arch/arm/src/stm32f7/stm32_ethernet.c 
b/arch/arm/src/stm32f7/stm32_ethernet.c
index 174c3a9c958..c76828e3999 100644
--- a/arch/arm/src/stm32f7/stm32_ethernet.c
+++ b/arch/arm/src/stm32f7/stm32_ethernet.c
@@ -2327,6 +2327,7 @@ static int stm32_ifup(struct net_driver_s *dev)
   up_enable_irq(STM32_IRQ_ETH);
 
   stm32_checksetup();
+  netdev_carrier_on(dev);
   return OK;
 }
 
@@ -2372,6 +2373,7 @@ static int stm32_ifdown(struct net_driver_s *dev)
   /* Mark the device "down" */
 
   priv->ifup = false;
+  netdev_carrier_off(dev);
   leave_critical_section(flags);
   return OK;
 }
diff --git a/arch/arm/src/stm32h7/stm32_ethernet.c 
b/arch/arm/src/stm32h7/stm32_ethernet.c
index e90fb5c5716..9e862513456 100644
--- a/arch/arm/src/stm32h7/stm32_ethernet.c
+++ b/arch/arm/src/stm32h7/stm32_ethernet.c
@@ -2499,6 +2499,7 @@ static int stm32_ifup(struct net_driver_s *dev)
   up_enable_irq(STM32_IRQ_ETH);
 
   stm32_checksetup();
+  netdev_carrier_on(dev);
   return OK;
 }
 
@@ -2544,6 +2545,7 @@ static int stm32_ifdown(struct net_driver_s *dev)
   /* Mark the device "down" */
 
   priv->ifup = false;
+  netdev_carrier_off(dev);
   leave_critical_section(flags);
   return OK;
 }

Reply via email to