Lines Matching refs:cma_dev
201 struct cma_device *cma_dev; member
339 struct cma_device *cma_dev) in cma_attach_to_dev() argument
341 atomic_inc(&cma_dev->refcount); in cma_attach_to_dev()
342 id_priv->cma_dev = cma_dev; in cma_attach_to_dev()
343 id_priv->id.device = cma_dev->device; in cma_attach_to_dev()
345 rdma_node_get_transport(cma_dev->device->node_type); in cma_attach_to_dev()
346 list_add_tail(&id_priv->list, &cma_dev->id_list); in cma_attach_to_dev()
349 static inline void cma_deref_dev(struct cma_device *cma_dev) in cma_deref_dev() argument
351 if (atomic_dec_and_test(&cma_dev->refcount)) in cma_deref_dev()
352 complete(&cma_dev->comp); in cma_deref_dev()
367 cma_deref_dev(id_priv->cma_dev); in cma_release_dev()
368 id_priv->cma_dev = NULL; in cma_release_dev()
471 struct cma_device *cma_dev; in cma_acquire_dev() local
488 cma_dev = listen_id_priv->cma_dev; in cma_acquire_dev()
490 gidp = rdma_protocol_roce(cma_dev->device, port) ? in cma_acquire_dev()
493 ret = cma_validate_port(cma_dev->device, port, gidp, in cma_acquire_dev()
502 list_for_each_entry(cma_dev, &dev_list, list) { in cma_acquire_dev()
503 for (port = 1; port <= cma_dev->device->phys_port_cnt; ++port) { in cma_acquire_dev()
505 listen_id_priv->cma_dev == cma_dev && in cma_acquire_dev()
509 gidp = rdma_protocol_roce(cma_dev->device, port) ? in cma_acquire_dev()
512 ret = cma_validate_port(cma_dev->device, port, gidp, in cma_acquire_dev()
524 cma_attach_to_dev(id_priv, cma_dev); in cma_acquire_dev()
535 struct cma_device *cma_dev, *cur_dev; in cma_resolve_ib_dev() local
542 cma_dev = NULL; in cma_resolve_ib_dev()
559 cma_dev = cur_dev; in cma_resolve_ib_dev()
565 if (!cma_dev && (gid.global.subnet_prefix == in cma_resolve_ib_dev()
567 cma_dev = cur_dev; in cma_resolve_ib_dev()
575 if (!cma_dev) in cma_resolve_ib_dev()
579 cma_attach_to_dev(id_priv, cma_dev); in cma_resolve_ib_dev()
750 BUG_ON(id_priv->cma_dev->device != id_priv->id.device); in cma_modify_qp_rtr()
1403 if (cma_any_addr(cma_src_addr(id_priv)) && !id_priv->cma_dev) in cma_cancel_operation()
1436 if (rdma_cap_ib_mcast(id_priv->cma_dev->device, in cma_leave_mc_groups()
1461 if (id_priv->cma_dev) { in rdma_destroy_id()
2033 struct cma_device *cma_dev) in cma_listen_on_dev() argument
2040 if (cma_family(id_priv) == AF_IB && !rdma_cap_ib_cm(cma_dev->device, 1)) in cma_listen_on_dev()
2054 cma_attach_to_dev(dev_id_priv, cma_dev); in cma_listen_on_dev()
2063 "listening on device %s\n", ret, cma_dev->device->name); in cma_listen_on_dev()
2068 struct cma_device *cma_dev; in cma_listen_on_all() local
2072 list_for_each_entry(cma_dev, &dev_list, list) in cma_listen_on_all()
2073 cma_listen_on_dev(id_priv, cma_dev); in cma_listen_on_all()
2421 struct cma_device *cma_dev, *cur_dev; in cma_bind_loopback() local
2428 cma_dev = NULL; in cma_bind_loopback()
2435 if (!cma_dev) in cma_bind_loopback()
2436 cma_dev = cur_dev; in cma_bind_loopback()
2441 cma_dev = cur_dev; in cma_bind_loopback()
2447 if (!cma_dev) { in cma_bind_loopback()
2455 ret = ib_get_cached_gid(cma_dev->device, p, 0, &gid, NULL); in cma_bind_loopback()
2459 ret = ib_get_cached_pkey(cma_dev->device, p, 0, &pkey); in cma_bind_loopback()
2464 (rdma_protocol_ib(cma_dev->device, p)) ? in cma_bind_loopback()
2470 cma_attach_to_dev(id_priv, cma_dev); in cma_bind_loopback()
2490 if (!status && !id_priv->cma_dev) in addr_handler()
2524 if (!id_priv->cma_dev) { in cma_resolve_loopback()
2554 if (!id_priv->cma_dev) { in cma_resolve_ib_addr()
3015 if (id_priv->cma_dev) in rdma_bind_addr()
3788 BUG_ON(id_priv->cma_dev->device != id->device); in rdma_leave_multicast()
3833 struct cma_device *cma_dev; in cma_netdev_callback() local
3844 list_for_each_entry(cma_dev, &dev_list, list) in cma_netdev_callback()
3845 list_for_each_entry(id_priv, &cma_dev->id_list, list) { in cma_netdev_callback()
3862 struct cma_device *cma_dev; in cma_add_one() local
3865 cma_dev = kmalloc(sizeof *cma_dev, GFP_KERNEL); in cma_add_one()
3866 if (!cma_dev) in cma_add_one()
3869 cma_dev->device = device; in cma_add_one()
3871 init_completion(&cma_dev->comp); in cma_add_one()
3872 atomic_set(&cma_dev->refcount, 1); in cma_add_one()
3873 INIT_LIST_HEAD(&cma_dev->id_list); in cma_add_one()
3874 ib_set_client_data(device, &cma_client, cma_dev); in cma_add_one()
3877 list_add_tail(&cma_dev->list, &dev_list); in cma_add_one()
3879 cma_listen_on_dev(id_priv, cma_dev); in cma_add_one()
3909 static void cma_process_remove(struct cma_device *cma_dev) in cma_process_remove() argument
3915 while (!list_empty(&cma_dev->id_list)) { in cma_process_remove()
3916 id_priv = list_entry(cma_dev->id_list.next, in cma_process_remove()
3933 cma_deref_dev(cma_dev); in cma_process_remove()
3934 wait_for_completion(&cma_dev->comp); in cma_process_remove()
3939 struct cma_device *cma_dev = client_data; in cma_remove_one() local
3941 if (!cma_dev) in cma_remove_one()
3945 list_del(&cma_dev->list); in cma_remove_one()
3948 cma_process_remove(cma_dev); in cma_remove_one()
3949 kfree(cma_dev); in cma_remove_one()
3958 struct cma_device *cma_dev; in cma_get_id_stats() local
3967 list_for_each_entry(cma_dev, &dev_list, list) { in cma_get_id_stats()
3974 list_for_each_entry(id_priv, &cma_dev->id_list, list) { in cma_get_id_stats()