1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2 * vim:expandtab:shiftwidth=8:tabstop=8:
4 * Copyright (c) 2003 Los Alamos National Laboratory (LANL)
5 * Copyright (C) 2005 Cluster File Systems, Inc. All rights reserved.
7 * This file is part of Lustre, http://www.lustre.org/
9 * Lustre is free software; you can redistribute it and/or
10 * modify it under the terms of version 2 of the GNU General Public
11 * License as published by the Free Software Foundation.
13 * Lustre is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with Lustre; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
27 CFS_MODULE_PARM(port, "i", int, 0444,
28 "GM port to use for communications");
31 CFS_MODULE_PARM(ntx, "i", int, 0444,
34 static int credits = 128;
35 CFS_MODULE_PARM(credits, "i", int, 0444,
36 "# concurrent sends");
38 static int peer_credits = 8;
39 CFS_MODULE_PARM(peer_credits, "i", int, 0444,
40 "# concurrent sends per peer");
42 static int nlarge_tx_bufs = 32;
43 CFS_MODULE_PARM(nlarge_tx_bufs, "i", int, 0444,
44 "# large tx message buffers");
46 static int nrx_small = 128;
47 CFS_MODULE_PARM(nrx_small, "i", int, 0444,
48 "# small rx message buffers");
50 static int nrx_large = 64;
51 CFS_MODULE_PARM(nrx_large, "i", int, 0444,
52 "# large rx message buffers");
54 gmnal_tunables_t gmnal_tunables = {
57 .gm_credits = &credits,
58 .gm_peer_credits = &peer_credits,
59 .gm_nlarge_tx_bufs = &nlarge_tx_bufs,
60 .gm_nrx_small = &nrx_small,
61 .gm_nrx_large = &nrx_large,
64 #if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
65 static cfs_sysctl_table_t gmnal_ctl_table[] = {
70 .maxlen = sizeof (int),
72 .proc_handler = &proc_dointvec
78 .maxlen = sizeof (int),
80 .proc_handler = &proc_dointvec
84 .procname = "credits",
86 .maxlen = sizeof (int),
88 .proc_handler = &proc_dointvec
92 .procname = "peer_credits",
93 .data = &peer_credits,
94 .maxlen = sizeof (int),
96 .proc_handler = &proc_dointvec
100 .procname = "nlarge_tx_bufs",
101 .data = &nlarge_tx_bufs,
102 .maxlen = sizeof (int),
104 .proc_handler = &proc_dointvec
108 .procname = "nrx_small",
110 .maxlen = sizeof (int),
112 .proc_handler = &proc_dointvec
116 .procname = "nrx_large",
118 .maxlen = sizeof (int),
120 .proc_handler = &proc_dointvec
125 static cfs_sysctl_table_t gmnal_top_ctl_table[] = {
132 .child = gmnal_ctl_table
142 CDEBUG(D_TRACE, "This is the gmnal module initialisation routine\n");
144 #if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
145 gmnal_tunables.gm_sysctl =
146 cfs_register_sysctl_table(gmnal_top_ctl_table, 0);
148 if (gmnal_tunables.gm_sysctl == NULL)
149 CWARN("Can't setup /proc tunables\n");
151 CDEBUG(D_NET, "Calling gmnal_init\n");
152 status = gmnal_init();
154 CDEBUG(D_NET, "Portals GMNAL initialised ok\n");
156 CDEBUG(D_NET, "Portals GMNAL Failed to initialise\n");
160 CDEBUG(D_NET, "This is the end of the gmnal init routine");
169 #if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
170 if (gmnal_tunables.gm_sysctl != NULL)
171 cfs_unregister_sysctl_table(gmnal_tunables.gm_sysctl);
175 module_init(gmnal_load);
176 module_exit(gmnal_unload);
178 MODULE_AUTHOR("Cluster File Systems, Inc. <info@clusterfs.com>");
179 MODULE_DESCRIPTION("Kernel GM LND v1.01");
180 MODULE_LICENSE("GPL");