Hi
The patch below in it's previous  version appears in OFED-1.4_3 and since.
( kernel_patches/fixes/ipoib_0480_fix_loss_of_connectivity_after_failover.patch 
)

Could you please take care to replace it with the new one in next OFED?

thanks
-------- Original Message --------
Subject: Re: [ofa-general] [PATCH] ipoib: Fix loss of connectivity after        
bonding failover on both sides
Date: Tue, 18 Nov 2008 13:34:45 +0200
From: Moni Shoua <[EMAIL PROTECTED]>
To: Yossi Etigin <[EMAIL PROTECTED]>, Roland Dreier <[EMAIL PROTECTED]>
CC: Olga Shern <[EMAIL PROTECTED]>,     general list <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>

The patch assumes that the path query succeeds and therefore copies the HA from
the kernel neighbor structure to ipoib_neigh after path query is sent. If path 
query fails (e.g. 
request timeout) the next won't be triggered by finding that HA was updated in 
ipoib_strart_xmit().
This leads to a longer time that the destination node remains unaccessible.

The patch below is identical to Yossi's patch but without the copy of HA in 
neigh_add_path.


diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c 
b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index fddded7..ec433bf 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -709,26 +709,26 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct 
net_device *dev)
 
                neigh = *to_ipoib_neigh(skb->dst->neighbour);
 
-               if (neigh->ah)
-                       if (unlikely((memcmp(&neigh->dgid.raw,
-                                           skb->dst->neighbour->ha + 4,
-                                           sizeof(union ib_gid))) ||
-                                        (neigh->dev != dev))) {
-                               spin_lock_irqsave(&priv->lock, flags);
-                               /*
-                                * It's safe to call ipoib_put_ah() inside
-                                * priv->lock here, because we know that
-                                * path->ah will always hold one more reference,
-                                * so ipoib_put_ah() will never do more than
-                                * decrement the ref count.
-                                */
+               if (unlikely((memcmp(&neigh->dgid.raw,
+                               skb->dst->neighbour->ha + 4,
+                               sizeof(union ib_gid))) ||
+                               (neigh->dev != dev))) {
+                       spin_lock_irqsave(&priv->lock, flags);
+                       /*
+                        * It's safe to call ipoib_put_ah() inside
+                        * priv->lock here, because we know that
+                        * path->ah will always hold one more reference,
+                        * so ipoib_put_ah() will never do more than
+                        * decrement the ref count.
+                        */
+                       if (neigh->ah)
                                ipoib_put_ah(neigh->ah);
-                               list_del(&neigh->list);
-                               ipoib_neigh_free(dev, neigh);
-                               spin_unlock_irqrestore(&priv->lock, flags);
-                               ipoib_path_lookup(skb, dev);
-                               return NETDEV_TX_OK;
-                       }
+                       list_del(&neigh->list);
+                       ipoib_neigh_free(dev, neigh);
+                       spin_unlock_irqrestore(&priv->lock, flags);
+                       ipoib_path_lookup(skb, dev);
+                       return NETDEV_TX_OK;
+               }
 
                if (ipoib_cm_get(neigh)) {
                        if (ipoib_cm_up(neigh)) {
_______________________________________________
general mailing list
[EMAIL PROTECTED]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

_______________________________________________
ewg mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg

Reply via email to