Lines Matching refs:tc
92 u32 rds_tcp_write_seq(struct rds_tcp_connection *tc)
95 return tcp_sk(tc->t_sock->sk)->write_seq;
98 u32 rds_tcp_snd_una(struct rds_tcp_connection *tc)
100 return tcp_sk(tc->t_sock->sk)->snd_una;
104 struct rds_tcp_connection *tc)
106 rdsdebug("restoring sock %p callbacks from tc %p\n", sock, tc);
111 list_del_init(&tc->t_list_item);
115 if (!tc->t_cpath->cp_conn->c_isv6)
119 tc->t_sock = NULL;
121 sock->sk->sk_write_space = tc->t_orig_write_space;
122 sock->sk->sk_data_ready = tc->t_orig_data_ready;
123 sock->sk->sk_state_change = tc->t_orig_state_change;
131 * returns the existing tc->t_sock.
133 * The only functions that set tc->t_sock are rds_tcp_set_callbacks
141 struct rds_tcp_connection *tc = cp->cp_transport_data;
142 struct socket *osock = tc->t_sock;
173 if (tc->t_tinc) {
174 rds_inc_put(&tc->t_tinc->ti_inc);
175 tc->t_tinc = NULL;
177 tc->t_tinc_hdr_rem = sizeof(struct rds_header);
178 tc->t_tinc_data_rem = 0;
179 rds_tcp_restore_callbacks(osock, tc);
189 /* Add tc to rds_tcp_tc_list and set tc->t_sock. See comments
195 struct rds_tcp_connection *tc = cp->cp_transport_data;
197 rdsdebug("setting sock %p callbacks to tc %p\n", sock, tc);
202 list_add_tail(&tc->t_list_item, &rds_tcp_tc_list);
206 if (!tc->t_cpath->cp_conn->c_isv6)
214 tc->t_sock = sock;
215 tc->t_cpath = cp;
216 tc->t_orig_data_ready = sock->sk->sk_data_ready;
217 tc->t_orig_write_space = sock->sk->sk_write_space;
218 tc->t_orig_state_change = sock->sk->sk_state_change;
236 struct rds_tcp_connection *tc;
244 list_for_each_entry(tc, &rds_tcp_tc_list, t_list_item) {
245 struct inet_sock *inet = inet_sk(tc->t_sock->sk);
247 if (tc->t_cpath->cp_conn->c_isv6)
255 tsinfo.hdr_rem = tc->t_tinc_hdr_rem;
256 tsinfo.data_rem = tc->t_tinc_data_rem;
257 tsinfo.last_sent_nxt = tc->t_last_sent_nxt;
258 tsinfo.last_expected_una = tc->t_last_expected_una;
259 tsinfo.last_seen_una = tc->t_last_seen_una;
260 tsinfo.tos = tc->t_cpath->cp_conn->c_tos;
282 struct rds_tcp_connection *tc;
290 list_for_each_entry(tc, &rds_tcp_tc_list, t_list_item) {
291 struct sock *sk = tc->t_sock->sk;
299 tsinfo6.hdr_rem = tc->t_tinc_hdr_rem;
300 tsinfo6.data_rem = tc->t_tinc_data_rem;
301 tsinfo6.last_sent_nxt = tc->t_last_sent_nxt;
302 tsinfo6.last_expected_una = tc->t_last_expected_una;
303 tsinfo6.last_seen_una = tc->t_last_seen_una;
353 struct rds_tcp_connection *tc = arg;
356 rdsdebug("freeing tc %p\n", tc);
359 if (!tc->t_tcp_node_detached)
360 list_del(&tc->t_tcp_node);
363 kmem_cache_free(rds_tcp_conn_slab, tc);
368 struct rds_tcp_connection *tc;
373 tc = kmem_cache_alloc(rds_tcp_conn_slab, gfp);
374 if (!tc) {
378 mutex_init(&tc->t_conn_path_lock);
379 tc->t_sock = NULL;
380 tc->t_tinc = NULL;
381 tc->t_tinc_hdr_rem = sizeof(struct rds_header);
382 tc->t_tinc_data_rem = 0;
384 conn->c_path[i].cp_transport_data = tc;
385 tc->t_cpath = &conn->c_path[i];
386 tc->t_tcp_node_detached = true;
388 rdsdebug("rds_conn_path [%d] tc %p\n", i,
393 tc = conn->c_path[i].cp_transport_data;
394 tc->t_tcp_node_detached = false;
395 list_add_tail(&tc->t_tcp_node, &rds_tcp_conn_list);
408 struct rds_tcp_connection *tc, *_tc;
410 list_for_each_entry_safe(tc, _tc, list, t_tcp_node) {
411 if (tc->t_cpath->cp_conn == conn)
429 struct rds_tcp_connection *tc, *_tc;
434 list_for_each_entry_safe(tc, _tc, &rds_tcp_conn_list, t_tcp_node) {
435 if (!list_has_conn(&tmp_list, tc->t_cpath->cp_conn))
436 list_move_tail(&tc->t_tcp_node, &tmp_list);
440 list_for_each_entry_safe(tc, _tc, &tmp_list, t_tcp_node)
441 rds_conn_destroy(tc->t_cpath->cp_conn);
608 struct rds_tcp_connection *tc, *_tc;
616 list_for_each_entry_safe(tc, _tc, &rds_tcp_conn_list, t_tcp_node) {
617 struct net *c_net = read_pnet(&tc->t_cpath->cp_conn->c_net);
621 if (!list_has_conn(&tmp_list, tc->t_cpath->cp_conn)) {
622 list_move_tail(&tc->t_tcp_node, &tmp_list);
624 list_del(&tc->t_tcp_node);
625 tc->t_tcp_node_detached = true;
629 list_for_each_entry_safe(tc, _tc, &tmp_list, t_tcp_node)
630 rds_conn_destroy(tc->t_cpath->cp_conn);
671 struct rds_tcp_connection *tc, *_tc;
674 list_for_each_entry_safe(tc, _tc, &rds_tcp_conn_list, t_tcp_node) {
675 struct net *c_net = read_pnet(&tc->t_cpath->cp_conn->c_net);
677 if (net != c_net || !tc->t_sock)
681 rds_conn_path_drop(tc->t_cpath, false);