Lines Matching full:qp

8 #include "qp.h"
17 bool (*request)(struct rvt_qp *qp, u64 *data);
18 bool (*response)(struct rvt_qp *qp, u64 *data);
19 bool (*reply)(struct rvt_qp *qp, u64 data);
20 void (*error)(struct rvt_qp *qp);
34 static void opfn_schedule_conn_request(struct rvt_qp *qp);
41 static void opfn_conn_request(struct rvt_qp *qp) in opfn_conn_request() argument
43 struct hfi1_qp_priv *priv = qp->priv; in opfn_conn_request()
51 trace_hfi1_opfn_state_conn_request(qp); in opfn_conn_request()
70 if (!extd || !extd->request || !extd->request(qp, &data)) { in opfn_conn_request()
80 trace_hfi1_opfn_data_conn_request(qp, capcode, data); in opfn_conn_request()
92 ret = ib_post_send(&qp->ibqp, &wr.wr, NULL); in opfn_conn_request()
95 trace_hfi1_opfn_state_conn_request(qp); in opfn_conn_request()
98 trace_hfi1_msg_opfn_conn_request(qp, "ib_ost_send failed: ret = ", in opfn_conn_request()
106 opfn_schedule_conn_request(qp); in opfn_conn_request()
123 * When QP s_lock is held in the caller, the OPFN request must be scheduled
124 * to a different workqueue to avoid double locking QP s_lock in call to
127 static void opfn_schedule_conn_request(struct rvt_qp *qp) in opfn_schedule_conn_request() argument
129 struct hfi1_qp_priv *priv = qp->priv; in opfn_schedule_conn_request()
131 trace_hfi1_opfn_state_sched_conn_request(qp); in opfn_schedule_conn_request()
135 void opfn_conn_response(struct rvt_qp *qp, struct rvt_ack_entry *e, in opfn_conn_response() argument
138 struct hfi1_qp_priv *priv = qp->priv; in opfn_conn_response()
144 trace_hfi1_opfn_state_conn_response(qp); in opfn_conn_response()
146 trace_hfi1_opfn_data_conn_response(qp, capcode, data); in opfn_conn_response()
165 extd->error(qp); in opfn_conn_response()
168 if (extd->response(qp, &data)) in opfn_conn_response()
171 trace_hfi1_opfn_state_conn_response(qp); in opfn_conn_response()
175 void opfn_conn_reply(struct rvt_qp *qp, u64 data) in opfn_conn_reply() argument
177 struct hfi1_qp_priv *priv = qp->priv; in opfn_conn_reply()
182 trace_hfi1_opfn_state_conn_reply(qp); in opfn_conn_reply()
184 trace_hfi1_opfn_data_conn_reply(qp, capcode, data); in opfn_conn_reply()
201 if (extd->reply(qp, data)) in opfn_conn_reply()
209 trace_hfi1_opfn_state_conn_reply(qp); in opfn_conn_reply()
214 void opfn_conn_error(struct rvt_qp *qp) in opfn_conn_error() argument
216 struct hfi1_qp_priv *priv = qp->priv; in opfn_conn_error()
221 trace_hfi1_opfn_state_conn_error(qp); in opfn_conn_error()
222 trace_hfi1_msg_opfn_conn_error(qp, "error. qp state ", (u64)qp->state); in opfn_conn_error()
224 * The QP has gone into the Error state. We have to invalidate all in opfn_conn_error()
226 * QP handling will clean the WQE for the connection request. in opfn_conn_error()
233 extd->error(qp); in opfn_conn_error()
242 void opfn_qp_init(struct rvt_qp *qp, struct ib_qp_attr *attr, int attr_mask) in opfn_qp_init() argument
244 struct ib_qp *ibqp = &qp->ibqp; in opfn_qp_init()
245 struct hfi1_qp_priv *priv = qp->priv; in opfn_qp_init()
256 priv->tid_retry_timeout_jiffies = qp->timeout_jiffies; in opfn_qp_init()
257 if (qp->pmtu == enum_to_mtu(OPA_MTU_4096) || in opfn_qp_init()
258 qp->pmtu == enum_to_mtu(OPA_MTU_8192)) { in opfn_qp_init()
259 tid_rdma_opfn_init(qp, local); in opfn_qp_init()
262 * QP transitions to RTS. in opfn_qp_init()
268 * If the QP is transitioning to RTS and the in opfn_qp_init()
270 * set, the QP is being moved *back* into RTS. in opfn_qp_init()
283 opfn_schedule_conn_request(qp); in opfn_qp_init()
293 void opfn_trigger_conn_request(struct rvt_qp *qp, u32 bth1) in opfn_trigger_conn_request() argument
295 struct hfi1_qp_priv *priv = qp->priv; in opfn_trigger_conn_request()
300 if (qp->state == IB_QPS_RTS) in opfn_trigger_conn_request()
301 opfn_conn_request(qp); in opfn_trigger_conn_request()