2 * This program was prepared by the Regents of the University of
3 * California at Los Alamos National Laboratory (the University) under
4 * contract number W-7405-ENG-36 with the U.S. Department of Energy
5 * (DoE). Neither the U.S. Government nor the
6 * University makes any warranty, express or implied, or assumes any
7 * liability or responsibility for the use of this software.
14 ptl_handle_ni_t lgmnal_ni;
18 lgmnal_cmd(struct portal_ioctl_data *data, void *private)
20 lgmnal_data_t *nal_data = NULL;
24 gm_status_t gm_status;
27 LGMNAL_PRINT(LGMNAL_DEBUG_TRACE, ("lgmnal_cmd [d] private [%p]\n", data->ioc_nal_cmd, private));
28 nal_data = (lgmnal_data_t*)private;
29 LGMNAL_PRINT(LGMNAL_DEBUG_V, ("nal_data is [%p]\n", nal_data));
30 switch(data->ioc_nal_cmd) {
32 * just reuse already defined GET_NID. Should define LGMNAL version
34 case(LGMNAL_IOC_GET_GNID):
35 LGMNAL_PRINT(LGMNAL_DEBUG_V, ("lgmnal_cmd GETNID (Get GM Global Network Id\n"));
37 PORTAL_ALLOC(name, data->ioc_plen1);
38 copy_from_user(name, data->ioc_pbuf1, data->ioc_plen1);
40 LGMNAL_GM_LOCK(nal_data);
41 nid = gm_host_name_to_node_id(nal_data->gm_port, name);
42 LGMNAL_GM_UNLOCK(nal_data);
43 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Local node id is [%d]\n", nid));
44 LGMNAL_GM_LOCK(nal_data);
45 gm_status = gm_node_id_to_global_id(nal_data->gm_port, nid, &gnid);
46 LGMNAL_GM_UNLOCK(nal_data);
47 if (gm_status != GM_SUCCESS) {
48 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("gm_node_id_to_global_id failed\n", gm_status));
51 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Global node is is [%u][%x]\n", gnid, gnid));
52 copy_to_user(data->ioc_pbuf2, &gnid, data->ioc_plen2);
55 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("lgmnal_cmd UNKNOWN[%d]\n", data->ioc_nal_cmd));
63 int lgmnal_small_msg_size = 81920;
64 int lgmnal_debug_level = 1;
70 LGMNAL_PRINT(LGMNAL_DEBUG_TRACE, ("This is the lgmnal module initialisation routine\n"));
74 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Calling lgmnal_init\n"));
75 status = PtlNIInit(lgmnal_init, 32, 4, 0, &lgmnal_ni);
76 if (status == PTL_OK) {
77 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Portals LGMNAL initialised ok lgmnal_ni [%lx]\n", lgmnal_ni));
79 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Portals LGMNAL Failed to initialise\n"));
84 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Calling kportal_nal_register\n"));
86 * global_nal_data is set by lgmnal_init
88 if (kportal_nal_register(LGMNAL, &lgmnal_cmd, global_nal_data) != 0) {
89 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("kportal_nal_register failed\n"));
93 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Calling PORTAL_SYMBOL_REGISTER\n"));
94 PORTAL_SYMBOL_REGISTER(lgmnal_ni);
96 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("This is the end of the lgmnal module initialisation routine"));
103 void cleanup_module()
107 LGMNAL_PRINT(LGMNAL_DEBUG_TRACE, ("Cleaning up lgmnal module"));
108 LGMNAL_PRINT(LGMNAL_DEBUG_VV, ("Interface [%d] Calling shutdown\n", interface));
109 kportal_nal_unregister(LGMNAL);
110 PORTAL_SYMBOL_UNREGISTER(lgmnal_ni);
112 global_nal_data = NULL;
117 EXPORT_SYMBOL(lgmnal_ni);
118 EXPORT_SYMBOL(lgmnal_debug_level);
120 MODULE_PARM(lgmnal_small_msg_size, "i");
121 MODULE_PARM(lgmnal_debug_level, "i");
123 MODULE_AUTHOR("Morgan Doyle. morgan.doyle@hp.com");
125 MODULE_DESCRIPTION("A Portals kernel NAL for Myrinet GM2. [0<lgmnal_debug_level<4]");
127 MODULE_LICENSE("GPL");