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)
6 * This file is part of Lustre, http://www.lustre.org/
8 * Lustre is free software; you can redistribute it and/or
9 * modify it under the terms of version 2 of the GNU General Public
10 * License as published by the Free Software Foundation.
12 * Lustre is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Lustre; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 ptl_handle_ni_t lgmnal_ni;
28 lgmnal_cmd(struct portal_ioctl_data *data, void *private)
30 lgmnal_data_t *nal_data = NULL;
34 gm_status_t gm_status;
37 LGMNAL_PRINT(LGMNAL_DEBUG_TRACE, ("lgmnal_cmd [d] private [%p]\n", data->ioc_nal_cmd, private));
38 nal_data = (lgmnal_data_t*)private;
39 LGMNAL_PRINT(LGMNAL_DEBUG_V, ("nal_data is [%p]\n", nal_data));
40 switch(data->ioc_nal_cmd) {
42 * just reuse already defined GET_NID. Should define LGMNAL version
44 case(LGMNAL_IOC_GET_GNID):
45 LGMNAL_PRINT(LGMNAL_DEBUG_V, ("lgmnal_cmd GETNID (Get GM Global Network Id\n"));
47 PORTAL_ALLOC(name, data->ioc_plen1);
48 copy_from_user(name, data->ioc_pbuf1, data->ioc_plen1);
50 LGMNAL_GM_LOCK(nal_data);
51 nid = gm_host_name_to_node_id(nal_data->gm_port, name);
52 LGMNAL_GM_UNLOCK(nal_data);
53 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Local node id is [%d]\n", nid));
54 LGMNAL_GM_LOCK(nal_data);
55 gm_status = gm_node_id_to_global_id(nal_data->gm_port, nid, &gnid);
56 LGMNAL_GM_UNLOCK(nal_data);
57 if (gm_status != GM_SUCCESS) {
58 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("gm_node_id_to_global_id failed\n", gm_status));
61 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Global node is is [%u][%x]\n", gnid, gnid));
62 copy_to_user(data->ioc_pbuf2, &gnid, data->ioc_plen2);
65 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("lgmnal_cmd UNKNOWN[%d]\n", data->ioc_nal_cmd));
73 int lgmnal_small_msg_size = 81920;
74 int lgmnal_debug_level = 1;
80 LGMNAL_PRINT(LGMNAL_DEBUG_TRACE, ("This is the lgmnal module initialisation routine\n"));
84 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Calling lgmnal_init\n"));
85 status = PtlNIInit(lgmnal_init, 32, 4, 0, &lgmnal_ni);
86 if (status == PTL_OK) {
87 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Portals LGMNAL initialised ok lgmnal_ni [%lx]\n", lgmnal_ni));
89 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Portals LGMNAL Failed to initialise\n"));
94 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Calling kportal_nal_register\n"));
96 * global_nal_data is set by lgmnal_init
98 if (kportal_nal_register(LGMNAL, &lgmnal_cmd, global_nal_data) != 0) {
99 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("kportal_nal_register failed\n"));
103 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Calling PORTAL_SYMBOL_REGISTER\n"));
104 PORTAL_SYMBOL_REGISTER(lgmnal_ni);
106 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("This is the end of the lgmnal module initialisation routine"));
113 void cleanup_module()
117 LGMNAL_PRINT(LGMNAL_DEBUG_TRACE, ("Cleaning up lgmnal module"));
118 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Interface [%d] Calling shutdown\n", interface));
119 kportal_nal_unregister(LGMNAL);
120 PORTAL_SYMBOL_UNREGISTER(lgmnal_ni);
122 global_nal_data = NULL;
127 EXPORT_SYMBOL(lgmnal_ni);
128 EXPORT_SYMBOL(lgmnal_debug_level);
130 MODULE_PARM(lgmnal_small_msg_size, "i");
131 MODULE_PARM(lgmnal_debug_level, "i");
133 MODULE_AUTHOR("Morgan Doyle. morgan.doyle@hp.com");
135 MODULE_DESCRIPTION("A Portals kernel NAL for Myrinet GM2. [0<lgmnal_debug_level<4]");
137 MODULE_LICENSE("GPL");