tipc: Un-inline port routine for processing incoming messages
Converts a non-trivial routine from inline to non-inline form to avoid bloating the TIPC code base with 6 copies of its body. This change is essentially cosmetic, and doesn't change existing TIPC behavior. Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
This commit is contained in:
		
							parent
							
								
									b58343f9ea
								
							
						
					
					
						commit
						9b641251ae
					
				| @ -1133,6 +1133,49 @@ int tipc_shutdown(u32 ref) | ||||
| 	return tipc_disconnect(ref); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  * tipc_port_recv_msg - receive message from lower layer and deliver to port user | ||||
|  */ | ||||
| 
 | ||||
| int tipc_port_recv_msg(struct sk_buff *buf) | ||||
| { | ||||
| 	struct tipc_port *p_ptr; | ||||
| 	struct tipc_msg *msg = buf_msg(buf); | ||||
| 	u32 destport = msg_destport(msg); | ||||
| 	u32 dsz = msg_data_sz(msg); | ||||
| 	u32 err; | ||||
| 
 | ||||
| 	/* forward unresolved named message */ | ||||
| 	if (unlikely(!destport)) { | ||||
| 		tipc_net_route_msg(buf); | ||||
| 		return dsz; | ||||
| 	} | ||||
| 
 | ||||
| 	/* validate destination & pass to port, otherwise reject message */ | ||||
| 	p_ptr = tipc_port_lock(destport); | ||||
| 	if (likely(p_ptr)) { | ||||
| 		if (likely(p_ptr->connected)) { | ||||
| 			if ((unlikely(msg_origport(msg) != | ||||
| 				      tipc_peer_port(p_ptr))) || | ||||
| 			    (unlikely(msg_orignode(msg) != | ||||
| 				      tipc_peer_node(p_ptr))) || | ||||
| 			    (unlikely(!msg_connected(msg)))) { | ||||
| 				err = TIPC_ERR_NO_PORT; | ||||
| 				tipc_port_unlock(p_ptr); | ||||
| 				goto reject; | ||||
| 			} | ||||
| 		} | ||||
| 		err = p_ptr->dispatcher(p_ptr, buf); | ||||
| 		tipc_port_unlock(p_ptr); | ||||
| 		if (likely(!err)) | ||||
| 			return dsz; | ||||
| 	} else { | ||||
| 		err = TIPC_ERR_NO_PORT; | ||||
| 	} | ||||
| reject: | ||||
| 	return tipc_reject_msg(buf, err); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  *  tipc_port_recv_sections(): Concatenate and deliver sectioned | ||||
|  *                        message for this node. | ||||
|  | ||||
| @ -205,6 +205,7 @@ int tipc_disconnect_port(struct tipc_port *tp_ptr); | ||||
| /*
 | ||||
|  * TIPC messaging routines | ||||
|  */ | ||||
| int tipc_port_recv_msg(struct sk_buff *buf); | ||||
| int tipc_send(u32 portref, unsigned int num_sect, struct iovec const *msg_sect, | ||||
| 	      unsigned int total_len); | ||||
| 
 | ||||
| @ -271,45 +272,4 @@ static inline int tipc_port_congested(struct tipc_port *p_ptr) | ||||
| 	return (p_ptr->sent - p_ptr->acked) >= (TIPC_FLOW_CONTROL_WIN * 2); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  * tipc_port_recv_msg - receive message from lower layer and deliver to port user | ||||
|  */ | ||||
| 
 | ||||
| static inline int tipc_port_recv_msg(struct sk_buff *buf) | ||||
| { | ||||
| 	struct tipc_port *p_ptr; | ||||
| 	struct tipc_msg *msg = buf_msg(buf); | ||||
| 	u32 destport = msg_destport(msg); | ||||
| 	u32 dsz = msg_data_sz(msg); | ||||
| 	u32 err; | ||||
| 
 | ||||
| 	/* forward unresolved named message */ | ||||
| 	if (unlikely(!destport)) { | ||||
| 		tipc_net_route_msg(buf); | ||||
| 		return dsz; | ||||
| 	} | ||||
| 
 | ||||
| 	/* validate destination & pass to port, otherwise reject message */ | ||||
| 	p_ptr = tipc_port_lock(destport); | ||||
| 	if (likely(p_ptr)) { | ||||
| 		if (likely(p_ptr->connected)) { | ||||
| 			if ((unlikely(msg_origport(msg) != tipc_peer_port(p_ptr))) || | ||||
| 			    (unlikely(msg_orignode(msg) != tipc_peer_node(p_ptr))) || | ||||
| 			    (unlikely(!msg_connected(msg)))) { | ||||
| 				err = TIPC_ERR_NO_PORT; | ||||
| 				tipc_port_unlock(p_ptr); | ||||
| 				goto reject; | ||||
| 			} | ||||
| 		} | ||||
| 		err = p_ptr->dispatcher(p_ptr, buf); | ||||
| 		tipc_port_unlock(p_ptr); | ||||
| 		if (likely(!err)) | ||||
| 			return dsz; | ||||
| 	} else { | ||||
| 		err = TIPC_ERR_NO_PORT; | ||||
| 	} | ||||
| reject: | ||||
| 	return tipc_reject_msg(buf, err); | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user