forked from mirrors/linux
		
	IB/rxe: optimize the function duplicate_request
In the function duplicate_request, the reference of skb can be increased to replace the function skb_clone. This will make rxe performace better and save memory. CC: Srinivas Eeda <srinivas.eeda@oracle.com> CC: Junxiao Bi <junxiao.bi@oracle.com> Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com> Reviewed-by: Bart Van Assche <bart.vanassche@wdc.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
		
							parent
							
								
									8f1a72c815
								
							
						
					
					
						commit
						2e47350789
					
				
					 1 changed files with 3 additions and 14 deletions
				
			
		| 
						 | 
				
			
			@ -1124,24 +1124,13 @@ static enum resp_states duplicate_request(struct rxe_qp *qp,
 | 
			
		|||
		/* Find the operation in our list of responder resources. */
 | 
			
		||||
		res = find_resource(qp, pkt->psn);
 | 
			
		||||
		if (res) {
 | 
			
		||||
			struct sk_buff *skb_copy;
 | 
			
		||||
 | 
			
		||||
			skb_copy = skb_clone(res->atomic.skb, GFP_ATOMIC);
 | 
			
		||||
			if (skb_copy) {
 | 
			
		||||
				rxe_add_ref(qp); /* for the new SKB */
 | 
			
		||||
			} else {
 | 
			
		||||
				pr_warn("Couldn't clone atomic resp\n");
 | 
			
		||||
				rc = RESPST_CLEANUP;
 | 
			
		||||
				goto out;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			skb_get(res->atomic.skb);
 | 
			
		||||
			/* Resend the result. */
 | 
			
		||||
			rc = rxe_xmit_packet(to_rdev(qp->ibqp.device), qp,
 | 
			
		||||
					     pkt, skb_copy);
 | 
			
		||||
					     pkt, res->atomic.skb);
 | 
			
		||||
			if (rc) {
 | 
			
		||||
				pr_err("Failed resending result. This flow is not handled - skb ignored\n");
 | 
			
		||||
				rxe_drop_ref(qp);
 | 
			
		||||
				kfree_skb(skb_copy);
 | 
			
		||||
				kfree_skb(res->atomic.skb);
 | 
			
		||||
				rc = RESPST_CLEANUP;
 | 
			
		||||
				goto out;
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue