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 */