linux/drivers/infiniband/ulp/ipoib
Yossi Etigin a50df398cd IPoIB: Fix loss of connectivity after bonding failover on both sides
Fix bonding failover in the case both peers failover and the
gratuitous ARP is lost.  In that case, the sender side will create an
ipoib_neigh and issue a path request with the old GID first.  When
skb->dst->neighbour->ha changes due to ARP refresh, this ipoib_neigh
will not be added to the path->list of the path of the new GID,
because the ipoib_neigh already exists.  It will not have an AH
either, because of sender-side failover.  Therefore, it will not get
an AH when the path is resolved.

The solution here is to compare GIDs in ipoib_start_xmit() even if
neigh->ah is invalid.  Comparing with an uninitialized value of
neigh->dgid should be fine, since a spurious match is harmless (and
astronomically unlikely too).

Signed-off-by: Moni Shoua <monis@voltaire.com>
Signed-off-by: Yossi Etigin <yosefe@voltaire.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2009-01-09 14:05:11 -08:00
..
ipoib_cm.c net: replace %p6 with %pI6 2008-10-29 12:52:50 -07:00
ipoib_ethtool.c IPoIB: Clean up ethtool support 2008-10-22 15:49:29 -07:00
ipoib_fs.c RDMA: Remove subversion $Id tags 2008-07-14 23:48:44 -07:00
ipoib_ib.c net: Remove unused netdev arg from some NAPI interfaces. 2008-12-22 20:43:12 -08:00
ipoib_main.c IPoIB: Fix loss of connectivity after bonding failover on both sides 2009-01-09 14:05:11 -08:00
ipoib_multicast.c net: replace %p6 with %pI6 2008-10-29 12:52:50 -07:00
ipoib_verbs.c IPoIB: Get rid of ipoib_mcast_detach() wrapper 2008-07-14 23:48:50 -07:00
ipoib_vlan.c IPoIB: Set netdev offload features properly for child (VLAN) interfaces 2008-10-22 15:49:49 -07:00
ipoib.h infiniband: remove IPOIB_GID_RAW_ARG, IPOIB_GID_ARG, IPOIB_GID_FMT 2008-10-28 23:02:37 -07:00
Kconfig IPoIB: Correct help text for INFINIBAND_IPOIB_DEBUG 2008-07-24 20:37:25 -07:00
Makefile IPoIB: Add basic ethtool support 2008-04-16 21:09:32 -07:00