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);