Re-send ARP, since earlier ARP request could have got
dropped/lost. This should be done in addr_resolve_remote()
as doing it in rdma_resolve_ip() means sending ARP only
once.

Signed-off-by: Krishna Kumar <[EMAIL PROTECTED]>
--------
diff -ruNp org/drivers/infiniband/core/addr.c new/drivers/infiniband/core/addr.c
--- org/drivers/infiniband/core/addr.c  2006-10-10 16:02:01.000000000 +0530
+++ new/drivers/infiniband/core/addr.c  2006-10-10 16:13:22.000000000 +0530
@@ -188,6 +188,8 @@ static int addr_resolve_remote(struct so
        ret = rdma_copy_addr(addr, neigh->dev, neigh->ha);
 release:
        neigh_release(neigh);
+       if (ret == -ENODATA)
+               addr_send_arp(dst_in);
 put:
        ip_rt_put(rt);
 out:
@@ -300,7 +302,6 @@ int rdma_resolve_ip(struct sockaddr *src
        case -ENODATA:
                req->timeout = msecs_to_jiffies(timeout_ms) + jiffies;
                queue_req(req);
-               addr_send_arp(dst_in);
                break;
        default:
                ret = req->status;

_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

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

Reply via email to