Commit 721d0427 authored by Jubin John's avatar Jubin John Committed by Doug Ledford

staging/rdma/hfi1: Add s_sendcontext priv field

s_sendcontext will be used to map the QPs to the send contexts
for PIO.
Reviewed-by: default avatarMike Marciniszyn <mike.marciniszyn@intel.com>
Reviewed-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: default avatarJubin John <jubin.john@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent c239a5b5
...@@ -191,6 +191,9 @@ int hfi1_check_modify_qp(struct rvt_qp *qp, struct ib_qp_attr *attr, ...@@ -191,6 +191,9 @@ int hfi1_check_modify_qp(struct rvt_qp *qp, struct ib_qp_attr *attr,
if (!qp_to_sdma_engine(qp, sc) && if (!qp_to_sdma_engine(qp, sc) &&
dd->flags & HFI1_HAS_SEND_DMA) dd->flags & HFI1_HAS_SEND_DMA)
return -EINVAL; return -EINVAL;
if (!qp_to_send_context(qp, sc))
return -EINVAL;
} }
if (attr_mask & IB_QP_ALT_PATH) { if (attr_mask & IB_QP_ALT_PATH) {
...@@ -201,6 +204,9 @@ int hfi1_check_modify_qp(struct rvt_qp *qp, struct ib_qp_attr *attr, ...@@ -201,6 +204,9 @@ int hfi1_check_modify_qp(struct rvt_qp *qp, struct ib_qp_attr *attr,
if (!qp_to_sdma_engine(qp, sc) && if (!qp_to_sdma_engine(qp, sc) &&
dd->flags & HFI1_HAS_SEND_DMA) dd->flags & HFI1_HAS_SEND_DMA)
return -EINVAL; return -EINVAL;
if (!qp_to_send_context(qp, sc))
return -EINVAL;
} }
return 0; return 0;
...@@ -608,11 +614,13 @@ void qp_iter_print(struct seq_file *s, struct qp_iter *iter) ...@@ -608,11 +614,13 @@ void qp_iter_print(struct seq_file *s, struct qp_iter *iter)
struct rvt_qp *qp = iter->qp; struct rvt_qp *qp = iter->qp;
struct hfi1_qp_priv *priv = qp->priv; struct hfi1_qp_priv *priv = qp->priv;
struct sdma_engine *sde; struct sdma_engine *sde;
struct send_context *send_context;
sde = qp_to_sdma_engine(qp, priv->s_sc); sde = qp_to_sdma_engine(qp, priv->s_sc);
wqe = rvt_get_swqe_ptr(qp, qp->s_last); wqe = rvt_get_swqe_ptr(qp, qp->s_last);
send_context = qp_to_send_context(qp, priv->s_sc);
seq_printf(s, seq_printf(s,
"N %d %s QP%u R %u %s %u %u %u f=%x %u %u %u %u %u PSN %x %x %x %x %x (%u %u %u %u %u %u %u) QP%u LID %x SL %u MTU %u %u %u %u SDE %p,%u\n", "N %d %s QP%u R %u %s %u %u %u f=%x %u %u %u %u %u PSN %x %x %x %x %x (%u %u %u %u %u %u %u) QP%u LID %x SL %u MTU %u %u %u %u SDE %p,%u SC %p\n",
iter->n, iter->n,
qp_idle(qp) ? "I" : "B", qp_idle(qp) ? "I" : "B",
qp->ibqp.qp_num, qp->ibqp.qp_num,
...@@ -641,7 +649,8 @@ void qp_iter_print(struct seq_file *s, struct qp_iter *iter) ...@@ -641,7 +649,8 @@ void qp_iter_print(struct seq_file *s, struct qp_iter *iter)
qp->s_retry_cnt, qp->s_retry_cnt,
qp->s_rnr_retry_cnt, qp->s_rnr_retry_cnt,
sde, sde,
sde ? sde->this_idx : 0); sde ? sde->this_idx : 0,
send_context);
} }
void qp_comm_est(struct rvt_qp *qp) void qp_comm_est(struct rvt_qp *qp)
......
...@@ -394,6 +394,7 @@ int hfi1_make_ud_req(struct rvt_qp *qp, struct hfi1_pkt_state *ps) ...@@ -394,6 +394,7 @@ int hfi1_make_ud_req(struct rvt_qp *qp, struct hfi1_pkt_state *ps)
priv->s_sc = sc5; priv->s_sc = sc5;
} }
priv->s_sde = qp_to_sdma_engine(qp, priv->s_sc); priv->s_sde = qp_to_sdma_engine(qp, priv->s_sc);
priv->s_sendcontext = qp_to_send_context(qp, priv->s_sc);
ps->s_txreq->phdr.hdr.lrh[0] = cpu_to_be16(lrh0); ps->s_txreq->phdr.hdr.lrh[0] = cpu_to_be16(lrh0);
ps->s_txreq->phdr.hdr.lrh[1] = cpu_to_be16(ah_attr->dlid); ps->s_txreq->phdr.hdr.lrh[1] = cpu_to_be16(ah_attr->dlid);
ps->s_txreq->phdr.hdr.lrh[2] = ps->s_txreq->phdr.hdr.lrh[2] =
......
...@@ -199,10 +199,11 @@ struct hfi1_pio_header { ...@@ -199,10 +199,11 @@ struct hfi1_pio_header {
* pair is made common * pair is made common
*/ */
struct hfi1_qp_priv { struct hfi1_qp_priv {
struct ahg_ib_header *s_hdr; /* next packet header to send */ struct ahg_ib_header *s_hdr; /* next header to send */
struct sdma_engine *s_sde; /* current sde */ struct sdma_engine *s_sde; /* current sde */
u8 s_sc; /* SC[0..4] for next packet */ struct send_context *s_sendcontext; /* current sendcontext */
u8 r_adefered; /* number of acks defered */ u8 s_sc; /* SC[0..4] for next packet */
u8 r_adefered; /* number of acks defered */
struct iowait s_iowait; struct iowait s_iowait;
struct timer_list s_rnr_timer; struct timer_list s_rnr_timer;
struct rvt_qp *owner; struct rvt_qp *owner;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment