|
@@ -4293,7 +4293,6 @@ static int opa_local_smp_check(struct hfi1_ibport *ibp,
|
|
|
const struct ib_wc *in_wc)
|
|
|
{
|
|
|
struct hfi1_pportdata *ppd = ppd_from_ibp(ibp);
|
|
|
- u16 slid = ib_lid_cpu16(in_wc->slid);
|
|
|
u16 pkey;
|
|
|
|
|
|
if (in_wc->pkey_index >= ARRAY_SIZE(ppd->pkeys))
|
|
@@ -4320,7 +4319,11 @@ static int opa_local_smp_check(struct hfi1_ibport *ibp,
|
|
|
*/
|
|
|
if (pkey == LIM_MGMT_P_KEY || pkey == FULL_MGMT_P_KEY)
|
|
|
return 0;
|
|
|
- ingress_pkey_table_fail(ppd, pkey, slid);
|
|
|
+ /*
|
|
|
+ * On OPA devices it is okay to lose the upper 16 bits of LID as this
|
|
|
+ * information is obtained elsewhere. Mask off the upper 16 bits.
|
|
|
+ */
|
|
|
+ ingress_pkey_table_fail(ppd, pkey, ib_lid_cpu16(0xFFFF & in_wc->slid));
|
|
|
return 1;
|
|
|
}
|
|
|
|