mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	* fixes NAND * adds latest ethernet patches Signed-off-by: John Crispin <john@phrozen.org>
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 441d87495f33fd444a2b2a16f6df07892dac3f89 Mon Sep 17 00:00:00 2001
 | |
| From: John Crispin <john@phrozen.org>
 | |
| Date: Tue, 3 May 2016 04:12:35 +0200
 | |
| Subject: [PATCH 094/102] net-next: mediatek: don't use intermediate variables
 | |
|  to store IRQ masks
 | |
| 
 | |
| The code currently uses variables to store and never modify the bit masks
 | |
| of interrupts. This is legacy code from an early version of the driver
 | |
| that supported MIPS based SoCs where the IRQ bits depended on the actual
 | |
| SoC. As the bits are the same for all ARM based SoC using this driver we
 | |
| can remove the intermediate variables.
 | |
| 
 | |
| Signed-off-by: John Crispin <john@phrozen.org>
 | |
| ---
 | |
|  drivers/net/ethernet/mediatek/mtk_eth_soc.c |   22 ++++++++++------------
 | |
|  1 file changed, 10 insertions(+), 12 deletions(-)
 | |
| 
 | |
| diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 | |
| index 6a9fbde..13ee15f 100644
 | |
| --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 | |
| +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 | |
| @@ -806,7 +806,7 @@ drop:
 | |
|  }
 | |
|  
 | |
|  static int mtk_poll_rx(struct napi_struct *napi, int budget,
 | |
| -		       struct mtk_eth *eth, u32 rx_intr)
 | |
| +		       struct mtk_eth *eth)
 | |
|  {
 | |
|  	struct mtk_rx_ring *ring = ð->rx_ring;
 | |
|  	int idx = ring->calc_idx;
 | |
| @@ -894,7 +894,7 @@ release_desc:
 | |
|  	}
 | |
|  
 | |
|  	if (done < budget)
 | |
| -		mtk_w32(eth, rx_intr, MTK_QMTK_INT_STATUS);
 | |
| +		mtk_w32(eth, MTK_RX_DONE_INT, MTK_QMTK_INT_STATUS);
 | |
|  
 | |
|  	return done;
 | |
|  }
 | |
| @@ -977,28 +977,26 @@ static int mtk_poll_tx(struct mtk_eth *eth, int budget, bool *tx_again)
 | |
|  static int mtk_poll(struct napi_struct *napi, int budget)
 | |
|  {
 | |
|  	struct mtk_eth *eth = container_of(napi, struct mtk_eth, rx_napi);
 | |
| -	u32 status, status2, mask, tx_intr, rx_intr, status_intr;
 | |
| +	u32 status, status2, mask;
 | |
|  	int tx_done, rx_done;
 | |
|  	bool tx_again = false;
 | |
|  
 | |
|  	status = mtk_r32(eth, MTK_QMTK_INT_STATUS);
 | |
|  	status2 = mtk_r32(eth, MTK_INT_STATUS2);
 | |
| -	tx_intr = MTK_TX_DONE_INT;
 | |
| -	rx_intr = MTK_RX_DONE_INT;
 | |
| -	status_intr = (MTK_GDM1_AF | MTK_GDM2_AF);
 | |
|  	tx_done = 0;
 | |
|  	rx_done = 0;
 | |
|  	tx_again = 0;
 | |
|  
 | |
| -	if (status & tx_intr)
 | |
| +	if (status & MTK_TX_DONE_INT)
 | |
|  		tx_done = mtk_poll_tx(eth, budget, &tx_again);
 | |
|  
 | |
| -	if (status & rx_intr)
 | |
| -		rx_done = mtk_poll_rx(napi, budget, eth, rx_intr);
 | |
| +	if (status & MTK_RX_DONE_INT)
 | |
| +		rx_done = mtk_poll_rx(napi, budget, eth);
 | |
|  
 | |
| -	if (unlikely(status2 & status_intr)) {
 | |
| +	if (unlikely(status2 & (MTK_GDM1_AF | MTK_GDM2_AF))) {
 | |
|  		mtk_stats_update(eth);
 | |
| -		mtk_w32(eth, status_intr, MTK_INT_STATUS2);
 | |
| +		mtk_w32(eth, (MTK_GDM1_AF | MTK_GDM2_AF),
 | |
| +			MTK_INT_STATUS2);
 | |
|  	}
 | |
|  
 | |
|  	if (unlikely(netif_msg_intr(eth))) {
 | |
| @@ -1016,7 +1014,7 @@ static int mtk_poll(struct napi_struct *napi, int budget)
 | |
|  		return budget;
 | |
|  
 | |
|  	napi_complete(napi);
 | |
| -	mtk_irq_enable(eth, tx_intr | rx_intr);
 | |
| +	mtk_irq_enable(eth, MTK_RX_DONE_INT | MTK_RX_DONE_INT);
 | |
|  
 | |
|  	return rx_done;
 | |
|  }
 | |
| -- 
 | |
| 1.7.10.4
 | |
| 
 |