Re: [PATCH] IB/core: Make ib_mad_client_id atomic
From: Doug Ledford
Date: Fri Apr 27 2018 - 15:08:45 EST
On Thu, 2018-04-26 at 20:51 +0200, HÃkon Bugge wrote:
> > Jason is out this week. I'll end up processing this one (probably later
> > today). But Iâll fix up the commit message to suit my tastes when I do.
>
> Thank you, Doug and Jack,
I reworded the commit message, let me know if you think I worded it
wrong:
commit 69f01b81539c62f3dd96f9f02138ad7b839a0c70 (HEAD -> k.o/wip/dl-for-rc)
Author: HÃkon Bugge <haakon.bugge@xxxxxxxxxx>
Date: Wed Apr 18 16:24:50 2018 +0200
IB/core: Make ib_mad_client_id atomic
Currently, kernel protects access to the agent ID allocator on a per
port basis using a spinlock, so it is impossible for two apps/threads on
the same port to get the same TID, but it is entirely possible for two
threads on different ports to end up with the same TID. As this can be
confusing (regardless of it being legal according to the IB Spec 1.3,
C13-18.1.1, in section 13.4.6.4 - TransactionID usage: "Then initiating
a new operation, MADHeader:TransactionID shall be set to such a value
that within that MAD the combination of TIG, SGID, and MgmtClass is
different from that of any other currently executing operation. If the
MAD does not have a GRH, its SLID is used in the combination in place of
an SGID." which guarantees we are legal because our different ports will
have different SGID/SLID creating a unique tuple even if the TIDs are
identical), and as we might want to open the TID allocator up to more
parallel usage later, make the TID an atomic type so that no two
allocations, regardless of port number, will be the same.
Signed-off-by: HÃkon Bugge <haakon.bugge@xxxxxxxxxx>
Reviewed-by: Jack Morgenstein <jackm@xxxxxxxxxxxxxxxxxx>
Reviewed-by: Ira Weiny <ira.weiny@xxxxxxxxx>
Reviewed-by: Zhu Yanjun <yanjun.zhu@xxxxxxxxxx>
Signed-off-by: Doug Ledford <dledford@xxxxxxxxxx>
--
Doug Ledford <dledford@xxxxxxxxxx>
GPG KeyID: B826A3330E572FDD
Key fingerprint = AE6B 1BDA 122B 23B4 265B 1274 B826 A333 0E57 2FDDAttachment:
signature.asc
Description: This is a digitally signed message part