Lines Matching refs:conn
45 static void rds_iw_set_protocol(struct rds_connection *conn, unsigned int version) in rds_iw_set_protocol() argument
47 conn->c_version = version; in rds_iw_set_protocol()
53 static void rds_iw_set_flow_control(struct rds_connection *conn, u32 credits) in rds_iw_set_flow_control() argument
55 struct rds_iw_connection *ic = conn->c_transport_data; in rds_iw_set_flow_control()
60 rds_iw_send_add_credits(conn, credits); in rds_iw_set_flow_control()
70 void rds_iw_cm_connect_complete(struct rds_connection *conn, struct rdma_cm_event *event) in rds_iw_cm_connect_complete() argument
73 struct rds_iw_connection *ic = conn->c_transport_data; in rds_iw_cm_connect_complete()
77 if (event->param.conn.private_data_len) { in rds_iw_cm_connect_complete()
78 dp = event->param.conn.private_data; in rds_iw_cm_connect_complete()
80 rds_iw_set_protocol(conn, in rds_iw_cm_connect_complete()
83 rds_iw_set_flow_control(conn, be32_to_cpu(dp->dp_credit)); in rds_iw_cm_connect_complete()
91 rds_iw_add_conn(rds_iwdev, conn); in rds_iw_cm_connect_complete()
96 rds_send_drop_acked(conn, be64_to_cpu(dp->dp_ack_seq), NULL); in rds_iw_cm_connect_complete()
99 &conn->c_laddr, &conn->c_faddr, in rds_iw_cm_connect_complete()
100 RDS_PROTOCOL_MAJOR(conn->c_version), in rds_iw_cm_connect_complete()
101 RDS_PROTOCOL_MINOR(conn->c_version), in rds_iw_cm_connect_complete()
104 rds_connect_complete(conn); in rds_iw_cm_connect_complete()
107 static void rds_iw_cm_fill_conn_param(struct rds_connection *conn, in rds_iw_cm_fill_conn_param() argument
112 struct rds_iw_connection *ic = conn->c_transport_data; in rds_iw_cm_fill_conn_param()
121 dp->dp_saddr = conn->c_laddr; in rds_iw_cm_fill_conn_param()
122 dp->dp_daddr = conn->c_faddr; in rds_iw_cm_fill_conn_param()
149 struct rds_connection *conn = data; in rds_iw_qp_event_handler() local
150 struct rds_iw_connection *ic = conn->c_transport_data; in rds_iw_qp_event_handler()
152 rdsdebug("conn %p ic %p event %u\n", conn, ic, event->event); in rds_iw_qp_event_handler()
163 event->event, &conn->c_laddr, in rds_iw_qp_event_handler()
164 &conn->c_faddr); in rds_iw_qp_event_handler()
165 rds_conn_drop(conn); in rds_iw_qp_event_handler()
247 static int rds_iw_setup_qp(struct rds_connection *conn) in rds_iw_setup_qp() argument
249 struct rds_iw_connection *ic = conn->c_transport_data; in rds_iw_setup_qp()
274 conn); in rds_iw_setup_qp()
339 rds_iw_recv_refill(conn, GFP_KERNEL, GFP_HIGHUSER, 1); in rds_iw_setup_qp()
341 rdsdebug("conn %p pd %p mr %p cq %p %p\n", conn, ic->i_pd, ic->i_mr, in rds_iw_setup_qp()
380 const struct rds_iw_connect_private *dp = event->param.conn.private_data; in rds_iw_cm_handle_connect()
382 struct rds_connection *conn = NULL; in rds_iw_cm_handle_connect() local
398 conn = rds_conn_create(dp->dp_daddr, dp->dp_saddr, &rds_iw_transport, in rds_iw_cm_handle_connect()
400 if (IS_ERR(conn)) { in rds_iw_cm_handle_connect()
401 rdsdebug("rds_conn_create failed (%ld)\n", PTR_ERR(conn)); in rds_iw_cm_handle_connect()
402 conn = NULL; in rds_iw_cm_handle_connect()
413 mutex_lock(&conn->c_cm_lock); in rds_iw_cm_handle_connect()
414 if (!rds_conn_transition(conn, RDS_CONN_DOWN, RDS_CONN_CONNECTING)) { in rds_iw_cm_handle_connect()
415 if (rds_conn_state(conn) == RDS_CONN_UP) { in rds_iw_cm_handle_connect()
417 rds_conn_drop(conn); in rds_iw_cm_handle_connect()
420 if (rds_conn_state(conn) == RDS_CONN_CONNECTING) { in rds_iw_cm_handle_connect()
424 mutex_unlock(&conn->c_cm_lock); in rds_iw_cm_handle_connect()
428 ic = conn->c_transport_data; in rds_iw_cm_handle_connect()
430 rds_iw_set_protocol(conn, version); in rds_iw_cm_handle_connect()
431 rds_iw_set_flow_control(conn, be32_to_cpu(dp->dp_credit)); in rds_iw_cm_handle_connect()
436 rds_send_drop_acked(conn, be64_to_cpu(dp->dp_ack_seq), NULL); in rds_iw_cm_handle_connect()
442 cm_id->context = conn; in rds_iw_cm_handle_connect()
451 err = rds_iw_setup_qp(conn); in rds_iw_cm_handle_connect()
453 rds_iw_conn_error(conn, "rds_iw_setup_qp failed (%d)\n", err); in rds_iw_cm_handle_connect()
454 mutex_unlock(&conn->c_cm_lock); in rds_iw_cm_handle_connect()
458 rds_iw_cm_fill_conn_param(conn, &conn_param, &dp_rep, version); in rds_iw_cm_handle_connect()
462 mutex_unlock(&conn->c_cm_lock); in rds_iw_cm_handle_connect()
464 rds_iw_conn_error(conn, "rdma_accept failed (%d)\n", err); in rds_iw_cm_handle_connect()
478 struct rds_connection *conn = cm_id->context; in rds_iw_cm_initiate_connect() local
479 struct rds_iw_connection *ic = conn->c_transport_data; in rds_iw_cm_initiate_connect()
486 rds_iw_set_protocol(conn, RDS_PROTOCOL_3_0); in rds_iw_cm_initiate_connect()
489 ret = rds_iw_setup_qp(conn); in rds_iw_cm_initiate_connect()
491 rds_iw_conn_error(conn, "rds_iw_setup_qp failed (%d)\n", ret); in rds_iw_cm_initiate_connect()
495 rds_iw_cm_fill_conn_param(conn, &conn_param, &dp, RDS_PROTOCOL_VERSION); in rds_iw_cm_initiate_connect()
499 rds_iw_conn_error(conn, "rdma_connect failed (%d)\n", ret); in rds_iw_cm_initiate_connect()
506 struct rds_iw_connection *ic = conn->c_transport_data; in rds_iw_cm_initiate_connect()
514 int rds_iw_conn_connect(struct rds_connection *conn) in rds_iw_conn_connect() argument
516 struct rds_iw_connection *ic = conn->c_transport_data; in rds_iw_conn_connect()
523 ic->i_cm_id = rdma_create_id(rds_rdma_cm_event_handler, conn, in rds_iw_conn_connect()
532 rdsdebug("created cm id %p for conn %p\n", ic->i_cm_id, conn); in rds_iw_conn_connect()
535 src.sin_addr.s_addr = (__force u32)conn->c_laddr; in rds_iw_conn_connect()
542 &conn->c_laddr, ret); in rds_iw_conn_connect()
552 dest.sin_addr.s_addr = (__force u32)conn->c_faddr; in rds_iw_conn_connect()
574 void rds_iw_conn_shutdown(struct rds_connection *conn) in rds_iw_conn_shutdown() argument
576 struct rds_iw_connection *ic = conn->c_transport_data; in rds_iw_conn_shutdown()
642 rds_iw_remove_conn(ic->rds_iwdev, conn); in rds_iw_conn_shutdown()
691 int rds_iw_conn_alloc(struct rds_connection *conn, gfp_t gfp) in rds_iw_conn_alloc() argument
716 ic->conn = conn; in rds_iw_conn_alloc()
717 conn->c_transport_data = ic; in rds_iw_conn_alloc()
724 rdsdebug("conn %p conn ic %p\n", conn, conn->c_transport_data); in rds_iw_conn_alloc()
756 __rds_iw_conn_error(struct rds_connection *conn, const char *fmt, ...) in __rds_iw_conn_error() argument
760 rds_conn_drop(conn); in __rds_iw_conn_error()