diff --git a/src/knot/server/xdp-handler.c b/src/knot/server/xdp-handler.c
index 9f68a456790f9dd1044da24bb1dfda772953a37b..5e4c343941bb16c215eeeae55b7064b3475e71e1 100644
--- a/src/knot/server/xdp-handler.c
+++ b/src/knot/server/xdp-handler.c
@@ -221,7 +221,13 @@ int xdp_handle_send(xdp_handle_ctx_t *ctx, knot_xdp_socket_t *xdp_sock)
 
 int xdp_handle_timeout(xdp_handle_ctx_t *ctx, knot_xdp_socket_t *xdp_sock)
 {
-	return knot_xdp_tcp_timeout(ctx->tcp_table, xdp_sock, 20, 2000000, 4000000, overweight(ctx->tcp_table->usage, 1000), 0, NULL); // FIXME configurable parameters
+	uint32_t last_reset = 0;
+	int ret = KNOT_EOK;
+	do {
+		ret = knot_xdp_tcp_timeout(ctx->tcp_table, xdp_sock, 20, 2000000, 4000000, // FIXME configurable parameters
+		                           overweight(ctx->tcp_table->usage, 1000), 0, &last_reset);
+	} while (last_reset > 0 && ret == KNOT_EOK);
+	return ret;
 }
 
 #endif // ENABLE_XDP