diff options
author | Ingo Molnar <mingo@kernel.org> | 2016-09-20 08:29:21 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-09-20 08:29:21 +0200 |
commit | b2c16e1efddeb517c62d242fb8ec30a383843468 (patch) | |
tree | fbfbe6f124a9423abf9a288ad46feb6db7469c42 /drivers/infiniband/ulp/ipoib | |
parent | 81539169f283329fd8bc58457cc15754f683ba69 (diff) | |
parent | d2ffb0103aaefa9b169da042cf39ce27bfb6cdbb (diff) | |
download | blackbird-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.c | 9 |
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); } |