• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/infiniband/hw/qib/

Lines Matching refs:sqp

341  * @sqp: the sending QP
350 static void qib_ruc_loopback(struct qib_qp *sqp)
352 struct qib_ibport *ibp = to_iport(sqp->ibqp.device, sqp->port_num);
368 qp = qib_lookup_qpn(ibp, sqp->remote_qpn);
370 spin_lock_irqsave(&sqp->s_lock, flags);
373 if ((sqp->s_flags & (QIB_S_BUSY | QIB_S_ANY_WAIT)) ||
374 !(ib_qib_state_ops[sqp->state] & QIB_PROCESS_OR_FLUSH_SEND))
377 sqp->s_flags |= QIB_S_BUSY;
380 if (sqp->s_last == sqp->s_head)
382 wqe = get_swqe_ptr(sqp, sqp->s_last);
385 if (!(ib_qib_state_ops[sqp->state] & QIB_PROCESS_NEXT_SEND_OK)) {
386 if (!(ib_qib_state_ops[sqp->state] & QIB_FLUSH_SEND))
398 if (sqp->s_last == sqp->s_cur) {
399 if (++sqp->s_cur >= sqp->s_size)
400 sqp->s_cur = 0;
402 spin_unlock_irqrestore(&sqp->s_lock, flags);
405 qp->ibqp.qp_type != sqp->ibqp.qp_type) {
411 if (sqp->ibqp.qp_type == IB_QPT_RC)
422 sqp->s_sge.sge = wqe->sg_list[0];
423 sqp->s_sge.sg_list = wqe->sg_list + 1;
424 sqp->s_sge.num_sge = wqe->wr.num_sge;
425 sqp->s_len = wqe->length;
468 if (unlikely(!qib_rkey_ok(qp, &sqp->s_sge.sge, wqe->length,
474 sqp->s_sge.sg_list = NULL;
475 sqp->s_sge.num_sge = 1;
494 *(u64 *) sqp->s_sge.sge.vaddr =
508 sge = &sqp->s_sge.sge;
509 while (sqp->s_len) {
510 u32 len = sqp->s_len;
524 if (--sqp->s_sge.num_sge)
525 *sge = *sqp->s_sge.sg_list++;
537 sqp->s_len -= len;
566 spin_lock_irqsave(&sqp->s_lock, flags);
569 sqp->s_rnr_retry = sqp->s_rnr_retry_cnt;
570 qib_send_complete(sqp, wqe, send_status);
582 if (sqp->s_rnr_retry == 0) {
586 if (sqp->s_rnr_retry_cnt < 7)
587 sqp->s_rnr_retry--;
588 spin_lock_irqsave(&sqp->s_lock, flags);
589 if (!(ib_qib_state_ops[sqp->state] & QIB_PROCESS_RECV_OK))
591 sqp->s_flags |= QIB_S_WAIT_RNR;
592 sqp->s_timer.function = qib_rc_rnr_retry;
593 sqp->s_timer.expires = jiffies +
595 add_timer(&sqp->s_timer);
616 spin_lock_irqsave(&sqp->s_lock, flags);
617 qib_send_complete(sqp, wqe, send_status);
618 if (sqp->ibqp.qp_type == IB_QPT_RC) {
619 int lastwqe = qib_error_qp(sqp, IB_WC_WR_FLUSH_ERR);
621 sqp->s_flags &= ~QIB_S_BUSY;
622 spin_unlock_irqrestore(&sqp->s_lock, flags);
626 ev.device = sqp->ibqp.device;
627 ev.element.qp = &sqp->ibqp;
629 sqp->ibqp.event_handler(&ev, sqp->ibqp.qp_context);
634 sqp->s_flags &= ~QIB_S_BUSY;
636 spin_unlock_irqrestore(&sqp->s_lock, flags);