linux/drivers/infiniband/hw/mlx4
Eli Cohen bef83ed92c IB/mlx4: Synchronize cleanup of MCGs in MCG paravirtualization
A client re-register event invokes cleanup of all MCGs.  This is
required to protect against misbehaved guests leading to corruption of
join/leave database.  However, since cleaning up the MCGs is a heavy
operation, it is pushed to a work queue for further processing.
Client re-register is also propagated to ULPs (e.g IPoIB).

However, since the cleanup is performed in a workqueue, the ULP could
leave and re-join groups before the cleanup occurs.  In this case,
when the cleanup takes place, it prunes the (newly-joined) MCGs and
the ULP is left without actual MCGs while believing it joined them.

Fix this by setting the flushing flag before invoking the cleanup task
and clearing it after flushing is complete.

Signed-off-by: Eli Cohen <eli@mellanox.com>
Reviewed-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2012-10-18 10:29:02 -07:00
..
ah.c IB/mlx4: Fix SL to 802.1Q priority-bits mapping for IBoE 2012-01-03 21:00:02 -08:00
alias_GUID.c IB/mlx4: Fix build error on platforms where UL is not 64 bits 2012-10-18 10:29:01 -07:00
cm.c idr: rename MAX_LEVEL to MAX_IDR_LEVEL 2012-10-06 03:04:56 +09:00
cq.c IB/mlx4: SR-IOV IB context objects and proxy/tunnel SQP support 2012-09-30 20:33:30 -07:00
doorbell.c IB: expand ib_umem_get() prototype 2008-04-29 08:06:12 -07:00
Kconfig mlx4: Fix infiniband Kconfig dependencies. 2011-08-11 23:05:05 -07:00
mad.c IB/mlx4: Fix QP1 P_Key processing in the Primary Physical Function (PPF) 2012-10-18 10:29:02 -07:00
main.c IB/mlx4: Create paravirt contexts for VFs when master IB driver initializes 2012-09-30 20:33:44 -07:00
Makefile IB/mlx4: Add iov directory in sysfs under the ib device 2012-09-30 20:33:39 -07:00
mcg.c IB/mlx4: Synchronize cleanup of MCGs in MCG paravirtualization 2012-10-18 10:29:02 -07:00
mlx4_ib.h mlx4: Paravirtualize Node Guids for slaves 2012-09-30 20:33:43 -07:00
mr.c IB/mlx4: Replace printk(KERN_yyy...) with pr_yyy(...) 2012-05-08 11:59:36 -07:00
qp.c Merge branches 'cma', 'cxgb4', 'ipoib', 'mlx4', 'mlx4-sriov', 'nes', 'qib' and 'srp' into for-linus 2012-10-02 07:43:59 -07:00
srq.c IB/mlx4: Replace printk(KERN_yyy...) with pr_yyy(...) 2012-05-08 11:59:36 -07:00
sysfs.c IB/mlx4: Add iov directory in sysfs under the ib device 2012-09-30 20:33:39 -07:00
user.h mlx4: Update/add Mellanox Technologies copyright lines to mlx4 driver files 2008-07-25 10:32:52 -07:00