From: Yossi Etigin Date: Fri, 9 Jan 2009 22:05:11 +0000 (-0800) Subject: IPoIB: Fix loss of connectivity after bonding failover on both sides X-Git-Tag: v2.6.29-rc2~90^2^2~1 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a50df398cddf6b757bdbf30f5f0875982ef5c660;p=pandora-kernel.git 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 Signed-off-by: Yossi Etigin Signed-off-by: Roland Dreier --- Reading git-diff-tree failed