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 if (cYAML_create_number(lndparams, "ntx",
66 lnd_cfg->lnd_ntx) == NULL)
67 return LUSTRE_CFG_RC_OUT_OF_MEM;
69 if (cYAML_create_number(lndparams, "conns_per_peer",
70 lnd_cfg->lnd_conns_per_peer) == NULL)
71 return LUSTRE_CFG_RC_OUT_OF_MEM;
73 return LUSTRE_CFG_RC_NO_ERR;
77 lustre_net_show_tunables(struct cYAML *tunables,
78 struct lnet_ioctl_config_lnd_cmn_tunables *cmn)
82 if (cYAML_create_number(tunables, "peer_timeout",
83 cmn->lct_peer_timeout)
87 if (cYAML_create_number(tunables, "peer_credits",
88 cmn->lct_peer_tx_credits)
92 if (cYAML_create_number(tunables,
93 "peer_buffer_credits",
94 cmn->lct_peer_rtr_credits)
98 if (cYAML_create_number(tunables, "credits",
99 cmn->lct_max_tx_credits)
103 return LUSTRE_CFG_RC_NO_ERR;
106 return LUSTRE_CFG_RC_OUT_OF_MEM;
110 lustre_ni_show_tunables(struct cYAML *lnd_tunables,
112 struct lnet_lnd_tunables *lnd)
114 int rc = LUSTRE_CFG_RC_NO_ERR;
116 if (net_type == O2IBLND)
117 rc = lustre_o2iblnd_show_tun(lnd_tunables,
118 &lnd->lnd_tun_u.lnd_o2ib);
124 yaml_extract_o2ib_tun(struct cYAML *tree,
125 struct lnet_ioctl_config_o2iblnd_tunables *lnd_cfg)
127 struct cYAML *map_on_demand = NULL, *concurrent_sends = NULL;
128 struct cYAML *fmr_pool_size = NULL, *fmr_cache = NULL;
129 struct cYAML *fmr_flush_trigger = NULL, *lndparams = NULL;
130 struct cYAML *conns_per_peer = NULL, *ntx = NULL;
132 lndparams = cYAML_get_object_item(tree, "lnd tunables");
136 map_on_demand = cYAML_get_object_item(lndparams, "map_on_demand");
137 lnd_cfg->lnd_map_on_demand =
138 (map_on_demand) ? map_on_demand->cy_valueint : 0;
140 concurrent_sends = cYAML_get_object_item(lndparams, "concurrent_sends");
141 lnd_cfg->lnd_concurrent_sends =
142 (concurrent_sends) ? concurrent_sends->cy_valueint : 0;
144 fmr_pool_size = cYAML_get_object_item(lndparams, "fmr_pool_size");
145 lnd_cfg->lnd_fmr_pool_size =
146 (fmr_pool_size) ? fmr_pool_size->cy_valueint : 0;
148 fmr_flush_trigger = cYAML_get_object_item(lndparams,
149 "fmr_flush_trigger");
150 lnd_cfg->lnd_fmr_flush_trigger =
151 (fmr_flush_trigger) ? fmr_flush_trigger->cy_valueint : 0;
153 fmr_cache = cYAML_get_object_item(lndparams, "fmr_cache");
154 lnd_cfg->lnd_fmr_cache =
155 (fmr_cache) ? fmr_cache->cy_valueint : 0;
157 ntx = cYAML_get_object_item(lndparams, "ntx");
158 lnd_cfg->lnd_ntx = (ntx) ? ntx->cy_valueint : 0;
160 conns_per_peer = cYAML_get_object_item(lndparams, "conns_per_peer");
161 lnd_cfg->lnd_conns_per_peer =
162 (conns_per_peer) ? conns_per_peer->cy_valueint : 1;
167 lustre_yaml_extract_lnd_tunables(struct cYAML *tree,
169 struct lnet_lnd_tunables *tun)
171 if (net_type == O2IBLND)
172 yaml_extract_o2ib_tun(tree,
173 &tun->lnd_tun_u.lnd_o2ib);