[OpenWrt-Devel] [PATCH] [ 2/5] ramips: change ethernet napi interrupt sequence

michael lee igvtee at gmail.com
Tue Jun 2 09:06:42 EDT 2015


when open device. first ready napi software rx.
then enable hardware interrupt.
final start software tx queue to send data.

Signed-off-by: michael lee <igvtee at gmail.com>
---
 .../ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c    | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
index 60c3c91..bef715b 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
+++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
@@ -1153,7 +1153,6 @@ static int fe_open(struct net_device *dev)
 		goto err_out;
 
 	spin_lock_irqsave(&priv->page_lock, flags);
-	napi_enable(&priv->rx_napi);
 
 	val = FE_TX_WB_DDONE | FE_RX_DMA_EN | FE_TX_DMA_EN;
 	if (priv->flags & FE_FLAG_RX_2B_OFFSET)
@@ -1169,8 +1168,9 @@ static int fe_open(struct net_device *dev)
 	if (priv->soc->has_carrier && priv->soc->has_carrier(priv))
 		netif_carrier_on(dev);
 
-	netif_start_queue(dev);
+	napi_enable(&priv->rx_napi);
 	fe_int_enable(priv->soc->tx_int | priv->soc->rx_int);
+	netif_start_queue(dev);
 
 	return 0;
 
@@ -1185,15 +1185,14 @@ static int fe_stop(struct net_device *dev)
 	unsigned long flags;
 	int i;
 
-	fe_int_disable(priv->soc->tx_int | priv->soc->rx_int);
-
 	netif_tx_disable(dev);
+	fe_int_disable(priv->soc->tx_int | priv->soc->rx_int);
+	napi_disable(&priv->rx_napi);
 
 	if (priv->phy)
 		priv->phy->stop(priv);
 
 	spin_lock_irqsave(&priv->page_lock, flags);
-	napi_disable(&priv->rx_napi);
 
 	fe_reg_w32(fe_reg_r32(FE_REG_PDMA_GLO_CFG) &
 		     ~(FE_TX_WB_DDONE | FE_RX_DMA_EN | FE_TX_DMA_EN),
-- 
2.0.5
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list