1431{
1432 struct rdma_id_private *dev_id_priv;
1433 struct rdma_cm_id *id;
1434 int ret;
1435
1436 id = rdma_create_id(cma_listen_handler, id_priv, id_priv->id.ps);
1437 if (IS_ERR(id))
1438 return;
1439
1440 dev_id_priv = container_of(id, struct rdma_id_private, id);
1441
1442 dev_id_priv->state = CMA_ADDR_BOUND;
1443 memcpy(&id->route.addr.src_addr, &id_priv->id.route.addr.src_addr,
1444 ip_addr_size((struct sockaddr *) &id_priv->id.route.addr.src_addr));
1445
1446 cma_attach_to_dev(dev_id_priv, cma_dev);
1447 list_add_tail(&dev_id_priv->listen_list, &id_priv->listen_list);
1448 atomic_inc(&id_priv->refcount);
1449 dev_id_priv->internal_id = 1;
1450
1451 ret = rdma_listen(id, id_priv->backlog);
1452 if (ret)
1453 printk(KERN_WARNING "RDMA CMA: cma_listen_on_dev, error %d, "
1454 "listening on device %s\n", ret, cma_dev->device->name);
1455}
1456
1457static void cma_listen_on_all(struct rdma_id_private *id_priv)
1458{
1459 struct cma_device *cma_dev;
1460
1461 mutex_lock(&lock);
1462 list_add_tail(&id_priv->list, &listen_any_list);
1463 list_for_each_entry(cma_dev, &dev_list, list)
1464 cma_listen_on_dev(id_priv, cma_dev);
1465 mutex_unlock(&lock);
1466}
1467
1468static int cma_bind_any(struct rdma_cm_id *id, sa_family_t af)
1469{
1470 struct sockaddr_in addr_in;
1471