forked from mirrors/linux
		
	gen_stats: Add gnet_stats_add_queue().
This function will replace __gnet_stats_copy_queue(). It reads all arguments and adds them into the passed gnet_stats_queue argument. In contrast to __gnet_stats_copy_queue() it also copies the qlen member. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									fbf307c89e
								
							
						
					
					
						commit
						448e163f8b
					
				
					 2 changed files with 35 additions and 0 deletions
				
			
		|  | @ -62,6 +62,9 @@ int gnet_stats_copy_queue(struct gnet_dump *d, | |||
| void __gnet_stats_copy_queue(struct gnet_stats_queue *qstats, | ||||
| 			     const struct gnet_stats_queue __percpu *cpu_q, | ||||
| 			     const struct gnet_stats_queue *q, __u32 qlen); | ||||
| void gnet_stats_add_queue(struct gnet_stats_queue *qstats, | ||||
| 			  const struct gnet_stats_queue __percpu *cpu_q, | ||||
| 			  const struct gnet_stats_queue *q); | ||||
| int gnet_stats_copy_app(struct gnet_dump *d, void *st, int len); | ||||
| 
 | ||||
| int gnet_stats_finish_copy(struct gnet_dump *d); | ||||
|  |  | |||
|  | @ -321,6 +321,38 @@ void __gnet_stats_copy_queue(struct gnet_stats_queue *qstats, | |||
| } | ||||
| EXPORT_SYMBOL(__gnet_stats_copy_queue); | ||||
| 
 | ||||
| static void gnet_stats_add_queue_cpu(struct gnet_stats_queue *qstats, | ||||
| 				     const struct gnet_stats_queue __percpu *q) | ||||
| { | ||||
| 	int i; | ||||
| 
 | ||||
| 	for_each_possible_cpu(i) { | ||||
| 		const struct gnet_stats_queue *qcpu = per_cpu_ptr(q, i); | ||||
| 
 | ||||
| 		qstats->qlen += qcpu->backlog; | ||||
| 		qstats->backlog += qcpu->backlog; | ||||
| 		qstats->drops += qcpu->drops; | ||||
| 		qstats->requeues += qcpu->requeues; | ||||
| 		qstats->overlimits += qcpu->overlimits; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void gnet_stats_add_queue(struct gnet_stats_queue *qstats, | ||||
| 			  const struct gnet_stats_queue __percpu *cpu, | ||||
| 			  const struct gnet_stats_queue *q) | ||||
| { | ||||
| 	if (cpu) { | ||||
| 		gnet_stats_add_queue_cpu(qstats, cpu); | ||||
| 	} else { | ||||
| 		qstats->qlen += q->qlen; | ||||
| 		qstats->backlog += q->backlog; | ||||
| 		qstats->drops += q->drops; | ||||
| 		qstats->requeues += q->requeues; | ||||
| 		qstats->overlimits += q->overlimits; | ||||
| 	} | ||||
| } | ||||
| EXPORT_SYMBOL(gnet_stats_add_queue); | ||||
| 
 | ||||
| /**
 | ||||
|  * gnet_stats_copy_queue - copy queue statistics into statistics TLV | ||||
|  * @d: dumping handle | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Sebastian Andrzej Siewior
						Sebastian Andrzej Siewior