Commit 92761cda authored by Joachim Fenkes's avatar Joachim Fenkes Committed by Roland Dreier

IB/ehca: Correctly set GRH mask bit in ehca_modify_qp()

The driver needs to always supply the "GRH present" flag to the
hypervisor, whether it's true or false. Not supplying it (i.e. not
setting the corresponding mask bit) amounts to a "perhaps", which we
don't want.
Signed-off-by: default avatarJoachim Fenkes <fenkes@de.ibm.com>
Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
parent 5d88278e
...@@ -968,17 +968,21 @@ static int internal_modify_qp(struct ib_qp *ibqp, ...@@ -968,17 +968,21 @@ static int internal_modify_qp(struct ib_qp *ibqp,
((ehca_mult - 1) / ah_mult) : 0; ((ehca_mult - 1) / ah_mult) : 0;
else else
mqpcb->max_static_rate = 0; mqpcb->max_static_rate = 0;
update_mask |= EHCA_BMASK_SET(MQPCB_MASK_MAX_STATIC_RATE, 1); update_mask |= EHCA_BMASK_SET(MQPCB_MASK_MAX_STATIC_RATE, 1);
/*
* Always supply the GRH flag, even if it's zero, to give the
* hypervisor a clear "yes" or "no" instead of a "perhaps"
*/
update_mask |= EHCA_BMASK_SET(MQPCB_MASK_SEND_GRH_FLAG, 1);
/* /*
* only if GRH is TRUE we might consider SOURCE_GID_IDX * only if GRH is TRUE we might consider SOURCE_GID_IDX
* and DEST_GID otherwise phype will return H_ATTR_PARM!!! * and DEST_GID otherwise phype will return H_ATTR_PARM!!!
*/ */
if (attr->ah_attr.ah_flags == IB_AH_GRH) { if (attr->ah_attr.ah_flags == IB_AH_GRH) {
mqpcb->send_grh_flag = 1 << 31; mqpcb->send_grh_flag = 1;
update_mask |=
EHCA_BMASK_SET(MQPCB_MASK_SEND_GRH_FLAG, 1);
mqpcb->source_gid_idx = attr->ah_attr.grh.sgid_index; mqpcb->source_gid_idx = attr->ah_attr.grh.sgid_index;
update_mask |= update_mask |=
EHCA_BMASK_SET(MQPCB_MASK_SOURCE_GID_IDX, 1); EHCA_BMASK_SET(MQPCB_MASK_SOURCE_GID_IDX, 1);
......
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