diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h
index 9040bb7..f4c565e 100644
--- a/include/mbedtls/config.h
+++ b/include/mbedtls/config.h
@@ -562,7 +562,7 @@
 #define MBEDTLS_ECP_NIST_OPTIM
 
 /**
- * \def MBEDTLS_ECP_EARLY_RETURN
+ * \def MBEDTLS_ECP_RESTARTABLE
  *
  * Enable "non-blocking" ECC operations that can return early and be resumed.
  *
@@ -574,7 +574,7 @@
  *
  * Comment this macro to disable non-blocking ECC computations.
  */
-#define MBEDTLS_ECP_EARLY_RETURN
+#define MBEDTLS_ECP_RESTARTABLE
 
 /**
  * \def MBEDTLS_ECDSA_DETERMINISTIC
diff --git a/include/mbedtls/ecp.h b/include/mbedtls/ecp.h
index 1cf3ab1..325392b 100644
--- a/include/mbedtls/ecp.h
+++ b/include/mbedtls/ecp.h
@@ -171,7 +171,7 @@
 }
 mbedtls_ecp_keypair;
 
-#if defined(MBEDTLS_ECP_EARLY_RETURN)
+#if defined(MBEDTLS_ECP_RESTARTABLE)
 /**
  * \brief           Internal restart context for multiplication
  *
@@ -196,7 +196,7 @@
     mbedtls_ecp_restart_mul_ctx *rsm;   /*!<  ecp_mul_comb() sub-context    */
     mbedtls_ecp_restart_muladd_ctx *ma; /*!<  ecp_muladd() sub-context      */
 } mbedtls_ecp_restart_ctx;
-#endif /* MBEDTLS_ECP_EARLY_RETURN */
+#endif /* MBEDTLS_ECP_RESTARTABLE */
 
 /**
  * \name SECTION: Module settings
@@ -267,7 +267,7 @@
  */
 #define MBEDTLS_ECP_TLS_NAMED_CURVE    3   /**< ECCurveType's named_curve */
 
-#if defined(MBEDTLS_ECP_EARLY_RETURN)
+#if defined(MBEDTLS_ECP_RESTARTABLE)
 /**
  * \brief           Set the maximum number of basic operations done in a row.
  *
@@ -307,7 +307,7 @@
  * \note            This setting is currently ignored by Curve25519
  */
 void mbedtls_ecp_set_max_ops( unsigned max_ops );
-#endif /* MBEDTLS_ECP_EARLY_RETURN */
+#endif /* MBEDTLS_ECP_RESTARTABLE */
 
 /**
  * \brief           Get the list of supported curves in order of preferrence
@@ -383,7 +383,7 @@
  */
 void mbedtls_ecp_keypair_free( mbedtls_ecp_keypair *key );
 
-#if defined(MBEDTLS_ECP_EARLY_RETURN)
+#if defined(MBEDTLS_ECP_RESTARTABLE)
 /**
  * \brief           Initialize a restart context
  */
@@ -393,7 +393,7 @@
  * \brief           Free the components of a restart context
  */
 void mbedtls_ecp_restart_free( mbedtls_ecp_restart_ctx *ctx );
-#endif /* MBEDTLS_ECP_EARLY_RETURN */
+#endif /* MBEDTLS_ECP_RESTARTABLE */
 
 /**
  * \brief           Copy the contents of point Q into P
@@ -612,7 +612,7 @@
              const mbedtls_mpi *m, const mbedtls_ecp_point *P,
              int (*f_rng)(void *, unsigned char *, size_t), void *p_rng );
 
-#if defined(MBEDTLS_ECP_EARLY_RETURN)
+#if defined(MBEDTLS_ECP_RESTARTABLE)
 /**
  * \brief           Restartable version of \c mbedtls_ecp_mul()
  *
@@ -636,7 +636,7 @@
              const mbedtls_mpi *m, const mbedtls_ecp_point *P,
              int (*f_rng)(void *, unsigned char *, size_t), void *p_rng,
              mbedtls_ecp_restart_ctx *rs_ctx );
-#endif /* MBEDTLS_ECP_EARLY_RETURN */
+#endif /* MBEDTLS_ECP_RESTARTABLE */
 
 /**
  * \brief           Multiplication and addition of two points by integers:
@@ -662,7 +662,7 @@
              const mbedtls_mpi *m, const mbedtls_ecp_point *P,
              const mbedtls_mpi *n, const mbedtls_ecp_point *Q );
 
-#if defined(MBEDTLS_ECP_EARLY_RETURN)
+#if defined(MBEDTLS_ECP_RESTARTABLE)
 /**
  * \brief           Restartable version of \c mbedtls_ecp_muladd()
  *
