]> www.infradead.org Git - users/jedix/linux-maple.git/commit
rdma_cm/cma: Cache broadcast domain record.
authorErez Shitrit <erezsh@mellanox.com>
Sun, 8 Dec 2013 11:39:35 +0000 (13:39 +0200)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 7 Jul 2015 21:45:16 +0000 (14:45 -0700)
commitd1b5d340c88c6d88197f2d73f561305197f467cc
tree38274c5cdaab13c5e0f177a0066b82fe5f6433c1
parent8faaa4d5a85e707196423277941370391b51a8eb
rdma_cm/cma: Cache broadcast domain record.

Currently, rdma_cm waits for the IPoIB driver to complete
its join to the broadcast domain record; after IPoIB gets its
multicast, rdma_cm tries to obtain its own multicast. After an
IB_CLIENT reregister event, IPoIB may not succeed in its first
effort to reregister its multicast groups. In this case, the
backoff mechanism is applied, and IPoIB retries after a
backoff which starts at 2 seconds and can increase up to
16 seconds.
Since rdma_cm waits for the IPoIB multicast join to succeed,
it too will be delayed at least 2 seconds.

The fix is to detach rdma_cm's multicast operation from IPoIB's
broadcast record re-join. When rdma_cm executes a new join
request, it now tries (via the cma) to take parameters from a
cached broadcast record. If the join fails using the cached
values, the cma deletes the cached record and tries to get a new
one.

Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
(Ported from Mellanox OFED 2.4)

Signed-off-by: Mukesh Kacker <mukesh.kacker@oracle.com>
drivers/infiniband/core/cma.c