Lines Matching refs:con

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