diff options
author | Moni Shoua | 2009-01-28 23:54:35 +0100 |
---|---|---|
committer | Roland Dreier | 2009-01-28 23:54:35 +0100 |
commit | f0f6f346a1edaec23b990c25f53478669e56fa70 (patch) | |
tree | 874c70fae081386ca3408c358f14de231edf68ce /drivers/net | |
parent | Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rol... (diff) | |
download | kernel-qcow2-linux-f0f6f346a1edaec23b990c25f53478669e56fa70.tar.gz kernel-qcow2-linux-f0f6f346a1edaec23b990c25f53478669e56fa70.tar.xz kernel-qcow2-linux-f0f6f346a1edaec23b990c25f53478669e56fa70.zip |
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>
Diffstat (limited to 'drivers/net')
0 files changed, 0 insertions, 0 deletions