diff --git a/doc/configuration.txt b/doc/configuration.txt
index e28601f..3ab2d48 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -2146,12 +2146,8 @@
   value set using this parameter will automatically be rounded up to the next
   multiple of 8 on 32-bit machines and 16 on 64-bit machines.
 
-tune.chksize <number>
-  Sets the check buffer size to this size (in bytes). Higher values may help
-  find string or regex patterns in very large pages, though doing so may imply
-  more memory and CPU usage. The default value is 16384 and can be changed at
-  build time. It is not recommended to change this value, but to use better
-  checks whenever possible.
+tune.chksize <number> (deprecated)
+  This option is deprecated and ignored.
 
 tune.comp.maxlevel <number>
   Sets the maximum compression level. The compression level affects CPU
@@ -5283,7 +5279,7 @@
                       considered invalid if the body contains the string.
 
   It is important to note that the responses will be limited to a certain size
-  defined by the global "tune.chksize" option, which defaults to 16384 bytes.
+  defined by the global "tune.bufsize" option, which defaults to 16384 bytes.
   Thus, too large responses may not contain the mandatory pattern when using
   "string" or "rstring". If a large response is absolutely required, it is
   possible to change the default max size by setting the global variable.
@@ -11146,7 +11142,7 @@
                          buffer.
 
   It is important to note that the responses will be limited to a certain size
-  defined by the global "tune.chksize" option, which defaults to 16384 bytes.
+  defined by the global "tune.bufsize" option, which defaults to 16384 bytes.
   Thus, too large responses may not contain the mandatory pattern when using
   "string", "rstring" or binary. If a large response is absolutely required, it
   is possible to change the default max size by setting the global variable.
@@ -11177,7 +11173,7 @@
 
 
   See also : "option tcp-check", "tcp-check connect", "tcp-check send",
-             "tcp-check send-binary", "http-check expect", tune.chksize
+             "tcp-check send-binary", "http-check expect", tune.bufsize
 
 
 tcp-check send <data> [comment <msg>]
@@ -11203,7 +11199,7 @@
          tcp-check expect string role:master
 
   See also : "option tcp-check", "tcp-check connect", "tcp-check expect",
-             "tcp-check send-binary", tune.chksize
+             "tcp-check send-binary", tune.bufsize
 
 
 tcp-check send-binary <hexstring> [comment <msg>]
@@ -11231,7 +11227,7 @@
 
 
   See also : "option tcp-check", "tcp-check connect", "tcp-check expect",
-             "tcp-check send", tune.chksize
+             "tcp-check send", tune.bufsize
 
 
 tcp-check set-var(<var-name>) <expr>
diff --git a/include/haproxy/global-t.h b/include/haproxy/global-t.h
index 8acba89..c19d069 100644
--- a/include/haproxy/global-t.h
+++ b/include/haproxy/global-t.h
@@ -151,7 +151,6 @@
 		int client_rcvbuf; /* set client rcvbuf to this value if not null */
 		int server_sndbuf; /* set server sndbuf to this value if not null */
 		int server_rcvbuf; /* set server rcvbuf to this value if not null */
-		int chksize;       /* check buffer size in bytes, defaults to BUFSIZE */
 		int pipesize;      /* pipe size in bytes, system defaults if zero */
 		int max_http_hdr;  /* max number of HTTP headers, use MAX_HTTP_HDR if zero */
 		int requri_len;    /* max len of request URI, use REQURI_LEN if zero */
diff --git a/src/cfgparse-global.c b/src/cfgparse-global.c
index 4547d96..ca447bb 100644
--- a/src/cfgparse-global.c
+++ b/src/cfgparse-global.c
@@ -190,14 +190,7 @@
 		global.tune.maxaccept = max;
 	}
 	else if (!strcmp(args[0], "tune.chksize")) {
-		if (alertif_too_many_args(1, file, linenum, args, &err_code))
-			goto out;
-		if (*(args[1]) == 0) {
-			ha_alert("parsing [%s:%d] : '%s' expects an integer argument.\n", file, linenum, args[0]);
-			err_code |= ERR_ALERT | ERR_FATAL;
-			goto out;
-		}
-		global.tune.chksize = atol(args[1]);
+		/* Deprecated now */
 	}
 	else if (!strcmp(args[0], "tune.recv_enough")) {
 		if (alertif_too_many_args(1, file, linenum, args, &err_code))
diff --git a/src/haproxy.c b/src/haproxy.c
index ae11f8d..6d17f31 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -164,7 +164,6 @@
 		.options = GTUNE_LISTENER_MQ,
 		.bufsize = (BUFSIZE + 2*sizeof(void *) - 1) & -(2*sizeof(void *)),
 		.maxrewrite = MAXREWRITE,
-		.chksize = (BUFSIZE + 2*sizeof(void *) - 1) & -(2*sizeof(void *)),
 		.reserved_bufs = RESERVED_BUFS,
 		.pattern_cache = DEFAULT_PAT_LRU_SIZE,
 		.pool_low_ratio  = 20,
diff --git a/src/payload.c b/src/payload.c
index 52be784..f867541 100644
--- a/src/payload.c
+++ b/src/payload.c
@@ -976,14 +976,13 @@
 		chn = ((smp->opt & SMP_OPT_DIR) == SMP_OPT_DIR_RES) ? &smp->strm->res : &smp->strm->req;
 		head = ci_head(chn);
 		data = ci_data(chn);
-		max  = global.tune.bufsize;
 	}
 	else if (obj_type(smp->sess->origin) == OBJ_TYPE_CHECK) {
 		struct buffer *buf = &(__objt_check(smp->sess->origin)->bi);
 		head = b_head(buf);
 		data = b_data(buf);
-		max  = global.tune.chksize;
 	}
+	max = global.tune.bufsize;
 	if (!head)
 		return 0;
 
@@ -1039,14 +1038,13 @@
 		chn = ((smp->opt & SMP_OPT_DIR) == SMP_OPT_DIR_RES) ? &smp->strm->res : &smp->strm->req;
 		head = ci_head(chn);
 		data = ci_data(chn);
-		max  = global.tune.bufsize;
 	}
 	else if (obj_type(smp->sess->origin) == OBJ_TYPE_CHECK) {
 		struct buffer *buf = &(__objt_check(smp->sess->origin)->bi);
 		head = b_head(buf);
 		data = b_data(buf);
-		max  = global.tune.chksize;
 	}
+	max = global.tune.bufsize;
 	if (!head)
 		return 0;
 
diff --git a/src/tcpcheck.c b/src/tcpcheck.c
index 2fa49ec..f5eb8e9 100644
--- a/src/tcpcheck.c
+++ b/src/tcpcheck.c
@@ -2737,7 +2737,7 @@
 				memprintf(errmsg, "'%s' expects a integer as argument", args[cur_arg]);
 				goto error;
 			}
-			/* Use an signed integer here because of chksize */
+			/* Use an signed integer here because of bufsize */
 			cur_arg++;
 			min_recv = atol(args[cur_arg]);
 			if (min_recv < -1 || min_recv > INT_MAX) {
