• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/dev/qlnx/qlnxe/

Lines Matching defs:p_hwfn

62 static void ecore_roce_free_icid(struct ecore_hwfn *p_hwfn, u16 icid);
65 ecore_roce_async_event(struct ecore_hwfn *p_hwfn,
79 ecore_roce_free_icid(p_hwfn, icid);
81 p_hwfn->p_rdma_info->events.affiliated_event(
82 p_hwfn->p_rdma_info->events.context,
91 struct ecore_hwfn *p_hwfn,
96 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "\n");
99 params.rl_id_first = (u8)RESC_START(p_hwfn, ECORE_RL);
100 params.rl_id_last = RESC_START(p_hwfn, ECORE_RL) +
101 ecore_init_qm_get_num_pf_rls(p_hwfn);
116 return ecore_sp_rl_update(p_hwfn, &params);
119 enum _ecore_status_t ecore_roce_stop_rl(struct ecore_hwfn *p_hwfn)
123 if (!p_hwfn->p_rdma_info->roce.dcqcn_reaction_point)
127 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "\n");
129 params.rl_id_first = (u8)RESC_START(p_hwfn, ECORE_RL);
130 params.rl_id_last = RESC_START(p_hwfn, ECORE_RL) +
131 ecore_init_qm_get_num_pf_rls(p_hwfn);
134 return ecore_sp_rl_update(p_hwfn, &params);
141 struct ecore_hwfn *p_hwfn,
149 if (!p_hwfn->pf_params.rdma_pf_params.enable_dcqcn ||
150 p_hwfn->p_rdma_info->proto == PROTOCOLID_IWARP)
153 p_hwfn->p_rdma_info->roce.dcqcn_enabled = 0;
155 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA,
159 p_hwfn->p_rdma_info->roce.dcqcn_enabled = 1;
167 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA,
169 p_hwfn->p_rdma_info->roce.dcqcn_enabled = 1;
170 p_hwfn->p_rdma_info->roce.dcqcn_reaction_point = 1;
177 rc = ecore_roce_start_rl(p_hwfn, params);
186 ecore_wr(p_hwfn,
195 enum _ecore_status_t ecore_roce_stop(struct ecore_hwfn *p_hwfn)
197 struct ecore_bmap *cid_map = &p_hwfn->p_rdma_info->cid_map;
209 DP_NOTICE(p_hwfn, false,
215 ecore_spq_unregister_async_cb(p_hwfn, PROTOCOLID_ROCE);
265 static void ecore_roce_free_cid_pair(struct ecore_hwfn *p_hwfn, u16 cid)
267 OSAL_SPIN_LOCK(&p_hwfn->p_rdma_info->lock);
268 ecore_bmap_release_id(p_hwfn, &p_hwfn->p_rdma_info->qp_map, cid);
269 ecore_bmap_release_id(p_hwfn, &p_hwfn->p_rdma_info->qp_map, cid + 1);
270 OSAL_SPIN_UNLOCK(&p_hwfn->p_rdma_info->lock);
274 static void ecore_roce_free_qp(struct ecore_hwfn *p_hwfn, u16 qp_idx)
276 OSAL_SPIN_LOCK(&p_hwfn->p_rdma_info->lock);
277 ecore_bmap_release_id(p_hwfn, &p_hwfn->p_rdma_info->qp_map, qp_idx);
278 OSAL_SPIN_UNLOCK(&p_hwfn->p_rdma_info->lock);
284 static enum _ecore_status_t ecore_roce_wait_free_cids(struct ecore_hwfn *p_hwfn, u32 qp_idx)
286 struct ecore_rdma_info *p_rdma_info = p_hwfn->p_rdma_info;
304 resp = ecore_bmap_test_id(p_hwfn, &p_rdma_info->cid_map, icid);
305 req = ecore_bmap_test_id(p_hwfn, &p_rdma_info->cid_map, icid + 1);
318 DP_ERR(p_hwfn->p_dev,
328 struct ecore_hwfn *p_hwfn, u16 *qp_idx16)
330 struct ecore_rdma_info *p_rdma_info = p_hwfn->p_rdma_info;
335 rc = ecore_rdma_bmap_alloc_id(p_hwfn, &p_rdma_info->qp_map, &qp_idx);
337 DP_NOTICE(p_hwfn, false, "failed to allocate qp\n");
345 rc = ecore_roce_wait_free_cids(p_hwfn, qp_idx);
357 start_cid = ecore_cxt_get_proto_cid_start(p_hwfn, p_rdma_info->proto);
360 rc = ecore_cxt_dynamic_ilt_alloc(p_hwfn, ECORE_ELEM_CXT, cid);
364 rc = ecore_cxt_dynamic_ilt_alloc(p_hwfn, ECORE_ELEM_CXT, cid + 1);
374 ecore_roce_free_qp(p_hwfn, (u16)qp_idx);
376 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "rc = %d\n", rc);
381 static void ecore_roce_set_cid(struct ecore_hwfn *p_hwfn,
384 OSAL_SPIN_LOCK(&p_hwfn->p_rdma_info->lock);
385 ecore_bmap_set_id(p_hwfn,
386 &p_hwfn->p_rdma_info->cid_map,
388 OSAL_SPIN_UNLOCK(&p_hwfn->p_rdma_info->lock);
392 struct ecore_hwfn *p_hwfn,
408 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "qp_idx = %08x\n", qp->qp_idx);
412 qp->irq = OSAL_DMA_ALLOC_COHERENT(p_hwfn->p_dev,
417 DP_NOTICE(p_hwfn, false,
426 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
429 rc = ecore_sp_init_request(p_hwfn, &p_ent, ROCE_RAMROD_CREATE_QP,
500 p_ramrod->cq_cid = OSAL_CPU_TO_LE32((p_hwfn->hw_info.opaque_fid << 16) | qp->rq_cq_id);
505 if (p_hwfn->p_rdma_info->roce.dcqcn_enabled)
507 ecore_get_cm_pq_idx_rl(p_hwfn,
512 regular_latency_queue = ecore_get_cm_pq_idx(p_hwfn, PQ_FLAGS_OFLD);
513 low_latency_queue = ecore_get_cm_pq_idx(p_hwfn, PQ_FLAGS_LLT);
525 fw_srq_id = ecore_rdma_get_fw_srq_id(p_hwfn, qp->srq_id, is_xrc);
527 p_ramrod->srq_id.opaque_fid = OSAL_CPU_TO_LE16(p_hwfn->hw_info.opaque_fid);
529 p_ramrod->stats_counter_id = RESC_START(p_hwfn, ECORE_RDMA_STATS_QUEUE) +
532 rc = ecore_spq_post(p_hwfn, p_ent, OSAL_NULL);
534 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "rc = %d regular physical queue = 0x%x, low latency physical queue 0x%x\n",
543 cid_start = ecore_cxt_get_proto_cid_start(p_hwfn,
544 p_hwfn->p_rdma_info->proto);
545 ecore_roce_set_cid(p_hwfn, qp->icid - cid_start);
550 DP_NOTICE(p_hwfn, false, "create responder - failed, rc = %d\n", rc);
551 OSAL_DMA_FREE_COHERENT(p_hwfn->p_dev,
561 struct ecore_hwfn *p_hwfn,
575 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "icid = %08x\n", qp->icid);
579 qp->orq = OSAL_DMA_ALLOC_COHERENT(p_hwfn->p_dev,
585 DP_NOTICE(p_hwfn, false,
594 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
597 rc = ecore_sp_init_request(p_hwfn, &p_ent,
658 p_ramrod->cq_cid = OSAL_CPU_TO_LE32((p_hwfn->hw_info.opaque_fid << 16) |
663 if (p_hwfn->p_rdma_info->roce.dcqcn_enabled)
665 ecore_get_cm_pq_idx_rl(p_hwfn,
670 regular_latency_queue = ecore_get_cm_pq_idx(p_hwfn, PQ_FLAGS_OFLD);
671 low_latency_queue = ecore_get_cm_pq_idx(p_hwfn, PQ_FLAGS_LLT);
682 p_ramrod->stats_counter_id = RESC_START(p_hwfn, ECORE_RDMA_STATS_QUEUE) +
685 rc = ecore_spq_post(p_hwfn, p_ent, OSAL_NULL);
687 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "rc = %d\n", rc);
695 cid_start = ecore_cxt_get_proto_cid_start(p_hwfn,
696 p_hwfn->p_rdma_info->proto);
697 ecore_roce_set_cid(p_hwfn, qp->icid + 1 - cid_start);
702 DP_NOTICE(p_hwfn, false, "Create requested - failed, rc = %d\n", rc);
703 OSAL_DMA_FREE_COHERENT(p_hwfn->p_dev,
712 struct ecore_hwfn *p_hwfn,
725 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "icid = %08x\n", qp->icid);
733 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
736 rc = ecore_sp_init_request(p_hwfn, &p_ent,
741 DP_NOTICE(p_hwfn, false, "rc = %d\n", rc);
810 rc = ecore_spq_post(p_hwfn, p_ent, OSAL_NULL);
812 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "Modify responder, rc = %d\n", rc);
817 struct ecore_hwfn *p_hwfn,
831 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "icid = %08x\n", qp->icid);
839 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
842 rc = ecore_sp_init_request(p_hwfn, &p_ent,
846 DP_NOTICE(p_hwfn, false, "rc = %d\n", rc);
917 rc = ecore_spq_post(p_hwfn, p_ent, OSAL_NULL);
919 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "Modify requester, rc = %d\n", rc);
924 struct ecore_hwfn *p_hwfn,
942 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "icid = %08x\n", qp->icid);
954 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
957 rc = ecore_sp_init_request(p_hwfn, &p_ent,
965 p_ramrod_res = (struct roce_destroy_qp_resp_output_params *)OSAL_DMA_ALLOC_COHERENT(p_hwfn->p_dev,
971 DP_NOTICE(p_hwfn, false,
979 rc = ecore_spq_post(p_hwfn, p_ent, OSAL_NULL);
989 OSAL_DMA_FREE_COHERENT(p_hwfn->p_dev,
997 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "Destroy responder, rc = %d\n", rc);
1002 OSAL_DMA_FREE_COHERENT(p_hwfn->p_dev, p_ramrod_res, ramrod_res_phys,
1009 struct ecore_hwfn *p_hwfn,
1027 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "icid = %08x\n", qp->icid);
1035 OSAL_DMA_ALLOC_COHERENT(p_hwfn->p_dev, &ramrod_res_phys,
1039 DP_NOTICE(p_hwfn, false,
1047 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
1050 rc = ecore_sp_init_request(p_hwfn, &p_ent, ROCE_RAMROD_DESTROY_QP,
1058 rc = ecore_spq_post(p_hwfn, p_ent, OSAL_NULL);
1067 OSAL_DMA_FREE_COHERENT(p_hwfn->p_dev,
1075 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "Destroy requester, rc = %d\n", rc);
1080 OSAL_DMA_FREE_COHERENT(p_hwfn->p_dev, p_ramrod_res, ramrod_res_phys,
1087 struct ecore_hwfn *p_hwfn,
1108 OSAL_DMA_ALLOC_COHERENT(p_hwfn->p_dev, &resp_ramrod_res_phys,
1112 DP_NOTICE(p_hwfn, false,
1120 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
1122 rc = ecore_sp_init_request(p_hwfn, &p_ent, ROCE_RAMROD_QUERY_QP,
1130 rc = ecore_spq_post(p_hwfn, p_ent, OSAL_NULL);
1142 OSAL_DMA_FREE_COHERENT(p_hwfn->p_dev, p_resp_ramrod_res,
1150 struct ecore_hwfn *p_hwfn,
1176 OSAL_DMA_ALLOC_COHERENT(p_hwfn->p_dev, &req_ramrod_res_phys,
1180 DP_NOTICE(p_hwfn, false,
1188 rc = ecore_sp_init_request(p_hwfn, &p_ent, ROCE_RAMROD_QUERY_QP,
1196 rc = ecore_spq_post(p_hwfn, p_ent, OSAL_NULL);
1211 OSAL_DMA_FREE_COHERENT(p_hwfn->p_dev, p_req_ramrod_res,
1218 struct ecore_hwfn *p_hwfn,
1224 rc = ecore_roce_sp_query_responder(p_hwfn, qp, out_params);
1228 rc = ecore_roce_sp_query_requester(p_hwfn, qp, out_params,
1238 enum _ecore_status_t ecore_roce_destroy_qp(struct ecore_hwfn *p_hwfn,
1255 DP_NOTICE(p_hwfn,
1262 rc = ecore_roce_sp_destroy_qp_responder(p_hwfn,
1270 rc = ecore_roce_sp_destroy_qp_requester(p_hwfn, qp,
1278 DP_NOTICE(p_hwfn,
1285 ecore_roce_free_qp(p_hwfn, qp->qp_idx);
1295 struct ecore_hwfn *p_hwfn = (struct ecore_hwfn *)rdma_cxt;
1301 DP_ERR(p_hwfn->p_dev,
1309 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
1311 rc = ecore_sp_init_request(p_hwfn, &p_ent, ROCE_RAMROD_DESTROY_UD_QP,
1316 rc = ecore_spq_post(p_hwfn, p_ent, OSAL_NULL);
1320 ecore_roce_free_qp(p_hwfn, ECORE_ROCE_ICID_TO_QP(cid));
1322 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "freed a ud qp with cid=%d\n", cid);
1327 DP_ERR(p_hwfn, "failed destroying a ud qp with cid=%d\n", cid);
1335 struct ecore_hwfn *p_hwfn = (struct ecore_hwfn *)rdma_cxt;
1342 DP_ERR(p_hwfn->p_dev,
1348 rc = ecore_roce_alloc_qp_idx(p_hwfn, &qp_idx);
1357 init_data.opaque_fid = p_hwfn->hw_info.opaque_fid;
1359 rc = ecore_sp_init_request(p_hwfn, &p_ent, ROCE_RAMROD_CREATE_UD_QP,
1364 rc = ecore_spq_post(p_hwfn, p_ent, OSAL_NULL);
1371 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "created a ud qp with icid=%d\n",
1377 ecore_roce_free_qp(p_hwfn, qp_idx);
1380 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "failed creating a ud qp\n");
1386 ecore_roce_modify_qp(struct ecore_hwfn *p_hwfn,
1404 rc = ecore_roce_wait_free_cids(p_hwfn, qp->qp_idx);
1408 rc = ecore_roce_sp_create_responder(p_hwfn, qp);
1415 rc = ecore_roce_sp_create_requester(p_hwfn, qp);
1420 rc = ecore_roce_sp_modify_responder(p_hwfn, qp, false,
1428 rc = ecore_roce_sp_modify_responder(p_hwfn, qp, false,
1433 rc = ecore_roce_sp_modify_requester(p_hwfn, qp, false, false,
1441 rc = ecore_roce_sp_modify_requester(p_hwfn, qp, true, false,
1449 rc = ecore_roce_sp_modify_responder(p_hwfn, qp, false,
1454 rc = ecore_roce_sp_modify_requester(p_hwfn, qp, false, false,
1462 rc = ecore_roce_sp_modify_responder(p_hwfn, qp, false,
1467 rc = ecore_roce_sp_modify_requester(p_hwfn, qp, false, false,
1473 rc = ecore_roce_sp_modify_responder(p_hwfn, qp, true,
1478 rc = ecore_roce_sp_modify_requester(p_hwfn, qp, false, true,
1486 rc = ecore_roce_sp_destroy_qp_responder(p_hwfn, qp,
1493 rc = ecore_roce_sp_destroy_qp_requester(p_hwfn, qp,
1501 DP_NOTICE(p_hwfn,
1507 DP_VERBOSE(p_hwfn, ECORE_MSG_RDMA, "ECORE_SUCCESS\n");
1513 static void ecore_roce_free_icid(struct ecore_hwfn *p_hwfn, u16 icid)
1515 struct ecore_rdma_info *p_rdma_info = p_hwfn->p_rdma_info;
1518 start_cid = ecore_cxt_get_proto_cid_start(p_hwfn, p_rdma_info->proto);
1523 ecore_bmap_release_id(p_hwfn, &p_rdma_info->cid_map, cid);
1525 OSAL_SPIN_UNLOCK(&p_hwfn->p_rdma_info->lock);
1528 static void ecore_rdma_dpm_conf(struct ecore_hwfn *p_hwfn,
1533 val = (p_hwfn->dcbx_no_edpm || p_hwfn->db_bar_no_edpm) ? 0 : 1;
1535 ecore_wr(p_hwfn, p_ptt, DORQ_REG_PF_DPM_ENABLE, val);
1536 DP_VERBOSE(p_hwfn, (ECORE_MSG_DCB | ECORE_MSG_RDMA),
1538 val, p_hwfn->dcbx_no_edpm, p_hwfn->db_bar_no_edpm);
1542 void ecore_roce_dpm_dcbx(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt)
1550 val = (ecore_rdma_allocated_qps(p_hwfn)) ? true : false;
1551 p_hwfn->dcbx_no_edpm = (u8)val;
1553 ecore_rdma_dpm_conf(p_hwfn, p_ptt);
1557 void ecore_rdma_dpm_bar(struct ecore_hwfn *p_hwfn, struct ecore_ptt *p_ptt)
1559 p_hwfn->db_bar_no_edpm = true;
1561 ecore_rdma_dpm_conf(p_hwfn, p_ptt);
1564 enum _ecore_status_t ecore_roce_setup(struct ecore_hwfn *p_hwfn)
1566 return ecore_spq_register_async_cb(p_hwfn, PROTOCOLID_ROCE,