• Doug Ledford's avatar
    IB/ipoib: drop mcast_mutex usage · 1c0453d6
    Doug Ledford authored
    We needed the mcast_mutex when we had to prevent the join completion
    callback from having the value it stored in mcast->mc overwritten
    by a delayed return from ib_sa_join_multicast.  By storing the return
    of ib_sa_join_multicast in an intermediate variable, we prevent a
    delayed return from ib_sa_join_multicast overwriting the valid
    contents of mcast->mc, and we no longer need a mutex to force the
    join callback to run after the return of ib_sa_join_multicast.  This
    allows us to do away with the mutex entirely and protect our critical
    sections with a just a spinlock instead.  This is highly desirable
    as there were some places where we couldn't use a mutex because the
    code was not allowed to sleep, and so we were currently using a mix
    of mutex and spinlock to protect what we needed to protect.  Now we
    only have a spin lock and the locking complexity is greatly reduced.
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    1c0453d6
ipoib_multicast.c 26.8 KB