1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
6 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 only,
10 * as published by the Free Software Foundation.
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License version 2 for more details (a copy is included
16 * in the LICENSE file that accompanied this code).
18 * You should have received a copy of the GNU General Public License
19 * version 2 along with this program; If not, see [sun.com URL with a
22 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
23 * CA 95054 USA or visit www.sun.com if you need additional information or
29 * Copyright 2008 Sun Microsystems, Inc. All rights reserved
30 * Use is subject to license terms.
33 * This file is part of Lustre, http://www.lustre.org/
34 * Lustre is a trademark of Sun Microsystems, Inc.
36 * lnet/klnds/ptllnd/ptllnd_modparams.c
38 * Author: PJ Kirner <pjkirner@clusterfs.com>
45 CFS_MODULE_PARM(ntx, "i", int, 0444,
46 "# of TX descriptors");
48 static int max_nodes = 1152;
49 CFS_MODULE_PARM(max_nodes, "i", int, 0444,
50 "maximum number of peer nodes");
52 static int max_procs_per_node = 2;
53 CFS_MODULE_PARM(max_procs_per_node, "i", int, 0444,
54 "maximum number of processes per peer node to cache");
56 static int checksum = 0;
57 CFS_MODULE_PARM(checksum, "i", int, 0644,
58 "set non-zero to enable message (not RDMA) checksums");
60 static int timeout = 50;
61 CFS_MODULE_PARM(timeout, "i", int, 0644,
64 static int portal = PTLLND_PORTAL; /* <lnet/ptllnd_wire.h> */
65 CFS_MODULE_PARM(portal, "i", int, 0444,
68 static int pid = PTLLND_PID; /* <lnet/ptllnd_wire.h> */
69 CFS_MODULE_PARM(pid, "i", int, 0444,
72 static int rxb_npages = 1;
73 CFS_MODULE_PARM(rxb_npages, "i", int, 0444,
74 "# of pages per rx buffer");
76 static int rxb_nspare = 8;
77 CFS_MODULE_PARM(rxb_nspare, "i", int, 0444,
78 "# of spare rx buffers");
80 static int credits = 128;
81 CFS_MODULE_PARM(credits, "i", int, 0444,
84 static int peercredits = PTLLND_PEERCREDITS; /* <lnet/ptllnd_wire.h> */
85 CFS_MODULE_PARM(peercredits, "i", int, 0444,
86 "concurrent sends to 1 peer");
88 static int max_msg_size = PTLLND_MAX_KLND_MSG_SIZE; /* <lnet/ptllnd_wire.h> */
89 CFS_MODULE_PARM(max_msg_size, "i", int, 0444,
90 "max size of immediate message");
92 static int peer_hash_table_size = 101;
93 CFS_MODULE_PARM(peer_hash_table_size, "i", int, 0444,
94 "# of slots in the peer hash table");
96 static int reschedule_loops = 100;
97 CFS_MODULE_PARM(reschedule_loops, "i", int, 0644,
98 "# of loops before scheduler does cond_resched()");
100 static int ack_puts = 0;
101 CFS_MODULE_PARM(ack_puts, "i", int, 0644,
102 "get portals to ack all PUTs");
105 static int ptltrace_on_timeout = 0;
106 CFS_MODULE_PARM(ptltrace_on_timeout, "i", int, 0644,
107 "dump ptltrace on timeout");
109 static char *ptltrace_basename = "/tmp/lnet-ptltrace";
110 CFS_MODULE_PARM(ptltrace_basename, "s", charp, 0644,
111 "ptltrace dump file basename");
114 static int simulation_bitmap = 0;
115 CFS_MODULE_PARM(simulation_bitmap, "i", int, 0444,
116 "simulation bitmap");
120 kptl_tunables_t kptllnd_tunables = {
122 .kptl_max_nodes = &max_nodes,
123 .kptl_max_procs_per_node = &max_procs_per_node,
124 .kptl_checksum = &checksum,
125 .kptl_portal = &portal,
127 .kptl_timeout = &timeout,
128 .kptl_rxb_npages = &rxb_npages,
129 .kptl_rxb_nspare = &rxb_nspare,
130 .kptl_credits = &credits,
131 .kptl_peercredits = &peercredits,
132 .kptl_max_msg_size = &max_msg_size,
133 .kptl_peer_hash_table_size = &peer_hash_table_size,
134 .kptl_reschedule_loops = &reschedule_loops,
135 .kptl_ack_puts = &ack_puts,
137 .kptl_ptltrace_on_timeout = &ptltrace_on_timeout,
138 .kptl_ptltrace_basename = &ptltrace_basename,
141 .kptl_simulation_bitmap = &simulation_bitmap,
146 #if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
148 static char ptltrace_basename_space[1024];
151 kptllnd_init_strtunable(char **str_param, char *space, int size)
153 strncpy(space, *str_param, size);
159 static cfs_sysctl_table_t kptllnd_ctl_table[] = {
164 .maxlen = sizeof(int),
166 .proc_handler = &proc_dointvec
170 .procname = "max_nodes",
172 .maxlen = sizeof(int),
174 .proc_handler = &proc_dointvec
178 .procname = "max_procs_per_node",
179 .data = &max_procs_per_node,
180 .maxlen = sizeof(int),
182 .proc_handler = &proc_dointvec
186 .procname = "checksum",
188 .maxlen = sizeof(int),
190 .proc_handler = &proc_dointvec
194 .procname = "timeout",
196 .maxlen = sizeof(int),
198 .proc_handler = &proc_dointvec
202 .procname = "portal",
204 .maxlen = sizeof(int),
206 .proc_handler = &proc_dointvec
212 .maxlen = sizeof(int),
214 .proc_handler = &proc_dointvec
218 .procname = "rxb_npages",
220 .maxlen = sizeof(int),
222 .proc_handler = &proc_dointvec
226 .procname = "credits",
228 .maxlen = sizeof(int),
230 .proc_handler = &proc_dointvec
234 .procname = "peercredits",
235 .data = &peercredits,
236 .maxlen = sizeof(int),
238 .proc_handler = &proc_dointvec
242 .procname = "max_msg_size",
243 .data = &max_msg_size,
244 .maxlen = sizeof(int),
246 .proc_handler = &proc_dointvec
250 .procname = "peer_hash_table_size",
251 .data = &peer_hash_table_size,
252 .maxlen = sizeof(int),
254 .proc_handler = &proc_dointvec
258 .procname = "reschedule_loops",
259 .data = &reschedule_loops,
260 .maxlen = sizeof(int),
262 .proc_handler = &proc_dointvec
266 .procname = "ack_puts",
268 .maxlen = sizeof(int),
270 .proc_handler = &proc_dointvec
275 .procname = "ptltrace_on_timeout",
276 .data = &ptltrace_on_timeout,
277 .maxlen = sizeof(int),
279 .proc_handler = &proc_dointvec
283 .procname = "ptltrace_basename",
284 .data = ptltrace_basename_space,
285 .maxlen = sizeof(ptltrace_basename_space),
287 .proc_handler = &proc_dostring,
288 .strategy = &sysctl_string
294 .procname = "simulation_bitmap",
295 .data = &simulation_bitmap,
296 .maxlen = sizeof(int),
298 .proc_handler = &proc_dointvec
305 static cfs_sysctl_table_t kptllnd_top_ctl_table[] = {
308 .procname = "ptllnd",
312 .child = kptllnd_ctl_table
318 kptllnd_tunables_init ()
321 kptllnd_init_strtunable(&ptltrace_basename,
322 ptltrace_basename_space,
323 sizeof(ptltrace_basename_space));
325 kptllnd_tunables.kptl_sysctl =
326 cfs_register_sysctl_table(kptllnd_top_ctl_table, 0);
328 if (kptllnd_tunables.kptl_sysctl == NULL)
329 CWARN("Can't setup /proc tunables\n");
335 kptllnd_tunables_fini ()
337 if (kptllnd_tunables.kptl_sysctl != NULL)
338 cfs_unregister_sysctl_table(kptllnd_tunables.kptl_sysctl);
344 kptllnd_tunables_init ()
350 kptllnd_tunables_fini ()