Lines Matching refs:conn

49 static void rds_ib_set_protocol(struct rds_connection *conn, unsigned int version)  in rds_ib_set_protocol()  argument
51 conn->c_version = version; in rds_ib_set_protocol()
57 static void rds_ib_set_flow_control(struct rds_connection *conn, u32 credits) in rds_ib_set_flow_control() argument
59 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_set_flow_control()
64 rds_ib_send_add_credits(conn, credits); in rds_ib_set_flow_control()
99 void rds_ib_cm_connect_complete(struct rds_connection *conn, struct rdma_cm_event *event) in rds_ib_cm_connect_complete() argument
101 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_cm_connect_complete()
110 dp = event->param.conn.private_data; in rds_ib_cm_connect_complete()
111 if (conn->c_isv6) { in rds_ib_cm_connect_complete()
112 if (event->param.conn.private_data_len >= in rds_ib_cm_connect_complete()
124 } else if (event->param.conn.private_data_len >= in rds_ib_cm_connect_complete()
134 rds_ib_set_protocol(conn, RDS_PROTOCOL(major, minor)); in rds_ib_cm_connect_complete()
135 rds_ib_set_flow_control(conn, be32_to_cpu(credit)); in rds_ib_cm_connect_complete()
138 if (conn->c_version < RDS_PROTOCOL_VERSION) { in rds_ib_cm_connect_complete()
139 if (conn->c_version != RDS_PROTOCOL_COMPAT_VERSION) { in rds_ib_cm_connect_complete()
141 &conn->c_laddr, &conn->c_faddr, in rds_ib_cm_connect_complete()
142 RDS_PROTOCOL_MAJOR(conn->c_version), in rds_ib_cm_connect_complete()
143 RDS_PROTOCOL_MINOR(conn->c_version)); in rds_ib_cm_connect_complete()
144 rds_conn_destroy(conn); in rds_ib_cm_connect_complete()
151 &conn->c_laddr, &conn->c_faddr, conn->c_tos, in rds_ib_cm_connect_complete()
152 RDS_PROTOCOL_MAJOR(conn->c_version), in rds_ib_cm_connect_complete()
153 RDS_PROTOCOL_MINOR(conn->c_version), in rds_ib_cm_connect_complete()
169 rds_ib_recv_refill(conn, 1, GFP_KERNEL); in rds_ib_cm_connect_complete()
180 err = rds_ib_update_ipaddr(ic->rds_ibdev, &conn->c_laddr); in rds_ib_cm_connect_complete()
189 rds_send_drop_acked(conn, be64_to_cpu(ack_seq), in rds_ib_cm_connect_complete()
193 conn->c_proposed_version = conn->c_version; in rds_ib_cm_connect_complete()
194 rds_connect_complete(conn); in rds_ib_cm_connect_complete()
197 static void rds_ib_cm_fill_conn_param(struct rds_connection *conn, in rds_ib_cm_fill_conn_param() argument
205 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_cm_fill_conn_param()
220 dp->ricp_v6.dp_saddr = conn->c_laddr; in rds_ib_cm_fill_conn_param()
221 dp->ricp_v6.dp_daddr = conn->c_faddr; in rds_ib_cm_fill_conn_param()
230 dp->ricp_v6.dp_cmn.ricpc_dp_toss = conn->c_tos; in rds_ib_cm_fill_conn_param()
235 dp->ricp_v4.dp_saddr = conn->c_laddr.s6_addr32[3]; in rds_ib_cm_fill_conn_param()
236 dp->ricp_v4.dp_daddr = conn->c_faddr.s6_addr32[3]; in rds_ib_cm_fill_conn_param()
245 dp->ricp_v4.dp_cmn.ricpc_dp_toss = conn->c_tos; in rds_ib_cm_fill_conn_param()
283 struct rds_connection *conn = context; in rds_ib_cq_comp_handler_recv() local
284 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_cq_comp_handler_recv()
286 rdsdebug("conn %p cq %p\n", conn, cq); in rds_ib_cq_comp_handler_recv()
319 struct rds_connection *conn = ic->conn; in rds_ib_tasklet_fn_send() local
331 if (rds_conn_up(conn) && in rds_ib_tasklet_fn_send()
332 (!test_bit(RDS_LL_SEND_FULL, &conn->c_flags) || in rds_ib_tasklet_fn_send()
333 test_bit(0, &conn->c_map_queued))) in rds_ib_tasklet_fn_send()
334 rds_send_xmit(&ic->conn->c_path[0]); in rds_ib_tasklet_fn_send()
359 struct rds_connection *conn = ic->conn; in rds_ib_tasklet_fn_recv() local
364 rds_conn_drop(conn); in rds_ib_tasklet_fn_recv()
380 rds_send_drop_acked(conn, state.ack_recv, NULL); in rds_ib_tasklet_fn_recv()
384 if (rds_conn_up(conn)) in rds_ib_tasklet_fn_recv()
390 struct rds_connection *conn = data; in rds_ib_qp_event_handler() local
391 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_qp_event_handler()
393 rdsdebug("conn %p ic %p event %u (%s)\n", conn, ic, event->event, in rds_ib_qp_event_handler()
403 &conn->c_laddr, &conn->c_faddr); in rds_ib_qp_event_handler()
404 rds_conn_drop(conn); in rds_ib_qp_event_handler()
411 struct rds_connection *conn = context; in rds_ib_cq_comp_handler_send() local
412 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_cq_comp_handler_send()
414 rdsdebug("conn %p cq %p\n", conn, cq); in rds_ib_cq_comp_handler_send()
536 static int rds_ib_setup_qp(struct rds_connection *conn) in rds_ib_setup_qp() argument
538 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_setup_qp()
561 rds_ib_add_conn(rds_ibdev, conn); in rds_ib_setup_qp()
580 rds_ib_cq_event_handler, conn, in rds_ib_setup_qp()
594 rds_ib_cq_event_handler, conn, in rds_ib_setup_qp()
619 attr.qp_context = conn; in rds_ib_setup_qp()
686 rdsdebug("conn %p pd %p cq %p %p\n", conn, ic->i_pd, in rds_ib_setup_qp()
720 rds_ib_remove_conn(rds_ibdev, conn); in rds_ib_setup_qp()
729 const union rds_ib_conn_priv *dp = event->param.conn.private_data; in rds_ib_protocol_compatible()
746 if (!event->param.conn.private_data_len) { in rds_ib_protocol_compatible()
765 if (event->param.conn.private_data_len < data_len || major == 0) in rds_ib_protocol_compatible()
822 struct rds_connection *conn = NULL; in rds_ib_cm_handle_connect() local
843 dp = event->param.conn.private_data; in rds_ib_cm_handle_connect()
889 conn = rds_conn_create(&init_net, daddr6, saddr6, in rds_ib_cm_handle_connect()
892 if (IS_ERR(conn)) { in rds_ib_cm_handle_connect()
893 rdsdebug("rds_conn_create failed (%ld)\n", PTR_ERR(conn)); in rds_ib_cm_handle_connect()
894 conn = NULL; in rds_ib_cm_handle_connect()
905 mutex_lock(&conn->c_cm_lock); in rds_ib_cm_handle_connect()
906 if (!rds_conn_transition(conn, RDS_CONN_DOWN, RDS_CONN_CONNECTING)) { in rds_ib_cm_handle_connect()
907 if (rds_conn_state(conn) == RDS_CONN_UP) { in rds_ib_cm_handle_connect()
909 rds_conn_drop(conn); in rds_ib_cm_handle_connect()
912 if (rds_conn_state(conn) == RDS_CONN_CONNECTING) { in rds_ib_cm_handle_connect()
919 ic = conn->c_transport_data; in rds_ib_cm_handle_connect()
921 rds_ib_set_protocol(conn, version); in rds_ib_cm_handle_connect()
922 rds_ib_set_flow_control(conn, be32_to_cpu(dp_cmn->ricpc_credit)); in rds_ib_cm_handle_connect()
927 rds_send_drop_acked(conn, be64_to_cpu(dp_cmn->ricpc_ack_seq), in rds_ib_cm_handle_connect()
934 cm_id->context = conn; in rds_ib_cm_handle_connect()
940 err = rds_ib_setup_qp(conn); in rds_ib_cm_handle_connect()
942 rds_ib_conn_error(conn, "rds_ib_setup_qp failed (%d)\n", err); in rds_ib_cm_handle_connect()
946 rds_ib_cm_fill_conn_param(conn, &conn_param, &dp_rep, version, in rds_ib_cm_handle_connect()
947 event->param.conn.responder_resources, in rds_ib_cm_handle_connect()
948 event->param.conn.initiator_depth, isv6); in rds_ib_cm_handle_connect()
952 rds_ib_conn_error(conn, "rdma_accept failed\n"); in rds_ib_cm_handle_connect()
955 if (conn) in rds_ib_cm_handle_connect()
956 mutex_unlock(&conn->c_cm_lock); in rds_ib_cm_handle_connect()
966 struct rds_connection *conn = cm_id->context; in rds_ib_cm_initiate_connect() local
967 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_cm_initiate_connect()
974 rds_ib_set_protocol(conn, RDS_PROTOCOL_4_1); in rds_ib_cm_initiate_connect()
977 ret = rds_ib_setup_qp(conn); in rds_ib_cm_initiate_connect()
979 rds_ib_conn_error(conn, "rds_ib_setup_qp failed (%d)\n", ret); in rds_ib_cm_initiate_connect()
983 rds_ib_cm_fill_conn_param(conn, &conn_param, &dp, in rds_ib_cm_initiate_connect()
984 conn->c_proposed_version, in rds_ib_cm_initiate_connect()
988 rds_ib_conn_error(conn, "rdma_connect_locked failed (%d)\n", in rds_ib_cm_initiate_connect()
1005 struct rds_connection *conn = cp->cp_conn; in rds_ib_conn_path_connect() local
1011 ic = conn->c_transport_data; in rds_ib_conn_path_connect()
1016 if (conn->c_isv6) in rds_ib_conn_path_connect()
1021 ic->i_cm_id = rdma_create_id(&init_net, handler, conn, in rds_ib_conn_path_connect()
1030 rdsdebug("created cm id %p for conn %p\n", ic->i_cm_id, conn); in rds_ib_conn_path_connect()
1032 if (ipv6_addr_v4mapped(&conn->c_faddr)) { in rds_ib_conn_path_connect()
1037 sin->sin_addr.s_addr = conn->c_laddr.s6_addr32[3]; in rds_ib_conn_path_connect()
1042 sin->sin_addr.s_addr = conn->c_faddr.s6_addr32[3]; in rds_ib_conn_path_connect()
1049 sin6->sin6_addr = conn->c_laddr; in rds_ib_conn_path_connect()
1051 sin6->sin6_scope_id = conn->c_dev_if; in rds_ib_conn_path_connect()
1055 sin6->sin6_addr = conn->c_faddr; in rds_ib_conn_path_connect()
1057 sin6->sin6_scope_id = conn->c_dev_if; in rds_ib_conn_path_connect()
1081 struct rds_connection *conn = cp->cp_conn; in rds_ib_conn_path_shutdown() local
1082 struct rds_ib_connection *ic = conn->c_transport_data; in rds_ib_conn_path_shutdown()
1185 rds_ib_remove_conn(ic->rds_ibdev, conn); in rds_ib_conn_path_shutdown()
1232 int rds_ib_conn_alloc(struct rds_connection *conn, gfp_t gfp) in rds_ib_conn_alloc() argument
1268 ic->conn = conn; in rds_ib_conn_alloc()
1269 conn->c_transport_data = ic; in rds_ib_conn_alloc()
1276 rdsdebug("conn %p conn ic %p\n", conn, conn->c_transport_data); in rds_ib_conn_alloc()
1311 __rds_ib_conn_error(struct rds_connection *conn, const char *fmt, ...) in __rds_ib_conn_error() argument
1315 rds_conn_drop(conn); in __rds_ib_conn_error()