Lines Matching refs:sqp
2881 struct rvt_qp *sqp)
2888 return sqp->ibqp.qp_type == IB_QPT_RC ?
2894 * @sqp: the sending QP
2902 void rvt_ruc_loopback(struct rvt_qp *sqp)
2905 struct rvt_dev_info *rdi = ib_to_rvt(sqp->ibqp.device);
2920 rvp = rdi->ports[sqp->port_num - 1];
2927 qp = rvt_lookup_qpn(ib_to_rvt(sqp->ibqp.device), rvp,
2928 sqp->remote_qpn);
2930 spin_lock_irqsave(&sqp->s_lock, flags);
2933 if ((sqp->s_flags & (RVT_S_BUSY | RVT_S_ANY_WAIT)) ||
2934 !(ib_rvt_state_ops[sqp->state] & RVT_PROCESS_OR_FLUSH_SEND))
2937 sqp->s_flags |= RVT_S_BUSY;
2940 if (sqp->s_last == READ_ONCE(sqp->s_head))
2942 wqe = rvt_get_swqe_ptr(sqp, sqp->s_last);
2945 if (!(ib_rvt_state_ops[sqp->state] & RVT_PROCESS_NEXT_SEND_OK)) {
2946 if (!(ib_rvt_state_ops[sqp->state] & RVT_FLUSH_SEND))
2958 if (sqp->s_last == sqp->s_cur) {
2959 if (++sqp->s_cur >= sqp->s_size)
2960 sqp->s_cur = 0;
2962 spin_unlock_irqrestore(&sqp->s_lock, flags);
2965 send_status = loopback_qp_drop(rvp, sqp);
2970 qp->ibqp.qp_type != sqp->ibqp.qp_type) {
2971 send_status = loopback_qp_drop(rvp, sqp);
2979 sqp->s_sge.sge = wqe->sg_list[0];
2980 sqp->s_sge.sg_list = wqe->sg_list + 1;
2981 sqp->s_sge.num_sge = wqe->wr.num_sge;
2982 sqp->s_len = wqe->length;
2989 if (rvt_invalidate_rkey(sqp,
3056 if (unlikely(!rvt_rkey_ok(qp, &sqp->s_sge.sge, wqe->length,
3062 sqp->s_sge.sg_list = NULL;
3063 sqp->s_sge.num_sge = 1;
3084 *(u64 *)sqp->s_sge.sge.vaddr =
3098 sge = &sqp->s_sge.sge;
3099 while (sqp->s_len) {
3100 u32 len = rvt_get_sge_length(sge, sqp->s_len);
3105 rvt_update_sge(&sqp->s_sge, len, !release);
3106 sqp->s_len -= len;
3131 spin_lock_irqsave(&sqp->s_lock, flags);
3134 sqp->s_rnr_retry = sqp->s_rnr_retry_cnt;
3135 spin_lock(&sqp->r_lock);
3136 rvt_send_complete(sqp, wqe, send_status);
3137 spin_unlock(&sqp->r_lock);
3139 atomic_dec(&sqp->local_ops_pending);
3153 if (sqp->s_rnr_retry == 0) {
3157 if (sqp->s_rnr_retry_cnt < 7)
3158 sqp->s_rnr_retry--;
3160 spin_lock_irqsave(&sqp->s_lock, flags);
3161 if (!(ib_rvt_state_ops[sqp->state] & RVT_PROCESS_RECV_OK))
3163 rvt_add_rnr_timer(sqp, qp->r_min_rnr_timer <<
3174 sqp->ibqp.qp_type == IB_QPT_RC ?
3190 spin_lock_irqsave(&sqp->s_lock, flags);
3191 spin_lock(&sqp->r_lock);
3192 rvt_send_complete(sqp, wqe, send_status);
3193 spin_unlock(&sqp->r_lock);
3194 if (sqp->ibqp.qp_type == IB_QPT_RC) {
3197 spin_lock(&sqp->r_lock);
3198 lastwqe = rvt_error_qp(sqp, IB_WC_WR_FLUSH_ERR);
3199 spin_unlock(&sqp->r_lock);
3201 sqp->s_flags &= ~RVT_S_BUSY;
3202 spin_unlock_irqrestore(&sqp->s_lock, flags);
3206 ev.device = sqp->ibqp.device;
3207 ev.element.qp = &sqp->ibqp;
3209 sqp->ibqp.event_handler(&ev, sqp->ibqp.qp_context);
3214 sqp->s_flags &= ~RVT_S_BUSY;
3216 spin_unlock_irqrestore(&sqp->s_lock, flags);