Lines Matching refs:state

52 static int hermon_cq_arm_doorbell(hermon_state_t *state, hermon_cqhdl_t cq,
57 static void hermon_cq_cqe_consume(hermon_state_t *state, hermon_cqhdl_t cq,
59 static void hermon_cq_errcqe_consume(hermon_state_t *state, hermon_cqhdl_t cq,
68 hermon_cq_alloc(hermon_state_t *state, ibt_cq_hdl_t ibt_cqhdl,
99 status = hermon_umap_db_find(state->hs_instance, ddi_get_pid(),
107 uarpg = state->hs_kernel_uar_index;
111 pd = state->hs_pdhdl_internal;
123 status = hermon_rsrc_alloc(state, HERMON_CQC, 1, sleepflag, &cqc);
135 status = hermon_rsrc_alloc(state, HERMON_CQHDL, 1, sleepflag, &rsrc);
155 umapdb = hermon_umap_db_alloc(state->hs_instance, cq->cq_cqnum,
166 * both consumer index (SET CI) and the CQ state (CQ ARM).
169 status = hermon_dbr_alloc(state, uarpg, &cq->cq_arm_ci_dbr_acchdl,
189 if (log_cq_size > state->hs_cfg_profile->cp_log_max_cq_sz) {
219 status = hermon_queue_alloc(state, &cq->cq_cqinfo, sleepflag);
244 op.mro_bind_type = state->hs_cfg_profile->cp_iommu_bypass;
247 status = hermon_mr_register(state, pd, &mr_attr, &mr, &op,
255 cq->cq_erreqnum = HERMON_CQ_ERREQNUM_GET(state);
257 if (!HERMON_HID_VALID(state, cq_attr->cq_hid)) {
263 cq->cq_eqnum = HERMON_HID_TO_EQNUM(state, cq_attr->cq_hid);
268 cq_schedp = &state->hs_cq_sched_default;
269 } else if (cq_schedp != &state->hs_cq_sched_default) {
273 tmp = state->hs_cq_sched_array;
274 for (i = 0; i < state->hs_cq_sched_array_size; i++)
277 if (i >= state->hs_cq_sched_array_size) {
280 cq_schedp = &state->hs_cq_sched_default;
283 cq->cq_eqnum = HERMON_HID_TO_EQNUM(state,
300 cqc_entry.state = HERMON_CQ_DISARMED;
318 status = hermon_cmn_ownership_cmd_post(state, SW2HW_CQ, &cqc_entry,
324 hermon_fm_ereport(state, HCA_SYS_ERR, HCA_ERR_SRV_LOST);
358 hermon_icm_set_num_to_hdl(state, HERMON_CQC, cqc->hr_indx, cq);
384 if (hermon_mr_deregister(state, &mr, HERMON_MR_DEREG_ALL,
386 HERMON_WARNING(state, "failed to deregister CQ memory");
391 hermon_dbr_free(state, uarpg, cq->cq_arm_ci_vdbr);
397 hermon_rsrc_free(state, &rsrc);
399 hermon_rsrc_free(state, &cqc);
413 hermon_cq_free(hermon_state_t *state, hermon_cqhdl_t *cqhdl, uint_t sleepflag)
435 pd = state->hs_pdhdl_internal;
459 status = hermon_umap_db_find(state->hs_instance, cqnum,
464 HERMON_WARNING(state, "failed to find in database");
471 state->hs_dip, 0, 0, cq->cq_cqinfo.qa_size,
475 HERMON_WARNING(state, "failed in CQ memory "
488 hermon_icm_set_num_to_hdl(state, HERMON_CQC, cqc->hr_indx, NULL);
499 status = hermon_cmn_ownership_cmd_post(state, HW2SW_CQ, &cqc_entry,
502 HERMON_WARNING(state, "failed to reclaim CQC ownership");
506 hermon_fm_ereport(state, HCA_SYS_ERR, HCA_ERR_SRV_LOST);
524 status = hermon_mr_deregister(state, &mr, HERMON_MR_DEREG_ALL,
527 HERMON_WARNING(state, "failed to deregister CQ memory");
533 status = hermon_mr_deregister(state, &mr, HERMON_MR_DEREG_ALL,
536 HERMON_WARNING(state, "failed to deregister resize CQ "
553 hermon_dbr_free(state, cq->cq_uarpg, cq->cq_arm_ci_vdbr);
556 hermon_rsrc_free(state, &rsrc);
559 hermon_rsrc_free(state, &cqc);
576 hermon_cq_resize(hermon_state_t *state, hermon_cqhdl_t cq, uint_t req_size,
598 pd = state->hs_pdhdl_internal;
613 if (log_cq_size > state->hs_cfg_profile->cp_log_max_cq_sz) {
646 status = hermon_queue_alloc(state, &new_cqinfo, sleepflag);
670 op.mro_bind_type = state->hs_cfg_profile->cp_iommu_bypass;
673 status = hermon_mr_register(state, pd, &mr_attr, &mr, &op,
717 status = hermon_resize_cq_cmd_post(state, &cqc_entry, cq->cq_cqnum,
722 if (hermon_mr_deregister(state, &mr, HERMON_MR_DEREG_ALL,
724 HERMON_WARNING(state, "failed to deregister CQ memory");
734 hermon_fm_ereport(state, HCA_SYS_ERR,
789 hermon_cq_modify(hermon_state_t *state, hermon_cqhdl_t cq,
801 status = hermon_modify_cq_cmd_post(state, &cqc_entry,
808 hermon_fm_ereport(state, HCA_SYS_ERR,
818 cqc_entry.c_eqn = HERMON_HID_TO_EQNUM(state, hid);
819 status = hermon_modify_cq_cmd_post(state, &cqc_entry,
826 hermon_fm_ereport(state, HCA_SYS_ERR,
842 hermon_cq_notify(hermon_state_t *state, hermon_cqhdl_t cq,
857 status = hermon_cq_arm_doorbell(state, cq, cmd);
867 hermon_cq_poll(hermon_state_t *state, hermon_cqhdl_t cq, ibt_wc_t *wc_p,
917 hermon_cq_resize_helper(state, cq);
936 hermon_cq_cqe_consume(state, cq, cqe, &wc_p[polled_cnt++]);
996 (void) hermon_isr((caddr_t)state, (caddr_t)NULL);
1057 hermon_cq_handler(hermon_state_t *state, hermon_eqhdl_t eq,
1065 cq = hermon_cqhdl_from_cqnum(state, cqnum);
1088 (state->hs_ibtfpriv != NULL)) {
1090 HERMON_DO_IBTF_CQ_CALLB(state, cq);
1103 hermon_cq_err_handler(hermon_state_t *state, hermon_eqhdl_t eq,
1111 HERMON_FMANOTE(state, HERMON_FMA_OVERRUN);
1114 cq = hermon_cqhdl_from_cqnum(state, cqnum);
1137 (state->hs_ibtfpriv != NULL)) {
1140 HERMON_DO_IBTF_ASYNC_CALLB(state, type, &event);
1195 hermon_cq_arm_doorbell(hermon_state_t *state, hermon_cqhdl_t cq, uint_t cq_cmd)
1200 ddi_acc_handle_t uarhdl = hermon_get_uarhdl(state);
1209 hermon_pio_start(state, uarhdl, pio_error, fm_loop_cnt, fm_status,
1224 HERMON_UAR_DOORBELL(state, uarhdl, (uint64_t *)(void *)
1225 &state->hs_uar->cq, (((uint64_t)cmd_sn | cq_num) <<
1238 HERMON_UAR_DOORBELL(state, uarhdl, (uint64_t *)(void *)
1239 &state->hs_uar->cq, (((uint64_t)cmd_sn | cq_num) <<
1245 hermon_pio_end(state, uarhdl, pio_error, fm_loop_cnt, fm_status,
1251 hermon_fm_ereport(state, HCA_SYS_ERR, HCA_ERR_SRV_LOST);
1276 hermon_cqhdl_from_cqnum(hermon_state_t *state, uint_t cqnum)
1281 cqmask = (1 << state->hs_cfg_profile->cp_log_num_cq) - 1;
1283 return (hermon_icm_num_to_hdl(state, HERMON_CQC, cqindx));
1291 hermon_cq_cqe_consume(hermon_state_t *state, hermon_cqhdl_t cq,
1307 hermon_cq_errcqe_consume(state, cq, cqe, wc);
1323 _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(state->hs_fcoib_may_be_running))
1368 HERMON_WARNING(state, "unknown send CQE type");
1372 } else if ((state->hs_fcoib_may_be_running == B_TRUE) &&
1373 hermon_fcoib_is_fexch_qpn(state, HERMON_CQE_QPNUM_GET(cq, cqe))) {
1405 ((1 << state->hs_queryport.log_max_pkey) - 1));
1432 qp1_indx = state->hs_spec_qp1->hr_indx;
1461 HERMON_WARNING(state, "unknown recv CQE type");
1476 hermon_cq_errcqe_consume(hermon_state_t *state, hermon_cqhdl_t cq,
1503 HERMON_WARNING(state, HERMON_FMA_LOCLEN);
1508 HERMON_WARNING(state, HERMON_FMA_LOCQPOP);
1513 HERMON_WARNING(state, HERMON_FMA_LOCPROT);
1527 HERMON_WARNING(state, HERMON_FMA_MWBIND);
1532 HERMON_WARNING(state, HERMON_FMA_RESP);
1537 HERMON_WARNING(state, HERMON_FMA_LOCACC);
1542 HERMON_WARNING(state, HERMON_FMA_REMREQ);
1547 HERMON_WARNING(state, HERMON_FMA_REMACC);
1552 HERMON_WARNING(state, HERMON_FMA_REMOP);
1557 HERMON_WARNING(state, HERMON_FMA_XPORTCNT);
1562 HERMON_WARNING(state, HERMON_FMA_RNRCNT);
1578 HERMON_WARNING(state, "unknown error CQE status");
1579 HERMON_FMANOTE(state, HERMON_FMA_UNKN);
1593 hermon_cq_resize_helper(hermon_state_t *state, hermon_cqhdl_t cq)
1616 status = hermon_mr_deregister(state, &cq->cq_mrhdl, HERMON_MR_DEREG_ALL,
1619 HERMON_WARNING(state, "failed to deregister old CQ memory");
1647 hermon_cq_entries_flush(hermon_state_t *state, hermon_qphdl_t qp)
1780 hermon_get_cq_sched_list(hermon_state_t *state)
1788 if (ddi_prop_lookup_string_array(DDI_DEV_T_ANY, state->hs_dip,
1793 state->hs_cq_sched_array_size = nlist;
1794 state->hs_cq_sched_array = cq_schedp = kmem_zalloc(nlist *
1813 if (ddi_prop_lookup_int_array(DDI_DEV_T_ANY, state->hs_dip,
1829 if (ddi_prop_lookup_int_array(DDI_DEV_T_ANY, state->hs_dip,
1840 cq_schedp = &state->hs_cq_sched_default;
1854 state->hs_cq_sched_array_size = 0;
1868 hermon_cq_sched_init(hermon_state_t *state)
1873 mutex_init(&state->hs_cq_sched_lock, NULL, MUTEX_DRIVER,
1874 DDI_INTR_PRI(state->hs_intrmsi_pri));
1876 mutex_enter(&state->hs_cq_sched_lock);
1877 state->hs_cq_sched_array = NULL;
1880 defp = &state->hs_cq_sched_default;
1882 defp->cqs_len = state->hs_intrmsi_allocd;
1887 if (hermon_get_cq_sched_list(state) == 0)
1894 cq_schedp = state->hs_cq_sched_array;
1895 array_size = state->hs_cq_sched_array_size;
1898 if (desired > state->hs_intrmsi_allocd) {
1901 state->hs_intrmsi_allocd, desired);
1915 state->hs_cq_sched_default.cqs_next_alloc =
1916 state->hs_cq_sched_default.cqs_len - 1;
1919 mutex_exit(&state->hs_cq_sched_lock);
1924 hermon_cq_sched_fini(hermon_state_t *state)
1926 mutex_enter(&state->hs_cq_sched_lock);
1927 if (state->hs_cq_sched_array_size) {
1928 kmem_free(state->hs_cq_sched_array, sizeof (hermon_cq_sched_t) *
1929 state->hs_cq_sched_array_size);
1930 state->hs_cq_sched_array_size = 0;
1931 state->hs_cq_sched_array = NULL;
1933 mutex_exit(&state->hs_cq_sched_lock);
1934 mutex_destroy(&state->hs_cq_sched_lock);
1938 hermon_cq_sched_alloc(hermon_state_t *state, ibt_cq_sched_attr_t *attr,
1953 mutex_enter(&state->hs_cq_sched_lock);
1954 cq_schedp = state->hs_cq_sched_array;
1955 for (i = 0; i < state->hs_cq_sched_array_size; i++, cq_schedp++) {
1962 if ((i == state->hs_cq_sched_array_size) || /* not found, or */
1965 mutex_exit(&state->hs_cq_sched_lock);
1976 hermon_cq_sched_free(hermon_state_t *state, hermon_cq_sched_t *cq_schedp)
1980 mutex_enter(&state->hs_cq_sched_lock);
1982 HERMON_WARNING(state, "cq_sched free underflow\n");
1985 mutex_exit(&state->hs_cq_sched_lock);