Lines Matching refs:qp
31 struct rvt_qp *qp = packet->qp; in hfi1_ruc_check_hdr() local
32 u8 sc5 = ibp->sl_to_sc[rdma_ah_get_sl(&qp->remote_ah_attr)]; in hfi1_ruc_check_hdr()
39 if (qp->s_mig_state == IB_MIG_ARMED && migrated) { in hfi1_ruc_check_hdr()
41 if ((rdma_ah_get_ah_flags(&qp->alt_ah_attr) & in hfi1_ruc_check_hdr()
48 if (!(rdma_ah_get_ah_flags(&qp->alt_ah_attr) & in hfi1_ruc_check_hdr()
51 grh = rdma_ah_read_grh(&qp->alt_ah_attr); in hfi1_ruc_check_hdr()
64 hfi1_bad_pkey(ibp, pkey, sl, 0, qp->ibqp.qp_num, in hfi1_ruc_check_hdr()
69 if (slid != rdma_ah_get_dlid(&qp->alt_ah_attr) || in hfi1_ruc_check_hdr()
71 rdma_ah_get_port_num(&qp->alt_ah_attr)) in hfi1_ruc_check_hdr()
73 spin_lock_irqsave(&qp->s_lock, flags); in hfi1_ruc_check_hdr()
74 hfi1_migrate_qp(qp); in hfi1_ruc_check_hdr()
75 spin_unlock_irqrestore(&qp->s_lock, flags); in hfi1_ruc_check_hdr()
78 if ((rdma_ah_get_ah_flags(&qp->remote_ah_attr) & in hfi1_ruc_check_hdr()
85 if (!(rdma_ah_get_ah_flags(&qp->remote_ah_attr) & in hfi1_ruc_check_hdr()
88 grh = rdma_ah_read_grh(&qp->remote_ah_attr); in hfi1_ruc_check_hdr()
101 hfi1_bad_pkey(ibp, pkey, sl, 0, qp->ibqp.qp_num, in hfi1_ruc_check_hdr()
106 if ((slid != rdma_ah_get_dlid(&qp->remote_ah_attr)) || in hfi1_ruc_check_hdr()
107 ppd_from_ibp(ibp)->port != qp->port_num) in hfi1_ruc_check_hdr()
109 if (qp->s_mig_state == IB_MIG_REARM && !migrated) in hfi1_ruc_check_hdr()
110 qp->s_mig_state = IB_MIG_ARMED; in hfi1_ruc_check_hdr()
163 static inline void build_ahg(struct rvt_qp *qp, u32 npsn) in build_ahg() argument
165 struct hfi1_qp_priv *priv = qp->priv; in build_ahg()
167 if (unlikely(qp->s_flags & HFI1_S_AHG_CLEAR)) in build_ahg()
168 clear_ahg(qp); in build_ahg()
169 if (!(qp->s_flags & HFI1_S_AHG_VALID)) { in build_ahg()
171 if (qp->s_ahgidx < 0) in build_ahg()
172 qp->s_ahgidx = sdma_ahg_alloc(priv->s_sde); in build_ahg()
173 if (qp->s_ahgidx >= 0) { in build_ahg()
174 qp->s_ahgpsn = npsn; in build_ahg()
177 priv->s_ahg->ahgidx = qp->s_ahgidx; in build_ahg()
178 qp->s_flags |= HFI1_S_AHG_VALID; in build_ahg()
182 if (qp->s_ahgidx >= 0) { in build_ahg()
184 priv->s_ahg->ahgidx = qp->s_ahgidx; in build_ahg()
193 (qp->s_ahgpsn & 0xffff0000)) { in build_ahg()
207 static inline void hfi1_make_ruc_bth(struct rvt_qp *qp, in hfi1_make_ruc_bth() argument
231 static inline void hfi1_make_ruc_header_16B(struct rvt_qp *qp, in hfi1_make_ruc_header_16B() argument
237 struct hfi1_qp_priv *priv = qp->priv; in hfi1_make_ruc_header_16B()
241 u16 pkey = hfi1_get_pkey(ibp, qp->s_pkey_index); in hfi1_make_ruc_header_16B()
250 if (unlikely(rdma_ah_get_ah_flags(&qp->remote_ah_attr) & IB_AH_GRH) && in hfi1_make_ruc_header_16B()
251 hfi1_check_mcast(rdma_ah_get_dlid(&qp->remote_ah_attr))) { in hfi1_make_ruc_header_16B()
254 rdma_ah_retrieve_grh(&qp->remote_ah_attr); in hfi1_make_ruc_header_16B()
270 if (qp->s_mig_state == IB_MIG_MIGRATED) in hfi1_make_ruc_header_16B()
275 if (qp->s_flags & RVT_S_ECN) { in hfi1_make_ruc_header_16B()
276 qp->s_flags &= ~RVT_S_ECN; in hfi1_make_ruc_header_16B()
282 build_ahg(qp, bth2); in hfi1_make_ruc_header_16B()
284 qp->s_flags &= ~HFI1_S_AHG_VALID; in hfi1_make_ruc_header_16B()
288 hfi1_make_ruc_bth(qp, ohdr, bth0, bth1, bth2); in hfi1_make_ruc_header_16B()
294 (rdma_ah_get_path_bits(&qp->remote_ah_attr) & in hfi1_make_ruc_header_16B()
299 opa_get_lid(rdma_ah_get_dlid(&qp->remote_ah_attr), in hfi1_make_ruc_header_16B()
320 static inline void hfi1_make_ruc_header_9B(struct rvt_qp *qp, in hfi1_make_ruc_header_9B() argument
326 struct hfi1_qp_priv *priv = qp->priv; in hfi1_make_ruc_header_9B()
328 u16 pkey = hfi1_get_pkey(ibp, qp->s_pkey_index); in hfi1_make_ruc_header_9B()
334 if (unlikely(rdma_ah_get_ah_flags(&qp->remote_ah_attr) & IB_AH_GRH)) { in hfi1_make_ruc_header_9B()
340 rdma_ah_read_grh(&qp->remote_ah_attr), in hfi1_make_ruc_header_9B()
346 (rdma_ah_get_sl(&qp->remote_ah_attr) & 0xf) << 4; in hfi1_make_ruc_header_9B()
348 if (qp->s_mig_state == IB_MIG_MIGRATED) in hfi1_make_ruc_header_9B()
353 if (qp->s_flags & RVT_S_ECN) { in hfi1_make_ruc_header_9B()
354 qp->s_flags &= ~RVT_S_ECN; in hfi1_make_ruc_header_9B()
360 build_ahg(qp, bth2); in hfi1_make_ruc_header_9B()
362 qp->s_flags &= ~HFI1_S_AHG_VALID; in hfi1_make_ruc_header_9B()
366 hfi1_make_ruc_bth(qp, ohdr, bth0, bth1, bth2); in hfi1_make_ruc_header_9B()
370 opa_get_lid(rdma_ah_get_dlid(&qp->remote_ah_attr), 9B), in hfi1_make_ruc_header_9B()
372 rdma_ah_get_path_bits(&qp->remote_ah_attr)); in hfi1_make_ruc_header_9B()
375 typedef void (*hfi1_make_ruc_hdr)(struct rvt_qp *qp,
386 void hfi1_make_ruc_header(struct rvt_qp *qp, struct ib_other_headers *ohdr, in hfi1_make_ruc_header() argument
390 struct hfi1_qp_priv *priv = qp->priv; in hfi1_make_ruc_header()
408 hfi1_ruc_header_tbl[priv->hdr_type](qp, ohdr, bth0, bth1, bth2, middle, in hfi1_make_ruc_header()
429 bool hfi1_schedule_send_yield(struct rvt_qp *qp, struct hfi1_pkt_state *ps, in hfi1_schedule_send_yield() argument
437 spin_lock_irqsave(&qp->s_lock, ps->flags); in hfi1_schedule_send_yield()
439 qp->s_flags &= ~RVT_S_BUSY; in hfi1_schedule_send_yield()
440 hfi1_schedule_send(qp); in hfi1_schedule_send_yield()
442 struct hfi1_qp_priv *priv = qp->priv; in hfi1_schedule_send_yield()
446 qp->s_flags &= ~RVT_S_BUSY; in hfi1_schedule_send_yield()
453 hfi1_schedule_tid_send(qp); in hfi1_schedule_send_yield()
456 spin_unlock_irqrestore(&qp->s_lock, ps->flags); in hfi1_schedule_send_yield()
458 trace_hfi1_rc_expired_time_slice(qp, true); in hfi1_schedule_send_yield()
467 trace_hfi1_rc_expired_time_slice(qp, false); in hfi1_schedule_send_yield()
471 void hfi1_do_send_from_rvt(struct rvt_qp *qp) in hfi1_do_send_from_rvt() argument
473 hfi1_do_send(qp, false); in hfi1_do_send_from_rvt()
479 struct rvt_qp *qp = iowait_to_qp(w->iow); in _hfi1_do_send() local
481 hfi1_do_send(qp, true); in _hfi1_do_send()
493 void hfi1_do_send(struct rvt_qp *qp, bool in_thread) in hfi1_do_send() argument
496 struct hfi1_qp_priv *priv = qp->priv; in hfi1_do_send()
497 int (*make_req)(struct rvt_qp *qp, struct hfi1_pkt_state *ps); in hfi1_do_send()
499 ps.dev = to_idev(qp->ibqp.device); in hfi1_do_send()
500 ps.ibp = to_iport(qp->ibqp.device, qp->port_num); in hfi1_do_send()
505 trace_hfi1_rc_do_send(qp, in_thread); in hfi1_do_send()
507 switch (qp->ibqp.qp_type) { in hfi1_do_send()
509 if (!loopback && ((rdma_ah_get_dlid(&qp->remote_ah_attr) & in hfi1_do_send()
512 rvt_ruc_loopback(qp); in hfi1_do_send()
516 ps.timeout_int = qp->timeout_jiffies; in hfi1_do_send()
519 if (!loopback && ((rdma_ah_get_dlid(&qp->remote_ah_attr) & in hfi1_do_send()
522 rvt_ruc_loopback(qp); in hfi1_do_send()
533 spin_lock_irqsave(&qp->s_lock, ps.flags); in hfi1_do_send()
536 if (!hfi1_send_ok(qp)) { in hfi1_do_send()
537 if (qp->s_flags & HFI1_S_ANY_WAIT_IO) in hfi1_do_send()
539 spin_unlock_irqrestore(&qp->s_lock, ps.flags); in hfi1_do_send()
543 qp->s_flags |= RVT_S_BUSY; in hfi1_do_send()
557 qp->s_flags |= RVT_S_BUSY; in hfi1_do_send()
558 spin_unlock_irqrestore(&qp->s_lock, ps.flags); in hfi1_do_send()
563 if (hfi1_verbs_send(qp, &ps)) in hfi1_do_send()
567 if (hfi1_schedule_send_yield(qp, &ps, false)) in hfi1_do_send()
570 spin_lock_irqsave(&qp->s_lock, ps.flags); in hfi1_do_send()
572 } while (make_req(qp, &ps)); in hfi1_do_send()
574 spin_unlock_irqrestore(&qp->s_lock, ps.flags); in hfi1_do_send()