From 5c85ea8f7efbaf448334fd682858fa23a7b800ed Mon Sep 17 00:00:00 2001
From: bobijam <bobijam>
Date: Mon, 4 Aug 2008 02:57:42 +0000
Subject: [PATCH] Branch HEAD b=16205 i=adilger, zhen.liang

Handle TCP_BACKOFF in msec or sec.
---
 lnet/autoconf/lustre-lnet.m4           | 3 +++
 lnet/klnds/socklnd/socklnd_lib-linux.c | 6 ++++++
 2 files changed, 9 insertions(+)

diff --git a/lnet/autoconf/lustre-lnet.m4 b/lnet/autoconf/lustre-lnet.m4
index 734d8023be..bd0e21ea15 100644
--- a/lnet/autoconf/lustre-lnet.m4
+++ b/lnet/autoconf/lustre-lnet.m4
@@ -127,6 +127,9 @@ else
        if test "$BOCD" != 0 ; then
                AC_DEFINE(SOCKNAL_BACKOFF, 1, [use tunable backoff TCP])
                AC_MSG_RESULT(yes)
+               if grep rto_max $LINUX/include/linux/tcp.h|grep -q __u16; then
+                   AC_DEFINE(SOCKNAL_BACKOFF_MS, 1, [tunable backoff TCP in ms])
+               fi
        else
                AC_MSG_RESULT([no (no kernel support)])
        fi
diff --git a/lnet/klnds/socklnd/socklnd_lib-linux.c b/lnet/klnds/socklnd/socklnd_lib-linux.c
index 821522d139..0eb0997c9b 100644
--- a/lnet/klnds/socklnd/socklnd_lib-linux.c
+++ b/lnet/klnds/socklnd/socklnd_lib-linux.c
@@ -790,6 +790,9 @@ ksocknal_lib_setup_sock (struct socket *sock)
 #ifdef SOCKNAL_BACKOFF
         if (*ksocknal_tunables.ksnd_backoff_init > 0) {
                 option = *ksocknal_tunables.ksnd_backoff_init;
+#ifdef SOCKNAL_BACKOFF_MS
+                option *= 1000;
+#endif
 
                 set_fs (KERNEL_DS);
                 rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_BACKOFF_INIT,
@@ -804,6 +807,9 @@ ksocknal_lib_setup_sock (struct socket *sock)
 
         if (*ksocknal_tunables.ksnd_backoff_max > 0) {
                 option = *ksocknal_tunables.ksnd_backoff_max;
+#ifdef SOCKNAL_BACKOFF_MS
+                option *= 1000;
+#endif
 
                 set_fs (KERNEL_DS);
                 rc = sock->ops->setsockopt (sock, SOL_TCP, TCP_BACKOFF_MAX,
-- 
GitLab