• 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.36/drivers/infiniband/hw/ipath/

Lines Matching refs:sqp

242  * @sqp: the sending QP
251 static void ipath_ruc_loopback(struct ipath_qp *sqp)
253 struct ipath_ibdev *dev = to_idev(sqp->ibqp.device);
267 qp = ipath_lookup_qpn(&dev->qp_table, sqp->remote_qpn);
269 spin_lock_irqsave(&sqp->s_lock, flags);
272 if ((sqp->s_flags & (IPATH_S_BUSY | IPATH_S_ANY_WAIT)) ||
273 !(ib_ipath_state_ops[sqp->state] & IPATH_PROCESS_OR_FLUSH_SEND))
276 sqp->s_flags |= IPATH_S_BUSY;
279 if (sqp->s_last == sqp->s_head)
281 wqe = get_swqe_ptr(sqp, sqp->s_last);
284 if (!(ib_ipath_state_ops[sqp->state] & IPATH_PROCESS_NEXT_SEND_OK)) {
285 if (!(ib_ipath_state_ops[sqp->state] & IPATH_FLUSH_SEND))
297 if (sqp->s_last == sqp->s_cur) {
298 if (++sqp->s_cur >= sqp->s_size)
299 sqp->s_cur = 0;
301 spin_unlock_irqrestore(&sqp->s_lock, flags);
309 if (sqp->ibqp.qp_type == IB_QPT_RC)
319 sqp->s_sge.sge = wqe->sg_list[0];
320 sqp->s_sge.sg_list = wqe->sg_list + 1;
321 sqp->s_sge.num_sge = wqe->wr.num_sge;
322 sqp->s_len = wqe->length;
356 if (unlikely(!ipath_rkey_ok(qp, &sqp->s_sge, wqe->length,
378 *(u64 *) sqp->s_sge.sge.vaddr =
390 sge = &sqp->s_sge.sge;
391 while (sqp->s_len) {
392 u32 len = sqp->s_len;
404 if (--sqp->s_sge.num_sge)
405 *sge = *sqp->s_sge.sg_list++;
417 sqp->s_len -= len;
440 spin_lock_irqsave(&sqp->s_lock, flags);
442 sqp->s_rnr_retry = sqp->s_rnr_retry_cnt;
443 ipath_send_complete(sqp, wqe, send_status);
454 if (sqp->s_rnr_retry == 0) {
458 if (sqp->s_rnr_retry_cnt < 7)
459 sqp->s_rnr_retry--;
460 spin_lock_irqsave(&sqp->s_lock, flags);
461 if (!(ib_ipath_state_ops[sqp->state] & IPATH_PROCESS_RECV_OK))
463 sqp->s_flags |= IPATH_S_WAITING;
465 sqp->s_rnr_timeout = ib_ipath_rnr_table[qp->r_min_rnr_timer];
466 ipath_insert_rnr_queue(sqp);
482 spin_lock_irqsave(&sqp->s_lock, flags);
483 ipath_send_complete(sqp, wqe, send_status);
484 if (sqp->ibqp.qp_type == IB_QPT_RC) {
485 int lastwqe = ipath_error_qp(sqp, IB_WC_WR_FLUSH_ERR);
487 sqp->s_flags &= ~IPATH_S_BUSY;
488 spin_unlock_irqrestore(&sqp->s_lock, flags);
492 ev.device = sqp->ibqp.device;
493 ev.element.qp = &sqp->ibqp;
495 sqp->ibqp.event_handler(&ev, sqp->ibqp.qp_context);
500 sqp->s_flags &= ~IPATH_S_BUSY;
502 spin_unlock_irqrestore(&sqp->s_lock, flags);