infiniband: cxgb4: Convert import_ep() over to dst_neigh_lookup().
authorDavid Miller <davem@davemloft.net>
Tue, 24 Jan 2012 13:15:57 +0000 (13:15 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 26 Jan 2012 02:30:37 +0000 (21:30 -0500)
Now we must provide the IP destination address, and a reference has
to be dropped when we're done with the entry.

Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/infiniband/hw/cxgb4/cm.c

index 0668bb3..0cf6155 100644 (file)
@@ -1562,11 +1562,11 @@ static int import_ep(struct c4iw_ep *ep, __be32 peer_ip, struct dst_entry *dst,
        struct neighbour *n;
        int err, step;
 
-       rcu_read_lock();
-       n = dst_get_neighbour_noref(dst);
-       err = -ENODEV;
+       n = dst_neigh_lookup(dst, &peer_ip);
        if (!n)
-               goto out;
+               return -ENODEV;
+
+       rcu_read_lock();
        err = -ENOMEM;
        if (n->dev->flags & IFF_LOOPBACK) {
                struct net_device *pdev;
@@ -1614,6 +1614,8 @@ static int import_ep(struct c4iw_ep *ep, __be32 peer_ip, struct dst_entry *dst,
 out:
        rcu_read_unlock();
 
+       neigh_release(n);
+
        return err;
 }