summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/qib/qib_6120_regs.h
diff options
context:
space:
mode:
authorJim Foraker <foraker1@llnl.gov>2012-05-02 14:39:11 -0400
committerRoland Dreier <roland@purestorage.com>2012-05-14 12:42:42 -0700
commit6199c8961e1bcd38c112bee9028d482e2a7768eb (patch)
treec11b56db34106b8f1b758516a152213c85918145 /drivers/infiniband/hw/qib/qib_6120_regs.h
parentf665acb3cbc4d7d83bd655d21e4c7edc45029c46 (diff)
downloadblackbird-op-linux-6199c8961e1bcd38c112bee9028d482e2a7768eb.tar.gz
blackbird-op-linux-6199c8961e1bcd38c112bee9028d482e2a7768eb.zip
IB/qib: Fix M_Key lease timeout handling
If a port has an M_Key lease set, the M_Key protect bits set to 1, and a SubnSet arrives with an invalid M_Key, an M_Key mismatch trap is generated, the lease timer begins as expected, and eventually the M_Key protect bits will be set back to 0 as per the spec. However, if any other SMP with an invalid M_Key arrives, the lease timer is expired and the M_Key protect bits remain in force. This is not according to to spec. In particular, C14-17 says that a lease timer that is underway is not affected by protection level checks (ie, at protection level 1, a SubnGet with a bad M_Key may be successful, but does not stop the timer), and C14-19 says that the timer shall stop when a valid M_Key has been received. C14-19 is the only compliance statement that specifies a stopping condition for the timer. This behavior is magnified if the port's Master SM LID attribute points at itself. In that case, the M_Key mismatch trap is sufficient to expire the timer, and the mkey lease attribute is rendered useless. Reviewed-by: Ram Vepa <ram.vepa@qlogic.com> Signed-off-by: Jim Foraker <foraker1@llnl.gov> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@qlogic.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband/hw/qib/qib_6120_regs.h')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud