X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lnet%2Fklnds%2Fsocklnd%2Fsocklnd_modparams.c;h=d42d696014daef65a386a7660a78c3940bc457f9;hp=2a4347acc88165842468a6c77958175da3a1b41c;hb=08328081eb1bc506a4573b0bc42476f8e7fc7089;hpb=2517c4f647f10a713a428e8c77765c4b1bb7f013 diff --git a/lnet/klnds/socklnd/socklnd_modparams.c b/lnet/klnds/socklnd/socklnd_modparams.c index 2a4347a..d42d696 100644 --- a/lnet/klnds/socklnd/socklnd_modparams.c +++ b/lnet/klnds/socklnd/socklnd_modparams.c @@ -1,7 +1,8 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Copyright (C) 2001, 2002 Cluster File Systems, Inc. + * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * * Author: Eric Barton * * Portals is free software; you can redistribute it and/or @@ -107,7 +108,7 @@ static int inject_csum_error = 0; CFS_MODULE_PARM(inject_csum_error, "i", int, 0644, "set non-zero to inject a checksum error"); #ifdef CPU_AFFINITY -static int enable_irq_affinity = 1; +static int enable_irq_affinity = 0; CFS_MODULE_PARM(enable_irq_affinity, "i", int, 0644, "enable IRQ affinity"); #endif @@ -116,6 +117,14 @@ static unsigned int zc_min_frag = (2<<10); CFS_MODULE_PARM(zc_min_frag, "i", int, 0644, "minimum fragment to zero copy"); +static unsigned int zc_recv = 0; +CFS_MODULE_PARM(zc_recv, "i", int, 0644, + "enable ZC recv for Chelsio driver"); + +static unsigned int zc_recv_min_nfrags = 16; +CFS_MODULE_PARM(zc_recv_min_nfrags, "i", int, 0644, + "minimum # of fragments to enable ZC recv"); + #ifdef SOCKNAL_BACKOFF static int backoff_init = 3; CFS_MODULE_PARM(backoff_init, "i", int, 0644, @@ -132,34 +141,56 @@ CFS_MODULE_PARM(protocol, "i", int, 0644, "protocol version"); #endif -ksock_tunables_t ksocknal_tunables = { - .ksnd_timeout = &sock_timeout, - .ksnd_credits = &credits, - .ksnd_peercredits = &peer_credits, - .ksnd_nconnds = &nconnds, - .ksnd_min_reconnectms = &min_reconnectms, - .ksnd_max_reconnectms = &max_reconnectms, - .ksnd_eager_ack = &eager_ack, - .ksnd_typed_conns = &typed_conns, - .ksnd_min_bulk = &min_bulk, - .ksnd_tx_buffer_size = &tx_buffer_size, - .ksnd_rx_buffer_size = &rx_buffer_size, - .ksnd_nagle = &nagle, - .ksnd_keepalive_idle = &keepalive_idle, - .ksnd_keepalive_count = &keepalive_count, - .ksnd_keepalive_intvl = &keepalive_intvl, - .ksnd_enable_csum = &enable_csum, - .ksnd_inject_csum_error = &inject_csum_error, - .ksnd_zc_min_frag = &zc_min_frag, +ksock_tunables_t ksocknal_tunables; + +int ksocknal_tunables_init(void) +{ + + /* initialize ksocknal_tunables structure */ + ksocknal_tunables.ksnd_timeout = &sock_timeout; + ksocknal_tunables.ksnd_nconnds = &nconnds; + ksocknal_tunables.ksnd_min_reconnectms = &min_reconnectms; + ksocknal_tunables.ksnd_max_reconnectms = &max_reconnectms; + ksocknal_tunables.ksnd_eager_ack = &eager_ack; + ksocknal_tunables.ksnd_typed_conns = &typed_conns; + ksocknal_tunables.ksnd_min_bulk = &min_bulk; + ksocknal_tunables.ksnd_tx_buffer_size = &tx_buffer_size; + ksocknal_tunables.ksnd_rx_buffer_size = &rx_buffer_size; + ksocknal_tunables.ksnd_nagle = &nagle; + ksocknal_tunables.ksnd_keepalive_idle = &keepalive_idle; + ksocknal_tunables.ksnd_keepalive_count = &keepalive_count; + ksocknal_tunables.ksnd_keepalive_intvl = &keepalive_intvl; + ksocknal_tunables.ksnd_credits = &credits; + ksocknal_tunables.ksnd_peercredits = &peer_credits; + ksocknal_tunables.ksnd_enable_csum = &enable_csum; + ksocknal_tunables.ksnd_inject_csum_error = &inject_csum_error; + ksocknal_tunables.ksnd_zc_min_frag = &zc_min_frag; + ksocknal_tunables.ksnd_zc_recv = &zc_recv; + ksocknal_tunables.ksnd_zc_recv_min_nfrags = &zc_recv_min_nfrags; + + #ifdef CPU_AFFINITY - .ksnd_irq_affinity = &enable_irq_affinity, + ksocknal_tunables.ksnd_irq_affinity = &enable_irq_affinity; #endif + #ifdef SOCKNAL_BACKOFF - .ksnd_backoff_init = &backoff_init, - .ksnd_backoff_max = &backoff_max, + ksocknal_tunables.ksnd_backoff_init = &backoff_init; + ksocknal_tunables.ksnd_backoff_max = &backoff_max; #endif + #if SOCKNAL_VERSION_DEBUG - .ksnd_protocol = &protocol, + ksocknal_tunables.ksnd_protocol = &protocol; #endif + +#if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM + ksocknal_tunables.ksnd_sysctl = NULL; +#endif + + /* initialize platform-sepcific tunables */ + return ksocknal_lib_tunables_init(); }; +void ksocknal_tunables_fini(void) +{ + ksocknal_lib_tunables_fini(); +}