• Home
  • Raw
  • Download

Lines Matching refs:sqp

356 static void qib_ruc_loopback(struct qib_qp *sqp)  in qib_ruc_loopback()  argument
358 struct qib_ibport *ibp = to_iport(sqp->ibqp.device, sqp->port_num); in qib_ruc_loopback()
374 qp = qib_lookup_qpn(ibp, sqp->remote_qpn); in qib_ruc_loopback()
376 spin_lock_irqsave(&sqp->s_lock, flags); in qib_ruc_loopback()
379 if ((sqp->s_flags & (QIB_S_BUSY | QIB_S_ANY_WAIT)) || in qib_ruc_loopback()
380 !(ib_qib_state_ops[sqp->state] & QIB_PROCESS_OR_FLUSH_SEND)) in qib_ruc_loopback()
383 sqp->s_flags |= QIB_S_BUSY; in qib_ruc_loopback()
386 if (sqp->s_last == sqp->s_head) in qib_ruc_loopback()
388 wqe = get_swqe_ptr(sqp, sqp->s_last); in qib_ruc_loopback()
391 if (!(ib_qib_state_ops[sqp->state] & QIB_PROCESS_NEXT_SEND_OK)) { in qib_ruc_loopback()
392 if (!(ib_qib_state_ops[sqp->state] & QIB_FLUSH_SEND)) in qib_ruc_loopback()
404 if (sqp->s_last == sqp->s_cur) { in qib_ruc_loopback()
405 if (++sqp->s_cur >= sqp->s_size) in qib_ruc_loopback()
406 sqp->s_cur = 0; in qib_ruc_loopback()
408 spin_unlock_irqrestore(&sqp->s_lock, flags); in qib_ruc_loopback()
411 qp->ibqp.qp_type != sqp->ibqp.qp_type) { in qib_ruc_loopback()
417 if (sqp->ibqp.qp_type == IB_QPT_RC) in qib_ruc_loopback()
428 sqp->s_sge.sge = wqe->sg_list[0]; in qib_ruc_loopback()
429 sqp->s_sge.sg_list = wqe->sg_list + 1; in qib_ruc_loopback()
430 sqp->s_sge.num_sge = wqe->wr.num_sge; in qib_ruc_loopback()
431 sqp->s_len = wqe->length; in qib_ruc_loopback()
474 if (unlikely(!qib_rkey_ok(qp, &sqp->s_sge.sge, wqe->length, in qib_ruc_loopback()
480 sqp->s_sge.sg_list = NULL; in qib_ruc_loopback()
481 sqp->s_sge.num_sge = 1; in qib_ruc_loopback()
500 *(u64 *) sqp->s_sge.sge.vaddr = in qib_ruc_loopback()
514 sge = &sqp->s_sge.sge; in qib_ruc_loopback()
515 while (sqp->s_len) { in qib_ruc_loopback()
516 u32 len = sqp->s_len; in qib_ruc_loopback()
530 if (--sqp->s_sge.num_sge) in qib_ruc_loopback()
531 *sge = *sqp->s_sge.sg_list++; in qib_ruc_loopback()
543 sqp->s_len -= len; in qib_ruc_loopback()
568 spin_lock_irqsave(&sqp->s_lock, flags); in qib_ruc_loopback()
571 sqp->s_rnr_retry = sqp->s_rnr_retry_cnt; in qib_ruc_loopback()
572 qib_send_complete(sqp, wqe, send_status); in qib_ruc_loopback()
584 if (sqp->s_rnr_retry == 0) { in qib_ruc_loopback()
588 if (sqp->s_rnr_retry_cnt < 7) in qib_ruc_loopback()
589 sqp->s_rnr_retry--; in qib_ruc_loopback()
590 spin_lock_irqsave(&sqp->s_lock, flags); in qib_ruc_loopback()
591 if (!(ib_qib_state_ops[sqp->state] & QIB_PROCESS_RECV_OK)) in qib_ruc_loopback()
593 sqp->s_flags |= QIB_S_WAIT_RNR; in qib_ruc_loopback()
594 sqp->s_timer.function = qib_rc_rnr_retry; in qib_ruc_loopback()
595 sqp->s_timer.expires = jiffies + in qib_ruc_loopback()
597 add_timer(&sqp->s_timer); in qib_ruc_loopback()
618 spin_lock_irqsave(&sqp->s_lock, flags); in qib_ruc_loopback()
619 qib_send_complete(sqp, wqe, send_status); in qib_ruc_loopback()
620 if (sqp->ibqp.qp_type == IB_QPT_RC) { in qib_ruc_loopback()
621 int lastwqe = qib_error_qp(sqp, IB_WC_WR_FLUSH_ERR); in qib_ruc_loopback()
623 sqp->s_flags &= ~QIB_S_BUSY; in qib_ruc_loopback()
624 spin_unlock_irqrestore(&sqp->s_lock, flags); in qib_ruc_loopback()
628 ev.device = sqp->ibqp.device; in qib_ruc_loopback()
629 ev.element.qp = &sqp->ibqp; in qib_ruc_loopback()
631 sqp->ibqp.event_handler(&ev, sqp->ibqp.qp_context); in qib_ruc_loopback()
636 sqp->s_flags &= ~QIB_S_BUSY; in qib_ruc_loopback()
638 spin_unlock_irqrestore(&sqp->s_lock, flags); in qib_ruc_loopback()