Whamcloud - gitweb
LU-1346 libcfs: cleanup macros in kp30.h
[fs/lustre-release.git] / lnet / klnds / socklnd / socklnd_modparams.c
index d42d696..2244c52 100644 (file)
@@ -1,7 +1,7 @@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
+/*
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  *
- * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2011, 2012, Intel Corporation.
  *
  *   Author: Eric Barton <eric@bartonsoftware.com>
  *
@@ -33,9 +33,27 @@ static int peer_credits = 8;
 CFS_MODULE_PARM(peer_credits, "i", int, 0444,
                 "# concurrent sends to 1 peer");
 
+static int peer_buffer_credits = 0;
+CFS_MODULE_PARM(peer_buffer_credits, "i", int, 0444,
+                "# per-peer router buffer credits");
+
+static int peer_timeout = 180;
+CFS_MODULE_PARM(peer_timeout, "i", int, 0444,
+                "Seconds without aliveness news to declare peer dead (<=0 to disable)");
+
+/* Number of daemons in each thread pool which is percpt,
+ * we will estimate reasonable value based on CPUs if it's not set. */
+static unsigned int nscheds;
+CFS_MODULE_PARM(nscheds, "i", int, 0444,
+               "# scheduler daemons in each pool while starting");
+
 static int nconnds = 4;
 CFS_MODULE_PARM(nconnds, "i", int, 0444,
-                "# connection daemons");
+                "# connection daemons while starting");
+
+static int nconnds_max = 64;
+CFS_MODULE_PARM(nconnds_max, "i", int, 0444,
+                "max # connection daemons");
 
 static int min_reconnectms = 1000;
 CFS_MODULE_PARM(min_reconnectms, "i", int, 0644,
@@ -83,15 +101,19 @@ static int nagle = 0;
 CFS_MODULE_PARM(nagle, "i", int, 0644,
                 "enable NAGLE?");
 
+static int round_robin = 1;
+CFS_MODULE_PARM(round_robin, "i", int, 0644,
+                "Round robin for multiple interfaces");
+
+static int keepalive = 30;
+CFS_MODULE_PARM(keepalive, "i", int, 0644,
+                "# seconds before send keepalive");
+
 static int keepalive_idle = 30;
 CFS_MODULE_PARM(keepalive_idle, "i", int, 0644,
                 "# idle seconds before probe");
 
-#ifdef HAVE_BGL_SUPPORT
-#define DEFAULT_KEEPALIVE_COUNT  100
-#else
 #define DEFAULT_KEEPALIVE_COUNT  5
-#endif
 static int keepalive_count = DEFAULT_KEEPALIVE_COUNT;
 CFS_MODULE_PARM(keepalive_count, "i", int, 0644,
                 "# missed probes == dead");
@@ -113,9 +135,13 @@ CFS_MODULE_PARM(enable_irq_affinity, "i", int, 0644,
                 "enable IRQ affinity");
 #endif
 
-static unsigned int zc_min_frag = (2<<10);
-CFS_MODULE_PARM(zc_min_frag, "i", int, 0644,
-                "minimum fragment to zero copy");
+static int nonblk_zcack = 1;
+CFS_MODULE_PARM(nonblk_zcack, "i", int, 0644,
+                "always send ZC-ACK on non-blocking connection");
+
+static unsigned int zc_min_payload = (16 << 10);
+CFS_MODULE_PARM(zc_min_payload, "i", int, 0644,
+                "minimum payload size to zero copy");
 
 static unsigned int zc_recv = 0;
 CFS_MODULE_PARM(zc_recv, "i", int, 0644,
@@ -136,7 +162,7 @@ CFS_MODULE_PARM(backoff_max, "i", int, 0644,
 #endif
 
 #if SOCKNAL_VERSION_DEBUG
-static int protocol = 2;
+static int protocol = 3;
 CFS_MODULE_PARM(protocol, "i", int, 0644,
                 "protocol version");
 #endif
@@ -148,7 +174,9 @@ int ksocknal_tunables_init(void)
 
         /* initialize ksocknal_tunables structure */
         ksocknal_tunables.ksnd_timeout            = &sock_timeout;
+       ksocknal_tunables.ksnd_nscheds            = &nscheds;
         ksocknal_tunables.ksnd_nconnds            = &nconnds;
+        ksocknal_tunables.ksnd_nconnds_max        = &nconnds_max;
         ksocknal_tunables.ksnd_min_reconnectms    = &min_reconnectms;
         ksocknal_tunables.ksnd_max_reconnectms    = &max_reconnectms;
         ksocknal_tunables.ksnd_eager_ack          = &eager_ack;
@@ -157,19 +185,29 @@ int ksocknal_tunables_init(void)
         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_round_robin        = &round_robin;
+        ksocknal_tunables.ksnd_keepalive          = &keepalive;
         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_peertxcredits      = &peer_credits;
+        ksocknal_tunables.ksnd_peerrtrcredits     = &peer_buffer_credits;
+        ksocknal_tunables.ksnd_peertimeout        = &peer_timeout;
         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_nonblk_zcack       = &nonblk_zcack;
+        ksocknal_tunables.ksnd_zc_min_payload     = &zc_min_payload;
         ksocknal_tunables.ksnd_zc_recv            = &zc_recv;
         ksocknal_tunables.ksnd_zc_recv_min_nfrags = &zc_recv_min_nfrags;
 
-
 #ifdef CPU_AFFINITY
+       if (enable_irq_affinity) {
+               CWARN("irq_affinity is removed from socklnd because modern "
+                     "computer always has fast CPUs and more cores than "
+                     "# NICs, although you still can set irq_affinity by "
+                     "another way, please check manual for details.\n");
+       }
         ksocknal_tunables.ksnd_irq_affinity       = &enable_irq_affinity;
 #endif
 
@@ -186,6 +224,9 @@ int ksocknal_tunables_init(void)
         ksocknal_tunables.ksnd_sysctl             =  NULL;
 #endif
 
+        if (*ksocknal_tunables.ksnd_zc_min_payload < (2 << 10))
+                *ksocknal_tunables.ksnd_zc_min_payload = (2 << 10);
+
         /* initialize platform-sepcific tunables */
         return ksocknal_lib_tunables_init();
 };