}
 
 /*
- * port_build_proto_msg(): build a port level protocol
- * or a connection abortion message. Called with
- * tipc_port lock on.
+ * port_build_proto_msg(): create connection protocol message for port
+ *
+ * On entry the port must be locked and connected.
  */
-static struct sk_buff *port_build_proto_msg(u32 destport, u32 destnode,
-                                           u32 origport, u32 orignode,
-                                           u32 usr, u32 type, u32 err,
-                                           u32 ack)
+static struct sk_buff *port_build_proto_msg(struct tipc_port *p_ptr,
+                                           u32 type, u32 ack)
 {
        struct sk_buff *buf;
        struct tipc_msg *msg;
        buf = tipc_buf_acquire(INT_H_SIZE);
        if (buf) {
                msg = buf_msg(buf);
-               tipc_msg_init(msg, usr, type, INT_H_SIZE, destnode);
-               msg_set_errcode(msg, err);
-               msg_set_destport(msg, destport);
-               msg_set_origport(msg, origport);
-               msg_set_orignode(msg, orignode);
+               tipc_msg_init(msg, CONN_MANAGER, type, INT_H_SIZE,
+                             port_peernode(p_ptr));
+               msg_set_destport(msg, port_peerport(p_ptr));
+               msg_set_origport(msg, p_ptr->ref);
                msg_set_msgcnt(msg, ack);
        }
        return buf;
        if (p_ptr->probing_state == PROBING) {
                buf = port_build_self_abort_msg(p_ptr, TIPC_ERR_NO_PORT);
        } else {
-               buf = port_build_proto_msg(port_peerport(p_ptr),
-                                          port_peernode(p_ptr),
-                                          p_ptr->ref,
-                                          tipc_own_addr,
-                                          CONN_MANAGER,
-                                          CONN_PROBE,
-                                          TIPC_OK,
-                                          0);
+               buf = port_build_proto_msg(p_ptr, CONN_PROBE, 0);
                p_ptr->probing_state = PROBING;
                k_start_timer(&p_ptr->timer, p_ptr->probing_interval);
        }
                }
                break;
        case CONN_PROBE:
-               r_buf = port_build_proto_msg(origport,
-                                            orignode,
-                                            destport,
-                                            tipc_own_addr,
-                                            CONN_MANAGER,
-                                            CONN_PROBE_REPLY,
-                                            TIPC_OK,
-                                            0);
+               r_buf = port_build_proto_msg(p_ptr, CONN_PROBE_REPLY, 0);
                break;
        default:
                /* CONN_PROBE_REPLY or unrecognized - no action required */
                return;
        if (p_ptr->connected) {
                p_ptr->conn_unacked -= ack;
-               buf = port_build_proto_msg(port_peerport(p_ptr),
-                                          port_peernode(p_ptr),
-                                          ref,
-                                          tipc_own_addr,
-                                          CONN_MANAGER,
-                                          CONN_ACK,
-                                          TIPC_OK,
-                                          ack);
+               buf = port_build_proto_msg(p_ptr, CONN_ACK, ack);
        }
        tipc_port_unlock(p_ptr);
        tipc_net_route_msg(buf);