diff --git a/MAINTAINERS b/MAINTAINERS
index 4083658697fb..ea03d35dbe5a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -427,7 +427,7 @@ T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_tm*
 F: app/test-pmd/cmdline_tm.*
 
-Traffic Metering and Policing API - EXPERIMENTAL
+Traffic Metering and Policing API
 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_mtr*
diff --git a/lib/ethdev/rte_mtr.h b/lib/ethdev/rte_mtr.h
index 30e6c6b12e6e..9a20e974bdad 100644
--- a/lib/ethdev/rte_mtr.h
+++ b/lib/ethdev/rte_mtr.h
@@ -41,10 +41,8 @@
  *    A) Whether an MTR object is private to a flow or potentially shared by
  *       several flows has to be specified at creation time.
  *    B) Several meter actions can be potentially registered for the same flow.
- *
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
  */
+
 #include <stdint.h>
 #include <rte_compat.h>
 #include <rte_common.h>
@@ -569,7 +567,6 @@ struct rte_mtr_error {
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_capabilities_get(uint16_t port_id,
 	struct rte_mtr_capabilities *cap,
@@ -593,7 +590,6 @@ rte_mtr_capabilities_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_add(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -615,7 +611,6 @@ rte_mtr_meter_profile_add(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_delete(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -635,7 +630,6 @@ rte_mtr_meter_profile_delete(uint16_t port_id,
  * @return
  *   A valid handle in case of success, NULL otherwise.
  */
-__rte_experimental
 struct rte_flow_meter_profile *
 rte_mtr_meter_profile_get(uint16_t port_id,
 	uint32_t meter_profile_id,
@@ -663,7 +657,6 @@ rte_mtr_meter_profile_get(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_validate(uint16_t port_id,
 	struct rte_mtr_meter_policy_params *policy,
@@ -690,7 +683,6 @@ rte_mtr_meter_policy_validate(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_add(uint16_t port_id,
 	uint32_t policy_id,
@@ -711,7 +703,6 @@ rte_mtr_meter_policy_add(uint16_t port_id,
  * @return
  *   A valid handle in case of success, NULL otherwise.
  */
-__rte_experimental
 struct rte_flow_meter_policy *
 rte_mtr_meter_policy_get(uint16_t port_id,
 	uint32_t policy_id,
@@ -793,7 +784,6 @@ struct rte_mtr_meter_policy_params policy = \
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_delete(uint16_t port_id,
 	uint32_t policy_id,
@@ -822,7 +812,6 @@ rte_mtr_meter_policy_delete(uint16_t port_id,
  *
  * @see enum rte_flow_action_type::RTE_FLOW_ACTION_TYPE_METER
  */
-__rte_experimental
 int
 rte_mtr_create(uint16_t port_id,
 	uint32_t mtr_id,
@@ -846,7 +835,6 @@ rte_mtr_create(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_destroy(uint16_t port_id,
 	uint32_t mtr_id,
@@ -874,7 +862,6 @@ rte_mtr_destroy(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_disable(uint16_t port_id,
 	uint32_t mtr_id,
@@ -896,7 +883,6 @@ rte_mtr_meter_disable(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_enable(uint16_t port_id,
 	uint32_t mtr_id,
@@ -916,7 +902,6 @@ rte_mtr_meter_enable(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_profile_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -937,7 +922,6 @@ rte_mtr_meter_profile_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_policy_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -964,7 +948,6 @@ rte_mtr_meter_policy_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_dscp_table_update(uint16_t port_id,
 	uint32_t mtr_id, enum rte_mtr_color_in_protocol proto,
@@ -991,7 +974,6 @@ rte_mtr_meter_dscp_table_update(uint16_t port_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_meter_vlan_table_update(uint16_t port_id, uint32_t mtr_id,
 				enum rte_mtr_color_in_protocol proto,
@@ -1022,7 +1004,6 @@ rte_mtr_meter_vlan_table_update(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_set(uint16_t port_id, uint32_t mtr_id,
 	enum rte_mtr_color_in_protocol proto, uint32_t priority,
@@ -1042,7 +1023,6 @@ rte_mtr_color_in_protocol_set(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_get(uint16_t port_id, uint32_t mtr_id,
 	uint64_t *proto_mask,
@@ -1064,7 +1044,6 @@ rte_mtr_color_in_protocol_get(uint16_t port_id, uint32_t mtr_id,
  * @return
  *   0 on success, non-zero error code otherwise.
  */
-__rte_experimental
 int
 rte_mtr_color_in_protocol_priority_get(uint16_t port_id, uint32_t mtr_id,
 	enum rte_mtr_color_in_protocol proto, uint32_t *priority,
@@ -1088,7 +1067,6 @@ rte_mtr_color_in_protocol_priority_get(uint16_t port_id, uint32_t mtr_id,
  *
  * @see enum rte_mtr_stats_type
  */
-__rte_experimental
 int
 rte_mtr_stats_update(uint16_t port_id,
 	uint32_t mtr_id,
@@ -1120,7 +1098,6 @@ rte_mtr_stats_update(uint16_t port_id,
  *
  * @see enum rte_mtr_stats_type
  */
-__rte_experimental
 int
 rte_mtr_stats_read(uint16_t port_id,
 	uint32_t mtr_id,
diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map
index 919ba5b8e65b..3611909eb85a 100644
--- a/lib/ethdev/version.map
+++ b/lib/ethdev/version.map
@@ -135,26 +135,34 @@ DPDK_24 {
 	rte_flow_pick_transfer_proxy;
 	rte_flow_query;
 	rte_flow_validate;
-
-	local: *;
-};
-
-EXPERIMENTAL {
-	global:
-
-	# added in 17.11
 	rte_mtr_capabilities_get;
+	rte_mtr_color_in_protocol_get;
+	rte_mtr_color_in_protocol_priority_get;
+	rte_mtr_color_in_protocol_set;
 	rte_mtr_create;
 	rte_mtr_destroy;
 	rte_mtr_meter_disable;
 	rte_mtr_meter_dscp_table_update;
 	rte_mtr_meter_enable;
+	rte_mtr_meter_policy_add;
+	rte_mtr_meter_policy_delete;
+	rte_mtr_meter_policy_get;
+	rte_mtr_meter_policy_update;
+	rte_mtr_meter_policy_validate;
 	rte_mtr_meter_profile_add;
 	rte_mtr_meter_profile_delete;
+	rte_mtr_meter_profile_get;
 	rte_mtr_meter_profile_update;
+	rte_mtr_meter_vlan_table_update;
 	rte_mtr_stats_read;
 	rte_mtr_stats_update;
 
+	local: *;
+};
+
+EXPERIMENTAL {
+	global:
+
 	# added in 18.05
 	rte_eth_dev_get_module_eeprom;
 	rte_eth_dev_get_module_info;
@@ -237,10 +245,6 @@ EXPERIMENTAL {
 	rte_flow_action_handle_destroy;
 	rte_flow_action_handle_update;
 	rte_flow_action_handle_query;
-	rte_mtr_meter_policy_add;
-	rte_mtr_meter_policy_delete;
-	rte_mtr_meter_policy_update;
-	rte_mtr_meter_policy_validate;
 
 	# added in 21.11
 	rte_eth_dev_capability_name;
@@ -275,10 +279,6 @@ EXPERIMENTAL {
 	# added in 22.07
 	rte_eth_rx_avail_thresh_query;
 	rte_eth_rx_avail_thresh_set;
-	rte_mtr_color_in_protocol_get;
-	rte_mtr_color_in_protocol_priority_get;
-	rte_mtr_color_in_protocol_set;
-	rte_mtr_meter_vlan_table_update;
 
 	# added in 22.11
 	rte_eth_buffer_split_get_supported_hdr_ptypes;
@@ -290,8 +290,6 @@ EXPERIMENTAL {
 	rte_eth_tx_descriptor_dump;
 	rte_flow_async_action_handle_query;
 	rte_flow_get_q_aged_flows;
-	rte_mtr_meter_policy_get;
-	rte_mtr_meter_profile_get;
 
 	# added in 23.03
 	rte_eth_dev_count_aggr_ports;
