diff options
Diffstat (limited to 'drivers/infiniband/core/cma.c')
-rw-r--r-- | drivers/infiniband/core/cma.c | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index 81bded0d37d1..e15546ae4d0f 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c | |||
@@ -4616,85 +4616,6 @@ static void cma_remove_one(struct ib_device *device, void *client_data) | |||
4616 | kfree(cma_dev); | 4616 | kfree(cma_dev); |
4617 | } | 4617 | } |
4618 | 4618 | ||
4619 | static int cma_get_id_stats(struct sk_buff *skb, struct netlink_callback *cb) | ||
4620 | { | ||
4621 | struct nlmsghdr *nlh; | ||
4622 | struct rdma_cm_id_stats *id_stats; | ||
4623 | struct rdma_id_private *id_priv; | ||
4624 | struct rdma_cm_id *id = NULL; | ||
4625 | struct cma_device *cma_dev; | ||
4626 | int i_dev = 0, i_id = 0; | ||
4627 | |||
4628 | /* | ||
4629 | * We export all of the IDs as a sequence of messages. Each | ||
4630 | * ID gets its own netlink message. | ||
4631 | */ | ||
4632 | mutex_lock(&lock); | ||
4633 | |||
4634 | list_for_each_entry(cma_dev, &dev_list, list) { | ||
4635 | if (i_dev < cb->args[0]) { | ||
4636 | i_dev++; | ||
4637 | continue; | ||
4638 | } | ||
4639 | |||
4640 | i_id = 0; | ||
4641 | list_for_each_entry(id_priv, &cma_dev->id_list, list) { | ||
4642 | if (i_id < cb->args[1]) { | ||
4643 | i_id++; | ||
4644 | continue; | ||
4645 | } | ||
4646 | |||
4647 | id_stats = ibnl_put_msg(skb, &nlh, cb->nlh->nlmsg_seq, | ||
4648 | sizeof *id_stats, RDMA_NL_RDMA_CM, | ||
4649 | RDMA_NL_RDMA_CM_ID_STATS, | ||
4650 | NLM_F_MULTI); | ||
4651 | if (!id_stats) | ||
4652 | goto out; | ||
4653 | |||
4654 | memset(id_stats, 0, sizeof *id_stats); | ||
4655 | id = &id_priv->id; | ||
4656 | id_stats->node_type = id->route.addr.dev_addr.dev_type; | ||
4657 | id_stats->port_num = id->port_num; | ||
4658 | id_stats->bound_dev_if = | ||
4659 | id->route.addr.dev_addr.bound_dev_if; | ||
4660 | |||
4661 | if (ibnl_put_attr(skb, nlh, | ||
4662 | rdma_addr_size(cma_src_addr(id_priv)), | ||
4663 | cma_src_addr(id_priv), | ||
4664 | RDMA_NL_RDMA_CM_ATTR_SRC_ADDR)) | ||
4665 | goto out; | ||
4666 | if (ibnl_put_attr(skb, nlh, | ||
4667 | rdma_addr_size(cma_dst_addr(id_priv)), | ||
4668 | cma_dst_addr(id_priv), | ||
4669 | RDMA_NL_RDMA_CM_ATTR_DST_ADDR)) | ||
4670 | goto out; | ||
4671 | |||
4672 | id_stats->pid = task_pid_vnr(id_priv->res.task); | ||
4673 | id_stats->port_space = id->ps; | ||
4674 | id_stats->cm_state = id_priv->state; | ||
4675 | id_stats->qp_num = id_priv->qp_num; | ||
4676 | id_stats->qp_type = id->qp_type; | ||
4677 | |||
4678 | i_id++; | ||
4679 | nlmsg_end(skb, nlh); | ||
4680 | } | ||
4681 | |||
4682 | cb->args[1] = 0; | ||
4683 | i_dev++; | ||
4684 | } | ||
4685 | |||
4686 | out: | ||
4687 | mutex_unlock(&lock); | ||
4688 | cb->args[0] = i_dev; | ||
4689 | cb->args[1] = i_id; | ||
4690 | |||
4691 | return skb->len; | ||
4692 | } | ||
4693 | |||
4694 | static const struct rdma_nl_cbs cma_cb_table[RDMA_NL_RDMA_CM_NUM_OPS] = { | ||
4695 | [RDMA_NL_RDMA_CM_ID_STATS] = { .dump = cma_get_id_stats}, | ||
4696 | }; | ||
4697 | |||
4698 | static int cma_init_net(struct net *net) | 4619 | static int cma_init_net(struct net *net) |
4699 | { | 4620 | { |
4700 | struct cma_pernet *pernet = cma_pernet(net); | 4621 | struct cma_pernet *pernet = cma_pernet(net); |
@@ -4743,7 +4664,6 @@ static int __init cma_init(void) | |||
4743 | if (ret) | 4664 | if (ret) |
4744 | goto err; | 4665 | goto err; |
4745 | 4666 | ||
4746 | rdma_nl_register(RDMA_NL_RDMA_CM, cma_cb_table); | ||
4747 | cma_configfs_init(); | 4667 | cma_configfs_init(); |
4748 | 4668 | ||
4749 | return 0; | 4669 | return 0; |
@@ -4759,7 +4679,6 @@ err_wq: | |||
4759 | static void __exit cma_cleanup(void) | 4679 | static void __exit cma_cleanup(void) |
4760 | { | 4680 | { |
4761 | cma_configfs_exit(); | 4681 | cma_configfs_exit(); |
4762 | rdma_nl_unregister(RDMA_NL_RDMA_CM); | ||
4763 | ib_unregister_client(&cma_client); | 4682 | ib_unregister_client(&cma_client); |
4764 | unregister_netdevice_notifier(&cma_nb); | 4683 | unregister_netdevice_notifier(&cma_nb); |
4765 | ib_sa_unregister_client(&sa_client); | 4684 | ib_sa_unregister_client(&sa_client); |
@@ -4767,7 +4686,5 @@ static void __exit cma_cleanup(void) | |||
4767 | destroy_workqueue(cma_wq); | 4686 | destroy_workqueue(cma_wq); |
4768 | } | 4687 | } |
4769 | 4688 | ||
4770 | MODULE_ALIAS_RDMA_NETLINK(RDMA_NL_RDMA_CM, 1); | ||
4771 | |||
4772 | module_init(cma_init); | 4689 | module_init(cma_init); |
4773 | module_exit(cma_cleanup); | 4690 | module_exit(cma_cleanup); |