Lines Matching refs:qp
58 static int irdma_nop_1(struct irdma_qp_uk *qp) in irdma_nop_1() argument
65 if (!qp->sq_ring.head) in irdma_nop_1()
68 wqe_idx = IRDMA_RING_CURRENT_HEAD(qp->sq_ring); in irdma_nop_1()
69 wqe = qp->sq_base[wqe_idx].elem; in irdma_nop_1()
71 qp->sq_wrtrk_array[wqe_idx].quanta = IRDMA_QP_WQE_MIN_QUANTA; in irdma_nop_1()
79 FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity); in irdma_nop_1()
94 void irdma_clr_wqes(struct irdma_qp_uk *qp, u32 qp_wqe_idx) in irdma_clr_wqes() argument
100 wqe_idx = (qp_wqe_idx + 128) % qp->sq_ring.size; in irdma_clr_wqes()
101 wqe = qp->sq_base[wqe_idx].elem; in irdma_clr_wqes()
103 memset(wqe, qp->swqe_polarity ? 0 : 0xFF, 0x1000); in irdma_clr_wqes()
105 memset(wqe, qp->swqe_polarity ? 0xFF : 0, 0x1000); in irdma_clr_wqes()
113 void irdma_uk_qp_post_wr(struct irdma_qp_uk *qp) in irdma_uk_qp_post_wr() argument
123 get_64bit_val(qp->shadow_area, 0, &temp); in irdma_uk_qp_post_wr()
126 sw_sq_head = IRDMA_RING_CURRENT_HEAD(qp->sq_ring); in irdma_uk_qp_post_wr()
127 if (sw_sq_head != qp->initial_ring.head) { in irdma_uk_qp_post_wr()
128 if (qp->push_dropped) { in irdma_uk_qp_post_wr()
129 writel(qp->qp_id, qp->wqe_alloc_db); in irdma_uk_qp_post_wr()
130 qp->push_dropped = false; in irdma_uk_qp_post_wr()
132 if (sw_sq_head > qp->initial_ring.head) { in irdma_uk_qp_post_wr()
133 if (hw_sq_tail >= qp->initial_ring.head && in irdma_uk_qp_post_wr()
135 writel(qp->qp_id, qp->wqe_alloc_db); in irdma_uk_qp_post_wr()
137 if (hw_sq_tail >= qp->initial_ring.head || in irdma_uk_qp_post_wr()
139 writel(qp->qp_id, qp->wqe_alloc_db); in irdma_uk_qp_post_wr()
144 qp->initial_ring.head = qp->sq_ring.head; in irdma_uk_qp_post_wr()
152 static void irdma_qp_ring_push_db(struct irdma_qp_uk *qp, u32 wqe_idx) in irdma_qp_ring_push_db() argument
154 set_32bit_val(qp->push_db, 0, in irdma_qp_ring_push_db()
155 FIELD_PREP(IRDMA_WQEALLOC_WQE_DESC_INDEX, wqe_idx >> 3) | qp->qp_id); in irdma_qp_ring_push_db()
156 qp->initial_ring.head = qp->sq_ring.head; in irdma_qp_ring_push_db()
157 qp->push_mode = true; in irdma_qp_ring_push_db()
158 qp->push_dropped = false; in irdma_qp_ring_push_db()
161 void irdma_qp_push_wqe(struct irdma_qp_uk *qp, __le64 *wqe, u16 quanta, in irdma_qp_push_wqe() argument
166 if (IRDMA_RING_CURRENT_HEAD(qp->initial_ring) != in irdma_qp_push_wqe()
167 IRDMA_RING_CURRENT_TAIL(qp->sq_ring) && in irdma_qp_push_wqe()
168 !qp->push_mode) { in irdma_qp_push_wqe()
170 irdma_uk_qp_post_wr(qp); in irdma_qp_push_wqe()
172 push = (__le64 *)((uintptr_t)qp->push_wqe + in irdma_qp_push_wqe()
175 irdma_qp_ring_push_db(qp, wqe_idx); in irdma_qp_push_wqe()
187 __le64 *irdma_qp_get_next_send_wqe(struct irdma_qp_uk *qp, u32 *wqe_idx, in irdma_qp_get_next_send_wqe() argument
197 avail_quanta = qp->uk_attrs->max_hw_sq_chunk - in irdma_qp_get_next_send_wqe()
198 (IRDMA_RING_CURRENT_HEAD(qp->sq_ring) % in irdma_qp_get_next_send_wqe()
199 qp->uk_attrs->max_hw_sq_chunk); in irdma_qp_get_next_send_wqe()
202 if (quanta > IRDMA_SQ_RING_FREE_QUANTA(qp->sq_ring)) in irdma_qp_get_next_send_wqe()
207 IRDMA_SQ_RING_FREE_QUANTA(qp->sq_ring)) in irdma_qp_get_next_send_wqe()
210 nop_wqe_idx = IRDMA_RING_CURRENT_HEAD(qp->sq_ring); in irdma_qp_get_next_send_wqe()
212 irdma_nop_1(qp); in irdma_qp_get_next_send_wqe()
213 IRDMA_RING_MOVE_HEAD_NOCHECK(qp->sq_ring); in irdma_qp_get_next_send_wqe()
215 if (qp->push_db && info->push_wqe) in irdma_qp_get_next_send_wqe()
216 irdma_qp_push_wqe(qp, qp->sq_base[nop_wqe_idx].elem, in irdma_qp_get_next_send_wqe()
220 *wqe_idx = IRDMA_RING_CURRENT_HEAD(qp->sq_ring); in irdma_qp_get_next_send_wqe()
222 qp->swqe_polarity = !qp->swqe_polarity; in irdma_qp_get_next_send_wqe()
224 IRDMA_RING_MOVE_HEAD_BY_COUNT_NOCHECK(qp->sq_ring, quanta); in irdma_qp_get_next_send_wqe()
226 wqe = qp->sq_base[*wqe_idx].elem; in irdma_qp_get_next_send_wqe()
227 if (qp->uk_attrs->hw_rev == IRDMA_GEN_1 && quanta == 1 && in irdma_qp_get_next_send_wqe()
228 (IRDMA_RING_CURRENT_HEAD(qp->sq_ring) & 1)) { in irdma_qp_get_next_send_wqe()
229 wqe_0 = qp->sq_base[IRDMA_RING_CURRENT_HEAD(qp->sq_ring)].elem; in irdma_qp_get_next_send_wqe()
230 wqe_0[3] = cpu_to_le64(FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity ? 0 : 1)); in irdma_qp_get_next_send_wqe()
232 qp->sq_wrtrk_array[*wqe_idx].wrid = info->wr_id; in irdma_qp_get_next_send_wqe()
233 qp->sq_wrtrk_array[*wqe_idx].wr_len = total_size; in irdma_qp_get_next_send_wqe()
234 qp->sq_wrtrk_array[*wqe_idx].quanta = quanta; in irdma_qp_get_next_send_wqe()
244 __le64 *irdma_qp_get_next_recv_wqe(struct irdma_qp_uk *qp, u32 *wqe_idx) in irdma_qp_get_next_recv_wqe() argument
249 if (IRDMA_RING_FULL_ERR(qp->rq_ring)) in irdma_qp_get_next_recv_wqe()
252 IRDMA_ATOMIC_RING_MOVE_HEAD(qp->rq_ring, *wqe_idx, ret_code); in irdma_qp_get_next_recv_wqe()
257 qp->rwqe_polarity = !qp->rwqe_polarity; in irdma_qp_get_next_recv_wqe()
259 wqe = qp->rq_base[*wqe_idx * qp->rq_wqe_size_multiplier].elem; in irdma_qp_get_next_recv_wqe()
270 int irdma_uk_rdma_write(struct irdma_qp_uk *qp, struct irdma_post_sq_info *info, in irdma_uk_rdma_write() argument
283 info->push_wqe = qp->push_db ? true : false; in irdma_uk_rdma_write()
286 if (op_info->num_lo_sges > qp->max_sq_frag_cnt) in irdma_uk_rdma_write()
303 wqe = irdma_qp_get_next_send_wqe(qp, &wqe_idx, quanta, total_size, in irdma_uk_rdma_write()
308 irdma_clr_wqes(qp, wqe_idx); in irdma_uk_rdma_write()
318 qp->wqe_ops.iw_set_fragment(wqe, 0, in irdma_uk_rdma_write()
320 qp->swqe_polarity); in irdma_uk_rdma_write()
325 qp->wqe_ops.iw_set_fragment(wqe, byte_off, in irdma_uk_rdma_write()
327 qp->swqe_polarity); in irdma_uk_rdma_write()
332 if (qp->uk_attrs->hw_rev >= IRDMA_GEN_2 && !(frag_cnt & 0x01) && in irdma_uk_rdma_write()
334 qp->wqe_ops.iw_set_fragment(wqe, byte_off, NULL, in irdma_uk_rdma_write()
335 qp->swqe_polarity); in irdma_uk_rdma_write()
336 if (qp->uk_attrs->hw_rev == IRDMA_GEN_2) in irdma_uk_rdma_write()
349 FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity); in irdma_uk_rdma_write()
355 irdma_qp_push_wqe(qp, wqe, quanta, wqe_idx, post_sq); in irdma_uk_rdma_write()
358 irdma_uk_qp_post_wr(qp); in irdma_uk_rdma_write()
371 int irdma_uk_rdma_read(struct irdma_qp_uk *qp, struct irdma_post_sq_info *info, in irdma_uk_rdma_read() argument
384 info->push_wqe = qp->push_db ? true : false; in irdma_uk_rdma_read()
387 if (qp->max_sq_frag_cnt < op_info->num_lo_sges) in irdma_uk_rdma_read()
397 wqe = irdma_qp_get_next_send_wqe(qp, &wqe_idx, quanta, total_size, in irdma_uk_rdma_read()
402 irdma_clr_wqes(qp, wqe_idx); in irdma_uk_rdma_read()
408 qp->wqe_ops.iw_set_fragment(wqe, 0, op_info->lo_sg_list, in irdma_uk_rdma_read()
409 qp->swqe_polarity); in irdma_uk_rdma_read()
411 qp->wqe_ops.iw_set_fragment(wqe, byte_off, in irdma_uk_rdma_read()
413 qp->swqe_polarity); in irdma_uk_rdma_read()
418 if (qp->uk_attrs->hw_rev >= IRDMA_GEN_2 && in irdma_uk_rdma_read()
420 qp->wqe_ops.iw_set_fragment(wqe, byte_off, NULL, in irdma_uk_rdma_read()
421 qp->swqe_polarity); in irdma_uk_rdma_read()
422 if (qp->uk_attrs->hw_rev == IRDMA_GEN_2) in irdma_uk_rdma_read()
436 FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity); in irdma_uk_rdma_read()
442 irdma_qp_push_wqe(qp, wqe, quanta, wqe_idx, post_sq); in irdma_uk_rdma_read()
445 irdma_uk_qp_post_wr(qp); in irdma_uk_rdma_read()
457 int irdma_uk_send(struct irdma_qp_uk *qp, struct irdma_post_sq_info *info, in irdma_uk_send() argument
469 info->push_wqe = qp->push_db ? true : false; in irdma_uk_send()
472 if (qp->max_sq_frag_cnt < op_info->num_sges) in irdma_uk_send()
486 wqe = irdma_qp_get_next_send_wqe(qp, &wqe_idx, quanta, total_size, in irdma_uk_send()
491 irdma_clr_wqes(qp, wqe_idx); in irdma_uk_send()
500 qp->wqe_ops.iw_set_fragment(wqe, 0, in irdma_uk_send()
502 qp->swqe_polarity); in irdma_uk_send()
507 qp->wqe_ops.iw_set_fragment(wqe, byte_off, &op_info->sg_list[i], in irdma_uk_send()
508 qp->swqe_polarity); in irdma_uk_send()
513 if (qp->uk_attrs->hw_rev >= IRDMA_GEN_2 && !(frag_cnt & 0x01) && in irdma_uk_send()
515 qp->wqe_ops.iw_set_fragment(wqe, byte_off, NULL, in irdma_uk_send()
516 qp->swqe_polarity); in irdma_uk_send()
517 if (qp->uk_attrs->hw_rev == IRDMA_GEN_2) in irdma_uk_send()
537 FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity); in irdma_uk_send()
543 irdma_qp_push_wqe(qp, wqe, quanta, wqe_idx, post_sq); in irdma_uk_send()
546 irdma_uk_qp_post_wr(qp); in irdma_uk_send()
710 int irdma_uk_inline_rdma_write(struct irdma_qp_uk *qp, in irdma_uk_inline_rdma_write() argument
721 info->push_wqe = qp->push_db ? true : false; in irdma_uk_inline_rdma_write()
724 if (unlikely(qp->max_sq_frag_cnt < op_info->num_lo_sges)) in irdma_uk_inline_rdma_write()
730 if (unlikely(total_size > qp->max_inline_data)) in irdma_uk_inline_rdma_write()
733 quanta = qp->wqe_ops.iw_inline_data_size_to_quanta(total_size); in irdma_uk_inline_rdma_write()
734 wqe = irdma_qp_get_next_send_wqe(qp, &wqe_idx, quanta, total_size, in irdma_uk_inline_rdma_write()
739 irdma_clr_wqes(qp, wqe_idx); in irdma_uk_inline_rdma_write()
755 FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity); in irdma_uk_inline_rdma_write()
761 qp->wqe_ops.iw_copy_inline_data((u8 *)wqe, op_info->lo_sg_list, in irdma_uk_inline_rdma_write()
763 qp->swqe_polarity); in irdma_uk_inline_rdma_write()
769 irdma_qp_push_wqe(qp, wqe, quanta, wqe_idx, post_sq); in irdma_uk_inline_rdma_write()
772 irdma_uk_qp_post_wr(qp); in irdma_uk_inline_rdma_write()
784 int irdma_uk_inline_send(struct irdma_qp_uk *qp, in irdma_uk_inline_send() argument
795 info->push_wqe = qp->push_db ? true : false; in irdma_uk_inline_send()
798 if (unlikely(qp->max_sq_frag_cnt < op_info->num_sges)) in irdma_uk_inline_send()
804 if (unlikely(total_size > qp->max_inline_data)) in irdma_uk_inline_send()
807 quanta = qp->wqe_ops.iw_inline_data_size_to_quanta(total_size); in irdma_uk_inline_send()
808 wqe = irdma_qp_get_next_send_wqe(qp, &wqe_idx, quanta, total_size, in irdma_uk_inline_send()
813 irdma_clr_wqes(qp, wqe_idx); in irdma_uk_inline_send()
834 FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity); in irdma_uk_inline_send()
839 qp->wqe_ops.iw_copy_inline_data((u8 *)wqe, op_info->sg_list, in irdma_uk_inline_send()
840 op_info->num_sges, qp->swqe_polarity); in irdma_uk_inline_send()
847 irdma_qp_push_wqe(qp, wqe, quanta, wqe_idx, post_sq); in irdma_uk_inline_send()
850 irdma_uk_qp_post_wr(qp); in irdma_uk_inline_send()
862 int irdma_uk_stag_local_invalidate(struct irdma_qp_uk *qp, in irdma_uk_stag_local_invalidate() argument
873 info->push_wqe = qp->push_db ? true : false; in irdma_uk_stag_local_invalidate()
877 wqe = irdma_qp_get_next_send_wqe(qp, &wqe_idx, IRDMA_QP_WQE_MIN_QUANTA, in irdma_uk_stag_local_invalidate()
882 irdma_clr_wqes(qp, wqe_idx); in irdma_uk_stag_local_invalidate()
885 qp->wqe_ops.iw_set_fragment(wqe, 0, &sge, 0); in irdma_uk_stag_local_invalidate()
894 FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity); in irdma_uk_stag_local_invalidate()
901 irdma_qp_push_wqe(qp, wqe, IRDMA_QP_WQE_MIN_QUANTA, wqe_idx, in irdma_uk_stag_local_invalidate()
905 irdma_uk_qp_post_wr(qp); in irdma_uk_stag_local_invalidate()
916 int irdma_uk_post_receive(struct irdma_qp_uk *qp, in irdma_uk_post_receive() argument
924 if (qp->max_rq_frag_cnt < info->num_sges) in irdma_uk_post_receive()
927 wqe = irdma_qp_get_next_recv_wqe(qp, &wqe_idx); in irdma_uk_post_receive()
931 qp->rq_wrid_array[wqe_idx] = info->wr_id; in irdma_uk_post_receive()
933 qp->wqe_ops.iw_set_fragment(wqe, 0, info->sg_list, in irdma_uk_post_receive()
934 qp->rwqe_polarity); in irdma_uk_post_receive()
937 qp->wqe_ops.iw_set_fragment(wqe, byte_off, &info->sg_list[i], in irdma_uk_post_receive()
938 qp->rwqe_polarity); in irdma_uk_post_receive()
943 if (qp->uk_attrs->hw_rev >= IRDMA_GEN_2 && !(info->num_sges & 0x01) && in irdma_uk_post_receive()
945 qp->wqe_ops.iw_set_fragment(wqe, byte_off, NULL, in irdma_uk_post_receive()
946 qp->rwqe_polarity); in irdma_uk_post_receive()
947 if (qp->uk_attrs->hw_rev == IRDMA_GEN_2) in irdma_uk_post_receive()
953 FIELD_PREP(IRDMAQPSQ_VALID, qp->rwqe_polarity); in irdma_uk_post_receive()
1050 struct irdma_qp_uk *qp; in irdma_uk_cq_poll_cmpl() local
1155 qp = (struct irdma_qp_uk *)(unsigned long)comp_ctx; in irdma_uk_cq_poll_cmpl()
1156 if (!qp || qp->destroy_pending) { in irdma_uk_cq_poll_cmpl()
1161 info->qp_handle = (irdma_qp_handle)(unsigned long)qp; in irdma_uk_cq_poll_cmpl()
1167 array_idx = wqe_idx / qp->rq_wqe_size_multiplier; in irdma_uk_cq_poll_cmpl()
1171 if (!IRDMA_RING_MORE_WORK(qp->rq_ring)) { in irdma_uk_cq_poll_cmpl()
1176 info->wr_id = qp->rq_wrid_array[qp->rq_ring.tail]; in irdma_uk_cq_poll_cmpl()
1177 array_idx = qp->rq_ring.tail; in irdma_uk_cq_poll_cmpl()
1179 info->wr_id = qp->rq_wrid_array[array_idx]; in irdma_uk_cq_poll_cmpl()
1190 IRDMA_RING_SET_TAIL(qp->rq_ring, array_idx + 1); in irdma_uk_cq_poll_cmpl()
1192 qp->rq_flush_seen = true; in irdma_uk_cq_poll_cmpl()
1193 if (!IRDMA_RING_MORE_WORK(qp->rq_ring)) in irdma_uk_cq_poll_cmpl()
1194 qp->rq_flush_complete = true; in irdma_uk_cq_poll_cmpl()
1198 pring = &qp->rq_ring; in irdma_uk_cq_poll_cmpl()
1200 if (qp->first_sq_wq) { in irdma_uk_cq_poll_cmpl()
1201 if (wqe_idx + 1 >= qp->conn_wqes) in irdma_uk_cq_poll_cmpl()
1202 qp->first_sq_wq = false; in irdma_uk_cq_poll_cmpl()
1204 if (wqe_idx < qp->conn_wqes && qp->sq_ring.head == qp->sq_ring.tail) { in irdma_uk_cq_poll_cmpl()
1216 qp->push_mode = false; in irdma_uk_cq_poll_cmpl()
1217 qp->push_dropped = true; in irdma_uk_cq_poll_cmpl()
1220 info->wr_id = qp->sq_wrtrk_array[wqe_idx].wrid; in irdma_uk_cq_poll_cmpl()
1222 info->bytes_xfered = qp->sq_wrtrk_array[wqe_idx].wr_len; in irdma_uk_cq_poll_cmpl()
1224 IRDMA_RING_SET_TAIL(qp->sq_ring, in irdma_uk_cq_poll_cmpl()
1225 wqe_idx + qp->sq_wrtrk_array[wqe_idx].quanta); in irdma_uk_cq_poll_cmpl()
1227 if (!IRDMA_RING_MORE_WORK(qp->sq_ring)) { in irdma_uk_cq_poll_cmpl()
1237 tail = qp->sq_ring.tail; in irdma_uk_cq_poll_cmpl()
1238 sw_wqe = qp->sq_base[tail].elem; in irdma_uk_cq_poll_cmpl()
1243 IRDMA_RING_SET_TAIL(qp->sq_ring, in irdma_uk_cq_poll_cmpl()
1244 tail + qp->sq_wrtrk_array[tail].quanta); in irdma_uk_cq_poll_cmpl()
1246 info->wr_id = qp->sq_wrtrk_array[tail].wrid; in irdma_uk_cq_poll_cmpl()
1247 info->bytes_xfered = qp->sq_wrtrk_array[tail].wr_len; in irdma_uk_cq_poll_cmpl()
1254 qp->sq_flush_seen = true; in irdma_uk_cq_poll_cmpl()
1255 if (!IRDMA_RING_MORE_WORK(qp->sq_ring)) in irdma_uk_cq_poll_cmpl()
1256 qp->sq_flush_complete = true; in irdma_uk_cq_poll_cmpl()
1258 pring = &qp->sq_ring; in irdma_uk_cq_poll_cmpl()
1400 static void irdma_setup_connection_wqes(struct irdma_qp_uk *qp, in irdma_setup_connection_wqes() argument
1406 (qp->uk_attrs->feature_flags & IRDMA_FEATURE_RTS_AE)) in irdma_setup_connection_wqes()
1409 qp->conn_wqes = move_cnt; in irdma_setup_connection_wqes()
1410 IRDMA_RING_MOVE_HEAD_BY_COUNT_NOCHECK(qp->sq_ring, move_cnt); in irdma_setup_connection_wqes()
1411 IRDMA_RING_MOVE_TAIL_BY_COUNT(qp->sq_ring, move_cnt); in irdma_setup_connection_wqes()
1412 IRDMA_RING_MOVE_HEAD_BY_COUNT_NOCHECK(qp->initial_ring, move_cnt); in irdma_setup_connection_wqes()
1425 int irdma_uk_qp_init(struct irdma_qp_uk *qp, struct irdma_qp_uk_init_info *info) in irdma_uk_qp_init() argument
1431 qp->uk_attrs = info->uk_attrs; in irdma_uk_qp_init()
1432 if (info->max_sq_frag_cnt > qp->uk_attrs->max_hw_wq_frags || in irdma_uk_qp_init()
1433 info->max_rq_frag_cnt > qp->uk_attrs->max_hw_wq_frags) in irdma_uk_qp_init()
1436 irdma_get_wqe_shift(qp->uk_attrs, info->max_rq_frag_cnt, 0, &rqshift); in irdma_uk_qp_init()
1437 if (qp->uk_attrs->hw_rev == IRDMA_GEN_1) { in irdma_uk_qp_init()
1438 irdma_get_wqe_shift(qp->uk_attrs, info->max_sq_frag_cnt, in irdma_uk_qp_init()
1443 irdma_get_wqe_shift(qp->uk_attrs, info->max_sq_frag_cnt + 1, in irdma_uk_qp_init()
1446 qp->qp_caps = info->qp_caps; in irdma_uk_qp_init()
1447 qp->sq_base = info->sq; in irdma_uk_qp_init()
1448 qp->rq_base = info->rq; in irdma_uk_qp_init()
1449 qp->qp_type = info->type ? info->type : IRDMA_QP_TYPE_IWARP; in irdma_uk_qp_init()
1450 qp->shadow_area = info->shadow_area; in irdma_uk_qp_init()
1451 qp->sq_wrtrk_array = info->sq_wrtrk_array; in irdma_uk_qp_init()
1453 qp->rq_wrid_array = info->rq_wrid_array; in irdma_uk_qp_init()
1454 qp->wqe_alloc_db = info->wqe_alloc_db; in irdma_uk_qp_init()
1455 qp->qp_id = info->qp_id; in irdma_uk_qp_init()
1456 qp->sq_size = info->sq_size; in irdma_uk_qp_init()
1457 qp->push_mode = false; in irdma_uk_qp_init()
1458 qp->max_sq_frag_cnt = info->max_sq_frag_cnt; in irdma_uk_qp_init()
1459 sq_ring_size = qp->sq_size << sqshift; in irdma_uk_qp_init()
1460 IRDMA_RING_INIT(qp->sq_ring, sq_ring_size); in irdma_uk_qp_init()
1461 IRDMA_RING_INIT(qp->initial_ring, sq_ring_size); in irdma_uk_qp_init()
1463 irdma_setup_connection_wqes(qp, info); in irdma_uk_qp_init()
1464 qp->swqe_polarity = 1; in irdma_uk_qp_init()
1465 qp->first_sq_wq = true; in irdma_uk_qp_init()
1467 qp->swqe_polarity = 0; in irdma_uk_qp_init()
1469 qp->swqe_polarity_deferred = 1; in irdma_uk_qp_init()
1470 qp->rwqe_polarity = 0; in irdma_uk_qp_init()
1471 qp->rq_size = info->rq_size; in irdma_uk_qp_init()
1472 qp->max_rq_frag_cnt = info->max_rq_frag_cnt; in irdma_uk_qp_init()
1473 qp->max_inline_data = info->max_inline_data; in irdma_uk_qp_init()
1474 qp->rq_wqe_size = rqshift; in irdma_uk_qp_init()
1475 IRDMA_RING_INIT(qp->rq_ring, qp->rq_size); in irdma_uk_qp_init()
1476 qp->rq_wqe_size_multiplier = 1 << rqshift; in irdma_uk_qp_init()
1477 if (qp->uk_attrs->hw_rev == IRDMA_GEN_1) in irdma_uk_qp_init()
1478 qp->wqe_ops = iw_wqe_uk_ops_gen_1; in irdma_uk_qp_init()
1480 qp->wqe_ops = iw_wqe_uk_ops; in irdma_uk_qp_init()
1545 int irdma_nop(struct irdma_qp_uk *qp, u64 wr_id, bool signaled, bool post_sq) in irdma_nop() argument
1554 wqe = irdma_qp_get_next_send_wqe(qp, &wqe_idx, IRDMA_QP_WQE_MIN_QUANTA, in irdma_nop()
1559 irdma_clr_wqes(qp, wqe_idx); in irdma_nop()
1567 FIELD_PREP(IRDMAQPSQ_VALID, qp->swqe_polarity); in irdma_nop()
1573 irdma_uk_qp_post_wr(qp); in irdma_nop()