linux/drivers/infiniband/hw
Moni Shoua f0f6f346a1 IB/mlx4: Fix dispatch of IB_EVENT_LID_CHANGE event
When snooping a PortInfo MAD, its client_reregister bit is checked.
If the bit is ON then a CLIENT_REREGISTER event is dispatched,
otherwise a LID_CHANGE event is dispatched.  This way of decision
ignores the cases where the MAD changes the LID along with an
instruction to reregister (so a necessary LID_CHANGE event won't be
dispatched) or the MAD is neither of these (and an unnecessary
LID_CHANGE event will be dispatched).

This causes problems at least with IPoIB, which will do a "light"
flush on reregister, rather than the "heavy" flush required due to a
LID change.

Fix this by dispatching a CLIENT_REREGISTER event if the
client_reregister bit is set, but also compare the LID in the MAD to
the current LID.  If and only if they are not identical then a
LID_CHANGE event is dispatched.

Signed-off-by: Moni Shoua <monis@voltaire.com>
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Yossi Etigin <yosefe@voltaire.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2009-01-28 14:54:35 -08:00
..
amso1100 infiniband: Kill directly reference of netdev->priv 2008-11-24 15:34:00 -08:00
cxgb3 RDMA/cxgb3: Fix deadlock in iw_cxgb3 (hang when configuring interface) 2008-11-12 10:16:47 -08:00
ehca IB/ehca: Use consistent types for ehca_plpar_hcall9() 2009-01-16 14:55:40 -08:00
ipath zero i_uid/i_gid on inode allocation 2009-01-05 11:54:28 -05:00
mlx4 IB/mlx4: Fix dispatch of IB_EVENT_LID_CHANGE event 2009-01-28 14:54:35 -08:00
mthca net: replace %p6 with %pI6 2008-10-29 12:52:50 -07:00
nes Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2009-01-13 08:19:42 -08:00