net: rds: use this_cpu_* per-cpu helper
Signed-off-by: Shan Wei <davidshan@tencent.com> Reviewed-by: Christoph Lameter <cl@linux.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
					parent
					
						
							
								1f743b0765
							
						
					
				
			
			
				commit
				
					
						ae4b46e9d7
					
				
			
		
					 2 changed files with 14 additions and 12 deletions
				
			
		|  | @ -50,7 +50,7 @@ struct rds_ib_cache_head { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| struct rds_ib_refill_cache { | struct rds_ib_refill_cache { | ||||||
| 	struct rds_ib_cache_head *percpu; | 	struct rds_ib_cache_head __percpu *percpu; | ||||||
| 	struct list_head	 *xfer; | 	struct list_head	 *xfer; | ||||||
| 	struct list_head	 *ready; | 	struct list_head	 *ready; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -418,20 +418,21 @@ static void rds_ib_recv_cache_put(struct list_head *new_item, | ||||||
| 				 struct rds_ib_refill_cache *cache) | 				 struct rds_ib_refill_cache *cache) | ||||||
| { | { | ||||||
| 	unsigned long flags; | 	unsigned long flags; | ||||||
| 	struct rds_ib_cache_head *chp; |  | ||||||
| 	struct list_head *old; | 	struct list_head *old; | ||||||
|  | 	struct list_head __percpu *chpfirst; | ||||||
| 
 | 
 | ||||||
| 	local_irq_save(flags); | 	local_irq_save(flags); | ||||||
| 
 | 
 | ||||||
| 	chp = per_cpu_ptr(cache->percpu, smp_processor_id()); | 	chpfirst = __this_cpu_read(cache->percpu->first); | ||||||
| 	if (!chp->first) | 	if (!chpfirst) | ||||||
| 		INIT_LIST_HEAD(new_item); | 		INIT_LIST_HEAD(new_item); | ||||||
| 	else /* put on front */ | 	else /* put on front */ | ||||||
| 		list_add_tail(new_item, chp->first); | 		list_add_tail(new_item, chpfirst); | ||||||
| 	chp->first = new_item; |  | ||||||
| 	chp->count++; |  | ||||||
| 
 | 
 | ||||||
| 	if (chp->count < RDS_IB_RECYCLE_BATCH_COUNT) | 	__this_cpu_write(chpfirst, new_item); | ||||||
|  | 	__this_cpu_inc(cache->percpu->count); | ||||||
|  | 
 | ||||||
|  | 	if (__this_cpu_read(cache->percpu->count) < RDS_IB_RECYCLE_BATCH_COUNT) | ||||||
| 		goto end; | 		goto end; | ||||||
| 
 | 
 | ||||||
| 	/*
 | 	/*
 | ||||||
|  | @ -443,12 +444,13 @@ static void rds_ib_recv_cache_put(struct list_head *new_item, | ||||||
| 	do { | 	do { | ||||||
| 		old = xchg(&cache->xfer, NULL); | 		old = xchg(&cache->xfer, NULL); | ||||||
| 		if (old) | 		if (old) | ||||||
| 			list_splice_entire_tail(old, chp->first); | 			list_splice_entire_tail(old, chpfirst); | ||||||
| 		old = cmpxchg(&cache->xfer, NULL, chp->first); | 		old = cmpxchg(&cache->xfer, NULL, chpfirst); | ||||||
| 	} while (old); | 	} while (old); | ||||||
| 
 | 
 | ||||||
| 	chp->first = NULL; | 
 | ||||||
| 	chp->count = 0; | 	__this_cpu_write(chpfirst, NULL); | ||||||
|  | 	__this_cpu_write(cache->percpu->count, 0); | ||||||
| end: | end: | ||||||
| 	local_irq_restore(flags); | 	local_irq_restore(flags); | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Shan Wei
				Shan Wei