])
])
+# 2.6.24 request not use real numbers for ctl_name
+AC_DEFUN([LN_SYSCTL_UNNUMBERED],
+[AC_MSG_CHECKING([for CTL_UNNUMBERED])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/sysctl.h>
+],[
+ #ifndef CTL_UNNUMBERED
+ #error CTL_UNNUMBERED not exist in kernel
+ #endif
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SYSCTL_UNNUMBERED, 1,
+ [sysctl has CTL_UNNUMBERED])
+],[
+ AC_MSG_RESULT(NO)
+])
+])
+
+# 2.6.24 lost scatterlist->page
+AC_DEFUN([LN_SCATTERLIST_SETPAGE],
+[AC_MSG_CHECKING([for exist sg_set_page])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/scatterlist.h>
+],[
+ sg_set_page(NULL,NULL,0,0);
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SCATTERLIST_SETPAGE, 1,
+ [struct scatterlist has page member])
+],[
+ AC_MSG_RESULT(NO)
+])
+])
+
+# 2.6.26 use int instead of atomic for sem.count
+AC_DEFUN([LN_SEM_COUNT],
+[AC_MSG_CHECKING([atomic sem.count])
+LB_LINUX_TRY_COMPILE([
+ #include <asm/semaphore.h>
+],[
+ struct semaphore s;
+
+ atomic_read(&s.count);
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_SEM_COUNT_ATOMIC, 1,
+ [semaphore counter is atomic])
+],[
+ AC_MSG_RESULT(NO)
+])
+])
+
+
#
# LIBCFS_PROG_LINUX
#
LIBCFS_KMEM_CACHE
# 2.6.23
LIBCFS_KMEM_CACHE_CREATE_DTOR
+# 2.6.24
+LN_SYSCTL_UNNUMBERED
+LN_SCATTERLIST_SETPAGE
+# 2.6.26
+LN_SEM_COUNT
])
#
# include <linux/kallsyms.h>
# include <linux/moduleparam.h>
#endif
+#include <linux/scatterlist.h>
#include <libcfs/linux/portals_compat25.h>
#endif
#define LASSERT_SEM_LOCKED(sem) LASSERT(down_trylock(sem) != 0)
+#ifdef HAVE_SEM_COUNT_ATOMIC
+#define SEM_COUNT(sem) (atomic_read(&(sem)->count))
+#else
+#define SEM_COUNT(sem) ((sem)->count)
+#endif
+
#define LIBCFS_PANIC(msg) panic(msg)
/* ------------------------------------------------------------------- */
#undef _LWORDSIZE
+/* compat macroses */
+#ifndef HAVE_SCATTERLIST_SETPAGE
+static inline void sg_set_page(struct scatterlist *sg, struct page *page,
+ unsigned int len, unsigned int offset)
+{
+ sg->page = page;
+ sg->offset = offset;
+ sg->length = len;
+}
+#endif
+
+
#endif
#endif
#define cfs_unregister_sysctl_table(t) unregister_sysctl_table(t)
+#define DECLARE_PROC_HANDLER(name) \
+static int \
+LL_PROC_PROTO(name) \
+{ \
+ DECLARE_LL_PROC_PPOS_DECL; \
+ \
+ return proc_call_handler(table->data, write, \
+ ppos, buffer, lenp, \
+ __##name); \
+}
+
/*
* Symbol register
*/
{
return cap_raised(cfs_current()->cap_effective, cfs_cap_unpack(cap));
}
-
-cfs_cap_t cfs_curproc_cap_pack(void) {
-#if _LINUX_CAPABILITY_VERSION == 0x19980330
- return cfs_cap_pack(current->cap_effective);
-#elif _LINUX_CAPABILITY_VERSION == 0x20071026
- return cfs_cap_pack(current->cap_effective[0]);
+void cfs_kernel_cap_pack(cfs_kernel_cap_t kcap, cfs_cap_t *cap)
+{
+#if defined (_LINUX_CAPABILITY_VERSION) && _LINUX_CAPABILITY_VERSION == 0x19980330
+ *cap = cfs_cap_pack(kcap);
+#elif defined (_LINUX_CAPABILITY_VERSION) && _LINUX_CAPABILITY_VERSION == 0x20071026
+ *cap = cfs_cap_pack(kcap[0]);
+#elif defined(_KERNEL_CAPABILITY_VERSION) && _KERNEL_CAPABILITY_VERSION == 0x20080522
+ /* XXX lost high byte */
+ *cap = cfs_cap_pack(kcap.cap[0]);
#else
- #error "need correct _LINUX_CAPABILITY_VERSION "
+ #error "need correct _KERNEL_CAPABILITY_VERSION "
#endif
}
-void cfs_curproc_cap_unpack(cfs_cap_t cap) {
-#if _LINUX_CAPABILITY_VERSION == 0x19980330
- current->cap_effective = cfs_cap_unpack(cap);
-#elif _LINUX_CAPABILITY_VERSION == 0x20071026
- current->cap_effective[0] = cfs_cap_unpack(cap);
+void cfs_kernel_cap_unpack(cfs_kernel_cap_t *kcap, cfs_cap_t cap)
+{
+#if defined (_LINUX_CAPABILITY_VERSION) && _LINUX_CAPABILITY_VERSION == 0x19980330
+ *kcap = cfs_cap_unpack(cap);
+#elif defined (_LINUX_CAPABILITY_VERSION) && _LINUX_CAPABILITY_VERSION == 0x20071026
+ (*kcap)[0] = cfs_cap_unpack(cap);
+#elif defined(_KERNEL_CAPABILITY_VERSION) && _KERNEL_CAPABILITY_VERSION == 0x20080522
+ kcap->cap[0] = cfs_cap_unpack(cap);
#else
- #error "need correct _LINUX_CAPABILITY_VERSION "
+ #error "need correct _KERNEL_CAPABILITY_VERSION "
#endif
}
*/
extern char lnet_debug_log_upcall[1024];
-#define PSDEV_LNET (0x100)
+#ifndef HAVE_SYSCTL_UNNUMBERED
+#define CTL_LNET (0x100)
enum {
PSDEV_DEBUG = 1, /* control debugging */
PSDEV_SUBSYSTEM_DEBUG, /* control debugging */
PSDEV_LNET_DEBUG_MB, /* size of debug buffer */
PSDEV_LNET_DEBUG_LOG_UPCALL, /* debug log upcall script */
};
+#else
+#define CTL_LNET CTL_UNNUMBERED
+#define PSDEV_DEBUG CTL_UNNUMBERED
+#define PSDEV_SUBSYSTEM_DEBUG CTL_UNNUMBERED
+#define PSDEV_PRINTK CTL_UNNUMBERED
+#define PSDEV_CONSOLE_RATELIMIT CTL_UNNUMBERED
+#define PSDEV_CONSOLE_MAX_DELAY_CS CTL_UNNUMBERED
+#define PSDEV_CONSOLE_MIN_DELAY_CS CTL_UNNUMBERED
+#define PSDEV_CONSOLE_BACKOFF CTL_UNNUMBERED
+#define PSDEV_DEBUG_PATH CTL_UNNUMBERED
+#define PSDEV_DEBUG_DUMP_PATH CTL_UNNUMBERED
+#define PSDEV_LNET_UPCALL CTL_UNNUMBERED
+#define PSDEV_LNET_MEMUSED CTL_UNNUMBERED
+#define PSDEV_LNET_CATASTROPHE CTL_UNNUMBERED
+#define PSDEV_LNET_PANIC_ON_LBUG CTL_UNNUMBERED
+#define PSDEV_LNET_DUMP_KERNEL CTL_UNNUMBERED
+#define PSDEV_LNET_DAEMON_FILE CTL_UNNUMBERED
+#define PSDEV_LNET_DEBUG_MB CTL_UNNUMBERED
+#define PSDEV_LNET_DEBUG_LOG_UPCALL CTL_UNNUMBERED
+#endif
+
static int
proc_call_handler(void *data, int write,
}
return 0;
}
-
-#define DECLARE_PROC_HANDLER(name) \
-static int \
-LL_PROC_PROTO(name) \
-{ \
- DECLARE_LL_PROC_PPOS_DECL; \
- \
- return proc_call_handler(table->data, write, \
- ppos, buffer, lenp, \
- __##name); \
-}
+EXPORT_SYMBOL(proc_call_handler);
static int __proc_dobitmasks(void *data, int write,
loff_t pos, void *buffer, int nob)
.data = &libcfs_debug,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dobitmasks
+ .proc_handler = &proc_dobitmasks,
},
{
.ctl_name = PSDEV_SUBSYSTEM_DEBUG,
.data = &libcfs_subsystem_debug,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dobitmasks
+ .proc_handler = &proc_dobitmasks,
},
{
.ctl_name = PSDEV_PRINTK,
.data = &libcfs_printk,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dobitmasks
+ .proc_handler = &proc_dobitmasks,
},
{
.ctl_name = PSDEV_CONSOLE_RATELIMIT,
.data = (int *)&libcfs_kmemory.counter,
.maxlen = sizeof(int),
.mode = 0444,
- .proc_handler = &proc_dointvec
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
},
{
.ctl_name = PSDEV_LNET_CATASTROPHE,
.data = &libcfs_catastrophe,
.maxlen = sizeof(int),
.mode = 0444,
- .proc_handler = &proc_dointvec
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
},
{
.ctl_name = PSDEV_LNET_PANIC_ON_LBUG,
.data = &libcfs_panic_on_lbug,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dointvec
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
},
{
.ctl_name = PSDEV_LNET_DUMP_KERNEL,
.procname = "dump_kernel",
+ .maxlen = 256,
.mode = 0200,
.proc_handler = &proc_dump_kernel,
},
.ctl_name = PSDEV_LNET_DAEMON_FILE,
.procname = "daemon_file",
.mode = 0644,
+ .maxlen = 256,
.proc_handler = &proc_daemon_file,
},
{
{0}
};
-static cfs_sysctl_table_t top_table[2] = {
+static cfs_sysctl_table_t top_table[] = {
{
- .ctl_name = PSDEV_LNET,
+ .ctl_name = CTL_LNET,
.procname = "lnet",
+ .mode = 0555,
.data = NULL,
.maxlen = 0,
- .mode = 0555,
- .child = lnet_table
+ .child = lnet_table,
},
- {0}
+ {
+ .ctl_name = 0
+ }
};
int insert_proc(void)
{
#ifdef CONFIG_SYSCTL
+ printk("call register\n");
if (lnet_table_header == NULL)
lnet_table_header = cfs_register_sysctl_table(top_table, 0);
#endif
#include "libcfs/libcfs.h"
#include "lnet/lnet.h"
#include "lnet/lib-lnet.h"
+#include "lnet/lnet-sysctl.h"
/* undefine these before including the GM headers which clash */
#undef PACKAGE_BUGREPORT
};
#if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
+
+#ifndef HAVE_SYSCTL_UNNUMBERED
+
+enum {
+ GMLND_PORT = 1,
+ GMLND_NTX,
+ GMLND_CREDITS,
+ GMLND_PEERCREDITS,
+ GMLND_NLARGE_TX_BUFS,
+ GMLND_NRX_SMALL,
+ GMLND_NRX_LARGE
+};
+
+#else
+
+#define GMLND_PORT CTL_UNNUMBERED
+#define GMLND_NTX CTL_UNNUMBERED
+#define GMLND_CREDITS CTL_UNNUMBERED
+#define GMLND_PEERCREDITS CTL_UNNUMBERED
+#define GMLND_NLARGE_TX_BUFS CTL_UNNUMBERED
+#define GMLND_NRX_SMALL CTL_UNNUMBERED
+#define GMLND_NRX_LARGE CTL_UNNUMBERED
+
+#endif
+
static cfs_sysctl_table_t gmnal_ctl_table[] = {
{
- .ctl_name = 1,
+ .ctl_name = GMLND_PORT,
.procname = "port",
.data = &port,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 2,
+ .ctl_name = GMLND_NTX,
.procname = "ntx",
.data = &ntx,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 3,
+ .ctl_name = GMLND_CREDITS,
.procname = "credits",
.data = &credits,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 4,
+ .ctl_name = GMLND_PEERCREDITS,
.procname = "peer_credits",
.data = &peer_credits,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 5,
+ .ctl_name = GMLND_NLARGE_TX_BUFS,
.procname = "nlarge_tx_bufs",
.data = &nlarge_tx_bufs,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 6,
+ .ctl_name = GMLND_NRX_SMALL,
.procname = "nrx_small",
.data = &nrx_small,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 7,
+ .ctl_name = GMLND_NRX_LARGE,
.procname = "nrx_large",
.data = &nrx_large,
.maxlen = sizeof (int),
static cfs_sysctl_table_t gmnal_top_ctl_table[] = {
{
- .ctl_name = 207,
+ .ctl_name = CTL_GMLND,
.procname = "gmnal",
.data = NULL,
.maxlen = 0,
#include <libcfs/libcfs.h>
#include <lnet/lnet.h>
#include <lnet/lib-lnet.h>
+#include <lnet/lnet-sysctl.h>
#include <linux/iba/ibt.h>
* not to truncate the printout; it only needs to be the actual size of the
* string buffer if we allow writes (and we don't) */
+#ifdef HAVE_SYSCTL_UNNUMBERED
+
+enum {
+ IIBLND_IPIF_BASENAME = 1,
+ IIBLND_SERVICE_NAME,
+ IIBLND_SERVICE_NUMBER,
+ IIBLND_RECONNECT_MIN,
+ IIBLND_RECONNECT_MAX,
+ IIBLND_CONCURRENT_PEERS,
+ IIBLND_CKSUM,
+ IIBLND_TIMEOUT,
+ IIBLND_NTX,
+ IIBLND_CREDITS,
+ IIBLND_PEER_CREDITS,
+ IIBLND_SD_RETRIES,
+ IIBLND_KEEPALIVE,
+ IIBLND_CONCURRENT_SENDS
+};
+
+#else
+
+#define IIBLND_IPIF_BASENAME CTL_UNNUMBERED
+#define IIBLND_SERVICE_NAME CTL_UNNUMBERED
+#define IIBLND_SERVICE_NUMBER CTL_UNNUMBERED
+#define IIBLND_RECONNECT_MIN CTL_UNNUMBERED
+#define IIBLND_RECONNECT_MAX CTL_UNNUMBERED
+#define IIBLND_CONCURRENT_PEERS CTL_UNNUMBERED
+#define IIBLND_CKSUM CTL_UNNUMBERED
+#define IIBLND_TIMEOUT CTL_UNNUMBERED
+#define IIBLND_NTX CTL_UNNUMBERED
+#define IIBLND_CREDITS CTL_UNNUMBERED
+#define IIBLND_PEER_CREDITS CTL_UNNUMBERED
+#define IIBLND_SD_RETRIES CTL_UNNUMBERED
+#define IIBLND_KEEPALIVE CTL_UNNUMBERED
+#define IIBLND_CONCURRENT_SENDS CTL_UNNUMBERED
+
+#endif
+
static cfs_sysctl_table_t kibnal_ctl_table[] = {
{
- .ctl_name = 1,
+ .ctl_name = IBBLND_IPIF_BASENAME,
.procname = "ipif_basename",
.data = &ipif_basename,
.maxlen = 1024,
.proc_handler = &proc_dostring
},
{
- .ctl_name = 2,
+ .ctl_name = IIBLND_SERVICE_NAME,
.procname = "service_name",
.data = &service_name,
.maxlen = 1024,
.proc_handler = &proc_dostring
},
{
- .ctl_name = 3,
+ .ctl_name = IIBLND_SERVICE_NUMBER,
.procname = "service_number",
.data = &service_number,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 4,
+ .ctl_name = IIBLND_RECONNECT_MIN,
.procname = "min_reconnect_interval",
.data = &min_reconnect_interval,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 5,
+ .ctl_name = IIBLND_RECONNECT_MAX,
.procname = "max_reconnect_interval",
.data = &max_reconnect_interval,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 6,
+ .ctl_name = IIBLND_CONCURRENT_PEERS,
.procname = "concurrent_peers",
.data = &concurrent_peers,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 7,
+ .ctl_name = IIBLND_CKSUM,
.procname = "cksum",
.data = &cksum,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 8,
+ .ctl_name = IIBLND_TIMEOUT,
.procname = "timeout",
.data = &timeout,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 9,
+ .ctl_name = IIBLND_NTX,
.procname = "ntx",
.data = &ntx,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 10,
+ .ctl_name = IIBLND_CREDITS,
.procname = "credits",
.data = &credits,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 11,
+ .ctl_name = IIBLND_PEER_CREDITS,
.procname = "peer_credits",
.data = &peer_credits,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 12,
+ .ctl_name = IIBLND_SD_RETRIES,
.procname = "sd_retries",
.data = &sd_retries,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 13,
+ .ctl_name = IIBLND_KEEPALIVE,
.procname = "keepalive",
.data = &keepalive,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 14,
+ .ctl_name = IIBLND_CONCURRENT_SENDS,
.procname = "concurrent_sends",
.data = &concurrent_sends,
.maxlen = sizeof(int),
static cfs_sysctl_table_t kibnal_top_ctl_table[] = {
{
- .ctl_name = 203,
+ .ctl_name = CTL_IIBLND,
.procname = "iibnal",
.data = NULL,
.maxlen = 0,
#include "libcfs/libcfs.h"
#include "lnet/lnet.h"
#include "lnet/lib-lnet.h"
+#include <lnet/lnet-sysctl.h>
#define MX_KERNEL 1
#include "mx_extensions.h"
#include <libcfs/libcfs.h>
#include <lnet/lnet.h>
#include <lnet/lib-lnet.h>
+#include <lnet/lnet-sysctl.h>
#if !HAVE_GFP_T
typedef int gfp_t;
int kiblnd_recv(lnet_ni_t *ni, void *private, lnet_msg_t *lntmsg, int delayed,
unsigned int niov, struct iovec *iov, lnet_kiov_t *kiov,
unsigned int offset, unsigned int mlen, unsigned int rlen);
+
fragnob = min((int)(iov->iov_len - offset), nob);
fragnob = min(fragnob, (int)PAGE_SIZE - page_offset);
- sg->page = page;
- sg->offset = page_offset;
- sg->length = fragnob;
+ sg_set_page(sg, page, fragnob, page_offset);
sg++;
if (offset + fragnob < iov->iov_len) {
fragnob = min((int)(kiov->kiov_len - offset), nob);
memset(sg, 0, sizeof(*sg));
- sg->page = kiov->kiov_page;
- sg->offset = kiov->kiov_offset + offset;
- sg->length = fragnob;
+ sg_set_page(sg, kiov->kiov_page, fragnob,
+ kiov->kiov_offset + offset);
sg++;
-
+
offset = 0;
kiov++;
nkiov--;
static char ipif_basename_space[32];
+#ifndef HAVE_SYSCTL_UNNUMBERED
+
+enum {
+ O2IBLND_SERVICE = 1,
+ O2IBLND_CKSUM,
+ O2IBLND_TIMEOUT,
+ O2IBLND_NTX,
+ O2IBLND_CREDITS,
+ O2IBLND_PEER_CREDITS,
+ O2IBLND_IPIF_BASENAME,
+ O2IBLND_RETRY_COUNT,
+ O2IBLND_RNR_RETRY_COUNT,
+ O2IBLND_KEEPALIVE,
+ O2IBLND_CONCURRENT_SENDS,
+ O2IBLND_IB_MTU,
+ O2IBLND_FMR_POOL_SIZE,
+ O2IBLND_FMR_FLUSH_TRIGGER,
+ O2IBLND_FMR_CACHE
+};
+#else
+
+#define O2IBLND_SERVICE CTL_UNNUMBERED
+#define O2IBLND_CKSUM CTL_UNNUMBERED
+#define O2IBLND_TIMEOUT CTL_UNNUMBERED
+#define O2IBLND_NTX CTL_UNNUMBERED
+#define O2IBLND_CREDITS CTL_UNNUMBERED
+#define O2IBLND_PEER_CREDITS CTL_UNNUMBERED
+#define O2IBLND_IPIF_BASENAME CTL_UNNUMBERED
+#define O2IBLND_RETRY_COUNT CTL_UNNUMBERED
+#define O2IBLND_RNR_RETRY_COUNT CTL_UNNUMBERED
+#define O2IBLND_KEEPALIVE CTL_UNNUMBERED
+#define O2IBLND_CONCURRENT_SENDS CTL_UNNUMBERED
+#define O2IBLND_IB_MTU CTL_UNNUMBERED
+#define O2IBLND_FMR_POOL_SIZE CTL_UNNUMBERED
+#define O2IBLND_FMR_FLUSH_TRIGGER CTL_UNNUMBERED
+#define O2IBLND_FMR_CACHE CTL_UNNUMBERED
+
+#endif
+
static cfs_sysctl_table_t kiblnd_ctl_table[] = {
{
- .ctl_name = 1,
+ .ctl_name = O2IBLND_SERVICE,
.procname = "service",
.data = &service,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 2,
+ .ctl_name = O2IBLND_CKSUM,
.procname = "cksum",
.data = &cksum,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 3,
+ .ctl_name = O2IBLND_TIMEOUT,
.procname = "timeout",
.data = &timeout,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 4,
+ .ctl_name = O2IBLND_NTX,
.procname = "ntx",
.data = &ntx,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 5,
+ .ctl_name = O2IBLND_CREDITS,
.procname = "credits",
.data = &credits,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 6,
+ .ctl_name = O2IBLND_PEER_CREDITS,
.procname = "peer_credits",
.data = &peer_credits,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 7,
+ .ctl_name = O2IBLND_IPIF_BASENAME,
.procname = "ipif_name",
.data = ipif_basename_space,
.maxlen = sizeof(ipif_basename_space),
.proc_handler = &proc_dostring
},
{
- .ctl_name = 8,
+ .ctl_name = O2IBLND_RETRY_COUNT,
.procname = "retry_count",
.data = &retry_count,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 9,
+ .ctl_name = O2IBLND_RNR_RETRY_COUNT,
.procname = "rnr_retry_count",
.data = &rnr_retry_count,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 10,
+ .ctl_name = O2IBLND_KEEPALIVE,
.procname = "keepalive",
.data = &keepalive,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 11,
+ .ctl_name = O2IBLND_CONCURRENT_SENDS,
.procname = "concurrent_sends",
.data = &concurrent_sends,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 12,
+ .ctl_name = O2IBLND_IB_MTU,
.procname = "ib_mtu",
.data = &ib_mtu,
.maxlen = sizeof(int),
},
#if IBLND_MAP_ON_DEMAND
{
- .ctl_name = 13,
+ .ctl_name = O2IBLND_FMR_POOL_SIZE,
.procname = "fmr_pool_size",
.data = &fmr_pool_size,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 14,
+ .ctl_name = O2IBLND_FMR_FLUSH_TRIGGER,
.procname = "fmr_flush_trigger",
.data = &fmr_flush_trigger,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 15,
+ .ctl_name = O2IBLND_FMR_CACHE,
.procname = "fmr_cache",
.data = &fmr_cache,
.maxlen = sizeof(int),
static cfs_sysctl_table_t kiblnd_top_ctl_table[] = {
{
- .ctl_name = 203,
+ .ctl_name = CTL_O2IBLND,
.procname = "o2iblnd",
.data = NULL,
.maxlen = 0,
#include <libcfs/libcfs.h>
#include <lnet/lnet.h>
#include <lnet/lib-lnet.h>
+#include <lnet/lnet-sysctl.h>
#include <ts_ib_core.h>
#include <ts_ib_cm.h>
#if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
+#ifndef HAVE_SYSCTL_UNNUMBERED
+enum {
+ KIBNAL_IPIF_BASENAME = 1,
+ KIBNAL_N_CONND,
+ KIBNAL_RECONNECT_MIN,
+ KIBNAL_RECONNECT_MAX,
+ KIBNAL_CONCURRENT_PEERS,
+ KIBNAL_CKSUM,
+ KIBNAL_TIMEOUT,
+ KIBNAL_NTX,
+ KIBNAL_CREDITS,
+ KIBNAL_PEER_CREDITS,
+ KIBNAL_KEEPALIVE
+};
+#else
+
+#define KIBNAL_IPIF_BASENAME CTL_UNNUMBERED
+#define KIBNAL_N_CONND CTL_UNNUMBERED
+#define KIBNAL_RECONNECT_MIN CTL_UNNUMBERED
+#define KIBNAL_RECONNECT_MAX CTL_UNNUMBERED
+#define KIBNAL_CONCURRENT_PEERS CTL_UNNUMBERED
+#define KIBNAL_CKSUM CTL_UNNUMBERED
+#define KIBNAL_TIMEOUT CTL_UNNUMBERED
+#define KIBNAL_NTX CTL_UNNUMBERED
+#define KIBNAL_CREDITS CTL_UNNUMBERED
+#define KIBNAL_PEER_CREDITS CTL_UNNUMBERED
+#define KIBNAL_KEEPALIVE CTL_UNNUMBERED
+
+#endif
+
static cfs_sysctl_table_t kibnal_ctl_table[] = {
{
- .ctl_name = 1,
+ .ctl_name = KIBNAL_IPIF_BASENAME,
.procname = "ipif_basename",
.data = &ipif_basename,
.maxlen = 1024,
.proc_handler = &proc_dostring
},
{
- .ctl_name = 2,
+ .ctl_name = KIBNAL_N_CONND,
.procname = "n_connd",
.data = &n_connd,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 3,
+ .ctl_name = KIBNAL_RECONNECT_MIN,
.procname = "min_reconnect_interval",
.data = &min_reconnect_interval,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 4,
+ .ctl_name = KIBNAL_RECONNECT_MAX,
.procname = "max_reconnect_interval",
.data = &max_reconnect_interval,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 5,
+ .ctl_name = KIBNAL_CONCURRENT_PEERS,
.procname = "concurrent_peers",
.data = &concurrent_peers,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 6,
+ .ctl_name = KIBNAL_CKSUM,
.procname = "cksum",
.data = &cksum,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 7,
+ .ctl_name = KIBNAL_TIMEOUT,
.procname = "timeout",
.data = &timeout,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 8,
+ .ctl_name = KIBNAL_NTX,
.procname = "ntx",
.data = &ntx,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 9,
+ .ctl_name = KIBNAL_CREDITS,
.procname = "credits",
.data = &credits,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 10,
+ .ctl_name = KIBNAL_PEER_CREDITS,
.procname = "peer_credits",
.data = &peer_credits,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 11,
+ .ctl_name = KIBNAL_KEEPALIVE,
.procname = "keepalive",
.data = &keepalive,
.maxlen = sizeof(int),
static cfs_sysctl_table_t kibnal_top_ctl_table[] = {
{
- .ctl_name = 203,
+ .ctl_name = CTL_KIBNAL,
.procname = "openibnal",
.data = NULL,
.maxlen = 0,
#include <libcfs/libcfs.h>
#include <lnet/lnet.h>
#include <lnet/lib-lnet.h>
+#include <lnet/lnet-sysctl.h>
#include <portals/p30.h>
#ifdef CRAY_XT3
#include <portals/ptltrace.h>
}
#endif
+#ifndef HAVE_SYSCTL_UNNUMBERED
+
+enum {
+ KPTLLND_NTX = 1,
+ KPTLLND_MAX_NODES,
+ KPTLLND_MAX_PROC_PER_NODE,
+ KPTLLND_CHECKSUM,
+ KPTLLND_TIMEOUT,
+ KPTLLND_PORTAL,
+ KPTLLND_PID,
+ KPTLLND_RXB_PAGES,
+ KPTLLND_CREDITS,
+ KPTLLND_PEERCREDITS,
+ KPTLLND_MAX_MSG_SIZE,
+ KPTLLND_PEER_HASH_SIZE,
+ KPTLLND_RESHEDULE_LOOPS,
+ KPTLLND_ACK_PUTS,
+ KPTLLND_TRACETIMEOUT,
+ KPTLLND_TRACEBASENAME,
+ KPTLLND_SIMULATION_BITMAP
+};
+#else
+
+#define KPTLLND_NTX CTL_UNNUMBERED
+#define KPTLLND_MAX_NODES CTL_UNNUMBERED
+#define KPTLLND_MAX_PROC_PER_NODE CTL_UNNUMBERED
+#define KPTLLND_CHECKSUM CTL_UNNUMBERED
+#define KPTLLND_TIMEOUT CTL_UNNUMBERED
+#define KPTLLND_PORTAL CTL_UNNUMBERED
+#define KPTLLND_PID CTL_UNNUMBERED
+#define KPTLLND_RXB_PAGES CTL_UNNUMBERED
+#define KPTLLND_CREDITS CTL_UNNUMBERED
+#define KPTLLND_PEERCREDITS CTL_UNNUMBERED
+#define KPTLLND_MAX_MSG_SIZE CTL_UNNUMBERED
+#define KPTLLND_PEER_HASH_SIZE CTL_UNNUMBERED
+#define KPTLLND_RESHEDULE_LOOPS CTL_UNNUMBERED
+#define KPTLLND_ACK_PUTS CTL_UNNUMBERED
+#define KPTLLND_TRACETIMEOUT CTL_UNNUMBERED
+#define KPTLLND_TRACEBASENAME CTL_UNNUMBERED
+#define KPTLLND_SIMULATION_BITMAP CTL_UNNUMBERED
+#endif
+
static cfs_sysctl_table_t kptllnd_ctl_table[] = {
{
- .ctl_name = 1,
+ .ctl_name = KPTLLND_NTX,
.procname = "ntx",
.data = &ntx,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 2,
+ .ctl_name = KPTLLND_MAX_NODES,
.procname = "max_nodes",
.data = &max_nodes,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 3,
+ .ctl_name = KPTLLND_MAX_PROC_PER_NODE,
.procname = "max_procs_per_node",
.data = &max_procs_per_node,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 4,
+ .ctl_name = KPTLLND_CHECKSUM,
.procname = "checksum",
.data = &checksum,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 5,
+ .ctl_name = KPTLLND_TIMEOUT,
.procname = "timeout",
.data = &timeout,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 6,
+ .ctl_name = KPTLLND_PORTAL,
.procname = "portal",
.data = &portal,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 7,
+ .ctl_name = KPTLLND_PID,
.procname = "pid",
.data = &pid,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 8,
+ .ctl_name = KPTLLND_RXB_PAGES,
.procname = "rxb_npages",
.data = &rxb_npages,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 9,
+ .ctl_name = KPTLLND_CREDITS,
.procname = "credits",
.data = &credits,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 10,
+ .ctl_name = KPTLLND_PEERCREDITS,
.procname = "peercredits",
.data = &peercredits,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 11,
+ .ctl_name = KPTLLND_MAX_MSG_SIZE,
.procname = "max_msg_size",
.data = &max_msg_size,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 12,
+ .ctl_name = KPTLLND_PEER_HASH_SIZE,
.procname = "peer_hash_table_size",
.data = &peer_hash_table_size,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 13,
+ .ctl_name = KPTLLND_RESHEDULE_LOOPS,
.procname = "reschedule_loops",
.data = &reschedule_loops,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 14,
+ .ctl_name = KPTLLND_ACK_PUTS,
.procname = "ack_puts",
.data = &ack_puts,
.maxlen = sizeof(int),
},
#ifdef CRAY_XT3
{
- .ctl_name = 15,
+ .ctl_name = KPTLLND_TRACETIMEOUT,
.procname = "ptltrace_on_timeout",
.data = &ptltrace_on_timeout,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 16,
+ .ctl_name = KPTLLND_TRACEBASENAME,
.procname = "ptltrace_basename",
.data = ptltrace_basename_space,
.maxlen = sizeof(ptltrace_basename_space),
#endif
#ifdef PJK_DEBUGGING
{
- .ctl_name = 17,
+ .ctl_name = KPTLLND_SIMULATION_BITMAP,
.procname = "simulation_bitmap",
.data = &simulation_bitmap,
.maxlen = sizeof(int),
static cfs_sysctl_table_t kptllnd_top_ctl_table[] = {
{
- .ctl_name = 203,
+ .ctl_name = CTL_PTLLND,
.procname = "ptllnd",
.data = NULL,
.maxlen = 0,
#include <libcfs/libcfs.h>
#include <lnet/lnet.h>
#include <lnet/lib-lnet.h>
+#include <lnet/lnet-sysctl.h>
/* fixed constants */
#define KQSW_SMALLMSG (4<<10) /* small/large ep receiver breakpoint */
};
#if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
+
+#ifndef HAVE_SYSCTL_UNNUMBERED
+
+enum
+ KQSWNAL_TX_MAXCONTIG = 1,
+ KQSWNAL_NTXMSG,
+ KQSWNAL_CREDITS,
+ KQSWNAL_PEERCREDITS,
+ KQSWNAL_NRXMSGS_LARGE,
+ KQSWNAL_EP_ENVELOPES_LARGE,
+ KQSWNAL_NRXMSGS_SMALL,
+ KQSWNAL_EP_ENVELOPES_SMALL,
+ KQSWNAL_OPTIMIZED_PUTS,
+ KQSWNAL_OPTIMIZED_GETS,
+ KQSWNAL_INJECT_CSUM_ERROR
+};
+#else
+
+#define KQSWNAL_TX_MAXCONTIG CTL_UNNUMBERED
+#define KQSWNAL_NTXMSG CTL_UNNUMBERED
+#define KQSWNAL_CREDITS CTL_UNNUMBERED
+#define KQSWNAL_PEERCREDITS CTL_UNNUMBERED
+#define KQSWNAL_NRXMSGS_LARGE CTL_UNNUMBERED
+#define KQSWNAL_EP_ENVELOPES_LARGE CTL_UNNUMBERED
+#define KQSWNAL_NRXMSGS_SMALL CTL_UNNUMBERED
+#define KQSWNAL_EP_ENVELOPES_SMALL CTL_UNNUMBERED
+#define KQSWNAL_OPTIMIZED_PUTS CTL_UNNUMBERED
+#define KQSWNAL_OPTIMIZED_GETS CTL_UNNUMBERED
+#define KQSWNAL_INJECT_CSUM_ERROR CTL_UNNUMBERED
+
+#endif
+
static cfs_sysctl_table_t kqswnal_ctl_table[] = {
{
- .ctl_name = 1,
+ .ctl_name = KQSWNAL_TX_MAXCONTIG,
.procname = "tx_maxcontig",
.data = &tx_maxcontig,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 2,
+ .ctl_name = KQSWNAL_NTXMSG,
.procname = "ntxmsgs",
.data = &ntxmsgs,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 3,
+ .ctl_name = KQSWNAL_CREDITS,
.procname = "credits",
.data = &credits,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 4,
+ .ctl_name = KQSWNAL_PEERCREDITS,
.procname = "peer_credits",
.data = &peer_credits,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 5,
+ .ctl_name = KQSWNAL_NRXMSGS_LARGE,
.procname = "nrxmsgs_large",
.data = &nrxmsgs_large,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 6,
+ .ctl_name = KQSWNAL_EP_ENVELOPES_LARGE,
.procname = "ep_envelopes_large",
.data = &ep_envelopes_large,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 7,
+ .ctl_name = KQSWNAL_NRXMSGS_SMALL,
.procname = "nrxmsgs_small",
.data = &nrxmsgs_small,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 8,
+ .ctl_name = KQSWNAL_EP_ENVELOPES_SMALL,
.procname = "ep_envelopes_small",
.data = &ep_envelopes_small,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 9,
+ .ctl_name = KQSWNAL_OPTIMIZED_PUTS,
.procname = "optimized_puts",
.data = &optimized_puts,
.maxlen = sizeof (int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 10,
+ .ctl_name = KQSWNAL_OPTIMIZED_GETS,
.procname = "optimized_gets",
.data = &optimized_gets,
.maxlen = sizeof (int),
},
#if KQSW_CKSUM
{
- .ctl_name = 11,
+ .ctl_name = KQSWNAL_INJECT_CSUM_ERROR,
.procname = "inject_csum_error",
.data = &inject_csum_error,
.maxlen = sizeof (int),
static cfs_sysctl_table_t kqswnal_top_ctl_table[] = {
{
- .ctl_name = 201,
+ .ctl_name = CTL_KQSWNAL,
.procname = "qswnal",
.data = NULL,
.maxlen = 0,
#include <libcfs/libcfs.h>
#include <lnet/lnet.h>
#include <lnet/lib-lnet.h>
+#include <lnet/lnet-sysctl.h>
#include <rapl.h>
};
#if CONFIG_SYSCTL && !CFS_SYSFS_MODULE_PARM
+
+#ifndef HAVE_SYSCTL_UNNUMBERED
+enum {
+ KRANAL_N_CONND = 1,
+ KRANAL_RECONNECT_MIN,
+ KRANAL_RECONNECT_MAX,
+ KRANAL_NTX,
+ KRANAL_CREDITS,
+ KRANAL_PEERCREDITS,
+ KRANAL_FMA_CQ_SIZE,
+ KRANAL_TIMEOUT,
+ KRANAL_IMMEDIATE_MAX
+};
+#else
+
+#define KRANAL_N_CONND CTL_UNNUMBERED
+#define KRANAL_RECONNECT_MIN CTL_UNNUMBERED
+#define KRANAL_RECONNECT_MAX CTL_UNNUMBERED
+#define KRANAL_NTX CTL_UNNUMBERED
+#define KRANAL_CREDITS CTL_UNNUMBERED
+#define KRANAL_PEERCREDITS CTL_UNNUMBERED
+#define KRANAL_FMA_CQ_SIZE CTL_UNNUMBERED
+#define KRANAL_TIMEOUT CTL_UNNUMBERED
+#define KRENAL_IMMEDIATE_MAX CTL_UNNUMBERED
+#endif
+
static cfs_sysctl_table_t kranal_ctl_table[] = {
{
- .ctl_name = 1,
+ .ctl_name = KRANAL_N_CONND,
.procname = "n_connd",
.data = &n_connd,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 2,
+ .ctl_name = KRANAL_RECONNECT_MIN,
.procname = "min_reconnect_interval",
.data = &min_reconnect_interval,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 3,
+ .ctl_name = KRANAL_RECONNECT_MAX,
.procname = "max_reconnect_interval",
.data = &max_reconnect_interval,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 4,
+ .ctl_name = KRANAL_NTX,
.procname = "ntx",
.data = &ntx,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 5,
+ .ctl_name = KRANAL_CREDITS,
.procname = "credits",
.data = &credits,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 6,
+ .ctl_name = KRANAL_PEERCREDITS,
.procname = "peer_credits",
.data = &peer_credits,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 7,
+ .ctl_name = KRANAL_FMA_CQ_SIZE,
.procname = "fma_cq_size",
.data = &fma_cq_size,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 8,
+ .ctl_name = KRANAL_TIMEOUT,
.procname = "timeout",
.data = &timeout,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 9,
+ .ctl_name = KRANAL_IMMEDIATE_MAX,
.procname = "max_immediate",
.data = &max_immediate,
.maxlen = sizeof(int),
static cfs_sysctl_table_t kranal_top_ctl_table[] = {
{
- .ctl_name = 202,
+ .ctl_name = CTL_KRANAL,
.procname = "ranal",
.data = NULL,
.maxlen = 0,
#include <lnet/lnet.h>
#include <lnet/lib-lnet.h>
#include <lnet/socklnd.h>
+#include <lnet/lnet-sysctl.h>
#define SOCKNAL_PEER_HASH_SIZE 101 /* # peer lists */
#define SOCKNAL_RESCHED 100 /* # scheduler loops before reschedule */
#include "socklnd.h"
# if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
-static cfs_sysctl_table_t ksocknal_ctl_table[23];
-cfs_sysctl_table_t ksocknal_top_ctl_table[] = {
- {
- .ctl_name = 200,
- .procname = "socknal",
- .data = NULL,
- .maxlen = 0,
- .mode = 0555,
- .child = ksocknal_ctl_table
- },
- { 0 }
+#ifndef HAVE_SYSCTL_UNNUMBERED
+
+enum {
+ SOCKLND_TIMEOUT = 1,
+ SOCKLND_CREDITS,
+ SOCKLND_PEER_CREDITS,
+ SOCKLND_NCONNDS,
+ SOCKLND_RECONNECTS_MIN,
+ SOCKLND_RECONNECTS_MAX,
+ SOCKLND_EAGER_ACK,
+ SOCKLND_ZERO_COPY,
+ SOCKLND_TYPED,
+ SOCKLND_BULK_MIN,
+ SOCKLND_RX_BUFFER_SIZE,
+ SOCKLND_TX_BUFFER_SIZE,
+ SOCKLND_NAGLE,
+ SOCKLND_IRQ_AFFINITY,
+ SOCKLND_KEEPALIVE_IDLE,
+ SOCKLND_KEEPALIVE_COUNT,
+ SOCKLND_KEEPALIVE_INTVL,
+ SOCKLND_BACKOFF_INIT,
+ SOCKLND_BACKOFF_MAX,
+ SOCKLND_PROTOCOL,
+ SOCKLND_ZERO_COPY_RECV,
+ SOCKLND_ZERO_COPY_RECV_MIN_NFRAGS
};
+#else
-int
-ksocknal_lib_tunables_init ()
-{
- int i = 0;
- int j = 1;
-
- if (*ksocknal_tunables.ksnd_zc_recv_min_nfrags < 2)
- *ksocknal_tunables.ksnd_zc_recv_min_nfrags = 2;
-
- if (*ksocknal_tunables.ksnd_zc_recv_min_nfrags > LNET_MAX_IOV)
- *ksocknal_tunables.ksnd_zc_recv_min_nfrags = LNET_MAX_IOV;
+#define SOCKLND_TIMEOUT CTL_UNNUMBERED
+#define SOCKLND_CREDITS CTL_UNNUMBERED
+#define SOCKLND_PEER_CREDITS CTL_UNNUMBERED
+#define SOCKLND_NCONNDS CTL_UNNUMBERED
+#define SOCKLND_RECONNECTS_MIN CTL_UNNUMBERED
+#define SOCKLND_RECONNECTS_MAX CTL_UNNUMBERED
+#define SOCKLND_EAGER_ACK CTL_UNNUMBERED
+#define SOCKLND_ZERO_COPY CTL_UNNUMBERED
+#define SOCKLND_TYPED CTL_UNNUMBERED
+#define SOCKLND_BULK_MIN CTL_UNNUMBERED
+#define SOCKLND_RX_BUFFER_SIZE CTL_UNNUMBERED
+#define SOCKLND_TX_BUFFER_SIZE CTL_UNNUMBERED
+#define SOCKLND_NAGLE CTL_UNNUMBERED
+#define SOCKLND_IRQ_AFFINITY CTL_UNNUMBERED
+#define SOCKLND_KEEPALIVE_IDLE CTL_UNNUMBERED
+#define SOCKLND_KEEPALIVE_COUNT CTL_UNNUMBERED
+#define SOCKLND_KEEPALIVE_INTVL CTL_UNNUMBERED
+#define SOCKLND_BACKOFF_INIT CTL_UNNUMBERED
+#define SOCKLND_BACKOFF_MAX CTL_UNNUMBERED
+#define SOCKLND_PROTOCOL CTL_UNNUMBERED
+#define SOCKLND_ZERO_COPY_RECV CTL_UNNUMBERED
+#define SOCKLND_ZERO_COPY_RECV_MIN_NFRAGS CTL_UNNUMBERED
+#endif
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+static cfs_sysctl_table_t ksocknal_ctl_table[] = {
+ {
+ .ctl_name = SOCKLND_TIMEOUT,
.procname = "timeout",
.data = ksocknal_tunables.ksnd_timeout,
.maxlen = sizeof (int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_CREDITS,
.procname = "credits",
.data = ksocknal_tunables.ksnd_credits,
.maxlen = sizeof (int),
.mode = 0444,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_PEER_CREDITS,
.procname = "peer_credits",
.data = ksocknal_tunables.ksnd_peercredits,
.maxlen = sizeof (int),
.mode = 0444,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_NCONNDS,
.procname = "nconnds",
.data = ksocknal_tunables.ksnd_nconnds,
.maxlen = sizeof (int),
.mode = 0444,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_RECONNECTS_MIN,
.procname = "min_reconnectms",
.data = ksocknal_tunables.ksnd_min_reconnectms,
.maxlen = sizeof (int),
.mode = 0444,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_RECONNECTS_MAX,
.procname = "max_reconnectms",
.data = ksocknal_tunables.ksnd_max_reconnectms,
.maxlen = sizeof (int),
.mode = 0444,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_EAGER_ACK,
.procname = "eager_ack",
.data = ksocknal_tunables.ksnd_eager_ack,
.maxlen = sizeof (int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_ZERO_COPY,
.procname = "zero_copy",
.data = ksocknal_tunables.ksnd_zc_min_frag,
.maxlen = sizeof (int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_ZERO_COPY_RECV,
.procname = "zero_copy_recv",
.data = ksocknal_tunables.ksnd_zc_recv,
.maxlen = sizeof (int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
- .procname = "zero_copy_recv_min_nfrags",
- .data = ksocknal_tunables.ksnd_zc_recv_min_nfrags,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+
+ {
+ .ctl_name = SOCKLND_ZERO_COPY_RECV_MIN_NFRAGS,
+ .procname = "zero_copy_recv",
+ .data = ksocknal_tunables.ksnd_zc_recv_min_nfrags
.maxlen = sizeof (int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_TYPED,
.procname = "typed",
.data = ksocknal_tunables.ksnd_typed_conns,
.maxlen = sizeof (int),
.mode = 0444,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_BULK_MIN,
.procname = "min_bulk",
.data = ksocknal_tunables.ksnd_min_bulk,
.maxlen = sizeof (int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_RX_BUFFER_SIZE,
.procname = "rx_buffer_size",
.data = ksocknal_tunables.ksnd_rx_buffer_size,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_TX_BUFFER_SIZE,
.procname = "tx_buffer_size",
.data = ksocknal_tunables.ksnd_tx_buffer_size,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_NAGLE,
.procname = "nagle",
.data = ksocknal_tunables.ksnd_nagle,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
#ifdef CPU_AFFINITY
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ {
+ .ctl_name = SOCKLND_IRQ_AFFINITY,
.procname = "irq_affinity",
.data = ksocknal_tunables.ksnd_irq_affinity,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
#endif
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ {
+ .ctl_name = SOCKLND_KEEPALIVE_IDLE,
.procname = "keepalive_idle",
.data = ksocknal_tunables.ksnd_keepalive_idle,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_KEEPALIVE_COUNT,
.procname = "keepalive_count",
.data = ksocknal_tunables.ksnd_keepalive_count,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_KEEPALIVE_INTVL,
.procname = "keepalive_intvl",
.data = ksocknal_tunables.ksnd_keepalive_intvl,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
#ifdef SOCKNAL_BACKOFF
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ {
+ .ctl_name = SOCKLND_BACKOFF_INIT,
.procname = "backoff_init",
.data = ksocknal_tunables.ksnd_backoff_init,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
+ {
+ .ctl_name = SOCKLND_BACKOFF_MAX,
.procname = "backoff_max",
.data = ksocknal_tunables.ksnd_backoff_max,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
#endif
#if SOCKNAL_VERSION_DEBUG
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) {
- .ctl_name = j++,
+ {
+ .ctl_name = SOCKLND_PROTOCOL,
.procname = "protocol",
.data = ksocknal_tunables.ksnd_protocol,
.maxlen = sizeof(int),
.mode = 0644,
- .proc_handler = &proc_dointvec
- };
+ .proc_handler = &proc_dointvec,
+ .strategy = &sysctl_intvec,
+ },
#endif
- ksocknal_ctl_table[i++] = (cfs_sysctl_table_t) { 0 };
+ {0}
+};
- LASSERT (j == i);
- LASSERT (i <= sizeof(ksocknal_ctl_table)/sizeof(ksocknal_ctl_table[0]));
+
+cfs_sysctl_table_t ksocknal_top_ctl_table[] = {
+ {
+ .ctl_name = CTL_SOCKLND,
+ .procname = "socknal",
+ .data = NULL,
+ .maxlen = 0,
+ .mode = 0555,
+ .child = ksocknal_ctl_table
+ },
+ { 0 }
+};
+
+int
+ksocknal_lib_tunables_init ()
+{
+ if (*ksocknal_tunables.ksnd_zc_recv_min_nfrags < 2)
+ *ksocknal_tunables.ksnd_zc_recv_min_nfrags = 2;
+ if (*ksocknal_tunables.ksnd_zc_recv_min_nfrags > LNET_MAX_IOV)
+ *ksocknal_tunables.ksnd_zc_recv_min_nfrags = LNET_MAX_IOV;
ksocknal_tunables.ksnd_sysctl =
cfs_register_sysctl_table(ksocknal_top_ctl_table, 0);
msg.msg_iovlen = niov;
}
-
LASSERT (nob <= conn->ksnc_rx_nob_wanted);
set_fs (KERNEL_DS);
#include <libcfs/libcfs.h>
#include <lnet/lnet.h>
#include <lnet/lib-lnet.h>
+#include <lnet/lnet-sysctl.h>
/* CPU_{L,B}E #defines needed by Voltaire headers */
#include <asm/byteorder.h>
#endif
};
+#ifndef HAVE_SYSCTL_UNNUMBERED
+
+enum {
+ VIBLND_SERVICE = 1,
+ VIBLND_RECONNECT_MIN,
+ VIBLND_RECONNECT_MAX,
+ VIBLND_CONCURRENT_PEERS,
+ VIBLND_CHKSUM,
+ VIBLND_TIMEOUT,
+ VIBLND_NTX,
+ VIBLND_CREDITS,
+ VIBLND_PEER_CREDITS,
+ VIBLND_ARP_RETRIES,
+ VIBLND_HCA_BASENAME,
+ VIBLND_IPIF_BASENAME,
+ VIBLND_LOCAL_ACK_TIMEOUT,
+ VIBLND_RETRY_CNT,
+ VIBLND_RNR_CNT,
+ VIBLND_RNR_NAK_TIMER,
+ VIBLND_KEEPALIVE,
+ VIBLND_CONCURRENT_SENDS,
+ VIBLND_FMR_REMAPS
+};
+#else
+
+#define VIBLND_SERVICE CTL_UNNUMBERED
+#define VIBLND_RECONNECT_MIN CTL_UNNUMBERED
+#define VIBLND_RECONNECT_MAX CTL_UNNUMBERED
+#define VIBLND_CONCURRENT_PEERS CTL_UNNUMBERED
+#define VIBLND_CHKSUM CTL_UNNUMBERED
+#define VIBLND_TIMEOUT CTL_UNNUMBERED
+#define VIBLND_NTX CTL_UNNUMBERED
+#define VIBLND_CREDITS CTL_UNNUMBERED
+#define VIBLND_PEER_CREDITS CTL_UNNUMBERED
+#define VIBLND_ARP_RETRIES CTL_UNNUMBERED
+#define VIBLND_HCA_BASENAME CTL_UNNUMBERED
+#define VIBLND_IPIF_BASENAME CTL_UNNUMBERED
+#define VIBLND_LOCAL_ACK_TIMEOUT CTL_UNNUMBERED
+#define VIBLND_RETRY_CNT CTL_UNNUMBERED
+#define VIBLND_RNR_CNT CTL_UNNUMBERED
+#define VIBLND_RNR_NAK_TIMER CTL_UNNUMBERED
+#define VIBLND_KEEPALIVE CTL_UNNUMBERED
+#define VIBLND_CONCURRENT_SENDS CTL_UNNUMBERED
+#define VIBLND_FMR_REMAPS CTL_UNNUMBERED
+
+#endif
+
#if defined(CONFIG_SYSCTL) && !CFS_SYSFS_MODULE_PARM
static char hca_basename_space[32];
static cfs_sysctl_table_t kibnal_ctl_table[] = {
{
- .ctl_name = 1,
+ .ctl_name = VIBLND_SERVICE,
.procname = "service_number",
.data = &service_number,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 2,
+ .ctl_name = VIBLND_RECONNECT_MIN,
.procname = "min_reconnect_interval",
.data = &min_reconnect_interval,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 3,
+ .ctl_name = VIBLND_RECONNECT_MAX,
.procname = "max_reconnect_interval",
.data = &max_reconnect_interval,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 4,
+ .ctl_name = VIBLND_CONCURRENT_PEERS,
.procname = "concurrent_peers",
.data = &concurrent_peers,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 5,
+ .ctl_name = VIBLND_CHKSUM,
.procname = "cksum",
.data = &cksum,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 6,
+ .ctl_name = VIBLND_TIMEOUT,
.procname = "timeout",
.data = &timeout,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 7,
+ .ctl_name = VIBLND_NTX,
.procname = "ntx",
.data = &ntx,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 8,
+ .ctl_name = VIBLND_CREDITS,
.procname = "credits",
.data = &credits,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 9,
+ .ctl_name = VIBLND_PEER_CREDITS,
.procname = "peer_credits",
.data = &peer_credits,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 10,
+ .ctl_name = VIBLND_ARP_RETRIES,
.procname = "arp_retries",
.data = &arp_retries,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 11,
+ .ctl_name = VIBLND_HCA_BASENAME,
.procname = "hca_basename",
.data = hca_basename_space,
.maxlen = sizeof(hca_basename_space),
.proc_handler = &proc_dostring
},
{
- .ctl_name = 12,
+ .ctl_name = VIBLND_IPIF_BASENAME,
.procname = "ipif_basename",
.data = ipif_basename_space,
.maxlen = sizeof(ipif_basename_space),
.proc_handler = &proc_dostring
},
{
- .ctl_name = 13,
+ .ctl_name = VIBLND_LOCAL_ACK_TIMEOUT,
.procname = "local_ack_timeout",
.data = &local_ack_timeout,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 14,
+ .ctl_name = VIBLND_RETRY_CNT,
.procname = "retry_cnt",
.data = &retry_cnt,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 15,
+ .ctl_name = VIBLND_RNR_CNT,
.procname = "rnr_cnt",
.data = &rnr_cnt,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 16,
+ .ctl_name = VIBLND_RNR_NAK_TIMER,
.procname = "rnr_nak_timer",
.data = &rnr_nak_timer,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 17,
+ .ctl_name = VIBLND_KEEPALIVE,
.procname = "keepalive",
.data = &keepalive,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{
- .ctl_name = 18,
+ .ctl_name = VIBLND_CONCURRENT_SENDS,
.procname = "concurrent_sends",
.data = &concurrent_sends,
.maxlen = sizeof(int),
},
#if IBNAL_USE_FMR
{
- .ctl_name = 19,
+ .ctl_name = VIBLND_FMR_REMAPS,
.procname = "fmr_remaps",
.data = &fmr_remaps,
.maxlen = sizeof(int),
static cfs_sysctl_table_t kibnal_top_ctl_table[] = {
{
- .ctl_name = 203,
+ .ctl_name = CTL_VIBLND,
.procname = "vibnal",
.data = NULL,
.maxlen = 0,
/* this is really lnet_proc.c */
-#define LNET_PROC_STATS "sys/lnet/stats"
-#define LNET_PROC_ROUTES "sys/lnet/routes"
-#define LNET_PROC_ROUTERS "sys/lnet/routers"
-#define LNET_PROC_PEERS "sys/lnet/peers"
-#define LNET_PROC_BUFFERS "sys/lnet/buffers"
-#define LNET_PROC_NIS "sys/lnet/nis"
+#define LNET_PROC_ROOT "sys/lnet"
+#define LNET_PROC_STATS LNET_PROC_ROOT"/stats"
+#define LNET_PROC_ROUTES LNET_PROC_ROOT"/routes"
+#define LNET_PROC_ROUTERS LNET_PROC_ROOT"/routers"
+#define LNET_PROC_PEERS LNET_PROC_ROOT"/peers"
+#define LNET_PROC_BUFFERS LNET_PROC_ROOT"/buffers"
+#define LNET_PROC_NIS LNET_PROC_ROOT"/nis"
static int
lnet_router_proc_stats_read (char *page, char **start, off_t off,
{
struct proc_dir_entry *pde;
+#if 0
+ pde = proc_mkdir(LNET_PROC_ROOT, NULL);
+ if (pde == NULL) {
+ CERROR("couldn't create "LNET_PROC_ROOT"\n");
+ return;
+ }
+#endif
/* Initialize LNET_PROC_STATS */
pde = create_proc_entry (LNET_PROC_STATS, 0644, NULL);
if (pde == NULL) {
remove_proc_entry(LNET_PROC_PEERS, 0);
remove_proc_entry(LNET_PROC_BUFFERS, 0);
remove_proc_entry(LNET_PROC_NIS, 0);
+#if 0
+ remove_proc_entry(LNET_PROC_ROOT, 0);
+#endif
}
#else