Index: benchmark/io/http/http_ring.cpp
===================================================================
--- benchmark/io/http/http_ring.cpp	(revision 348f81d5b66902e3ab25c1227eeeea38994143b5)
+++ benchmark/io/http/http_ring.cpp	(revision b664af2f3c72d17c774170f88ee26d3e590b1ec8)
@@ -68,4 +68,8 @@
 thread_local stats_block_t stats;
 stats_block_t global_stats;
+
+thread_local struct __attribute__((aligned(128))) {
+	size_t to_submit = 0;
+} local;
 
 // Get an array of current connections
@@ -193,4 +197,5 @@
 	static void submit(struct io_uring * ring, struct io_uring_sqe * sqe, connection * conn) {
 		(void)ring;
+		local.to_submit++;
 		#ifdef USE_ASYNC
 			io_uring_sqe_set_flags(sqe, IOSQE_ASYNC);
@@ -407,5 +412,5 @@
 		switch(state) {
 		case ACCEPTING:
-			connection::accept(ring, opt);
+			// connection::accept(ring, opt);
 			newconn(ring, res);
 			break;
@@ -421,4 +426,8 @@
 
 //=========================================================
+extern "C" {
+	#include <sys/eventfd.h>  // use for termination
+}
+
 // Main loop of the WebServer
 // Effectively uses one thread_local copy of everything per kernel thread
@@ -427,4 +436,16 @@
 	struct options_t & opt = *(struct options_t *)arg;
 	struct io_uring * ring = opt.ring;
+
+	int blockfd = eventfd(0, 0);
+	if (blockfd < 0) {
+		fprintf( stderr, "eventfd create error: (%d) %s\n", (int)errno, strerror(errno) );
+		exit(EXIT_FAILURE);
+	}
+
+	int ret = io_uring_register_eventfd(ring, blockfd);
+	if (ret < 0) {
+		fprintf( stderr, "io_uring S&W error: (%d) %s\n", (int)-ret, strerror(-ret) );
+		exit(EXIT_FAILURE);
+	}
 
 	// Track the shutdown using a event_fd
@@ -445,4 +466,5 @@
 		// Submit all the answers we have and wait for responses
 		int ret = io_uring_submit_and_wait(ring, 1);
+		local.to_submit = 0;
 
 		// check errors
@@ -455,4 +477,14 @@
 		sqes += ret;
 		call++;
+
+
+		// eventfd_t val;
+		// ret = eventfd_read(blockfd, &val);
+
+		// // check errors
+		// if (ret < 0) {
+		// 	fprintf( stderr, "eventfd read error: (%d) %s\n", (int)errno, strerror(errno) );
+		// 	exit(EXIT_FAILURE);
+		// }
 
 		struct io_uring_cqe *cqe;
@@ -466,4 +498,6 @@
 				break;
 			}
+
+			if(local.to_submit > 30) break;
 
 			auto req = (class connection *)cqe->user_data;
@@ -512,5 +546,4 @@
 	#include <pthread.h>      // for pthreads
 	#include <signal.h>       // for signal(SIGPIPE, SIG_IGN);
-	#include <sys/eventfd.h>  // use for termination
 	#include <sys/socket.h>   // for sockets in general
 	#include <netinet/in.h>   // for sockaddr_in, AF_INET
