configure: add TCP_NODELAY check
Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/configure b/configure
index 995b5df..d332c5e 100755
--- a/configure
+++ b/configure
@@ -201,6 +201,7 @@
output_sym "CONFIG_GETTIMEOFDAY"
output_sym "CONFIG_CLOCK_GETTIME"
output_sym "CONFIG_SCHED_IDLE"
+ output_sym "CONFIG_TCP_NODELAY"
echo "CC=$CC" >> $config_host_mak
echo "EXTFLAGS=$CFLAGS -include config-host.h -D_GNU_SOURCE" >> $config_host_mak
exit 0
@@ -861,6 +862,24 @@
fi
echo "SCHED_IDLE $sched_idle"
+##########################################
+# Check whether we have TCP_NODELAY
+tcp_nodelay="no"
+cat > $TMPC << EOF
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/tcp.h>
+int main(int argc, char **argv)
+{
+ return getsockopt(0, 0, TCP_NODELAY, NULL, NULL);
+}
+EOF
+if compile_prog "" "" "TCP_NODELAY"; then
+ tcp_nodelay="yes"
+fi
+echo "TCP_NODELAY $tcp_nodelay"
+
#############################################################################
echo "# Automatically generated by configure - do not modify" > $config_host_mak
@@ -967,6 +986,9 @@
if test "$sched_idle" = "yes" ; then
output_sym "CONFIG_SCHED_IDLE"
fi
+if test "$tcp_nodelay" = "yes" ; then
+ output_sym "CONFIG_TCP_NODELAY"
+fi
echo "LIBS+=$LIBS" >> $config_host_mak
echo "CC=$cc" >> $config_host_mak
diff --git a/engines/net.c b/engines/net.c
index d0f4fa0..3e03bc9 100644
--- a/engines/net.c
+++ b/engines/net.c
@@ -92,12 +92,14 @@
},
},
},
+#ifdef CONFIG_TCP_NODELAY
{
.name = "nodelay",
.type = FIO_OPT_BOOL,
.off1 = offsetof(struct netio_options, nodelay),
.help = "Use TCP_NODELAY on TCP connections",
},
+#endif
{
.name = "listen",
.type = FIO_OPT_STR_SET,
@@ -479,6 +481,7 @@
return 1;
}
+#ifdef CONFIG_TCP_NODELAY
if (o->nodelay && o->proto == FIO_TYPE_TCP) {
optval = 1;
if (setsockopt(f->fd, IPPROTO_TCP, TCP_NODELAY, (void *) &optval, sizeof(int)) < 0) {
@@ -486,6 +489,7 @@
return 1;
}
}
+#endif
if (o->proto == FIO_TYPE_UDP)
return 0;
@@ -539,6 +543,7 @@
goto err;
}
+#ifdef CONFIG_TCP_NODELAY
if (o->nodelay && o->proto == FIO_TYPE_TCP) {
optval = 1;
if (setsockopt(f->fd, IPPROTO_TCP, TCP_NODELAY, (void *) &optval, sizeof(int)) < 0) {
@@ -546,6 +551,7 @@
return 1;
}
}
+#endif
reset_all_stats(td);
td_set_runstate(td, state);