diff options
author | Mitko Haralanov <mitko@qlogic.com> | 2011-03-04 13:53:17 -0500 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2011-03-14 15:11:51 -0400 |
commit | 36b87b419c7616a8aaa9889566d9a9b50689dee1 (patch) | |
tree | a1509da10d80a58e2803420804ed2f1d8c780f26 | |
parent | 4634b7945cf0d6a66036ad10c3d658ae4eb39fa0 (diff) |
IB/qib: Fix M_Key field in SubnGet and SubnGetResp MADs
Set the M_Key field in SubnGet and SugnGetResp MADs based on correctly
interpreting the protection level specified in the M_KeyProtBits field.
Signed-off-by: Mitko Haralanov <mitko@qlogic.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@qlogic.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
-rw-r--r-- | drivers/infiniband/hw/qib/qib_mad.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/qib/qib_mad.c b/drivers/infiniband/hw/qib/qib_mad.c index 4b9e11cc561b..8fd3df5bf04d 100644 --- a/drivers/infiniband/hw/qib/qib_mad.c +++ b/drivers/infiniband/hw/qib/qib_mad.c | |||
@@ -464,8 +464,9 @@ static int subn_get_portinfo(struct ib_smp *smp, struct ib_device *ibdev, | |||
464 | memset(smp->data, 0, sizeof(smp->data)); | 464 | memset(smp->data, 0, sizeof(smp->data)); |
465 | 465 | ||
466 | /* Only return the mkey if the protection field allows it. */ | 466 | /* Only return the mkey if the protection field allows it. */ |
467 | if (smp->method == IB_MGMT_METHOD_SET || ibp->mkey == smp->mkey || | 467 | if (!(smp->method == IB_MGMT_METHOD_GET && |
468 | ibp->mkeyprot == 0) | 468 | ibp->mkey != smp->mkey && |
469 | ibp->mkeyprot == 1)) | ||
469 | pip->mkey = ibp->mkey; | 470 | pip->mkey = ibp->mkey; |
470 | pip->gid_prefix = ibp->gid_prefix; | 471 | pip->gid_prefix = ibp->gid_prefix; |
471 | lid = ppd->lid; | 472 | lid = ppd->lid; |