drivers/net/{e1000|igc}: reset RX/TX rings after RX/TX disabled

reset RX/TX rings **after** RX/TX are disabled to make sure the rings are
not used by hardware when software modify rings state.

Signed-off-by: p-szafonimateusz <p-szafonimateusz@xiaomi.com>
This commit is contained in:
p-szafonimateusz
2025-06-03 11:49:21 +02:00
committed by Xiang Xiao
parent eea2975b36
commit bccee707d6
2 changed files with 16 additions and 16 deletions
+8 -8
View File
@@ -1168,14 +1168,6 @@ static void e1000_disable(FAR struct e1000_driver_s *priv)
{
int i = 0;
/* Reset Tx tail */
e1000_txclean(priv);
/* Reset Rx tail */
e1000_rxclean(priv);
/* Disable interrupts */
e1000_putreg_mem(priv, E1000_IMC, priv->irqs);
@@ -1189,6 +1181,14 @@ static void e1000_disable(FAR struct e1000_driver_s *priv)
e1000_putreg_mem(priv, E1000_RCTL, 0);
/* Reset Tx tail */
e1000_txclean(priv);
/* Reset Rx tail */
e1000_rxclean(priv);
/* Free RX packets */
for (i = 0; i < E1000_RX_DESC; i += 1)
+8 -8
View File
@@ -1048,14 +1048,6 @@ static void igc_disable(FAR struct igc_driver_s *priv)
{
int i = 0;
/* Reset Tx tail */
igc_txclean(priv);
/* Reset Rx tail */
igc_rxclean(priv);
/* Disable interrupts */
igc_putreg_mem(priv, IGC_EIMC, IGC_MSIX_EIMS);
@@ -1070,6 +1062,14 @@ static void igc_disable(FAR struct igc_driver_s *priv)
igc_putreg_mem(priv, IGC_RCTL, 0);
/* Reset Tx tail */
igc_txclean(priv);
/* Reset Rx tail */
igc_rxclean(priv);
/* Free RX packets */
for (i = 0; i < IGC_RX_DESC; i += 1)