Lines Matching refs:conn

45 static void rds_ib_set_protocol(struct rds_connection *conn, unsigned int version)  in rds_ib_set_protocol()  argument
47 conn->c_version = version; in rds_ib_set_protocol()
53 static void rds_ib_set_flow_control(struct rds_connection *conn, u32 credits) in rds_ib_set_flow_control() argument
55 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_set_flow_control()
60 rds_ib_send_add_credits(conn, credits); in rds_ib_set_flow_control()
95 void rds_ib_cm_connect_complete(struct rds_connection *conn, struct rdma_cm_event *event) in rds_ib_cm_connect_complete() argument
98 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_cm_connect_complete()
102 if (event->param.conn.private_data_len >= sizeof(*dp)) { in rds_ib_cm_connect_complete()
103 dp = event->param.conn.private_data; in rds_ib_cm_connect_complete()
107 rds_ib_set_protocol(conn, in rds_ib_cm_connect_complete()
110 rds_ib_set_flow_control(conn, be32_to_cpu(dp->dp_credit)); in rds_ib_cm_connect_complete()
114 if (conn->c_version < RDS_PROTOCOL(3,1)) { in rds_ib_cm_connect_complete()
117 &conn->c_faddr, in rds_ib_cm_connect_complete()
118 RDS_PROTOCOL_MAJOR(conn->c_version), in rds_ib_cm_connect_complete()
119 RDS_PROTOCOL_MINOR(conn->c_version)); in rds_ib_cm_connect_complete()
120 rds_conn_destroy(conn); in rds_ib_cm_connect_complete()
124 &conn->c_faddr, in rds_ib_cm_connect_complete()
125 RDS_PROTOCOL_MAJOR(conn->c_version), in rds_ib_cm_connect_complete()
126 RDS_PROTOCOL_MINOR(conn->c_version), in rds_ib_cm_connect_complete()
138 rds_ib_recv_refill(conn, 1, GFP_KERNEL); in rds_ib_cm_connect_complete()
149 err = rds_ib_update_ipaddr(ic->rds_ibdev, conn->c_laddr); in rds_ib_cm_connect_complete()
164 rds_send_drop_acked(conn, be64_to_cpu(dp_ack_seq), in rds_ib_cm_connect_complete()
168 rds_connect_complete(conn); in rds_ib_cm_connect_complete()
171 static void rds_ib_cm_fill_conn_param(struct rds_connection *conn, in rds_ib_cm_fill_conn_param() argument
178 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_cm_fill_conn_param()
192 dp->dp_saddr = conn->c_laddr; in rds_ib_cm_fill_conn_param()
193 dp->dp_daddr = conn->c_faddr; in rds_ib_cm_fill_conn_param()
229 struct rds_connection *conn = context; in rds_ib_cq_comp_handler_recv() local
230 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_cq_comp_handler_recv()
232 rdsdebug("conn %p cq %p\n", conn, cq); in rds_ib_cq_comp_handler_recv()
265 struct rds_connection *conn = ic->conn; in rds_ib_tasklet_fn_send() local
275 if (rds_conn_up(conn) && in rds_ib_tasklet_fn_send()
276 (!test_bit(RDS_LL_SEND_FULL, &conn->c_flags) || in rds_ib_tasklet_fn_send()
277 test_bit(0, &conn->c_map_queued))) in rds_ib_tasklet_fn_send()
278 rds_send_xmit(ic->conn); in rds_ib_tasklet_fn_send()
284 struct rds_connection *conn = ic->conn; in rds_ib_tasklet_fn_recv() local
289 rds_conn_drop(conn); in rds_ib_tasklet_fn_recv()
301 rds_send_drop_acked(conn, state.ack_recv, NULL); in rds_ib_tasklet_fn_recv()
305 if (rds_conn_up(conn)) in rds_ib_tasklet_fn_recv()
311 struct rds_connection *conn = data; in rds_ib_qp_event_handler() local
312 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_qp_event_handler()
314 rdsdebug("conn %p ic %p event %u (%s)\n", conn, ic, event->event, in rds_ib_qp_event_handler()
325 &conn->c_laddr, &conn->c_faddr); in rds_ib_qp_event_handler()
326 rds_conn_drop(conn); in rds_ib_qp_event_handler()
333 struct rds_connection *conn = context; in rds_ib_cq_comp_handler_send() local
334 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_cq_comp_handler_send()
336 rdsdebug("conn %p cq %p\n", conn, cq); in rds_ib_cq_comp_handler_send()
347 static int rds_ib_setup_qp(struct rds_connection *conn) in rds_ib_setup_qp() argument
349 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_setup_qp()
365 rds_ib_add_conn(rds_ibdev, conn); in rds_ib_setup_qp()
378 rds_ib_cq_event_handler, conn, in rds_ib_setup_qp()
389 rds_ib_cq_event_handler, conn, in rds_ib_setup_qp()
413 attr.qp_context = conn; in rds_ib_setup_qp()
480 rdsdebug("conn %p pd %p cq %p %p\n", conn, ic->i_pd, in rds_ib_setup_qp()
490 const struct rds_ib_connect_private *dp = event->param.conn.private_data; in rds_ib_protocol_compatible()
505 if (!event->param.conn.private_data_len) { in rds_ib_protocol_compatible()
512 if (event->param.conn.private_data_len < sizeof (*dp) || in rds_ib_protocol_compatible()
534 const struct rds_ib_connect_private *dp = event->param.conn.private_data; in rds_ib_cm_handle_connect()
536 struct rds_connection *conn = NULL; in rds_ib_cm_handle_connect() local
554 conn = rds_conn_create(&init_net, dp->dp_daddr, dp->dp_saddr, in rds_ib_cm_handle_connect()
556 if (IS_ERR(conn)) { in rds_ib_cm_handle_connect()
557 rdsdebug("rds_conn_create failed (%ld)\n", PTR_ERR(conn)); in rds_ib_cm_handle_connect()
558 conn = NULL; in rds_ib_cm_handle_connect()
569 mutex_lock(&conn->c_cm_lock); in rds_ib_cm_handle_connect()
570 if (!rds_conn_transition(conn, RDS_CONN_DOWN, RDS_CONN_CONNECTING)) { in rds_ib_cm_handle_connect()
571 if (rds_conn_state(conn) == RDS_CONN_UP) { in rds_ib_cm_handle_connect()
573 rds_conn_drop(conn); in rds_ib_cm_handle_connect()
576 if (rds_conn_state(conn) == RDS_CONN_CONNECTING) { in rds_ib_cm_handle_connect()
583 ic = conn->c_transport_data; in rds_ib_cm_handle_connect()
585 rds_ib_set_protocol(conn, version); in rds_ib_cm_handle_connect()
586 rds_ib_set_flow_control(conn, be32_to_cpu(dp->dp_credit)); in rds_ib_cm_handle_connect()
591 rds_send_drop_acked(conn, be64_to_cpu(dp->dp_ack_seq), NULL); in rds_ib_cm_handle_connect()
597 cm_id->context = conn; in rds_ib_cm_handle_connect()
603 err = rds_ib_setup_qp(conn); in rds_ib_cm_handle_connect()
605 rds_ib_conn_error(conn, "rds_ib_setup_qp failed (%d)\n", err); in rds_ib_cm_handle_connect()
609 rds_ib_cm_fill_conn_param(conn, &conn_param, &dp_rep, version, in rds_ib_cm_handle_connect()
610 event->param.conn.responder_resources, in rds_ib_cm_handle_connect()
611 event->param.conn.initiator_depth); in rds_ib_cm_handle_connect()
616 rds_ib_conn_error(conn, "rdma_accept failed (%d)\n", err); in rds_ib_cm_handle_connect()
619 if (conn) in rds_ib_cm_handle_connect()
620 mutex_unlock(&conn->c_cm_lock); in rds_ib_cm_handle_connect()
629 struct rds_connection *conn = cm_id->context; in rds_ib_cm_initiate_connect() local
630 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_cm_initiate_connect()
637 rds_ib_set_protocol(conn, RDS_PROTOCOL_3_0); in rds_ib_cm_initiate_connect()
640 ret = rds_ib_setup_qp(conn); in rds_ib_cm_initiate_connect()
642 rds_ib_conn_error(conn, "rds_ib_setup_qp failed (%d)\n", ret); in rds_ib_cm_initiate_connect()
646 rds_ib_cm_fill_conn_param(conn, &conn_param, &dp, RDS_PROTOCOL_VERSION, in rds_ib_cm_initiate_connect()
650 rds_ib_conn_error(conn, "rdma_connect failed (%d)\n", ret); in rds_ib_cm_initiate_connect()
663 int rds_ib_conn_connect(struct rds_connection *conn) in rds_ib_conn_connect() argument
665 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_conn_connect()
671 ic->i_cm_id = rdma_create_id(&init_net, rds_rdma_cm_event_handler, conn, in rds_ib_conn_connect()
680 rdsdebug("created cm id %p for conn %p\n", ic->i_cm_id, conn); in rds_ib_conn_connect()
683 src.sin_addr.s_addr = (__force u32)conn->c_laddr; in rds_ib_conn_connect()
687 dest.sin_addr.s_addr = (__force u32)conn->c_faddr; in rds_ib_conn_connect()
709 void rds_ib_conn_shutdown(struct rds_connection *conn) in rds_ib_conn_shutdown() argument
711 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_conn_shutdown()
784 rds_ib_remove_conn(ic->rds_ibdev, conn); in rds_ib_conn_shutdown()
832 int rds_ib_conn_alloc(struct rds_connection *conn, gfp_t gfp) in rds_ib_conn_alloc() argument
867 ic->conn = conn; in rds_ib_conn_alloc()
868 conn->c_transport_data = ic; in rds_ib_conn_alloc()
875 rdsdebug("conn %p conn ic %p\n", conn, conn->c_transport_data); in rds_ib_conn_alloc()
910 __rds_ib_conn_error(struct rds_connection *conn, const char *fmt, ...) in __rds_ib_conn_error() argument
914 rds_conn_drop(conn); in __rds_ib_conn_error()