Lines Matching refs:sqp

2932 					  struct rvt_qp *sqp)
2939 return sqp->ibqp.qp_type == IB_QPT_RC ?
2945 * @sqp: the sending QP
2953 void rvt_ruc_loopback(struct rvt_qp *sqp)
2956 struct rvt_dev_info *rdi = ib_to_rvt(sqp->ibqp.device);
2971 rvp = rdi->ports[sqp->port_num - 1];
2978 qp = rvt_lookup_qpn(ib_to_rvt(sqp->ibqp.device), rvp,
2979 sqp->remote_qpn);
2981 spin_lock_irqsave(&sqp->s_lock, flags);
2984 if ((sqp->s_flags & (RVT_S_BUSY | RVT_S_ANY_WAIT)) ||
2985 !(ib_rvt_state_ops[sqp->state] & RVT_PROCESS_OR_FLUSH_SEND))
2988 sqp->s_flags |= RVT_S_BUSY;
2991 if (sqp->s_last == READ_ONCE(sqp->s_head))
2993 wqe = rvt_get_swqe_ptr(sqp, sqp->s_last);
2996 if (!(ib_rvt_state_ops[sqp->state] & RVT_PROCESS_NEXT_SEND_OK)) {
2997 if (!(ib_rvt_state_ops[sqp->state] & RVT_FLUSH_SEND))
3009 if (sqp->s_last == sqp->s_cur) {
3010 if (++sqp->s_cur >= sqp->s_size)
3011 sqp->s_cur = 0;
3013 spin_unlock_irqrestore(&sqp->s_lock, flags);
3016 send_status = loopback_qp_drop(rvp, sqp);
3021 qp->ibqp.qp_type != sqp->ibqp.qp_type) {
3022 send_status = loopback_qp_drop(rvp, sqp);
3030 sqp->s_sge.sge = wqe->sg_list[0];
3031 sqp->s_sge.sg_list = wqe->sg_list + 1;
3032 sqp->s_sge.num_sge = wqe->wr.num_sge;
3033 sqp->s_len = wqe->length;
3040 if (rvt_invalidate_rkey(sqp,
3107 if (unlikely(!rvt_rkey_ok(qp, &sqp->s_sge.sge, wqe->length,
3113 sqp->s_sge.sg_list = NULL;
3114 sqp->s_sge.num_sge = 1;
3135 *(u64 *)sqp->s_sge.sge.vaddr =
3149 sge = &sqp->s_sge.sge;
3150 while (sqp->s_len) {
3151 u32 len = rvt_get_sge_length(sge, sqp->s_len);
3156 rvt_update_sge(&sqp->s_sge, len, !release);
3157 sqp->s_len -= len;
3182 spin_lock_irqsave(&sqp->s_lock, flags);
3185 sqp->s_rnr_retry = sqp->s_rnr_retry_cnt;
3186 spin_lock(&sqp->r_lock);
3187 rvt_send_complete(sqp, wqe, send_status);
3188 spin_unlock(&sqp->r_lock);
3190 atomic_dec(&sqp->local_ops_pending);
3204 if (sqp->s_rnr_retry == 0) {
3208 if (sqp->s_rnr_retry_cnt < 7)
3209 sqp->s_rnr_retry--;
3211 spin_lock_irqsave(&sqp->s_lock, flags);
3212 if (!(ib_rvt_state_ops[sqp->state] & RVT_PROCESS_RECV_OK))
3214 rvt_add_rnr_timer(sqp, qp->r_min_rnr_timer <<
3225 sqp->ibqp.qp_type == IB_QPT_RC ?
3241 spin_lock_irqsave(&sqp->s_lock, flags);
3242 spin_lock(&sqp->r_lock);
3243 rvt_send_complete(sqp, wqe, send_status);
3244 spin_unlock(&sqp->r_lock);
3245 if (sqp->ibqp.qp_type == IB_QPT_RC) {
3248 spin_lock(&sqp->r_lock);
3249 lastwqe = rvt_error_qp(sqp, IB_WC_WR_FLUSH_ERR);
3250 spin_unlock(&sqp->r_lock);
3252 sqp->s_flags &= ~RVT_S_BUSY;
3253 spin_unlock_irqrestore(&sqp->s_lock, flags);
3257 ev.device = sqp->ibqp.device;
3258 ev.element.qp = &sqp->ibqp;
3260 sqp->ibqp.event_handler(&ev, sqp->ibqp.qp_context);
3265 sqp->s_flags &= ~RVT_S_BUSY;
3267 spin_unlock_irqrestore(&sqp->s_lock, flags);