• Home
  • Raw
  • Download

Lines Matching refs:tsk

107 static int tipc_sk_publish(struct tipc_sock *tsk, uint scope,
109 static int tipc_sk_withdraw(struct tipc_sock *tsk, uint scope,
111 static u32 tipc_sk_ref_acquire(struct tipc_sock *tsk);
115 static void tipc_sk_put(struct tipc_sock *tsk);
169 static u32 tsk_peer_node(struct tipc_sock *tsk) in tsk_peer_node() argument
171 return msg_destnode(&tsk->phdr); in tsk_peer_node()
174 static u32 tsk_peer_port(struct tipc_sock *tsk) in tsk_peer_port() argument
176 return msg_destport(&tsk->phdr); in tsk_peer_port()
179 static bool tsk_unreliable(struct tipc_sock *tsk) in tsk_unreliable() argument
181 return msg_src_droppable(&tsk->phdr) != 0; in tsk_unreliable()
184 static void tsk_set_unreliable(struct tipc_sock *tsk, bool unreliable) in tsk_set_unreliable() argument
186 msg_set_src_droppable(&tsk->phdr, unreliable ? 1 : 0); in tsk_set_unreliable()
189 static bool tsk_unreturnable(struct tipc_sock *tsk) in tsk_unreturnable() argument
191 return msg_dest_droppable(&tsk->phdr) != 0; in tsk_unreturnable()
194 static void tsk_set_unreturnable(struct tipc_sock *tsk, bool unreturnable) in tsk_set_unreturnable() argument
196 msg_set_dest_droppable(&tsk->phdr, unreturnable ? 1 : 0); in tsk_set_unreturnable()
199 static int tsk_importance(struct tipc_sock *tsk) in tsk_importance() argument
201 return msg_importance(&tsk->phdr); in tsk_importance()
204 static int tsk_set_importance(struct tipc_sock *tsk, int imp) in tsk_set_importance() argument
208 msg_set_importance(&tsk->phdr, (u32)imp); in tsk_set_importance()
217 static int tsk_conn_cong(struct tipc_sock *tsk) in tsk_conn_cong() argument
219 return tsk->sent_unacked >= TIPC_FLOWCTRL_WIN; in tsk_conn_cong()
253 static bool tsk_peer_msg(struct tipc_sock *tsk, struct tipc_msg *msg) in tsk_peer_msg() argument
255 u32 peer_port = tsk_peer_port(tsk); in tsk_peer_msg()
259 if (unlikely(!tsk->connected)) in tsk_peer_msg()
266 peer_node = tsk_peer_node(tsk); in tsk_peer_msg()
298 struct tipc_sock *tsk; in tipc_sk_create() local
333 tsk = tipc_sk(sk); in tipc_sk_create()
334 ref = tipc_sk_ref_acquire(tsk); in tipc_sk_create()
339 tsk->max_pkt = MAX_PKT_DEFAULT; in tipc_sk_create()
340 tsk->ref = ref; in tipc_sk_create()
341 INIT_LIST_HEAD(&tsk->publications); in tipc_sk_create()
342 msg = &tsk->phdr; in tipc_sk_create()
351 k_init_timer(&tsk->timer, (Handler)tipc_sk_timeout, ref); in tipc_sk_create()
356 tsk->conn_timeout = CONN_TIMEOUT_DEFAULT; in tipc_sk_create()
357 tsk->sent_unacked = 0; in tipc_sk_create()
358 atomic_set(&tsk->dupl_rcvcnt, 0); in tipc_sk_create()
361 tsk_set_unreturnable(tsk, true); in tipc_sk_create()
363 tsk_set_unreliable(tsk, true); in tipc_sk_create()
456 struct tipc_sock *tsk; in tipc_release() local
467 tsk = tipc_sk(sk); in tipc_release()
474 dnode = tsk_peer_node(tsk); in tipc_release()
485 tsk->connected = 0; in tipc_release()
486 tipc_node_remove_conn(dnode, tsk->ref); in tipc_release()
493 tipc_sk_withdraw(tsk, 0, NULL); in tipc_release()
494 tipc_sk_ref_discard(tsk->ref); in tipc_release()
495 k_cancel_timer(&tsk->timer); in tipc_release()
496 if (tsk->connected) { in tipc_release()
499 tsk_peer_port(tsk), in tipc_release()
500 tsk->ref, TIPC_ERR_NO_PORT); in tipc_release()
502 tipc_link_xmit(buf, dnode, tsk->ref); in tipc_release()
503 tipc_node_remove_conn(dnode, tsk->ref); in tipc_release()
505 k_term_timer(&tsk->timer); in tipc_release()
539 struct tipc_sock *tsk = tipc_sk(sk); in tipc_bind() local
544 res = tipc_sk_withdraw(tsk, 0, NULL); in tipc_bind()
572 tipc_sk_publish(tsk, addr->scope, &addr->addr.nameseq) : in tipc_bind()
573 tipc_sk_withdraw(tsk, -addr->scope, &addr->addr.nameseq); in tipc_bind()
596 struct tipc_sock *tsk = tipc_sk(sock->sk); in tipc_getname() local
603 addr->addr.id.ref = tsk_peer_port(tsk); in tipc_getname()
604 addr->addr.id.node = tsk_peer_node(tsk); in tipc_getname()
606 addr->addr.id.ref = tsk->ref; in tipc_getname()
663 struct tipc_sock *tsk = tipc_sk(sk); in tipc_poll() local
670 if (!tsk->link_cong) in tipc_poll()
675 if (!tsk->link_cong && !tsk_conn_cong(tsk)) in tipc_poll()
792 static int tipc_sk_proto_rcv(struct tipc_sock *tsk, u32 *dnode, in tipc_sk_proto_rcv() argument
799 if (!tsk_peer_msg(tsk, msg)) in tipc_sk_proto_rcv()
802 tsk->probing_state = TIPC_CONN_OK; in tipc_sk_proto_rcv()
805 conn_cong = tsk_conn_cong(tsk); in tipc_sk_proto_rcv()
806 tsk->sent_unacked -= msg_msgcnt(msg); in tipc_sk_proto_rcv()
808 tsk->sk.sk_write_space(&tsk->sk); in tipc_sk_proto_rcv()
857 struct tipc_sock *tsk = tipc_sk(sk); in tipc_wait_for_sndmsg() local
873 done = sk_wait_event(sk, timeo_p, !tsk->link_cong); in tipc_wait_for_sndmsg()
898 struct tipc_sock *tsk = tipc_sk(sk); in tipc_sendmsg() local
899 struct tipc_msg *mhdr = &tsk->phdr; in tipc_sendmsg()
930 if (tsk->published) { in tipc_sendmsg()
935 tsk->conn_type = dest->addr.name.name.type; in tipc_sendmsg()
936 tsk->conn_instance = dest->addr.name.name.instance; in tipc_sendmsg()
976 mtu = tipc_node_get_mtu(dnode, tsk->ref); in tipc_sendmsg()
982 TIPC_SKB_CB(buf)->wakeup_pending = tsk->link_cong; in tipc_sendmsg()
983 rc = tipc_link_xmit(buf, dnode, tsk->ref); in tipc_sendmsg()
994 tsk->link_cong = 1; in tipc_sendmsg()
1009 struct tipc_sock *tsk = tipc_sk(sk); in tipc_wait_for_sndpkt() local
1028 (!tsk->link_cong && in tipc_wait_for_sndpkt()
1029 !tsk_conn_cong(tsk)) || in tipc_wait_for_sndpkt()
1030 !tsk->connected); in tipc_wait_for_sndpkt()
1052 struct tipc_sock *tsk = tipc_sk(sk); in tipc_send_stream() local
1053 struct tipc_msg *mhdr = &tsk->phdr; in tipc_send_stream()
1056 u32 ref = tsk->ref; in tipc_send_stream()
1066 tsk->sent_unacked = 1; in tipc_send_stream()
1084 dnode = tsk_peer_node(tsk); in tipc_send_stream()
1087 mtu = tsk->max_pkt; in tipc_send_stream()
1093 if (likely(!tsk_conn_cong(tsk))) { in tipc_send_stream()
1096 tsk->sent_unacked++; in tipc_send_stream()
1103 tsk->max_pkt = tipc_node_get_mtu(dnode, ref); in tipc_send_stream()
1108 tsk->link_cong = 1; in tipc_send_stream()
1142 static void tipc_sk_finish_conn(struct tipc_sock *tsk, u32 peer_port, in tipc_sk_finish_conn() argument
1145 struct tipc_msg *msg = &tsk->phdr; in tipc_sk_finish_conn()
1153 tsk->probing_interval = CONN_PROBING_INTERVAL; in tipc_sk_finish_conn()
1154 tsk->probing_state = TIPC_CONN_OK; in tipc_sk_finish_conn()
1155 tsk->connected = 1; in tipc_sk_finish_conn()
1156 k_start_timer(&tsk->timer, tsk->probing_interval); in tipc_sk_finish_conn()
1157 tipc_node_add_conn(peer_node, tsk->ref, peer_port); in tipc_sk_finish_conn()
1158 tsk->max_pkt = tipc_node_get_mtu(peer_node, tsk->ref); in tipc_sk_finish_conn()
1195 struct tipc_sock *tsk) in tipc_sk_anc_data_recv() argument
1238 has_name = (tsk->conn_type != 0); in tipc_sk_anc_data_recv()
1239 anc_data[0] = tsk->conn_type; in tipc_sk_anc_data_recv()
1240 anc_data[1] = tsk->conn_instance; in tipc_sk_anc_data_recv()
1241 anc_data[2] = tsk->conn_instance; in tipc_sk_anc_data_recv()
1255 static void tipc_sk_send_ack(struct tipc_sock *tsk, uint ack) in tipc_sk_send_ack() argument
1259 u32 peer_port = tsk_peer_port(tsk); in tipc_sk_send_ack()
1260 u32 dnode = tsk_peer_node(tsk); in tipc_sk_send_ack()
1262 if (!tsk->connected) in tipc_sk_send_ack()
1265 tipc_own_addr, peer_port, tsk->ref, TIPC_OK); in tipc_sk_send_ack()
1322 struct tipc_sock *tsk = tipc_sk(sk); in tipc_recvmsg() local
1365 res = tipc_sk_anc_data_recv(m, msg, tsk); in tipc_recvmsg()
1391 (++tsk->rcv_unacked >= TIPC_CONNACK_INTV)) { in tipc_recvmsg()
1392 tipc_sk_send_ack(tsk, tsk->rcv_unacked); in tipc_recvmsg()
1393 tsk->rcv_unacked = 0; in tipc_recvmsg()
1418 struct tipc_sock *tsk = tipc_sk(sk); in tipc_recv_stream() local
1463 res = tipc_sk_anc_data_recv(m, msg, tsk); in tipc_recv_stream()
1501 if (unlikely(++tsk->rcv_unacked >= TIPC_CONNACK_INTV)) { in tipc_recv_stream()
1502 tipc_sk_send_ack(tsk, tsk->rcv_unacked); in tipc_recv_stream()
1503 tsk->rcv_unacked = 0; in tipc_recv_stream()
1561 static int filter_connect(struct tipc_sock *tsk, struct sk_buff **buf) in filter_connect() argument
1563 struct sock *sk = &tsk->sk; in filter_connect()
1574 if (tsk_peer_msg(tsk, msg)) { in filter_connect()
1577 tsk->connected = 0; in filter_connect()
1579 tipc_node_remove_conn(tsk_peer_node(tsk), in filter_connect()
1580 tsk->ref); in filter_connect()
1605 tipc_sk_finish_conn(tsk, msg_origport(msg), msg_orignode(msg)); in filter_connect()
1606 msg_set_importance(&tsk->phdr, msg_importance(msg)); in filter_connect()
1681 struct tipc_sock *tsk = tipc_sk(sk); in filter_rcv() local
1688 return tipc_sk_proto_rcv(tsk, &onode, buf); in filter_rcv()
1692 tsk->link_cong = 0; in filter_rcv()
1705 rc = filter_connect(tsk, &buf); in filter_rcv()
1736 struct tipc_sock *tsk = tipc_sk(sk); in tipc_backlog_rcv() local
1742 if (atomic_read(&tsk->dupl_rcvcnt) < TIPC_CONN_OVERLOAD_LIMIT) in tipc_backlog_rcv()
1743 atomic_add(truesize, &tsk->dupl_rcvcnt); in tipc_backlog_rcv()
1763 struct tipc_sock *tsk; in tipc_sk_rcv() local
1771 tsk = tipc_sk_get(dport); in tipc_sk_rcv()
1772 if (unlikely(!tsk)) { in tipc_sk_rcv()
1776 sk = &tsk->sk; in tipc_sk_rcv()
1785 atomic_set(&tsk->dupl_rcvcnt, 0); in tipc_sk_rcv()
1786 limit = rcvbuf_limit(sk, buf) + atomic_read(&tsk->dupl_rcvcnt); in tipc_sk_rcv()
1791 tipc_sk_put(tsk); in tipc_sk_rcv()
2056 struct tipc_sock *tsk = tipc_sk(sk); in tipc_shutdown() local
2079 tipc_link_xmit(buf, dnode, tsk->ref); in tipc_shutdown()
2080 tipc_node_remove_conn(dnode, tsk->ref); in tipc_shutdown()
2082 dnode = tsk_peer_node(tsk); in tipc_shutdown()
2086 tsk_peer_port(tsk), in tipc_shutdown()
2087 tsk->ref, TIPC_CONN_SHUTDOWN); in tipc_shutdown()
2088 tipc_link_xmit(buf, dnode, tsk->ref); in tipc_shutdown()
2090 tsk->connected = 0; in tipc_shutdown()
2092 tipc_node_remove_conn(dnode, tsk->ref); in tipc_shutdown()
2115 struct tipc_sock *tsk; in tipc_sk_timeout() local
2120 tsk = tipc_sk_get(ref); in tipc_sk_timeout()
2121 if (!tsk) in tipc_sk_timeout()
2124 sk = &tsk->sk; in tipc_sk_timeout()
2126 if (!tsk->connected) { in tipc_sk_timeout()
2130 peer_port = tsk_peer_port(tsk); in tipc_sk_timeout()
2131 peer_node = tsk_peer_node(tsk); in tipc_sk_timeout()
2133 if (tsk->probing_state == TIPC_CONN_PROBING) { in tipc_sk_timeout()
2143 tsk->probing_state = TIPC_CONN_PROBING; in tipc_sk_timeout()
2144 k_start_timer(&tsk->timer, tsk->probing_interval); in tipc_sk_timeout()
2150 tipc_sk_put(tsk); in tipc_sk_timeout()
2153 static int tipc_sk_publish(struct tipc_sock *tsk, uint scope, in tipc_sk_publish() argument
2159 if (tsk->connected) in tipc_sk_publish()
2161 key = tsk->ref + tsk->pub_count + 1; in tipc_sk_publish()
2162 if (key == tsk->ref) in tipc_sk_publish()
2166 scope, tsk->ref, key); in tipc_sk_publish()
2170 list_add(&publ->pport_list, &tsk->publications); in tipc_sk_publish()
2171 tsk->pub_count++; in tipc_sk_publish()
2172 tsk->published = 1; in tipc_sk_publish()
2176 static int tipc_sk_withdraw(struct tipc_sock *tsk, uint scope, in tipc_sk_withdraw() argument
2183 list_for_each_entry_safe(publ, safe, &tsk->publications, pport_list) { in tipc_sk_withdraw()
2202 if (list_empty(&tsk->publications)) in tipc_sk_withdraw()
2203 tsk->published = 0; in tipc_sk_withdraw()
2207 static int tipc_sk_show(struct tipc_sock *tsk, char *buf, in tipc_sk_show() argument
2217 tipc_node(tipc_own_addr), tsk->ref); in tipc_sk_show()
2219 ret = tipc_snprintf(buf, len, "%-10u:", tsk->ref); in tipc_sk_show()
2221 if (tsk->connected) { in tipc_sk_show()
2222 u32 dport = tsk_peer_port(tsk); in tipc_sk_show()
2223 u32 destnode = tsk_peer_node(tsk); in tipc_sk_show()
2230 if (tsk->conn_type != 0) in tipc_sk_show()
2232 " via {%u,%u}", tsk->conn_type, in tipc_sk_show()
2233 tsk->conn_instance); in tipc_sk_show()
2234 } else if (tsk->published) { in tipc_sk_show()
2236 list_for_each_entry(publ, &tsk->publications, pport_list) { in tipc_sk_show()
2257 struct tipc_sock *tsk; in tipc_sk_socks_show() local
2268 tsk = tipc_sk_get_next(&ref); in tipc_sk_socks_show()
2269 for (; tsk; tsk = tipc_sk_get_next(&ref)) { in tipc_sk_socks_show()
2270 lock_sock(&tsk->sk); in tipc_sk_socks_show()
2271 str_len += tipc_sk_show(tsk, pb + str_len, in tipc_sk_socks_show()
2273 release_sock(&tsk->sk); in tipc_sk_socks_show()
2274 tipc_sk_put(tsk); in tipc_sk_socks_show()
2290 struct tipc_sock *tsk = tipc_sk_get_next(&ref); in tipc_sk_reinit() local
2292 for (; tsk; tsk = tipc_sk_get_next(&ref)) { in tipc_sk_reinit()
2293 lock_sock(&tsk->sk); in tipc_sk_reinit()
2294 msg = &tsk->phdr; in tipc_sk_reinit()
2297 release_sock(&tsk->sk); in tipc_sk_reinit()
2298 tipc_sk_put(tsk); in tipc_sk_reinit()
2308 struct tipc_sock *tsk; member
2401 u32 tipc_sk_ref_acquire(struct tipc_sock *tsk) in tipc_sk_ref_acquire() argument
2409 if (unlikely(!tsk)) { in tipc_sk_ref_acquire()
2430 entry->tsk = tsk; in tipc_sk_ref_acquire()
2439 entry->tsk = tsk; in tipc_sk_ref_acquire()
2466 if (unlikely(!entry->tsk)) { in tipc_sk_ref_discard()
2479 entry->tsk = NULL; in tipc_sk_ref_discard()
2497 struct tipc_sock *tsk; in tipc_sk_get() local
2503 tsk = entry->tsk; in tipc_sk_get()
2504 if (likely(tsk && (entry->ref == ref))) in tipc_sk_get()
2505 sock_hold(&tsk->sk); in tipc_sk_get()
2507 tsk = NULL; in tipc_sk_get()
2509 return tsk; in tipc_sk_get()
2517 struct tipc_sock *tsk = NULL; in tipc_sk_get_next() local
2523 if (!entry->tsk) in tipc_sk_get_next()
2525 tsk = entry->tsk; in tipc_sk_get_next()
2526 sock_hold(&tsk->sk); in tipc_sk_get_next()
2531 return tsk; in tipc_sk_get_next()
2534 static void tipc_sk_put(struct tipc_sock *tsk) in tipc_sk_put() argument
2536 sock_put(&tsk->sk); in tipc_sk_put()
2556 struct tipc_sock *tsk = tipc_sk(sk); in tipc_setsockopt() local
2574 res = tsk_set_importance(tsk, value); in tipc_setsockopt()
2578 tsk_set_unreliable(tsk, value); in tipc_setsockopt()
2583 tsk_set_unreturnable(tsk, value); in tipc_setsockopt()
2615 struct tipc_sock *tsk = tipc_sk(sk); in tipc_getsockopt() local
2632 value = tsk_importance(tsk); in tipc_getsockopt()
2635 value = tsk_unreliable(tsk); in tipc_getsockopt()
2638 value = tsk_unreturnable(tsk); in tipc_getsockopt()
2641 value = tsk->conn_timeout; in tipc_getsockopt()