Lines Matching refs:sqp

2883 					  struct rvt_qp *sqp)  in loopback_qp_drop()  argument
2890 return sqp->ibqp.qp_type == IB_QPT_RC ? in loopback_qp_drop()
2904 void rvt_ruc_loopback(struct rvt_qp *sqp) in rvt_ruc_loopback() argument
2907 struct rvt_dev_info *rdi = ib_to_rvt(sqp->ibqp.device); in rvt_ruc_loopback()
2922 rvp = rdi->ports[sqp->port_num - 1]; in rvt_ruc_loopback()
2929 qp = rvt_lookup_qpn(ib_to_rvt(sqp->ibqp.device), rvp, in rvt_ruc_loopback()
2930 sqp->remote_qpn); in rvt_ruc_loopback()
2932 spin_lock_irqsave(&sqp->s_lock, flags); in rvt_ruc_loopback()
2935 if ((sqp->s_flags & (RVT_S_BUSY | RVT_S_ANY_WAIT)) || in rvt_ruc_loopback()
2936 !(ib_rvt_state_ops[sqp->state] & RVT_PROCESS_OR_FLUSH_SEND)) in rvt_ruc_loopback()
2939 sqp->s_flags |= RVT_S_BUSY; in rvt_ruc_loopback()
2942 if (sqp->s_last == READ_ONCE(sqp->s_head)) in rvt_ruc_loopback()
2944 wqe = rvt_get_swqe_ptr(sqp, sqp->s_last); in rvt_ruc_loopback()
2947 if (!(ib_rvt_state_ops[sqp->state] & RVT_PROCESS_NEXT_SEND_OK)) { in rvt_ruc_loopback()
2948 if (!(ib_rvt_state_ops[sqp->state] & RVT_FLUSH_SEND)) in rvt_ruc_loopback()
2960 if (sqp->s_last == sqp->s_cur) { in rvt_ruc_loopback()
2961 if (++sqp->s_cur >= sqp->s_size) in rvt_ruc_loopback()
2962 sqp->s_cur = 0; in rvt_ruc_loopback()
2964 spin_unlock_irqrestore(&sqp->s_lock, flags); in rvt_ruc_loopback()
2967 send_status = loopback_qp_drop(rvp, sqp); in rvt_ruc_loopback()
2972 qp->ibqp.qp_type != sqp->ibqp.qp_type) { in rvt_ruc_loopback()
2973 send_status = loopback_qp_drop(rvp, sqp); in rvt_ruc_loopback()
2981 sqp->s_sge.sge = wqe->sg_list[0]; in rvt_ruc_loopback()
2982 sqp->s_sge.sg_list = wqe->sg_list + 1; in rvt_ruc_loopback()
2983 sqp->s_sge.num_sge = wqe->wr.num_sge; in rvt_ruc_loopback()
2984 sqp->s_len = wqe->length; in rvt_ruc_loopback()
2991 if (rvt_invalidate_rkey(sqp, in rvt_ruc_loopback()
3058 if (unlikely(!rvt_rkey_ok(qp, &sqp->s_sge.sge, wqe->length, in rvt_ruc_loopback()
3064 sqp->s_sge.sg_list = NULL; in rvt_ruc_loopback()
3065 sqp->s_sge.num_sge = 1; in rvt_ruc_loopback()
3086 *(u64 *)sqp->s_sge.sge.vaddr = in rvt_ruc_loopback()
3100 sge = &sqp->s_sge.sge; in rvt_ruc_loopback()
3101 while (sqp->s_len) { in rvt_ruc_loopback()
3102 u32 len = rvt_get_sge_length(sge, sqp->s_len); in rvt_ruc_loopback()
3107 rvt_update_sge(&sqp->s_sge, len, !release); in rvt_ruc_loopback()
3108 sqp->s_len -= len; in rvt_ruc_loopback()
3133 spin_lock_irqsave(&sqp->s_lock, flags); in rvt_ruc_loopback()
3136 sqp->s_rnr_retry = sqp->s_rnr_retry_cnt; in rvt_ruc_loopback()
3137 spin_lock(&sqp->r_lock); in rvt_ruc_loopback()
3138 rvt_send_complete(sqp, wqe, send_status); in rvt_ruc_loopback()
3139 spin_unlock(&sqp->r_lock); in rvt_ruc_loopback()
3141 atomic_dec(&sqp->local_ops_pending); in rvt_ruc_loopback()
3155 if (sqp->s_rnr_retry == 0) { in rvt_ruc_loopback()
3159 if (sqp->s_rnr_retry_cnt < 7) in rvt_ruc_loopback()
3160 sqp->s_rnr_retry--; in rvt_ruc_loopback()
3162 spin_lock_irqsave(&sqp->s_lock, flags); in rvt_ruc_loopback()
3163 if (!(ib_rvt_state_ops[sqp->state] & RVT_PROCESS_RECV_OK)) in rvt_ruc_loopback()
3165 rvt_add_rnr_timer(sqp, qp->r_min_rnr_timer << in rvt_ruc_loopback()
3176 sqp->ibqp.qp_type == IB_QPT_RC ? in rvt_ruc_loopback()
3192 spin_lock_irqsave(&sqp->s_lock, flags); in rvt_ruc_loopback()
3193 spin_lock(&sqp->r_lock); in rvt_ruc_loopback()
3194 rvt_send_complete(sqp, wqe, send_status); in rvt_ruc_loopback()
3195 spin_unlock(&sqp->r_lock); in rvt_ruc_loopback()
3196 if (sqp->ibqp.qp_type == IB_QPT_RC) { in rvt_ruc_loopback()
3199 spin_lock(&sqp->r_lock); in rvt_ruc_loopback()
3200 lastwqe = rvt_error_qp(sqp, IB_WC_WR_FLUSH_ERR); in rvt_ruc_loopback()
3201 spin_unlock(&sqp->r_lock); in rvt_ruc_loopback()
3203 sqp->s_flags &= ~RVT_S_BUSY; in rvt_ruc_loopback()
3204 spin_unlock_irqrestore(&sqp->s_lock, flags); in rvt_ruc_loopback()
3208 ev.device = sqp->ibqp.device; in rvt_ruc_loopback()
3209 ev.element.qp = &sqp->ibqp; in rvt_ruc_loopback()
3211 sqp->ibqp.event_handler(&ev, sqp->ibqp.qp_context); in rvt_ruc_loopback()
3216 sqp->s_flags &= ~RVT_S_BUSY; in rvt_ruc_loopback()
3218 spin_unlock_irqrestore(&sqp->s_lock, flags); in rvt_ruc_loopback()