mirror of
https://github.com/apache/nuttx.git
synced 2026-06-02 09:38:37 +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;
|
int i = 0;
|
||||||
|
|
||||||
/* Reset Tx tail */
|
|
||||||
|
|
||||||
e1000_txclean(priv);
|
|
||||||
|
|
||||||
/* Reset Rx tail */
|
|
||||||
|
|
||||||
e1000_rxclean(priv);
|
|
||||||
|
|
||||||
/* Disable interrupts */
|
/* Disable interrupts */
|
||||||
|
|
||||||
e1000_putreg_mem(priv, E1000_IMC, priv->irqs);
|
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);
|
e1000_putreg_mem(priv, E1000_RCTL, 0);
|
||||||
|
|
||||||
|
/* Reset Tx tail */
|
||||||
|
|
||||||
|
e1000_txclean(priv);
|
||||||
|
|
||||||
|
/* Reset Rx tail */
|
||||||
|
|
||||||
|
e1000_rxclean(priv);
|
||||||
|
|
||||||
/* Free RX packets */
|
/* Free RX packets */
|
||||||
|
|
||||||
for (i = 0; i < E1000_RX_DESC; i += 1)
|
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;
|
int i = 0;
|
||||||
|
|
||||||
/* Reset Tx tail */
|
|
||||||
|
|
||||||
igc_txclean(priv);
|
|
||||||
|
|
||||||
/* Reset Rx tail */
|
|
||||||
|
|
||||||
igc_rxclean(priv);
|
|
||||||
|
|
||||||
/* Disable interrupts */
|
/* Disable interrupts */
|
||||||
|
|
||||||
igc_putreg_mem(priv, IGC_EIMC, IGC_MSIX_EIMS);
|
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);
|
igc_putreg_mem(priv, IGC_RCTL, 0);
|
||||||
|
|
||||||
|
/* Reset Tx tail */
|
||||||
|
|
||||||
|
igc_txclean(priv);
|
||||||
|
|
||||||
|
/* Reset Rx tail */
|
||||||
|
|
||||||
|
igc_rxclean(priv);
|
||||||
|
|
||||||
/* Free RX packets */
|
/* Free RX packets */
|
||||||
|
|
||||||
for (i = 0; i < IGC_RX_DESC; i += 1)
|
for (i = 0; i < IGC_RX_DESC; i += 1)
|
||||||
|
|||||||
Reference in New Issue
Block a user