summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Wise <swise@opengridcomputing.com>2007-09-12 05:00:25 -0500
committerRoland Dreier <rolandd@cisco.com>2007-10-09 19:59:13 -0700
commit935ef2d7a2910ca810fce57511f4d06a0cf00b5e (patch)
treeb0b3c6d6dd646e31100ca1d11fa5f18bc9014c38
parent3a31c41901b6bd3937ec36e0e4a930849e270df6 (diff)
downloadlinux-3.10-935ef2d7a2910ca810fce57511f4d06a0cf00b5e.tar.gz
linux-3.10-935ef2d7a2910ca810fce57511f4d06a0cf00b5e.tar.bz2
linux-3.10-935ef2d7a2910ca810fce57511f4d06a0cf00b5e.zip
RDMA/cma: Use neigh_event_send() to start neighbour discovery
Calling arp_send() to initiate neighbour discovery (ND) doesn't do the full ND protocol. Namely, it doesn't handle retransmitting the arp request if it is dropped. The function neigh_event_send() does all this. Without doing full ND, RDMA address resolution fails in the presence of dropped ARP broadcast packets. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Acked-by: Sean Hefty <sean.hefty@intel.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r--drivers/infiniband/core/addr.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
index c5c33d35f87..5381c80de10 100644
--- a/drivers/infiniband/core/addr.c
+++ b/drivers/infiniband/core/addr.c
@@ -161,8 +161,7 @@ static void addr_send_arp(struct sockaddr_in *dst_in)
if (ip_route_output_key(&rt, &fl))
return;
- arp_send(ARPOP_REQUEST, ETH_P_ARP, rt->rt_gateway, rt->idev->dev,
- rt->rt_src, NULL, rt->idev->dev->dev_addr, NULL);
+ neigh_event_send(rt->u.dst.neighbour, NULL);
ip_rt_put(rt);
}