Lines Matching refs:qp
510 struct rvt_qp *qp; member
531 static inline struct rvt_swqe *rvt_get_swqe_ptr(struct rvt_qp *qp, in rvt_get_swqe_ptr() argument
534 return (struct rvt_swqe *)((char *)qp->s_wq + in rvt_get_swqe_ptr()
536 qp->s_max_sge * in rvt_get_swqe_ptr()
556 static inline bool rvt_is_user_qp(struct rvt_qp *qp) in rvt_is_user_qp() argument
558 return !!qp->pid; in rvt_is_user_qp()
565 static inline void rvt_get_qp(struct rvt_qp *qp) in rvt_get_qp() argument
567 atomic_inc(&qp->refcount); in rvt_get_qp()
574 static inline void rvt_put_qp(struct rvt_qp *qp) in rvt_put_qp() argument
576 if (qp && atomic_dec_and_test(&qp->refcount)) in rvt_put_qp()
577 wake_up(&qp->wait); in rvt_put_qp()
606 struct rvt_qp *qp, in rvt_qp_wqe_reserve() argument
609 atomic_inc(&qp->s_reserved_used); in rvt_qp_wqe_reserve()
627 static inline void rvt_qp_wqe_unreserve(struct rvt_qp *qp, int flags) in rvt_qp_wqe_unreserve() argument
630 atomic_dec(&qp->s_reserved_used); in rvt_qp_wqe_unreserve()
647 __be32 rvt_compute_aeth(struct rvt_qp *qp);
649 void rvt_get_credit(struct rvt_qp *qp, u32 aeth);
660 static inline u32 rvt_div_round_up_mtu(struct rvt_qp *qp, u32 len) in rvt_div_round_up_mtu() argument
662 return (len + qp->pmtu - 1) >> qp->log_pmtu; in rvt_div_round_up_mtu()
671 static inline u32 rvt_div_mtu(struct rvt_qp *qp, u32 len) in rvt_div_mtu() argument
673 return len >> qp->log_pmtu; in rvt_div_mtu()
702 struct rvt_qp *qp = NULL; in rvt_lookup_qpn() local
705 qp = rcu_dereference(rvp->qp[qpn]); in rvt_lookup_qpn()
709 for (qp = rcu_dereference(rdi->qp_dev->qp_table[n]); qp; in rvt_lookup_qpn()
710 qp = rcu_dereference(qp->next)) in rvt_lookup_qpn()
711 if (qp->ibqp.qp_num == qpn) in rvt_lookup_qpn()
714 return qp; in rvt_lookup_qpn()
723 static inline void rvt_mod_retry_timer_ext(struct rvt_qp *qp, u8 shift) in rvt_mod_retry_timer_ext() argument
725 struct ib_qp *ibqp = &qp->ibqp; in rvt_mod_retry_timer_ext()
728 lockdep_assert_held(&qp->s_lock); in rvt_mod_retry_timer_ext()
729 qp->s_flags |= RVT_S_TIMER; in rvt_mod_retry_timer_ext()
731 mod_timer(&qp->s_timer, jiffies + rdi->busy_jiffies + in rvt_mod_retry_timer_ext()
732 (qp->timeout_jiffies << shift)); in rvt_mod_retry_timer_ext()
735 static inline void rvt_mod_retry_timer(struct rvt_qp *qp) in rvt_mod_retry_timer() argument
737 return rvt_mod_retry_timer_ext(qp, 0); in rvt_mod_retry_timer()
747 static inline void rvt_put_qp_swqe(struct rvt_qp *qp, struct rvt_swqe *wqe) in rvt_put_qp_swqe() argument
750 if (qp->allowed_ops == IB_OPCODE_UD) in rvt_put_qp_swqe()
762 rvt_qp_swqe_incr(struct rvt_qp *qp, u32 val) in rvt_qp_swqe_incr() argument
764 if (++val >= qp->s_size) in rvt_qp_swqe_incr()
769 int rvt_error_qp(struct rvt_qp *qp, enum ib_wc_status err);
782 static inline void rvt_recv_cq(struct rvt_qp *qp, struct ib_wc *wc, in rvt_recv_cq() argument
785 struct rvt_cq *cq = ibcq_to_rvtcq(qp->ibqp.recv_cq); in rvt_recv_cq()
788 rvt_error_qp(qp, IB_WC_LOC_QP_OP_ERR); in rvt_recv_cq()
802 static inline void rvt_send_cq(struct rvt_qp *qp, struct ib_wc *wc, in rvt_send_cq() argument
805 struct rvt_cq *cq = ibcq_to_rvtcq(qp->ibqp.send_cq); in rvt_send_cq()
808 rvt_error_qp(qp, IB_WC_LOC_QP_OP_ERR); in rvt_send_cq()
828 rvt_qp_complete_swqe(struct rvt_qp *qp, in rvt_qp_complete_swqe() argument
838 rvt_qp_wqe_unreserve(qp, flags); in rvt_qp_complete_swqe()
839 rvt_put_qp_swqe(qp, wqe); in rvt_qp_complete_swqe()
843 (!(qp->s_flags & RVT_S_SIGNAL_REQ_WR) || in rvt_qp_complete_swqe()
851 last = rvt_qp_swqe_incr(qp, qp->s_last); in rvt_qp_complete_swqe()
853 smp_store_release(&qp->s_last, last); in rvt_qp_complete_swqe()
859 .qp = &qp->ibqp, in rvt_qp_complete_swqe()
862 rvt_send_cq(qp, &w, status != IB_WC_SUCCESS); in rvt_qp_complete_swqe()
870 int rvt_get_rwqe(struct rvt_qp *qp, bool wr_id_only);
871 void rvt_comm_est(struct rvt_qp *qp);
872 void rvt_rc_error(struct rvt_qp *qp, enum ib_wc_status err);
875 void rvt_add_rnr_timer(struct rvt_qp *qp, u32 aeth);
876 void rvt_del_timers_sync(struct rvt_qp *qp);
877 void rvt_stop_rc_timers(struct rvt_qp *qp);
878 void rvt_add_retry_timer_ext(struct rvt_qp *qp, u8 shift);
879 static inline void rvt_add_retry_timer(struct rvt_qp *qp) in rvt_add_retry_timer() argument
881 rvt_add_retry_timer_ext(qp, 0); in rvt_add_retry_timer()
884 void rvt_copy_sge(struct rvt_qp *qp, struct rvt_sge_state *ss,
887 void rvt_send_complete(struct rvt_qp *qp, struct rvt_swqe *wqe,
889 void rvt_ruc_loopback(struct rvt_qp *qp);
900 struct rvt_qp *qp; member
904 void (*cb)(struct rvt_qp *qp, u64 v);
966 static inline struct rvt_ibport *rvt_to_iport(struct rvt_qp *qp) in rvt_to_iport() argument
968 struct rvt_dev_info *rdi = ib_to_rvt(qp->ibqp.device); in rvt_to_iport()
970 return rdi->ports[qp->port_num - 1]; in rvt_to_iport()
981 static inline bool rvt_rc_credit_avail(struct rvt_qp *qp, struct rvt_swqe *wqe) in rvt_rc_credit_avail() argument
983 lockdep_assert_held(&qp->s_lock); in rvt_rc_credit_avail()
984 if (!(qp->s_flags & RVT_S_UNLIMITED_CREDIT) && in rvt_rc_credit_avail()
985 rvt_cmp_msn(wqe->ssn, qp->s_lsn + 1) > 0) { in rvt_rc_credit_avail()
986 struct rvt_ibport *rvp = rvt_to_iport(qp); in rvt_rc_credit_avail()
988 qp->s_flags |= RVT_S_WAIT_SSN_CREDIT; in rvt_rc_credit_avail()
997 void (*cb)(struct rvt_qp *qp, u64 v));
1001 void (*cb)(struct rvt_qp *qp, u64 v));
1002 void rvt_qp_mr_clean(struct rvt_qp *qp, u32 lkey);