X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lnet%2Fklnds%2Fgmlnd%2Fgmlnd_module.c;h=1f7f96f0ea2a8fc2e8dc9a90a9fbf50bb2487a34;hb=b48ab0632ba0c88326c8d9466760bf56301b3676;hp=9fa2ea518d09c2995defd2fd816b339438dc3daf;hpb=f1bdc9a47fe7e740a3976099a12792cb3284a6ba;p=fs%2Flustre-release.git diff --git a/lnet/klnds/gmlnd/gmlnd_module.c b/lnet/klnds/gmlnd/gmlnd_module.c index 9fa2ea5..1f7f96f 100644 --- a/lnet/klnds/gmlnd/gmlnd_module.c +++ b/lnet/klnds/gmlnd/gmlnd_module.c @@ -19,73 +19,71 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include "gmnal.h" - - -int gmnal_small_msg_size = sizeof(gmnal_msghdr_t) + sizeof(ptl_hdr_t) + PTL_MTU + 928; -/* - * -1 indicates default value. - * This is 1 thread per cpu - * See start_kernel_threads - */ -int num_rx_threads = -1; -int num_stxds = 5; -int gm_port_id = 4; - -int -gmnal_cmd(struct portals_cfg *pcfg, void *private) -{ - gmnal_data_t *nal_data = NULL; - char *name = NULL; - int nid = -2; - int gnid; - gm_status_t gm_status; - - - CDEBUG(D_TRACE, "gmnal_cmd [%d] private [%p]\n", - pcfg->pcfg_command, private); - nal_data = (gmnal_data_t*)private; - switch(pcfg->pcfg_command) { - /* - * just reuse already defined GET_NID. Should define GMNAL version - */ - case(GMNAL_IOC_GET_GNID): - - PORTAL_ALLOC(name, pcfg->pcfg_plen1); - copy_from_user(name, PCFG_PBUF(pcfg, 1), pcfg->pcfg_plen1); - - spin_lock(&nal_data->gm_lock); - //nid = gm_host_name_to_node_id(nal_data->gm_port, name); - gm_status = gm_host_name_to_node_id_ex(nal_data->gm_port, 0, - name, &nid); - spin_unlock(&nal_data->gm_lock); - if (gm_status != GM_SUCCESS) { - CDEBUG(D_INFO, "gm_host_name_to_node_id_ex(...host %s) " - "failed[%d]\n", name, gm_status); - return (-1); - } else - CDEBUG(D_INFO, "Local node %s id is [%d]\n", name, nid); - spin_lock(&nal_data->gm_lock); - gm_status = gm_node_id_to_global_id(nal_data->gm_port, - nid, &gnid); - spin_unlock(&nal_data->gm_lock); - if (gm_status != GM_SUCCESS) { - CDEBUG(D_INFO, "gm_node_id_to_global_id failed[%d]\n", - gm_status); - return(-1); - } - CDEBUG(D_INFO, "Global node is is [%u][%x]\n", gnid, gnid); - copy_to_user(PCFG_PBUF(pcfg, 2), &gnid, pcfg->pcfg_plen2); - break; - default: - CDEBUG(D_INFO, "gmnal_cmd UNKNOWN[%d]\n", pcfg->pcfg_command); - pcfg->pcfg_nid2 = -1; - } - - - return(0); -} - +#include "gmlnd.h" + + +static int port = 4; +CFS_MODULE_PARM(port, "i", int, 0444, + "GM port to use for communications"); + +static int ntx = 256; +CFS_MODULE_PARM(ntx, "i", int, 0444, + "# tx descriptors"); + +static int credits = 128; +CFS_MODULE_PARM(credits, "i", int, 0444, + "# concurrent sends"); + +static int peer_credits = 8; +CFS_MODULE_PARM(peer_credits, "i", int, 0444, + "# concurrent sends per peer"); + +static int nlarge_tx_bufs = 32; +CFS_MODULE_PARM(nlarge_tx_bufs, "i", int, 0444, + "# large tx message buffers"); + +static int nrx_small = 128; +CFS_MODULE_PARM(nrx_small, "i", int, 0444, + "# small rx message buffers"); + +static int nrx_large = 64; +CFS_MODULE_PARM(nrx_large, "i", int, 0444, + "# large rx message buffers"); + +gmnal_tunables_t gmnal_tunables = { + .gm_port = &port, + .gm_ntx = &ntx, + .gm_credits = &credits, + .gm_peer_credits = &peer_credits, + .gm_nlarge_tx_bufs = &nlarge_tx_bufs, + .gm_nrx_small = &nrx_small, + .gm_nrx_large = &nrx_large, +}; + +#if CONFIG_SYSCTL && !CFS_SYSFS_MODULE_PARM +static ctl_table gmnal_ctl_table[] = { + {1, "port", &port, + sizeof (int), 0444, NULL, &proc_dointvec}, + {2, "ntx", &ntx, + sizeof (int), 0444, NULL, &proc_dointvec}, + {3, "credits", &credits, + sizeof (int), 0444, NULL, &proc_dointvec}, + {4, "peer_credits", &peer_credits, + sizeof (int), 0444, NULL, &proc_dointvec}, + {5, "nlarge_tx_bufs", &nlarge_tx_bufs, + sizeof (int), 0444, NULL, &proc_dointvec}, + {6, "nrx_small", &nrx_small, + sizeof (int), 0444, NULL, &proc_dointvec}, + {7, "nrx_large", &nrx_large, + sizeof (int), 0444, NULL, &proc_dointvec}, + {0} +}; + +static ctl_table gmnal_top_ctl_table[] = { + {207, "gmnal", NULL, 0, 0555, gmnal_ctl_table}, + {0} +}; +#endif static int __init gmnal_load(void) @@ -93,41 +91,40 @@ gmnal_load(void) int status; CDEBUG(D_TRACE, "This is the gmnal module initialisation routine\n"); - - CDEBUG(D_INFO, "Calling gmnal_init\n"); +#if CONFIG_SYSCTL && !CFS_SYSFS_MODULE_PARM + gmnal_tunables.gm_sysctl = + cfs_register_sysctl_table(gmnal_top_ctl_table, 0); + + if (gmnal_tunables.gm_sysctl == NULL) + CWARN("Can't setup /proc tunables\n"); +#endif + CDEBUG(D_NET, "Calling gmnal_init\n"); status = gmnal_init(); - if (status == PTL_OK) { - CDEBUG(D_INFO, "Portals GMNAL initialised ok\n"); + if (status == 0) { + CDEBUG(D_NET, "Portals GMNAL initialised ok\n"); } else { - CDEBUG(D_INFO, "Portals GMNAL Failed to initialise\n"); + CDEBUG(D_NET, "Portals GMNAL Failed to initialise\n"); return(-ENODEV); } - CDEBUG(D_INFO, "This is the end of the gmnal init routine"); + CDEBUG(D_NET, "This is the end of the gmnal init routine"); return(0); } - static void __exit gmnal_unload(void) { gmnal_fini(); - return; +#if CONFIG_SYSCTL && !CFS_SYSFS_MODULE_PARM + if (gmnal_tunables.gm_sysctl != NULL) + cfs_unregister_sysctl_table(gmnal_tunables.gm_sysctl); +#endif } - module_init(gmnal_load); - module_exit(gmnal_unload); -MODULE_PARM(gmnal_small_msg_size, "i"); -MODULE_PARM(num_rx_threads, "i"); -MODULE_PARM(num_stxds, "i"); -MODULE_PARM(gm_port_id, "i"); - -MODULE_AUTHOR("Morgan Doyle"); - -MODULE_DESCRIPTION("A Portals kernel NAL for Myrinet GM."); - +MODULE_AUTHOR("Cluster File Systems, Inc. "); +MODULE_DESCRIPTION("Kernel GM LND v1.01"); MODULE_LICENSE("GPL");