Lines Matching defs:qp

384 static struct rdma_done_list *rdma_done_add(rib_qp_t *qp, uint32_t xid);
385 static void rdma_done_rm(rib_qp_t *qp, struct rdma_done_list *rd);
387 static void rdma_done_notify(rib_qp_t *qp, uint32_t xid);
837 * A qp is allowed to access a memory region
862 * If number of qp's gets too large, then several
1010 rib_qp_t *qp;
1031 qp = wd->qp;
1032 conn = qptoc(qp);
1080 rib_rbuf_free(qptoc(wd->qp),
1086 rib_send_rele(qp);
1102 rib_qp_t *qp;
1124 qp = wd->qp;
1125 conn = qptoc(qp);
1158 rib_rbuf_free(qptoc(wd->qp),
1164 rib_send_rele(qp);
1180 rib_qp_t *qp;
1199 qp = rwid->qp;
1205 CONN *conn = qptoc(qp);
1237 rib_recv_rele(qp);
1241 mutex_enter(&qp->replylist_lock);
1242 for (r = qp->replylist; r != NULL; r = r->next) {
1256 rib_rbuf_free(qptoc(qp),
1265 mutex_exit(&qp->replylist_lock);
1272 rib_rbuf_free(qptoc(qp), RECV_BUFFER,
1276 CONN *conn = qptoc(qp);
1285 CONN *conn = qptoc(qp);
1308 rib_recv_rele(qp);
1318 rib_qp_t *qp;
1339 qp = s_recvp->qp;
1340 conn = qptoc(qp);
1365 rib_recv_rele(qp);
1378 rib_recv_rele(qp);
1392 mutex_enter(&qp->rdlist_lock);
1393 rdma_done_notify(qp, xid);
1394 mutex_exit(&qp->rdlist_lock);
1395 rib_recv_rele(qp);
1443 rib_recv_rele(qp);
1563 /* Client side qp creation */
1565 rib_clnt_create_chan(rib_hca_t *hca, struct netbuf *raddr, rib_qp_t **qp)
1571 ASSERT(qp != NULL);
1572 *qp = NULL;
1608 *qp = kqp;
1612 /* Server side qp creation */
1614 rib_svc_create_chan(rib_hca_t *hca, caddr_t q, uint8_t port, rib_qp_t **qp)
1622 *qp = NULL;
1631 * Create the qp handle
1678 * Set the private data area to qp to be used in callbacks
1693 *qp = kqp;
1719 rib_qp_t *qp;
1742 qp = ibt_get_chan_private(event->cm_channel);
1743 conn = qptoc(qp);
1794 rib_conn_to_srv(rib_hca_t *hca, rib_qp_t *qp, rpcib_ping_t *rptp)
1870 &qp_attr, &qp->qp_hdl,
1886 mutex_enter(&qp->cb_lock);
1887 ibt_status = ibt_open_rc_channel(qp->qp_hdl, IBT_OCHAN_NO_FLAGS,
1893 (void) ibt_free_channel(qp->qp_hdl);
1894 qp->qp_hdl = NULL;
1895 mutex_exit(&qp->cb_lock);
1909 mutex_exit(&qp->cb_lock);
1911 * Set the private data area to qp to be used in callbacks
1913 ibt_set_chan_private(qp->qp_hdl, (void *)qp);
2023 rib_qp_t *qp = ctoqp(conn);
2041 hca = qp->hca;
2051 if (qp->qp_hdl != NULL) {
2052 mutex_enter(&qp->posted_rbufs_lock);
2053 while (qp->n_posted_rbufs)
2054 cv_wait(&qp->posted_rbufs_cv, &qp->posted_rbufs_lock);
2055 mutex_exit(&qp->posted_rbufs_lock);
2057 mutex_enter(&qp->send_rbufs_lock);
2058 while (qp->n_send_rbufs)
2059 cv_wait(&qp->send_rbufs_cv, &qp->send_rbufs_lock);
2060 mutex_exit(&qp->send_rbufs_lock);
2062 (void) ibt_free_channel(qp->qp_hdl);
2063 qp->qp_hdl = NULL;
2066 ASSERT(qp->rdlist == NULL);
2068 if (qp->replylist != NULL) {
2069 (void) rib_rem_replylist(qp);
2072 cv_destroy(&qp->cb_conn_cv);
2073 cv_destroy(&qp->posted_rbufs_cv);
2074 cv_destroy(&qp->send_rbufs_cv);
2075 mutex_destroy(&qp->cb_lock);
2076 mutex_destroy(&qp->replylist_lock);
2077 mutex_destroy(&qp->posted_rbufs_lock);
2078 mutex_destroy(&qp->send_rbufs_lock);
2079 mutex_destroy(&qp->rdlist_lock);
2100 if (qp->rdmaconn.c_cc_type == RDMA_CC_CLNT) {
2102 cc_info = &qp->rdmaconn.rdma_conn_cred_ctrl_u.c_clnt_cc;
2106 kmem_free(qp, sizeof (rib_qp_t));
2145 rib_send_hold(rib_qp_t *qp)
2147 mutex_enter(&qp->send_rbufs_lock);
2148 qp->n_send_rbufs++;
2149 mutex_exit(&qp->send_rbufs_lock);
2153 rib_send_rele(rib_qp_t *qp)
2155 mutex_enter(&qp->send_rbufs_lock);
2156 qp->n_send_rbufs--;
2157 if (qp->n_send_rbufs == 0)
2158 cv_signal(&qp->send_rbufs_cv);
2159 mutex_exit(&qp->send_rbufs_lock);
2163 rib_recv_rele(rib_qp_t *qp)
2165 mutex_enter(&qp->posted_rbufs_lock);
2166 qp->n_posted_rbufs--;
2167 if (qp->n_posted_rbufs == 0)
2168 cv_signal(&qp->posted_rbufs_cv);
2169 mutex_exit(&qp->posted_rbufs_lock);
2178 rib_sendwait(rib_qp_t *qp, struct send_wid *wd)
2193 if (qp->mode == RIB_SERVER) {
2245 rib_rbuf_free(qptoc(qp), SEND_BUFFER,
2249 rib_send_rele(qp);
2261 rib_init_sendwait(uint32_t xid, int cv_sig, rib_qp_t *qp)
2268 wd->qp = qp;
2287 rib_rem_rep(rib_qp_t *qp, struct reply *rep)
2289 mutex_enter(&qp->replylist_lock);
2291 (void) rib_remreply(qp, rep);
2292 mutex_exit(&qp->replylist_lock);
2295 mutex_exit(&qp->replylist_lock);
2316 rib_qp_t *qp;
2318 qp = ctoqp(conn);
2343 wdesc = rib_init_sendwait(msgid, cv_sig, qp);
2364 ibt_status = ibt_post_send(qp->qp_hdl, &tx_wr, 1, NULL);
2385 rib_send_hold(qp);
2393 ret = rib_sendwait(qp, wdesc);
2426 rib_qp_t *qp = ctoqp(conn);
2428 mutex_enter(&qp->rdlist_lock);
2429 rd = rdma_done_add(qp, msgid);
2435 rdma_done_rm(qp, rd);
2441 &qp->rdlist_lock, drv_usectohz(REPLY_WAIT_TIME * 1000000),
2444 rdma_done_rm(qp, rd);
2451 mutex_exit(&qp->rdlist_lock);
2456 rib_create_wid(rib_qp_t *qp, ibt_wr_ds_t *sgl, uint32_t msgid)
2463 rwid->qp = qp;
2477 rib_qp_t *qp = ctoqp(conn);
2513 rwid = rib_create_wid(qp, &sgl[0], msgid);
2520 rep = rib_addreplylist(qp, msgid);
2530 ibt_status = ibt_post_recv(qp->qp_hdl, &recv_wr, 1, NULL);
2539 (void) rib_rem_rep(qp, rep);
2544 mutex_enter(&qp->posted_rbufs_lock);
2545 qp->n_posted_rbufs++;
2546 mutex_exit(&qp->posted_rbufs_lock);
2563 rib_qp_t *qp = ctoqp(conn);
2593 s_recvp = rib_init_svc_recv(qp, &sgl[0]);
2598 ibt_status = ibt_post_recv(qp->qp_hdl, &recv_wr, 1, NULL);
2627 rib_qp_t *qp = ctoqp(conn);
2630 mutex_enter(&qp->replylist_lock);
2631 for (rep = qp->replylist; rep != NULL; rep = rep->next) {
2637 (void) rib_remreply(qp, rep);
2641 mutex_exit(&qp->replylist_lock);
2650 rib_qp_t *qp = ctoqp(conn);
2653 mutex_enter(&qp->posted_rbufs_lock);
2654 qp->n_posted_rbufs++;
2655 mutex_exit(&qp->posted_rbufs_lock);
2671 rib_qp_t *qp = ctoqp(conn);
2676 mutex_enter(&qp->replylist_lock);
2678 for (rep = qp->replylist; rep != NULL; rep = rep->next) {
2692 &qp->replylist_lock, timout)) > 0 &&
2728 (void) rib_remreply(qp, rep);
2741 mutex_exit(&qp->replylist_lock);
2757 rib_qp_t *qp = ctoqp(conn);
2787 wdesc = rib_init_sendwait(0, cv_sig, qp);
2802 ibt_post_send(qp->qp_hdl, &tx_wr, 1, NULL);
2823 rib_send_hold(qp);
2826 ret = rib_sendwait(qp, wdesc);
2849 rib_qp_t *qp = ctoqp(conn);
2876 wdesc = rib_init_sendwait(0, cv_sig, qp);
2891 ibt_status = ibt_post_send(qp->qp_hdl, &rx_wr, 1, NULL);
2912 rib_send_hold(qp);
2915 ret = rib_sendwait(qp, wdesc);
2936 rib_qp_t *qp;
2981 event->cm_event.req.req_prim_hca_port, &qp);
2987 ret_args->cm_ret.rep.cm_channel = qp->qp_hdl;
2995 conn = qptoc(qp);
3007 (void) ibt_flush_channel(qp->qp_hdl);
3026 (void) ibt_flush_channel(qp->qp_hdl);
3136 rib_qp_t *qp;
3158 qp = ibt_get_chan_private(event->cm_channel);
3159 conn = qptoc(qp);
3564 rib_init_svc_recv(rib_qp_t *qp, ibt_wr_ds_t *sgl)
3570 recvp->qp = qp;
3584 rib_addreplylist(rib_qp_t *qp, uint32_t msgid)
3601 mutex_enter(&qp->replylist_lock);
3602 if (qp->replylist) {
3603 rep->next = qp->replylist;
3604 qp->replylist->prev = rep;
3606 qp->rep_list_size++;
3609 int, qp->rep_list_size);
3611 qp->replylist = rep;
3612 mutex_exit(&qp->replylist_lock);
3618 rib_rem_replylist(rib_qp_t *qp)
3622 mutex_enter(&qp->replylist_lock);
3623 for (r = qp->replylist; r != NULL; r = n) {
3625 (void) rib_remreply(qp, r);
3627 mutex_exit(&qp->replylist_lock);
3633 rib_remreply(rib_qp_t *qp, struct reply *rep)
3636 ASSERT(MUTEX_HELD(&qp->replylist_lock));
3643 if (qp->replylist == rep)
3644 qp->replylist = rep->next;
3647 qp->rep_list_size--;
3650 int, qp->rep_list_size);
4061 rib_qp_t *qp = ctoqp(conn);
4062 rib_hca_t *hca = qp->hca;
4133 rib_qp_t *qp = ctoqp(conn);
4134 rib_hca_t *hca = qp->hca;
4340 rib_qp_t *qp;
4384 if (rib_clnt_create_chan(hca, d_svcaddr, &qp) != RDMA_SUCCESS) {
4387 cn = qptoc(qp);
4434 status = rib_conn_to_srv(hca, qp, rpt);
4475 rib_qp_t *qp = ctoqp(conn);
4498 if (qp->mode == RIB_SERVER)
4500 &qp->hca->srv_conn_list);
4503 &qp->hca->cl_conn_list);
4605 rdma_done_add(rib_qp_t *qp, uint32_t xid)
4609 ASSERT(MUTEX_HELD(&qp->rdlist_lock));
4616 rd->next = qp->rdlist;
4617 if (qp->rdlist != NULL)
4618 qp->rdlist->prev = rd;
4619 qp->rdlist = rd;
4625 rdma_done_rm(rib_qp_t *qp, struct rdma_done_list *rd)
4629 ASSERT(MUTEX_HELD(&qp->rdlist_lock));
4640 qp->rdlist = rd->next;
4648 rdma_done_rem_list(rib_qp_t *qp)
4652 mutex_enter(&qp->rdlist_lock);
4653 for (r = qp->rdlist; r != NULL; r = n) {
4655 rdma_done_rm(qp, r);
4657 mutex_exit(&qp->rdlist_lock);
4661 rdma_done_notify(rib_qp_t *qp, uint32_t xid)
4663 struct rdma_done_list *r = qp->rdlist;
4665 ASSERT(MUTEX_HELD(&qp->rdlist_lock));
4686 rib_qp_t *qp;
4687 qp = ctoqp(conn);
4689 if (qp->qp_hdl == NULL) {
4698 (void) ibt_close_rc_channel(qp->qp_hdl, IBT_NOCALLBACKS,