Lines Matching defs:con

212 	struct rtrs_srv_con *con = cq->cq_context;
213 struct rtrs_sess *s = con->c.sess;
230 struct rtrs_sess *s = id->con->c.sess;
302 flags = (atomic_inc_return(&id->con->wr_cnt) % srv->queue_depth) ?
354 err = ib_post_send(id->con->c.qp, &id->tx_wr.wr, NULL);
366 * @con: the connection to send back result
372 static int send_io_resp_imm(struct rtrs_srv_con *con, struct rtrs_srv_op *id,
375 struct rtrs_sess *s = con->c.sess;
429 flags = (atomic_inc_return(&con->wr_cnt) % srv->queue_depth) ?
471 err = ib_post_send(id->con->c.qp, wr, NULL);
519 struct rtrs_srv_con *con;
526 con = id->con;
527 s = con->c.sess;
544 &con->sq_wr_avail) < 0)) {
546 atomic_add(1, &con->sq_wr_avail);
547 spin_lock(&con->rsp_wr_wait_lock);
548 list_add_tail(&id->wait_list, &con->rsp_wr_wait_list);
549 spin_unlock(&con->rsp_wr_wait_lock);
554 err = send_io_resp_imm(con, id, status);
736 struct rtrs_srv_con *con = cq->cq_context;
737 struct rtrs_sess *s = con->c.sess;
787 static int process_info_req(struct rtrs_srv_con *con,
790 struct rtrs_sess *s = con->c.sess;
864 err = rtrs_iu_post_send(&con->c, tx_iu, tx_sz, reg_wr);
878 struct rtrs_srv_con *con = cq->cq_context;
879 struct rtrs_sess *s = con->c.sess;
885 WARN_ON(con->c.cid);
908 err = process_info_req(con, msg);
920 static int post_recv_info_req(struct rtrs_srv_con *con)
922 struct rtrs_sess *s = con->c.sess;
933 err = rtrs_iu_post_recv(&con->c, rx_iu);
943 static int post_recv_io(struct rtrs_srv_con *con, size_t q_size)
948 err = rtrs_post_recv_empty(&con->c, &io_comp_cqe);
969 err = post_recv_io(to_srv_con(sess->s.con[cid]), q_size);
979 static void process_read(struct rtrs_srv_con *con,
983 struct rtrs_sess *s = con->c.sess;
1007 id->con = con;
1027 ret = send_io_resp_imm(con, id, ret);
1037 static void process_write(struct rtrs_srv_con *con,
1041 struct rtrs_sess *s = con->c.sess;
1060 id->con = con;
1079 ret = send_io_resp_imm(con, id, ret);
1089 static void process_io_req(struct rtrs_srv_con *con, void *msg,
1092 struct rtrs_sess *s = con->c.sess;
1104 process_write(con, msg, id, off);
1107 process_read(con, msg, id, off);
1126 struct rtrs_srv_con *con = cq->cq_context;
1127 struct rtrs_sess *s = con->c.sess;
1141 process_io_req(con, data, msg_id, off);
1144 static int rtrs_srv_inv_rkey(struct rtrs_srv_con *con,
1155 return ib_post_send(con->c.qp, &wr, NULL);
1158 static void rtrs_rdma_process_wr_wait_list(struct rtrs_srv_con *con)
1160 spin_lock(&con->rsp_wr_wait_lock);
1161 while (!list_empty(&con->rsp_wr_wait_list)) {
1165 id = list_entry(con->rsp_wr_wait_list.next,
1169 spin_unlock(&con->rsp_wr_wait_lock);
1171 spin_lock(&con->rsp_wr_wait_lock);
1174 list_add(&id->wait_list, &con->rsp_wr_wait_list);
1178 spin_unlock(&con->rsp_wr_wait_lock);
1183 struct rtrs_srv_con *con = cq->cq_context;
1184 struct rtrs_sess *s = con->c.sess;
1209 err = rtrs_post_recv_empty(&con->c, &io_comp_cqe);
1235 err = rtrs_srv_inv_rkey(con, mr);
1244 process_io_req(con, data, msg_id, off);
1247 WARN_ON(con->c.cid);
1250 WARN_ON(con->c.cid);
1261 atomic_add(srv->queue_depth, &con->sq_wr_avail);
1263 if (unlikely(!list_empty_careful(&con->rsp_wr_wait_list)))
1264 rtrs_rdma_process_wr_wait_list(con);
1501 struct rtrs_srv_con *con;
1510 if (!sess->s.con[i])
1512 con = to_srv_con(sess->s.con[i]);
1513 rdma_disconnect(con->c.cm_id);
1514 ib_drain_qp(con->c.qp);
1526 if (!sess->s.con[i])
1528 con = to_srv_con(sess->s.con[i]);
1529 rtrs_cq_qp_destroy(&con->c);
1530 rdma_destroy_id(con->c.cm_id);
1531 kfree(con);
1541 kfree(sess->s.con);
1615 struct rtrs_srv_con *con;
1620 con = kzalloc(sizeof(*con), GFP_KERNEL);
1621 if (!con) {
1626 spin_lock_init(&con->rsp_wr_wait_lock);
1627 INIT_LIST_HEAD(&con->rsp_wr_wait_list);
1628 con->c.cm_id = cm_id;
1629 con->c.sess = &sess->s;
1630 con->c.cid = cid;
1631 atomic_set(&con->wr_cnt, 1);
1633 if (con->c.cid == 0) {
1668 atomic_set(&con->sq_wr_avail, max_send_wr);
1672 err = rtrs_cq_qp_create(&sess->s, &con->c, 1, cq_vector, cq_size,
1679 if (con->c.cid == 0) {
1680 err = post_recv_info_req(con);
1684 WARN_ON(sess->s.con[cid]);
1685 sess->s.con[cid] = &con->c;
1691 cm_id->context = &con->c;
1696 rtrs_cq_qp_destroy(&con->c);
1698 kfree(con);
1737 sess->s.con = kcalloc(con_num, sizeof(*sess->s.con), GFP_KERNEL);
1738 if (!sess->s.con)
1775 kfree(sess->s.con);
1853 if (s->con[cid]) {