diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h
index 15bd6fd..9a66663 100644
--- a/include/mbedtls/ssl.h
+++ b/include/mbedtls/ssl.h
@@ -1869,7 +1869,7 @@
      */
     uint8_t MBEDTLS_PRIVATE(discard_early_data_record);
 #endif
-    uint32_t MBEDTLS_PRIVATE(early_data_count);  /*!< Number of received/written early data bytes */
+    uint32_t MBEDTLS_PRIVATE(total_early_data_size); /*!< Number of received/written early data bytes */
 #endif /* MBEDTLS_SSL_EARLY_DATA */
 
     /*
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index ee72179..5bedd91 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -1105,7 +1105,7 @@
 #if defined(MBEDTLS_SSL_SRV_C)
     ssl->discard_early_data_record = MBEDTLS_SSL_EARLY_DATA_NO_DISCARD;
 #endif
-    ssl->early_data_count = 0;
+    ssl->total_early_data_size = 0;
 #endif /* MBEDTLS_SSL_EARLY_DATA */
 
     /* Initialize structures */
diff --git a/library/ssl_tls13_generic.c b/library/ssl_tls13_generic.c
index c5698f6..eec2bb4 100644
--- a/library/ssl_tls13_generic.c
+++ b/library/ssl_tls13_generic.c
@@ -1477,11 +1477,11 @@
      */
     if (uint32_early_data_len >
         (ssl->session_negotiate->max_early_data_size -
-         ssl->early_data_count)) {
+         ssl->total_early_data_size)) {
 
         MBEDTLS_SSL_DEBUG_MSG(
             2, ("EarlyData: Too much early data received, %u > %u",
-                ssl->early_data_count + uint32_early_data_len,
+                ssl->total_early_data_size + uint32_early_data_len,
                 ssl->session_negotiate->max_early_data_size));
 
         MBEDTLS_SSL_PEND_FATAL_ALERT(
@@ -1490,7 +1490,7 @@
         return MBEDTLS_ERR_SSL_UNEXPECTED_MESSAGE;
     }
 
-    ssl->early_data_count += uint32_early_data_len;
+    ssl->total_early_data_size += uint32_early_data_len;
 
     return 0;
 }
diff --git a/tests/suites/test_suite_ssl.function b/tests/suites/test_suite_ssl.function
index aca8276..791386b 100644
--- a/tests/suites/test_suite_ssl.function
+++ b/tests/suites/test_suite_ssl.function
@@ -4583,7 +4583,7 @@
         unsigned char buf_read[23];
         uint32_t read_early_data_size = 0;
         uint32_t remaining = max_early_data_size -
-                             server_ep.ssl.early_data_count;
+                             server_ep.ssl.total_early_data_size;
 
         early_data_len = sizeof(buf_write);
         /*
@@ -4628,7 +4628,7 @@
                                         buf_write + read_early_data_size, ret);
                     read_early_data_size += ret;
 
-                    TEST_EQUAL(server_ep.ssl.early_data_count,
+                    TEST_EQUAL(server_ep.ssl.total_early_data_size,
                                written_early_data_size);
                 }
                 break;
@@ -4651,22 +4651,22 @@
                 TEST_EQUAL(server_pattern.counter, 1);
                 server_pattern.counter = 0;
                 if (expended_early_data_len == 0) {
-                    expended_early_data_len = server_ep.ssl.early_data_count;
+                    expended_early_data_len = server_ep.ssl.total_early_data_size;
                 }
-                remaining = max_early_data_size - server_ep.ssl.early_data_count;
+                remaining = max_early_data_size - server_ep.ssl.total_early_data_size;
 
                 if (expended_early_data_len > remaining) {
                     write_early_data_flag = 0;
                 }
                 break;
         }
-        TEST_ASSERT(server_ep.ssl.early_data_count <= max_early_data_size);
+        TEST_ASSERT(server_ep.ssl.total_early_data_size <= max_early_data_size);
     }
 
     mbedtls_debug_set_threshold(3);
 
     if (reach_max) {
-        TEST_EQUAL(server_ep.ssl.early_data_count, max_early_data_size);
+        TEST_EQUAL(server_ep.ssl.total_early_data_size, max_early_data_size);
     }
 
     ret = write_early_data(&(client_ep.ssl), buf_write, early_data_len);
