IB/core: Make ib_mad_client_id atomic
Currently, the 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), and as the rdma-core user space API for /dev/umad devices implies unique TIDs even across ports, make the TID an atomic type so that no two allocations, regardless of port number, will be the same. Signed-off-by: NHåkon Bugge <haakon.bugge@oracle.com> Reviewed-by: NJack Morgenstein <jackm@dev.mellanox.co.il> Reviewed-by: NIra Weiny <ira.weiny@intel.com> Reviewed-by: NZhu Yanjun <yanjun.zhu@oracle.com> Signed-off-by: NDoug Ledford <dledford@redhat.com>
Showing
想要评论请 注册 或 登录