4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License as
8 * published by the Free Software Foundation; either version 2.1 of the
9 * License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
21 * Copyright (c) 2015, James Simmons
23 * Copyright (c) 2016, Intel Corporation.
26 * James Simmons <jsimmons@infradead.org>
33 #include <libcfs/util/ioctl.h>
34 #include "liblnetconfig.h"
38 lustre_o2iblnd_show_tun(struct cYAML *lndparams,
39 struct lnet_ioctl_config_o2iblnd_tunables *lnd_cfg)
41 if (cYAML_create_number(lndparams, "peercredits_hiw",
42 lnd_cfg->lnd_peercredits_hiw) == NULL)
43 return LUSTRE_CFG_RC_OUT_OF_MEM;
45 if (cYAML_create_number(lndparams, "map_on_demand",
46 lnd_cfg->lnd_map_on_demand) == NULL)
47 return LUSTRE_CFG_RC_OUT_OF_MEM;
49 if (cYAML_create_number(lndparams, "concurrent_sends",
50 lnd_cfg->lnd_concurrent_sends) == NULL)
51 return LUSTRE_CFG_RC_OUT_OF_MEM;
53 if (cYAML_create_number(lndparams, "fmr_pool_size",
54 lnd_cfg->lnd_fmr_pool_size) == NULL)
55 return LUSTRE_CFG_RC_OUT_OF_MEM;
57 if (cYAML_create_number(lndparams, "fmr_flush_trigger",
58 lnd_cfg->lnd_fmr_flush_trigger) == NULL)
59 return LUSTRE_CFG_RC_OUT_OF_MEM;
61 if (cYAML_create_number(lndparams, "fmr_cache",
62 lnd_cfg->lnd_fmr_cache) == NULL)
63 return LUSTRE_CFG_RC_OUT_OF_MEM;
65 return LUSTRE_CFG_RC_NO_ERR;
69 lustre_net_show_tunables(struct cYAML *tunables,
70 struct lnet_ioctl_config_lnd_cmn_tunables *cmn)
74 if (cYAML_create_number(tunables, "peer_timeout",
75 cmn->lct_peer_timeout)
79 if (cYAML_create_number(tunables, "peer_credits",
80 cmn->lct_peer_tx_credits)
84 if (cYAML_create_number(tunables,
85 "peer_buffer_credits",
86 cmn->lct_peer_rtr_credits)
90 if (cYAML_create_number(tunables, "credits",
91 cmn->lct_max_tx_credits)
95 return LUSTRE_CFG_RC_NO_ERR;
98 return LUSTRE_CFG_RC_OUT_OF_MEM;
102 lustre_ni_show_tunables(struct cYAML *lnd_tunables,
104 struct lnet_lnd_tunables *lnd)
106 int rc = LUSTRE_CFG_RC_NO_ERR;
108 if (net_type == O2IBLND)
109 rc = lustre_o2iblnd_show_tun(lnd_tunables,
110 &lnd->lnd_tun_u.lnd_o2ib);
116 yaml_extract_o2ib_tun(struct cYAML *tree,
117 struct lnet_ioctl_config_o2iblnd_tunables *lnd_cfg)
119 struct cYAML *map_on_demand = NULL, *concurrent_sends = NULL;
120 struct cYAML *fmr_pool_size = NULL, *fmr_cache = NULL;
121 struct cYAML *fmr_flush_trigger = NULL, *lndparams = NULL;
123 lndparams = cYAML_get_object_item(tree, "lnd tunables");
127 map_on_demand = cYAML_get_object_item(lndparams, "map_on_demand");
128 lnd_cfg->lnd_map_on_demand =
129 (map_on_demand) ? map_on_demand->cy_valueint : 0;
131 concurrent_sends = cYAML_get_object_item(lndparams, "concurrent_sends");
132 lnd_cfg->lnd_concurrent_sends =
133 (concurrent_sends) ? concurrent_sends->cy_valueint : 0;
135 fmr_pool_size = cYAML_get_object_item(lndparams, "fmr_pool_size");
136 lnd_cfg->lnd_fmr_pool_size =
137 (fmr_pool_size) ? fmr_pool_size->cy_valueint : 0;
139 fmr_flush_trigger = cYAML_get_object_item(lndparams,
140 "fmr_flush_trigger");
141 lnd_cfg->lnd_fmr_flush_trigger =
142 (fmr_flush_trigger) ? fmr_flush_trigger->cy_valueint : 0;
144 fmr_cache = cYAML_get_object_item(lndparams, "fmr_cache");
145 lnd_cfg->lnd_fmr_cache =
146 (fmr_cache) ? fmr_cache->cy_valueint : 0;
151 lustre_yaml_extract_lnd_tunables(struct cYAML *tree,
153 struct lnet_lnd_tunables *tun)
155 if (net_type == O2IBLND)
156 yaml_extract_o2ib_tun(tree,
157 &tun->lnd_tun_u.lnd_o2ib);