From bdde180d7ab07142098e2a8534784d05906a6b36 Mon Sep 17 00:00:00 2001 From: p-szafonimateusz Date: Wed, 4 Jun 2025 12:18:22 +0200 Subject: [PATCH] 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 --- 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 c87ae3a5f4f..567fdf38f01 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 778c513af29..f20f4ec8baa 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 */