mirror of
https://github.com/apache/nuttx.git
synced 2026-05-21 04:52:02 +08:00
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:
committed by
Xiang Xiao
parent
eea2975b36
commit
bccee707d6
+8
-8
@@ -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
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user