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

commit bdde180d7ab07142098e2a8534784d05906a6b36
Author: p-szafonimateusz <p-szafonimate...@xiaomi.com>
AuthorDate: Wed Jun 4 12:18:22 2025 +0200

    drivers/net/{e1000|igc}: disable TX by modify only TX enable bit
    
    disable TX by modify only TX enable bit, otherwise we lose TX configuration
    
    Signed-off-by: p-szafonimateusz <p-szafonimate...@xiaomi.com>
---
 drivers/net/e1000.c | 7 +++++--
 drivers/net/igc.c   | 7 +++++--
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c
index c87ae3a5f4..567fdf38f0 100644
--- a/drivers/net/e1000.c
+++ b/drivers/net/e1000.c
@@ -1161,7 +1161,8 @@ static int e1000_rmmac(FAR struct netdev_lowerhalf_s *dev,
 
 static void e1000_disable(FAR struct e1000_driver_s *priv)
 {
-  int i = 0;
+  uint32_t regval;
+  int      i = 0;
 
   /* Disable interrupts */
 
@@ -1170,7 +1171,9 @@ static void e1000_disable(FAR struct e1000_driver_s *priv)
 
   /* Disable Transmitter */
 
-  e1000_putreg_mem(priv, E1000_TCTL, 0);
+  regval = e1000_getreg_mem(priv, E1000_TCTL);
+  regval &= ~E1000_TCTL_EN;
+  e1000_putreg_mem(priv, E1000_TCTL, regval);
 
   /* Disable Receiver */
 
diff --git a/drivers/net/igc.c b/drivers/net/igc.c
index 778c513af2..f20f4ec8ba 100644
--- a/drivers/net/igc.c
+++ b/drivers/net/igc.c
@@ -1042,7 +1042,8 @@ static int igc_rmmac(FAR struct netdev_lowerhalf_s *dev,
 
 static void igc_disable(FAR struct igc_driver_s *priv)
 {
-  int i = 0;
+  uint32_t regval;
+  int      i = 0;
 
   /* Disable interrupts */
 
@@ -1052,7 +1053,9 @@ static void igc_disable(FAR struct igc_driver_s *priv)
 
   /* Disable Transmitter */
 
-  igc_putreg_mem(priv, IGC_TCTL, 0);
+  regval = igc_getreg_mem(priv, IGC_TCTL);
+  regval &= ~IGC_TCTL_EN;
+  igc_putreg_mem(priv, IGC_TCTL, regval);
 
   /* Disable Receiver */
 

Reply via email to