Lines Matching refs:sqp
260 static void ipath_ruc_loopback(struct ipath_qp *sqp) in ipath_ruc_loopback() argument
262 struct ipath_ibdev *dev = to_idev(sqp->ibqp.device); in ipath_ruc_loopback()
276 qp = ipath_lookup_qpn(&dev->qp_table, sqp->remote_qpn); in ipath_ruc_loopback()
278 spin_lock_irqsave(&sqp->s_lock, flags); in ipath_ruc_loopback()
281 if ((sqp->s_flags & (IPATH_S_BUSY | IPATH_S_ANY_WAIT)) || in ipath_ruc_loopback()
282 !(ib_ipath_state_ops[sqp->state] & IPATH_PROCESS_OR_FLUSH_SEND)) in ipath_ruc_loopback()
285 sqp->s_flags |= IPATH_S_BUSY; in ipath_ruc_loopback()
288 if (sqp->s_last == sqp->s_head) in ipath_ruc_loopback()
290 wqe = get_swqe_ptr(sqp, sqp->s_last); in ipath_ruc_loopback()
293 if (!(ib_ipath_state_ops[sqp->state] & IPATH_PROCESS_NEXT_SEND_OK)) { in ipath_ruc_loopback()
294 if (!(ib_ipath_state_ops[sqp->state] & IPATH_FLUSH_SEND)) in ipath_ruc_loopback()
306 if (sqp->s_last == sqp->s_cur) { in ipath_ruc_loopback()
307 if (++sqp->s_cur >= sqp->s_size) in ipath_ruc_loopback()
308 sqp->s_cur = 0; in ipath_ruc_loopback()
310 spin_unlock_irqrestore(&sqp->s_lock, flags); in ipath_ruc_loopback()
318 if (sqp->ibqp.qp_type == IB_QPT_RC) in ipath_ruc_loopback()
328 sqp->s_sge.sge = wqe->sg_list[0]; in ipath_ruc_loopback()
329 sqp->s_sge.sg_list = wqe->sg_list + 1; in ipath_ruc_loopback()
330 sqp->s_sge.num_sge = wqe->wr.num_sge; in ipath_ruc_loopback()
331 sqp->s_len = wqe->length; in ipath_ruc_loopback()
365 if (unlikely(!ipath_rkey_ok(qp, &sqp->s_sge, wqe->length, in ipath_ruc_loopback()
387 *(u64 *) sqp->s_sge.sge.vaddr = in ipath_ruc_loopback()
399 sge = &sqp->s_sge.sge; in ipath_ruc_loopback()
400 while (sqp->s_len) { in ipath_ruc_loopback()
401 u32 len = sqp->s_len; in ipath_ruc_loopback()
413 if (--sqp->s_sge.num_sge) in ipath_ruc_loopback()
414 *sge = *sqp->s_sge.sg_list++; in ipath_ruc_loopback()
426 sqp->s_len -= len; in ipath_ruc_loopback()
449 spin_lock_irqsave(&sqp->s_lock, flags); in ipath_ruc_loopback()
451 sqp->s_rnr_retry = sqp->s_rnr_retry_cnt; in ipath_ruc_loopback()
452 ipath_send_complete(sqp, wqe, send_status); in ipath_ruc_loopback()
463 if (sqp->s_rnr_retry == 0) { in ipath_ruc_loopback()
467 if (sqp->s_rnr_retry_cnt < 7) in ipath_ruc_loopback()
468 sqp->s_rnr_retry--; in ipath_ruc_loopback()
469 spin_lock_irqsave(&sqp->s_lock, flags); in ipath_ruc_loopback()
470 if (!(ib_ipath_state_ops[sqp->state] & IPATH_PROCESS_RECV_OK)) in ipath_ruc_loopback()
472 sqp->s_flags |= IPATH_S_WAITING; in ipath_ruc_loopback()
474 sqp->s_rnr_timeout = ib_ipath_rnr_table[qp->r_min_rnr_timer]; in ipath_ruc_loopback()
475 ipath_insert_rnr_queue(sqp); in ipath_ruc_loopback()
491 spin_lock_irqsave(&sqp->s_lock, flags); in ipath_ruc_loopback()
492 ipath_send_complete(sqp, wqe, send_status); in ipath_ruc_loopback()
493 if (sqp->ibqp.qp_type == IB_QPT_RC) { in ipath_ruc_loopback()
494 int lastwqe = ipath_error_qp(sqp, IB_WC_WR_FLUSH_ERR); in ipath_ruc_loopback()
496 sqp->s_flags &= ~IPATH_S_BUSY; in ipath_ruc_loopback()
497 spin_unlock_irqrestore(&sqp->s_lock, flags); in ipath_ruc_loopback()
501 ev.device = sqp->ibqp.device; in ipath_ruc_loopback()
502 ev.element.qp = &sqp->ibqp; in ipath_ruc_loopback()
504 sqp->ibqp.event_handler(&ev, sqp->ibqp.qp_context); in ipath_ruc_loopback()
509 sqp->s_flags &= ~IPATH_S_BUSY; in ipath_ruc_loopback()
511 spin_unlock_irqrestore(&sqp->s_lock, flags); in ipath_ruc_loopback()