|
@@ -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;
|
|
|
|
|
|
/*
|