Lines Matching refs:conn

49 static void rds_ib_set_protocol(struct rds_connection *conn, unsigned int version)
51 conn->c_version = version;
57 static void rds_ib_set_flow_control(struct rds_connection *conn, u32 credits)
59 struct rds_ib_connection *ic = conn->c_transport_data;
64 rds_ib_send_add_credits(conn, credits);
74 void rds_ib_cm_connect_complete(struct rds_connection *conn, struct rdma_cm_event *event)
76 struct rds_ib_connection *ic = conn->c_transport_data;
84 dp = event->param.conn.private_data;
85 if (conn->c_isv6) {
86 if (event->param.conn.private_data_len >=
98 } else if (event->param.conn.private_data_len >=
108 rds_ib_set_protocol(conn, RDS_PROTOCOL(major, minor));
109 rds_ib_set_flow_control(conn, be32_to_cpu(credit));
112 if (conn->c_version < RDS_PROTOCOL_VERSION) {
113 if (conn->c_version != RDS_PROTOCOL_COMPAT_VERSION) {
115 &conn->c_laddr, &conn->c_faddr,
116 RDS_PROTOCOL_MAJOR(conn->c_version),
117 RDS_PROTOCOL_MINOR(conn->c_version));
118 rds_conn_destroy(conn);
123 pr_notice("RDS/IB: %s conn connected <%pI6c,%pI6c,%d> version %u.%u%s\n",
125 &conn->c_laddr, &conn->c_faddr, conn->c_tos,
126 RDS_PROTOCOL_MAJOR(conn->c_version),
127 RDS_PROTOCOL_MINOR(conn->c_version),
143 rds_ib_recv_refill(conn, 1, GFP_KERNEL);
146 err = rds_ib_update_ipaddr(ic->rds_ibdev, &conn->c_laddr);
155 rds_send_drop_acked(conn, be64_to_cpu(ack_seq),
159 conn->c_proposed_version = conn->c_version;
160 rds_connect_complete(conn);
163 static void rds_ib_cm_fill_conn_param(struct rds_connection *conn,
171 struct rds_ib_connection *ic = conn->c_transport_data;
186 dp->ricp_v6.dp_saddr = conn->c_laddr;
187 dp->ricp_v6.dp_daddr = conn->c_faddr;
196 dp->ricp_v6.dp_cmn.ricpc_dp_toss = conn->c_tos;
201 dp->ricp_v4.dp_saddr = conn->c_laddr.s6_addr32[3];
202 dp->ricp_v4.dp_daddr = conn->c_faddr.s6_addr32[3];
211 dp->ricp_v4.dp_cmn.ricpc_dp_toss = conn->c_tos;
249 struct rds_connection *conn = context;
250 struct rds_ib_connection *ic = conn->c_transport_data;
252 rdsdebug("conn %p cq %p\n", conn, cq);
285 struct rds_connection *conn = ic->conn;
297 if (rds_conn_up(conn) &&
298 (!test_bit(RDS_LL_SEND_FULL, &conn->c_flags) ||
299 test_bit(0, &conn->c_map_queued)))
300 rds_send_xmit(&ic->conn->c_path[0]);
325 struct rds_connection *conn = ic->conn;
330 rds_conn_drop(conn);
346 rds_send_drop_acked(conn, state.ack_recv, NULL);
350 if (rds_conn_up(conn))
356 struct rds_connection *conn = data;
357 struct rds_ib_connection *ic = conn->c_transport_data;
359 rdsdebug("conn %p ic %p event %u (%s)\n", conn, ic, event->event,
369 &conn->c_laddr, &conn->c_faddr);
370 rds_conn_drop(conn);
377 struct rds_connection *conn = context;
378 struct rds_ib_connection *ic = conn->c_transport_data;
380 rdsdebug("conn %p cq %p\n", conn, cq);
502 static int rds_ib_setup_qp(struct rds_connection *conn)
504 struct rds_ib_connection *ic = conn->c_transport_data;
526 /* add the conn now so that connection establishment has the dev */
527 rds_ib_add_conn(rds_ibdev, conn);
546 rds_ib_cq_event_handler, conn,
560 rds_ib_cq_event_handler, conn,
585 attr.qp_context = conn;
652 rdsdebug("conn %p pd %p cq %p %p\n", conn, ic->i_pd,
686 rds_ib_remove_conn(rds_ibdev, conn);
695 const union rds_ib_conn_priv *dp = event->param.conn.private_data;
712 if (!event->param.conn.private_data_len) {
731 if (event->param.conn.private_data_len < data_len || major == 0)
788 struct rds_connection *conn = NULL;
809 dp = event->param.conn.private_data;
855 conn = rds_conn_create(&init_net, daddr6, saddr6,
858 if (IS_ERR(conn)) {
859 rdsdebug("rds_conn_create failed (%ld)\n", PTR_ERR(conn));
860 conn = NULL;
871 mutex_lock(&conn->c_cm_lock);
872 if (!rds_conn_transition(conn, RDS_CONN_DOWN, RDS_CONN_CONNECTING)) {
873 if (rds_conn_state(conn) == RDS_CONN_UP) {
875 rds_conn_drop(conn);
878 if (rds_conn_state(conn) == RDS_CONN_CONNECTING) {
885 ic = conn->c_transport_data;
887 rds_ib_set_protocol(conn, version);
888 rds_ib_set_flow_control(conn, be32_to_cpu(dp_cmn->ricpc_credit));
893 rds_send_drop_acked(conn, be64_to_cpu(dp_cmn->ricpc_ack_seq),
900 cm_id->context = conn;
906 err = rds_ib_setup_qp(conn);
908 rds_ib_conn_error(conn, "rds_ib_setup_qp failed (%d)\n", err);
912 rds_ib_cm_fill_conn_param(conn, &conn_param, &dp_rep, version,
913 event->param.conn.responder_resources,
914 event->param.conn.initiator_depth, isv6);
919 rds_ib_conn_error(conn, "rdma_accept failed\n");
922 if (conn)
923 mutex_unlock(&conn->c_cm_lock);
933 struct rds_connection *conn = cm_id->context;
934 struct rds_ib_connection *ic = conn->c_transport_data;
941 rds_ib_set_protocol(conn, RDS_PROTOCOL_4_1);
944 ret = rds_ib_setup_qp(conn);
946 rds_ib_conn_error(conn, "rds_ib_setup_qp failed (%d)\n", ret);
950 rds_ib_cm_fill_conn_param(conn, &conn_param, &dp,
951 conn->c_proposed_version,
955 rds_ib_conn_error(conn, "rdma_connect_locked failed (%d)\n",
972 struct rds_connection *conn = cp->cp_conn;
978 ic = conn->c_transport_data;
983 if (conn->c_isv6)
988 ic->i_cm_id = rdma_create_id(&init_net, handler, conn,
997 rdsdebug("created cm id %p for conn %p\n", ic->i_cm_id, conn);
999 if (ipv6_addr_v4mapped(&conn->c_faddr)) {
1004 sin->sin_addr.s_addr = conn->c_laddr.s6_addr32[3];
1009 sin->sin_addr.s_addr = conn->c_faddr.s6_addr32[3];
1016 sin6->sin6_addr = conn->c_laddr;
1018 sin6->sin6_scope_id = conn->c_dev_if;
1022 sin6->sin6_addr = conn->c_faddr;
1024 sin6->sin6_scope_id = conn->c_dev_if;
1048 struct rds_connection *conn = cp->cp_conn;
1049 struct rds_ib_connection *ic = conn->c_transport_data;
1152 rds_ib_remove_conn(ic->rds_ibdev, conn);
1199 int rds_ib_conn_alloc(struct rds_connection *conn, gfp_t gfp)
1235 ic->conn = conn;
1236 conn->c_transport_data = ic;
1243 rdsdebug("conn %p conn ic %p\n", conn, conn->c_transport_data);
1278 __rds_ib_conn_error(struct rds_connection *conn, const char *fmt, ...)
1282 rds_conn_drop(conn);