Lines Matching refs:conn

73 rdsv3_send_reset(struct rdsv3_connection *conn)  in rdsv3_send_reset()  argument
78 RDSV3_DPRINTF4("rdsv3_send_reset", "Enter(conn: %p)", conn); in rdsv3_send_reset()
80 ASSERT(MUTEX_HELD(&conn->c_send_lock)); in rdsv3_send_reset()
82 if (conn->c_xmit_rm) { in rdsv3_send_reset()
83 rm = conn->c_xmit_rm; in rdsv3_send_reset()
91 rdsv3_ib_send_unmap_rdma(conn->c_transport_data, ro); in rdsv3_send_reset()
99 rdsv3_message_unmapped(conn->c_xmit_rm); in rdsv3_send_reset()
100 rdsv3_message_put(conn->c_xmit_rm); in rdsv3_send_reset()
101 conn->c_xmit_rm = NULL; in rdsv3_send_reset()
104 conn->c_xmit_sg = 0; in rdsv3_send_reset()
105 conn->c_xmit_hdr_off = 0; in rdsv3_send_reset()
106 conn->c_xmit_data_off = 0; in rdsv3_send_reset()
107 conn->c_xmit_rdma_sent = 0; in rdsv3_send_reset()
108 conn->c_map_queued = 0; in rdsv3_send_reset()
110 conn->c_unacked_packets = rdsv3_sysctl_max_unacked_packets; in rdsv3_send_reset()
111 conn->c_unacked_bytes = rdsv3_sysctl_max_unacked_bytes; in rdsv3_send_reset()
114 mutex_enter(&conn->c_lock); in rdsv3_send_reset()
115 RDSV3_FOR_EACH_LIST_NODE_SAFE(rm, tmp, &conn->c_retrans, m_conn_item) { in rdsv3_send_reset()
125 list_move_tail(&conn->c_send_queue, &conn->c_retrans); in rdsv3_send_reset()
126 mutex_exit(&conn->c_lock); in rdsv3_send_reset()
128 RDSV3_DPRINTF4("rdsv3_send_reset", "Return(conn: %p)", conn); in rdsv3_send_reset()
146 rdsv3_send_xmit(struct rdsv3_connection *conn) in rdsv3_send_xmit() argument
157 if (!rdsv3_conn_up(conn)) in rdsv3_send_xmit()
160 RDSV3_DPRINTF4("rdsv3_send_xmit", "Enter(conn: %p)", conn); in rdsv3_send_xmit()
172 if (!mutex_tryenter(&conn->c_send_lock)) { in rdsv3_send_xmit()
174 "Another thread running(conn: %p)", conn); in rdsv3_send_xmit()
179 atomic_inc_32(&conn->c_senders); in rdsv3_send_xmit()
181 if (conn->c_trans->xmit_prepare) in rdsv3_send_xmit()
182 conn->c_trans->xmit_prepare(conn); in rdsv3_send_xmit()
197 if (conn->c_map_bytes) { in rdsv3_send_xmit()
198 ret = conn->c_trans->xmit_cong_map(conn, conn->c_lcong, in rdsv3_send_xmit()
199 conn->c_map_offset); in rdsv3_send_xmit()
203 conn->c_map_offset += ret; in rdsv3_send_xmit()
204 conn->c_map_bytes -= ret; in rdsv3_send_xmit()
205 if (conn->c_map_bytes) in rdsv3_send_xmit()
213 rm = conn->c_xmit_rm; in rdsv3_send_xmit()
215 conn->c_xmit_hdr_off == sizeof (struct rdsv3_header) && in rdsv3_send_xmit()
216 conn->c_xmit_sg == rm->m_nents) { in rdsv3_send_xmit()
217 conn->c_xmit_rm = NULL; in rdsv3_send_xmit()
218 conn->c_xmit_sg = 0; in rdsv3_send_xmit()
219 conn->c_xmit_hdr_off = 0; in rdsv3_send_xmit()
220 conn->c_xmit_data_off = 0; in rdsv3_send_xmit()
221 conn->c_xmit_rdma_sent = 0; in rdsv3_send_xmit()
229 if (rm == NULL && test_and_clear_bit(0, &conn->c_map_queued)) { in rdsv3_send_xmit()
230 if (conn->c_trans->xmit_cong_map != NULL) { in rdsv3_send_xmit()
231 conn->c_map_offset = 0; in rdsv3_send_xmit()
232 conn->c_map_bytes = in rdsv3_send_xmit()
238 rm = rdsv3_cong_update_alloc(conn); in rdsv3_send_xmit()
244 conn->c_xmit_rm = rm; in rdsv3_send_xmit()
257 mutex_enter(&conn->c_lock); in rdsv3_send_xmit()
259 if (!list_is_empty(&conn->c_send_queue)) { in rdsv3_send_xmit()
260 rm = list_remove_head(&conn->c_send_queue); in rdsv3_send_xmit()
268 list_insert_tail(&conn->c_retrans, rm); in rdsv3_send_xmit()
271 mutex_exit(&conn->c_lock); in rdsv3_send_xmit()
289 mutex_enter(&conn->c_lock); in rdsv3_send_xmit()
294 mutex_exit(&conn->c_lock); in rdsv3_send_xmit()
301 if (conn->c_unacked_packets == 0 || in rdsv3_send_xmit()
302 conn->c_unacked_bytes < len) { in rdsv3_send_xmit()
305 conn->c_unacked_packets = in rdsv3_send_xmit()
307 conn->c_unacked_bytes = in rdsv3_send_xmit()
311 conn->c_unacked_bytes -= len; in rdsv3_send_xmit()
312 conn->c_unacked_packets--; in rdsv3_send_xmit()
315 conn->c_xmit_rm = rm; in rdsv3_send_xmit()
323 if (rm->m_rdma_op && !conn->c_xmit_rdma_sent) { in rdsv3_send_xmit()
324 ret = conn->c_trans->xmit_rdma(conn, rm->m_rdma_op); in rdsv3_send_xmit()
327 conn->c_xmit_rdma_sent = 1; in rdsv3_send_xmit()
335 if (conn->c_xmit_hdr_off < sizeof (struct rdsv3_header) || in rdsv3_send_xmit()
336 conn->c_xmit_sg < rm->m_nents) { in rdsv3_send_xmit()
337 ret = conn->c_trans->xmit(conn, rm, in rdsv3_send_xmit()
338 conn->c_xmit_hdr_off, in rdsv3_send_xmit()
339 conn->c_xmit_sg, in rdsv3_send_xmit()
340 conn->c_xmit_data_off); in rdsv3_send_xmit()
344 if (conn->c_xmit_hdr_off < in rdsv3_send_xmit()
348 conn->c_xmit_hdr_off); in rdsv3_send_xmit()
349 conn->c_xmit_hdr_off += tmp; in rdsv3_send_xmit()
353 sg = &rm->m_sg[conn->c_xmit_sg]; in rdsv3_send_xmit()
356 conn->c_xmit_data_off); in rdsv3_send_xmit()
357 conn->c_xmit_data_off += tmp; in rdsv3_send_xmit()
359 if (conn->c_xmit_data_off == rdsv3_sg_len(sg)) { in rdsv3_send_xmit()
360 conn->c_xmit_data_off = 0; in rdsv3_send_xmit()
362 conn->c_xmit_sg++; in rdsv3_send_xmit()
364 conn->c_xmit_sg == rm->m_nents)); in rdsv3_send_xmit()
374 if (conn->c_trans->xmit_complete) in rdsv3_send_xmit()
375 conn->c_trans->xmit_complete(conn); in rdsv3_send_xmit()
389 mutex_exit(&conn->c_send_lock); in rdsv3_send_xmit()
391 if (conn->c_map_bytes || (send_quota == 0 && !was_empty)) { in rdsv3_send_xmit()
399 atomic_dec_32(&conn->c_senders); in rdsv3_send_xmit()
406 mutex_enter(&conn->c_lock); in rdsv3_send_xmit()
407 if (!list_is_empty(&conn->c_send_queue)) { in rdsv3_send_xmit()
411 mutex_exit(&conn->c_lock); in rdsv3_send_xmit()
416 conn, ret); in rdsv3_send_xmit()
449 rdsv3_send_acked_before(struct rdsv3_connection *conn, uint64_t seq) in rdsv3_send_acked_before() argument
454 RDSV3_DPRINTF4("rdsv3_send_acked_before", "Enter(conn: %p)", conn); in rdsv3_send_acked_before()
456 mutex_enter(&conn->c_lock); in rdsv3_send_acked_before()
459 rm = list_head(&conn->c_retrans); in rdsv3_send_acked_before()
464 rm = list_head(&conn->c_send_queue); in rdsv3_send_acked_before()
468 mutex_exit(&conn->c_lock); in rdsv3_send_acked_before()
470 RDSV3_DPRINTF4("rdsv3_send_acked_before", "Return(conn: %p)", conn); in rdsv3_send_acked_before()
559 rdsv3_send_get_message(struct rdsv3_connection *conn, in rdsv3_send_get_message() argument
564 RDSV3_DPRINTF4("rdsv3_send_get_message", "Enter(conn: %p)", conn); in rdsv3_send_get_message()
566 mutex_enter(&conn->c_lock); in rdsv3_send_get_message()
568 RDSV3_FOR_EACH_LIST_NODE_SAFE(rm, tmp, &conn->c_retrans, m_conn_item) { in rdsv3_send_get_message()
576 RDSV3_FOR_EACH_LIST_NODE_SAFE(rm, tmp, &conn->c_send_queue, in rdsv3_send_get_message()
586 mutex_exit(&conn->c_lock); in rdsv3_send_get_message()
682 rdsv3_send_drop_acked(struct rdsv3_connection *conn, uint64_t ack, in rdsv3_send_drop_acked() argument
688 RDSV3_DPRINTF4("rdsv3_send_drop_acked", "Enter(conn: %p)", conn); in rdsv3_send_drop_acked()
693 mutex_enter(&conn->c_lock); in rdsv3_send_drop_acked()
695 RDSV3_FOR_EACH_LIST_NODE_SAFE(rm, tmp, &conn->c_retrans, m_conn_item) { in rdsv3_send_drop_acked()
711 mutex_exit(&conn->c_lock); in rdsv3_send_drop_acked()
716 RDSV3_DPRINTF4("rdsv3_send_drop_acked", "Return(conn: %p)", conn); in rdsv3_send_drop_acked()
723 struct rdsv3_connection *conn; in rdsv3_send_drop_to() local
749 conn = NULL; in rdsv3_send_drop_to()
772 if (conn != rm->m_inc.i_conn) { in rdsv3_send_drop_to()
773 if (conn) in rdsv3_send_drop_to()
774 mutex_exit(&conn->c_lock); in rdsv3_send_drop_to()
775 conn = rm->m_inc.i_conn; in rdsv3_send_drop_to()
776 mutex_enter(&conn->c_lock); in rdsv3_send_drop_to()
785 if (conn) in rdsv3_send_drop_to()
786 mutex_exit(&conn->c_lock); in rdsv3_send_drop_to()
807 rdsv3_send_queue_rm(struct rdsv3_sock *rs, struct rdsv3_connection *conn, in rdsv3_send_queue_rm() argument
858 rm->m_inc.i_conn = conn; in rdsv3_send_queue_rm()
861 mutex_enter(&conn->c_lock); in rdsv3_send_queue_rm()
862 rm->m_inc.i_hdr.h_sequence = htonll(conn->c_next_tx_seq++); in rdsv3_send_queue_rm()
863 list_insert_tail(&conn->c_send_queue, rm); in rdsv3_send_queue_rm()
865 mutex_exit(&conn->c_lock); in rdsv3_send_queue_rm()
942 struct rdsv3_connection *conn; in rdsv3_sendmsg() local
1008 conn = rs->rs_conn; in rdsv3_sendmsg()
1010 conn = rdsv3_conn_create_outgoing(rs->rs_bound_addr, in rdsv3_sendmsg()
1012 if (IS_ERR(conn)) { in rdsv3_sendmsg()
1014 ret = PTR_ERR(conn); in rdsv3_sendmsg()
1020 rs->rs_conn = conn; in rdsv3_sendmsg()
1025 conn->c_trans->xmit_rdma == NULL) { in rdsv3_sendmsg()
1027 rm->m_rdma_op, conn->c_trans->xmit_rdma); in rdsv3_sendmsg()
1037 if (rdsv3_conn_state(conn) == RDSV3_CONN_DOWN && in rdsv3_sendmsg()
1038 !test_and_set_bit(RDSV3_RECONNECT_PENDING, &conn->c_flags)) in rdsv3_sendmsg()
1039 rdsv3_queue_delayed_work(rdsv3_wq, &conn->c_conn_w, 0); in rdsv3_sendmsg()
1041 ret = rdsv3_cong_wait(conn->c_fcong, dport, nonblock, rs); in rdsv3_sendmsg()
1053 (void) rdsv3_send_queue_rm(rs, conn, rm, rs->rs_bound_port, dport, in rdsv3_sendmsg()
1075 (rdsv3_send_queue_rm(rs, conn, rm, rs->rs_bound_port, in rdsv3_sendmsg()
1087 while (!rdsv3_send_queue_rm(rs, conn, rm, rs->rs_bound_port, in rdsv3_sendmsg()
1118 if (!test_bit(RDSV3_LL_SEND_FULL, &conn->c_flags)) in rdsv3_sendmsg()
1119 (void) rdsv3_send_worker(&conn->c_send_w.work); in rdsv3_sendmsg()
1145 rdsv3_send_pong(struct rdsv3_connection *conn, uint16_be_t dport) in rdsv3_send_pong() argument
1150 RDSV3_DPRINTF4("rdsv3_send_pong", "Enter(conn: %p)", conn); in rdsv3_send_pong()
1158 rm->m_daddr = conn->c_faddr; in rdsv3_send_pong()
1165 if (rdsv3_conn_state(conn) == RDSV3_CONN_DOWN && in rdsv3_send_pong()
1166 !test_and_set_bit(RDSV3_RECONNECT_PENDING, &conn->c_flags)) in rdsv3_send_pong()
1167 rdsv3_queue_delayed_work(rdsv3_wq, &conn->c_conn_w, 0); in rdsv3_send_pong()
1169 ret = rdsv3_cong_wait(conn->c_fcong, dport, 1, NULL); in rdsv3_send_pong()
1173 mutex_enter(&conn->c_lock); in rdsv3_send_pong()
1174 list_insert_tail(&conn->c_send_queue, rm); in rdsv3_send_pong()
1177 rm->m_inc.i_conn = conn; in rdsv3_send_pong()
1180 conn->c_next_tx_seq); in rdsv3_send_pong()
1181 conn->c_next_tx_seq++; in rdsv3_send_pong()
1182 mutex_exit(&conn->c_lock); in rdsv3_send_pong()
1187 if (!test_bit(RDSV3_LL_SEND_FULL, &conn->c_flags)) in rdsv3_send_pong()
1188 (void) rdsv3_send_xmit(conn); in rdsv3_send_pong()
1192 RDSV3_DPRINTF4("rdsv3_send_pong", "Return(conn: %p)", conn); in rdsv3_send_pong()