RDMA/cma: Optimize cma_bind_loopback() to check for empty list
authorKrishna Kumar <krkumar2@in.ibm.com>
Mon, 16 Oct 2006 04:39:01 +0000 (10:09 +0530)
committerRoland Dreier <rolandd@cisco.com>
Wed, 29 Nov 2006 23:33:04 +0000 (15:33 -0800)
Optimize to test for an empty list first.  This ends up simplifying
the code too.

Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Acked-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/core/cma.c

index 845090b0859c53b81ff06506fe987320a243bcc4..4975d8154a7842fa20731e56163a904f02678eef 100644 (file)
@@ -1481,19 +1481,18 @@ static int cma_bind_loopback(struct rdma_id_private *id_priv)
        u8 p;
 
        mutex_lock(&lock);
+       if (list_empty(&dev_list)) {
+               ret = -ENODEV;
+               goto out;
+       }
        list_for_each_entry(cma_dev, &dev_list, list)
                for (p = 1; p <= cma_dev->device->phys_port_cnt; ++p)
-                       if (!ib_query_port (cma_dev->device, p, &port_attr) &&
+                       if (!ib_query_port(cma_dev->device, p, &port_attr) &&
                            port_attr.state == IB_PORT_ACTIVE)
                                goto port_found;
 
-       if (!list_empty(&dev_list)) {
-               p = 1;
-               cma_dev = list_entry(dev_list.next, struct cma_device, list);
-       } else {
-               ret = -ENODEV;
-               goto out;
-       }
+       p = 1;
+       cma_dev = list_entry(dev_list.next, struct cma_device, list);
 
 port_found:
        ret = ib_get_cached_gid(cma_dev->device, p, 0, &gid);