mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-03 18:20:25 +02:00 
			
		
		
		
	sch_drr: update backlog as well
Fixes: 2ccccf5fb4 ("net_sched: update hierarchical backlog too")
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
			
			
This commit is contained in:
		
							parent
							
								
									6529d75ad9
								
							
						
					
					
						commit
						6a73b571b6
					
				
					 1 changed files with 4 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -375,6 +375,7 @@ static int drr_enqueue(struct sk_buff *skb, struct Qdisc *sch)
 | 
			
		|||
		cl->deficit = cl->quantum;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	qdisc_qstats_backlog_inc(sch, skb);
 | 
			
		||||
	sch->q.qlen++;
 | 
			
		||||
	return err;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -407,6 +408,7 @@ static struct sk_buff *drr_dequeue(struct Qdisc *sch)
 | 
			
		|||
 | 
			
		||||
			bstats_update(&cl->bstats, skb);
 | 
			
		||||
			qdisc_bstats_update(sch, skb);
 | 
			
		||||
			qdisc_qstats_backlog_dec(sch, skb);
 | 
			
		||||
			sch->q.qlen--;
 | 
			
		||||
			return skb;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -428,6 +430,7 @@ static unsigned int drr_drop(struct Qdisc *sch)
 | 
			
		|||
		if (cl->qdisc->ops->drop) {
 | 
			
		||||
			len = cl->qdisc->ops->drop(cl->qdisc);
 | 
			
		||||
			if (len > 0) {
 | 
			
		||||
				sch->qstats.backlog -= len;
 | 
			
		||||
				sch->q.qlen--;
 | 
			
		||||
				if (cl->qdisc->q.qlen == 0)
 | 
			
		||||
					list_del(&cl->alist);
 | 
			
		||||
| 
						 | 
				
			
			@ -463,6 +466,7 @@ static void drr_reset_qdisc(struct Qdisc *sch)
 | 
			
		|||
			qdisc_reset(cl->qdisc);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	sch->qstats.backlog = 0;
 | 
			
		||||
	sch->q.qlen = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue