[dpdk-dev] ethdev: remove experimental flag of ports enumeration

Message ID 20180424021511.17430-1-thomas@monjalon.net (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail apply patch file failure

Commit Message

Thomas Monjalon April 24, 2018, 2:15 a.m. UTC
  The basic operations for ports enumeration should not be
considered as experimental in DPDK 18.05.

The iterator RTE_ETH_FOREACH_DEV was introduced in DPDK 17.05.
It uses the function the rte_eth_find_next_owned_by() to get
only ownerless ports. Its API can be considered stable.
So the flag experimental is removed from rte_eth_find_next_owned_by().

The flag experimental is removed from rte_eth_dev_count_avail()
which is the new name of the old function rte_eth_dev_count().

The flag experimental is set to rte_eth_dev_count_total()
in the .c file for consistency with the declaration in the .h file.

A lot of internal applications are fixed to not allow experimental API.

Fixes: 8728ccf37615 ("fix ethdev ports enumeration")
Fixes: d9a42a69febf ("ethdev: deprecate port count function")
Fixes: e70e26861eaf ("net/mvpp2: fix build")

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---

It was a really bad idea to keep the iterator macro and function
as experimental.
And it was a real mistake of setting the new name of rte_eth_dev_count
function as experimental.

I think this fix must be merged in 18.05-rc1, in order to avoid
troubles when testing coming RC1.

---
 drivers/net/bonding/Makefile                               |  1 -
 drivers/net/bonding/meson.build                            |  2 --
 drivers/net/mvpp2/Makefile                                 |  1 -
 examples/bond/Makefile                                     |  3 ---
 examples/bond/meson.build                                  |  1 -
 examples/distributor/Makefile                              |  3 ---
 examples/distributor/meson.build                           |  1 -
 examples/ethtool/ethtool-app/Makefile                      |  1 -
 examples/exception_path/Makefile                           |  3 ---
 examples/exception_path/meson.build                        |  1 -
 examples/flow_filtering/Makefile                           |  3 ---
 examples/flow_filtering/meson.build                        |  1 -
 examples/ip_fragmentation/Makefile                         |  3 ---
 examples/ip_fragmentation/meson.build                      |  1 -
 examples/ip_reassembly/Makefile                            |  3 ---
 examples/ip_reassembly/meson.build                         |  1 -
 examples/ipv4_multicast/Makefile                           |  3 ---
 examples/ipv4_multicast/meson.build                        |  1 -
 examples/kni/Makefile                                      |  3 ---
 examples/kni/meson.build                                   |  1 -
 examples/l2fwd-cat/Makefile                                |  2 --
 examples/l2fwd-cat/meson.build                             |  1 -
 examples/l2fwd-crypto/Makefile                             |  3 ---
 examples/l2fwd-crypto/meson.build                          |  1 -
 examples/l2fwd-jobstats/Makefile                           |  4 +---
 examples/l2fwd-jobstats/meson.build                        |  1 -
 examples/l2fwd-keepalive/Makefile                          |  3 ---
 examples/l2fwd-keepalive/meson.build                       |  1 -
 examples/l2fwd/Makefile                                    |  3 ---
 examples/l2fwd/meson.build                                 |  1 -
 examples/l3fwd-acl/Makefile                                |  3 ---
 examples/l3fwd-acl/meson.build                             |  1 -
 examples/l3fwd-power/Makefile                              |  3 ---
 examples/l3fwd-power/meson.build                           |  1 -
 examples/l3fwd-vf/Makefile                                 |  3 ---
 examples/l3fwd-vf/meson.build                              |  1 -
 examples/l3fwd/Makefile                                    |  3 ---
 examples/l3fwd/meson.build                                 |  1 -
 examples/link_status_interrupt/Makefile                    |  3 ---
 examples/link_status_interrupt/meson.build                 |  1 -
 examples/multi_process/client_server_mp/mp_client/Makefile |  1 -
 examples/multi_process/l2fwd_fork/Makefile                 |  1 -
 examples/multi_process/symmetric_mp/Makefile               |  1 -
 examples/netmap_compat/bridge/Makefile                     |  1 -
 examples/packet_ordering/Makefile                          |  3 ---
 examples/packet_ordering/meson.build                       |  1 -
 examples/performance-thread/l3fwd-thread/Makefile          |  1 -
 examples/ptpclient/Makefile                                |  3 ---
 examples/ptpclient/meson.build                             |  1 -
 examples/qos_sched/Makefile                                |  3 ---
 examples/qos_sched/meson.build                             |  1 -
 examples/quota_watermark/qw/Makefile                       |  1 -
 examples/rxtx_callbacks/Makefile                           |  3 ---
 examples/rxtx_callbacks/meson.build                        |  1 -
 examples/server_node_efd/node/Makefile                     |  1 -
 examples/server_node_efd/server/Makefile                   |  1 -
 examples/skeleton/Makefile                                 |  3 ---
 examples/skeleton/meson.build                              |  3 ---
 examples/tep_termination/Makefile                          |  3 ---
 examples/tep_termination/meson.build                       |  1 -
 examples/vhost/Makefile                                    |  3 ---
 examples/vhost/meson.build                                 |  1 -
 examples/vm_power_manager/Makefile                         |  1 -
 examples/vmdq/Makefile                                     |  3 ---
 examples/vmdq/meson.build                                  |  1 -
 examples/vmdq_dcb/Makefile                                 |  3 ---
 examples/vmdq_dcb/meson.build                              |  1 -
 lib/librte_ether/rte_ethdev.c                              |  4 ++--
 lib/librte_ether/rte_ethdev.h                              |  7 ++-----
 lib/librte_ether/rte_ethdev_version.map                    | 10 ++++++++--
 lib/librte_latencystats/Makefile                           |  1 -
 lib/librte_latencystats/meson.build                        |  1 -
 72 files changed, 13 insertions(+), 134 deletions(-)
  

Comments

David Marchand April 24, 2018, 11:59 a.m. UTC | #1
On Tue, Apr 24, 2018 at 4:15 AM, Thomas Monjalon <thomas@monjalon.net> wrote:
> The basic operations for ports enumeration should not be
> considered as experimental in DPDK 18.05.
>
> The iterator RTE_ETH_FOREACH_DEV was introduced in DPDK 17.05.
> It uses the function the rte_eth_find_next_owned_by() to get
> only ownerless ports. Its API can be considered stable.
> So the flag experimental is removed from rte_eth_find_next_owned_by().
>
> The flag experimental is removed from rte_eth_dev_count_avail()
> which is the new name of the old function rte_eth_dev_count().
>
> The flag experimental is set to rte_eth_dev_count_total()
> in the .c file for consistency with the declaration in the .h file.
>
> A lot of internal applications are fixed to not allow experimental API.
>
> Fixes: 8728ccf37615 ("fix ethdev ports enumeration")
> Fixes: d9a42a69febf ("ethdev: deprecate port count function")
> Fixes: e70e26861eaf ("net/mvpp2: fix build")
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

Tested-by: David Marchand <david.marchand@6wind.com>

> It was a really bad idea to keep the iterator macro and function
> as experimental.
> And it was a real mistake of setting the new name of rte_eth_dev_count
> function as experimental.
>
> I think this fix must be merged in 18.05-rc1, in order to avoid
> troubles when testing coming RC1.

+1
  
Ferruh Yigit April 24, 2018, 6:16 p.m. UTC | #2
On 4/24/2018 3:15 AM, Thomas Monjalon wrote:
> The basic operations for ports enumeration should not be
> considered as experimental in DPDK 18.05.
> 
> The iterator RTE_ETH_FOREACH_DEV was introduced in DPDK 17.05.
> It uses the function the rte_eth_find_next_owned_by() to get
> only ownerless ports. Its API can be considered stable.
> So the flag experimental is removed from rte_eth_find_next_owned_by().
> 
> The flag experimental is removed from rte_eth_dev_count_avail()
> which is the new name of the old function rte_eth_dev_count().
> 
> The flag experimental is set to rte_eth_dev_count_total()
> in the .c file for consistency with the declaration in the .h file.
> 
> A lot of internal applications are fixed to not allow experimental API.
> 
> Fixes: 8728ccf37615 ("fix ethdev ports enumeration")
> Fixes: d9a42a69febf ("ethdev: deprecate port count function")
> Fixes: e70e26861eaf ("net/mvpp2: fix build")
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
> 
> It was a really bad idea to keep the iterator macro and function
> as experimental.
> And it was a real mistake of setting the new name of rte_eth_dev_count
> function as experimental.
> 
> I think this fix must be merged in 18.05-rc1, in order to avoid
> troubles when testing coming RC1.

Agree that these are very common functions and setting them experimental will
cause almost all application allow experimental which will weaken the value of
allow_experimental flag by hiding other experimental APIs because of these.

+1 to having this change for -rc1.
  
Ferruh Yigit April 25, 2018, 10:21 a.m. UTC | #3
On 4/24/2018 3:15 AM, Thomas Monjalon wrote:
> The basic operations for ports enumeration should not be
> considered as experimental in DPDK 18.05.
> 
> The iterator RTE_ETH_FOREACH_DEV was introduced in DPDK 17.05.
> It uses the function the rte_eth_find_next_owned_by() to get
> only ownerless ports. Its API can be considered stable.
> So the flag experimental is removed from rte_eth_find_next_owned_by().
> 
> The flag experimental is removed from rte_eth_dev_count_avail()
> which is the new name of the old function rte_eth_dev_count().
> 
> The flag experimental is set to rte_eth_dev_count_total()
> in the .c file for consistency with the declaration in the .h file.
> 
> A lot of internal applications are fixed to not allow experimental API.
> 
> Fixes: 8728ccf37615 ("fix ethdev ports enumeration")
> Fixes: d9a42a69febf ("ethdev: deprecate port count function")
> Fixes: e70e26861eaf ("net/mvpp2: fix build")
> 
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>

Getting some build errors [1], it seems some samples are using some other
experimental APIs so that we can't remove the flag for them.


[1]
.../dpdk/examples/tep_termination/main.c: In function ‘main’:
.../dpdk/examples/tep_termination/main.c:1209:3: error: ‘rte_ctrl_thread_create’
is deprecated: Symbol is not yet part of stable ABI
[-Werror=deprecated-declarations]
   ret = rte_ctrl_thread_create(&tid, "print-stats", NULL,
   ^~~

.../dpdk/examples/vhost/main.c: In function ‘main’:
.../dpdk/examples/vhost/main.c:1497:3: error: ‘rte_ctrl_thread_create’ is
deprecated: Symbol is not yet part of stable ABI [-Werror=deprecated-declarations]
   ret = rte_ctrl_thread_create(&tid, "print-stats", NULL,
   ^~~
  
Thomas Monjalon April 25, 2018, 10:29 a.m. UTC | #4
25/04/2018 12:21, Ferruh Yigit:
> On 4/24/2018 3:15 AM, Thomas Monjalon wrote:
> > The basic operations for ports enumeration should not be
> > considered as experimental in DPDK 18.05.
> > 
> > The iterator RTE_ETH_FOREACH_DEV was introduced in DPDK 17.05.
> > It uses the function the rte_eth_find_next_owned_by() to get
> > only ownerless ports. Its API can be considered stable.
> > So the flag experimental is removed from rte_eth_find_next_owned_by().
> > 
> > The flag experimental is removed from rte_eth_dev_count_avail()
> > which is the new name of the old function rte_eth_dev_count().
> > 
> > The flag experimental is set to rte_eth_dev_count_total()
> > in the .c file for consistency with the declaration in the .h file.
> > 
> > A lot of internal applications are fixed to not allow experimental API.
> > 
> > Fixes: 8728ccf37615 ("fix ethdev ports enumeration")
> > Fixes: d9a42a69febf ("ethdev: deprecate port count function")
> > Fixes: e70e26861eaf ("net/mvpp2: fix build")
> > 
> > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> 
> Getting some build errors [1], it seems some samples are using some other
> experimental APIs so that we can't remove the flag for them.
> 
> 
> [1]
> .../dpdk/examples/tep_termination/main.c: In function ‘main’:
> .../dpdk/examples/tep_termination/main.c:1209:3: error: ‘rte_ctrl_thread_create’
> is deprecated: Symbol is not yet part of stable ABI
> [-Werror=deprecated-declarations]
>    ret = rte_ctrl_thread_create(&tid, "print-stats", NULL,
>    ^~~
> 
> .../dpdk/examples/vhost/main.c: In function ‘main’:
> .../dpdk/examples/vhost/main.c:1497:3: error: ‘rte_ctrl_thread_create’ is
> deprecated: Symbol is not yet part of stable ABI [-Werror=deprecated-declarations]
>    ret = rte_ctrl_thread_create(&tid, "print-stats", NULL,
>    ^~~

Ah sorry, I think it is due to a change in next-net.
I have prepared this patch on master.

Please can you fix it when applying?
  
Ferruh Yigit April 25, 2018, 10:52 a.m. UTC | #5
On 4/25/2018 11:29 AM, Thomas Monjalon wrote:
> 25/04/2018 12:21, Ferruh Yigit:
>> On 4/24/2018 3:15 AM, Thomas Monjalon wrote:
>>> The basic operations for ports enumeration should not be
>>> considered as experimental in DPDK 18.05.
>>>
>>> The iterator RTE_ETH_FOREACH_DEV was introduced in DPDK 17.05.
>>> It uses the function the rte_eth_find_next_owned_by() to get
>>> only ownerless ports. Its API can be considered stable.
>>> So the flag experimental is removed from rte_eth_find_next_owned_by().
>>>
>>> The flag experimental is removed from rte_eth_dev_count_avail()
>>> which is the new name of the old function rte_eth_dev_count().
>>>
>>> The flag experimental is set to rte_eth_dev_count_total()
>>> in the .c file for consistency with the declaration in the .h file.
>>>
>>> A lot of internal applications are fixed to not allow experimental API.
>>>
>>> Fixes: 8728ccf37615 ("fix ethdev ports enumeration")
>>> Fixes: d9a42a69febf ("ethdev: deprecate port count function")
>>> Fixes: e70e26861eaf ("net/mvpp2: fix build")
>>>
>>> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
>>
>> Getting some build errors [1], it seems some samples are using some other
>> experimental APIs so that we can't remove the flag for them.
>>
>>
>> [1]
>> .../dpdk/examples/tep_termination/main.c: In function ‘main’:
>> .../dpdk/examples/tep_termination/main.c:1209:3: error: ‘rte_ctrl_thread_create’
>> is deprecated: Symbol is not yet part of stable ABI
>> [-Werror=deprecated-declarations]
>>    ret = rte_ctrl_thread_create(&tid, "print-stats", NULL,
>>    ^~~
>>
>> .../dpdk/examples/vhost/main.c: In function ‘main’:
>> .../dpdk/examples/vhost/main.c:1497:3: error: ‘rte_ctrl_thread_create’ is
>> deprecated: Symbol is not yet part of stable ABI [-Werror=deprecated-declarations]
>>    ret = rte_ctrl_thread_create(&tid, "print-stats", NULL,
>>    ^~~
> 
> Ah sorry, I think it is due to a change in next-net.
> I have prepared this patch on master.
> 
> Please can you fix it when applying?

OK, I will.
  
Ferruh Yigit April 25, 2018, 11:11 a.m. UTC | #6
On 4/24/2018 12:59 PM, David Marchand wrote:
> On Tue, Apr 24, 2018 at 4:15 AM, Thomas Monjalon <thomas@monjalon.net> wrote:
>> The basic operations for ports enumeration should not be
>> considered as experimental in DPDK 18.05.
>>
>> The iterator RTE_ETH_FOREACH_DEV was introduced in DPDK 17.05.
>> It uses the function the rte_eth_find_next_owned_by() to get
>> only ownerless ports. Its API can be considered stable.
>> So the flag experimental is removed from rte_eth_find_next_owned_by().
>>
>> The flag experimental is removed from rte_eth_dev_count_avail()
>> which is the new name of the old function rte_eth_dev_count().
>>
>> The flag experimental is set to rte_eth_dev_count_total()
>> in the .c file for consistency with the declaration in the .h file.
>>
>> A lot of internal applications are fixed to not allow experimental API.
>>
>> Fixes: 8728ccf37615 ("fix ethdev ports enumeration")
>> Fixes: d9a42a69febf ("ethdev: deprecate port count function")
>> Fixes: e70e26861eaf ("net/mvpp2: fix build")
>>
>> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> 
> Tested-by: David Marchand <david.marchand@6wind.com>

Applied to dpdk-next-net/master, thanks.

(Fixed tep_termination & vhost sample app build fix by adding
-DALLOW_EXPERIMENTAL_API back)

> 
>> It was a really bad idea to keep the iterator macro and function
>> as experimental.
>> And it was a real mistake of setting the new name of rte_eth_dev_count
>> function as experimental.
>>
>> I think this fix must be merged in 18.05-rc1, in order to avoid
>> troubles when testing coming RC1.
> 
> +1
> 
>
  

Patch

diff --git a/drivers/net/bonding/Makefile b/drivers/net/bonding/Makefile
index 44353a1f8..4a6633ede 100644
--- a/drivers/net/bonding/Makefile
+++ b/drivers/net/bonding/Makefile
@@ -8,7 +8,6 @@  include $(RTE_SDK)/mk/rte.vars.mk
 #
 LIB = librte_pmd_bond.a
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
diff --git a/drivers/net/bonding/meson.build b/drivers/net/bonding/meson.build
index 98fdd37af..44d5fd8e7 100644
--- a/drivers/net/bonding/meson.build
+++ b/drivers/net/bonding/meson.build
@@ -9,6 +9,4 @@  sources = files('rte_eth_bond_api.c', 'rte_eth_bond_pmd.c',
 deps += 'sched' # needed for rte_bitmap.h
 deps += ['ip_frag', 'cmdline']
 
-allow_experimental_apis = true
-
 install_headers('rte_eth_bond.h', 'rte_eth_bond_8023ad.h')
diff --git a/drivers/net/mvpp2/Makefile b/drivers/net/mvpp2/Makefile
index f07029f4d..492aef977 100644
--- a/drivers/net/mvpp2/Makefile
+++ b/drivers/net/mvpp2/Makefile
@@ -27,7 +27,6 @@  CFLAGS += -I$(LIBMUSDK_PATH)/include
 CFLAGS += -DMVCONF_TYPES_PUBLIC
 CFLAGS += -DMVCONF_DMA_PHYS_ADDR_T_PUBLIC
 CFLAGS += $(WERROR_FLAGS)
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 LDLIBS += -L$(LIBMUSDK_PATH)/lib
 LDLIBS += -lmusdk
diff --git a/examples/bond/Makefile b/examples/bond/Makefile
index e7afce358..44d10d4f5 100644
--- a/examples/bond/Makefile
+++ b/examples/bond/Makefile
@@ -25,8 +25,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -60,7 +58,6 @@  ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
 CFLAGS_main.o += -Wno-return-type
 endif
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 
 ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
diff --git a/examples/bond/meson.build b/examples/bond/meson.build
index 82e355a49..8f65e4a8d 100644
--- a/examples/bond/meson.build
+++ b/examples/bond/meson.build
@@ -7,7 +7,6 @@ 
 # DPDK instance, use 'make'
 
 deps += 'pmd_bond'
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/distributor/Makefile b/examples/distributor/Makefile
index cb1bd216d..05ea0bfec 100644
--- a/examples/distributor/Makefile
+++ b/examples/distributor/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += $(WERROR_FLAGS)
 
 # workaround for a gcc bug with noreturn attribute
diff --git a/examples/distributor/meson.build b/examples/distributor/meson.build
index d036ea0f6..88c001f56 100644
--- a/examples/distributor/meson.build
+++ b/examples/distributor/meson.build
@@ -7,7 +7,6 @@ 
 # DPDK instance, use 'make'
 
 deps += 'distributor'
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/ethtool/ethtool-app/Makefile b/examples/ethtool/ethtool-app/Makefile
index 1d400f19b..4cd9efdd5 100644
--- a/examples/ethtool/ethtool-app/Makefile
+++ b/examples/ethtool/ethtool-app/Makefile
@@ -16,7 +16,6 @@  APP = ethtool
 # all source are stored in SRCS-y
 SRCS-y := main.c ethapp.c
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3 -D_GNU_SOURCE -pthread -I$(SRCDIR)/../lib
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/exception_path/Makefile b/examples/exception_path/Makefile
index 88f709eff..ae74781ec 100644
--- a/examples/exception_path/Makefile
+++ b/examples/exception_path/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/exception_path/meson.build b/examples/exception_path/meson.build
index 2b0a25036..c34e11e36 100644
--- a/examples/exception_path/meson.build
+++ b/examples/exception_path/meson.build
@@ -6,7 +6,6 @@ 
 # To build this example as a standalone application with an already-installed
 # DPDK instance, use 'make'
 
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/flow_filtering/Makefile b/examples/flow_filtering/Makefile
index f41b368fa..01bb4cd81 100644
--- a/examples/flow_filtering/Makefile
+++ b/examples/flow_filtering/Makefile
@@ -50,8 +50,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -77,7 +75,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/flow_filtering/meson.build b/examples/flow_filtering/meson.build
index 949493300..407795c42 100644
--- a/examples/flow_filtering/meson.build
+++ b/examples/flow_filtering/meson.build
@@ -9,4 +9,3 @@ 
 sources = files(
 	'main.c',
 )
-allow_experimental_apis = true
diff --git a/examples/ip_fragmentation/Makefile b/examples/ip_fragmentation/Makefile
index 3b58ced54..9e89e744c 100644
--- a/examples/ip_fragmentation/Makefile
+++ b/examples/ip_fragmentation/Makefile
@@ -24,8 +24,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -51,7 +49,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/ip_fragmentation/meson.build b/examples/ip_fragmentation/meson.build
index 9782a6a7b..304203eed 100644
--- a/examples/ip_fragmentation/meson.build
+++ b/examples/ip_fragmentation/meson.build
@@ -7,7 +7,6 @@ 
 # DPDK instance, use 'make'
 
 deps +=  ['ip_frag', 'lpm']
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/ip_reassembly/Makefile b/examples/ip_reassembly/Makefile
index 6438d977e..1e81315f2 100644
--- a/examples/ip_reassembly/Makefile
+++ b/examples/ip_reassembly/Makefile
@@ -24,8 +24,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -51,7 +49,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/ip_reassembly/meson.build b/examples/ip_reassembly/meson.build
index 8a667c265..8ebd48291 100644
--- a/examples/ip_reassembly/meson.build
+++ b/examples/ip_reassembly/meson.build
@@ -7,7 +7,6 @@ 
 # DPDK instance, use 'make'
 
 deps += ['lpm', 'ip_frag']
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/ipv4_multicast/Makefile b/examples/ipv4_multicast/Makefile
index 236e706b3..a16c62333 100644
--- a/examples/ipv4_multicast/Makefile
+++ b/examples/ipv4_multicast/Makefile
@@ -24,8 +24,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -51,7 +49,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/ipv4_multicast/meson.build b/examples/ipv4_multicast/meson.build
index 6969e2c54..d9e4c7c21 100644
--- a/examples/ipv4_multicast/meson.build
+++ b/examples/ipv4_multicast/meson.build
@@ -7,7 +7,6 @@ 
 # DPDK instance, use 'make'
 
 deps += 'hash'
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/kni/Makefile b/examples/kni/Makefile
index 96ae2fc6f..562dc2741 100644
--- a/examples/kni/Makefile
+++ b/examples/kni/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -55,7 +53,6 @@  $(error This application can only operate in a linuxapp environment, \
 please change the definition of the RTE_TARGET environment variable)
 endif
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/kni/meson.build b/examples/kni/meson.build
index a69f0df42..0443ab99b 100644
--- a/examples/kni/meson.build
+++ b/examples/kni/meson.build
@@ -10,7 +10,6 @@  if host_machine.system() != 'linux'
 	build = false
 endif
 deps += ['kni', 'bus_pci']
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/l2fwd-cat/Makefile b/examples/l2fwd-cat/Makefile
index fe0f20073..aec770c28 100644
--- a/examples/l2fwd-cat/Makefile
+++ b/examples/l2fwd-cat/Makefile
@@ -23,7 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -D_GNU_SOURCE
 LDFLAGS += -lpqos
 
@@ -56,7 +55,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += $(WERROR_FLAGS)
 
 # workaround for a gcc bug with noreturn attribute
diff --git a/examples/l2fwd-cat/meson.build b/examples/l2fwd-cat/meson.build
index d8ef0c99b..1234e7b55 100644
--- a/examples/l2fwd-cat/meson.build
+++ b/examples/l2fwd-cat/meson.build
@@ -9,7 +9,6 @@ 
 pqos = cc.find_library('pqos', required: false)
 build = pqos.found()
 ext_deps += pqos
-allow_experimental_apis = true
 cflags += '-D_GNU_SOURCE'
 cflags += '-I/usr/local/include' # assume pqos lib installed in /usr/local
 sources = files(
diff --git a/examples/l2fwd-crypto/Makefile b/examples/l2fwd-crypto/Makefile
index 99afdd2e3..a67f087b2 100644
--- a/examples/l2fwd-crypto/Makefile
+++ b/examples/l2fwd-crypto/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/l2fwd-crypto/meson.build b/examples/l2fwd-crypto/meson.build
index 6c852ad19..09438a6a0 100644
--- a/examples/l2fwd-crypto/meson.build
+++ b/examples/l2fwd-crypto/meson.build
@@ -7,7 +7,6 @@ 
 # DPDK instance, use 'make'
 
 deps += 'cryptodev'
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/l2fwd-jobstats/Makefile b/examples/l2fwd-jobstats/Makefile
index a9315d475..696a8b21a 100644
--- a/examples/l2fwd-jobstats/Makefile
+++ b/examples/l2fwd-jobstats/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,7 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
+
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/l2fwd-jobstats/meson.build b/examples/l2fwd-jobstats/meson.build
index 3653aa7ec..1ffd484e2 100644
--- a/examples/l2fwd-jobstats/meson.build
+++ b/examples/l2fwd-jobstats/meson.build
@@ -7,7 +7,6 @@ 
 # DPDK instance, use 'make'
 
 deps += ['jobstats', 'timer']
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/l2fwd-keepalive/Makefile b/examples/l2fwd-keepalive/Makefile
index af2895668..4ab67db44 100644
--- a/examples/l2fwd-keepalive/Makefile
+++ b/examples/l2fwd-keepalive/Makefile
@@ -25,8 +25,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -52,7 +50,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 LDFLAGS += -lrt
diff --git a/examples/l2fwd-keepalive/meson.build b/examples/l2fwd-keepalive/meson.build
index 2dffffaaa..6f7b007e1 100644
--- a/examples/l2fwd-keepalive/meson.build
+++ b/examples/l2fwd-keepalive/meson.build
@@ -8,7 +8,6 @@ 
 
 ext_deps += cc.find_library('rt')
 deps += 'timer'
-allow_experimental_apis = true
 sources = files(
 	'main.c', 'shm.c'
 )
diff --git a/examples/l2fwd/Makefile b/examples/l2fwd/Makefile
index 1d7760de9..a8a47ad4e 100644
--- a/examples/l2fwd/Makefile
+++ b/examples/l2fwd/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/l2fwd/meson.build b/examples/l2fwd/meson.build
index 2b0a25036..c34e11e36 100644
--- a/examples/l2fwd/meson.build
+++ b/examples/l2fwd/meson.build
@@ -6,7 +6,6 @@ 
 # To build this example as a standalone application with an already-installed
 # DPDK instance, use 'make'
 
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/l3fwd-acl/Makefile b/examples/l3fwd-acl/Makefile
index eabca1ed7..285683f83 100644
--- a/examples/l3fwd-acl/Makefile
+++ b/examples/l3fwd-acl/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/l3fwd-acl/meson.build b/examples/l3fwd-acl/meson.build
index 68cebd6ce..7096e00c1 100644
--- a/examples/l3fwd-acl/meson.build
+++ b/examples/l3fwd-acl/meson.build
@@ -7,7 +7,6 @@ 
 # DPDK instance, use 'make'
 
 deps += ['acl', 'lpm', 'hash']
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/l3fwd-power/Makefile b/examples/l3fwd-power/Makefile
index d4e1ac64f..390b7d6b6 100644
--- a/examples/l3fwd-power/Makefile
+++ b/examples/l3fwd-power/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -56,7 +54,6 @@  please change the definition of the RTE_TARGET environment variable)
 all:
 else
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/l3fwd-power/meson.build b/examples/l3fwd-power/meson.build
index 69251242b..f633a0f17 100644
--- a/examples/l3fwd-power/meson.build
+++ b/examples/l3fwd-power/meson.build
@@ -10,7 +10,6 @@  if host_machine.system() != 'linux'
 	build = false
 endif
 deps += ['power', 'timer', 'lpm', 'hash']
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/l3fwd-vf/Makefile b/examples/l3fwd-vf/Makefile
index d776689fa..dfb1d52d3 100644
--- a/examples/l3fwd-vf/Makefile
+++ b/examples/l3fwd-vf/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3 $(USER_FLAGS)
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/l3fwd-vf/meson.build b/examples/l3fwd-vf/meson.build
index 00f3c38f4..226286e74 100644
--- a/examples/l3fwd-vf/meson.build
+++ b/examples/l3fwd-vf/meson.build
@@ -7,7 +7,6 @@ 
 # DPDK instance, use 'make'
 
 deps += ['lpm', 'hash']
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/l3fwd/Makefile b/examples/l3fwd/Makefile
index 8cc8f6aaa..cccdd9dfa 100644
--- a/examples/l3fwd/Makefile
+++ b/examples/l3fwd/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -I$(SRCDIR)
 CFLAGS += -O3 $(USER_FLAGS)
 CFLAGS += $(WERROR_FLAGS)
diff --git a/examples/l3fwd/meson.build b/examples/l3fwd/meson.build
index cbef07f4f..6dd4b9022 100644
--- a/examples/l3fwd/meson.build
+++ b/examples/l3fwd/meson.build
@@ -7,7 +7,6 @@ 
 # DPDK instance, use 'make'
 
 deps += ['hash', 'lpm']
-allow_experimental_apis = true
 sources = files(
 	'l3fwd_em.c', 'l3fwd_lpm.c', 'main.c'
 )
diff --git a/examples/link_status_interrupt/Makefile b/examples/link_status_interrupt/Makefile
index d778fcbbf..160682123 100644
--- a/examples/link_status_interrupt/Makefile
+++ b/examples/link_status_interrupt/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/link_status_interrupt/meson.build b/examples/link_status_interrupt/meson.build
index 2b0a25036..c34e11e36 100644
--- a/examples/link_status_interrupt/meson.build
+++ b/examples/link_status_interrupt/meson.build
@@ -6,7 +6,6 @@ 
 # To build this example as a standalone application with an already-installed
 # DPDK instance, use 'make'
 
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/multi_process/client_server_mp/mp_client/Makefile b/examples/multi_process/client_server_mp/mp_client/Makefile
index 3bfcd75c5..298e1b020 100644
--- a/examples/multi_process/client_server_mp/mp_client/Makefile
+++ b/examples/multi_process/client_server_mp/mp_client/Makefile
@@ -14,7 +14,6 @@  APP = mp_client
 # all source are stored in SRCS-y
 SRCS-y := client.c
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += $(WERROR_FLAGS) -O3
 CFLAGS += -I$(SRCDIR)/../shared
 
diff --git a/examples/multi_process/l2fwd_fork/Makefile b/examples/multi_process/l2fwd_fork/Makefile
index 79d506862..b65582ef1 100644
--- a/examples/multi_process/l2fwd_fork/Makefile
+++ b/examples/multi_process/l2fwd_fork/Makefile
@@ -16,7 +16,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/multi_process/symmetric_mp/Makefile b/examples/multi_process/symmetric_mp/Makefile
index 6c0fcb55b..6fb9cc366 100644
--- a/examples/multi_process/symmetric_mp/Makefile
+++ b/examples/multi_process/symmetric_mp/Makefile
@@ -16,7 +16,6 @@  APP = symmetric_mp
 # all source are stored in SRCS-y
 SRCS-y := main.c
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/netmap_compat/bridge/Makefile b/examples/netmap_compat/bridge/Makefile
index 071c09dd3..a7c9c14a8 100644
--- a/examples/netmap_compat/bridge/Makefile
+++ b/examples/netmap_compat/bridge/Makefile
@@ -27,7 +27,6 @@  VPATH := $(SRCDIR)/../lib
 SRCS-y := bridge.c
 SRCS-y += compat_netmap.c
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3 -I$(SRCDIR)/../lib -I$(SRCDIR)/../netmap
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/packet_ordering/Makefile b/examples/packet_ordering/Makefile
index 5eb503c25..3cf1ee1dc 100644
--- a/examples/packet_ordering/Makefile
+++ b/examples/packet_ordering/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/packet_ordering/meson.build b/examples/packet_ordering/meson.build
index a3776946f..6c2fccdcb 100644
--- a/examples/packet_ordering/meson.build
+++ b/examples/packet_ordering/meson.build
@@ -7,7 +7,6 @@ 
 # DPDK instance, use 'make'
 
 deps += 'reorder'
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/performance-thread/l3fwd-thread/Makefile b/examples/performance-thread/l3fwd-thread/Makefile
index 5ac543645..5558043f2 100644
--- a/examples/performance-thread/l3fwd-thread/Makefile
+++ b/examples/performance-thread/l3fwd-thread/Makefile
@@ -18,7 +18,6 @@  SRCS-y := main.c
 
 include $(RTE_SDK)/examples/performance-thread/common/common.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3 -g $(USER_FLAGS) $(INCLUDES) $(WERROR_FLAGS)
 
 # workaround for a gcc bug with noreturn attribute
diff --git a/examples/ptpclient/Makefile b/examples/ptpclient/Makefile
index 1c1d9cdbb..989e2dd40 100644
--- a/examples/ptpclient/Makefile
+++ b/examples/ptpclient/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/ptpclient/meson.build b/examples/ptpclient/meson.build
index d4171a218..fa0cbe93c 100644
--- a/examples/ptpclient/meson.build
+++ b/examples/ptpclient/meson.build
@@ -6,7 +6,6 @@ 
 # To build this example as a standalone application with an already-installed
 # DPDK instance, use 'make'
 
-allow_experimental_apis = true
 sources = files(
 	'ptpclient.c'
 )
diff --git a/examples/qos_sched/Makefile b/examples/qos_sched/Makefile
index e6dfbef1f..0f0a31ff2 100644
--- a/examples/qos_sched/Makefile
+++ b/examples/qos_sched/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -57,7 +55,6 @@  all:
 clean:
 else
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS_args.o := -D_GNU_SOURCE
diff --git a/examples/qos_sched/meson.build b/examples/qos_sched/meson.build
index 5101652af..289b81ce8 100644
--- a/examples/qos_sched/meson.build
+++ b/examples/qos_sched/meson.build
@@ -7,7 +7,6 @@ 
 # DPDK instance, use 'make'
 
 deps += ['sched', 'cfgfile']
-allow_experimental_apis = true
 sources = files(
 	'app_thread.c', 'args.c', 'cfg_file.c', 'cmdline.c',
 	'init.c', 'main.c', 'stats.c'
diff --git a/examples/quota_watermark/qw/Makefile b/examples/quota_watermark/qw/Makefile
index d0a9b3cf4..84299e594 100644
--- a/examples/quota_watermark/qw/Makefile
+++ b/examples/quota_watermark/qw/Makefile
@@ -16,7 +16,6 @@  APP = qw
 # all source are stored in SRCS-y
 SRCS-y := args.c init.c main.c
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3 -DQW_SOFTWARE_FC
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/rxtx_callbacks/Makefile b/examples/rxtx_callbacks/Makefile
index c72ba66d6..e9d30d56f 100644
--- a/examples/rxtx_callbacks/Makefile
+++ b/examples/rxtx_callbacks/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += $(WERROR_FLAGS)
 
 # workaround for a gcc bug with noreturn attribute
diff --git a/examples/rxtx_callbacks/meson.build b/examples/rxtx_callbacks/meson.build
index 2b0a25036..c34e11e36 100644
--- a/examples/rxtx_callbacks/meson.build
+++ b/examples/rxtx_callbacks/meson.build
@@ -6,7 +6,6 @@ 
 # To build this example as a standalone application with an already-installed
 # DPDK instance, use 'make'
 
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/server_node_efd/node/Makefile b/examples/server_node_efd/node/Makefile
index dc3191a5b..fffbe3576 100644
--- a/examples/server_node_efd/node/Makefile
+++ b/examples/server_node_efd/node/Makefile
@@ -14,7 +14,6 @@  APP = node
 # all source are stored in SRCS-y
 SRCS-y := node.c
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += $(WERROR_FLAGS) -O3
 CFLAGS += -I$(SRCDIR)/../shared
 
diff --git a/examples/server_node_efd/server/Makefile b/examples/server_node_efd/server/Makefile
index d5456f920..cbb91ebe8 100644
--- a/examples/server_node_efd/server/Makefile
+++ b/examples/server_node_efd/server/Makefile
@@ -23,7 +23,6 @@  SRCS-y := main.c init.c args.c
 
 INC := $(sort $(wildcard *.h))
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += $(WERROR_FLAGS) -O3
 CFLAGS += -I$(SRCDIR)/../shared
 
diff --git a/examples/skeleton/Makefile b/examples/skeleton/Makefile
index a4a1860cb..bd980ec9b 100644
--- a/examples/skeleton/Makefile
+++ b/examples/skeleton/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += $(WERROR_FLAGS)
 
 # workaround for a gcc bug with noreturn attribute
diff --git a/examples/skeleton/meson.build b/examples/skeleton/meson.build
index 89ddba2ea..9bb9ec329 100644
--- a/examples/skeleton/meson.build
+++ b/examples/skeleton/meson.build
@@ -6,9 +6,6 @@ 
 # To build this example as a standalone application with an already-installed
 # DPDK instance, use 'make'
 
-allow_experimental_apis = true
 sources = files(
 	'basicfwd.c'
 )
-
-allow_experimental_apis = true
diff --git a/examples/tep_termination/Makefile b/examples/tep_termination/Makefile
index 2b93446c0..d2c357a1c 100644
--- a/examples/tep_termination/Makefile
+++ b/examples/tep_termination/Makefile
@@ -25,8 +25,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -57,7 +55,6 @@  $(error This application can only operate in a linuxapp environment, \
 please change the definition of the RTE_TARGET environment variable)
 endif
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -D_GNU_SOURCE
diff --git a/examples/tep_termination/meson.build b/examples/tep_termination/meson.build
index 6d3636243..618a44a67 100644
--- a/examples/tep_termination/meson.build
+++ b/examples/tep_termination/meson.build
@@ -10,7 +10,6 @@  if host_machine.system() != 'linux'
 	build = false
 endif
 deps += ['hash', 'vhost']
-allow_experimental_apis = true
 sources = files(
 	'main.c', 'vxlan.c', 'vxlan_setup.c'
 )
diff --git a/examples/vhost/Makefile b/examples/vhost/Makefile
index 67cc55b1b..2dc62ebf0 100644
--- a/examples/vhost/Makefile
+++ b/examples/vhost/Makefile
@@ -25,8 +25,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -58,7 +56,6 @@  please change the definition of the RTE_TARGET environment variable)
 all:
 else
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O2 -D_FILE_OFFSET_BITS=64
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -D_GNU_SOURCE
diff --git a/examples/vhost/meson.build b/examples/vhost/meson.build
index 7b498076c..853ecae7c 100644
--- a/examples/vhost/meson.build
+++ b/examples/vhost/meson.build
@@ -10,7 +10,6 @@  if host_machine.system() != 'linux'
 	build = false
 endif
 deps += 'vhost'
-allow_experimental_apis = true
 sources = files(
 	'main.c', 'virtio_net.c'
 )
diff --git a/examples/vm_power_manager/Makefile b/examples/vm_power_manager/Makefile
index 608d0d9f4..ef2a9f959 100644
--- a/examples/vm_power_manager/Makefile
+++ b/examples/vm_power_manager/Makefile
@@ -21,7 +21,6 @@  APP = vm_power_mgr
 SRCS-y := main.c vm_power_cli.c power_manager.c channel_manager.c
 SRCS-y += channel_monitor.c
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3 -I$(RTE_SDK)/lib/librte_power/
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/vmdq/Makefile b/examples/vmdq/Makefile
index e2d114919..87abeab93 100644
--- a/examples/vmdq/Makefile
+++ b/examples/vmdq/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += $(WERROR_FLAGS)
 
 EXTRA_CFLAGS += -O3
diff --git a/examples/vmdq/meson.build b/examples/vmdq/meson.build
index 2b0a25036..c34e11e36 100644
--- a/examples/vmdq/meson.build
+++ b/examples/vmdq/meson.build
@@ -6,7 +6,6 @@ 
 # To build this example as a standalone application with an already-installed
 # DPDK instance, use 'make'
 
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/examples/vmdq_dcb/Makefile b/examples/vmdq_dcb/Makefile
index 3bd80a023..bf161cb2b 100644
--- a/examples/vmdq_dcb/Makefile
+++ b/examples/vmdq_dcb/Makefile
@@ -23,8 +23,6 @@  CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
 LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
-
 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
 	$(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
 
@@ -50,7 +48,6 @@  RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += $(WERROR_FLAGS)
 
 # workaround for a gcc bug with noreturn attribute
diff --git a/examples/vmdq_dcb/meson.build b/examples/vmdq_dcb/meson.build
index 2b0a25036..c34e11e36 100644
--- a/examples/vmdq_dcb/meson.build
+++ b/examples/vmdq_dcb/meson.build
@@ -6,7 +6,6 @@ 
 # To build this example as a standalone application with an already-installed
 # DPDK instance, use 'make'
 
-allow_experimental_apis = true
 sources = files(
 	'main.c'
 )
diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index 7821a8883..e563fd811 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -381,7 +381,7 @@  rte_eth_is_valid_owner_id(uint64_t owner_id)
 	return 1;
 }
 
-uint64_t __rte_experimental
+uint64_t
 rte_eth_find_next_owned_by(uint16_t port_id, const uint64_t owner_id)
 {
 	while (port_id < RTE_MAX_ETHPORTS &&
@@ -552,7 +552,7 @@  rte_eth_dev_count_avail(void)
 	return count;
 }
 
-uint16_t
+uint16_t __rte_experimental
 rte_eth_dev_count_total(void)
 {
 	uint16_t port, count = 0;
diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index b9eb8ae13..35b3cad9a 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -1258,9 +1258,6 @@  struct rte_eth_dev_owner {
 #define RTE_ETH_DEV_INTR_RMV     0x0008
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Iterates over valid ethdev ports owned by a specific owner.
  *
  * @param port_id
@@ -1271,7 +1268,7 @@  struct rte_eth_dev_owner {
  * @return
  *   Next valid port id owned by owner_id, RTE_MAX_ETHPORTS if there is none.
  */
-uint64_t __rte_experimental rte_eth_find_next_owned_by(uint16_t port_id,
+uint64_t rte_eth_find_next_owned_by(uint16_t port_id,
 		const uint64_t owner_id);
 
 /**
@@ -1398,7 +1395,7 @@  uint16_t rte_eth_dev_count(void);
  * @return
  *   The count of available Ethernet devices.
  */
-uint16_t __rte_experimental rte_eth_dev_count_avail(void);
+uint16_t rte_eth_dev_count_avail(void);
 
 /**
  * Get the total number of ports which are allocated.
diff --git a/lib/librte_ether/rte_ethdev_version.map b/lib/librte_ether/rte_ethdev_version.map
index 8fe07880f..e729b2e0a 100644
--- a/lib/librte_ether/rte_ethdev_version.map
+++ b/lib/librte_ether/rte_ethdev_version.map
@@ -203,10 +203,17 @@  DPDK_18.02 {
 
 } DPDK_17.11;
 
-EXPERIMENTAL {
+DPDK_18.05 {
 	global:
 
 	rte_eth_dev_count_avail;
+	rte_eth_find_next_owned_by;
+
+} DPDK_18.02;
+
+EXPERIMENTAL {
+	global:
+
 	rte_eth_dev_count_total;
 	rte_eth_dev_is_removed;
 	rte_eth_dev_owner_delete;
@@ -216,7 +223,6 @@  EXPERIMENTAL {
 	rte_eth_dev_owner_unset;
 	rte_eth_dev_rx_offload_name;
 	rte_eth_dev_tx_offload_name;
-	rte_eth_find_next_owned_by;
 	rte_mtr_capabilities_get;
 	rte_mtr_create;
 	rte_mtr_destroy;
diff --git a/lib/librte_latencystats/Makefile b/lib/librte_latencystats/Makefile
index 8884045c0..ae0dbd8f0 100644
--- a/lib/librte_latencystats/Makefile
+++ b/lib/librte_latencystats/Makefile
@@ -6,7 +6,6 @@  include $(RTE_SDK)/mk/rte.vars.mk
 # library name
 LIB = librte_latencystats.a
 
-CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3
 LDLIBS += -lm
 LDLIBS += -lpthread
diff --git a/lib/librte_latencystats/meson.build b/lib/librte_latencystats/meson.build
index 0c96e1287..286558dd7 100644
--- a/lib/librte_latencystats/meson.build
+++ b/lib/librte_latencystats/meson.build
@@ -4,4 +4,3 @@ 
 sources = files('rte_latencystats.c')
 headers = files('rte_latencystats.h')
 deps += ['metrics', 'ethdev']
-allow_experimental_apis = true