+int lnet_get_rtr_pool_cfg(int idx, struct lnet_ioctl_pool_cfg *pool_cfg)
+{
+ int i, rc = -ENOENT, lidx, j;
+
+ if (the_lnet.ln_rtrpools == NULL)
+ return rc;
+
+ for (i = 0; i < LNET_NRBPOOLS; i++) {
+ lnet_rtrbufpool_t *rbp;
+
+ lnet_net_lock(LNET_LOCK_EX);
+ lidx = idx;
+ cfs_percpt_for_each(rbp, j, the_lnet.ln_rtrpools) {
+ if (lidx-- == 0) {
+ rc = 0;
+ pool_cfg->pl_pools[i].pl_npages =
+ rbp[i].rbp_npages;
+ pool_cfg->pl_pools[i].pl_nbuffers =
+ rbp[i].rbp_nbuffers;
+ pool_cfg->pl_pools[i].pl_credits =
+ rbp[i].rbp_credits;
+ pool_cfg->pl_pools[i].pl_mincredits =
+ rbp[i].rbp_mincredits;
+ break;
+ }
+ }
+ lnet_net_unlock(LNET_LOCK_EX);
+ }
+
+ lnet_net_lock(LNET_LOCK_EX);
+ pool_cfg->pl_routing = the_lnet.ln_routing;
+ lnet_net_unlock(LNET_LOCK_EX);
+
+ return rc;
+}
+