mirror of https://gitee.com/openkylin/linux.git
IB/hfi1: Mask upper 16Bits of Extended LID prior to rvt_cq_entry
Pass only the lower 16Bits of an Extended LIDs to rvt_cq_entry
to avoid triggering a WARN_ON_ONCE during conversion there.
These upper 16Bits are okay to drop as they are obtained elsewhere.
Fixes: 62ede77799
("Add OPA extended LID support")
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Don Hiatt <don.hiatt@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
19b57c6c44
commit
b64581adba
|
@ -2219,7 +2219,7 @@ void hfi1_rc_rcv(struct hfi1_packet *packet)
|
|||
wc.opcode = IB_WC_RECV;
|
||||
wc.qp = &qp->ibqp;
|
||||
wc.src_qp = qp->remote_qpn;
|
||||
wc.slid = rdma_ah_get_dlid(&qp->remote_ah_attr);
|
||||
wc.slid = rdma_ah_get_dlid(&qp->remote_ah_attr) & U16_MAX;
|
||||
/*
|
||||
* It seems that IB mandates the presence of an SL in a
|
||||
* work completion only for the UD transport (see section
|
||||
|
|
|
@ -560,7 +560,7 @@ static void ruc_loopback(struct rvt_qp *sqp)
|
|||
wc.byte_len = wqe->length;
|
||||
wc.qp = &qp->ibqp;
|
||||
wc.src_qp = qp->remote_qpn;
|
||||
wc.slid = rdma_ah_get_dlid(&qp->remote_ah_attr);
|
||||
wc.slid = rdma_ah_get_dlid(&qp->remote_ah_attr) & U16_MAX;
|
||||
wc.sl = rdma_ah_get_sl(&qp->remote_ah_attr);
|
||||
wc.port_num = 1;
|
||||
/* Signal completion event if the solicited bit is set. */
|
||||
|
|
|
@ -462,7 +462,7 @@ void hfi1_uc_rcv(struct hfi1_packet *packet)
|
|||
wc.status = IB_WC_SUCCESS;
|
||||
wc.qp = &qp->ibqp;
|
||||
wc.src_qp = qp->remote_qpn;
|
||||
wc.slid = rdma_ah_get_dlid(&qp->remote_ah_attr);
|
||||
wc.slid = rdma_ah_get_dlid(&qp->remote_ah_attr) & U16_MAX;
|
||||
/*
|
||||
* It seems that IB mandates the presence of an SL in a
|
||||
* work completion only for the UD transport (see section
|
||||
|
|
|
@ -265,8 +265,8 @@ static void ud_loopback(struct rvt_qp *sqp, struct rvt_swqe *swqe)
|
|||
} else {
|
||||
wc.pkey_index = 0;
|
||||
}
|
||||
wc.slid = ppd->lid | (rdma_ah_get_path_bits(ah_attr) &
|
||||
((1 << ppd->lmc) - 1));
|
||||
wc.slid = (ppd->lid | (rdma_ah_get_path_bits(ah_attr) &
|
||||
((1 << ppd->lmc) - 1))) & U16_MAX;
|
||||
/* Check for loopback when the port lid is not set */
|
||||
if (wc.slid == 0 && sqp->ibqp.qp_type == IB_QPT_GSI)
|
||||
wc.slid = be16_to_cpu(IB_LID_PERMISSIVE);
|
||||
|
@ -1037,7 +1037,7 @@ void hfi1_ud_rcv(struct hfi1_packet *packet)
|
|||
}
|
||||
if (slid_is_permissive)
|
||||
slid = be32_to_cpu(OPA_LID_PERMISSIVE);
|
||||
wc.slid = slid;
|
||||
wc.slid = slid & U16_MAX;
|
||||
wc.sl = sl_from_sc;
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue