net: macb: Re-enable RX interrupt only when RX is done
When data is received during the driver processing received data the NAPI is re-scheduled. In that case the RX interrupt should not be re-enabled. Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
					parent
					
						
							
								6a027b705f
							
						
					
				
			
			
				commit
				
					
						02f7a34f34
					
				
			
		
					 1 changed files with 6 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -891,16 +891,15 @@ static int macb_poll(struct napi_struct *napi, int budget)
 | 
			
		|||
	if (work_done < budget) {
 | 
			
		||||
		napi_complete(napi);
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * We've done what we can to clean the buffers. Make sure we
 | 
			
		||||
		 * get notified when new packets arrive.
 | 
			
		||||
		 */
 | 
			
		||||
		macb_writel(bp, IER, MACB_RX_INT_FLAGS);
 | 
			
		||||
 | 
			
		||||
		/* Packets received while interrupts were disabled */
 | 
			
		||||
		status = macb_readl(bp, RSR);
 | 
			
		||||
		if (unlikely(status))
 | 
			
		||||
		if (unlikely(status)) {
 | 
			
		||||
			if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
 | 
			
		||||
				macb_writel(bp, ISR, MACB_BIT(RCOMP));
 | 
			
		||||
			napi_reschedule(napi);
 | 
			
		||||
		} else {
 | 
			
		||||
			macb_writel(bp, IER, MACB_RX_INT_FLAGS);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* TODO: Handle errors */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue