Lines Matching refs:cq

2469 static inline void irdma_sc_cq_ack(struct irdma_sc_cq *cq)  in irdma_sc_cq_ack()  argument
2471 writel(cq->cq_uk.cq_id, cq->cq_uk.cq_ack_db); in irdma_sc_cq_ack()
2479 int irdma_sc_cq_init(struct irdma_sc_cq *cq, struct irdma_cq_init_info *info) in irdma_sc_cq_init() argument
2487 cq->cq_pa = info->cq_base_pa; in irdma_sc_cq_init()
2488 cq->dev = info->dev; in irdma_sc_cq_init()
2489 cq->ceq_id = info->ceq_id; in irdma_sc_cq_init()
2490 info->cq_uk_init_info.cqe_alloc_db = cq->dev->cq_arm_db; in irdma_sc_cq_init()
2491 info->cq_uk_init_info.cq_ack_db = cq->dev->cq_ack_db; in irdma_sc_cq_init()
2492 irdma_uk_cq_init(&cq->cq_uk, &info->cq_uk_init_info); in irdma_sc_cq_init()
2494 cq->virtual_map = info->virtual_map; in irdma_sc_cq_init()
2495 cq->pbl_chunk_size = info->pbl_chunk_size; in irdma_sc_cq_init()
2496 cq->ceqe_mask = info->ceqe_mask; in irdma_sc_cq_init()
2497 cq->cq_type = (info->type) ? info->type : IRDMA_CQ_TYPE_IWARP; in irdma_sc_cq_init()
2498 cq->shadow_area_pa = info->shadow_area_pa; in irdma_sc_cq_init()
2499 cq->shadow_read_threshold = info->shadow_read_threshold; in irdma_sc_cq_init()
2500 cq->ceq_id_valid = info->ceq_id_valid; in irdma_sc_cq_init()
2501 cq->tph_en = info->tph_en; in irdma_sc_cq_init()
2502 cq->tph_val = info->tph_val; in irdma_sc_cq_init()
2503 cq->first_pm_pbl_idx = info->first_pm_pbl_idx; in irdma_sc_cq_init()
2504 cq->vsi = info->vsi; in irdma_sc_cq_init()
2516 static int irdma_sc_cq_create(struct irdma_sc_cq *cq, u64 scratch, in irdma_sc_cq_create() argument
2525 cqp = cq->dev->cqp; in irdma_sc_cq_create()
2526 if (cq->cq_uk.cq_id >= cqp->dev->hmc_info->hmc_obj[IRDMA_HMC_IW_CQ].max_cnt) in irdma_sc_cq_create()
2529 if (cq->ceq_id >= cq->dev->hmc_fpm_misc.max_ceqs) in irdma_sc_cq_create()
2532 ceq = cq->dev->ceq[cq->ceq_id]; in irdma_sc_cq_create()
2534 ret_code = irdma_sc_add_cq_ctx(ceq, cq); in irdma_sc_cq_create()
2542 irdma_sc_remove_cq_ctx(ceq, cq); in irdma_sc_cq_create()
2546 set_64bit_val(wqe, 0, cq->cq_uk.cq_size); in irdma_sc_cq_create()
2547 set_64bit_val(wqe, 8, (uintptr_t)cq >> 1); in irdma_sc_cq_create()
2549 FIELD_PREP(IRDMA_CQPSQ_CQ_SHADOW_READ_THRESHOLD, cq->shadow_read_threshold)); in irdma_sc_cq_create()
2550 set_64bit_val(wqe, 32, (cq->virtual_map ? 0 : cq->cq_pa)); in irdma_sc_cq_create()
2551 set_64bit_val(wqe, 40, cq->shadow_area_pa); in irdma_sc_cq_create()
2553 FIELD_PREP(IRDMA_CQPSQ_CQ_FIRSTPMPBLIDX, (cq->virtual_map ? cq->first_pm_pbl_idx : 0))); in irdma_sc_cq_create()
2555 FIELD_PREP(IRDMA_CQPSQ_TPHVAL, cq->tph_val) | in irdma_sc_cq_create()
2556 FIELD_PREP(IRDMA_CQPSQ_VSIIDX, cq->vsi->vsi_idx)); in irdma_sc_cq_create()
2558 hdr = FLD_LS_64(cq->dev, cq->cq_uk.cq_id, IRDMA_CQPSQ_CQ_CQID) | in irdma_sc_cq_create()
2559 FLD_LS_64(cq->dev, (cq->ceq_id_valid ? cq->ceq_id : 0), in irdma_sc_cq_create()
2562 FIELD_PREP(IRDMA_CQPSQ_CQ_LPBLSIZE, cq->pbl_chunk_size) | in irdma_sc_cq_create()
2564 FIELD_PREP(IRDMA_CQPSQ_CQ_VIRTMAP, cq->virtual_map) | in irdma_sc_cq_create()
2565 FIELD_PREP(IRDMA_CQPSQ_CQ_ENCEQEMASK, cq->ceqe_mask) | in irdma_sc_cq_create()
2566 FIELD_PREP(IRDMA_CQPSQ_CQ_CEQIDVALID, cq->ceq_id_valid) | in irdma_sc_cq_create()
2567 FIELD_PREP(IRDMA_CQPSQ_TPHEN, cq->tph_en) | in irdma_sc_cq_create()
2569 cq->cq_uk.avoid_mem_cflct) | in irdma_sc_cq_create()
2589 int irdma_sc_cq_destroy(struct irdma_sc_cq *cq, u64 scratch, bool post_sq) in irdma_sc_cq_destroy() argument
2596 cqp = cq->dev->cqp; in irdma_sc_cq_destroy()
2601 ceq = cq->dev->ceq[cq->ceq_id]; in irdma_sc_cq_destroy()
2603 irdma_sc_remove_cq_ctx(ceq, cq); in irdma_sc_cq_destroy()
2605 set_64bit_val(wqe, 0, cq->cq_uk.cq_size); in irdma_sc_cq_destroy()
2606 set_64bit_val(wqe, 8, (uintptr_t)cq >> 1); in irdma_sc_cq_destroy()
2607 set_64bit_val(wqe, 40, cq->shadow_area_pa); in irdma_sc_cq_destroy()
2609 (cq->virtual_map ? cq->first_pm_pbl_idx : 0)); in irdma_sc_cq_destroy()
2611 hdr = cq->cq_uk.cq_id | in irdma_sc_cq_destroy()
2612 FLD_LS_64(cq->dev, (cq->ceq_id_valid ? cq->ceq_id : 0), in irdma_sc_cq_destroy()
2615 FIELD_PREP(IRDMA_CQPSQ_CQ_LPBLSIZE, cq->pbl_chunk_size) | in irdma_sc_cq_destroy()
2616 FIELD_PREP(IRDMA_CQPSQ_CQ_VIRTMAP, cq->virtual_map) | in irdma_sc_cq_destroy()
2617 FIELD_PREP(IRDMA_CQPSQ_CQ_ENCEQEMASK, cq->ceqe_mask) | in irdma_sc_cq_destroy()
2618 FIELD_PREP(IRDMA_CQPSQ_CQ_CEQIDVALID, cq->ceq_id_valid) | in irdma_sc_cq_destroy()
2619 FIELD_PREP(IRDMA_CQPSQ_TPHEN, cq->tph_en) | in irdma_sc_cq_destroy()
2620 FIELD_PREP(IRDMA_CQPSQ_CQ_AVOIDMEMCNFLCT, cq->cq_uk.avoid_mem_cflct) | in irdma_sc_cq_destroy()
2639 void irdma_sc_cq_resize(struct irdma_sc_cq *cq, struct irdma_modify_cq_info *info) in irdma_sc_cq_resize() argument
2641 cq->virtual_map = info->virtual_map; in irdma_sc_cq_resize()
2642 cq->cq_pa = info->cq_pa; in irdma_sc_cq_resize()
2643 cq->first_pm_pbl_idx = info->first_pm_pbl_idx; in irdma_sc_cq_resize()
2644 cq->pbl_chunk_size = info->pbl_chunk_size; in irdma_sc_cq_resize()
2645 irdma_uk_cq_resize(&cq->cq_uk, info->cq_base, info->cq_size); in irdma_sc_cq_resize()
2655 static int irdma_sc_cq_modify(struct irdma_sc_cq *cq, in irdma_sc_cq_modify() argument
2664 pble_obj_cnt = cq->dev->hmc_info->hmc_obj[IRDMA_HMC_IW_PBLE].cnt; in irdma_sc_cq_modify()
2669 cqp = cq->dev->cqp; in irdma_sc_cq_modify()
2675 set_64bit_val(wqe, 8, (uintptr_t)cq >> 1); in irdma_sc_cq_modify()
2679 set_64bit_val(wqe, 40, cq->shadow_area_pa); in irdma_sc_cq_modify()
2682 FIELD_PREP(IRDMA_CQPSQ_TPHVAL, cq->tph_val) | in irdma_sc_cq_modify()
2683 FIELD_PREP(IRDMA_CQPSQ_VSIIDX, cq->vsi->vsi_idx)); in irdma_sc_cq_modify()
2685 hdr = cq->cq_uk.cq_id | in irdma_sc_cq_modify()
2691 FIELD_PREP(IRDMA_CQPSQ_CQ_ENCEQEMASK, cq->ceqe_mask) | in irdma_sc_cq_modify()
2692 FIELD_PREP(IRDMA_CQPSQ_TPHEN, cq->tph_en) | in irdma_sc_cq_modify()
2694 cq->cq_uk.avoid_mem_cflct) | in irdma_sc_cq_modify()
3022 struct irdma_sc_cq *cq) in irdma_sc_find_reg_cq() argument
3027 if (cq == ceq->reg_cq[i]) in irdma_sc_find_reg_cq()
3039 int irdma_sc_add_cq_ctx(struct irdma_sc_ceq *ceq, struct irdma_sc_cq *cq) in irdma_sc_add_cq_ctx() argument
3050 ceq->reg_cq[ceq->reg_cq_size++] = cq; in irdma_sc_add_cq_ctx()
3062 void irdma_sc_remove_cq_ctx(struct irdma_sc_ceq *ceq, struct irdma_sc_cq *cq) in irdma_sc_remove_cq_ctx() argument
3068 cq_ctx_idx = irdma_sc_find_reg_cq(ceq, cq); in irdma_sc_remove_cq_ctx()
3807 struct irdma_sc_cq *cq = NULL; in irdma_sc_process_ceq() local
3831 cq = temp_cq; in irdma_sc_process_ceq()
3834 cq_idx = irdma_sc_find_reg_cq(ceq, cq); in irdma_sc_process_ceq()
3843 if (cq) in irdma_sc_process_ceq()
3844 irdma_sc_cq_ack(cq); in irdma_sc_process_ceq()
3845 return cq; in irdma_sc_process_ceq()
3857 void irdma_sc_cleanup_ceqes(struct irdma_sc_cq *cq, struct irdma_sc_ceq *ceq) in irdma_sc_cleanup_ceqes() argument
3878 if (cq == next_cq) in irdma_sc_cleanup_ceqes()
4084 info->cq = true; in irdma_sc_get_next_aeqe()
4118 info->cq = true; in irdma_sc_get_next_aeqe()
4166 int irdma_sc_ccq_init(struct irdma_sc_cq *cq, struct irdma_ccq_init_info *info) in irdma_sc_ccq_init() argument
4182 cq->cq_pa = info->cq_pa; in irdma_sc_ccq_init()
4183 cq->cq_uk.cq_base = info->cq_base; in irdma_sc_ccq_init()
4184 cq->shadow_area_pa = info->shadow_area_pa; in irdma_sc_ccq_init()
4185 cq->cq_uk.shadow_area = info->shadow_area; in irdma_sc_ccq_init()
4186 cq->shadow_read_threshold = info->shadow_read_threshold; in irdma_sc_ccq_init()
4187 cq->dev = info->dev; in irdma_sc_ccq_init()
4188 cq->ceq_id = info->ceq_id; in irdma_sc_ccq_init()
4189 cq->cq_uk.cq_size = info->num_elem; in irdma_sc_ccq_init()
4190 cq->cq_type = IRDMA_CQ_TYPE_CQP; in irdma_sc_ccq_init()
4191 cq->ceqe_mask = info->ceqe_mask; in irdma_sc_ccq_init()
4192 IRDMA_RING_INIT(cq->cq_uk.cq_ring, info->num_elem); in irdma_sc_ccq_init()
4193 cq->cq_uk.cq_id = 0; /* control cq is id 0 always */ in irdma_sc_ccq_init()
4194 cq->ceq_id_valid = info->ceq_id_valid; in irdma_sc_ccq_init()
4195 cq->tph_en = info->tph_en; in irdma_sc_ccq_init()
4196 cq->tph_val = info->tph_val; in irdma_sc_ccq_init()
4197 cq->cq_uk.avoid_mem_cflct = info->avoid_mem_cflct; in irdma_sc_ccq_init()
4198 cq->pbl_list = info->pbl_list; in irdma_sc_ccq_init()
4199 cq->virtual_map = info->virtual_map; in irdma_sc_ccq_init()
4200 cq->pbl_chunk_size = info->pbl_chunk_size; in irdma_sc_ccq_init()
4201 cq->first_pm_pbl_idx = info->first_pm_pbl_idx; in irdma_sc_ccq_init()
4202 cq->cq_uk.polarity = true; in irdma_sc_ccq_init()
4203 cq->vsi = info->vsi; in irdma_sc_ccq_init()
4204 cq->cq_uk.cq_ack_db = cq->dev->cq_ack_db; in irdma_sc_ccq_init()
4207 cq->cq_uk.cqe_alloc_db = NULL; in irdma_sc_ccq_init()
4209 info->dev->ccq = cq; in irdma_sc_ccq_init()
5018 status = irdma_sc_cq_create(pcmdinfo->in.u.cq_create.cq, in irdma_exec_cqp_cmd()
5024 status = irdma_sc_cq_modify(pcmdinfo->in.u.cq_modify.cq, in irdma_exec_cqp_cmd()
5030 status = irdma_sc_cq_destroy(pcmdinfo->in.u.cq_destroy.cq, in irdma_exec_cqp_cmd()