aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/port.c
diff options
context:
space:
mode:
authorAllan Stephens <allan.stephens@windriver.com>2011-06-01 16:21:12 -0400
committerPaul Gortmaker <paul.gortmaker@windriver.com>2011-06-24 16:18:18 -0400
commite4a0aee47e1823025972b8f3defde432e485b7b9 (patch)
treec44e11954b27ff132612e877b42dffd5ed5709a7 /net/tipc/port.c
parentf55b564054e35dcd171e1191a477327528271f95 (diff)
tipc: Optimize creation of connection protocol messages
Simplifies the creation of connection protocol messages by eliminating the passing of information that is no longer required, is constant, or is contained within the port structure that is issuing the message. Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Diffstat (limited to 'net/tipc/port.c')
-rw-r--r--net/tipc/port.c48
1 files changed, 12 insertions, 36 deletions
diff --git a/net/tipc/port.c b/net/tipc/port.c
index ab0a8e97e315..54d812a5a4d9 100644
--- a/net/tipc/port.c
+++ b/net/tipc/port.c
@@ -327,14 +327,12 @@ int tipc_set_portunreturnable(u32 ref, unsigned int isunrejectable)
327} 327}
328 328
329/* 329/*
330 * port_build_proto_msg(): build a port level protocol 330 * port_build_proto_msg(): create connection protocol message for port
331 * or a connection abortion message. Called with 331 *
332 * tipc_port lock on. 332 * On entry the port must be locked and connected.
333 */ 333 */
334static struct sk_buff *port_build_proto_msg(u32 destport, u32 destnode, 334static struct sk_buff *port_build_proto_msg(struct tipc_port *p_ptr,
335 u32 origport, u32 orignode, 335 u32 type, u32 ack)
336 u32 usr, u32 type, u32 err,
337 u32 ack)
338{ 336{
339 struct sk_buff *buf; 337 struct sk_buff *buf;
340 struct tipc_msg *msg; 338 struct tipc_msg *msg;
@@ -342,11 +340,10 @@ static struct sk_buff *port_build_proto_msg(u32 destport, u32 destnode,
342 buf = tipc_buf_acquire(INT_H_SIZE); 340 buf = tipc_buf_acquire(INT_H_SIZE);
343 if (buf) { 341 if (buf) {
344 msg = buf_msg(buf); 342 msg = buf_msg(buf);
345 tipc_msg_init(msg, usr, type, INT_H_SIZE, destnode); 343 tipc_msg_init(msg, CONN_MANAGER, type, INT_H_SIZE,
346 msg_set_errcode(msg, err); 344 port_peernode(p_ptr));
347 msg_set_destport(msg, destport); 345 msg_set_destport(msg, port_peerport(p_ptr));
348 msg_set_origport(msg, origport); 346 msg_set_origport(msg, p_ptr->ref);
349 msg_set_orignode(msg, orignode);
350 msg_set_msgcnt(msg, ack); 347 msg_set_msgcnt(msg, ack);
351 } 348 }
352 return buf; 349 return buf;
@@ -458,14 +455,7 @@ static void port_timeout(unsigned long ref)
458 if (p_ptr->probing_state == PROBING) { 455 if (p_ptr->probing_state == PROBING) {
459 buf = port_build_self_abort_msg(p_ptr, TIPC_ERR_NO_PORT); 456 buf = port_build_self_abort_msg(p_ptr, TIPC_ERR_NO_PORT);
460 } else { 457 } else {
461 buf = port_build_proto_msg(port_peerport(p_ptr), 458 buf = port_build_proto_msg(p_ptr, CONN_PROBE, 0);
462 port_peernode(p_ptr),
463 p_ptr->ref,
464 tipc_own_addr,
465 CONN_MANAGER,
466 CONN_PROBE,
467 TIPC_OK,
468 0);
469 p_ptr->probing_state = PROBING; 459 p_ptr->probing_state = PROBING;
470 k_start_timer(&p_ptr->timer, p_ptr->probing_interval); 460 k_start_timer(&p_ptr->timer, p_ptr->probing_interval);
471 } 461 }
@@ -567,14 +557,7 @@ void tipc_port_recv_proto_msg(struct sk_buff *buf)
567 } 557 }
568 break; 558 break;
569 case CONN_PROBE: 559 case CONN_PROBE:
570 r_buf = port_build_proto_msg(origport, 560 r_buf = port_build_proto_msg(p_ptr, CONN_PROBE_REPLY, 0);
571 orignode,
572 destport,
573 tipc_own_addr,
574 CONN_MANAGER,
575 CONN_PROBE_REPLY,
576 TIPC_OK,
577 0);
578 break; 561 break;
579 default: 562 default:
580 /* CONN_PROBE_REPLY or unrecognized - no action required */ 563 /* CONN_PROBE_REPLY or unrecognized - no action required */
@@ -899,14 +882,7 @@ void tipc_acknowledge(u32 ref, u32 ack)
899 return; 882 return;
900 if (p_ptr->connected) { 883 if (p_ptr->connected) {
901 p_ptr->conn_unacked -= ack; 884 p_ptr->conn_unacked -= ack;
902 buf = port_build_proto_msg(port_peerport(p_ptr), 885 buf = port_build_proto_msg(p_ptr, CONN_ACK, ack);
903 port_peernode(p_ptr),
904 ref,
905 tipc_own_addr,
906 CONN_MANAGER,
907 CONN_ACK,
908 TIPC_OK,
909 ack);
910 } 886 }
911 tipc_port_unlock(p_ptr); 887 tipc_port_unlock(p_ptr);
912 tipc_net_route_msg(buf); 888 tipc_net_route_msg(buf);