diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/infiniband/core/addr.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c index a5ea1bce968..c15fd2ea56c 100644 --- a/drivers/infiniband/core/addr.c +++ b/drivers/infiniband/core/addr.c | |||
@@ -200,7 +200,7 @@ static int addr4_resolve(struct sockaddr_in *src_in, | |||
200 | src_in->sin_family = AF_INET; | 200 | src_in->sin_family = AF_INET; |
201 | src_in->sin_addr.s_addr = rt->rt_src; | 201 | src_in->sin_addr.s_addr = rt->rt_src; |
202 | 202 | ||
203 | if (rt->idev->dev->flags & IFF_LOOPBACK) { | 203 | if (rt->dst.dev->flags & IFF_LOOPBACK) { |
204 | ret = rdma_translate_ip((struct sockaddr *) dst_in, addr); | 204 | ret = rdma_translate_ip((struct sockaddr *) dst_in, addr); |
205 | if (!ret) | 205 | if (!ret) |
206 | memcpy(addr->dst_dev_addr, addr->src_dev_addr, MAX_ADDR_LEN); | 206 | memcpy(addr->dst_dev_addr, addr->src_dev_addr, MAX_ADDR_LEN); |
@@ -208,12 +208,12 @@ static int addr4_resolve(struct sockaddr_in *src_in, | |||
208 | } | 208 | } |
209 | 209 | ||
210 | /* If the device does ARP internally, return 'done' */ | 210 | /* If the device does ARP internally, return 'done' */ |
211 | if (rt->idev->dev->flags & IFF_NOARP) { | 211 | if (rt->dst.dev->flags & IFF_NOARP) { |
212 | rdma_copy_addr(addr, rt->idev->dev, NULL); | 212 | rdma_copy_addr(addr, rt->dst.dev, NULL); |
213 | goto put; | 213 | goto put; |
214 | } | 214 | } |
215 | 215 | ||
216 | neigh = neigh_lookup(&arp_tbl, &rt->rt_gateway, rt->idev->dev); | 216 | neigh = neigh_lookup(&arp_tbl, &rt->rt_gateway, rt->dst.dev); |
217 | if (!neigh || !(neigh->nud_state & NUD_VALID)) { | 217 | if (!neigh || !(neigh->nud_state & NUD_VALID)) { |
218 | neigh_event_send(rt->dst.neighbour, NULL); | 218 | neigh_event_send(rt->dst.neighbour, NULL); |
219 | ret = -ENODATA; | 219 | ret = -ENODATA; |