mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	ar8216: reduce latency by inserting scheduling points into code hogging the CPU
Should reduce network related latency caused by accessing MIB counters Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
		
							parent
							
								
									eda27d7557
								
							
						
					
					
						commit
						17a955d4d7
					
				@ -355,6 +355,7 @@ ar8xxx_reg_wait(struct ar8xxx_priv *priv, u32 reg, u32 mask, u32 val,
 | 
			
		||||
			return 0;
 | 
			
		||||
 | 
			
		||||
		usleep_range(1000, 2000);
 | 
			
		||||
		cond_resched();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return -ETIMEDOUT;
 | 
			
		||||
@ -426,6 +427,7 @@ ar8xxx_mib_fetch_port_stat(struct ar8xxx_priv *priv, int port, bool flush)
 | 
			
		||||
			mib_stats[i] = 0;
 | 
			
		||||
		else
 | 
			
		||||
			mib_stats[i] += t;
 | 
			
		||||
		cond_resched();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -565,6 +567,7 @@ ar8216_wait_bit(struct ar8xxx_priv *priv, int reg, u32 mask, u32 val)
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
		udelay(10);
 | 
			
		||||
		cond_resched();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pr_err("ar8216: timeout on reg %08x: %08x & %08x != %08x\n",
 | 
			
		||||
@ -730,8 +733,10 @@ ar8216_wait_atu_ready(struct ar8xxx_priv *priv, u16 r2, u16 r1)
 | 
			
		||||
{
 | 
			
		||||
	int timeout = 20;
 | 
			
		||||
 | 
			
		||||
	while (ar8xxx_mii_read32(priv, r2, r1) & AR8216_ATU_ACTIVE && --timeout)
 | 
			
		||||
	while (ar8xxx_mii_read32(priv, r2, r1) & AR8216_ATU_ACTIVE && --timeout) {
 | 
			
		||||
		udelay(10);
 | 
			
		||||
		cond_resched();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!timeout)
 | 
			
		||||
		pr_err("ar8216: timeout waiting for atu to become ready\n");
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user