spin_unlock_bh(&tipc_port_list_lock);
}
-void tipc_acknowledge(u32 ref, u32 ack)
-{
- struct tipc_port *p_ptr;
- struct sk_buff *buf = NULL;
- struct tipc_msg *msg;
-
- p_ptr = tipc_port_lock(ref);
- if (!p_ptr)
- return;
- if (p_ptr->connected)
- buf = tipc_msg_create(CONN_MANAGER, CONN_ACK, INT_H_SIZE,
- 0, tipc_port_peernode(p_ptr),
- tipc_own_addr, tipc_port_peerport(p_ptr),
- p_ptr->ref, TIPC_OK);
- tipc_port_unlock(p_ptr);
- if (!buf)
- return;
- msg = buf_msg(buf);
- msg_set_msgcnt(msg, ack);
- tipc_link_xmit(buf, msg_destnode(msg), msg_link_selector(msg));
-}
-
int tipc_publish(struct tipc_port *p_ptr, unsigned int scope,
struct tipc_name_seq const *seq)
{
u32 tipc_port_init(struct tipc_port *p_ptr,
const unsigned int importance);
-void tipc_acknowledge(u32 port_ref, u32 ack);
-
void tipc_port_destroy(struct tipc_port *p_ptr);
int tipc_publish(struct tipc_port *p_ptr, unsigned int scope,
return 0;
}
+static void tipc_sk_send_ack(struct tipc_port *port, uint ack)
+{
+ struct sk_buff *buf = NULL;
+ struct tipc_msg *msg;
+ u32 peer_port = tipc_port_peerport(port);
+ u32 dnode = tipc_port_peernode(port);
+
+ if (!port->connected)
+ return;
+ buf = tipc_msg_create(CONN_MANAGER, CONN_ACK, INT_H_SIZE, 0, dnode,
+ tipc_own_addr, peer_port, port->ref, TIPC_OK);
+ if (!buf)
+ return;
+ msg = buf_msg(buf);
+ msg_set_msgcnt(msg, ack);
+ tipc_link_xmit(buf, dnode, msg_link_selector(msg));
+}
+
static int tipc_wait_for_rcvmsg(struct socket *sock, long *timeop)
{
struct sock *sk = sock->sk;
if (likely(!(flags & MSG_PEEK))) {
if ((sock->state != SS_READY) &&
(++tsk->rcv_unacked >= TIPC_CONNACK_INTV)) {
- tipc_acknowledge(port->ref, tsk->rcv_unacked);
+ tipc_sk_send_ack(port, tsk->rcv_unacked);
tsk->rcv_unacked = 0;
}
advance_rx_queue(sk);
/* Consume received message (optional) */
if (likely(!(flags & MSG_PEEK))) {
if (unlikely(++tsk->rcv_unacked >= TIPC_CONNACK_INTV)) {
- tipc_acknowledge(port->ref, tsk->rcv_unacked);
+ tipc_sk_send_ack(port, tsk->rcv_unacked);
tsk->rcv_unacked = 0;
}
advance_rx_queue(sk);