Lines Matching defs:qp

46 static int tavor_qp_create_qpn(tavor_state_t *state, tavor_qphdl_t qp,
67 tavor_qphdl_t qp;
252 qp = (tavor_qphdl_t)rsrc->tr_addr;
253 _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*qp))
260 status = tavor_qp_create_qpn(state, qp, qpc);
275 umapdb = tavor_umap_db_alloc(state->ts_instance, qp->qp_qpnum,
304 qp->qp_rdbrsrcp = rdb;
307 qp->qp_rdb_ddraddr = (uintptr_t)rsrc_pool->rsrc_ddr_offset +
363 qp->qp_rq_log_wqesz = 0;
364 qp->qp_rq_sgl = 0;
367 TAVOR_QP_WQ_TYPE_RECVQ, &qp->qp_rq_log_wqesz,
368 &qp->qp_rq_sgl);
371 TAVOR_QP_WQ_TYPE_SENDQ, &qp->qp_sq_log_wqesz, &qp->qp_sq_sgl);
400 sq_wqe_size = 1 << qp->qp_sq_log_wqesz;
408 rq_wqe_size = 1 << qp->qp_rq_log_wqesz;
412 qp->qp_wqinfo.qa_size = sq_size + rq_size;
413 qp->qp_wqinfo.qa_alloc_align = max(sq_wqe_size, rq_wqe_size);
414 qp->qp_wqinfo.qa_bind_align = max(sq_wqe_size, rq_wqe_size);
416 qp->qp_wqinfo.qa_location = TAVOR_QUEUE_LOCATION_USERLAND;
418 qp->qp_wqinfo.qa_location = wq_location;
420 status = tavor_queue_alloc(state, &qp->qp_wqinfo, sleepflag);
427 sq_buf = qp->qp_wqinfo.qa_buf_aligned;
437 rq_buf = qp->qp_wqinfo.qa_buf_aligned;
459 mr_attr.mr_vaddr = (uint64_t)(uintptr_t)qp->qp_wqinfo.qa_buf_aligned;
460 mr_attr.mr_len = qp->qp_wqinfo.qa_size;
478 mr_op.mro_bind_dmahdl = qp->qp_wqinfo.qa_dmahdl;
492 qp_desc_off = (uint64_t)(uintptr_t)qp->qp_wqinfo.qa_buf_aligned -
501 queuesz_p->cs_sq_sgl = qp->qp_sq_sgl;
509 queuesz_p->cs_rq_sgl = qp->qp_rq_sgl;
513 *qpn = (ib_qpn_t)qp->qp_qpnum;
520 qp->qp_qpcrsrcp = qpc;
521 qp->qp_rsrcp = rsrc;
522 qp->qp_state = TAVOR_QP_RESET;
523 qp->qp_pdhdl = pd;
524 qp->qp_mrhdl = mr;
525 qp->qp_sq_sigtype = (attr_p->qp_flags & IBT_WR_SIGNALED) ?
527 qp->qp_is_special = 0;
528 qp->qp_is_umap = qp_is_umap;
529 qp->qp_uarpg = (qp->qp_is_umap) ? uarpg : 0;
530 qp->qp_umap_dhp = (devmap_cookie_t)NULL;
531 qp->qp_sq_cqhdl = sq_cq;
532 qp->qp_sq_lastwqeaddr = NULL;
533 qp->qp_sq_bufsz = (1 << log_qp_sq_size);
534 qp->qp_sq_buf = sq_buf;
535 qp->qp_desc_off = qp_desc_off;
536 qp->qp_rq_cqhdl = rq_cq;
537 qp->qp_rq_lastwqeaddr = NULL;
538 qp->qp_rq_buf = rq_buf;
542 qp->qp_rq_bufsz = 0;
544 qp->qp_rq_bufsz = (1 << log_qp_rq_size);
547 qp->qp_forward_sqd_event = 0;
548 qp->qp_sqd_still_draining = 0;
549 qp->qp_hdlrarg = (void *)ibt_qphdl;
550 qp->qp_mcg_refcnt = 0;
557 qp->qp_srqhdl = srq;
558 qp->qp_srq_en = TAVOR_QP_SRQ_ENABLED;
559 tavor_srq_refcnt_inc(qp->qp_srqhdl);
561 qp->qp_srqhdl = NULL;
562 qp->qp_srq_en = TAVOR_QP_SRQ_DISABLED;
566 qp->qp_sync = TAVOR_QP_IS_SYNC_REQ(state, qp->qp_wqinfo);
570 qp->qp_serv_type = TAVOR_QP_RC;
572 qp->qp_serv_type = TAVOR_QP_UD;
574 qp->qp_serv_type = TAVOR_QP_UC;
578 bzero(&qp->qpc, sizeof (tavor_hw_qpc_t));
585 state->ts_qphdl[qpc->tr_indx] = qp;
596 *qphdl = qp;
605 tavor_queue_free(state, &qp->qp_wqinfo);
619 tavor_qp_release_qpn(state, qp->qp_qpn_hdl, TAVOR_QPN_RELEASE);
651 tavor_qphdl_t qp;
787 qp = (tavor_qphdl_t)rsrc->tr_addr;
788 _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*qp))
795 qp->qp_qpnum = qpc->tr_indx + port;
846 TAVOR_QP_WQ_TYPE_RECVQ, &qp->qp_rq_log_wqesz, &qp->qp_rq_sgl);
849 TAVOR_QP_WQ_TYPE_SENDMLX_QP0, &qp->qp_sq_log_wqesz,
850 &qp->qp_sq_sgl);
853 TAVOR_QP_WQ_TYPE_SENDMLX_QP1, &qp->qp_sq_log_wqesz,
854 &qp->qp_sq_sgl);
882 sq_wqe_size = 1 << qp->qp_sq_log_wqesz;
883 rq_wqe_size = 1 << qp->qp_rq_log_wqesz;
886 qp->qp_wqinfo.qa_size = sq_size + rq_size;
887 qp->qp_wqinfo.qa_alloc_align = max(sq_wqe_size, rq_wqe_size);
888 qp->qp_wqinfo.qa_bind_align = max(sq_wqe_size, rq_wqe_size);
889 qp->qp_wqinfo.qa_location = wq_location;
890 status = tavor_queue_alloc(state, &qp->qp_wqinfo, sleepflag);
897 sq_buf = qp->qp_wqinfo.qa_buf_aligned;
900 rq_buf = qp->qp_wqinfo.qa_buf_aligned;
921 mr_attr.mr_vaddr = (uint64_t)(uintptr_t)qp->qp_wqinfo.qa_buf_aligned;
922 mr_attr.mr_len = qp->qp_wqinfo.qa_size;
935 mr_op.mro_bind_dmahdl = qp->qp_wqinfo.qa_dmahdl;
949 qp_desc_off = (uint64_t)(uintptr_t)qp->qp_wqinfo.qa_buf_aligned -
959 queuesz_p->cs_sq_sgl = qp->qp_sq_sgl;
961 queuesz_p->cs_rq_sgl = qp->qp_rq_sgl;
968 qp->qp_qpcrsrcp = qpc;
969 qp->qp_rsrcp = rsrc;
970 qp->qp_state = TAVOR_QP_RESET;
971 qp->qp_pdhdl = pd;
972 qp->qp_mrhdl = mr;
973 qp->qp_sq_sigtype = (attr_p->qp_flags & IBT_WR_SIGNALED) ?
975 qp->qp_is_special = (type == IBT_SMI_SQP) ?
977 qp->qp_is_umap = 0;
978 qp->qp_uarpg = 0;
979 qp->qp_sq_cqhdl = sq_cq;
980 qp->qp_sq_lastwqeaddr = NULL;
981 qp->qp_sq_bufsz = (1 << log_qp_sq_size);
982 qp->qp_sq_buf = sq_buf;
983 qp->qp_desc_off = qp_desc_off;
984 qp->qp_rq_cqhdl = rq_cq;
985 qp->qp_rq_lastwqeaddr = NULL;
986 qp->qp_rq_bufsz = (1 << log_qp_rq_size);
987 qp->qp_rq_buf = rq_buf;
988 qp->qp_portnum = port;
989 qp->qp_pkeyindx = 0;
990 qp->qp_hdlrarg = (void *)ibt_qphdl;
991 qp->qp_mcg_refcnt = 0;
992 qp->qp_srq_en = 0;
993 qp->qp_srqhdl = NULL;
996 qp->qp_sync = TAVOR_QP_IS_SYNC_REQ(state, qp->qp_wqinfo);
999 qp->qp_serv_type = TAVOR_QP_UD;
1002 bzero(&qp->qpc, sizeof (tavor_hw_qpc_t));
1009 state->ts_qphdl[qpc->tr_indx + port] = qp;
1011 *qphdl = qp;
1020 tavor_queue_free(state, &qp->qp_wqinfo);
1062 tavor_qphdl_t qp;
1077 qp = *qphdl;
1078 mutex_enter(&qp->qp_lock);
1079 qpc = qp->qp_qpcrsrcp;
1080 rsrc = qp->qp_rsrcp;
1081 pd = qp->qp_pdhdl;
1082 srq = qp->qp_srqhdl;
1083 mr = qp->qp_mrhdl;
1084 rq_cq = qp->qp_rq_cqhdl;
1085 sq_cq = qp->qp_sq_cqhdl;
1086 rdb = qp->qp_rdbrsrcp;
1087 port = qp->qp_portnum;
1088 qp_srq_en = qp->qp_srq_en;
1093 if (qp->qp_mcg_refcnt != 0) {
1094 mutex_exit(&qp->qp_lock);
1107 if (qp->qp_state != TAVOR_QP_RESET) {
1108 if (tavor_qp_to_reset(state, qp) != DDI_SUCCESS) {
1109 mutex_exit(&qp->qp_lock);
1116 qp->qp_state = TAVOR_QP_RESET;
1122 tavor_wrid_to_reset_handling(state, qp);
1133 if (qp->qp_is_umap) {
1134 status = tavor_umap_db_find(state->ts_instance, qp->qp_qpnum,
1138 mutex_exit(&qp->qp_lock);
1144 if (qp->qp_umap_dhp != NULL) {
1146 status = devmap_devmem_remap(qp->qp_umap_dhp,
1147 state->ts_dip, 0, 0, qp->qp_wqinfo.qa_size,
1150 mutex_exit(&qp->qp_lock);
1156 qp->qp_umap_dhp = (devmap_cookie_t)NULL;
1166 if (qp->qp_is_special) {
1180 mutex_exit(&qp->qp_lock);
1181 _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*qp))
1203 tavor_queue_free(state, &qp->qp_wqinfo);
1213 if (qp->qp_is_special) {
1214 type = (qp->qp_is_special == TAVOR_QP_SMI) ?
1228 type = qp->qp_serv_type;
1240 entry = qp->qp_qpn_hdl;
1241 tavor_qp_release_qpn(state, qp->qp_qpn_hdl,
1245 tavor_qp_release_qpn(state, qp->qp_qpn_hdl,
1280 tavor_qp_query(tavor_state_t *state, tavor_qphdl_t qp,
1295 mutex_enter(&qp->qp_lock);
1300 qpc = &qp->qpc;
1303 switch (qp->qp_state) {
1320 if (qp->qp_sqd_still_draining) {
1330 mutex_exit(&qp->qp_lock);
1332 TAVOR_TNF_ERROR, "", tnf_uint, qpstate, qp->qp_state);
1346 attr_p->qp_sq_cq = qp->qp_sq_cqhdl->cq_hdlrarg;
1347 attr_p->qp_rq_cq = qp->qp_rq_cqhdl->cq_hdlrarg;
1348 if (qp->qp_is_special) {
1349 attr_p->qp_qpn = (qp->qp_is_special == TAVOR_QP_SMI) ? 0 : 1;
1351 attr_p->qp_qpn = (ib_qpn_t)qp->qp_qpnum;
1353 attr_p->qp_sq_sgl = qp->qp_sq_sgl;
1354 attr_p->qp_rq_sgl = qp->qp_rq_sgl;
1355 attr_p->qp_info.qp_sq_sz = qp->qp_sq_bufsz;
1356 attr_p->qp_info.qp_rq_sz = qp->qp_rq_bufsz;
1363 mutex_exit(&qp->qp_lock);
1376 status = tavor_cmn_query_cmd_post(state, QUERY_QP, qp->qp_qpnum,
1379 mutex_exit(&qp->qp_lock);
1391 if (qp->qp_serv_type == TAVOR_QP_UD) {
1402 } else if (qp->qp_serv_type == TAVOR_QP_RC) {
1428 TAVOR_ADDRPATH_QP, qp);
1439 &alt_path_ptr->cep_adds_vect, TAVOR_ADDRPATH_QP, qp);
1458 } else if (qp->qp_serv_type == TAVOR_QP_UC) {
1480 TAVOR_ADDRPATH_QP, qp);
1490 &alt_path_ptr->cep_adds_vect, TAVOR_ADDRPATH_QP, qp);
1507 mutex_exit(&qp->qp_lock);
1519 qp->qp_state = TAVOR_QP_SQERR;
1523 qp->qp_state = TAVOR_QP_ERR;
1525 mutex_exit(&qp->qp_lock);
1537 tavor_qp_create_qpn(tavor_state_t *state, tavor_qphdl_t qp, tavor_rsrc_t *qpc)
1589 qp->qp_qpn_hdl = entry;
1590 qp->qp_qpnum = ((entry->qpn_counter <<