summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/ulp/ipoib
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2016-09-20 08:29:21 +0200
committerIngo Molnar <mingo@kernel.org>2016-09-20 08:29:21 +0200
commitb2c16e1efddeb517c62d242fb8ec30a383843468 (patch)
treefbfbe6f124a9423abf9a288ad46feb6db7469c42 /drivers/infiniband/ulp/ipoib
parent81539169f283329fd8bc58457cc15754f683ba69 (diff)
parentd2ffb0103aaefa9b169da042cf39ce27bfb6cdbb (diff)
downloadblackbird-obmc-linux-b2c16e1efddeb517c62d242fb8ec30a383843468.tar.gz
blackbird-obmc-linux-b2c16e1efddeb517c62d242fb8ec30a383843468.zip
Merge branch 'linus' into x86/asm, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/infiniband/ulp/ipoib')
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_ib.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
index dc6d241b9406..be11d5d5b8c1 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
@@ -1161,8 +1161,17 @@ static void __ipoib_ib_dev_flush(struct ipoib_dev_priv *priv,
}
if (level == IPOIB_FLUSH_LIGHT) {
+ int oper_up;
ipoib_mark_paths_invalid(dev);
+ /* Set IPoIB operation as down to prevent races between:
+ * the flush flow which leaves MCG and on the fly joins
+ * which can happen during that time. mcast restart task
+ * should deal with join requests we missed.
+ */
+ oper_up = test_and_clear_bit(IPOIB_FLAG_OPER_UP, &priv->flags);
ipoib_mcast_dev_flush(dev);
+ if (oper_up)
+ set_bit(IPOIB_FLAG_OPER_UP, &priv->flags);
ipoib_flush_ah(dev);
}
OpenPOWER on IntegriCloud