summaryrefslogtreecommitdiffstats
path: root/net/tipc/socket.c
diff options
context:
space:
mode:
authorYing Xue <ying.xue@windriver.com>2014-11-25 22:41:55 -0500
committerDavid S. Miller <davem@davemloft.net>2014-11-26 12:30:17 -0500
commita6ca109443842e7251c68451f8137ae68ae6d8a6 (patch)
tree82658ff3ecd103abdad794b9b0833e45160b235e /net/tipc/socket.c
parentf03273f1e2fc8a59c3831200dd1532cf29e37e35 (diff)
tipc: use generic SKB list APIs to manage TIPC outgoing packet chains
Use standard SKB list APIs associated with struct sk_buff_head to manage socket outgoing packet chain and name table outgoing packet chain, having relevant code simpler and more readable. Signed-off-by: Ying Xue <ying.xue@windriver.com> Reviewed-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/socket.c')
-rw-r--r--net/tipc/socket.c127
1 files changed, 66 insertions, 61 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 341fbd1b5f74..9658d9b63876 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -244,12 +244,12 @@ static void tsk_advance_rx_queue(struct sock *sk)
244 */ 244 */
245static void tsk_rej_rx_queue(struct sock *sk) 245static void tsk_rej_rx_queue(struct sock *sk)
246{ 246{
247 struct sk_buff *buf; 247 struct sk_buff *skb;
248 u32 dnode; 248 u32 dnode;
249 249
250 while ((buf = __skb_dequeue(&sk->sk_receive_queue))) { 250 while ((skb = __skb_dequeue(&sk->sk_receive_queue))) {
251 if (tipc_msg_reverse(buf, &dnode, TIPC_ERR_NO_PORT)) 251 if (tipc_msg_reverse(skb, &dnode, TIPC_ERR_NO_PORT))
252 tipc_link_xmit(buf, dnode, 0); 252 tipc_link_xmit_skb(skb, dnode, 0);
253 } 253 }
254} 254}
255 255
@@ -462,7 +462,7 @@ static int tipc_release(struct socket *sock)
462{ 462{
463 struct sock *sk = sock->sk; 463 struct sock *sk = sock->sk;
464 struct tipc_sock *tsk; 464 struct tipc_sock *tsk;
465 struct sk_buff *buf; 465 struct sk_buff *skb;
466 u32 dnode; 466 u32 dnode;
467 467
468 /* 468 /*
@@ -481,11 +481,11 @@ static int tipc_release(struct socket *sock)
481 */ 481 */
482 dnode = tsk_peer_node(tsk); 482 dnode = tsk_peer_node(tsk);
483 while (sock->state != SS_DISCONNECTING) { 483 while (sock->state != SS_DISCONNECTING) {
484 buf = __skb_dequeue(&sk->sk_receive_queue); 484 skb = __skb_dequeue(&sk->sk_receive_queue);
485 if (buf == NULL) 485 if (skb == NULL)
486 break; 486 break;
487 if (TIPC_SKB_CB(buf)->handle != NULL) 487 if (TIPC_SKB_CB(skb)->handle != NULL)
488 kfree_skb(buf); 488 kfree_skb(skb);
489 else { 489 else {
490 if ((sock->state == SS_CONNECTING) || 490 if ((sock->state == SS_CONNECTING) ||
491 (sock->state == SS_CONNECTED)) { 491 (sock->state == SS_CONNECTED)) {
@@ -493,8 +493,8 @@ static int tipc_release(struct socket *sock)
493 tsk->connected = 0; 493 tsk->connected = 0;
494 tipc_node_remove_conn(dnode, tsk->ref); 494 tipc_node_remove_conn(dnode, tsk->ref);
495 } 495 }
496 if (tipc_msg_reverse(buf, &dnode, TIPC_ERR_NO_PORT)) 496 if (tipc_msg_reverse(skb, &dnode, TIPC_ERR_NO_PORT))
497 tipc_link_xmit(buf, dnode, 0); 497 tipc_link_xmit_skb(skb, dnode, 0);
498 } 498 }
499 } 499 }
500 500
@@ -502,12 +502,12 @@ static int tipc_release(struct socket *sock)
502 tipc_sk_ref_discard(tsk->ref); 502 tipc_sk_ref_discard(tsk->ref);
503 k_cancel_timer(&tsk->timer); 503 k_cancel_timer(&tsk->timer);
504 if (tsk->connected) { 504 if (tsk->connected) {
505 buf = tipc_msg_create(TIPC_CRITICAL_IMPORTANCE, TIPC_CONN_MSG, 505 skb = tipc_msg_create(TIPC_CRITICAL_IMPORTANCE, TIPC_CONN_MSG,
506 SHORT_H_SIZE, 0, dnode, tipc_own_addr, 506 SHORT_H_SIZE, 0, dnode, tipc_own_addr,
507 tsk_peer_port(tsk), 507 tsk_peer_port(tsk),
508 tsk->ref, TIPC_ERR_NO_PORT); 508 tsk->ref, TIPC_ERR_NO_PORT);
509 if (buf) 509 if (skb)
510 tipc_link_xmit(buf, dnode, tsk->ref); 510 tipc_link_xmit_skb(skb, dnode, tsk->ref);
511 tipc_node_remove_conn(dnode, tsk->ref); 511 tipc_node_remove_conn(dnode, tsk->ref);
512 } 512 }
513 k_term_timer(&tsk->timer); 513 k_term_timer(&tsk->timer);
@@ -712,7 +712,7 @@ static int tipc_sendmcast(struct socket *sock, struct tipc_name_seq *seq,
712{ 712{
713 struct sock *sk = sock->sk; 713 struct sock *sk = sock->sk;
714 struct tipc_msg *mhdr = &tipc_sk(sk)->phdr; 714 struct tipc_msg *mhdr = &tipc_sk(sk)->phdr;
715 struct sk_buff *buf; 715 struct sk_buff_head head;
716 uint mtu; 716 uint mtu;
717 int rc; 717 int rc;
718 718
@@ -727,12 +727,13 @@ static int tipc_sendmcast(struct socket *sock, struct tipc_name_seq *seq,
727 727
728new_mtu: 728new_mtu:
729 mtu = tipc_bclink_get_mtu(); 729 mtu = tipc_bclink_get_mtu();
730 rc = tipc_msg_build(mhdr, msg, 0, dsz, mtu, &buf); 730 __skb_queue_head_init(&head);
731 rc = tipc_msg_build(mhdr, msg, 0, dsz, mtu, &head);
731 if (unlikely(rc < 0)) 732 if (unlikely(rc < 0))
732 return rc; 733 return rc;
733 734
734 do { 735 do {
735 rc = tipc_bclink_xmit(buf); 736 rc = tipc_bclink_xmit(&head);
736 if (likely(rc >= 0)) { 737 if (likely(rc >= 0)) {
737 rc = dsz; 738 rc = dsz;
738 break; 739 break;
@@ -744,7 +745,7 @@ new_mtu:
744 tipc_sk(sk)->link_cong = 1; 745 tipc_sk(sk)->link_cong = 1;
745 rc = tipc_wait_for_sndmsg(sock, &timeo); 746 rc = tipc_wait_for_sndmsg(sock, &timeo);
746 if (rc) 747 if (rc)
747 kfree_skb_list(buf); 748 __skb_queue_purge(&head);
748 } while (!rc); 749 } while (!rc);
749 return rc; 750 return rc;
750} 751}
@@ -906,7 +907,8 @@ static int tipc_sendmsg(struct kiocb *iocb, struct socket *sock,
906 struct tipc_sock *tsk = tipc_sk(sk); 907 struct tipc_sock *tsk = tipc_sk(sk);
907 struct tipc_msg *mhdr = &tsk->phdr; 908 struct tipc_msg *mhdr = &tsk->phdr;
908 u32 dnode, dport; 909 u32 dnode, dport;
909 struct sk_buff *buf; 910 struct sk_buff_head head;
911 struct sk_buff *skb;
910 struct tipc_name_seq *seq = &dest->addr.nameseq; 912 struct tipc_name_seq *seq = &dest->addr.nameseq;
911 u32 mtu; 913 u32 mtu;
912 long timeo; 914 long timeo;
@@ -981,13 +983,15 @@ static int tipc_sendmsg(struct kiocb *iocb, struct socket *sock,
981 983
982new_mtu: 984new_mtu:
983 mtu = tipc_node_get_mtu(dnode, tsk->ref); 985 mtu = tipc_node_get_mtu(dnode, tsk->ref);
984 rc = tipc_msg_build(mhdr, m, 0, dsz, mtu, &buf); 986 __skb_queue_head_init(&head);
987 rc = tipc_msg_build(mhdr, m, 0, dsz, mtu, &head);
985 if (rc < 0) 988 if (rc < 0)
986 goto exit; 989 goto exit;
987 990
988 do { 991 do {
989 TIPC_SKB_CB(buf)->wakeup_pending = tsk->link_cong; 992 skb = skb_peek(&head);
990 rc = tipc_link_xmit(buf, dnode, tsk->ref); 993 TIPC_SKB_CB(skb)->wakeup_pending = tsk->link_cong;
994 rc = tipc_link_xmit(&head, dnode, tsk->ref);
991 if (likely(rc >= 0)) { 995 if (likely(rc >= 0)) {
992 if (sock->state != SS_READY) 996 if (sock->state != SS_READY)
993 sock->state = SS_CONNECTING; 997 sock->state = SS_CONNECTING;
@@ -1001,7 +1005,7 @@ new_mtu:
1001 tsk->link_cong = 1; 1005 tsk->link_cong = 1;
1002 rc = tipc_wait_for_sndmsg(sock, &timeo); 1006 rc = tipc_wait_for_sndmsg(sock, &timeo);
1003 if (rc) 1007 if (rc)
1004 kfree_skb_list(buf); 1008 __skb_queue_purge(&head);
1005 } while (!rc); 1009 } while (!rc);
1006exit: 1010exit:
1007 if (iocb) 1011 if (iocb)
@@ -1058,7 +1062,7 @@ static int tipc_send_stream(struct kiocb *iocb, struct socket *sock,
1058 struct sock *sk = sock->sk; 1062 struct sock *sk = sock->sk;
1059 struct tipc_sock *tsk = tipc_sk(sk); 1063 struct tipc_sock *tsk = tipc_sk(sk);
1060 struct tipc_msg *mhdr = &tsk->phdr; 1064 struct tipc_msg *mhdr = &tsk->phdr;
1061 struct sk_buff *buf; 1065 struct sk_buff_head head;
1062 DECLARE_SOCKADDR(struct sockaddr_tipc *, dest, m->msg_name); 1066 DECLARE_SOCKADDR(struct sockaddr_tipc *, dest, m->msg_name);
1063 u32 ref = tsk->ref; 1067 u32 ref = tsk->ref;
1064 int rc = -EINVAL; 1068 int rc = -EINVAL;
@@ -1093,12 +1097,13 @@ static int tipc_send_stream(struct kiocb *iocb, struct socket *sock,
1093next: 1097next:
1094 mtu = tsk->max_pkt; 1098 mtu = tsk->max_pkt;
1095 send = min_t(uint, dsz - sent, TIPC_MAX_USER_MSG_SIZE); 1099 send = min_t(uint, dsz - sent, TIPC_MAX_USER_MSG_SIZE);
1096 rc = tipc_msg_build(mhdr, m, sent, send, mtu, &buf); 1100 __skb_queue_head_init(&head);
1101 rc = tipc_msg_build(mhdr, m, sent, send, mtu, &head);
1097 if (unlikely(rc < 0)) 1102 if (unlikely(rc < 0))
1098 goto exit; 1103 goto exit;
1099 do { 1104 do {
1100 if (likely(!tsk_conn_cong(tsk))) { 1105 if (likely(!tsk_conn_cong(tsk))) {
1101 rc = tipc_link_xmit(buf, dnode, ref); 1106 rc = tipc_link_xmit(&head, dnode, ref);
1102 if (likely(!rc)) { 1107 if (likely(!rc)) {
1103 tsk->sent_unacked++; 1108 tsk->sent_unacked++;
1104 sent += send; 1109 sent += send;
@@ -1116,7 +1121,7 @@ next:
1116 } 1121 }
1117 rc = tipc_wait_for_sndpkt(sock, &timeo); 1122 rc = tipc_wait_for_sndpkt(sock, &timeo);
1118 if (rc) 1123 if (rc)
1119 kfree_skb_list(buf); 1124 __skb_queue_purge(&head);
1120 } while (!rc); 1125 } while (!rc);
1121exit: 1126exit:
1122 if (iocb) 1127 if (iocb)
@@ -1261,20 +1266,20 @@ static int tipc_sk_anc_data_recv(struct msghdr *m, struct tipc_msg *msg,
1261 1266
1262static void tipc_sk_send_ack(struct tipc_sock *tsk, uint ack) 1267static void tipc_sk_send_ack(struct tipc_sock *tsk, uint ack)
1263{ 1268{
1264 struct sk_buff *buf = NULL; 1269 struct sk_buff *skb = NULL;
1265 struct tipc_msg *msg; 1270 struct tipc_msg *msg;
1266 u32 peer_port = tsk_peer_port(tsk); 1271 u32 peer_port = tsk_peer_port(tsk);
1267 u32 dnode = tsk_peer_node(tsk); 1272 u32 dnode = tsk_peer_node(tsk);
1268 1273
1269 if (!tsk->connected) 1274 if (!tsk->connected)
1270 return; 1275 return;
1271 buf = tipc_msg_create(CONN_MANAGER, CONN_ACK, INT_H_SIZE, 0, dnode, 1276 skb = tipc_msg_create(CONN_MANAGER, CONN_ACK, INT_H_SIZE, 0, dnode,
1272 tipc_own_addr, peer_port, tsk->ref, TIPC_OK); 1277 tipc_own_addr, peer_port, tsk->ref, TIPC_OK);
1273 if (!buf) 1278 if (!skb)
1274 return; 1279 return;
1275 msg = buf_msg(buf); 1280 msg = buf_msg(skb);
1276 msg_set_msgcnt(msg, ack); 1281 msg_set_msgcnt(msg, ack);
1277 tipc_link_xmit(buf, dnode, msg_link_selector(msg)); 1282 tipc_link_xmit_skb(skb, dnode, msg_link_selector(msg));
1278} 1283}
1279 1284
1280static int tipc_wait_for_rcvmsg(struct socket *sock, long *timeop) 1285static int tipc_wait_for_rcvmsg(struct socket *sock, long *timeop)
@@ -1729,20 +1734,20 @@ static int filter_rcv(struct sock *sk, struct sk_buff *buf)
1729/** 1734/**
1730 * tipc_backlog_rcv - handle incoming message from backlog queue 1735 * tipc_backlog_rcv - handle incoming message from backlog queue
1731 * @sk: socket 1736 * @sk: socket
1732 * @buf: message 1737 * @skb: message
1733 * 1738 *
1734 * Caller must hold socket lock, but not port lock. 1739 * Caller must hold socket lock, but not port lock.
1735 * 1740 *
1736 * Returns 0 1741 * Returns 0
1737 */ 1742 */
1738static int tipc_backlog_rcv(struct sock *sk, struct sk_buff *buf) 1743static int tipc_backlog_rcv(struct sock *sk, struct sk_buff *skb)
1739{ 1744{
1740 int rc; 1745 int rc;
1741 u32 onode; 1746 u32 onode;
1742 struct tipc_sock *tsk = tipc_sk(sk); 1747 struct tipc_sock *tsk = tipc_sk(sk);
1743 uint truesize = buf->truesize; 1748 uint truesize = skb->truesize;
1744 1749
1745 rc = filter_rcv(sk, buf); 1750 rc = filter_rcv(sk, skb);
1746 1751
1747 if (likely(!rc)) { 1752 if (likely(!rc)) {
1748 if (atomic_read(&tsk->dupl_rcvcnt) < TIPC_CONN_OVERLOAD_LIMIT) 1753 if (atomic_read(&tsk->dupl_rcvcnt) < TIPC_CONN_OVERLOAD_LIMIT)
@@ -1750,25 +1755,25 @@ static int tipc_backlog_rcv(struct sock *sk, struct sk_buff *buf)
1750 return 0; 1755 return 0;
1751 } 1756 }
1752 1757
1753 if ((rc < 0) && !tipc_msg_reverse(buf, &onode, -rc)) 1758 if ((rc < 0) && !tipc_msg_reverse(skb, &onode, -rc))
1754 return 0; 1759 return 0;
1755 1760
1756 tipc_link_xmit(buf, onode, 0); 1761 tipc_link_xmit_skb(skb, onode, 0);
1757 1762
1758 return 0; 1763 return 0;
1759} 1764}
1760 1765
1761/** 1766/**
1762 * tipc_sk_rcv - handle incoming message 1767 * tipc_sk_rcv - handle incoming message
1763 * @buf: buffer containing arriving message 1768 * @skb: buffer containing arriving message
1764 * Consumes buffer 1769 * Consumes buffer
1765 * Returns 0 if success, or errno: -EHOSTUNREACH 1770 * Returns 0 if success, or errno: -EHOSTUNREACH
1766 */ 1771 */
1767int tipc_sk_rcv(struct sk_buff *buf) 1772int tipc_sk_rcv(struct sk_buff *skb)
1768{ 1773{
1769 struct tipc_sock *tsk; 1774 struct tipc_sock *tsk;
1770 struct sock *sk; 1775 struct sock *sk;
1771 u32 dport = msg_destport(buf_msg(buf)); 1776 u32 dport = msg_destport(buf_msg(skb));
1772 int rc = TIPC_OK; 1777 int rc = TIPC_OK;
1773 uint limit; 1778 uint limit;
1774 u32 dnode; 1779 u32 dnode;
@@ -1776,7 +1781,7 @@ int tipc_sk_rcv(struct sk_buff *buf)
1776 /* Validate destination and message */ 1781 /* Validate destination and message */
1777 tsk = tipc_sk_get(dport); 1782 tsk = tipc_sk_get(dport);
1778 if (unlikely(!tsk)) { 1783 if (unlikely(!tsk)) {
1779 rc = tipc_msg_eval(buf, &dnode); 1784 rc = tipc_msg_eval(skb, &dnode);
1780 goto exit; 1785 goto exit;
1781 } 1786 }
1782 sk = &tsk->sk; 1787 sk = &tsk->sk;
@@ -1785,12 +1790,12 @@ int tipc_sk_rcv(struct sk_buff *buf)
1785 spin_lock_bh(&sk->sk_lock.slock); 1790 spin_lock_bh(&sk->sk_lock.slock);
1786 1791
1787 if (!sock_owned_by_user(sk)) { 1792 if (!sock_owned_by_user(sk)) {
1788 rc = filter_rcv(sk, buf); 1793 rc = filter_rcv(sk, skb);
1789 } else { 1794 } else {
1790 if (sk->sk_backlog.len == 0) 1795 if (sk->sk_backlog.len == 0)
1791 atomic_set(&tsk->dupl_rcvcnt, 0); 1796 atomic_set(&tsk->dupl_rcvcnt, 0);
1792 limit = rcvbuf_limit(sk, buf) + atomic_read(&tsk->dupl_rcvcnt); 1797 limit = rcvbuf_limit(sk, skb) + atomic_read(&tsk->dupl_rcvcnt);
1793 if (sk_add_backlog(sk, buf, limit)) 1798 if (sk_add_backlog(sk, skb, limit))
1794 rc = -TIPC_ERR_OVERLOAD; 1799 rc = -TIPC_ERR_OVERLOAD;
1795 } 1800 }
1796 spin_unlock_bh(&sk->sk_lock.slock); 1801 spin_unlock_bh(&sk->sk_lock.slock);
@@ -1798,10 +1803,10 @@ int tipc_sk_rcv(struct sk_buff *buf)
1798 if (likely(!rc)) 1803 if (likely(!rc))
1799 return 0; 1804 return 0;
1800exit: 1805exit:
1801 if ((rc < 0) && !tipc_msg_reverse(buf, &dnode, -rc)) 1806 if ((rc < 0) && !tipc_msg_reverse(skb, &dnode, -rc))
1802 return -EHOSTUNREACH; 1807 return -EHOSTUNREACH;
1803 1808
1804 tipc_link_xmit(buf, dnode, 0); 1809 tipc_link_xmit_skb(skb, dnode, 0);
1805 return (rc < 0) ? -EHOSTUNREACH : 0; 1810 return (rc < 0) ? -EHOSTUNREACH : 0;
1806} 1811}
1807 1812
@@ -2059,7 +2064,7 @@ static int tipc_shutdown(struct socket *sock, int how)
2059{ 2064{
2060 struct sock *sk = sock->sk; 2065 struct sock *sk = sock->sk;
2061 struct tipc_sock *tsk = tipc_sk(sk); 2066 struct tipc_sock *tsk = tipc_sk(sk);
2062 struct sk_buff *buf; 2067 struct sk_buff *skb;
2063 u32 dnode; 2068 u32 dnode;
2064 int res; 2069 int res;
2065 2070
@@ -2074,23 +2079,23 @@ static int tipc_shutdown(struct socket *sock, int how)
2074 2079
2075restart: 2080restart:
2076 /* Disconnect and send a 'FIN+' or 'FIN-' message to peer */ 2081 /* Disconnect and send a 'FIN+' or 'FIN-' message to peer */
2077 buf = __skb_dequeue(&sk->sk_receive_queue); 2082 skb = __skb_dequeue(&sk->sk_receive_queue);
2078 if (buf) { 2083 if (skb) {
2079 if (TIPC_SKB_CB(buf)->handle != NULL) { 2084 if (TIPC_SKB_CB(skb)->handle != NULL) {
2080 kfree_skb(buf); 2085 kfree_skb(skb);
2081 goto restart; 2086 goto restart;
2082 } 2087 }
2083 if (tipc_msg_reverse(buf, &dnode, TIPC_CONN_SHUTDOWN)) 2088 if (tipc_msg_reverse(skb, &dnode, TIPC_CONN_SHUTDOWN))
2084 tipc_link_xmit(buf, dnode, tsk->ref); 2089 tipc_link_xmit_skb(skb, dnode, tsk->ref);
2085 tipc_node_remove_conn(dnode, tsk->ref); 2090 tipc_node_remove_conn(dnode, tsk->ref);
2086 } else { 2091 } else {
2087 dnode = tsk_peer_node(tsk); 2092 dnode = tsk_peer_node(tsk);
2088 buf = tipc_msg_create(TIPC_CRITICAL_IMPORTANCE, 2093 skb = tipc_msg_create(TIPC_CRITICAL_IMPORTANCE,
2089 TIPC_CONN_MSG, SHORT_H_SIZE, 2094 TIPC_CONN_MSG, SHORT_H_SIZE,
2090 0, dnode, tipc_own_addr, 2095 0, dnode, tipc_own_addr,
2091 tsk_peer_port(tsk), 2096 tsk_peer_port(tsk),
2092 tsk->ref, TIPC_CONN_SHUTDOWN); 2097 tsk->ref, TIPC_CONN_SHUTDOWN);
2093 tipc_link_xmit(buf, dnode, tsk->ref); 2098 tipc_link_xmit_skb(skb, dnode, tsk->ref);
2094 } 2099 }
2095 tsk->connected = 0; 2100 tsk->connected = 0;
2096 sock->state = SS_DISCONNECTING; 2101 sock->state = SS_DISCONNECTING;
@@ -2119,7 +2124,7 @@ static void tipc_sk_timeout(unsigned long ref)
2119{ 2124{
2120 struct tipc_sock *tsk; 2125 struct tipc_sock *tsk;
2121 struct sock *sk; 2126 struct sock *sk;
2122 struct sk_buff *buf = NULL; 2127 struct sk_buff *skb = NULL;
2123 u32 peer_port, peer_node; 2128 u32 peer_port, peer_node;
2124 2129
2125 tsk = tipc_sk_get(ref); 2130 tsk = tipc_sk_get(ref);
@@ -2137,20 +2142,20 @@ static void tipc_sk_timeout(unsigned long ref)
2137 2142
2138 if (tsk->probing_state == TIPC_CONN_PROBING) { 2143 if (tsk->probing_state == TIPC_CONN_PROBING) {
2139 /* Previous probe not answered -> self abort */ 2144 /* Previous probe not answered -> self abort */
2140 buf = tipc_msg_create(TIPC_CRITICAL_IMPORTANCE, TIPC_CONN_MSG, 2145 skb = tipc_msg_create(TIPC_CRITICAL_IMPORTANCE, TIPC_CONN_MSG,
2141 SHORT_H_SIZE, 0, tipc_own_addr, 2146 SHORT_H_SIZE, 0, tipc_own_addr,
2142 peer_node, ref, peer_port, 2147 peer_node, ref, peer_port,
2143 TIPC_ERR_NO_PORT); 2148 TIPC_ERR_NO_PORT);
2144 } else { 2149 } else {
2145 buf = tipc_msg_create(CONN_MANAGER, CONN_PROBE, INT_H_SIZE, 2150 skb = tipc_msg_create(CONN_MANAGER, CONN_PROBE, INT_H_SIZE,
2146 0, peer_node, tipc_own_addr, 2151 0, peer_node, tipc_own_addr,
2147 peer_port, ref, TIPC_OK); 2152 peer_port, ref, TIPC_OK);
2148 tsk->probing_state = TIPC_CONN_PROBING; 2153 tsk->probing_state = TIPC_CONN_PROBING;
2149 k_start_timer(&tsk->timer, tsk->probing_interval); 2154 k_start_timer(&tsk->timer, tsk->probing_interval);
2150 } 2155 }
2151 bh_unlock_sock(sk); 2156 bh_unlock_sock(sk);
2152 if (buf) 2157 if (skb)
2153 tipc_link_xmit(buf, peer_node, ref); 2158 tipc_link_xmit_skb(skb, peer_node, ref);
2154exit: 2159exit:
2155 tipc_sk_put(tsk); 2160 tipc_sk_put(tsk);
2156} 2161}