Lines Matching refs:rdi
50 struct rvt_dev_info *rdi; in rvt_alloc_device() local
52 rdi = container_of(_ib_alloc_device(size), struct rvt_dev_info, ibdev); in rvt_alloc_device()
53 if (!rdi) in rvt_alloc_device()
54 return rdi; in rvt_alloc_device()
56 rdi->ports = kcalloc(nports, sizeof(*rdi->ports), GFP_KERNEL); in rvt_alloc_device()
57 if (!rdi->ports) in rvt_alloc_device()
58 ib_dealloc_device(&rdi->ibdev); in rvt_alloc_device()
60 return rdi; in rvt_alloc_device()
70 void rvt_dealloc_device(struct rvt_dev_info *rdi) in rvt_dealloc_device() argument
72 kfree(rdi->ports); in rvt_dealloc_device()
73 ib_dealloc_device(&rdi->ibdev); in rvt_dealloc_device()
81 struct rvt_dev_info *rdi = ib_to_rvt(ibdev); in rvt_query_device() local
88 *props = rdi->dparms.props; in rvt_query_device()
94 struct rvt_dev_info *rdi = ib_to_rvt(ibdev); in rvt_get_numa_node() local
96 return rdi->dparms.node; in rvt_get_numa_node()
122 struct rvt_dev_info *rdi = ib_to_rvt(ibdev); in rvt_query_port() local
126 rvp = rdi->ports[port_index]; in rvt_query_port()
132 props->pkey_tbl_len = rvt_get_npkeys(rdi); in rvt_query_port()
139 return rdi->driver_f.query_port_state(rdi, port_num, props); in rvt_query_port()
154 struct rvt_dev_info *rdi = ib_to_rvt(ibdev); in rvt_modify_port() local
159 rvp = rdi->ports[port_index]; in rvt_modify_port()
169 rdi->driver_f.cap_mask_chg(rdi, port_num); in rvt_modify_port()
171 ret = rdi->driver_f.shut_down_port(rdi, port_num); in rvt_modify_port()
196 struct rvt_dev_info *rdi = ib_to_rvt(ibdev); in rvt_query_pkey() local
201 if (index >= rvt_get_npkeys(rdi)) in rvt_query_pkey()
204 *pkey = rvt_get_pkey(rdi, port_index, index); in rvt_query_pkey()
220 struct rvt_dev_info *rdi; in rvt_query_gid() local
231 rdi = ib_to_rvt(ibdev); in rvt_query_gid()
232 rvp = rdi->ports[port_index]; in rvt_query_gid()
236 return rdi->driver_f.get_guid_be(rdi, rvp, guid_index, in rvt_query_gid()
262 struct rvt_dev_info *rdi = ib_to_rvt(ibdev); in rvt_get_port_immutable() local
266 immutable->core_cap_flags = rdi->dparms.core_cap_flags; in rvt_get_port_immutable()
274 immutable->max_mad_size = rdi->dparms.max_mad_size; in rvt_get_port_immutable()
380 static noinline int check_support(struct rvt_dev_info *rdi, int verb) in check_support() argument
388 if ((!rdi->ibdev.ops.port_groups) || in check_support()
389 (!rdi->driver_f.get_pci_dev)) in check_support()
398 if (!rdi->ibdev.ops.modify_device) in check_support()
403 if (!rdi->ibdev.ops.query_port) in check_support()
404 if (!rdi->driver_f.query_port_state) in check_support()
409 if (!rdi->ibdev.ops.modify_port) in check_support()
410 if (!rdi->driver_f.cap_mask_chg || in check_support()
411 !rdi->driver_f.shut_down_port) in check_support()
416 if (!rdi->ibdev.ops.query_gid) in check_support()
417 if (!rdi->driver_f.get_guid_be) in check_support()
422 if (!rdi->ibdev.ops.create_qp) in check_support()
423 if (!rdi->driver_f.qp_priv_alloc || in check_support()
424 !rdi->driver_f.qp_priv_free || in check_support()
425 !rdi->driver_f.notify_qp_reset || in check_support()
426 !rdi->driver_f.flush_qp_waiters || in check_support()
427 !rdi->driver_f.stop_send_queue || in check_support()
428 !rdi->driver_f.quiesce_qp) in check_support()
433 if (!rdi->ibdev.ops.modify_qp) in check_support()
434 if (!rdi->driver_f.notify_qp_reset || in check_support()
435 !rdi->driver_f.schedule_send || in check_support()
436 !rdi->driver_f.get_pmtu_from_attr || in check_support()
437 !rdi->driver_f.flush_qp_waiters || in check_support()
438 !rdi->driver_f.stop_send_queue || in check_support()
439 !rdi->driver_f.quiesce_qp || in check_support()
440 !rdi->driver_f.notify_error_qp || in check_support()
441 !rdi->driver_f.mtu_from_qp || in check_support()
442 !rdi->driver_f.mtu_to_path_mtu) in check_support()
447 if (!rdi->ibdev.ops.destroy_qp) in check_support()
448 if (!rdi->driver_f.qp_priv_free || in check_support()
449 !rdi->driver_f.notify_qp_reset || in check_support()
450 !rdi->driver_f.flush_qp_waiters || in check_support()
451 !rdi->driver_f.stop_send_queue || in check_support()
452 !rdi->driver_f.quiesce_qp) in check_support()
457 if (!rdi->ibdev.ops.post_send) in check_support()
458 if (!rdi->driver_f.schedule_send || in check_support()
459 !rdi->driver_f.do_send || in check_support()
460 !rdi->post_parms) in check_support()
478 int rvt_register_device(struct rvt_dev_info *rdi) in rvt_register_device() argument
482 if (!rdi) in rvt_register_device()
490 if (check_support(rdi, i)) { in rvt_register_device()
495 ib_set_device_ops(&rdi->ibdev, &rvt_dev_ops); in rvt_register_device()
498 trace_rvt_dbg(rdi, "Driver attempting registration"); in rvt_register_device()
499 rvt_mmap_init(rdi); in rvt_register_device()
502 ret = rvt_driver_qp_init(rdi); in rvt_register_device()
509 spin_lock_init(&rdi->n_ahs_lock); in rvt_register_device()
510 rdi->n_ahs_allocated = 0; in rvt_register_device()
513 rvt_driver_srq_init(rdi); in rvt_register_device()
516 rvt_driver_mcast_init(rdi); in rvt_register_device()
519 ret = rvt_driver_mr_init(rdi); in rvt_register_device()
526 ret = rvt_wss_init(rdi); in rvt_register_device()
528 rvt_pr_err(rdi, "Error in WSS init.\n"); in rvt_register_device()
533 spin_lock_init(&rdi->n_cqs_lock); in rvt_register_device()
536 spin_lock_init(&rdi->n_pds_lock); in rvt_register_device()
537 rdi->n_pds_allocated = 0; in rvt_register_device()
545 rdi->ibdev.uverbs_cmd_mask |= in rvt_register_device()
551 rdi->ibdev.node_type = RDMA_NODE_IB_CA; in rvt_register_device()
552 if (!rdi->ibdev.num_comp_vectors) in rvt_register_device()
553 rdi->ibdev.num_comp_vectors = 1; in rvt_register_device()
556 ret = ib_register_device(&rdi->ibdev, dev_name(&rdi->ibdev.dev), NULL); in rvt_register_device()
558 rvt_pr_err(rdi, "Failed to register driver with ib core.\n"); in rvt_register_device()
562 rvt_create_mad_agents(rdi); in rvt_register_device()
564 rvt_pr_info(rdi, "Registration with rdmavt done.\n"); in rvt_register_device()
568 rvt_wss_exit(rdi); in rvt_register_device()
570 rvt_mr_exit(rdi); in rvt_register_device()
573 rvt_qp_exit(rdi); in rvt_register_device()
583 void rvt_unregister_device(struct rvt_dev_info *rdi) in rvt_unregister_device() argument
585 trace_rvt_dbg(rdi, "Driver is unregistering."); in rvt_unregister_device()
586 if (!rdi) in rvt_unregister_device()
589 rvt_free_mad_agents(rdi); in rvt_unregister_device()
591 ib_unregister_device(&rdi->ibdev); in rvt_unregister_device()
592 rvt_wss_exit(rdi); in rvt_unregister_device()
593 rvt_mr_exit(rdi); in rvt_unregister_device()
594 rvt_qp_exit(rdi); in rvt_unregister_device()
610 int rvt_init_port(struct rvt_dev_info *rdi, struct rvt_ibport *port, in rvt_init_port() argument
614 rdi->ports[port_index] = port; in rvt_init_port()
615 rdi->ports[port_index]->pkey_table = pkey_table; in rvt_init_port()