On Mon, 23 Apr 2018 16:19:57 +0200 Håkon Bugge <haakon.bugge@xxxxxxxxxx> wrote: > > > > This actually looks like a genuine bug, why is it described only as > > 'confusing'? ib_register_mad_agent is callable from userspace, so at > > least two userspace agents can race and get the same TID’s. > > My understanding is that every lookup is using the {port, TID} tuple. > As such, it is not a bug, but, very confusing. Haakon, you are correct (see snippet from the IB spec, below). We will NOT have a situation where there are 2 threads/apps with the same agent ID on the *same port* (accessing the agent ID allocator is protected by a per-port spinlock). Having the same agent ID on DIFFERENT ports is OK. Thus, there is NO bug here. (But as Haakon says, IMHO it is more robust to avoid having the same agent ID for 2 agents even if those agents are on different ports). > > > TIDs need to be globally unique on the entire machine. > Jason, that is not exactly correct. >From the IB Spec 1.3, C13-18.1.1 (in section 13.4.6.4 - TransactionID usage): "When initiating a new operation, MADHeader:TransactionID shall be set to such a value that within that MAD the combination of TID, 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." Since the SGID/SLID is different for each port, the per-port guarantee of no 2 agents receiving the same agent-ID value is sufficient. -Jack -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html