IPoIB: Don't start send-only joins while multicast thread is stopped
authorMichael S. Tsirkin <mst@mellanox.co.il>
Wed, 8 Feb 2006 00:37:08 +0000 (16:37 -0800)
committerRoland Dreier <rolandd@cisco.com>
Wed, 8 Feb 2006 00:37:08 +0000 (16:37 -0800)
commit479a079663bd4c5f3d2714643b1b8c406aaba3e0
treee484f9a2dce6ee68f1c328d54f18acbf137c1999
parent8cf3f04f45694db0699f608c0e3fb550c607cc88
IPoIB: Don't start send-only joins while multicast thread is stopped

Fix the following race scenario:
  - Device is up.
  - Port event or set mcast list triggers ipoib_mcast_stop_thread,
    this cancels the query and waits on mcast "done" completion.
  - Completion is called and "done" is set.
  - Meanwhile, ipoib_mcast_send arrives and starts a new query,
    re-initializing "done".

Fix this by adding a "multicast started" bit and checking it before
starting a send-only join.

Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/ulp/ipoib/ipoib.h
drivers/infiniband/ulp/ipoib/ipoib_multicast.c