OpenWRT changed the default fq_codel sch->limit from 10240 to 1024, without also adjusting q->flows_cnt. Eric Dumazet explains below that you must also adjust the buckets (q->flows_cnt) for this not to break. Eric explains: Limit of 1024 packets and 1024 flows is not wise I think. (If all buckets are in use, each bucket has a virtual queue of 1 packet, which is almost the same than having no queue at all) I suggest to have at least 8 packets per bucket, to let Codel have a chance to trigger. So you could either reduce number of buckets to 128 (if memory is tight), or increase limit to 8192. flows_cnt is now set to 1024/8=128 Signed-off-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
		
			
				
	
	
		
			14 lines
		
	
	
		
			386 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			14 lines
		
	
	
		
			386 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- a/net/sched/sch_fq_codel.c
 | 
						|
+++ b/net/sched/sch_fq_codel.c
 | 
						|
@@ -412,8 +412,8 @@ static int fq_codel_init(struct Qdisc *s
 | 
						|
 	struct fq_codel_sched_data *q = qdisc_priv(sch);
 | 
						|
 	int i;
 | 
						|
 
 | 
						|
-	sch->limit = 10*1024;
 | 
						|
-	q->flows_cnt = 1024;
 | 
						|
+	sch->limit = 1024;
 | 
						|
+	q->flows_cnt = 128;
 | 
						|
 	q->quantum = psched_mtu(qdisc_dev(sch));
 | 
						|
 	q->perturbation = prandom_u32();
 | 
						|
 	INIT_LIST_HEAD(&q->new_flows);
 |