DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global
@ 2019-09-30  9:21 Marcin Baran
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 2/8] buildtools: scripts for updating symbols abi version Marcin Baran
                   ` (17 more replies)
  0 siblings, 18 replies; 131+ messages in thread
From: Marcin Baran @ 2019-09-30  9:21 UTC (permalink / raw)
  To: dev, bruce.richardson, ray.kinsella; +Cc: Marcin Baran, Pawel Modrak

The libraries should be maintained using global
ABI versioning. The changes includes adding global
ABI version support for both makefile and meson
build system. Experimental libraries should be
marked as 0.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
---
 buildtools/meson.build |  2 ++
 config/ABI_VERSION     |  1 +
 config/meson.build     |  3 ++-
 drivers/meson.build    | 20 ++++++++++++++------
 lib/meson.build        | 18 +++++++++++++-----
 meson_options.txt      |  2 --
 mk/rte.lib.mk          | 19 +++++++++++--------
 7 files changed, 43 insertions(+), 22 deletions(-)
 create mode 100644 config/ABI_VERSION

diff --git a/buildtools/meson.build b/buildtools/meson.build
index 32c79c130..78ce69977 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -12,3 +12,5 @@ if python3.found()
 else
 	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
 endif
+
+is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
diff --git a/config/ABI_VERSION b/config/ABI_VERSION
new file mode 100644
index 000000000..9a7c1e503
--- /dev/null
+++ b/config/ABI_VERSION
@@ -0,0 +1 @@
+20.0
diff --git a/config/meson.build b/config/meson.build
index 2bafea530..16ad8968d 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -17,7 +17,8 @@ endforeach
 # set the major version, which might be used by drivers and libraries
 # depending on the configuration options
 pver = meson.project_version().split('.')
-major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
+major_version = run_command(find_program('cat', 'more'),
+	files('ABI_VERSION')).stdout().strip()
 
 # extract all version information into the build configuration
 dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
diff --git a/drivers/meson.build b/drivers/meson.build
index 2ed2e9541..5c5fe87c7 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -110,9 +110,20 @@ foreach class:dpdk_driver_classes
 					output: out_filename,
 					depends: [pmdinfogen, tmp_lib])
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/@2@_version.map'.format(
+					meson.current_source_dir(),
+					drv_path, lib_name)
+
+			if is_windows
+				version_map = '\\'.join(version_map.split('/'))
+			endif
+
+			is_experimental = run_command(is_experimental_cmd,
+				files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
 				lib_version = major_version
 				so_version = major_version
@@ -128,9 +139,6 @@ foreach class:dpdk_driver_classes
 				install: true)
 
 			# now build the shared driver
-			version_map = '@0@/@1@/@2@_version.map'.format(
-					meson.current_source_dir(),
-					drv_path, lib_name)
 			shared_lib = shared_library(lib_name,
 				sources,
 				objects: objs,
diff --git a/lib/meson.build b/lib/meson.build
index e5ff83893..3892c16e8 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -97,9 +97,19 @@ foreach l:libraries
 				cflags += '-DALLOW_EXPERIMENTAL_API'
 			endif
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/rte_@2@_version.map'.format(
+					meson.current_source_dir(), dir_name, name)
+
+			if is_windows
+				version_map = '\\'.join(version_map.split('/'))
+			endif
+
+			is_experimental = run_command(is_experimental_cmd,
+					files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
 				lib_version = major_version
 				so_version = major_version
@@ -120,8 +130,6 @@ foreach l:libraries
 			# then use pre-build objects to build shared lib
 			sources = []
 			objs += static_lib.extract_all_objects(recursive: false)
-			version_map = '@0@/@1@/rte_@2@_version.map'.format(
-					meson.current_source_dir(), dir_name, name)
 			implib = dir_name + '.dll.a'
 
 			def_file = custom_target(name + '_def',
diff --git a/meson_options.txt b/meson_options.txt
index 448f3e63d..000e38fd9 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -28,8 +28,6 @@ option('max_lcores', type: 'integer', value: 128,
 	description: 'maximum number of cores/threads supported by EAL')
 option('max_numa_nodes', type: 'integer', value: 4,
 	description: 'maximum number of NUMA nodes supported by EAL')
-option('per_library_versions', type: 'boolean', value: true,
-	description: 'true: each lib gets its own version number, false: DPDK version used for each lib')
 option('tests', type: 'boolean', value: true,
 	description: 'build unit tests')
 option('use_hpet', type: 'boolean', value: false,
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index 4df8849a0..f84161c6d 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -11,20 +11,23 @@ EXTLIB_BUILD ?= n
 # VPATH contains at least SRCDIR
 VPATH += $(SRCDIR)
 
-ifneq ($(CONFIG_RTE_MAJOR_ABI),)
-ifneq ($(LIBABIVER),)
-LIBABIVER := $(CONFIG_RTE_MAJOR_ABI)
+ifeq ($(OS), Windows_NT)
+search_cmd = findstr
+print_cmd = more
+else
+search_cmd = grep
+print_cmd = cat
 endif
+
+ifneq ($(shell $(search_cmd) "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)
+LIBABIVER := $(shell $(print_cmd) $(RTE_SRCDIR)/config/ABI_VERSION)
+else
+LIBABIVER := 0
 endif
 
 ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
 LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))
 ifeq ($(EXTLIB_BUILD),n)
-ifeq ($(CONFIG_RTE_MAJOR_ABI),)
-ifeq ($(CONFIG_RTE_NEXT_ABI),y)
-LIB := $(LIB).1
-endif
-endif
 CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
 endif
 endif
-- 
2.22.0.windows.1


^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH 2/8] buildtools: scripts for updating symbols abi version
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
@ 2019-09-30  9:21 ` Marcin Baran
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 3/8] buildtools: add ABI versioning check script Marcin Baran
                   ` (16 subsequent siblings)
  17 siblings, 0 replies; 131+ messages in thread
From: Marcin Baran @ 2019-09-30  9:21 UTC (permalink / raw)
  To: dev, bruce.richardson, ray.kinsella; +Cc: Pawel Modrak

From: Pawel Modrak <pawelx.modrak@intel.com>

The scripts updates version number for binding symbols
and version map files.

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
---
 buildtools/update_default_symbol_abi.py |  57 ++++++++++++
 buildtools/update_version_map_abi.py    | 110 ++++++++++++++++++++++++
 2 files changed, 167 insertions(+)
 create mode 100755 buildtools/update_default_symbol_abi.py
 create mode 100755 buildtools/update_version_map_abi.py

diff --git a/buildtools/update_default_symbol_abi.py b/buildtools/update_default_symbol_abi.py
new file mode 100755
index 000000000..6fe60d8cd
--- /dev/null
+++ b/buildtools/update_default_symbol_abi.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+from __future__ import print_function
+import sys
+import argparse
+import re
+
+def setup_options():
+    arg_parser = argparse.ArgumentParser(description='Update default bind symbol abi version.')
+    arg_parser.add_argument('map_file', metavar='map_file', type=str, nargs=1,
+                    help='path to source file (pattern: *.c)')
+    arg_parser.add_argument('dst_abi_version', metavar='dst_abi_version', type=str, nargs=1,
+                    help='target ABI version (pattern: DPDK_*)')
+    arg_parser.add_argument('-v', '--verbose', action='store_true', help='print changes')
+
+    return arg_parser.parse_args()
+
+def replace_abi(f_in, abi_version_number, verbose):
+    source_file_content = []
+
+    for ln_no, ln in enumerate(f_in, 1):
+            if re.search("^BIND_DEFAULT_SYMBOL\(.*", ln):
+                source_file_content += [re.sub(", [0-9]{1,2}\.[0-9]{1,2}\);$", ", " + abi_version_number + ");", ln)]
+                if verbose:
+                    print(f_in.name + ":" + str(ln_no) + ": " + ln[:-1] + " -> " + source_file_content[-1][:-1])
+            elif re.search("^VERSION_SYMBOL\(.*", ln):
+                if verbose:
+                    print(f_in.name + ":" + str(ln_no) + ": " + ln[:-1] + " -> " + "[DELETED]")
+            else:
+                source_file_content += [ln]
+
+    return source_file_content
+
+def main(args):
+    params = setup_options()
+
+    if not params.map_file[0].endswith('.c') or \
+            not params.dst_abi_version[0].startswith('DPDK_'):
+        print('Wrong pattern for input files!\n')
+        arg_parser.print_help()
+        return 1
+
+    abi_version_number = params.dst_abi_version[0][5:]
+    source_file_content = []
+
+    with open(params.map_file[0]) as f_in:
+        source_file_content = replace_abi(f_in, abi_version_number, params.verbose)
+
+    with open(params.map_file[0], 'w') as f_out:
+        f_out.writelines(source_file_content)
+
+    return 0
+
+if __name__ == "__main__":
+    sys.exit(main(sys.argv))
diff --git a/buildtools/update_version_map_abi.py b/buildtools/update_version_map_abi.py
new file mode 100755
index 000000000..5a840e766
--- /dev/null
+++ b/buildtools/update_version_map_abi.py
@@ -0,0 +1,110 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+from __future__ import print_function
+import sys
+import argparse
+
+def setup_options():
+    arg_parser = argparse.ArgumentParser(description='Merge versions in linker version script.')
+    arg_parser.add_argument("map_file", metavar='map_file', type=str, nargs=1,
+                    help='path to linker version script file (pattern: *version.map)')
+    arg_parser.add_argument("dst_abi_version", metavar='dst_abi_version', type=str, nargs=1,
+                    help='target ABI version (pattern: DPDK_*)')
+    arg_parser.add_argument("src_abi_version", metavar='src_abi_version', default="DPDK_", type=str, nargs='?',
+                    help='source ABI version (pattern: DPDK_*, default: DPDK_)')
+    arg_parser.add_argument('-v', '--verbose', action='store_true', help='print changes')
+
+    return arg_parser.parse_args()
+
+def is_function_line(ln):
+    return ln.startswith('\t') and ln.endswith(';\n') and ":" not in ln
+
+def is_dpdk_version_start_line(ln, src_abi_version):
+    return ln.startswith(src_abi_version) and ln.endswith('{\n') and ":" not in ln
+
+def is_experimental_version_start_line(ln):
+    return ln.startswith('EXPERIMENTAL {') and ln.endswith('\n') and ":" not in ln
+
+def is_version_end_line(ln):
+    return ln.startswith('}') and ln.endswith(';\n') and ":" not in ln
+
+def is_global_line(ln):
+    return ln.startswith('\tglobal:') and ln.endswith('\n')
+
+def is_local_line(ln):
+    return ln.startswith('\tlocal: ') and ln.endswith(';\n')
+
+def store_functions(f_in):
+    functions = []
+    local_line = []
+
+    for line in f_in:
+        if is_version_end_line(line): break
+        elif is_local_line(line):
+            local_line = [line]
+        elif is_function_line(line): functions += [line]
+
+    return functions, local_line
+
+def parse_linker_version_map_file(f_in, src_abi_version):
+    dpdk_functions = []
+    experimental_functions = []
+    dpdk_local_line = []
+    experimental_local_line = []
+
+    for line in f_in:
+        if is_dpdk_version_start_line(line, src_abi_version):
+            dpdk_functions_tmp, dpdk_local_line_tmp = store_functions(f_in)
+            dpdk_functions += dpdk_functions_tmp
+            dpdk_local_line = dpdk_local_line_tmp if len(dpdk_local_line_tmp) > 0 else dpdk_local_line
+        elif is_experimental_version_start_line(line):
+            experimental_functions_tmp, experimental_local_line_tmp = store_functions(f_in)
+            experimental_functions += experimental_functions_tmp
+            experimental_local_line += experimental_local_line_tmp
+
+    return list(set(dpdk_functions)), list(set(experimental_functions)), list(set(dpdk_local_line)), list(set(experimental_local_line))
+
+def main(args):
+    params = setup_options()
+
+    if not params.map_file[0].endswith('version.map') or \
+            not params.dst_abi_version[0].startswith('DPDK_'):
+        print('Wrong pattern for input files!\n')
+        arg_parser.print_help()
+        return 1
+
+    dpdk_functions = []
+    experimental_functions = []
+    dpdk_local_line = []
+    experimental_local_line = []
+
+    with open(params.map_file[0]) as f_in:
+        dpdk_functions, experimental_functions, dpdk_local_line, experimental_local_line = parse_linker_version_map_file(f_in, params.src_abi_version)
+
+    dpdk_functions.sort()
+    experimental_functions.sort()
+
+    with open(params.map_file[0], 'w') as f_out:
+        if len(dpdk_functions) > 0:
+            dpdk_functions = params.dst_abi_version + [" {\n"] + ["\tglobal:\n\n"] + dpdk_functions + dpdk_local_line + ["};\n\n"]
+            if params.verbose:
+                print(*dpdk_functions)
+            f_out.writelines(dpdk_functions)
+        elif len(dpdk_local_line) > 0:
+            dpdk_functions = params.dst_abi_version + [" {\n"] + ["\n\tlocal: *;\n};\n"]
+            if params.verbose:
+                print(*dpdk_functions)
+            f_out.writelines(dpdk_functions)
+
+        if len(experimental_functions) > 0:
+            experimental_functions = ["EXPERIMENTAL" + " {\n"] + ["\tglobal:\n\n"] + experimental_functions + experimental_local_line + ["};\n"]
+            if params.verbose:
+                print(*experimental_functions)
+            f_out.writelines(experimental_functions)
+
+    return 0
+
+if __name__ == "__main__":
+    sys.exit(main(sys.argv))
-- 
2.22.0.windows.1


^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH 3/8] buildtools: add ABI versioning check script
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 2/8] buildtools: scripts for updating symbols abi version Marcin Baran
@ 2019-09-30  9:21 ` Marcin Baran
  2019-09-30 10:27   ` Bruce Richardson
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 4/8] build: change ABI version to 20.0 Marcin Baran
                   ` (15 subsequent siblings)
  17 siblings, 1 reply; 131+ messages in thread
From: Marcin Baran @ 2019-09-30  9:21 UTC (permalink / raw)
  To: dev, bruce.richardson, ray.kinsella; +Cc: Marcin Baran, Pawel Modrak

The script 'check-abi-version.sh' should be used
to check whether built libraries are versioned
with correct ABI number (provided ABI, provided
ABI+1 or EXPERIMENTAL).

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
---
 buildtools/check-abi-version.sh | 46 +++++++++++++++++++++++++++++++++
 buildtools/update_abi.sh        | 41 +++++++++++++++++++++++++++++
 2 files changed, 87 insertions(+)
 create mode 100755 buildtools/check-abi-version.sh
 create mode 100755 buildtools/update_abi.sh

diff --git a/buildtools/check-abi-version.sh b/buildtools/check-abi-version.sh
new file mode 100755
index 000000000..ead25c080
--- /dev/null
+++ b/buildtools/check-abi-version.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+# Check whether library symbols have correct
+# version (provided ABI number or provided ABI
+# number + 1 or EXPERIMENTAL).
+# Args:
+#   $1: path of the library .so file
+#   $2: ABI major version number to check
+#       (defaults to ABI_VERSION file value)
+
+if [ -z "$1" ]; then
+    echo "Script checks whether library symbols have"
+    echo "correct version (ABI_VER/ABI_VER+1/EXPERIMENTAL)"
+    echo "Usage:"
+    echo "  $0 SO_FILE_PATH [ABI_VER]"
+    exit 1
+fi
+
+LIB="$1"
+DEFAULT_ABI=$(cat "$(dirname \
+            $(readlink -f $0))/../config/ABI_VERSION" | \
+            cut -d'.' -f 1)
+ABIVER="DPDK_${2-$DEFAULT_ABI}"
+NEXT_ABIVER="DPDK_$((${2-$DEFAULT_ABI}+1))"
+
+ret=0
+
+for SYM in `objdump -TC --section=.text ${LIB} | \
+            grep -e "DPDK\|EXPERIMENTAL" | \
+            awk '{print $(NF-1) "-" $NF}'`
+do
+    version=$(echo $SYM | cut -d'-' -f 1)
+    symbol=$(echo $SYM | cut -d'-' -f 2)
+    case $version in (*"$ABIVER"*|*"$NEXT_ABIVER"*|"EXPERIMENTAL")
+        ;;
+    (*)
+        echo "Warning: symbol $symbol ($version) should be annotated " \
+             "as ABI version $ABIVER / $NEXT_ABIVER, or EXPERIMENTAL."
+        ret=1
+    ;;
+    esac
+done
+
+exit $ret
diff --git a/buildtools/update_abi.sh b/buildtools/update_abi.sh
new file mode 100755
index 000000000..43ee79a92
--- /dev/null
+++ b/buildtools/update_abi.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+abi_version=""
+abi_version_file="./config/ABI_VERSION"
+update_path="lib drivers"
+
+if [ -z "$1" ]
+then
+      echo "\$provide ABI version"
+fi
+
+abi_version=$1
+abi_version_with_prefix="DPDK_$abi_version"
+
+if [ -n "$2" ]
+then
+      abi_version_file=$2
+fi
+
+if [ -n "$3" ]
+then
+      update_path=${@:3}
+fi
+
+echo "New ABI version:" $abi_version
+echo "ABI_VERSION path:" $abi_version_file
+echo "Path to update:" $update_path
+
+echo $abi_version > $abi_version_file
+
+grep --binary-files=without-match --recursive --files-with-matches \
+--max-count=1 --include \*.c 'BIND_DEFAULT_SYMBOL\|VERSION_SYMBOL' \
+$update_path | xargs --max-lines=1 --verbose -I {} \
+./buildtools/update_default_symbol_abi.py {} \
+$abi_version_with_prefix
+
+find $update_path -name  \*version.map -exec \
+./buildtools/update_version_map_abi.py {} \
+$abi_version_with_prefix \; -print
-- 
2.22.0.windows.1


^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH 4/8] build: change ABI version to 20.0
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 2/8] buildtools: scripts for updating symbols abi version Marcin Baran
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 3/8] buildtools: add ABI versioning check script Marcin Baran
@ 2019-09-30  9:21 ` Marcin Baran
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 5/8] lib: remove dead code from timer Marcin Baran
                   ` (14 subsequent siblings)
  17 siblings, 0 replies; 131+ messages in thread
From: Marcin Baran @ 2019-09-30  9:21 UTC (permalink / raw)
  To: dev, bruce.richardson, ray.kinsella; +Cc: Pawel Modrak

From: Pawel Modrak <pawelx.modrak@intel.com>

Merge all vesions in linker version script files to DPDK_20.0.
Use version 20.0 as default version in source files.

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
---
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |   5 +-
 .../null/rte_pmd_bbdev_null_version.map       |   3 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |   3 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     |  98 ++--
 drivers/bus/fslmc/rte_bus_fslmc_version.map   | 153 +++----
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |  14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |   4 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |  12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |  12 +-
 drivers/common/cpt/rte_common_cpt_version.map |   3 +-
 .../common/dpaax/rte_common_dpaax_version.map |   6 +-
 .../common/mvep/rte_common_mvep_version.map   |   5 +-
 .../octeontx/rte_common_octeontx_version.map  |   5 +-
 .../rte_common_octeontx2_version.map          |  18 +-
 .../compress/isal/rte_pmd_isal_version.map    |   3 +-
 .../rte_pmd_octeontx_compress_version.map     |   3 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |   3 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |   3 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |   3 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |   3 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |   3 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |   2 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |   2 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |  10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |   2 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |   3 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |   3 +-
 .../null/rte_pmd_null_crypto_version.map      |   3 +-
 .../rte_pmd_octeontx_crypto_version.map       |   2 +-
 .../openssl/rte_pmd_openssl_version.map       |   3 +-
 .../rte_pmd_crypto_scheduler_version.map      |  18 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |   3 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |   3 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |   3 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |   2 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |   3 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |   3 +-
 .../rte_pmd_octeontx_event_version.map        |   3 +-
 .../rte_pmd_octeontx2_event_version.map       |   4 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |   3 +-
 .../rte_pmd_skeleton_event_version.map        |   2 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |   3 +-
 .../bucket/rte_mempool_bucket_version.map     |   2 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |   4 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |  12 +-
 .../octeontx/rte_mempool_octeontx_version.map |   3 +-
 .../rte_mempool_octeontx2_version.map         |   6 +-
 .../mempool/ring/rte_mempool_ring_version.map |   2 +-
 .../stack/rte_mempool_stack_version.map       |   2 +-
 .../af_packet/rte_pmd_af_packet_version.map   |   2 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |   3 +-
 drivers/net/ark/rte_pmd_ark_version.map       |   4 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |  12 +-
 drivers/net/avp/rte_pmd_avp_version.map       |   3 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |   3 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |   2 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |   6 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |  47 +-
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |   2 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |  11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |  13 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |   2 +-
 drivers/net/ena/rte_pmd_ena_version.map       |   2 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |   2 +-
 drivers/net/enic/rte_pmd_enic_version.map     |   2 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |   2 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |   2 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |   2 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |  65 +--
 drivers/net/iavf/rte_pmd_iavf_version.map     |   2 +-
 drivers/net/ice/rte_pmd_ice_version.map       |   2 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |   2 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |   2 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |  63 +--
 drivers/net/kni/rte_pmd_kni_version.map       |   2 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |   2 +-
 drivers/net/memif/rte_pmd_memif_version.map   |   4 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |   2 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |   3 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |   3 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |   3 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |   3 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |   2 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |   3 +-
 drivers/net/null/rte_pmd_null_version.map     |   2 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |  10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |   2 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |   2 +-
 drivers/net/qede/rte_pmd_qede_version.map     |   2 +-
 drivers/net/ring/rte_pmd_ring_version.map     |  10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |   2 +-
 .../net/softnic/rte_pmd_softnic_version.map   |   3 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |   3 +-
 drivers/net/tap/rte_pmd_tap_version.map       |   2 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |   2 +-
 .../rte_pmd_vdev_netvsc_version.map           |   2 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |   9 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |   2 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |   2 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |   2 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |   6 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |   2 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |   2 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |   4 +-
 .../rte_rawdev_octeontx2_dma_version.map      |   2 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |   2 +-
 lib/librte_acl/rte_acl_version.map            |   4 +-
 lib/librte_bbdev/rte_bbdev_version.map        |   1 -
 .../rte_bitratestats_version.map              |   4 +-
 lib/librte_bpf/rte_bpf_version.map            |   1 -
 lib/librte_cfgfile/rte_cfgfile_version.map    |  34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |  10 +-
 .../rte_compressdev_version.map               |  13 +-
 .../rte_cryptodev_version.map                 | 107 ++---
 lib/librte_distributor/rte_distributor.c      |  18 +-
 lib/librte_distributor/rte_distributor_v20.c  |   9 -
 .../rte_distributor_version.map               |  16 +-
 lib/librte_eal/rte_eal_version.map            | 428 +++++++-----------
 lib/librte_efd/rte_efd_version.map            |   4 +-
 lib/librte_ethdev/rte_ethdev_version.map      | 212 +++------
 lib/librte_eventdev/rte_eventdev_version.map  | 130 ++----
 .../rte_flow_classify_version.map             |   1 -
 lib/librte_gro/rte_gro_version.map            |   4 +-
 lib/librte_gso/rte_gso_version.map            |   4 +-
 lib/librte_hash/rte_hash_version.map          |  45 +-
 lib/librte_ip_frag/rte_ip_frag_version.map    |  11 +-
 lib/librte_ipsec/rte_ipsec_version.map        |   1 -
 lib/librte_jobstats/rte_jobstats_version.map  |  10 +-
 lib/librte_kni/rte_kni_version.map            |   3 +-
 lib/librte_kvargs/rte_kvargs_version.map      |   6 +-
 .../rte_latencystats_version.map              |   4 +-
 lib/librte_lpm/rte_lpm.c                      |  21 +-
 lib/librte_lpm/rte_lpm6.c                     |  12 +-
 lib/librte_lpm/rte_lpm_version.map            |  35 +-
 lib/librte_mbuf/rte_mbuf_version.map          |  40 +-
 lib/librte_member/rte_member_version.map      |   4 +-
 lib/librte_mempool/rte_mempool_version.map    |  45 +-
 lib/librte_meter/rte_meter_version.map        |  12 +-
 lib/librte_metrics/rte_metrics_version.map    |   3 +-
 lib/librte_net/rte_net_version.map            |  26 +-
 lib/librte_pci/rte_pci_version.map            |   4 +-
 lib/librte_pdump/rte_pdump_version.map        |   4 +-
 lib/librte_pipeline/rte_pipeline_version.map  |  39 +-
 lib/librte_port/rte_port_version.map          |  64 +--
 lib/librte_power/rte_power_version.map        |  25 +-
 lib/librte_rawdev/rte_rawdev_version.map      |   6 +-
 lib/librte_rcu/rte_rcu_version.map            |   1 -
 lib/librte_reorder/rte_reorder_version.map    |  10 +-
 lib/librte_ring/rte_ring_version.map          |  12 +-
 lib/librte_sched/rte_sched_version.map        |  15 +-
 lib/librte_security/rte_security_version.map  |   3 +-
 lib/librte_stack/rte_stack_version.map        |   1 -
 lib/librte_table/rte_table_version.map        |   4 +-
 .../rte_telemetry_version.map                 |   1 -
 lib/librte_timer/rte_timer.c                  |  15 +-
 lib/librte_timer/rte_timer_version.map        |  13 +-
 lib/librte_vhost/rte_vhost_version.map        |  79 +---
 157 files changed, 840 insertions(+), 1567 deletions(-)

diff --git a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
index e92327075..0322b777c 100644
--- a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
+++ b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
@@ -1,3 +1,4 @@
-DPDK_19.08 {
-    local: *;
+DPDK_20.0 {
+
+	local: *;
 };
diff --git a/drivers/baseband/null/rte_pmd_bbdev_null_version.map b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
index 58b94270d..0322b777c 100644
--- a/drivers/baseband/null/rte_pmd_bbdev_null_version.map
+++ b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
@@ -1,3 +1,4 @@
-DPDK_18.02 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
index 58b94270d..0322b777c 100644
--- a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
+++ b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
@@ -1,3 +1,4 @@
-DPDK_18.02 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map
index c88deaf7f..cfd3b55b6 100644
--- a/drivers/bus/dpaa/rte_bus_dpaa_version.map
+++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	bman_acquire;
@@ -8,32 +8,37 @@ DPDK_17.11 {
 	bman_new_pool;
 	bman_query_free_buffers;
 	bman_release;
+	bman_thread_irq;
+	dpaa_logtype_eventdev;
 	dpaa_logtype_mempool;
 	dpaa_logtype_pmd;
 	dpaa_netcfg;
+	dpaa_svr_family;
 	fman_ccsr_map_fd;
 	fman_dealloc_bufs_mask_hi;
 	fman_dealloc_bufs_mask_lo;
 	fman_if_add_mac_addr;
 	fman_if_clear_mac_addr;
 	fman_if_disable_rx;
-	fman_if_enable_rx;
 	fman_if_discard_rx_errors;
-	fman_if_get_fc_threshold;
+	fman_if_enable_rx;
 	fman_if_get_fc_quanta;
+	fman_if_get_fc_threshold;
 	fman_if_get_fdoff;
+	fman_if_get_sg_enable;
 	fman_if_loopback_disable;
 	fman_if_loopback_enable;
 	fman_if_promiscuous_disable;
 	fman_if_promiscuous_enable;
 	fman_if_reset_mcast_filter_table;
 	fman_if_set_bp;
-	fman_if_set_fc_threshold;
 	fman_if_set_fc_quanta;
+	fman_if_set_fc_threshold;
 	fman_if_set_fdoff;
 	fman_if_set_ic_params;
 	fman_if_set_maxfrm;
 	fman_if_set_mcast_filter_table;
+	fman_if_set_sg;
 	fman_if_stats_get;
 	fman_if_stats_get_all;
 	fman_if_stats_reset;
@@ -41,85 +46,52 @@ DPDK_17.11 {
 	netcfg_acquire;
 	netcfg_release;
 	of_find_compatible_node;
+	of_get_mac_address;
 	of_get_property;
+	per_lcore_dpaa_io;
+	per_lcore_held_bufs;
 	qm_channel_caam;
+	qm_channel_pool1;
+	qman_alloc_cgrid_range;
+	qman_alloc_pool_range;
+	qman_clear_irq;
+	qman_create_cgr;
 	qman_create_fq;
+	qman_dca_index;
+	qman_delete_cgr;
 	qman_dequeue;
 	qman_dqrr_consume;
 	qman_enqueue;
 	qman_enqueue_multi;
+	qman_enqueue_multi_fq;
 	qman_fq_fqid;
 	qman_fq_state;
 	qman_global_init;
 	qman_init_fq;
-	qman_poll_dqrr;
-	qman_query_fq_np;
-	qman_set_vdq;
-	qman_reserve_fqid_range;
-	qman_volatile_dequeue;
-	rte_dpaa_driver_register;
-	rte_dpaa_driver_unregister;
-	rte_dpaa_mem_ptov;
-	rte_dpaa_portal_init;
-
-	local: *;
-};
-
-DPDK_18.02 {
-	global:
-
-	dpaa_logtype_eventdev;
-	dpaa_svr_family;
-	per_lcore_dpaa_io;
-	per_lcore_held_bufs;
-	qm_channel_pool1;
-	qman_alloc_cgrid_range;
-	qman_alloc_pool_range;
-	qman_create_cgr;
-	qman_dca_index;
-	qman_delete_cgr;
-	qman_enqueue_multi_fq;
+	qman_irqsource_add;
+	qman_irqsource_remove;
 	qman_modify_cgr;
 	qman_oos_fq;
+	qman_poll_dqrr;
 	qman_portal_dequeue;
 	qman_portal_poll_rx;
 	qman_query_fq_frm_cnt;
+	qman_query_fq_np;
 	qman_release_cgrid_range;
+	qman_reserve_fqid_range;
 	qman_retire_fq;
+	qman_set_fq_lookup_table;
+	qman_set_vdq;
 	qman_static_dequeue_add;
-	rte_dpaa_portal_fq_close;
-	rte_dpaa_portal_fq_init;
-
-	local: *;
-} DPDK_17.11;
-
-DPDK_18.08 {
-	global:
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-	of_get_mac_address;
-
-	local: *;
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-	bman_thread_irq;
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-	qman_clear_irq;
-
-	qman_irqsource_add;
-	qman_irqsource_remove;
 	qman_thread_fd;
 	qman_thread_irq;
-
+	qman_volatile_dequeue;
+	rte_dpaa_driver_register;
+	rte_dpaa_driver_unregister;
+	rte_dpaa_mem_ptov;
+	rte_dpaa_portal_fq_close;
+	rte_dpaa_portal_fq_init;
+	rte_dpaa_portal_init;
 	local: *;
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-	qman_set_fq_lookup_table;
+};
 
-	local: *;
-} DPDK_18.11;
diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map
index 4da787236..87810f789 100644
--- a/drivers/bus/fslmc/rte_bus_fslmc_version.map
+++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map
@@ -1,32 +1,67 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
+	dpaa2_affine_qbman_ethrx_swp;
 	dpaa2_affine_qbman_swp;
 	dpaa2_alloc_dpbp_dev;
 	dpaa2_alloc_dq_storage;
+	dpaa2_dpbp_supported;
+	dpaa2_dqrr_size;
+	dpaa2_eqcr_size;
 	dpaa2_free_dpbp_dev;
 	dpaa2_free_dq_storage;
+	dpaa2_free_eq_descriptors;
+	dpaa2_get_qbman_swp;
+	dpaa2_io_portal;
+	dpaa2_svr_family;
+	dpaa2_virt_mode;
 	dpbp_disable;
 	dpbp_enable;
 	dpbp_get_attributes;
 	dpbp_get_num_free_bufs;
 	dpbp_open;
 	dpbp_reset;
+	dpci_get_opr;
+	dpci_set_opr;
+	dpci_set_rx_queue;
+	dpcon_get_attributes;
+	dpcon_open;
+	dpdmai_close;
+	dpdmai_disable;
+	dpdmai_enable;
+	dpdmai_get_attributes;
+	dpdmai_get_rx_queue;
+	dpdmai_get_tx_queue;
+	dpdmai_open;
+	dpdmai_set_rx_queue;
+	dpio_add_static_dequeue_channel;
 	dpio_close;
 	dpio_disable;
 	dpio_enable;
 	dpio_get_attributes;
 	dpio_open;
+	dpio_remove_static_dequeue_channel;
 	dpio_reset;
 	dpio_set_stashing_destination;
+	mc_get_soc_version;
+	mc_get_version;
 	mc_send_command;
 	per_lcore__dpaa2_io;
+	per_lcore_dpaa2_held_bufs;
 	qbman_check_command_complete;
+	qbman_check_new_result;
 	qbman_eq_desc_clear;
+	qbman_eq_desc_set_dca;
 	qbman_eq_desc_set_fq;
 	qbman_eq_desc_set_no_orp;
+	qbman_eq_desc_set_orp;
 	qbman_eq_desc_set_qd;
 	qbman_eq_desc_set_response;
+	qbman_eq_desc_set_token;
+	qbman_fq_query_state;
+	qbman_fq_state_frame_count;
+	qbman_get_dqrr_from_idx;
+	qbman_get_dqrr_idx;
 	qbman_pull_desc_clear;
 	qbman_pull_desc_set_fq;
 	qbman_pull_desc_set_numframes;
@@ -35,112 +70,42 @@ DPDK_17.05 {
 	qbman_release_desc_set_bpid;
 	qbman_result_DQ_fd;
 	qbman_result_DQ_flags;
-	qbman_result_has_new_result;
-	qbman_swp_acquire;
-	qbman_swp_pull;
-	qbman_swp_release;
-	rte_fslmc_driver_register;
-	rte_fslmc_driver_unregister;
-	rte_fslmc_vfio_dmamap;
-	rte_mcp_ptr_list;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	dpaa2_io_portal;
-	dpaa2_get_qbman_swp;
-	dpci_set_rx_queue;
-	dpcon_open;
-	dpcon_get_attributes;
-	dpio_add_static_dequeue_channel;
-	dpio_remove_static_dequeue_channel;
-	mc_get_soc_version;
-	mc_get_version;
-	qbman_check_new_result;
-	qbman_eq_desc_set_dca;
-	qbman_get_dqrr_from_idx;
-	qbman_get_dqrr_idx;
 	qbman_result_DQ_fqd_ctx;
+	qbman_result_DQ_odpid;
+	qbman_result_DQ_seqnum;
 	qbman_result_SCN_state;
+	qbman_result_eqresp_fd;
+	qbman_result_eqresp_rc;
+	qbman_result_eqresp_rspid;
+	qbman_result_eqresp_set_rspid;
+	qbman_result_has_new_result;
+	qbman_swp_acquire;
 	qbman_swp_dqrr_consume;
+	qbman_swp_dqrr_idx_consume;
 	qbman_swp_dqrr_next;
 	qbman_swp_enqueue_multiple;
 	qbman_swp_enqueue_multiple_desc;
+	qbman_swp_enqueue_multiple_fd;
 	qbman_swp_interrupt_clear_status;
+	qbman_swp_prefetch_dqrr_next;
+	qbman_swp_pull;
 	qbman_swp_push_set;
+	qbman_swp_release;
 	rte_dpaa2_alloc_dpci_dev;
-	rte_fslmc_object_register;
-	rte_global_active_dqs_list;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	dpaa2_dpbp_supported;
 	rte_dpaa2_dev_type;
+	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_intr_disable;
 	rte_dpaa2_intr_enable;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	dpaa2_svr_family;
-	dpaa2_virt_mode;
-	per_lcore_dpaa2_held_bufs;
-	qbman_fq_query_state;
-	qbman_fq_state_frame_count;
-	qbman_swp_dqrr_idx_consume;
-	qbman_swp_prefetch_dqrr_next;
-	rte_fslmc_get_device_count;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	dpaa2_affine_qbman_ethrx_swp;
-	dpdmai_close;
-	dpdmai_disable;
-	dpdmai_enable;
-	dpdmai_get_attributes;
-	dpdmai_get_rx_queue;
-	dpdmai_get_tx_queue;
-	dpdmai_open;
-	dpdmai_set_rx_queue;
-	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_memsegs;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-	dpaa2_dqrr_size;
-	dpaa2_eqcr_size;
-	dpci_get_opr;
-	dpci_set_opr;
-
-} DPDK_18.05;
-
-DPDK_19.05 {
-	global:
-	dpaa2_free_eq_descriptors;
-
-	qbman_eq_desc_set_orp;
-	qbman_eq_desc_set_token;
-	qbman_result_DQ_odpid;
-	qbman_result_DQ_seqnum;
-	qbman_result_eqresp_fd;
-	qbman_result_eqresp_rc;
-	qbman_result_eqresp_rspid;
-	qbman_result_eqresp_set_rspid;
-	qbman_swp_enqueue_multiple_fd;
-} DPDK_18.11;
+	rte_fslmc_driver_register;
+	rte_fslmc_driver_unregister;
+	rte_fslmc_get_device_count;
+	rte_fslmc_object_register;
+	rte_fslmc_vfio_dmamap;
+	rte_global_active_dqs_list;
+	rte_mcp_ptr_list;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/bus/ifpga/rte_bus_ifpga_version.map b/drivers/bus/ifpga/rte_bus_ifpga_version.map
index 964c9a9c4..701d794d6 100644
--- a/drivers/bus/ifpga/rte_bus_ifpga_version.map
+++ b/drivers/bus/ifpga/rte_bus_ifpga_version.map
@@ -1,17 +1,11 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
-	rte_ifpga_get_integer32_arg;
-	rte_ifpga_get_string_arg;
 	rte_ifpga_driver_register;
 	rte_ifpga_driver_unregister;
-
+	rte_ifpga_find_afu_by_name;
+	rte_ifpga_get_integer32_arg;
+	rte_ifpga_get_string_arg;
 	local: *;
 };
 
-DPDK_19.05 {
-	global:
-
-	rte_ifpga_find_afu_by_name;
-
-} DPDK_18.05;
diff --git a/drivers/bus/pci/rte_bus_pci_version.map b/drivers/bus/pci/rte_bus_pci_version.map
index 27e9c4f10..6d4dfc8ff 100644
--- a/drivers/bus/pci/rte_bus_pci_version.map
+++ b/drivers/bus/pci/rte_bus_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pci_dump;
@@ -13,6 +13,6 @@ DPDK_17.11 {
 	rte_pci_unmap_device;
 	rte_pci_unregister;
 	rte_pci_write_config;
-
 	local: *;
 };
+
diff --git a/drivers/bus/vdev/rte_bus_vdev_version.map b/drivers/bus/vdev/rte_bus_vdev_version.map
index 590cf9b43..019e7cb8d 100644
--- a/drivers/bus/vdev/rte_bus_vdev_version.map
+++ b/drivers/bus/vdev/rte_bus_vdev_version.map
@@ -1,18 +1,12 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
+	rte_vdev_add_custom_scan;
 	rte_vdev_init;
 	rte_vdev_register;
+	rte_vdev_remove_custom_scan;
 	rte_vdev_uninit;
 	rte_vdev_unregister;
-
 	local: *;
 };
 
-DPDK_18.02 {
-	global:
-
-	rte_vdev_add_custom_scan;
-	rte_vdev_remove_custom_scan;
-
-} DPDK_17.11;
diff --git a/drivers/bus/vmbus/rte_bus_vmbus_version.map b/drivers/bus/vmbus/rte_bus_vmbus_version.map
index ae231ad32..0064b37e4 100644
--- a/drivers/bus/vmbus/rte_bus_vmbus_version.map
+++ b/drivers/bus/vmbus/rte_bus_vmbus_version.map
@@ -1,6 +1,4 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_vmbus_chan_close;
@@ -20,17 +18,11 @@ DPDK_18.08 {
 	rte_vmbus_probe;
 	rte_vmbus_register;
 	rte_vmbus_scan;
+	rte_vmbus_set_latency;
 	rte_vmbus_sub_channel_index;
 	rte_vmbus_subchan_open;
 	rte_vmbus_unmap_device;
 	rte_vmbus_unregister;
-
 	local: *;
 };
 
-DPDK_18.11 {
-	global:
-
-	rte_vmbus_set_latency;
-
-} DPDK_18.08;
diff --git a/drivers/common/cpt/rte_common_cpt_version.map b/drivers/common/cpt/rte_common_cpt_version.map
index dec614f0d..d0d14b450 100644
--- a/drivers/common/cpt/rte_common_cpt_version.map
+++ b/drivers/common/cpt/rte_common_cpt_version.map
@@ -1,6 +1,7 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	cpt_pmd_ops_helper_get_mlen_direct_mode;
 	cpt_pmd_ops_helper_get_mlen_sg_mode;
 };
+
diff --git a/drivers/common/dpaax/rte_common_dpaax_version.map b/drivers/common/dpaax/rte_common_dpaax_version.map
index 8131c9e30..98d70eacb 100644
--- a/drivers/common/dpaax/rte_common_dpaax_version.map
+++ b/drivers/common/dpaax/rte_common_dpaax_version.map
@@ -1,11 +1,11 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	dpaax_iova_table_update;
 	dpaax_iova_table_depopulate;
 	dpaax_iova_table_dump;
 	dpaax_iova_table_p;
 	dpaax_iova_table_populate;
-
+	dpaax_iova_table_update;
 	local: *;
 };
+
diff --git a/drivers/common/mvep/rte_common_mvep_version.map b/drivers/common/mvep/rte_common_mvep_version.map
index c71722d79..79f8c5e2c 100644
--- a/drivers/common/mvep/rte_common_mvep_version.map
+++ b/drivers/common/mvep/rte_common_mvep_version.map
@@ -1,6 +1,7 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	rte_mvep_init;
 	rte_mvep_deinit;
+	rte_mvep_init;
 };
+
diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index f04b3b7f8..7d6f3a617 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,7 +1,8 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
+	octeontx_mbox_send;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
-	octeontx_mbox_send;
 };
+
diff --git a/drivers/common/octeontx2/rte_common_octeontx2_version.map b/drivers/common/octeontx2/rte_common_octeontx2_version.map
index 4400120da..fa1bececa 100644
--- a/drivers/common/octeontx2/rte_common_octeontx2_version.map
+++ b/drivers/common/octeontx2/rte_common_octeontx2_version.map
@@ -1,39 +1,35 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	otx2_dev_active_vfs;
 	otx2_dev_fini;
 	otx2_dev_priv_init;
-
+	otx2_disable_irqs;
+	otx2_intra_dev_get_cfg;
 	otx2_logtype_base;
 	otx2_logtype_dpi;
 	otx2_logtype_mbox;
+	otx2_logtype_nix;
 	otx2_logtype_npa;
 	otx2_logtype_npc;
-	otx2_logtype_nix;
 	otx2_logtype_sso;
-	otx2_logtype_tm;
 	otx2_logtype_tim;
-
+	otx2_logtype_tm;
 	otx2_mbox_alloc_msg_rsp;
 	otx2_mbox_get_rsp;
 	otx2_mbox_get_rsp_tmo;
 	otx2_mbox_id2name;
 	otx2_mbox_msg_send;
 	otx2_mbox_wait_for_rsp;
-
-	otx2_intra_dev_get_cfg;
 	otx2_npa_lf_active;
 	otx2_npa_lf_obj_get;
 	otx2_npa_lf_obj_ref;
 	otx2_npa_pf_func_get;
 	otx2_npa_set_defaults;
+	otx2_register_irq;
 	otx2_sso_pf_func_get;
 	otx2_sso_pf_func_set;
-
-	otx2_disable_irqs;
 	otx2_unregister_irq;
-	otx2_register_irq;
-
 	local: *;
 };
+
diff --git a/drivers/compress/isal/rte_pmd_isal_version.map b/drivers/compress/isal/rte_pmd_isal_version.map
index de8e412ff..0322b777c 100644
--- a/drivers/compress/isal/rte_pmd_isal_version.map
+++ b/drivers/compress/isal/rte_pmd_isal_version.map
@@ -1,3 +1,4 @@
-DPDK_18.05 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
index ad6e191e4..0322b777c 100644
--- a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
+++ b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
@@ -1,3 +1,4 @@
-DPDK_18.08 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/compress/qat/rte_pmd_qat_version.map b/drivers/compress/qat/rte_pmd_qat_version.map
index ad6e191e4..0322b777c 100644
--- a/drivers/compress/qat/rte_pmd_qat_version.map
+++ b/drivers/compress/qat/rte_pmd_qat_version.map
@@ -1,3 +1,4 @@
-DPDK_18.08 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/compress/zlib/rte_pmd_zlib_version.map b/drivers/compress/zlib/rte_pmd_zlib_version.map
index ad6e191e4..0322b777c 100644
--- a/drivers/compress/zlib/rte_pmd_zlib_version.map
+++ b/drivers/compress/zlib/rte_pmd_zlib_version.map
@@ -1,3 +1,4 @@
-DPDK_18.08 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
index dc4d417b7..0322b777c 100644
--- a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
+++ b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
@@ -1,3 +1,4 @@
-DPDK_16.04 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
index ad607bbed..0322b777c 100644
--- a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
+++ b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
@@ -1,3 +1,4 @@
-DPDK_2.2 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/crypto/armv8/rte_pmd_armv8_version.map b/drivers/crypto/armv8/rte_pmd_armv8_version.map
index 1f84b68a8..0322b777c 100644
--- a/drivers/crypto/armv8/rte_pmd_armv8_version.map
+++ b/drivers/crypto/armv8/rte_pmd_armv8_version.map
@@ -1,3 +1,4 @@
-DPDK_17.02 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
index 521e51f41..0322b777c 100644
--- a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
+++ b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
@@ -1,4 +1,4 @@
-DPDK_18.11 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/crypto/ccp/rte_pmd_ccp_version.map b/drivers/crypto/ccp/rte_pmd_ccp_version.map
index 9b9ab1a4c..0322b777c 100644
--- a/drivers/crypto/ccp/rte_pmd_ccp_version.map
+++ b/drivers/crypto/ccp/rte_pmd_ccp_version.map
@@ -1,4 +1,4 @@
-DPDK_18.05 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
index 0bfb986d0..a176d44fd 100644
--- a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
+++ b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_sec_eventq_attach;
 	dpaa2_sec_eventq_detach;
+	local: *;
+};
 
-} DPDK_17.05;
diff --git a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
index a70bd197b..0322b777c 100644
--- a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
+++ b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
index 8ffeca934..0322b777c 100644
--- a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
+++ b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
@@ -1,3 +1,4 @@
-DPDK_16.07 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
index a75303172..0322b777c 100644
--- a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
+++ b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
@@ -1,3 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/crypto/null/rte_pmd_null_crypto_version.map b/drivers/crypto/null/rte_pmd_null_crypto_version.map
index dc4d417b7..0322b777c 100644
--- a/drivers/crypto/null/rte_pmd_null_crypto_version.map
+++ b/drivers/crypto/null/rte_pmd_null_crypto_version.map
@@ -1,3 +1,4 @@
-DPDK_16.04 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
index 521e51f41..0322b777c 100644
--- a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
+++ b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
@@ -1,4 +1,4 @@
-DPDK_18.11 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/crypto/openssl/rte_pmd_openssl_version.map b/drivers/crypto/openssl/rte_pmd_openssl_version.map
index cc5829e30..0322b777c 100644
--- a/drivers/crypto/openssl/rte_pmd_openssl_version.map
+++ b/drivers/crypto/openssl/rte_pmd_openssl_version.map
@@ -1,3 +1,4 @@
-DPDK_16.11 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
index 5c43127cf..8f4f9140e 100644
--- a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
+++ b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
@@ -1,21 +1,15 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_cryptodev_scheduler_load_user_scheduler;
-	rte_cryptodev_scheduler_slave_attach;
-	rte_cryptodev_scheduler_slave_detach;
-	rte_cryptodev_scheduler_ordering_set;
-	rte_cryptodev_scheduler_ordering_get;
-
-};
-
-DPDK_17.05 {
-	global:
-
 	rte_cryptodev_scheduler_mode_get;
 	rte_cryptodev_scheduler_mode_set;
 	rte_cryptodev_scheduler_option_get;
 	rte_cryptodev_scheduler_option_set;
+	rte_cryptodev_scheduler_ordering_get;
+	rte_cryptodev_scheduler_ordering_set;
+	rte_cryptodev_scheduler_slave_attach;
+	rte_cryptodev_scheduler_slave_detach;
 	rte_cryptodev_scheduler_slaves_get;
+};
 
-} DPDK_17.02;
diff --git a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
index dc4d417b7..0322b777c 100644
--- a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
+++ b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
@@ -1,3 +1,4 @@
-DPDK_16.04 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
index de8e412ff..0322b777c 100644
--- a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
+++ b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
@@ -1,3 +1,4 @@
-DPDK_18.05 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/crypto/zuc/rte_pmd_zuc_version.map b/drivers/crypto/zuc/rte_pmd_zuc_version.map
index cc5829e30..0322b777c 100644
--- a/drivers/crypto/zuc/rte_pmd_zuc_version.map
+++ b/drivers/crypto/zuc/rte_pmd_zuc_version.map
@@ -1,3 +1,4 @@
-DPDK_16.11 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
index 179140fb8..0322b777c 100644
--- a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
+++ b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
@@ -1,4 +1,4 @@
-DPDK_18.02 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
index 1c0b7559d..0322b777c 100644
--- a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
+++ b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
@@ -1,3 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/event/dsw/rte_pmd_dsw_event_version.map b/drivers/event/dsw/rte_pmd_dsw_event_version.map
index 24bd5cdb3..0322b777c 100644
--- a/drivers/event/dsw/rte_pmd_dsw_event_version.map
+++ b/drivers/event/dsw/rte_pmd_dsw_event_version.map
@@ -1,3 +1,4 @@
-DPDK_18.11 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
index 5352e7e3b..0322b777c 100644
--- a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
+++ b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
@@ -1,3 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
index 41c65c8c9..0322b777c 100644
--- a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
+++ b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
@@ -1,4 +1,4 @@
-DPDK_19.08 {
+DPDK_20.0 {
+
 	local: *;
 };
-
diff --git a/drivers/event/opdl/rte_pmd_opdl_event_version.map b/drivers/event/opdl/rte_pmd_opdl_event_version.map
index 58b94270d..0322b777c 100644
--- a/drivers/event/opdl/rte_pmd_opdl_event_version.map
+++ b/drivers/event/opdl/rte_pmd_opdl_event_version.map
@@ -1,3 +1,4 @@
-DPDK_18.02 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
index 8591cc0b1..0322b777c 100644
--- a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
+++ b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/event/sw/rte_pmd_sw_event_version.map b/drivers/event/sw/rte_pmd_sw_event_version.map
index 5352e7e3b..0322b777c 100644
--- a/drivers/event/sw/rte_pmd_sw_event_version.map
+++ b/drivers/event/sw/rte_pmd_sw_event_version.map
@@ -1,3 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/mempool/bucket/rte_mempool_bucket_version.map b/drivers/mempool/bucket/rte_mempool_bucket_version.map
index 9b9ab1a4c..0322b777c 100644
--- a/drivers/mempool/bucket/rte_mempool_bucket_version.map
+++ b/drivers/mempool/bucket/rte_mempool_bucket_version.map
@@ -1,4 +1,4 @@
-DPDK_18.05 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
index 60bf50b2d..f20d86db8 100644
--- a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
+++ b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
@@ -1,8 +1,8 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa_bpid_info;
 	rte_dpaa_memsegs;
-
 	local: *;
 };
+
diff --git a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
index b45e7a9ac..b4024be42 100644
--- a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
+++ b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
@@ -1,16 +1,10 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa2_bpid_info;
 	rte_dpaa2_mbuf_alloc_bulk;
-
-	local: *;
-};
-
-DPDK_18.05 {
-	global:
-
 	rte_dpaa2_mbuf_from_buf_addr;
 	rte_dpaa2_mbuf_pool_bpid;
+	local: *;
+};
 
-} DPDK_17.05;
diff --git a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
index a75303172..0322b777c 100644
--- a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
+++ b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
@@ -1,3 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
index d703368c3..4f8889204 100644
--- a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
+++ b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
@@ -1,8 +1,8 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
-	otx2_npa_lf_init;
 	otx2_npa_lf_fini;
-
+	otx2_npa_lf_init;
 	local: *;
 };
+
diff --git a/drivers/mempool/ring/rte_mempool_ring_version.map b/drivers/mempool/ring/rte_mempool_ring_version.map
index 8591cc0b1..0322b777c 100644
--- a/drivers/mempool/ring/rte_mempool_ring_version.map
+++ b/drivers/mempool/ring/rte_mempool_ring_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/mempool/stack/rte_mempool_stack_version.map b/drivers/mempool/stack/rte_mempool_stack_version.map
index 8591cc0b1..0322b777c 100644
--- a/drivers/mempool/stack/rte_mempool_stack_version.map
+++ b/drivers/mempool/stack/rte_mempool_stack_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/af_packet/rte_pmd_af_packet_version.map b/drivers/net/af_packet/rte_pmd_af_packet_version.map
index ef3539840..0322b777c 100644
--- a/drivers/net/af_packet/rte_pmd_af_packet_version.map
+++ b/drivers/net/af_packet/rte_pmd_af_packet_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
index c6db030fe..0322b777c 100644
--- a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
+++ b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
@@ -1,3 +1,4 @@
-DPDK_19.05 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/net/ark/rte_pmd_ark_version.map b/drivers/net/ark/rte_pmd_ark_version.map
index 1062e0429..0322b777c 100644
--- a/drivers/net/ark/rte_pmd_ark_version.map
+++ b/drivers/net/ark/rte_pmd_ark_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
-	 local: *;
+DPDK_20.0 {
 
+	local: *;
 };
diff --git a/drivers/net/atlantic/rte_pmd_atlantic_version.map b/drivers/net/atlantic/rte_pmd_atlantic_version.map
index b16faa999..fdf813df0 100644
--- a/drivers/net/atlantic/rte_pmd_atlantic_version.map
+++ b/drivers/net/atlantic/rte_pmd_atlantic_version.map
@@ -1,16 +1,14 @@
-DPDK_18.11 {
+DPDK_20.0 {
 
 	local: *;
 };
-
 EXPERIMENTAL {
 	global:
 
-	rte_pmd_atl_macsec_enable;
-	rte_pmd_atl_macsec_disable;
-	rte_pmd_atl_macsec_config_txsc;
 	rte_pmd_atl_macsec_config_rxsc;
-	rte_pmd_atl_macsec_select_txsa;
+	rte_pmd_atl_macsec_config_txsc;
+	rte_pmd_atl_macsec_disable;
+	rte_pmd_atl_macsec_enable;
 	rte_pmd_atl_macsec_select_rxsa;
+	rte_pmd_atl_macsec_select_txsa;
 };
-
diff --git a/drivers/net/avp/rte_pmd_avp_version.map b/drivers/net/avp/rte_pmd_avp_version.map
index 5352e7e3b..0322b777c 100644
--- a/drivers/net/avp/rte_pmd_avp_version.map
+++ b/drivers/net/avp/rte_pmd_avp_version.map
@@ -1,3 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/net/axgbe/rte_pmd_axgbe_version.map b/drivers/net/axgbe/rte_pmd_axgbe_version.map
index de8e412ff..0322b777c 100644
--- a/drivers/net/axgbe/rte_pmd_axgbe_version.map
+++ b/drivers/net/axgbe/rte_pmd_axgbe_version.map
@@ -1,3 +1,4 @@
-DPDK_18.05 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
index bd8138a03..0322b777c 100644
--- a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
+++ b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
@@ -1,4 +1,4 @@
-DPDK_2.1 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/bnxt/rte_pmd_bnxt_version.map b/drivers/net/bnxt/rte_pmd_bnxt_version.map
index 4750d40ad..a83fd4036 100644
--- a/drivers/net/bnxt/rte_pmd_bnxt_version.map
+++ b/drivers/net/bnxt/rte_pmd_bnxt_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_bnxt_get_vf_rx_status;
@@ -10,13 +10,13 @@ DPDK_17.08 {
 	rte_pmd_bnxt_set_tx_loopback;
 	rte_pmd_bnxt_set_vf_mac_addr;
 	rte_pmd_bnxt_set_vf_mac_anti_spoof;
+	rte_pmd_bnxt_set_vf_persist_stats;
 	rte_pmd_bnxt_set_vf_rate_limit;
 	rte_pmd_bnxt_set_vf_rxmode;
 	rte_pmd_bnxt_set_vf_vlan_anti_spoof;
 	rte_pmd_bnxt_set_vf_vlan_filter;
 	rte_pmd_bnxt_set_vf_vlan_insert;
 	rte_pmd_bnxt_set_vf_vlan_stripq;
-	rte_pmd_bnxt_set_vf_persist_stats;
-
 	local: *;
 };
+
diff --git a/drivers/net/bonding/rte_pmd_bond_version.map b/drivers/net/bonding/rte_pmd_bond_version.map
index 00d955c48..11da7191f 100644
--- a/drivers/net/bonding/rte_pmd_bond_version.map
+++ b/drivers/net/bonding/rte_pmd_bond_version.map
@@ -1,9 +1,21 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_bond_8023ad_agg_selection_get;
+	rte_eth_bond_8023ad_agg_selection_set;
+	rte_eth_bond_8023ad_conf_get;
+	rte_eth_bond_8023ad_dedicated_queues_disable;
+	rte_eth_bond_8023ad_dedicated_queues_enable;
+	rte_eth_bond_8023ad_ext_collect;
+	rte_eth_bond_8023ad_ext_collect_get;
+	rte_eth_bond_8023ad_ext_distrib;
+	rte_eth_bond_8023ad_ext_distrib_get;
+	rte_eth_bond_8023ad_ext_slowtx;
+	rte_eth_bond_8023ad_setup;
 	rte_eth_bond_8023ad_slave_info;
 	rte_eth_bond_active_slaves_get;
 	rte_eth_bond_create;
+	rte_eth_bond_free;
 	rte_eth_bond_link_monitoring_set;
 	rte_eth_bond_mac_address_reset;
 	rte_eth_bond_mac_address_set;
@@ -16,39 +28,6 @@ DPDK_2.0 {
 	rte_eth_bond_slaves_get;
 	rte_eth_bond_xmit_policy_get;
 	rte_eth_bond_xmit_policy_set;
-
 	local: *;
 };
 
-DPDK_2.1 {
-	global:
-
-	rte_eth_bond_free;
-
-} DPDK_2.0;
-
-DPDK_16.04 {
-};
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_bond_8023ad_ext_collect;
-	rte_eth_bond_8023ad_ext_collect_get;
-	rte_eth_bond_8023ad_ext_distrib;
-	rte_eth_bond_8023ad_ext_distrib_get;
-	rte_eth_bond_8023ad_ext_slowtx;
-
-} DPDK_16.04;
-
-DPDK_17.08 {
-	global:
-
-	rte_eth_bond_8023ad_dedicated_queues_enable;
-	rte_eth_bond_8023ad_dedicated_queues_disable;
-	rte_eth_bond_8023ad_agg_selection_get;
-	rte_eth_bond_8023ad_agg_selection_set;
-	rte_eth_bond_8023ad_conf_get;
-	rte_eth_bond_8023ad_setup;
-
-} DPDK_16.07;
diff --git a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
index bd8138a03..0322b777c 100644
--- a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
+++ b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
@@ -1,4 +1,4 @@
-DPDK_2.1 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/dpaa/rte_pmd_dpaa_version.map b/drivers/net/dpaa/rte_pmd_dpaa_version.map
index 8cb4500b5..94fa246bb 100644
--- a/drivers/net/dpaa/rte_pmd_dpaa_version.map
+++ b/drivers/net/dpaa/rte_pmd_dpaa_version.map
@@ -1,12 +1,9 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	dpaa_eth_eventq_attach;
 	dpaa_eth_eventq_detach;
 	rte_pmd_dpaa_set_tx_loopback;
-} DPDK_17.11;
+	local: *;
+};
+
diff --git a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
index d1b4cdb23..5e0bcef9d 100644
--- a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
+++ b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
@@ -1,15 +1,10 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_eth_eventq_attach;
 	dpaa2_eth_eventq_detach;
-
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
@@ -17,4 +12,4 @@ EXPERIMENTAL {
 	rte_pmd_dpaa2_mux_flow_create;
 	rte_pmd_dpaa2_set_custom_hash;
 	rte_pmd_dpaa2_set_timestamp;
-} DPDK_17.11;
+};
diff --git a/drivers/net/e1000/rte_pmd_e1000_version.map b/drivers/net/e1000/rte_pmd_e1000_version.map
index ef3539840..0322b777c 100644
--- a/drivers/net/e1000/rte_pmd_e1000_version.map
+++ b/drivers/net/e1000/rte_pmd_e1000_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/ena/rte_pmd_ena_version.map b/drivers/net/ena/rte_pmd_ena_version.map
index 349c6e1c2..0322b777c 100644
--- a/drivers/net/ena/rte_pmd_ena_version.map
+++ b/drivers/net/ena/rte_pmd_ena_version.map
@@ -1,4 +1,4 @@
-DPDK_16.04 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/enetc/rte_pmd_enetc_version.map b/drivers/net/enetc/rte_pmd_enetc_version.map
index 521e51f41..0322b777c 100644
--- a/drivers/net/enetc/rte_pmd_enetc_version.map
+++ b/drivers/net/enetc/rte_pmd_enetc_version.map
@@ -1,4 +1,4 @@
-DPDK_18.11 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/enic/rte_pmd_enic_version.map b/drivers/net/enic/rte_pmd_enic_version.map
index ef3539840..0322b777c 100644
--- a/drivers/net/enic/rte_pmd_enic_version.map
+++ b/drivers/net/enic/rte_pmd_enic_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/failsafe/rte_pmd_failsafe_version.map b/drivers/net/failsafe/rte_pmd_failsafe_version.map
index b6d2840be..0322b777c 100644
--- a/drivers/net/failsafe/rte_pmd_failsafe_version.map
+++ b/drivers/net/failsafe/rte_pmd_failsafe_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/fm10k/rte_pmd_fm10k_version.map b/drivers/net/fm10k/rte_pmd_fm10k_version.map
index ef3539840..0322b777c 100644
--- a/drivers/net/fm10k/rte_pmd_fm10k_version.map
+++ b/drivers/net/fm10k/rte_pmd_fm10k_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/hinic/rte_pmd_hinic_version.map b/drivers/net/hinic/rte_pmd_hinic_version.map
index 9a61188cd..0322b777c 100644
--- a/drivers/net/hinic/rte_pmd_hinic_version.map
+++ b/drivers/net/hinic/rte_pmd_hinic_version.map
@@ -1,4 +1,4 @@
-DPDK_19.08 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/i40e/rte_pmd_i40e_version.map b/drivers/net/i40e/rte_pmd_i40e_version.map
index cccd5768c..e8ecfa1d7 100644
--- a/drivers/net/i40e/rte_pmd_i40e_version.map
+++ b/drivers/net/i40e/rte_pmd_i40e_version.map
@@ -1,67 +1,40 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_i40e_add_vf_mac_addr;
+	rte_pmd_i40e_flow_add_del_packet_template;
+	rte_pmd_i40e_flow_type_mapping_get;
+	rte_pmd_i40e_flow_type_mapping_reset;
+	rte_pmd_i40e_flow_type_mapping_update;
+	rte_pmd_i40e_get_ddp_info;
+	rte_pmd_i40e_get_ddp_list;
 	rte_pmd_i40e_get_vf_stats;
+	rte_pmd_i40e_inset_get;
+	rte_pmd_i40e_inset_set;
 	rte_pmd_i40e_ping_vfs;
+	rte_pmd_i40e_process_ddp_package;
 	rte_pmd_i40e_ptype_mapping_get;
 	rte_pmd_i40e_ptype_mapping_replace;
 	rte_pmd_i40e_ptype_mapping_reset;
 	rte_pmd_i40e_ptype_mapping_update;
+	rte_pmd_i40e_query_vfid_by_mac;
 	rte_pmd_i40e_reset_vf_stats;
+	rte_pmd_i40e_rss_queue_region_conf;
+	rte_pmd_i40e_set_tc_strict_prio;
 	rte_pmd_i40e_set_tx_loopback;
 	rte_pmd_i40e_set_vf_broadcast;
 	rte_pmd_i40e_set_vf_mac_addr;
 	rte_pmd_i40e_set_vf_mac_anti_spoof;
+	rte_pmd_i40e_set_vf_max_bw;
 	rte_pmd_i40e_set_vf_multicast_promisc;
+	rte_pmd_i40e_set_vf_tc_bw_alloc;
+	rte_pmd_i40e_set_vf_tc_max_bw;
 	rte_pmd_i40e_set_vf_unicast_promisc;
 	rte_pmd_i40e_set_vf_vlan_anti_spoof;
 	rte_pmd_i40e_set_vf_vlan_filter;
 	rte_pmd_i40e_set_vf_vlan_insert;
 	rte_pmd_i40e_set_vf_vlan_stripq;
 	rte_pmd_i40e_set_vf_vlan_tag;
+	local: *;
+};
 
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_pmd_i40e_set_tc_strict_prio;
-	rte_pmd_i40e_set_vf_max_bw;
-	rte_pmd_i40e_set_vf_tc_bw_alloc;
-	rte_pmd_i40e_set_vf_tc_max_bw;
-	rte_pmd_i40e_process_ddp_package;
-	rte_pmd_i40e_get_ddp_list;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_i40e_get_ddp_info;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_pmd_i40e_add_vf_mac_addr;
-	rte_pmd_i40e_flow_add_del_packet_template;
-	rte_pmd_i40e_flow_type_mapping_update;
-	rte_pmd_i40e_flow_type_mapping_get;
-	rte_pmd_i40e_flow_type_mapping_reset;
-	rte_pmd_i40e_query_vfid_by_mac;
-	rte_pmd_i40e_rss_queue_region_conf;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_pmd_i40e_inset_get;
-	rte_pmd_i40e_inset_set;
-} DPDK_17.11;
\ No newline at end of file
diff --git a/drivers/net/iavf/rte_pmd_iavf_version.map b/drivers/net/iavf/rte_pmd_iavf_version.map
index 179140fb8..0322b777c 100644
--- a/drivers/net/iavf/rte_pmd_iavf_version.map
+++ b/drivers/net/iavf/rte_pmd_iavf_version.map
@@ -1,4 +1,4 @@
-DPDK_18.02 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/ice/rte_pmd_ice_version.map b/drivers/net/ice/rte_pmd_ice_version.map
index 7b23b609d..0322b777c 100644
--- a/drivers/net/ice/rte_pmd_ice_version.map
+++ b/drivers/net/ice/rte_pmd_ice_version.map
@@ -1,4 +1,4 @@
-DPDK_19.02 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/ifc/rte_pmd_ifc_version.map b/drivers/net/ifc/rte_pmd_ifc_version.map
index 9b9ab1a4c..0322b777c 100644
--- a/drivers/net/ifc/rte_pmd_ifc_version.map
+++ b/drivers/net/ifc/rte_pmd_ifc_version.map
@@ -1,4 +1,4 @@
-DPDK_18.05 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
index fc8c95e91..0322b777c 100644
--- a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
+++ b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
@@ -1,4 +1,4 @@
-DPDK_19.05 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
index c814f96d7..b117c8d95 100644
--- a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
+++ b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
@@ -1,57 +1,38 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
-	rte_pmd_ixgbe_set_all_queues_drop_en;
-	rte_pmd_ixgbe_set_tx_loopback;
-	rte_pmd_ixgbe_set_vf_mac_addr;
-	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
-	rte_pmd_ixgbe_set_vf_split_drop_en;
-	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
-	rte_pmd_ixgbe_set_vf_vlan_insert;
-	rte_pmd_ixgbe_set_vf_vlan_stripq;
-} DPDK_2.0;
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_ixgbe_bypass_event_show;
+	rte_pmd_ixgbe_bypass_event_store;
+	rte_pmd_ixgbe_bypass_init;
+	rte_pmd_ixgbe_bypass_state_set;
+	rte_pmd_ixgbe_bypass_state_show;
+	rte_pmd_ixgbe_bypass_ver_show;
+	rte_pmd_ixgbe_bypass_wd_reset;
+	rte_pmd_ixgbe_bypass_wd_timeout_show;
+	rte_pmd_ixgbe_bypass_wd_timeout_store;
 	rte_pmd_ixgbe_macsec_config_rxsc;
 	rte_pmd_ixgbe_macsec_config_txsc;
 	rte_pmd_ixgbe_macsec_disable;
 	rte_pmd_ixgbe_macsec_enable;
 	rte_pmd_ixgbe_macsec_select_rxsa;
 	rte_pmd_ixgbe_macsec_select_txsa;
+	rte_pmd_ixgbe_ping_vf;
+	rte_pmd_ixgbe_set_all_queues_drop_en;
+	rte_pmd_ixgbe_set_tc_bw_alloc;
+	rte_pmd_ixgbe_set_tx_loopback;
+	rte_pmd_ixgbe_set_vf_mac_addr;
+	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
 	rte_pmd_ixgbe_set_vf_rate_limit;
 	rte_pmd_ixgbe_set_vf_rx;
 	rte_pmd_ixgbe_set_vf_rxmode;
+	rte_pmd_ixgbe_set_vf_split_drop_en;
 	rte_pmd_ixgbe_set_vf_tx;
+	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
 	rte_pmd_ixgbe_set_vf_vlan_filter;
-} DPDK_16.11;
-
-DPDK_17.05 {
-	global:
-
-	rte_pmd_ixgbe_ping_vf;
-	rte_pmd_ixgbe_set_tc_bw_alloc;
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_ixgbe_bypass_event_show;
-	rte_pmd_ixgbe_bypass_event_store;
-	rte_pmd_ixgbe_bypass_init;
-	rte_pmd_ixgbe_bypass_state_set;
-	rte_pmd_ixgbe_bypass_state_show;
-	rte_pmd_ixgbe_bypass_ver_show;
-	rte_pmd_ixgbe_bypass_wd_reset;
-	rte_pmd_ixgbe_bypass_wd_timeout_show;
-	rte_pmd_ixgbe_bypass_wd_timeout_store;
-} DPDK_17.05;
+	rte_pmd_ixgbe_set_vf_vlan_insert;
+	rte_pmd_ixgbe_set_vf_vlan_stripq;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/net/kni/rte_pmd_kni_version.map b/drivers/net/kni/rte_pmd_kni_version.map
index 8591cc0b1..0322b777c 100644
--- a/drivers/net/kni/rte_pmd_kni_version.map
+++ b/drivers/net/kni/rte_pmd_kni_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/liquidio/rte_pmd_liquidio_version.map b/drivers/net/liquidio/rte_pmd_liquidio_version.map
index 8591cc0b1..0322b777c 100644
--- a/drivers/net/liquidio/rte_pmd_liquidio_version.map
+++ b/drivers/net/liquidio/rte_pmd_liquidio_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/memif/rte_pmd_memif_version.map b/drivers/net/memif/rte_pmd_memif_version.map
index 8861484fb..0322b777c 100644
--- a/drivers/net/memif/rte_pmd_memif_version.map
+++ b/drivers/net/memif/rte_pmd_memif_version.map
@@ -1,4 +1,4 @@
-DPDK_19.08 {
+DPDK_20.0 {
 
-        local: *;
+	local: *;
 };
diff --git a/drivers/net/mlx4/rte_pmd_mlx4_version.map b/drivers/net/mlx4/rte_pmd_mlx4_version.map
index ef3539840..0322b777c 100644
--- a/drivers/net/mlx4/rte_pmd_mlx4_version.map
+++ b/drivers/net/mlx4/rte_pmd_mlx4_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/mlx5/rte_pmd_mlx5_version.map b/drivers/net/mlx5/rte_pmd_mlx5_version.map
index ad607bbed..0322b777c 100644
--- a/drivers/net/mlx5/rte_pmd_mlx5_version.map
+++ b/drivers/net/mlx5/rte_pmd_mlx5_version.map
@@ -1,3 +1,4 @@
-DPDK_2.2 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/net/mvneta/rte_pmd_mvneta_version.map b/drivers/net/mvneta/rte_pmd_mvneta_version.map
index 24bd5cdb3..0322b777c 100644
--- a/drivers/net/mvneta/rte_pmd_mvneta_version.map
+++ b/drivers/net/mvneta/rte_pmd_mvneta_version.map
@@ -1,3 +1,4 @@
-DPDK_18.11 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
index a75303172..0322b777c 100644
--- a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
+++ b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
@@ -1,3 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/net/netvsc/rte_pmd_netvsc_version.map b/drivers/net/netvsc/rte_pmd_netvsc_version.map
index d534019a6..0322b777c 100644
--- a/drivers/net/netvsc/rte_pmd_netvsc_version.map
+++ b/drivers/net/netvsc/rte_pmd_netvsc_version.map
@@ -1,5 +1,4 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
+DPDK_20.0 {
 
-DPDK_18.08 {
 	local: *;
 };
diff --git a/drivers/net/nfb/rte_pmd_nfb_version.map b/drivers/net/nfb/rte_pmd_nfb_version.map
index fc8c95e91..0322b777c 100644
--- a/drivers/net/nfb/rte_pmd_nfb_version.map
+++ b/drivers/net/nfb/rte_pmd_nfb_version.map
@@ -1,4 +1,4 @@
-DPDK_19.05 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/nfp/rte_pmd_nfp_version.map b/drivers/net/nfp/rte_pmd_nfp_version.map
index ad607bbed..0322b777c 100644
--- a/drivers/net/nfp/rte_pmd_nfp_version.map
+++ b/drivers/net/nfp/rte_pmd_nfp_version.map
@@ -1,3 +1,4 @@
-DPDK_2.2 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/net/null/rte_pmd_null_version.map b/drivers/net/null/rte_pmd_null_version.map
index ef3539840..0322b777c 100644
--- a/drivers/net/null/rte_pmd_null_version.map
+++ b/drivers/net/null/rte_pmd_null_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/octeontx/rte_pmd_octeontx_version.map b/drivers/net/octeontx/rte_pmd_octeontx_version.map
index a3161b14d..13ac26b39 100644
--- a/drivers/net/octeontx/rte_pmd_octeontx_version.map
+++ b/drivers/net/octeontx/rte_pmd_octeontx_version.map
@@ -1,11 +1,7 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.02 {
+DPDK_20.0 {
 	global:
 
 	rte_octeontx_pchan_map;
+	local: *;
+};
 
-} DPDK_17.11;
diff --git a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
index 9a61188cd..0322b777c 100644
--- a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
+++ b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
@@ -1,4 +1,4 @@
-DPDK_19.08 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/pcap/rte_pmd_pcap_version.map b/drivers/net/pcap/rte_pmd_pcap_version.map
index ef3539840..0322b777c 100644
--- a/drivers/net/pcap/rte_pmd_pcap_version.map
+++ b/drivers/net/pcap/rte_pmd_pcap_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/qede/rte_pmd_qede_version.map b/drivers/net/qede/rte_pmd_qede_version.map
index 349c6e1c2..0322b777c 100644
--- a/drivers/net/qede/rte_pmd_qede_version.map
+++ b/drivers/net/qede/rte_pmd_qede_version.map
@@ -1,4 +1,4 @@
-DPDK_16.04 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/ring/rte_pmd_ring_version.map b/drivers/net/ring/rte_pmd_ring_version.map
index 1f785d940..4190d385a 100644
--- a/drivers/net/ring/rte_pmd_ring_version.map
+++ b/drivers/net/ring/rte_pmd_ring_version.map
@@ -1,14 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_from_ring;
 	rte_eth_from_rings;
-
 	local: *;
 };
 
-DPDK_2.2 {
-	global:
-
-	rte_eth_from_ring;
-
-} DPDK_2.0;
diff --git a/drivers/net/sfc/rte_pmd_sfc_version.map b/drivers/net/sfc/rte_pmd_sfc_version.map
index 31eca32eb..0322b777c 100644
--- a/drivers/net/sfc/rte_pmd_sfc_version.map
+++ b/drivers/net/sfc/rte_pmd_sfc_version.map
@@ -1,4 +1,4 @@
-DPDK_17.02 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/softnic/rte_pmd_softnic_version.map b/drivers/net/softnic/rte_pmd_softnic_version.map
index bc44b06f9..eb4f0b07a 100644
--- a/drivers/net/softnic/rte_pmd_softnic_version.map
+++ b/drivers/net/softnic/rte_pmd_softnic_version.map
@@ -1,8 +1,7 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_softnic_run;
-
 	local: *;
 };
 
diff --git a/drivers/net/szedata2/rte_pmd_szedata2_version.map b/drivers/net/szedata2/rte_pmd_szedata2_version.map
index ad607bbed..0322b777c 100644
--- a/drivers/net/szedata2/rte_pmd_szedata2_version.map
+++ b/drivers/net/szedata2/rte_pmd_szedata2_version.map
@@ -1,3 +1,4 @@
-DPDK_2.2 {
+DPDK_20.0 {
+
 	local: *;
 };
diff --git a/drivers/net/tap/rte_pmd_tap_version.map b/drivers/net/tap/rte_pmd_tap_version.map
index 31eca32eb..0322b777c 100644
--- a/drivers/net/tap/rte_pmd_tap_version.map
+++ b/drivers/net/tap/rte_pmd_tap_version.map
@@ -1,4 +1,4 @@
-DPDK_17.02 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/thunderx/rte_pmd_thunderx_version.map b/drivers/net/thunderx/rte_pmd_thunderx_version.map
index 1901bcb3b..0322b777c 100644
--- a/drivers/net/thunderx/rte_pmd_thunderx_version.map
+++ b/drivers/net/thunderx/rte_pmd_thunderx_version.map
@@ -1,4 +1,4 @@
-DPDK_16.07 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
index 179140fb8..0322b777c 100644
--- a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
+++ b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
@@ -1,4 +1,4 @@
-DPDK_18.02 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/vhost/rte_pmd_vhost_version.map b/drivers/net/vhost/rte_pmd_vhost_version.map
index 695db8574..9f7e613f2 100644
--- a/drivers/net/vhost/rte_pmd_vhost_version.map
+++ b/drivers/net/vhost/rte_pmd_vhost_version.map
@@ -1,13 +1,8 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_vhost_get_queue_event;
-
+	rte_eth_vhost_get_vid_from_port_id;
 	local: *;
 };
 
-DPDK_16.11 {
-	global:
-
-	rte_eth_vhost_get_vid_from_port_id;
-};
diff --git a/drivers/net/virtio/rte_pmd_virtio_version.map b/drivers/net/virtio/rte_pmd_virtio_version.map
index ef3539840..0322b777c 100644
--- a/drivers/net/virtio/rte_pmd_virtio_version.map
+++ b/drivers/net/virtio/rte_pmd_virtio_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
index ef3539840..0322b777c 100644
--- a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
+++ b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
index 9b9ab1a4c..0322b777c 100644
--- a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
+++ b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
@@ -1,4 +1,4 @@
-DPDK_18.05 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
index d16a136fc..a2420771f 100644
--- a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
+++ b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
@@ -1,4 +1,4 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	global:
 
 	rte_qdma_attr_get;
@@ -9,12 +9,12 @@ DPDK_19.05 {
 	rte_qdma_start;
 	rte_qdma_stop;
 	rte_qdma_vq_create;
-	rte_qdma_vq_destroy;
 	rte_qdma_vq_dequeue;
 	rte_qdma_vq_dequeue_multi;
+	rte_qdma_vq_destroy;
 	rte_qdma_vq_enqueue;
 	rte_qdma_vq_enqueue_multi;
 	rte_qdma_vq_stats;
-
 	local: *;
 };
+
diff --git a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
index 9b9ab1a4c..0322b777c 100644
--- a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
+++ b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
@@ -1,4 +1,4 @@
-DPDK_18.05 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/raw/ioat/rte_rawdev_ioat_version.map b/drivers/raw/ioat/rte_rawdev_ioat_version.map
index 9a61188cd..0322b777c 100644
--- a/drivers/raw/ioat/rte_rawdev_ioat_version.map
+++ b/drivers/raw/ioat/rte_rawdev_ioat_version.map
@@ -1,4 +1,4 @@
-DPDK_19.08 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/raw/ntb/rte_rawdev_ntb_version.map b/drivers/raw/ntb/rte_rawdev_ntb_version.map
index 8861484fb..0322b777c 100644
--- a/drivers/raw/ntb/rte_rawdev_ntb_version.map
+++ b/drivers/raw/ntb/rte_rawdev_ntb_version.map
@@ -1,4 +1,4 @@
-DPDK_19.08 {
+DPDK_20.0 {
 
-        local: *;
+	local: *;
 };
diff --git a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
index 9a61188cd..0322b777c 100644
--- a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
+++ b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
@@ -1,4 +1,4 @@
-DPDK_19.08 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
index 179140fb8..0322b777c 100644
--- a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
+++ b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
@@ -1,4 +1,4 @@
-DPDK_18.02 {
+DPDK_20.0 {
 
 	local: *;
 };
diff --git a/lib/librte_acl/rte_acl_version.map b/lib/librte_acl/rte_acl_version.map
index b09370a10..6a5d7034a 100644
--- a/lib/librte_acl/rte_acl_version.map
+++ b/lib/librte_acl/rte_acl_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_acl_add_rules;
@@ -14,6 +14,6 @@ DPDK_2.0 {
 	rte_acl_reset;
 	rte_acl_reset_rules;
 	rte_acl_set_ctx_classify;
-
 	local: *;
 };
+
diff --git a/lib/librte_bbdev/rte_bbdev_version.map b/lib/librte_bbdev/rte_bbdev_version.map
index 3624eb1cb..7ca27ca67 100644
--- a/lib/librte_bbdev/rte_bbdev_version.map
+++ b/lib/librte_bbdev/rte_bbdev_version.map
@@ -36,6 +36,5 @@ EXPERIMENTAL {
 	rte_bbdev_stats_get;
 	rte_bbdev_stats_reset;
 	rte_bbdev_stop;
-
 	local: *;
 };
diff --git a/lib/librte_bitratestats/rte_bitratestats_version.map b/lib/librte_bitratestats/rte_bitratestats_version.map
index fe7454452..0261427b9 100644
--- a/lib/librte_bitratestats/rte_bitratestats_version.map
+++ b/lib/librte_bitratestats/rte_bitratestats_version.map
@@ -1,9 +1,9 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_stats_bitrate_calc;
 	rte_stats_bitrate_create;
 	rte_stats_bitrate_reg;
-
 	local: *;
 };
+
diff --git a/lib/librte_bpf/rte_bpf_version.map b/lib/librte_bpf/rte_bpf_version.map
index a203e088e..b183ba566 100644
--- a/lib/librte_bpf/rte_bpf_version.map
+++ b/lib/librte_bpf/rte_bpf_version.map
@@ -11,6 +11,5 @@ EXPERIMENTAL {
 	rte_bpf_exec_burst;
 	rte_bpf_get_jit;
 	rte_bpf_load;
-
 	local: *;
 };
diff --git a/lib/librte_cfgfile/rte_cfgfile_version.map b/lib/librte_cfgfile/rte_cfgfile_version.map
index a0a11cea8..255523103 100644
--- a/lib/librte_cfgfile/rte_cfgfile_version.map
+++ b/lib/librte_cfgfile/rte_cfgfile_version.map
@@ -1,40 +1,22 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_cfgfile_add_entry;
+	rte_cfgfile_add_section;
 	rte_cfgfile_close;
+	rte_cfgfile_create;
 	rte_cfgfile_get_entry;
 	rte_cfgfile_has_entry;
 	rte_cfgfile_has_section;
 	rte_cfgfile_load;
+	rte_cfgfile_load_with_params;
 	rte_cfgfile_num_sections;
+	rte_cfgfile_save;
 	rte_cfgfile_section_entries;
+	rte_cfgfile_section_entries_by_index;
 	rte_cfgfile_section_num_entries;
 	rte_cfgfile_sections;
-
+	rte_cfgfile_set_entry;
 	local: *;
 };
 
-DPDK_16.04 {
-	global:
-
-	rte_cfgfile_section_entries_by_index;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_cfgfile_load_with_params;
-
-} DPDK_16.04;
-
-DPDK_17.11 {
-	global:
-
-	rte_cfgfile_add_entry;
-	rte_cfgfile_add_section;
-	rte_cfgfile_create;
-	rte_cfgfile_save;
-	rte_cfgfile_set_entry;
-
-} DPDK_17.05;
diff --git a/lib/librte_cmdline/rte_cmdline_version.map b/lib/librte_cmdline/rte_cmdline_version.map
index 04bcb387f..29788e1ef 100644
--- a/lib/librte_cmdline/rte_cmdline_version.map
+++ b/lib/librte_cmdline/rte_cmdline_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	cirbuf_add_buf_head;
@@ -40,6 +40,7 @@ DPDK_2.0 {
 	cmdline_parse_num;
 	cmdline_parse_portlist;
 	cmdline_parse_string;
+	cmdline_poll;
 	cmdline_printf;
 	cmdline_quit;
 	cmdline_set_prompt;
@@ -65,13 +66,6 @@ DPDK_2.0 {
 	rdline_stop;
 	vt100_init;
 	vt100_parser;
-
 	local: *;
 };
 
-DPDK_2.1 {
-	global:
-
-	cmdline_poll;
-
-} DPDK_2.0;
diff --git a/lib/librte_compressdev/rte_compressdev_version.map b/lib/librte_compressdev/rte_compressdev_version.map
index e2a108b65..6e3acd83e 100644
--- a/lib/librte_compressdev/rte_compressdev_version.map
+++ b/lib/librte_compressdev/rte_compressdev_version.map
@@ -1,6 +1,12 @@
 EXPERIMENTAL {
 	global:
 
+	rte_comp_get_feature_name;
+	rte_comp_op_alloc;
+	rte_comp_op_bulk_alloc;
+	rte_comp_op_bulk_free;
+	rte_comp_op_free;
+	rte_comp_op_pool_create;
 	rte_compressdev_capability_get;
 	rte_compressdev_close;
 	rte_compressdev_configure;
@@ -29,12 +35,5 @@ EXPERIMENTAL {
 	rte_compressdev_stop;
 	rte_compressdev_stream_create;
 	rte_compressdev_stream_free;
-	rte_comp_get_feature_name;
-	rte_comp_op_alloc;
-	rte_comp_op_bulk_alloc;
-	rte_comp_op_bulk_free;
-	rte_comp_op_free;
-	rte_comp_op_pool_create;
-
 	local: *;
 };
diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map
index 3deb265ac..a95776567 100644
--- a/lib/librte_cryptodev/rte_cryptodev_version.map
+++ b/lib/librte_cryptodev/rte_cryptodev_version.map
@@ -1,96 +1,67 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
-	rte_cryptodevs;
+	rte_crypto_aead_algorithm_strings;
+	rte_crypto_aead_operation_strings;
+	rte_crypto_auth_algorithm_strings;
+	rte_crypto_auth_operation_strings;
+	rte_crypto_cipher_algorithm_strings;
+	rte_crypto_cipher_operation_strings;
+	rte_crypto_op_pool_create;
+	rte_cryptodev_allocate_driver;
 	rte_cryptodev_callback_register;
 	rte_cryptodev_callback_unregister;
 	rte_cryptodev_close;
-	rte_cryptodev_count;
 	rte_cryptodev_configure;
+	rte_cryptodev_count;
+	rte_cryptodev_device_count_by_driver;
+	rte_cryptodev_devices_get;
+	rte_cryptodev_driver_id_get;
+	rte_cryptodev_driver_name_get;
+	rte_cryptodev_get_aead_algo_enum;
+	rte_cryptodev_get_auth_algo_enum;
+	rte_cryptodev_get_cipher_algo_enum;
 	rte_cryptodev_get_dev_id;
 	rte_cryptodev_get_feature_name;
+	rte_cryptodev_get_sec_ctx;
 	rte_cryptodev_info_get;
+	rte_cryptodev_name_get;
 	rte_cryptodev_pmd_allocate;
 	rte_cryptodev_pmd_callback_process;
+	rte_cryptodev_pmd_create;
+	rte_cryptodev_pmd_create_dev_name;
+	rte_cryptodev_pmd_destroy;
+	rte_cryptodev_pmd_get_dev;
+	rte_cryptodev_pmd_get_named_dev;
+	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_pmd_parse_input_args;
 	rte_cryptodev_pmd_release_device;
-	rte_cryptodev_sym_session_create;
-	rte_cryptodev_sym_session_free;
+	rte_cryptodev_queue_pair_count;
+	rte_cryptodev_queue_pair_setup;
 	rte_cryptodev_socket_id;
 	rte_cryptodev_start;
 	rte_cryptodev_stats_get;
 	rte_cryptodev_stats_reset;
 	rte_cryptodev_stop;
-	rte_cryptodev_queue_pair_count;
-	rte_cryptodev_queue_pair_setup;
-	rte_crypto_op_pool_create;
-
-	local: *;
-};
-
-DPDK_17.02 {
-	global:
-
-	rte_cryptodev_devices_get;
-	rte_cryptodev_pmd_create_dev_name;
-	rte_cryptodev_pmd_get_dev;
-	rte_cryptodev_pmd_get_named_dev;
-	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_sym_capability_check_aead;
 	rte_cryptodev_sym_capability_check_auth;
 	rte_cryptodev_sym_capability_check_cipher;
 	rte_cryptodev_sym_capability_get;
-	rte_crypto_auth_algorithm_strings;
-	rte_crypto_auth_operation_strings;
-	rte_crypto_cipher_algorithm_strings;
-	rte_crypto_cipher_operation_strings;
-
-} DPDK_16.04;
-
-DPDK_17.05 {
-	global:
-
-	rte_cryptodev_get_auth_algo_enum;
-	rte_cryptodev_get_cipher_algo_enum;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_cryptodev_allocate_driver;
-	rte_cryptodev_device_count_by_driver;
-	rte_cryptodev_driver_id_get;
-	rte_cryptodev_driver_name_get;
-	rte_cryptodev_get_aead_algo_enum;
-	rte_cryptodev_sym_capability_check_aead;
-	rte_cryptodev_sym_session_init;
-	rte_cryptodev_sym_session_clear;
-	rte_crypto_aead_algorithm_strings;
-	rte_crypto_aead_operation_strings;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_cryptodev_get_sec_ctx;
-	rte_cryptodev_name_get;
-	rte_cryptodev_pmd_create;
-	rte_cryptodev_pmd_destroy;
-	rte_cryptodev_pmd_parse_input_args;
-
-} DPDK_17.08;
-
-DPDK_18.05 {
-	global:
-
 	rte_cryptodev_sym_get_header_session_size;
 	rte_cryptodev_sym_get_private_session_size;
-
-} DPDK_17.11;
+	rte_cryptodev_sym_session_clear;
+	rte_cryptodev_sym_session_create;
+	rte_cryptodev_sym_session_free;
+	rte_cryptodev_sym_session_init;
+	rte_cryptodevs;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
 
+	rte_crypto_asym_op_strings;
+	rte_crypto_asym_xform_strings;
 	rte_cryptodev_asym_capability_get;
 	rte_cryptodev_asym_get_header_session_size;
 	rte_cryptodev_asym_get_private_session_size;
@@ -105,6 +76,4 @@ EXPERIMENTAL {
 	rte_cryptodev_sym_session_get_user_data;
 	rte_cryptodev_sym_session_pool_create;
 	rte_cryptodev_sym_session_set_user_data;
-	rte_crypto_asym_op_strings;
-	rte_crypto_asym_xform_strings;
 };
diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index 21eb1fb0a..edc942317 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -78,7 +78,7 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
 	 */
 	*retptr64 |= RTE_DISTRIB_GET_BUF;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_request_pkt, _v1705, 17.05);
+BIND_DEFAULT_SYMBOL(rte_distributor_request_pkt, _v1705, 20.0);
 MAP_STATIC_SYMBOL(void rte_distributor_request_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt,
 		unsigned int count),
@@ -119,7 +119,7 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
 
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_poll_pkt, _v1705, 17.05);
+BIND_DEFAULT_SYMBOL(rte_distributor_poll_pkt, _v1705, 20.0);
 MAP_STATIC_SYMBOL(int rte_distributor_poll_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts),
 		rte_distributor_poll_pkt_v1705);
@@ -153,7 +153,7 @@ rte_distributor_get_pkt_v1705(struct rte_distributor *d,
 	}
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_get_pkt, _v1705, 17.05);
+BIND_DEFAULT_SYMBOL(rte_distributor_get_pkt, _v1705, 20.0);
 MAP_STATIC_SYMBOL(int rte_distributor_get_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts,
 		struct rte_mbuf **oldpkt, unsigned int return_count),
@@ -187,7 +187,7 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_return_pkt, _v1705, 17.05);
+BIND_DEFAULT_SYMBOL(rte_distributor_return_pkt, _v1705, 20.0);
 MAP_STATIC_SYMBOL(int rte_distributor_return_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt, int num),
 		rte_distributor_return_pkt_v1705);
@@ -470,7 +470,7 @@ rte_distributor_process_v1705(struct rte_distributor *d,
 
 	return num_mbufs;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_process, _v1705, 17.05);
+BIND_DEFAULT_SYMBOL(rte_distributor_process, _v1705, 20.0);
 MAP_STATIC_SYMBOL(int rte_distributor_process(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs),
 		rte_distributor_process_v1705);
@@ -502,7 +502,7 @@ rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
 
 	return retval;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_returned_pkts, _v1705, 17.05);
+BIND_DEFAULT_SYMBOL(rte_distributor_returned_pkts, _v1705, 20.0);
 MAP_STATIC_SYMBOL(int rte_distributor_returned_pkts(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs),
 		rte_distributor_returned_pkts_v1705);
@@ -556,7 +556,7 @@ rte_distributor_flush_v1705(struct rte_distributor *d)
 
 	return flushed;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_flush, _v1705, 17.05);
+BIND_DEFAULT_SYMBOL(rte_distributor_flush, _v1705, 20.0);
 MAP_STATIC_SYMBOL(int rte_distributor_flush(struct rte_distributor *d),
 		rte_distributor_flush_v1705);
 
@@ -576,7 +576,7 @@ rte_distributor_clear_returns_v1705(struct rte_distributor *d)
 	for (wkr = 0; wkr < d->num_workers; wkr++)
 		d->bufs[wkr].retptr64[0] = 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_clear_returns, _v1705, 17.05);
+BIND_DEFAULT_SYMBOL(rte_distributor_clear_returns, _v1705, 20.0);
 MAP_STATIC_SYMBOL(void rte_distributor_clear_returns(struct rte_distributor *d),
 		rte_distributor_clear_returns_v1705);
 
@@ -656,7 +656,7 @@ rte_distributor_create_v1705(const char *name,
 
 	return d;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_create, _v1705, 17.05);
+BIND_DEFAULT_SYMBOL(rte_distributor_create, _v1705, 20.0);
 MAP_STATIC_SYMBOL(struct rte_distributor *rte_distributor_create(
 		const char *name, unsigned int socket_id,
 		unsigned int num_workers, unsigned int alg_type),
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_v20.c
index cdc0969a8..14ee0360e 100644
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ b/lib/librte_distributor/rte_distributor_v20.c
@@ -38,7 +38,6 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
 		rte_pause();
 	buf->bufptr64 = req;
 }
-VERSION_SYMBOL(rte_distributor_request_pkt, _v20, 2.0);
 
 struct rte_mbuf *
 rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
@@ -52,7 +51,6 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
 	int64_t ret = buf->bufptr64 >> RTE_DISTRIB_FLAG_BITS;
 	return (struct rte_mbuf *)((uintptr_t)ret);
 }
-VERSION_SYMBOL(rte_distributor_poll_pkt, _v20, 2.0);
 
 struct rte_mbuf *
 rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
@@ -64,7 +62,6 @@ rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
 		rte_pause();
 	return ret;
 }
-VERSION_SYMBOL(rte_distributor_get_pkt, _v20, 2.0);
 
 int
 rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
@@ -76,7 +73,6 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
 	buf->bufptr64 = req;
 	return 0;
 }
-VERSION_SYMBOL(rte_distributor_return_pkt, _v20, 2.0);
 
 /**** APIs called on distributor core ***/
 
@@ -293,7 +289,6 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 	d->returns.count = ret_count;
 	return num_mbufs;
 }
-VERSION_SYMBOL(rte_distributor_process, _v20, 2.0);
 
 /* return to the caller, packets returned from workers */
 int
@@ -314,7 +309,6 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
 
 	return retval;
 }
-VERSION_SYMBOL(rte_distributor_returned_pkts, _v20, 2.0);
 
 /* return the number of packets in-flight in a distributor, i.e. packets
  * being worked on or queued up in a backlog.
@@ -344,7 +338,6 @@ rte_distributor_flush_v20(struct rte_distributor_v20 *d)
 
 	return flushed;
 }
-VERSION_SYMBOL(rte_distributor_flush, _v20, 2.0);
 
 /* clears the internal returns array in the distributor */
 void
@@ -355,7 +348,6 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
 	memset(d->returns.mbufs, 0, sizeof(d->returns.mbufs));
 #endif
 }
-VERSION_SYMBOL(rte_distributor_clear_returns, _v20, 2.0);
 
 /* creates a distributor instance */
 struct rte_distributor_v20 *
@@ -399,4 +391,3 @@ rte_distributor_create_v20(const char *name,
 
 	return d;
 }
-VERSION_SYMBOL(rte_distributor_create, _v20, 2.0);
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 3a285b394..1656d129a 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_distributor_clear_returns;
@@ -10,20 +10,6 @@ DPDK_2.0 {
 	rte_distributor_request_pkt;
 	rte_distributor_return_pkt;
 	rte_distributor_returned_pkts;
-
 	local: *;
 };
 
-DPDK_17.05 {
-	global:
-
-	rte_distributor_clear_returns;
-	rte_distributor_create;
-	rte_distributor_flush;
-	rte_distributor_get_pkt;
-	rte_distributor_poll_pkt;
-	rte_distributor_process;
-	rte_distributor_request_pkt;
-	rte_distributor_return_pkt;
-	rte_distributor_returned_pkts;
-} DPDK_2.0;
diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map
index 7cbf82d37..343c771f7 100644
--- a/lib/librte_eal/rte_eal_version.map
+++ b/lib/librte_eal/rte_eal_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	__rte_panic;
@@ -7,46 +7,111 @@ DPDK_2.0 {
 	lcore_config;
 	per_lcore__lcore_id;
 	per_lcore__rte_errno;
+	rte_bus_dump;
+	rte_bus_find;
+	rte_bus_find_by_device;
+	rte_bus_find_by_name;
+	rte_bus_get_iommu_class;
+	rte_bus_probe;
+	rte_bus_register;
+	rte_bus_scan;
+	rte_bus_unregister;
 	rte_calloc;
 	rte_calloc_socket;
 	rte_cpu_check_supported;
 	rte_cpu_get_flag_enabled;
+	rte_cpu_get_flag_name;
+	rte_cpu_is_supported;
+	rte_ctrl_thread_create;
 	rte_cycles_vmware_tsc_map;
 	rte_delay_us;
+	rte_delay_us_block;
+	rte_delay_us_callback_register;
+	rte_dev_is_probed;
+	rte_dev_probe;
+	rte_dev_remove;
+	rte_devargs_add;
+	rte_devargs_dump;
+	rte_devargs_insert;
+	rte_devargs_next;
+	rte_devargs_parse;
+	rte_devargs_parsef;
+	rte_devargs_remove;
+	rte_devargs_type_count;
 	rte_dump_physmem_layout;
 	rte_dump_registers;
 	rte_dump_stack;
 	rte_dump_tailq;
 	rte_eal_alarm_cancel;
 	rte_eal_alarm_set;
+	rte_eal_cleanup;
+	rte_eal_create_uio_dev;
 	rte_eal_get_configuration;
 	rte_eal_get_lcore_state;
 	rte_eal_get_physmem_size;
+	rte_eal_get_runtime_dir;
 	rte_eal_has_hugepages;
+	rte_eal_has_pci;
+	rte_eal_hotplug_add;
+	rte_eal_hotplug_remove;
 	rte_eal_hpet_init;
 	rte_eal_init;
 	rte_eal_iopl_init;
+	rte_eal_iova_mode;
 	rte_eal_lcore_role;
+	rte_eal_mbuf_user_pool_ops;
 	rte_eal_mp_remote_launch;
 	rte_eal_mp_wait_lcore;
+	rte_eal_primary_proc_alive;
 	rte_eal_process_type;
 	rte_eal_remote_launch;
 	rte_eal_tailq_lookup;
 	rte_eal_tailq_register;
+	rte_eal_using_phys_addrs;
+	rte_eal_vfio_intr_mode;
 	rte_eal_wait_lcore;
+	rte_epoll_ctl;
+	rte_epoll_wait;
 	rte_exit;
 	rte_free;
 	rte_get_hpet_cycles;
 	rte_get_hpet_hz;
 	rte_get_tsc_hz;
 	rte_hexdump;
+	rte_hypervisor_get;
+	rte_hypervisor_get_name;
+	rte_intr_allow_others;
 	rte_intr_callback_register;
 	rte_intr_callback_unregister;
+	rte_intr_cap_multiple;
 	rte_intr_disable;
+	rte_intr_dp_is_en;
+	rte_intr_efd_disable;
+	rte_intr_efd_enable;
 	rte_intr_enable;
+	rte_intr_free_epoll_fd;
+	rte_intr_rx_ctl;
+	rte_intr_tls_epfd;
+	rte_keepalive_create;
+	rte_keepalive_dispatch_pings;
+	rte_keepalive_mark_alive;
+	rte_keepalive_mark_sleep;
+	rte_keepalive_register_core;
+	rte_keepalive_register_relay_callback;
+	rte_lcore_has_role;
+	rte_lcore_index;
+	rte_lcore_to_socket_id;
 	rte_log;
 	rte_log_cur_msg_loglevel;
 	rte_log_cur_msg_logtype;
+	rte_log_dump;
+	rte_log_get_global_level;
+	rte_log_get_level;
+	rte_log_register;
+	rte_log_set_global_level;
+	rte_log_set_level;
+	rte_log_set_level_pattern;
+	rte_log_set_level_regexp;
 	rte_logs;
 	rte_malloc;
 	rte_malloc_dump_stats;
@@ -54,155 +119,38 @@ DPDK_2.0 {
 	rte_malloc_set_limit;
 	rte_malloc_socket;
 	rte_malloc_validate;
+	rte_malloc_virt2iova;
+	rte_mcfg_mem_read_lock;
+	rte_mcfg_mem_read_unlock;
+	rte_mcfg_mem_write_lock;
+	rte_mcfg_mem_write_unlock;
+	rte_mcfg_mempool_read_lock;
+	rte_mcfg_mempool_read_unlock;
+	rte_mcfg_mempool_write_lock;
+	rte_mcfg_mempool_write_unlock;
+	rte_mcfg_tailq_read_lock;
+	rte_mcfg_tailq_read_unlock;
+	rte_mcfg_tailq_write_lock;
+	rte_mcfg_tailq_write_unlock;
 	rte_mem_lock_page;
+	rte_mem_virt2iova;
 	rte_mem_virt2phy;
 	rte_memdump;
 	rte_memory_get_nchannel;
 	rte_memory_get_nrank;
 	rte_memzone_dump;
+	rte_memzone_free;
 	rte_memzone_lookup;
 	rte_memzone_reserve;
 	rte_memzone_reserve_aligned;
 	rte_memzone_reserve_bounded;
 	rte_memzone_walk;
 	rte_openlog_stream;
+	rte_rand;
 	rte_realloc;
-	rte_set_application_usage_hook;
-	rte_socket_id;
-	rte_strerror;
-	rte_strsplit;
-	rte_sys_gettid;
-	rte_thread_get_affinity;
-	rte_thread_set_affinity;
-	rte_vlog;
-	rte_zmalloc;
-	rte_zmalloc_socket;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_epoll_ctl;
-	rte_epoll_wait;
-	rte_intr_allow_others;
-	rte_intr_dp_is_en;
-	rte_intr_efd_disable;
-	rte_intr_efd_enable;
-	rte_intr_rx_ctl;
-	rte_intr_tls_epfd;
-	rte_memzone_free;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_intr_cap_multiple;
-	rte_keepalive_create;
-	rte_keepalive_dispatch_pings;
-	rte_keepalive_mark_alive;
-	rte_keepalive_register_core;
-
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_cpu_get_flag_name;
-	rte_eal_primary_proc_alive;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_keepalive_mark_sleep;
-	rte_keepalive_register_relay_callback;
-	rte_rtm_supported;
-	rte_thread_setname;
-
-} DPDK_16.04;
-
-DPDK_16.11 {
-	global:
-
-	rte_delay_us_block;
-	rte_delay_us_callback_register;
-
-} DPDK_16.07;
-
-DPDK_17.02 {
-	global:
-
-	rte_bus_dump;
-	rte_bus_probe;
-	rte_bus_register;
-	rte_bus_scan;
-	rte_bus_unregister;
-
-} DPDK_16.11;
-
-DPDK_17.05 {
-	global:
-
-	rte_cpu_is_supported;
-	rte_intr_free_epoll_fd;
-	rte_log_dump;
-	rte_log_get_global_level;
-	rte_log_register;
-	rte_log_set_global_level;
-	rte_log_set_level;
-	rte_log_set_level_regexp;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_bus_find;
-	rte_bus_find_by_device;
-	rte_bus_find_by_name;
-	rte_log_get_level;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eal_create_uio_dev;
-	rte_bus_get_iommu_class;
-	rte_eal_has_pci;
-	rte_eal_iova_mode;
-	rte_eal_using_phys_addrs;
-	rte_eal_vfio_intr_mode;
-	rte_lcore_has_role;
-	rte_malloc_virt2iova;
-	rte_mem_virt2iova;
-	rte_vfio_enable;
-	rte_vfio_is_enabled;
-	rte_vfio_noiommu_is_enabled;
-	rte_vfio_release_device;
-	rte_vfio_setup_device;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_hypervisor_get;
-	rte_hypervisor_get_name;
-	rte_vfio_clear_group;
 	rte_reciprocal_value;
 	rte_reciprocal_value_u64;
-
-}  DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_log_set_level_pattern;
+	rte_rtm_supported;
 	rte_service_attr_get;
 	rte_service_attr_reset_all;
 	rte_service_component_register;
@@ -215,6 +163,8 @@ DPDK_18.05 {
 	rte_service_get_count;
 	rte_service_get_name;
 	rte_service_lcore_add;
+	rte_service_lcore_attr_get;
+	rte_service_lcore_attr_reset_all;
 	rte_service_lcore_count;
 	rte_service_lcore_count_services;
 	rte_service_lcore_del;
@@ -224,6 +174,7 @@ DPDK_18.05 {
 	rte_service_lcore_stop;
 	rte_service_map_lcore_get;
 	rte_service_map_lcore_set;
+	rte_service_may_be_active;
 	rte_service_probe_capability;
 	rte_service_run_iter_on_app_lcore;
 	rte_service_runstate_get;
@@ -231,17 +182,23 @@ DPDK_18.05 {
 	rte_service_set_runstate_mapped_check;
 	rte_service_set_stats_enable;
 	rte_service_start_with_defaults;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eal_mbuf_user_pool_ops;
+	rte_set_application_usage_hook;
+	rte_socket_count;
+	rte_socket_id;
+	rte_socket_id_by_idx;
+	rte_srand;
+	rte_strerror;
+	rte_strscpy;
+	rte_strsplit;
+	rte_sys_gettid;
+	rte_thread_get_affinity;
+	rte_thread_set_affinity;
+	rte_thread_setname;
 	rte_uuid_compare;
 	rte_uuid_is_null;
 	rte_uuid_parse;
 	rte_uuid_unparse;
+	rte_vfio_clear_group;
 	rte_vfio_container_create;
 	rte_vfio_container_destroy;
 	rte_vfio_container_dma_map;
@@ -250,86 +207,49 @@ DPDK_18.08 {
 	rte_vfio_container_group_unbind;
 	rte_vfio_dma_map;
 	rte_vfio_dma_unmap;
+	rte_vfio_enable;
 	rte_vfio_get_container_fd;
 	rte_vfio_get_group_fd;
 	rte_vfio_get_group_num;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_dev_probe;
-	rte_dev_remove;
-	rte_eal_get_runtime_dir;
-	rte_eal_hotplug_add;
-	rte_eal_hotplug_remove;
-	rte_strscpy;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_ctrl_thread_create;
-	rte_dev_is_probed;
-	rte_devargs_add;
-	rte_devargs_dump;
-	rte_devargs_insert;
-	rte_devargs_next;
-	rte_devargs_parse;
-	rte_devargs_parsef;
-	rte_devargs_remove;
-	rte_devargs_type_count;
-	rte_eal_cleanup;
-	rte_socket_count;
-	rte_socket_id_by_idx;
-
-} DPDK_18.11;
-
-DPDK_19.08 {
-	global:
-
-	rte_lcore_index;
-	rte_lcore_to_socket_id;
-	rte_mcfg_mem_read_lock;
-	rte_mcfg_mem_read_unlock;
-	rte_mcfg_mem_write_lock;
-	rte_mcfg_mem_write_unlock;
-	rte_mcfg_mempool_read_lock;
-	rte_mcfg_mempool_read_unlock;
-	rte_mcfg_mempool_write_lock;
-	rte_mcfg_mempool_write_unlock;
-	rte_mcfg_tailq_read_lock;
-	rte_mcfg_tailq_read_unlock;
-	rte_mcfg_tailq_write_lock;
-	rte_mcfg_tailq_write_unlock;
-	rte_rand;
-	rte_service_lcore_attr_get;
-	rte_service_lcore_attr_reset_all;
-	rte_service_may_be_active;
-	rte_srand;
-
-} DPDK_19.05;
+	rte_vfio_is_enabled;
+	rte_vfio_noiommu_is_enabled;
+	rte_vfio_release_device;
+	rte_vfio_setup_device;
+	rte_vlog;
+	rte_zmalloc;
+	rte_zmalloc_socket;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
 
-	# added in 18.02
-	rte_mp_action_register;
-	rte_mp_action_unregister;
-	rte_mp_reply;
-	rte_mp_sendmsg;
-
-	# added in 18.05
+	rte_class_find;
+	rte_class_find_by_name;
+	rte_class_register;
+	rte_class_unregister;
+	rte_delay_us_sleep;
+	rte_dev_dma_map;
+	rte_dev_dma_unmap;
+	rte_dev_event_callback_process;
 	rte_dev_event_callback_register;
 	rte_dev_event_callback_unregister;
 	rte_dev_event_monitor_start;
 	rte_dev_event_monitor_stop;
+	rte_dev_hotplug_handle_disable;
+	rte_dev_hotplug_handle_enable;
+	rte_dev_iterator_init;
+	rte_dev_iterator_next;
+	rte_extmem_attach;
+	rte_extmem_detach;
+	rte_extmem_register;
+	rte_extmem_unregister;
 	rte_fbarray_attach;
 	rte_fbarray_destroy;
 	rte_fbarray_detach;
 	rte_fbarray_dump_metadata;
+	rte_fbarray_find_biggest_free;
+	rte_fbarray_find_biggest_used;
 	rte_fbarray_find_contig_free;
 	rte_fbarray_find_contig_used;
 	rte_fbarray_find_idx;
@@ -337,49 +257,25 @@ EXPERIMENTAL {
 	rte_fbarray_find_next_n_free;
 	rte_fbarray_find_next_n_used;
 	rte_fbarray_find_next_used;
+	rte_fbarray_find_prev_free;
+	rte_fbarray_find_prev_n_free;
+	rte_fbarray_find_prev_n_used;
+	rte_fbarray_find_prev_used;
+	rte_fbarray_find_rev_biggest_free;
+	rte_fbarray_find_rev_biggest_used;
+	rte_fbarray_find_rev_contig_free;
+	rte_fbarray_find_rev_contig_used;
 	rte_fbarray_get;
 	rte_fbarray_init;
 	rte_fbarray_is_used;
 	rte_fbarray_set_free;
 	rte_fbarray_set_used;
+	rte_intr_ack;
+	rte_intr_callback_unregister_pending;
+	rte_lcore_cpuset;
+	rte_lcore_to_cpu_id;
 	rte_log_register_type_and_pick_level;
 	rte_malloc_dump_heaps;
-	rte_mem_alloc_validator_register;
-	rte_mem_alloc_validator_unregister;
-	rte_mem_check_dma_mask;
-	rte_mem_event_callback_register;
-	rte_mem_event_callback_unregister;
-	rte_mem_iova2virt;
-	rte_mem_virt2memseg;
-	rte_mem_virt2memseg_list;
-	rte_memseg_contig_walk;
-	rte_memseg_list_walk;
-	rte_memseg_walk;
-	rte_mp_request_async;
-	rte_mp_request_sync;
-
-	# added in 18.08
-	rte_class_find;
-	rte_class_find_by_name;
-	rte_class_register;
-	rte_class_unregister;
-	rte_dev_iterator_init;
-	rte_dev_iterator_next;
-	rte_fbarray_find_prev_free;
-	rte_fbarray_find_prev_n_free;
-	rte_fbarray_find_prev_n_used;
-	rte_fbarray_find_prev_used;
-	rte_fbarray_find_rev_contig_free;
-	rte_fbarray_find_rev_contig_used;
-	rte_memseg_contig_walk_thread_unsafe;
-	rte_memseg_list_walk_thread_unsafe;
-	rte_memseg_walk_thread_unsafe;
-
-	# added in 18.11
-	rte_delay_us_sleep;
-	rte_dev_event_callback_process;
-	rte_dev_hotplug_handle_disable;
-	rte_dev_hotplug_handle_enable;
 	rte_malloc_heap_create;
 	rte_malloc_heap_destroy;
 	rte_malloc_heap_get_socket;
@@ -388,35 +284,35 @@ EXPERIMENTAL {
 	rte_malloc_heap_memory_detach;
 	rte_malloc_heap_memory_remove;
 	rte_malloc_heap_socket_is_external;
+	rte_mcfg_timer_lock;
+	rte_mcfg_timer_unlock;
+	rte_mem_alloc_validator_register;
+	rte_mem_alloc_validator_unregister;
+	rte_mem_check_dma_mask;
 	rte_mem_check_dma_mask_thread_unsafe;
+	rte_mem_event_callback_register;
+	rte_mem_event_callback_unregister;
+	rte_mem_iova2virt;
 	rte_mem_set_dma_mask;
+	rte_mem_virt2memseg;
+	rte_mem_virt2memseg_list;
+	rte_memseg_contig_walk;
+	rte_memseg_contig_walk_thread_unsafe;
 	rte_memseg_get_fd;
 	rte_memseg_get_fd_offset;
 	rte_memseg_get_fd_offset_thread_unsafe;
 	rte_memseg_get_fd_thread_unsafe;
+	rte_memseg_list_walk;
+	rte_memseg_list_walk_thread_unsafe;
+	rte_memseg_walk;
+	rte_memseg_walk_thread_unsafe;
+	rte_mp_action_register;
+	rte_mp_action_unregister;
+	rte_mp_reply;
+	rte_mp_request_async;
+	rte_mp_request_sync;
+	rte_mp_sendmsg;
 	rte_option_register;
-
-	# added in 19.02
-	rte_extmem_attach;
-	rte_extmem_detach;
-	rte_extmem_register;
-	rte_extmem_unregister;
-
-	# added in 19.05
-	rte_dev_dma_map;
-	rte_dev_dma_unmap;
-	rte_fbarray_find_biggest_free;
-	rte_fbarray_find_biggest_used;
-	rte_fbarray_find_rev_biggest_free;
-	rte_fbarray_find_rev_biggest_used;
-	rte_intr_callback_unregister_pending;
-	rte_realloc_socket;
-
-	# added in 19.08
-	rte_intr_ack;
-	rte_lcore_cpuset;
-	rte_lcore_to_cpu_id;
-	rte_mcfg_timer_lock;
-	rte_mcfg_timer_unlock;
 	rte_rand_max;
+	rte_realloc_socket;
 };
diff --git a/lib/librte_efd/rte_efd_version.map b/lib/librte_efd/rte_efd_version.map
index ae60a6417..d061f8805 100644
--- a/lib/librte_efd/rte_efd_version.map
+++ b/lib/librte_efd/rte_efd_version.map
@@ -1,4 +1,4 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_efd_create;
@@ -8,6 +8,6 @@ DPDK_17.02 {
 	rte_efd_lookup;
 	rte_efd_lookup_bulk;
 	rte_efd_update;
-
 	local: *;
 };
+
diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map
index 6df42a47b..9998ab6ca 100644
--- a/lib/librte_ethdev/rte_ethdev_version.map
+++ b/lib/librte_ethdev/rte_ethdev_version.map
@@ -1,35 +1,53 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	global:
 
+	_rte_eth_dev_callback_process;
+	_rte_eth_dev_reset;
+	rte_eth_add_first_rx_callback;
 	rte_eth_add_rx_callback;
 	rte_eth_add_tx_callback;
 	rte_eth_allmulticast_disable;
 	rte_eth_allmulticast_enable;
 	rte_eth_allmulticast_get;
+	rte_eth_dev_adjust_nb_rx_tx_desc;
 	rte_eth_dev_allocate;
 	rte_eth_dev_allocated;
+	rte_eth_dev_attach_secondary;
 	rte_eth_dev_callback_register;
 	rte_eth_dev_callback_unregister;
 	rte_eth_dev_close;
 	rte_eth_dev_configure;
 	rte_eth_dev_count;
+	rte_eth_dev_count_avail;
+	rte_eth_dev_count_total;
 	rte_eth_dev_default_mac_addr_set;
+	rte_eth_dev_filter_ctrl;
 	rte_eth_dev_filter_supported;
 	rte_eth_dev_flow_ctrl_get;
 	rte_eth_dev_flow_ctrl_set;
+	rte_eth_dev_fw_version_get;
 	rte_eth_dev_get_dcb_info;
 	rte_eth_dev_get_eeprom;
 	rte_eth_dev_get_eeprom_length;
 	rte_eth_dev_get_mtu;
+	rte_eth_dev_get_name_by_port;
+	rte_eth_dev_get_port_by_name;
 	rte_eth_dev_get_reg_info;
+	rte_eth_dev_get_sec_ctx;
+	rte_eth_dev_get_supported_ptypes;
 	rte_eth_dev_get_vlan_offload;
-	rte_eth_devices;
 	rte_eth_dev_info_get;
 	rte_eth_dev_is_valid_port;
+	rte_eth_dev_l2_tunnel_eth_type_conf;
+	rte_eth_dev_l2_tunnel_offload_set;
+	rte_eth_dev_logtype;
 	rte_eth_dev_mac_addr_add;
 	rte_eth_dev_mac_addr_remove;
+	rte_eth_dev_pool_ops_supported;
 	rte_eth_dev_priority_flow_ctrl_set;
+	rte_eth_dev_probing_finish;
 	rte_eth_dev_release_port;
+	rte_eth_dev_reset;
 	rte_eth_dev_rss_hash_conf_get;
 	rte_eth_dev_rss_hash_update;
 	rte_eth_dev_rss_reta_query;
@@ -38,6 +56,7 @@ DPDK_2.2 {
 	rte_eth_dev_rx_intr_ctl_q;
 	rte_eth_dev_rx_intr_disable;
 	rte_eth_dev_rx_intr_enable;
+	rte_eth_dev_rx_offload_name;
 	rte_eth_dev_rx_queue_start;
 	rte_eth_dev_rx_queue_stop;
 	rte_eth_dev_set_eeprom;
@@ -47,18 +66,28 @@ DPDK_2.2 {
 	rte_eth_dev_set_mtu;
 	rte_eth_dev_set_rx_queue_stats_mapping;
 	rte_eth_dev_set_tx_queue_stats_mapping;
+	rte_eth_dev_set_vlan_ether_type;
 	rte_eth_dev_set_vlan_offload;
 	rte_eth_dev_set_vlan_pvid;
 	rte_eth_dev_set_vlan_strip_on_queue;
 	rte_eth_dev_socket_id;
 	rte_eth_dev_start;
 	rte_eth_dev_stop;
+	rte_eth_dev_tx_offload_name;
 	rte_eth_dev_tx_queue_start;
 	rte_eth_dev_tx_queue_stop;
 	rte_eth_dev_uc_all_hash_table_set;
 	rte_eth_dev_uc_hash_table_set;
+	rte_eth_dev_udp_tunnel_port_add;
+	rte_eth_dev_udp_tunnel_port_delete;
 	rte_eth_dev_vlan_filter;
+	rte_eth_devices;
 	rte_eth_dma_zone_reserve;
+	rte_eth_find_next;
+	rte_eth_find_next_owned_by;
+	rte_eth_iterator_cleanup;
+	rte_eth_iterator_init;
+	rte_eth_iterator_next;
 	rte_eth_led_off;
 	rte_eth_led_on;
 	rte_eth_link;
@@ -75,6 +104,7 @@ DPDK_2.2 {
 	rte_eth_rx_queue_info_get;
 	rte_eth_rx_queue_setup;
 	rte_eth_set_queue_rate_limit;
+	rte_eth_speed_bitflag;
 	rte_eth_stats;
 	rte_eth_stats_get;
 	rte_eth_stats_reset;
@@ -85,66 +115,27 @@ DPDK_2.2 {
 	rte_eth_timesync_read_time;
 	rte_eth_timesync_read_tx_timestamp;
 	rte_eth_timesync_write_time;
-	rte_eth_tx_queue_info_get;
-	rte_eth_tx_queue_setup;
-	rte_eth_xstats_get;
-	rte_eth_xstats_reset;
-
-	local: *;
-};
-
-DPDK_16.04 {
-	global:
-
-	rte_eth_dev_get_supported_ptypes;
-	rte_eth_dev_l2_tunnel_eth_type_conf;
-	rte_eth_dev_l2_tunnel_offload_set;
-	rte_eth_dev_set_vlan_ether_type;
-	rte_eth_dev_udp_tunnel_port_add;
-	rte_eth_dev_udp_tunnel_port_delete;
-	rte_eth_speed_bitflag;
 	rte_eth_tx_buffer_count_callback;
 	rte_eth_tx_buffer_drop_callback;
 	rte_eth_tx_buffer_init;
 	rte_eth_tx_buffer_set_err_callback;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_add_first_rx_callback;
-	rte_eth_dev_get_name_by_port;
-	rte_eth_dev_get_port_by_name;
-	rte_eth_xstats_get_names;
-
-} DPDK_16.04;
-
-DPDK_17.02 {
-	global:
-
-	_rte_eth_dev_reset;
-	rte_eth_dev_fw_version_get;
-
-} DPDK_16.07;
-
-DPDK_17.05 {
-	global:
-
-	rte_eth_dev_attach_secondary;
-	rte_eth_find_next;
 	rte_eth_tx_done_cleanup;
+	rte_eth_tx_queue_info_get;
+	rte_eth_tx_queue_setup;
+	rte_eth_xstats_get;
 	rte_eth_xstats_get_by_id;
 	rte_eth_xstats_get_id_by_name;
+	rte_eth_xstats_get_names;
 	rte_eth_xstats_get_names_by_id;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	_rte_eth_dev_callback_process;
-	rte_eth_dev_adjust_nb_rx_tx_desc;
+	rte_eth_xstats_reset;
+	rte_flow_copy;
+	rte_flow_create;
+	rte_flow_destroy;
+	rte_flow_error_set;
+	rte_flow_flush;
+	rte_flow_isolate;
+	rte_flow_query;
+	rte_flow_validate;
 	rte_tm_capabilities_get;
 	rte_tm_get_number_of_leaf_nodes;
 	rte_tm_hierarchy_commit;
@@ -175,71 +166,31 @@ DPDK_17.08 {
 	rte_tm_shared_wred_context_delete;
 	rte_tm_wred_profile_add;
 	rte_tm_wred_profile_delete;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eth_dev_get_sec_ctx;
-	rte_eth_dev_pool_ops_supported;
-	rte_eth_dev_reset;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_eth_dev_filter_ctrl;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_eth_dev_count_avail;
-	rte_eth_dev_probing_finish;
-	rte_eth_find_next_owned_by;
-	rte_flow_copy;
-	rte_flow_create;
-	rte_flow_destroy;
-	rte_flow_error_set;
-	rte_flow_flush;
-	rte_flow_isolate;
-	rte_flow_query;
-	rte_flow_validate;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eth_dev_logtype;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_eth_dev_rx_offload_name;
-	rte_eth_dev_tx_offload_name;
-	rte_eth_iterator_cleanup;
-	rte_eth_iterator_init;
-	rte_eth_iterator_next;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_eth_dev_count_total;
-
-} DPDK_18.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
 
-	# added in 17.11
+	rte_eth_dev_create;
+	rte_eth_dev_destroy;
+	rte_eth_dev_get_module_eeprom;
+	rte_eth_dev_get_module_info;
+	rte_eth_dev_is_removed;
+	rte_eth_dev_owner_delete;
+	rte_eth_dev_owner_get;
+	rte_eth_dev_owner_new;
+	rte_eth_dev_owner_set;
+	rte_eth_dev_owner_unset;
+	rte_eth_dev_rx_intr_ctl_q_get_fd;
+	rte_eth_devargs_parse;
+	rte_eth_find_next_of;
+	rte_eth_find_next_sibling;
+	rte_eth_read_clock;
+	rte_eth_switch_domain_alloc;
+	rte_eth_switch_domain_free;
+	rte_flow_conv;
+	rte_flow_expand_rss;
 	rte_mtr_capabilities_get;
 	rte_mtr_create;
 	rte_mtr_destroy;
@@ -252,35 +203,4 @@ EXPERIMENTAL {
 	rte_mtr_policer_actions_update;
 	rte_mtr_stats_read;
 	rte_mtr_stats_update;
-
-	# added in 18.02
-	rte_eth_dev_is_removed;
-	rte_eth_dev_owner_delete;
-	rte_eth_dev_owner_get;
-	rte_eth_dev_owner_new;
-	rte_eth_dev_owner_set;
-	rte_eth_dev_owner_unset;
-
-	# added in 18.05
-	rte_eth_dev_create;
-	rte_eth_dev_destroy;
-	rte_eth_dev_get_module_eeprom;
-	rte_eth_dev_get_module_info;
-	rte_eth_devargs_parse;
-	rte_eth_switch_domain_alloc;
-	rte_eth_switch_domain_free;
-
-	# added in 18.08
-	rte_flow_expand_rss;
-
-	# added in 18.11
-	rte_eth_dev_rx_intr_ctl_q_get_fd;
-	rte_flow_conv;
-
-	# added in 19.05
-	rte_eth_find_next_of;
-	rte_eth_find_next_sibling;
-
-	# added in 19.08
-	rte_eth_read_clock;
 };
diff --git a/lib/librte_eventdev/rte_eventdev_version.map b/lib/librte_eventdev/rte_eventdev_version.map
index 76b3021d3..d354c1e49 100644
--- a/lib/librte_eventdev/rte_eventdev_version.map
+++ b/lib/librte_eventdev/rte_eventdev_version.map
@@ -1,61 +1,38 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
-	rte_eventdevs;
-
+	rte_event_crypto_adapter_caps_get;
+	rte_event_crypto_adapter_create;
+	rte_event_crypto_adapter_create_ext;
+	rte_event_crypto_adapter_event_port_get;
+	rte_event_crypto_adapter_free;
+	rte_event_crypto_adapter_queue_pair_add;
+	rte_event_crypto_adapter_queue_pair_del;
+	rte_event_crypto_adapter_service_id_get;
+	rte_event_crypto_adapter_start;
+	rte_event_crypto_adapter_stats_get;
+	rte_event_crypto_adapter_stats_reset;
+	rte_event_crypto_adapter_stop;
+	rte_event_dequeue_timeout_ticks;
+	rte_event_dev_attr_get;
+	rte_event_dev_close;
+	rte_event_dev_configure;
 	rte_event_dev_count;
+	rte_event_dev_dump;
 	rte_event_dev_get_dev_id;
-	rte_event_dev_socket_id;
 	rte_event_dev_info_get;
-	rte_event_dev_configure;
+	rte_event_dev_selftest;
+	rte_event_dev_service_id_get;
+	rte_event_dev_socket_id;
 	rte_event_dev_start;
 	rte_event_dev_stop;
-	rte_event_dev_close;
-	rte_event_dev_dump;
+	rte_event_dev_stop_flush_callback_register;
 	rte_event_dev_xstats_by_name_get;
 	rte_event_dev_xstats_get;
 	rte_event_dev_xstats_names_get;
 	rte_event_dev_xstats_reset;
-
-	rte_event_port_default_conf_get;
-	rte_event_port_setup;
-	rte_event_port_link;
-	rte_event_port_unlink;
-	rte_event_port_links_get;
-
-	rte_event_queue_default_conf_get;
-	rte_event_queue_setup;
-
-	rte_event_dequeue_timeout_ticks;
-
-	rte_event_pmd_allocate;
-	rte_event_pmd_release;
-	rte_event_pmd_vdev_init;
-	rte_event_pmd_vdev_uninit;
-	rte_event_pmd_pci_probe;
-	rte_event_pmd_pci_remove;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	rte_event_ring_create;
-	rte_event_ring_free;
-	rte_event_ring_init;
-	rte_event_ring_lookup;
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_event_dev_attr_get;
-	rte_event_dev_service_id_get;
-	rte_event_port_attr_get;
-	rte_event_queue_attr_get;
-
 	rte_event_eth_rx_adapter_caps_get;
+	rte_event_eth_rx_adapter_cb_register;
 	rte_event_eth_rx_adapter_create;
 	rte_event_eth_rx_adapter_create_ext;
 	rte_event_eth_rx_adapter_free;
@@ -63,38 +40,9 @@ DPDK_17.11 {
 	rte_event_eth_rx_adapter_queue_del;
 	rte_event_eth_rx_adapter_service_id_get;
 	rte_event_eth_rx_adapter_start;
+	rte_event_eth_rx_adapter_stats_get;
 	rte_event_eth_rx_adapter_stats_reset;
 	rte_event_eth_rx_adapter_stop;
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_event_dev_selftest;
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_event_dev_stop_flush_callback_register;
-} DPDK_18.02;
-
-DPDK_19.05 {
-	global:
-
-	rte_event_crypto_adapter_caps_get;
-	rte_event_crypto_adapter_create;
-	rte_event_crypto_adapter_create_ext;
-	rte_event_crypto_adapter_event_port_get;
-	rte_event_crypto_adapter_free;
-	rte_event_crypto_adapter_queue_pair_add;
-	rte_event_crypto_adapter_queue_pair_del;
-	rte_event_crypto_adapter_service_id_get;
-	rte_event_crypto_adapter_start;
-	rte_event_crypto_adapter_stats_get;
-	rte_event_crypto_adapter_stats_reset;
-	rte_event_crypto_adapter_stop;
-	rte_event_port_unlinks_in_progress;
 	rte_event_eth_tx_adapter_caps_get;
 	rte_event_eth_tx_adapter_create;
 	rte_event_eth_tx_adapter_create_ext;
@@ -107,6 +55,26 @@ DPDK_19.05 {
 	rte_event_eth_tx_adapter_stats_get;
 	rte_event_eth_tx_adapter_stats_reset;
 	rte_event_eth_tx_adapter_stop;
+	rte_event_pmd_allocate;
+	rte_event_pmd_pci_probe;
+	rte_event_pmd_pci_remove;
+	rte_event_pmd_release;
+	rte_event_pmd_vdev_init;
+	rte_event_pmd_vdev_uninit;
+	rte_event_port_attr_get;
+	rte_event_port_default_conf_get;
+	rte_event_port_link;
+	rte_event_port_links_get;
+	rte_event_port_setup;
+	rte_event_port_unlink;
+	rte_event_port_unlinks_in_progress;
+	rte_event_queue_attr_get;
+	rte_event_queue_default_conf_get;
+	rte_event_queue_setup;
+	rte_event_ring_create;
+	rte_event_ring_free;
+	rte_event_ring_init;
+	rte_event_ring_lookup;
 	rte_event_timer_adapter_caps_get;
 	rte_event_timer_adapter_create;
 	rte_event_timer_adapter_create_ext;
@@ -121,11 +89,7 @@ DPDK_19.05 {
 	rte_event_timer_arm_burst;
 	rte_event_timer_arm_tmo_tick_burst;
 	rte_event_timer_cancel_burst;
-} DPDK_18.05;
-
-DPDK_19.08 {
-	global:
+	rte_eventdevs;
+	local: *;
+};
 
-	rte_event_eth_rx_adapter_cb_register;
-	rte_event_eth_rx_adapter_stats_get;
-} DPDK_19.05;
diff --git a/lib/librte_flow_classify/rte_flow_classify_version.map b/lib/librte_flow_classify/rte_flow_classify_version.map
index 49bc25c6a..9bbdc8b6e 100644
--- a/lib/librte_flow_classify/rte_flow_classify_version.map
+++ b/lib/librte_flow_classify/rte_flow_classify_version.map
@@ -8,6 +8,5 @@ EXPERIMENTAL {
 	rte_flow_classify_table_entry_add;
 	rte_flow_classify_table_entry_delete;
 	rte_flow_classify_validate;
-
 	local: *;
 };
diff --git a/lib/librte_gro/rte_gro_version.map b/lib/librte_gro/rte_gro_version.map
index 1606b6dc7..a10aa0768 100644
--- a/lib/librte_gro/rte_gro_version.map
+++ b/lib/librte_gro/rte_gro_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_gro_ctx_create;
@@ -7,6 +7,6 @@ DPDK_17.08 {
 	rte_gro_reassemble;
 	rte_gro_reassemble_burst;
 	rte_gro_timeout_flush;
-
 	local: *;
 };
+
diff --git a/lib/librte_gso/rte_gso_version.map b/lib/librte_gso/rte_gso_version.map
index e1fd453ed..56f2223f0 100644
--- a/lib/librte_gso/rte_gso_version.map
+++ b/lib/librte_gso/rte_gso_version.map
@@ -1,7 +1,7 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_gso_segment;
-
 	local: *;
 };
+
diff --git a/lib/librte_hash/rte_hash_version.map b/lib/librte_hash/rte_hash_version.map
index 734ae28b0..682188284 100644
--- a/lib/librte_hash/rte_hash_version.map
+++ b/lib/librte_hash/rte_hash_version.map
@@ -1,62 +1,35 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_fbk_hash_create;
 	rte_fbk_hash_find_existing;
 	rte_fbk_hash_free;
 	rte_hash_add_key;
+	rte_hash_add_key_data;
 	rte_hash_add_key_with_hash;
+	rte_hash_add_key_with_hash_data;
+	rte_hash_count;
 	rte_hash_create;
 	rte_hash_del_key;
 	rte_hash_del_key_with_hash;
 	rte_hash_find_existing;
 	rte_hash_free;
+	rte_hash_get_key_with_position;
 	rte_hash_hash;
+	rte_hash_iterate;
 	rte_hash_lookup;
 	rte_hash_lookup_bulk;
-	rte_hash_lookup_with_hash;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_hash_add_key_data;
-	rte_hash_add_key_with_hash_data;
-	rte_hash_iterate;
 	rte_hash_lookup_bulk_data;
 	rte_hash_lookup_data;
+	rte_hash_lookup_with_hash;
 	rte_hash_lookup_with_hash_data;
 	rte_hash_reset;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_hash_set_cmp_func;
-
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_hash_get_key_with_position;
-
-} DPDK_2.2;
-
-
-DPDK_18.08 {
-	global:
-
-	rte_hash_count;
-
-} DPDK_16.07;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
 
 	rte_hash_free_key_with_position;
-
 };
diff --git a/lib/librte_ip_frag/rte_ip_frag_version.map b/lib/librte_ip_frag/rte_ip_frag_version.map
index a193007c6..fe3ac7b8a 100644
--- a/lib/librte_ip_frag/rte_ip_frag_version.map
+++ b/lib/librte_ip_frag/rte_ip_frag_version.map
@@ -1,24 +1,17 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
 	rte_ipv4_fragment_packet;
 	rte_ipv6_frag_reassemble_packet;
 	rte_ipv6_fragment_packet;
-
 	local: *;
 };
 
-DPDK_17.08 {
-	global:
-
-	rte_ip_frag_table_destroy;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_ipsec/rte_ipsec_version.map b/lib/librte_ipsec/rte_ipsec_version.map
index ee9f1961b..caf763ab9 100644
--- a/lib/librte_ipsec/rte_ipsec_version.map
+++ b/lib/librte_ipsec/rte_ipsec_version.map
@@ -10,6 +10,5 @@ EXPERIMENTAL {
 	rte_ipsec_sa_type;
 	rte_ipsec_ses_from_crypto;
 	rte_ipsec_session_prepare;
-
 	local: *;
 };
diff --git a/lib/librte_jobstats/rte_jobstats_version.map b/lib/librte_jobstats/rte_jobstats_version.map
index f89441438..1ee93ffef 100644
--- a/lib/librte_jobstats/rte_jobstats_version.map
+++ b/lib/librte_jobstats/rte_jobstats_version.map
@@ -1,6 +1,7 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_jobstats_abort;
 	rte_jobstats_context_finish;
 	rte_jobstats_context_init;
 	rte_jobstats_context_reset;
@@ -14,13 +15,6 @@ DPDK_2.0 {
 	rte_jobstats_set_target;
 	rte_jobstats_set_update_period_function;
 	rte_jobstats_start;
-
 	local: *;
 };
 
-DPDK_16.04 {
-	global:
-
-	rte_jobstats_abort;
-
-} DPDK_2.0;
diff --git a/lib/librte_kni/rte_kni_version.map b/lib/librte_kni/rte_kni_version.map
index c877dc6aa..1de824375 100644
--- a/lib/librte_kni/rte_kni_version.map
+++ b/lib/librte_kni/rte_kni_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kni_alloc;
@@ -12,7 +12,6 @@ DPDK_2.0 {
 	rte_kni_rx_burst;
 	rte_kni_tx_burst;
 	rte_kni_unregister_handlers;
-
 	local: *;
 };
 
diff --git a/lib/librte_kvargs/rte_kvargs_version.map b/lib/librte_kvargs/rte_kvargs_version.map
index 8f4b4e3f8..ea1db117e 100644
--- a/lib/librte_kvargs/rte_kvargs_version.map
+++ b/lib/librte_kvargs/rte_kvargs_version.map
@@ -1,11 +1,10 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kvargs_count;
 	rte_kvargs_free;
 	rte_kvargs_parse;
 	rte_kvargs_process;
-
 	local: *;
 };
 
@@ -14,5 +13,4 @@ EXPERIMENTAL {
 
 	rte_kvargs_parse_delim;
 	rte_kvargs_strcmp;
-
-} DPDK_2.0;
+};
diff --git a/lib/librte_latencystats/rte_latencystats_version.map b/lib/librte_latencystats/rte_latencystats_version.map
index ac8403e82..a2d6d6722 100644
--- a/lib/librte_latencystats/rte_latencystats_version.map
+++ b/lib/librte_latencystats/rte_latencystats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_latencystats_get;
@@ -6,6 +6,6 @@ DPDK_17.05 {
 	rte_latencystats_init;
 	rte_latencystats_uninit;
 	rte_latencystats_update;
-
 	local: *;
 };
+
diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c
index 3a929a1b1..ce4681b79 100644
--- a/lib/librte_lpm/rte_lpm.c
+++ b/lib/librte_lpm/rte_lpm.c
@@ -113,7 +113,6 @@ rte_lpm_find_existing_v20(const char *name)
 
 	return l;
 }
-VERSION_SYMBOL(rte_lpm_find_existing, _v20, 2.0);
 
 struct rte_lpm *
 rte_lpm_find_existing_v1604(const char *name)
@@ -139,7 +138,7 @@ rte_lpm_find_existing_v1604(const char *name)
 
 	return l;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_find_existing, _v1604, 16.04);
+BIND_DEFAULT_SYMBOL(rte_lpm_find_existing, _v1604, 20.0);
 MAP_STATIC_SYMBOL(struct rte_lpm *rte_lpm_find_existing(const char *name),
 		rte_lpm_find_existing_v1604);
 
@@ -217,7 +216,6 @@ rte_lpm_create_v20(const char *name, int socket_id, int max_rules,
 
 	return lpm;
 }
-VERSION_SYMBOL(rte_lpm_create, _v20, 2.0);
 
 struct rte_lpm *
 rte_lpm_create_v1604(const char *name, int socket_id,
@@ -320,7 +318,7 @@ rte_lpm_create_v1604(const char *name, int socket_id,
 
 	return lpm;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_create, _v1604, 16.04);
+BIND_DEFAULT_SYMBOL(rte_lpm_create, _v1604, 20.0);
 MAP_STATIC_SYMBOL(
 	struct rte_lpm *rte_lpm_create(const char *name, int socket_id,
 			const struct rte_lpm_config *config), rte_lpm_create_v1604);
@@ -355,7 +353,6 @@ rte_lpm_free_v20(struct rte_lpm_v20 *lpm)
 	rte_free(lpm);
 	rte_free(te);
 }
-VERSION_SYMBOL(rte_lpm_free, _v20, 2.0);
 
 void
 rte_lpm_free_v1604(struct rte_lpm *lpm)
@@ -386,7 +383,7 @@ rte_lpm_free_v1604(struct rte_lpm *lpm)
 	rte_free(lpm);
 	rte_free(te);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_free, _v1604, 16.04);
+BIND_DEFAULT_SYMBOL(rte_lpm_free, _v1604, 20.0);
 MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
 		rte_lpm_free_v1604);
 
@@ -1215,7 +1212,6 @@ rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 
 	return 0;
 }
-VERSION_SYMBOL(rte_lpm_add, _v20, 2.0);
 
 int
 rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
@@ -1256,7 +1252,7 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_add, _v1604, 16.04);
+BIND_DEFAULT_SYMBOL(rte_lpm_add, _v1604, 20.0);
 MAP_STATIC_SYMBOL(int rte_lpm_add(struct rte_lpm *lpm, uint32_t ip,
 		uint8_t depth, uint32_t next_hop), rte_lpm_add_v1604);
 
@@ -1288,7 +1284,6 @@ uint8_t *next_hop)
 	/* If rule is not found return 0. */
 	return 0;
 }
-VERSION_SYMBOL(rte_lpm_is_rule_present, _v20, 2.0);
 
 int
 rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
@@ -1315,7 +1310,7 @@ uint32_t *next_hop)
 	/* If rule is not found return 0. */
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_is_rule_present, _v1604, 16.04);
+BIND_DEFAULT_SYMBOL(rte_lpm_is_rule_present, _v1604, 20.0);
 MAP_STATIC_SYMBOL(int rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip,
 		uint8_t depth, uint32_t *next_hop), rte_lpm_is_rule_present_v1604);
 
@@ -1895,7 +1890,6 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 				sub_rule_depth);
 	}
 }
-VERSION_SYMBOL(rte_lpm_delete, _v20, 2.0);
 
 int
 rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
@@ -1949,7 +1943,7 @@ rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
 				sub_rule_depth);
 	}
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_delete, _v1604, 16.04);
+BIND_DEFAULT_SYMBOL(rte_lpm_delete, _v1604, 20.0);
 MAP_STATIC_SYMBOL(int rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip,
 		uint8_t depth), rte_lpm_delete_v1604);
 
@@ -1971,7 +1965,6 @@ rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm)
 	/* Delete all rules form the rules table. */
 	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
 }
-VERSION_SYMBOL(rte_lpm_delete_all, _v20, 2.0);
 
 void
 rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
@@ -1989,6 +1982,6 @@ rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
 	/* Delete all rules form the rules table. */
 	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_delete_all, _v1604, 16.04);
+BIND_DEFAULT_SYMBOL(rte_lpm_delete_all, _v1604, 20.0);
 MAP_STATIC_SYMBOL(void rte_lpm_delete_all(struct rte_lpm *lpm),
 		rte_lpm_delete_all_v1604);
diff --git a/lib/librte_lpm/rte_lpm6.c b/lib/librte_lpm/rte_lpm6.c
index 9b8aeb972..44828f72c 100644
--- a/lib/librte_lpm/rte_lpm6.c
+++ b/lib/librte_lpm/rte_lpm6.c
@@ -817,7 +817,6 @@ rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 {
 	return rte_lpm6_add_v1705(lpm, ip, depth, next_hop);
 }
-VERSION_SYMBOL(rte_lpm6_add, _v20, 2.0);
 
 
 /*
@@ -913,7 +912,7 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_add, _v1705, 17.05);
+BIND_DEFAULT_SYMBOL(rte_lpm6_add, _v1705, 20.0);
 MAP_STATIC_SYMBOL(int rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip,
 				uint8_t depth, uint32_t next_hop),
 		rte_lpm6_add_v1705);
@@ -970,7 +969,6 @@ rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop)
 
 	return status;
 }
-VERSION_SYMBOL(rte_lpm6_lookup, _v20, 2.0);
 
 int
 rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
@@ -1000,7 +998,7 @@ rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup, _v1705, 17.05);
+BIND_DEFAULT_SYMBOL(rte_lpm6_lookup, _v1705, 20.0);
 MAP_STATIC_SYMBOL(int rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
 				uint32_t *next_hop), rte_lpm6_lookup_v1705);
 
@@ -1046,7 +1044,6 @@ rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
 
 	return 0;
 }
-VERSION_SYMBOL(rte_lpm6_lookup_bulk_func, _v20, 2.0);
 
 int
 rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
@@ -1089,7 +1086,7 @@ rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup_bulk_func, _v1705, 17.05);
+BIND_DEFAULT_SYMBOL(rte_lpm6_lookup_bulk_func, _v1705, 20.0);
 MAP_STATIC_SYMBOL(int rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 				uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 				int32_t *next_hops, unsigned int n),
@@ -1116,7 +1113,6 @@ rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	return status;
 
 }
-VERSION_SYMBOL(rte_lpm6_is_rule_present, _v20, 2.0);
 
 int
 rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
@@ -1135,7 +1131,7 @@ rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 
 	return rule_find(lpm, masked_ip, depth, next_hop);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_is_rule_present, _v1705, 17.05);
+BIND_DEFAULT_SYMBOL(rte_lpm6_is_rule_present, _v1705, 20.0);
 MAP_STATIC_SYMBOL(int rte_lpm6_is_rule_present(struct rte_lpm6 *lpm,
 				uint8_t *ip, uint8_t depth, uint32_t *next_hop),
 		rte_lpm6_is_rule_present_v1705);
diff --git a/lib/librte_lpm/rte_lpm_version.map b/lib/librte_lpm/rte_lpm_version.map
index 90beac853..e57e6e7c3 100644
--- a/lib/librte_lpm/rte_lpm_version.map
+++ b/lib/librte_lpm/rte_lpm_version.map
@@ -1,13 +1,6 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
-	rte_lpm_add;
-	rte_lpm_create;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-	rte_lpm_find_existing;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
 	rte_lpm6_add;
 	rte_lpm6_create;
 	rte_lpm6_delete;
@@ -18,29 +11,13 @@ DPDK_2.0 {
 	rte_lpm6_is_rule_present;
 	rte_lpm6_lookup;
 	rte_lpm6_lookup_bulk_func;
-
-	local: *;
-};
-
-DPDK_16.04 {
-	global:
-
 	rte_lpm_add;
-	rte_lpm_find_existing;
 	rte_lpm_create;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
 	rte_lpm_delete;
 	rte_lpm_delete_all;
+	rte_lpm_find_existing;
+	rte_lpm_free;
+	rte_lpm_is_rule_present;
+	local: *;
+};
 
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_lpm6_add;
-	rte_lpm6_is_rule_present;
-	rte_lpm6_lookup;
-	rte_lpm6_lookup_bulk_func;
-
-} DPDK_16.04;
diff --git a/lib/librte_mbuf/rte_mbuf_version.map b/lib/librte_mbuf/rte_mbuf_version.map
index 2662a37bf..998d3a141 100644
--- a/lib/librte_mbuf/rte_mbuf_version.map
+++ b/lib/librte_mbuf/rte_mbuf_version.map
@@ -1,24 +1,4 @@
-DPDK_2.0 {
-	global:
-
-	rte_get_rx_ol_flag_name;
-	rte_get_tx_ol_flag_name;
-	rte_mbuf_sanity_check;
-	rte_pktmbuf_dump;
-	rte_pktmbuf_init;
-	rte_pktmbuf_pool_init;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pktmbuf_pool_create;
-
-} DPDK_2.0;
-
-DPDK_16.11 {
+DPDK_20.0 {
 	global:
 
 	__rte_pktmbuf_read;
@@ -31,23 +11,25 @@ DPDK_16.11 {
 	rte_get_ptype_name;
 	rte_get_ptype_tunnel_name;
 	rte_get_rx_ol_flag_list;
+	rte_get_rx_ol_flag_name;
 	rte_get_tx_ol_flag_list;
-
-} DPDK_2.1;
-
-DPDK_18.08 {
-	global:
-
+	rte_get_tx_ol_flag_name;
 	rte_mbuf_best_mempool_ops;
 	rte_mbuf_platform_mempool_ops;
+	rte_mbuf_sanity_check;
 	rte_mbuf_set_platform_mempool_ops;
 	rte_mbuf_set_user_mempool_ops;
 	rte_mbuf_user_mempool_ops;
+	rte_pktmbuf_dump;
+	rte_pktmbuf_init;
+	rte_pktmbuf_pool_create;
 	rte_pktmbuf_pool_create_by_ops;
-} DPDK_16.11;
+	rte_pktmbuf_pool_init;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
 
 	rte_mbuf_check;
-} DPDK_18.08;
+};
diff --git a/lib/librte_member/rte_member_version.map b/lib/librte_member/rte_member_version.map
index 019e4cd96..e21bf8510 100644
--- a/lib/librte_member/rte_member_version.map
+++ b/lib/librte_member/rte_member_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_member_add;
@@ -11,6 +11,6 @@ DPDK_17.11 {
 	rte_member_lookup_multi;
 	rte_member_lookup_multi_bulk;
 	rte_member_reset;
-
 	local: *;
 };
+
diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map
index 17cbca460..27ab9183d 100644
--- a/lib/librte_mempool/rte_mempool_version.map
+++ b/lib/librte_mempool/rte_mempool_version.map
@@ -1,57 +1,38 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_mempool_audit;
-	rte_mempool_calc_obj_size;
-	rte_mempool_create;
-	rte_mempool_dump;
-	rte_mempool_list_dump;
-	rte_mempool_lookup;
-	rte_mempool_walk;
-
-	local: *;
-};
-
-DPDK_16.07 {
-	global:
-
 	rte_mempool_avail_count;
 	rte_mempool_cache_create;
 	rte_mempool_cache_flush;
 	rte_mempool_cache_free;
+	rte_mempool_calc_obj_size;
 	rte_mempool_check_cookies;
+	rte_mempool_contig_blocks_check_cookies;
+	rte_mempool_create;
 	rte_mempool_create_empty;
 	rte_mempool_default_cache;
+	rte_mempool_dump;
 	rte_mempool_free;
 	rte_mempool_generic_get;
 	rte_mempool_generic_put;
 	rte_mempool_in_use_count;
+	rte_mempool_list_dump;
+	rte_mempool_lookup;
 	rte_mempool_mem_iter;
 	rte_mempool_obj_iter;
+	rte_mempool_op_calc_mem_size_default;
+	rte_mempool_op_populate_default;
 	rte_mempool_ops_table;
 	rte_mempool_populate_anon;
 	rte_mempool_populate_default;
+	rte_mempool_populate_iova;
 	rte_mempool_populate_virt;
 	rte_mempool_register_ops;
 	rte_mempool_set_ops_byname;
-
-} DPDK_2.0;
-
-DPDK_17.11 {
-	global:
-
-	rte_mempool_populate_iova;
-
-} DPDK_16.07;
-
-DPDK_18.05 {
-	global:
-
-	rte_mempool_contig_blocks_check_cookies;
-	rte_mempool_op_calc_mem_size_default;
-	rte_mempool_op_populate_default;
-
-} DPDK_17.11;
+	rte_mempool_walk;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_meter/rte_meter_version.map b/lib/librte_meter/rte_meter_version.map
index 4b460d580..633326a62 100644
--- a/lib/librte_meter/rte_meter_version.map
+++ b/lib/librte_meter/rte_meter_version.map
@@ -1,21 +1,15 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_meter_srtcm_color_aware_check;
 	rte_meter_srtcm_color_blind_check;
 	rte_meter_srtcm_config;
+	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_color_aware_check;
 	rte_meter_trtcm_color_blind_check;
 	rte_meter_trtcm_config;
-
-	local: *;
-};
-
-DPDK_18.08 {
-	global:
-
-	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_profile_config;
+	local: *;
 };
 
 EXPERIMENTAL {
diff --git a/lib/librte_metrics/rte_metrics_version.map b/lib/librte_metrics/rte_metrics_version.map
index 6ac99a44a..7c77cc14d 100644
--- a/lib/librte_metrics/rte_metrics_version.map
+++ b/lib/librte_metrics/rte_metrics_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_metrics_get_names;
@@ -8,7 +8,6 @@ DPDK_17.05 {
 	rte_metrics_reg_names;
 	rte_metrics_update_value;
 	rte_metrics_update_values;
-
 	local: *;
 };
 
diff --git a/lib/librte_net/rte_net_version.map b/lib/librte_net/rte_net_version.map
index fffc4a372..f5cccd646 100644
--- a/lib/librte_net/rte_net_version.map
+++ b/lib/librte_net/rte_net_version.map
@@ -1,30 +1,18 @@
-DPDK_16.11 {
-	global:
-	rte_net_get_ptype;
-
-	local: *;
-};
-
-DPDK_17.05 {
-	global:
-
-	rte_net_crc_calc;
-	rte_net_crc_set_alg;
-
-} DPDK_16.11;
-
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_random_addr;
 	rte_ether_format_addr;
-
-} DPDK_17.05;
+	rte_net_crc_calc;
+	rte_net_crc_set_alg;
+	rte_net_get_ptype;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
 
+	rte_ether_unformat_addr;
 	rte_net_make_rarp_packet;
 	rte_net_skip_ip6_ext;
-	rte_ether_unformat_addr;
 };
diff --git a/lib/librte_pci/rte_pci_version.map b/lib/librte_pci/rte_pci_version.map
index c0280277b..6fc4a9d7e 100644
--- a/lib/librte_pci/rte_pci_version.map
+++ b/lib/librte_pci/rte_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	eal_parse_pci_BDF;
@@ -9,6 +9,6 @@ DPDK_17.11 {
 	rte_pci_addr_cmp;
 	rte_pci_addr_parse;
 	rte_pci_device_name;
-
 	local: *;
 };
+
diff --git a/lib/librte_pdump/rte_pdump_version.map b/lib/librte_pdump/rte_pdump_version.map
index 3e744f301..aaa8db524 100644
--- a/lib/librte_pdump/rte_pdump_version.map
+++ b/lib/librte_pdump/rte_pdump_version.map
@@ -1,4 +1,4 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	global:
 
 	rte_pdump_disable;
@@ -7,6 +7,6 @@ DPDK_16.07 {
 	rte_pdump_enable_by_deviceid;
 	rte_pdump_init;
 	rte_pdump_uninit;
-
 	local: *;
 };
+
diff --git a/lib/librte_pipeline/rte_pipeline_version.map b/lib/librte_pipeline/rte_pipeline_version.map
index 420f065d6..b5fb09853 100644
--- a/lib/librte_pipeline/rte_pipeline_version.map
+++ b/lib/librte_pipeline/rte_pipeline_version.map
@@ -1,6 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_pipeline_ah_packet_drop;
+	rte_pipeline_ah_packet_hijack;
 	rte_pipeline_check;
 	rte_pipeline_create;
 	rte_pipeline_flush;
@@ -9,43 +11,22 @@ DPDK_2.0 {
 	rte_pipeline_port_in_create;
 	rte_pipeline_port_in_disable;
 	rte_pipeline_port_in_enable;
+	rte_pipeline_port_in_stats_read;
 	rte_pipeline_port_out_create;
 	rte_pipeline_port_out_packet_insert;
+	rte_pipeline_port_out_stats_read;
 	rte_pipeline_run;
 	rte_pipeline_table_create;
 	rte_pipeline_table_default_entry_add;
 	rte_pipeline_table_default_entry_delete;
 	rte_pipeline_table_entry_add;
+	rte_pipeline_table_entry_add_bulk;
 	rte_pipeline_table_entry_delete;
-
+	rte_pipeline_table_entry_delete_bulk;
+	rte_pipeline_table_stats_read;
 	local: *;
 };
 
-DPDK_2.1 {
-	global:
-
-	rte_pipeline_port_in_stats_read;
-	rte_pipeline_port_out_stats_read;
-	rte_pipeline_table_stats_read;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_pipeline_table_entry_add_bulk;
-	rte_pipeline_table_entry_delete_bulk;
-
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_pipeline_ah_packet_hijack;
-	rte_pipeline_ah_packet_drop;
-
-} DPDK_2.2;
-
 EXPERIMENTAL {
 	global:
 
@@ -59,6 +40,7 @@ EXPERIMENTAL {
 	rte_port_in_action_profile_freeze;
 	rte_table_action_apply;
 	rte_table_action_create;
+	rte_table_action_crypto_sym_session_get;
 	rte_table_action_dscp_table_update;
 	rte_table_action_free;
 	rte_table_action_meter_profile_add;
@@ -68,9 +50,8 @@ EXPERIMENTAL {
 	rte_table_action_profile_create;
 	rte_table_action_profile_free;
 	rte_table_action_profile_freeze;
-	rte_table_action_table_params_get;
 	rte_table_action_stats_read;
+	rte_table_action_table_params_get;
 	rte_table_action_time_read;
 	rte_table_action_ttl_read;
-	rte_table_action_crypto_sym_session_get;
 };
diff --git a/lib/librte_port/rte_port_version.map b/lib/librte_port/rte_port_version.map
index 609bcec3f..2037c3ed0 100644
--- a/lib/librte_port/rte_port_version.map
+++ b/lib/librte_port/rte_port_version.map
@@ -1,62 +1,32 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_port_ethdev_reader_ops;
+	rte_port_ethdev_writer_nodrop_ops;
 	rte_port_ethdev_writer_ops;
+	rte_port_fd_reader_ops;
+	rte_port_fd_writer_nodrop_ops;
+	rte_port_fd_writer_ops;
+	rte_port_kni_reader_ops;
+	rte_port_kni_writer_nodrop_ops;
+	rte_port_kni_writer_ops;
+	rte_port_ring_multi_reader_ops;
+	rte_port_ring_multi_writer_nodrop_ops;
+	rte_port_ring_multi_writer_ops;
 	rte_port_ring_reader_ipv4_frag_ops;
+	rte_port_ring_reader_ipv6_frag_ops;
 	rte_port_ring_reader_ops;
 	rte_port_ring_writer_ipv4_ras_ops;
+	rte_port_ring_writer_ipv6_ras_ops;
+	rte_port_ring_writer_nodrop_ops;
 	rte_port_ring_writer_ops;
 	rte_port_sched_reader_ops;
 	rte_port_sched_writer_ops;
 	rte_port_sink_ops;
 	rte_port_source_ops;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_port_ethdev_writer_nodrop_ops;
-	rte_port_ring_reader_ipv6_frag_ops;
-	rte_port_ring_writer_ipv6_ras_ops;
-	rte_port_ring_writer_nodrop_ops;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_port_ring_multi_reader_ops;
-	rte_port_ring_multi_writer_ops;
-	rte_port_ring_multi_writer_nodrop_ops;
-
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_port_kni_reader_ops;
-	rte_port_kni_writer_ops;
-	rte_port_kni_writer_nodrop_ops;
-
-} DPDK_2.2;
-
-DPDK_16.11 {
-	global:
-
-	rte_port_fd_reader_ops;
-	rte_port_fd_writer_ops;
-	rte_port_fd_writer_nodrop_ops;
-
-} DPDK_16.07;
-
-DPDK_18.11 {
-	global:
-
 	rte_port_sym_crypto_reader_ops;
-	rte_port_sym_crypto_writer_ops;
 	rte_port_sym_crypto_writer_nodrop_ops;
+	rte_port_sym_crypto_writer_ops;
+	local: *;
+};
 
-} DPDK_16.11;
diff --git a/lib/librte_power/rte_power_version.map b/lib/librte_power/rte_power_version.map
index 042917360..18e77802b 100644
--- a/lib/librte_power/rte_power_version.map
+++ b/lib/librte_power/rte_power_version.map
@@ -1,39 +1,26 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_power_exit;
+	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
+	rte_power_freq_enable_turbo;
 	rte_power_freq_max;
 	rte_power_freq_min;
 	rte_power_freq_up;
 	rte_power_freqs;
+	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_guest_channel_send_msg;
 	rte_power_init;
 	rte_power_set_env;
 	rte_power_set_freq;
+	rte_power_turbo_status;
 	rte_power_unset_env;
-
 	local: *;
 };
 
-DPDK_17.11 {
-	global:
-
-	rte_power_guest_channel_send_msg;
-	rte_power_freq_disable_turbo;
-	rte_power_freq_enable_turbo;
-	rte_power_turbo_status;
-
-} DPDK_2.0;
-
-DPDK_18.08 {
-	global:
-
-	rte_power_get_capabilities;
-
-} DPDK_17.11;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_rawdev/rte_rawdev_version.map b/lib/librte_rawdev/rte_rawdev_version.map
index b61dbff11..fe9de5dfe 100644
--- a/lib/librte_rawdev/rte_rawdev_version.map
+++ b/lib/librte_rawdev/rte_rawdev_version.map
@@ -1,4 +1,4 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_rawdev_close;
@@ -17,8 +17,8 @@ DPDK_18.08 {
 	rte_rawdev_pmd_release;
 	rte_rawdev_queue_conf_get;
 	rte_rawdev_queue_count;
-	rte_rawdev_queue_setup;
 	rte_rawdev_queue_release;
+	rte_rawdev_queue_setup;
 	rte_rawdev_reset;
 	rte_rawdev_selftest;
 	rte_rawdev_set_attr;
@@ -30,6 +30,6 @@ DPDK_18.08 {
 	rte_rawdev_xstats_names_get;
 	rte_rawdev_xstats_reset;
 	rte_rawdevs;
-
 	local: *;
 };
+
diff --git a/lib/librte_rcu/rte_rcu_version.map b/lib/librte_rcu/rte_rcu_version.map
index f8b9ef2ab..cd5aedaa9 100644
--- a/lib/librte_rcu/rte_rcu_version.map
+++ b/lib/librte_rcu/rte_rcu_version.map
@@ -8,6 +8,5 @@ EXPERIMENTAL {
 	rte_rcu_qsbr_synchronize;
 	rte_rcu_qsbr_thread_register;
 	rte_rcu_qsbr_thread_unregister;
-
 	local: *;
 };
diff --git a/lib/librte_reorder/rte_reorder_version.map b/lib/librte_reorder/rte_reorder_version.map
index 0a8a54de8..d7a2afd18 100644
--- a/lib/librte_reorder/rte_reorder_version.map
+++ b/lib/librte_reorder/rte_reorder_version.map
@@ -1,13 +1,13 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_reorder_create;
-	rte_reorder_init;
+	rte_reorder_drain;
 	rte_reorder_find_existing;
-	rte_reorder_reset;
 	rte_reorder_free;
+	rte_reorder_init;
 	rte_reorder_insert;
-	rte_reorder_drain;
-
+	rte_reorder_reset;
 	local: *;
 };
+
diff --git a/lib/librte_ring/rte_ring_version.map b/lib/librte_ring/rte_ring_version.map
index 510c1386e..38a095619 100644
--- a/lib/librte_ring/rte_ring_version.map
+++ b/lib/librte_ring/rte_ring_version.map
@@ -1,26 +1,18 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ring_create;
 	rte_ring_dump;
+	rte_ring_free;
 	rte_ring_get_memsize;
 	rte_ring_init;
 	rte_ring_list_dump;
 	rte_ring_lookup;
-
 	local: *;
 };
 
-DPDK_2.2 {
-	global:
-
-	rte_ring_free;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
 	rte_ring_reset;
-
 };
diff --git a/lib/librte_sched/rte_sched_version.map b/lib/librte_sched/rte_sched_version.map
index 729588794..7f3fe2d9a 100644
--- a/lib/librte_sched/rte_sched_version.map
+++ b/lib/librte_sched/rte_sched_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_approx;
@@ -14,22 +14,15 @@ DPDK_2.0 {
 	rte_sched_port_enqueue;
 	rte_sched_port_free;
 	rte_sched_port_get_memory_footprint;
+	rte_sched_port_pkt_read_color;
+	rte_sched_port_pkt_read_tree_path;
+	rte_sched_port_pkt_write;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_read_stats;
-
 	local: *;
 };
 
-DPDK_2.1 {
-	global:
-
-	rte_sched_port_pkt_write;
-	rte_sched_port_pkt_read_tree_path;
-	rte_sched_port_pkt_read_color;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_security/rte_security_version.map b/lib/librte_security/rte_security_version.map
index 53267bf3c..5e21cbfe2 100644
--- a/lib/librte_security/rte_security_version.map
+++ b/lib/librte_security/rte_security_version.map
@@ -1,4 +1,4 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	rte_security_attach_session;
@@ -8,7 +8,6 @@ DPDK_18.11 {
 	rte_security_session_destroy;
 	rte_security_session_get_size;
 	rte_security_set_pkt_metadata;
-
 	local: *;
 };
 
diff --git a/lib/librte_stack/rte_stack_version.map b/lib/librte_stack/rte_stack_version.map
index 6662679c3..b646cf7d2 100644
--- a/lib/librte_stack/rte_stack_version.map
+++ b/lib/librte_stack/rte_stack_version.map
@@ -4,6 +4,5 @@ EXPERIMENTAL {
 	rte_stack_create;
 	rte_stack_free;
 	rte_stack_lookup;
-
 	local: *;
 };
diff --git a/lib/librte_table/rte_table_version.map b/lib/librte_table/rte_table_version.map
index 6237252be..5f2cdd13d 100644
--- a/lib/librte_table/rte_table_version.map
+++ b/lib/librte_table/rte_table_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_table_acl_ops;
@@ -15,6 +15,6 @@ DPDK_17.11 {
 	rte_table_lpm_ipv6_ops;
 	rte_table_lpm_ops;
 	rte_table_stub_ops;
-
 	local: *;
 };
+
diff --git a/lib/librte_telemetry/rte_telemetry_version.map b/lib/librte_telemetry/rte_telemetry_version.map
index fa62d7718..cbbf41075 100644
--- a/lib/librte_telemetry/rte_telemetry_version.map
+++ b/lib/librte_telemetry/rte_telemetry_version.map
@@ -5,6 +5,5 @@ EXPERIMENTAL {
 	rte_telemetry_init;
 	rte_telemetry_parse;
 	rte_telemetry_selftest;
-
 	local: *;
 };
diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c
index bdcf05d06..34c864b60 100644
--- a/lib/librte_timer/rte_timer.c
+++ b/lib/librte_timer/rte_timer.c
@@ -145,7 +145,6 @@ rte_timer_subsystem_init_v20(void)
 		priv_timer[lcore_id].prev_lcore = lcore_id;
 	}
 }
-VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
 
 /* Init the timer library. Allocate an array of timer data structs in shared
  * memory, and allocate the zeroth entry for use with original timer
@@ -211,7 +210,7 @@ rte_timer_subsystem_init_v1905(void)
 }
 MAP_STATIC_SYMBOL(int rte_timer_subsystem_init(void),
 		  rte_timer_subsystem_init_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_subsystem_init, _v1905, 19.05);
+BIND_DEFAULT_SYMBOL(rte_timer_subsystem_init, _v1905, 20.0);
 
 void
 rte_timer_subsystem_finalize(void)
@@ -572,7 +571,6 @@ rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
 	return __rte_timer_reset(tim,  cur_time + ticks, period, tim_lcore,
 			  fct, arg, 0, &default_timer_data);
 }
-VERSION_SYMBOL(rte_timer_reset, _v20, 2.0);
 
 int
 rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
@@ -587,7 +585,7 @@ MAP_STATIC_SYMBOL(int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 				      unsigned int tim_lcore,
 				      rte_timer_cb_t fct, void *arg),
 		  rte_timer_reset_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_reset, _v1905, 19.05);
+BIND_DEFAULT_SYMBOL(rte_timer_reset, _v1905, 20.0);
 
 int
 rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim,
@@ -662,7 +660,6 @@ rte_timer_stop_v20(struct rte_timer *tim)
 {
 	return __rte_timer_stop(tim, 0, &default_timer_data);
 }
-VERSION_SYMBOL(rte_timer_stop, _v20, 2.0);
 
 int
 rte_timer_stop_v1905(struct rte_timer *tim)
@@ -671,7 +668,7 @@ rte_timer_stop_v1905(struct rte_timer *tim)
 }
 MAP_STATIC_SYMBOL(int rte_timer_stop(struct rte_timer *tim),
 		  rte_timer_stop_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_stop, _v1905, 19.05);
+BIND_DEFAULT_SYMBOL(rte_timer_stop, _v1905, 20.0);
 
 int
 rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim)
@@ -822,7 +819,6 @@ rte_timer_manage_v20(void)
 {
 	__rte_timer_manage(&default_timer_data);
 }
-VERSION_SYMBOL(rte_timer_manage, _v20, 2.0);
 
 int
 rte_timer_manage_v1905(void)
@@ -836,7 +832,7 @@ rte_timer_manage_v1905(void)
 	return 0;
 }
 MAP_STATIC_SYMBOL(int rte_timer_manage(void), rte_timer_manage_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_manage, _v1905, 19.05);
+BIND_DEFAULT_SYMBOL(rte_timer_manage, _v1905, 20.0);
 
 int
 rte_timer_alt_manage(uint32_t timer_data_id,
@@ -1079,7 +1075,6 @@ rte_timer_dump_stats_v20(FILE *f)
 {
 	__rte_timer_dump_stats(&default_timer_data, f);
 }
-VERSION_SYMBOL(rte_timer_dump_stats, _v20, 2.0);
 
 int
 rte_timer_dump_stats_v1905(FILE *f)
@@ -1088,7 +1083,7 @@ rte_timer_dump_stats_v1905(FILE *f)
 }
 MAP_STATIC_SYMBOL(int rte_timer_dump_stats(FILE *f),
 		  rte_timer_dump_stats_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_dump_stats, _v1905, 19.05);
+BIND_DEFAULT_SYMBOL(rte_timer_dump_stats, _v1905, 20.0);
 
 int
 rte_timer_alt_dump_stats(uint32_t timer_data_id __rte_unused, FILE *f)
diff --git a/lib/librte_timer/rte_timer_version.map b/lib/librte_timer/rte_timer_version.map
index 72f75c818..1303571fe 100644
--- a/lib/librte_timer/rte_timer_version.map
+++ b/lib/librte_timer/rte_timer_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_timer_dump_stats;
@@ -10,20 +10,9 @@ DPDK_2.0 {
 	rte_timer_stop;
 	rte_timer_stop_sync;
 	rte_timer_subsystem_init;
-
 	local: *;
 };
 
-DPDK_19.05 {
-	global:
-
-	rte_timer_dump_stats;
-	rte_timer_manage;
-	rte_timer_reset;
-	rte_timer_stop;
-	rte_timer_subsystem_init;
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_vhost/rte_vhost_version.map b/lib/librte_vhost/rte_vhost_version.map
index 5f1d4a75c..7d6178a26 100644
--- a/lib/librte_vhost/rte_vhost_version.map
+++ b/lib/librte_vhost/rte_vhost_version.map
@@ -1,90 +1,59 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_vhost_avail_entries;
 	rte_vhost_dequeue_burst;
 	rte_vhost_driver_callback_register;
-	rte_vhost_driver_register;
-	rte_vhost_enable_guest_notification;
-	rte_vhost_enqueue_burst;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_vhost_driver_unregister;
-
-} DPDK_2.0;
-
-DPDK_16.07 {
-	global:
-
-	rte_vhost_avail_entries;
-	rte_vhost_get_ifname;
-	rte_vhost_get_numa_node;
-	rte_vhost_get_queue_num;
-
-} DPDK_2.1;
-
-DPDK_17.05 {
-	global:
-
 	rte_vhost_driver_disable_features;
 	rte_vhost_driver_enable_features;
 	rte_vhost_driver_get_features;
+	rte_vhost_driver_register;
 	rte_vhost_driver_set_features;
 	rte_vhost_driver_start;
+	rte_vhost_driver_unregister;
+	rte_vhost_enable_guest_notification;
+	rte_vhost_enqueue_burst;
+	rte_vhost_get_ifname;
 	rte_vhost_get_mem_table;
 	rte_vhost_get_mtu;
 	rte_vhost_get_negotiated_features;
+	rte_vhost_get_numa_node;
+	rte_vhost_get_queue_num;
 	rte_vhost_get_vhost_vring;
 	rte_vhost_get_vring_num;
 	rte_vhost_gpa_to_vva;
 	rte_vhost_log_used_vring;
 	rte_vhost_log_write;
-
-} DPDK_16.07;
-
-DPDK_17.08 {
-	global:
-
 	rte_vhost_rx_queue_count;
-
-} DPDK_17.05;
-
-DPDK_18.02 {
-	global:
-
 	rte_vhost_vring_call;
-
-} DPDK_17.08;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
 
-	rte_vdpa_register_device;
-	rte_vdpa_unregister_device;
 	rte_vdpa_find_device_id;
 	rte_vdpa_get_device;
 	rte_vdpa_get_device_num;
+	rte_vdpa_register_device;
+	rte_vdpa_relay_vring_used;
+	rte_vdpa_unregister_device;
+	rte_vhost_crypto_create;
+	rte_vhost_crypto_fetch_requests;
+	rte_vhost_crypto_finalize_requests;
+	rte_vhost_crypto_free;
+	rte_vhost_crypto_set_zero_copy;
 	rte_vhost_driver_attach_vdpa_device;
 	rte_vhost_driver_detach_vdpa_device;
-	rte_vhost_driver_get_vdpa_device_id;
-	rte_vhost_get_vdpa_device_id;
 	rte_vhost_driver_get_protocol_features;
 	rte_vhost_driver_get_queue_num;
+	rte_vhost_driver_get_vdpa_device_id;
+	rte_vhost_driver_set_protocol_features;
+	rte_vhost_extern_callback_register;
 	rte_vhost_get_log_base;
+	rte_vhost_get_vdpa_device_id;
 	rte_vhost_get_vring_base;
+	rte_vhost_host_notifier_ctrl;
 	rte_vhost_set_vring_base;
-	rte_vhost_crypto_create;
-	rte_vhost_crypto_free;
-	rte_vhost_crypto_fetch_requests;
-	rte_vhost_crypto_finalize_requests;
-	rte_vhost_crypto_set_zero_copy;
 	rte_vhost_va_from_guest_pa;
-	rte_vhost_host_notifier_ctrl;
-	rte_vdpa_relay_vring_used;
-	rte_vhost_extern_callback_register;
-	rte_vhost_driver_set_protocol_features;
 };
-- 
2.22.0.windows.1


^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH 5/8] lib: remove dead code from timer
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (2 preceding siblings ...)
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 4/8] build: change ABI version to 20.0 Marcin Baran
@ 2019-09-30  9:21 ` Marcin Baran
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 6/8] lib: remove dead code from lpm Marcin Baran
                   ` (13 subsequent siblings)
  17 siblings, 0 replies; 131+ messages in thread
From: Marcin Baran @ 2019-09-30  9:21 UTC (permalink / raw)
  To: dev, bruce.richardson, ray.kinsella; +Cc: Marcin Baran

After updating ABI policy old and unused
code needs to be removed and all libraries
symbols version should be set to v20.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
---
 lib/librte_timer/rte_timer.c | 85 +++---------------------------------
 lib/librte_timer/rte_timer.h | 15 -------
 2 files changed, 5 insertions(+), 95 deletions(-)

diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c
index 34c864b60..de6959b80 100644
--- a/lib/librte_timer/rte_timer.c
+++ b/lib/librte_timer/rte_timer.c
@@ -68,9 +68,6 @@ static struct rte_timer_data *rte_timer_data_arr;
 static const uint32_t default_data_id;
 static uint32_t rte_timer_subsystem_initialized;
 
-/* For maintaining older interfaces for a period */
-static struct rte_timer_data default_timer_data;
-
 /* when debug is enabled, store some statistics */
 #ifdef RTE_LIBRTE_TIMER_DEBUG
 #define __TIMER_STAT_ADD(priv_timer, name, n) do {			\
@@ -131,21 +128,6 @@ rte_timer_data_dealloc(uint32_t id)
 	return 0;
 }
 
-void
-rte_timer_subsystem_init_v20(void)
-{
-	unsigned lcore_id;
-	struct priv_timer *priv_timer = default_timer_data.priv_timer;
-
-	/* since priv_timer is static, it's zeroed by default, so only init some
-	 * fields.
-	 */
-	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id ++) {
-		rte_spinlock_init(&priv_timer[lcore_id].list_lock);
-		priv_timer[lcore_id].prev_lcore = lcore_id;
-	}
-}
-
 /* Init the timer library. Allocate an array of timer data structs in shared
  * memory, and allocate the zeroth entry for use with original timer
  * APIs. Since the intersection of the sets of lcore ids in primary and
@@ -153,7 +135,7 @@ rte_timer_subsystem_init_v20(void)
  * multiple processes.
  */
 int
-rte_timer_subsystem_init_v1905(void)
+rte_timer_subsystem_init(void)
 {
 	const struct rte_memzone *mz;
 	struct rte_timer_data *data;
@@ -208,9 +190,6 @@ rte_timer_subsystem_init_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_subsystem_init(void),
-		  rte_timer_subsystem_init_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_subsystem_init, _v1905, 20.0);
 
 void
 rte_timer_subsystem_finalize(void)
@@ -551,41 +530,13 @@ __rte_timer_reset(struct rte_timer *tim, uint64_t expire,
 
 /* Reset and start the timer associated with the timer handle tim */
 int
-rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-		    enum rte_timer_type type, unsigned int tim_lcore,
-		    rte_timer_cb_t fct, void *arg)
-{
-	uint64_t cur_time = rte_get_timer_cycles();
-	uint64_t period;
-
-	if (unlikely((tim_lcore != (unsigned)LCORE_ID_ANY) &&
-			!(rte_lcore_is_enabled(tim_lcore) ||
-			  rte_lcore_has_role(tim_lcore, ROLE_SERVICE))))
-		return -1;
-
-	if (type == PERIODICAL)
-		period = ticks;
-	else
-		period = 0;
-
-	return __rte_timer_reset(tim,  cur_time + ticks, period, tim_lcore,
-			  fct, arg, 0, &default_timer_data);
-}
-
-int
-rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
+rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		      enum rte_timer_type type, unsigned int tim_lcore,
 		      rte_timer_cb_t fct, void *arg)
 {
 	return rte_timer_alt_reset(default_data_id, tim, ticks, type,
 				   tim_lcore, fct, arg);
 }
-MAP_STATIC_SYMBOL(int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
-				      enum rte_timer_type type,
-				      unsigned int tim_lcore,
-				      rte_timer_cb_t fct, void *arg),
-		  rte_timer_reset_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_reset, _v1905, 20.0);
 
 int
 rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim,
@@ -656,19 +607,10 @@ __rte_timer_stop(struct rte_timer *tim, int local_is_locked,
 
 /* Stop the timer associated with the timer handle tim */
 int
-rte_timer_stop_v20(struct rte_timer *tim)
-{
-	return __rte_timer_stop(tim, 0, &default_timer_data);
-}
-
-int
-rte_timer_stop_v1905(struct rte_timer *tim)
+rte_timer_stop(struct rte_timer *tim)
 {
 	return rte_timer_alt_stop(default_data_id, tim);
 }
-MAP_STATIC_SYMBOL(int rte_timer_stop(struct rte_timer *tim),
-		  rte_timer_stop_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_stop, _v1905, 20.0);
 
 int
 rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim)
@@ -814,14 +756,8 @@ __rte_timer_manage(struct rte_timer_data *timer_data)
 	priv_timer[lcore_id].running_tim = NULL;
 }
 
-void
-rte_timer_manage_v20(void)
-{
-	__rte_timer_manage(&default_timer_data);
-}
-
 int
-rte_timer_manage_v1905(void)
+rte_timer_manage(void)
 {
 	struct rte_timer_data *timer_data;
 
@@ -831,8 +767,6 @@ rte_timer_manage_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_manage(void), rte_timer_manage_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_manage, _v1905, 20.0);
 
 int
 rte_timer_alt_manage(uint32_t timer_data_id,
@@ -1070,20 +1004,11 @@ __rte_timer_dump_stats(struct rte_timer_data *timer_data __rte_unused, FILE *f)
 #endif
 }
 
-void
-rte_timer_dump_stats_v20(FILE *f)
-{
-	__rte_timer_dump_stats(&default_timer_data, f);
-}
-
 int
-rte_timer_dump_stats_v1905(FILE *f)
+rte_timer_dump_stats(FILE *f)
 {
 	return rte_timer_alt_dump_stats(default_data_id, f);
 }
-MAP_STATIC_SYMBOL(int rte_timer_dump_stats(FILE *f),
-		  rte_timer_dump_stats_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_dump_stats, _v1905, 20.0);
 
 int
 rte_timer_alt_dump_stats(uint32_t timer_data_id __rte_unused, FILE *f)
diff --git a/lib/librte_timer/rte_timer.h b/lib/librte_timer/rte_timer.h
index 05d287d8f..9dc5fc309 100644
--- a/lib/librte_timer/rte_timer.h
+++ b/lib/librte_timer/rte_timer.h
@@ -181,8 +181,6 @@ int rte_timer_data_dealloc(uint32_t id);
  *      subsystem
  */
 int rte_timer_subsystem_init(void);
-int rte_timer_subsystem_init_v1905(void);
-void rte_timer_subsystem_init_v20(void);
 
 /**
  * @warning
@@ -250,13 +248,6 @@ void rte_timer_init(struct rte_timer *tim);
 int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		    enum rte_timer_type type, unsigned tim_lcore,
 		    rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
-			  enum rte_timer_type type, unsigned int tim_lcore,
-			  rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-			enum rte_timer_type type, unsigned int tim_lcore,
-			rte_timer_cb_t fct, void *arg);
-
 
 /**
  * Loop until rte_timer_reset() succeeds.
@@ -313,8 +304,6 @@ rte_timer_reset_sync(struct rte_timer *tim, uint64_t ticks,
  *   - (-1): The timer is in the RUNNING or CONFIG state.
  */
 int rte_timer_stop(struct rte_timer *tim);
-int rte_timer_stop_v1905(struct rte_timer *tim);
-int rte_timer_stop_v20(struct rte_timer *tim);
 
 /**
  * Loop until rte_timer_stop() succeeds.
@@ -358,8 +347,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_manage(void);
-int rte_timer_manage_v1905(void);
-void rte_timer_manage_v20(void);
 
 /**
  * Dump statistics about timers.
@@ -371,8 +358,6 @@ void rte_timer_manage_v20(void);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_dump_stats(FILE *f);
-int rte_timer_dump_stats_v1905(FILE *f);
-void rte_timer_dump_stats_v20(FILE *f);
 
 /**
  * @warning
-- 
2.22.0.windows.1


^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH 6/8] lib: remove dead code from lpm
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (3 preceding siblings ...)
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 5/8] lib: remove dead code from timer Marcin Baran
@ 2019-09-30  9:21 ` Marcin Baran
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 7/8] lib: remove dead code from distributor Marcin Baran
                   ` (12 subsequent siblings)
  17 siblings, 0 replies; 131+ messages in thread
From: Marcin Baran @ 2019-09-30  9:21 UTC (permalink / raw)
  To: dev, bruce.richardson, ray.kinsella; +Cc: Marcin Baran

After updating ABI policy old and unused
code needs to be removed and all libraries
symbols version should be set to v20.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
---
 lib/librte_lpm/rte_lpm.c  | 995 ++------------------------------------
 lib/librte_lpm/rte_lpm.h  |  88 ----
 lib/librte_lpm/rte_lpm6.c | 128 +----
 lib/librte_lpm/rte_lpm6.h |  25 -
 4 files changed, 51 insertions(+), 1185 deletions(-)

diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c
index ce4681b79..268756419 100644
--- a/lib/librte_lpm/rte_lpm.c
+++ b/lib/librte_lpm/rte_lpm.c
@@ -89,33 +89,8 @@ depth_to_range(uint8_t depth)
 /*
  * Find an existing lpm table and return a pointer to it.
  */
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name)
-{
-	struct rte_lpm_v20 *l = NULL;
-	struct rte_tailq_entry *te;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_read_lock();
-	TAILQ_FOREACH(te, lpm_list, next) {
-		l = te->data;
-		if (strncmp(name, l->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-	rte_mcfg_tailq_read_unlock();
-
-	if (te == NULL) {
-		rte_errno = ENOENT;
-		return NULL;
-	}
-
-	return l;
-}
-
 struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name)
+rte_lpm_find_existing(const char *name)
 {
 	struct rte_lpm *l = NULL;
 	struct rte_tailq_entry *te;
@@ -138,87 +113,12 @@ rte_lpm_find_existing_v1604(const char *name)
 
 	return l;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_find_existing, _v1604, 20.0);
-MAP_STATIC_SYMBOL(struct rte_lpm *rte_lpm_find_existing(const char *name),
-		rte_lpm_find_existing_v1604);
 
 /*
  * Allocates memory for LPM object
  */
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules,
-		__rte_unused int flags)
-{
-	char mem_name[RTE_LPM_NAMESIZE];
-	struct rte_lpm_v20 *lpm = NULL;
-	struct rte_tailq_entry *te;
-	uint32_t mem_size;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	RTE_BUILD_BUG_ON(sizeof(struct rte_lpm_tbl_entry_v20) != 2);
-
-	/* Check user arguments. */
-	if ((name == NULL) || (socket_id < -1) || (max_rules == 0)) {
-		rte_errno = EINVAL;
-		return NULL;
-	}
-
-	snprintf(mem_name, sizeof(mem_name), "LPM_%s", name);
-
-	/* Determine the amount of memory to allocate. */
-	mem_size = sizeof(*lpm) + (sizeof(lpm->rules_tbl[0]) * max_rules);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* guarantee there's no existing */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		lpm = te->data;
-		if (strncmp(name, lpm->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-
-	if (te != NULL) {
-		lpm = NULL;
-		rte_errno = EEXIST;
-		goto exit;
-	}
-
-	/* allocate tailq entry */
-	te = rte_zmalloc("LPM_TAILQ_ENTRY", sizeof(*te), 0);
-	if (te == NULL) {
-		RTE_LOG(ERR, LPM, "Failed to allocate tailq entry\n");
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Allocate memory to store the LPM data structures. */
-	lpm = rte_zmalloc_socket(mem_name, mem_size,
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (lpm == NULL) {
-		RTE_LOG(ERR, LPM, "LPM memory allocation failed\n");
-		rte_free(te);
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Save user arguments. */
-	lpm->max_rules = max_rules;
-	strlcpy(lpm->name, name, sizeof(lpm->name));
-
-	te->data = lpm;
-
-	TAILQ_INSERT_TAIL(lpm_list, te, next);
-
-exit:
-	rte_mcfg_tailq_write_unlock();
-
-	return lpm;
-}
-
 struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
+rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config)
 {
 	char mem_name[RTE_LPM_NAMESIZE];
@@ -318,44 +218,12 @@ rte_lpm_create_v1604(const char *name, int socket_id,
 
 	return lpm;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_create, _v1604, 20.0);
-MAP_STATIC_SYMBOL(
-	struct rte_lpm *rte_lpm_create(const char *name, int socket_id,
-			const struct rte_lpm_config *config), rte_lpm_create_v1604);
 
 /*
  * Deallocates memory for given LPM table.
  */
 void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm)
-{
-	struct rte_lpm_list *lpm_list;
-	struct rte_tailq_entry *te;
-
-	/* Check user arguments. */
-	if (lpm == NULL)
-		return;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* find our tailq entry */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		if (te->data == (void *) lpm)
-			break;
-	}
-	if (te != NULL)
-		TAILQ_REMOVE(lpm_list, te, next);
-
-	rte_mcfg_tailq_write_unlock();
-
-	rte_free(lpm);
-	rte_free(te);
-}
-
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm)
+rte_lpm_free(struct rte_lpm *lpm)
 {
 	struct rte_lpm_list *lpm_list;
 	struct rte_tailq_entry *te;
@@ -383,9 +251,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm)
 	rte_free(lpm);
 	rte_free(te);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_free, _v1604, 20.0);
-MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
-		rte_lpm_free_v1604);
 
 /*
  * Adds a rule to the rule table.
@@ -398,79 +263,7 @@ MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-	uint8_t next_hop)
-{
-	uint32_t rule_gindex, rule_index, last_rule;
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	/* Scan through rule group to see if rule already exists. */
-	if (lpm->rule_info[depth - 1].used_rules > 0) {
-
-		/* rule_gindex stands for rule group index. */
-		rule_gindex = lpm->rule_info[depth - 1].first_rule;
-		/* Initialise rule_index to point to start of rule group. */
-		rule_index = rule_gindex;
-		/* Last rule = Last used rule in this rule group. */
-		last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-		for (; rule_index < last_rule; rule_index++) {
-
-			/* If rule already exists update its next_hop and return. */
-			if (lpm->rules_tbl[rule_index].ip == ip_masked) {
-				lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-				return rule_index;
-			}
-		}
-
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-	} else {
-		/* Calculate the position in which the rule will be stored. */
-		rule_index = 0;
-
-		for (i = depth - 1; i > 0; i--) {
-			if (lpm->rule_info[i - 1].used_rules > 0) {
-				rule_index = lpm->rule_info[i - 1].first_rule
-						+ lpm->rule_info[i - 1].used_rules;
-				break;
-			}
-		}
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-
-		lpm->rule_info[depth - 1].first_rule = rule_index;
-	}
-
-	/* Make room for the new rule in the array. */
-	for (i = RTE_LPM_MAX_DEPTH; i > depth; i--) {
-		if (lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules == lpm->max_rules)
-			return -ENOSPC;
-
-		if (lpm->rule_info[i - 1].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules]
-					= lpm->rules_tbl[lpm->rule_info[i - 1].first_rule];
-			lpm->rule_info[i - 1].first_rule++;
-		}
-	}
-
-	/* Add the new rule. */
-	lpm->rules_tbl[rule_index].ip = ip_masked;
-	lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-	/* Increment the used rules counter for this rule group. */
-	lpm->rule_info[depth - 1].used_rules++;
-
-	return rule_index;
-}
-
-static int32_t
-rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+rule_add(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	uint32_t next_hop)
 {
 	uint32_t rule_gindex, rule_index, last_rule;
@@ -546,30 +339,7 @@ rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static void
-rule_delete_v20(struct rte_lpm_v20 *lpm, int32_t rule_index, uint8_t depth)
-{
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	lpm->rules_tbl[rule_index] =
-			lpm->rules_tbl[lpm->rule_info[depth - 1].first_rule
-				+ lpm->rule_info[depth - 1].used_rules - 1];
-
-	for (i = depth; i < RTE_LPM_MAX_DEPTH; i++) {
-		if (lpm->rule_info[i].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i].first_rule - 1] =
-				lpm->rules_tbl[lpm->rule_info[i].first_rule
-					+ lpm->rule_info[i].used_rules - 1];
-			lpm->rule_info[i].first_rule--;
-		}
-	}
-
-	lpm->rule_info[depth - 1].used_rules--;
-}
-
-static void
-rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
+rule_delete(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
 {
 	int i;
 
@@ -596,28 +366,7 @@ rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_find_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth)
-{
-	uint32_t rule_gindex, last_rule, rule_index;
-
-	VERIFY_DEPTH(depth);
-
-	rule_gindex = lpm->rule_info[depth - 1].first_rule;
-	last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-	/* Scan used rules at given depth to find rule. */
-	for (rule_index = rule_gindex; rule_index < last_rule; rule_index++) {
-		/* If rule is found return the rule index. */
-		if (lpm->rules_tbl[rule_index].ip == ip_masked)
-			return rule_index;
-	}
-
-	/* If rule is not found return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
+rule_find(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
 {
 	uint32_t rule_gindex, last_rule, rule_index;
 
@@ -641,42 +390,7 @@ rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
  * Find, clean and allocate a tbl8.
  */
 static int32_t
-tbl8_alloc_v20(struct rte_lpm_tbl_entry_v20 *tbl8)
-{
-	uint32_t group_idx; /* tbl8 group index. */
-	struct rte_lpm_tbl_entry_v20 *tbl8_entry;
-
-	/* Scan through tbl8 to find a free (i.e. INVALID) tbl8 group. */
-	for (group_idx = 0; group_idx < RTE_LPM_TBL8_NUM_GROUPS;
-			group_idx++) {
-		tbl8_entry = &tbl8[group_idx * RTE_LPM_TBL8_GROUP_NUM_ENTRIES];
-		/* If a free tbl8 group is found clean it and set as VALID. */
-		if (!tbl8_entry->valid_group) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = INVALID,
-				.depth = 0,
-				.valid_group = VALID,
-			};
-			new_tbl8_entry.next_hop = 0;
-
-			memset(&tbl8_entry[0], 0,
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES *
-					sizeof(tbl8_entry[0]));
-
-			__atomic_store(tbl8_entry, &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-
-			/* Return group index for allocated tbl8 group. */
-			return group_idx;
-		}
-	}
-
-	/* If there are no tbl8 groups free then return error. */
-	return -ENOSPC;
-}
-
-static int32_t
-tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
+tbl8_alloc(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 {
 	uint32_t group_idx; /* tbl8 group index. */
 	struct rte_lpm_tbl_entry *tbl8_entry;
@@ -710,104 +424,18 @@ tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 }
 
 static void
-tbl8_free_v20(struct rte_lpm_tbl_entry_v20 *tbl8, uint32_t tbl8_group_start)
+tbl8_free(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 {
 	/* Set tbl8 group invalid*/
-	struct rte_lpm_tbl_entry_v20 zero_tbl8_entry = {
-		.valid = INVALID,
-		.depth = 0,
-		.valid_group = INVALID,
-	};
-	zero_tbl8_entry.next_hop = 0;
+	struct rte_lpm_tbl_entry zero_tbl8_entry = {0};
 
 	__atomic_store(&tbl8[tbl8_group_start], &zero_tbl8_entry,
 			__ATOMIC_RELAXED);
 }
 
-static void
-tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
-{
-	/* Set tbl8 group invalid*/
-	struct rte_lpm_tbl_entry zero_tbl8_entry = {0};
-
-	__atomic_store(&tbl8[tbl8_group_start], &zero_tbl8_entry,
-			__ATOMIC_RELAXED);
-}
-
-static __rte_noinline int32_t
-add_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index, tbl24_range, tbl8_index, tbl8_group_end, i, j;
-
-	/* Calculate the index into Table24. */
-	tbl24_index = ip >> 8;
-	tbl24_range = depth_to_range(depth);
-
-	for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-		/*
-		 * For invalid OR valid and non-extended tbl 24 entries set
-		 * entry.
-		 */
-		if (!lpm->tbl24[i].valid || (lpm->tbl24[i].valid_group == 0 &&
-				lpm->tbl24[i].depth <= depth)) {
-
-			struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.valid = VALID,
-				.valid_group = 0,
-				.depth = depth,
-			};
-			new_tbl24_entry.next_hop = next_hop;
-
-			/* Setting tbl24 entry in one go to avoid race
-			 * conditions
-			 */
-			__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-					__ATOMIC_RELEASE);
-
-			continue;
-		}
-
-		if (lpm->tbl24[i].valid_group == 1) {
-			/* If tbl24 entry is valid and extended calculate the
-			 *  index into tbl8.
-			 */
-			tbl8_index = lpm->tbl24[i].group_idx *
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-			tbl8_group_end = tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-			for (j = tbl8_index; j < tbl8_group_end; j++) {
-				if (!lpm->tbl8[j].valid ||
-						lpm->tbl8[j].depth <= depth) {
-					struct rte_lpm_tbl_entry_v20
-						new_tbl8_entry = {
-						.valid = VALID,
-						.valid_group = VALID,
-						.depth = depth,
-					};
-					new_tbl8_entry.next_hop = next_hop;
-
-					/*
-					 * Setting tbl8 entry in one go to avoid
-					 * race conditions
-					 */
-					__atomic_store(&lpm->tbl8[j],
-						&new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-					continue;
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint32_t next_hop)
+static __rte_noinline int32_t
+add_depth_small(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+		uint32_t next_hop)
 {
 #define group_idx next_hop
 	uint32_t tbl24_index, tbl24_range, tbl8_index, tbl8_group_end, i, j;
@@ -878,150 +506,7 @@ add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 }
 
 static __rte_noinline int32_t
-add_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index;
-	int32_t tbl8_group_index, tbl8_group_start, tbl8_group_end, tbl8_index,
-		tbl8_range, i;
-
-	tbl24_index = (ip_masked >> 8);
-	tbl8_range = depth_to_range(depth);
-
-	if (!lpm->tbl24[tbl24_index].valid) {
-		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		/* Check tbl8 allocation was successful. */
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		/* Find index into tbl8 and range. */
-		tbl8_index = (tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES) +
-				(ip_masked & 0xFF);
-
-		/* Set tbl8 entry. */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.group_idx = (uint8_t)tbl8_group_index,
-			.valid = VALID,
-			.valid_group = 1,
-			.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} /* If valid entry but not extended calculate the index into Table8. */
-	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
-		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_group_end = tbl8_group_start +
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-		/* Populate new tbl8 with tbl24 value. */
-		for (i = tbl8_group_start; i < tbl8_group_end; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = lpm->tbl24[tbl24_index].depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop =
-				lpm->tbl24[tbl24_index].next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		/* Insert new rule into the tbl8 entry. */
-		for (i = tbl8_index; i < tbl8_index + tbl8_range; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.group_idx = (uint8_t)tbl8_group_index,
-				.valid = VALID,
-				.valid_group = 1,
-				.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} else { /*
-		* If it is valid, extended entry calculate the index into tbl8.
-		*/
-		tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-
-			if (!lpm->tbl8[i].valid ||
-					lpm->tbl8[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-					.valid = VALID,
-					.depth = depth,
-					.valid_group = lpm->tbl8[i].valid_group,
-				};
-				new_tbl8_entry.next_hop = next_hop;
-				/*
-				 * Setting tbl8 entry in one go to avoid race
-				 * condition
-				 */
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-				continue;
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+add_depth_big(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -1034,7 +519,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 
 	if (!lpm->tbl24[tbl24_index].valid) {
 		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		/* Check tbl8 allocation was successful. */
 		if (tbl8_group_index < 0) {
@@ -1080,7 +565,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	} /* If valid entry but not extended calculate the index into Table8. */
 	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
 		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		if (tbl8_group_index < 0) {
 			return tbl8_group_index;
@@ -1174,47 +659,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * Add a route
  */
 int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	int32_t rule_index, status = 0;
-	uint32_t ip_masked;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/* Add the rule to the rule table. */
-	rule_index = rule_add_v20(lpm, ip_masked, depth, next_hop);
-
-	/* If the is no space available for new rule return error. */
-	if (rule_index < 0) {
-		return rule_index;
-	}
-
-	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v20(lpm, ip_masked, depth, next_hop);
-	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v20(lpm, ip_masked, depth, next_hop);
-
-		/*
-		 * If add fails due to exhaustion of tbl8 extensions delete
-		 * rule that was added to rule table.
-		 */
-		if (status < 0) {
-			rule_delete_v20(lpm, rule_index, depth);
-
-			return status;
-		}
-	}
-
-	return 0;
-}
-
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 	int32_t rule_index, status = 0;
@@ -1227,7 +672,7 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	ip_masked = ip & depth_to_mask(depth);
 
 	/* Add the rule to the rule table. */
-	rule_index = rule_add_v1604(lpm, ip_masked, depth, next_hop);
+	rule_index = rule_add(lpm, ip_masked, depth, next_hop);
 
 	/* If the is no space available for new rule return error. */
 	if (rule_index < 0) {
@@ -1235,16 +680,16 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	}
 
 	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_small(lpm, ip_masked, depth, next_hop);
 	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_big(lpm, ip_masked, depth, next_hop);
 
 		/*
 		 * If add fails due to exhaustion of tbl8 extensions delete
 		 * rule that was added to rule table.
 		 */
 		if (status < 0) {
-			rule_delete_v1604(lpm, rule_index, depth);
+			rule_delete(lpm, rule_index, depth);
 
 			return status;
 		}
@@ -1252,41 +697,12 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_add, _v1604, 20.0);
-MAP_STATIC_SYMBOL(int rte_lpm_add(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t next_hop), rte_lpm_add_v1604);
 
 /*
  * Look for a rule in the high-level rules table
  */
 int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop)
-{
-	uint32_t ip_masked;
-	int32_t rule_index;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) ||
-		(next_hop == NULL) ||
-		(depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	/* Look for the rule using rule_find. */
-	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v20(lpm, ip_masked, depth);
-
-	if (rule_index >= 0) {
-		*next_hop = lpm->rules_tbl[rule_index].next_hop;
-		return 1;
-	}
-
-	/* If rule is not found return 0. */
-	return 0;
-}
-
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop)
 {
 	uint32_t ip_masked;
@@ -1300,7 +716,7 @@ uint32_t *next_hop)
 
 	/* Look for the rule using rule_find. */
 	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v1604(lpm, ip_masked, depth);
+	rule_index = rule_find(lpm, ip_masked, depth);
 
 	if (rule_index >= 0) {
 		*next_hop = lpm->rules_tbl[rule_index].next_hop;
@@ -1310,12 +726,9 @@ uint32_t *next_hop)
 	/* If rule is not found return 0. */
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_is_rule_present, _v1604, 20.0);
-MAP_STATIC_SYMBOL(int rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t *next_hop), rte_lpm_is_rule_present_v1604);
 
 static int32_t
-find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
+find_previous_rule(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint8_t *sub_rule_depth)
 {
 	int32_t rule_index;
@@ -1325,7 +738,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
 		ip_masked = ip & depth_to_mask(prev_depth);
 
-		rule_index = rule_find_v20(lpm, ip_masked, prev_depth);
+		rule_index = rule_find(lpm, ip_masked, prev_depth);
 
 		if (rule_index >= 0) {
 			*sub_rule_depth = prev_depth;
@@ -1337,133 +750,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 }
 
 static int32_t
-find_previous_rule_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint8_t *sub_rule_depth)
-{
-	int32_t rule_index;
-	uint32_t ip_masked;
-	uint8_t prev_depth;
-
-	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
-		ip_masked = ip & depth_to_mask(prev_depth);
-
-		rule_index = rule_find_v1604(lpm, ip_masked, prev_depth);
-
-		if (rule_index >= 0) {
-			*sub_rule_depth = prev_depth;
-			return rule_index;
-		}
-	}
-
-	return -1;
-}
-
-static int32_t
-delete_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_range, tbl24_index, tbl8_group_index, tbl8_index, i, j;
-
-	/* Calculate the range and index into Table24. */
-	tbl24_range = depth_to_range(depth);
-	tbl24_index = (ip_masked >> 8);
-
-	/*
-	 * Firstly check the sub_rule_index. A -1 indicates no replacement rule
-	 * and a positive number indicates a sub_rule_index.
-	 */
-	if (sub_rule_index < 0) {
-		/*
-		 * If no replacement rule exists then invalidate entries
-		 * associated with this rule.
-		 */
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20
-					zero_tbl24_entry = {
-						.valid = INVALID,
-						.depth = 0,
-						.valid_group = 0,
-					};
-					zero_tbl24_entry.next_hop = 0;
-				__atomic_store(&lpm->tbl24[i],
-					&zero_tbl24_entry, __ATOMIC_RELEASE);
-			} else if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						lpm->tbl8[j].valid = INVALID;
-				}
-			}
-		}
-	} else {
-		/*
-		 * If a replacement rule exists then modify entries
-		 * associated with this rule.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->rules_tbl[sub_rule_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = sub_rule_depth,
-		};
-
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.valid_group = VALID,
-			.depth = sub_rule_depth,
-		};
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-						__ATOMIC_RELEASE);
-			} else  if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						__atomic_store(&lpm->tbl8[j],
-							&new_tbl8_entry,
-							__ATOMIC_RELAXED);
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_small(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1570,54 +857,7 @@ delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * thus can be recycled
  */
 static int32_t
-tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
-		uint32_t tbl8_group_start)
-{
-	uint32_t tbl8_group_end, i;
-	tbl8_group_end = tbl8_group_start + RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-	/*
-	 * Check the first entry of the given tbl8. If it is invalid we know
-	 * this tbl8 does not contain any rule with a depth < RTE_LPM_MAX_DEPTH
-	 *  (As they would affect all entries in a tbl8) and thus this table
-	 *  can not be recycled.
-	 */
-	if (tbl8[tbl8_group_start].valid) {
-		/*
-		 * If first entry is valid check if the depth is less than 24
-		 * and if so check the rest of the entries to verify that they
-		 * are all of this depth.
-		 */
-		if (tbl8[tbl8_group_start].depth <= MAX_DEPTH_TBL24) {
-			for (i = (tbl8_group_start + 1); i < tbl8_group_end;
-					i++) {
-
-				if (tbl8[i].depth !=
-						tbl8[tbl8_group_start].depth) {
-
-					return -EEXIST;
-				}
-			}
-			/* If all entries are the same return the tb8 index */
-			return tbl8_group_start;
-		}
-
-		return -EEXIST;
-	}
-	/*
-	 * If the first entry is invalid check if the rest of the entries in
-	 * the tbl8 are invalid.
-	 */
-	for (i = (tbl8_group_start + 1); i < tbl8_group_end; i++) {
-		if (tbl8[i].valid)
-			return -EEXIST;
-	}
-	/* If no valid entries are found then return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-tbl8_recycle_check_v1604(struct rte_lpm_tbl_entry *tbl8,
+tbl8_recycle_check(struct rte_lpm_tbl_entry *tbl8,
 		uint32_t tbl8_group_start)
 {
 	uint32_t tbl8_group_end, i;
@@ -1664,93 +904,7 @@ tbl8_recycle_check_v1604(struct rte_lpm_tbl_entry *tbl8,
 }
 
 static int32_t
-delete_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_index, tbl8_group_index, tbl8_group_start, tbl8_index,
-			tbl8_range, i;
-	int32_t tbl8_recycle_index;
-
-	/*
-	 * Calculate the index into tbl24 and range. Note: All depths larger
-	 * than MAX_DEPTH_TBL24 are associated with only one tbl24 entry.
-	 */
-	tbl24_index = ip_masked >> 8;
-
-	/* Calculate the index into tbl8 and range. */
-	tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-	tbl8_group_start = tbl8_group_index * RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-	tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-	tbl8_range = depth_to_range(depth);
-
-	if (sub_rule_index < 0) {
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be removed or modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				lpm->tbl8[i].valid = INVALID;
-		}
-	} else {
-		/* Set new tbl8 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.depth = sub_rule_depth,
-			.valid_group = lpm->tbl8[tbl8_group_start].valid_group,
-		};
-
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-		}
-	}
-
-	/*
-	 * Check if there are any valid entries in this tbl8 group. If all
-	 * tbl8 entries are invalid we can free the tbl8 and invalidate the
-	 * associated tbl24 entry.
-	 */
-
-	tbl8_recycle_index = tbl8_recycle_check_v20(lpm->tbl8, tbl8_group_start);
-
-	if (tbl8_recycle_index == -EINVAL) {
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		lpm->tbl24[tbl24_index].valid = 0;
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	} else if (tbl8_recycle_index > -1) {
-		/* Update tbl24 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->tbl8[tbl8_recycle_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = lpm->tbl8[tbl8_recycle_index].depth,
-		};
-
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELAXED);
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_big(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1805,7 +959,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 	 * associated tbl24 entry.
 	 */
 
-	tbl8_recycle_index = tbl8_recycle_check_v1604(lpm->tbl8, tbl8_group_start);
+	tbl8_recycle_index = tbl8_recycle_check(lpm->tbl8, tbl8_group_start);
 
 	if (tbl8_recycle_index == -EINVAL) {
 		/* Set tbl24 before freeing tbl8 to avoid race condition.
@@ -1813,7 +967,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		 */
 		lpm->tbl24[tbl24_index].valid = 0;
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	} else if (tbl8_recycle_index > -1) {
 		/* Update tbl24 entry. */
 		struct rte_lpm_tbl_entry new_tbl24_entry = {
@@ -1829,7 +983,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
 				__ATOMIC_RELAXED);
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	}
 #undef group_idx
 	return 0;
@@ -1839,60 +993,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * Deletes a rule
  */
 int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
-{
-	int32_t rule_to_delete_index, sub_rule_index;
-	uint32_t ip_masked;
-	uint8_t sub_rule_depth;
-	/*
-	 * Check input arguments. Note: IP must be a positive integer of 32
-	 * bits in length therefore it need not be checked.
-	 */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH)) {
-		return -EINVAL;
-	}
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/*
-	 * Find the index of the input rule, that needs to be deleted, in the
-	 * rule table.
-	 */
-	rule_to_delete_index = rule_find_v20(lpm, ip_masked, depth);
-
-	/*
-	 * Check if rule_to_delete_index was found. If no rule was found the
-	 * function rule_find returns -EINVAL.
-	 */
-	if (rule_to_delete_index < 0)
-		return -EINVAL;
-
-	/* Delete the rule from the rule table. */
-	rule_delete_v20(lpm, rule_to_delete_index, depth);
-
-	/*
-	 * Find rule to replace the rule_to_delete. If there is no rule to
-	 * replace the rule_to_delete we return -1 and invalidate the table
-	 * entries associated with this rule.
-	 */
-	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v20(lpm, ip, depth, &sub_rule_depth);
-
-	/*
-	 * If the input depth value is less than 25 use function
-	 * delete_depth_small otherwise use delete_depth_big.
-	 */
-	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v20(lpm, ip_masked, depth,
-				sub_rule_index, sub_rule_depth);
-	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v20(lpm, ip_masked, depth, sub_rule_index,
-				sub_rule_depth);
-	}
-}
-
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
+rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
 {
 	int32_t rule_to_delete_index, sub_rule_index;
 	uint32_t ip_masked;
@@ -1911,7 +1012,7 @@ rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
 	 * Find the index of the input rule, that needs to be deleted, in the
 	 * rule table.
 	 */
-	rule_to_delete_index = rule_find_v1604(lpm, ip_masked, depth);
+	rule_to_delete_index = rule_find(lpm, ip_masked, depth);
 
 	/*
 	 * Check if rule_to_delete_index was found. If no rule was found the
@@ -1921,7 +1022,7 @@ rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
 		return -EINVAL;
 
 	/* Delete the rule from the rule table. */
-	rule_delete_v1604(lpm, rule_to_delete_index, depth);
+	rule_delete(lpm, rule_to_delete_index, depth);
 
 	/*
 	 * Find rule to replace the rule_to_delete. If there is no rule to
@@ -1929,45 +1030,26 @@ rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
 	 * entries associated with this rule.
 	 */
 	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v1604(lpm, ip, depth, &sub_rule_depth);
+	sub_rule_index = find_previous_rule(lpm, ip, depth, &sub_rule_depth);
 
 	/*
 	 * If the input depth value is less than 25 use function
 	 * delete_depth_small otherwise use delete_depth_big.
 	 */
 	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v1604(lpm, ip_masked, depth,
+		return delete_depth_small(lpm, ip_masked, depth,
 				sub_rule_index, sub_rule_depth);
 	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v1604(lpm, ip_masked, depth, sub_rule_index,
+		return delete_depth_big(lpm, ip_masked, depth, sub_rule_index,
 				sub_rule_depth);
 	}
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_delete, _v1604, 20.0);
-MAP_STATIC_SYMBOL(int rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth), rte_lpm_delete_v1604);
 
 /*
  * Delete all rules from the LPM table.
  */
 void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm)
-{
-	/* Zero rule information. */
-	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
-
-	/* Zero tbl24. */
-	memset(lpm->tbl24, 0, sizeof(lpm->tbl24));
-
-	/* Zero tbl8. */
-	memset(lpm->tbl8, 0, sizeof(lpm->tbl8));
-
-	/* Delete all rules form the rules table. */
-	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
-}
-
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
+rte_lpm_delete_all(struct rte_lpm *lpm)
 {
 	/* Zero rule information. */
 	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
@@ -1982,6 +1064,3 @@ rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
 	/* Delete all rules form the rules table. */
 	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_delete_all, _v1604, 20.0);
-MAP_STATIC_SYMBOL(void rte_lpm_delete_all(struct rte_lpm *lpm),
-		rte_lpm_delete_all_v1604);
diff --git a/lib/librte_lpm/rte_lpm.h b/lib/librte_lpm/rte_lpm.h
index 906ec4483..ca9627a14 100644
--- a/lib/librte_lpm/rte_lpm.h
+++ b/lib/librte_lpm/rte_lpm.h
@@ -65,31 +65,6 @@ extern "C" {
 
 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
 /** @internal Tbl24 entry structure. */
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	/**
-	 * Stores Next hop (tbl8 or tbl24 when valid_group is not set) or
-	 * a group index pointing to a tbl8 structure (tbl24 only, when
-	 * valid_group is set)
-	 */
-	RTE_STD_C11
-	union {
-		uint8_t next_hop;
-		uint8_t group_idx;
-	};
-	/* Using single uint8_t to store 3 values. */
-	uint8_t valid     :1;   /**< Validation flag. */
-	/**
-	 * For tbl24:
-	 *  - valid_group == 0: entry stores a next hop
-	 *  - valid_group == 1: entry stores a group_index pointing to a tbl8
-	 * For tbl8:
-	 *  - valid_group indicates whether the current tbl8 is in use or not
-	 */
-	uint8_t valid_group :1;
-	uint8_t depth       :6; /**< Rule depth. */
-} __rte_aligned(sizeof(uint16_t));
-
 __extension__
 struct rte_lpm_tbl_entry {
 	/**
@@ -112,16 +87,6 @@ struct rte_lpm_tbl_entry {
 };
 
 #else
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	uint8_t depth       :6;
-	uint8_t valid_group :1;
-	uint8_t valid       :1;
-	union {
-		uint8_t group_idx;
-		uint8_t next_hop;
-	};
-} __rte_aligned(sizeof(uint16_t));
 
 __extension__
 struct rte_lpm_tbl_entry {
@@ -142,11 +107,6 @@ struct rte_lpm_config {
 };
 
 /** @internal Rule structure. */
-struct rte_lpm_rule_v20 {
-	uint32_t ip; /**< Rule IP address. */
-	uint8_t  next_hop; /**< Rule next hop. */
-};
-
 struct rte_lpm_rule {
 	uint32_t ip; /**< Rule IP address. */
 	uint32_t next_hop; /**< Rule next hop. */
@@ -159,21 +119,6 @@ struct rte_lpm_rule_info {
 };
 
 /** @internal LPM structure. */
-struct rte_lpm_v20 {
-	/* LPM metadata. */
-	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
-	uint32_t max_rules; /**< Max. balanced rules per lpm. */
-	struct rte_lpm_rule_info rule_info[RTE_LPM_MAX_DEPTH]; /**< Rule info table. */
-
-	/* LPM Tables. */
-	struct rte_lpm_tbl_entry_v20 tbl24[RTE_LPM_TBL24_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl24 table. */
-	struct rte_lpm_tbl_entry_v20 tbl8[RTE_LPM_TBL8_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl8 table. */
-	struct rte_lpm_rule_v20 rules_tbl[]
-			__rte_cache_aligned; /**< LPM rules. */
-};
-
 struct rte_lpm {
 	/* LPM metadata. */
 	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
@@ -210,11 +155,6 @@ struct rte_lpm {
 struct rte_lpm *
 rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config);
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules, int flags);
-struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
-		const struct rte_lpm_config *config);
 
 /**
  * Find an existing LPM object and return a pointer to it.
@@ -228,10 +168,6 @@ rte_lpm_create_v1604(const char *name, int socket_id,
  */
 struct rte_lpm *
 rte_lpm_find_existing(const char *name);
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name);
-struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name);
 
 /**
  * Free an LPM object.
@@ -243,10 +179,6 @@ rte_lpm_find_existing_v1604(const char *name);
  */
 void
 rte_lpm_free(struct rte_lpm *lpm);
-void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm);
 
 /**
  * Add a rule to the LPM table.
@@ -264,12 +196,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm);
  */
 int
 rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth, uint32_t next_hop);
-int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -289,12 +215,6 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 int
 rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop);
-int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop);
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -310,10 +230,6 @@ uint32_t *next_hop);
  */
 int
 rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
 
 /**
  * Delete all rules from the LPM table.
@@ -323,10 +239,6 @@ rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
  */
 void
 rte_lpm_delete_all(struct rte_lpm *lpm);
-void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm);
 
 /**
  * Lookup an IP into the LPM table.
diff --git a/lib/librte_lpm/rte_lpm6.c b/lib/librte_lpm/rte_lpm6.c
index 44828f72c..b981e4071 100644
--- a/lib/librte_lpm/rte_lpm6.c
+++ b/lib/librte_lpm/rte_lpm6.c
@@ -808,17 +808,6 @@ add_step(struct rte_lpm6 *lpm, struct rte_lpm6_tbl_entry *tbl,
 	return 1;
 }
 
-/*
- * Add a route
- */
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	return rte_lpm6_add_v1705(lpm, ip, depth, next_hop);
-}
-
-
 /*
  * Simulate adding a route to LPM
  *
@@ -840,7 +829,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	ret = simulate_add_step(lpm, lpm->tbl24, &tbl_next, masked_ip,
-			ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
+		ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
 	total_need_tbl_nb = need_tbl_nb;
 	/*
 	 * Inspect one by one the rest of the bytes until
@@ -849,7 +838,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && ret == 1; i++) {
 		tbl = tbl_next;
 		ret = simulate_add_step(lpm, tbl, &tbl_next, masked_ip, 1,
-				(uint8_t)(i+1), depth, &need_tbl_nb);
+			(uint8_t)(i + 1), depth, &need_tbl_nb);
 		total_need_tbl_nb += need_tbl_nb;
 	}
 
@@ -860,9 +849,12 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	return 0;
 }
 
+/*
+ * Add a route
+ */
 int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop)
+rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+	uint32_t next_hop)
 {
 	struct rte_lpm6_tbl_entry *tbl;
 	struct rte_lpm6_tbl_entry *tbl_next = NULL;
@@ -894,8 +886,8 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	tbl = lpm->tbl24;
 	status = add_step(lpm, tbl, TBL24_IND, &tbl_next, &tbl_next_num,
-			masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
-			is_new_rule);
+		masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
+		is_new_rule);
 	assert(status >= 0);
 
 	/*
@@ -905,17 +897,13 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && status == 1; i++) {
 		tbl = tbl_next;
 		status = add_step(lpm, tbl, tbl_next_num, &tbl_next,
-				&tbl_next_num, masked_ip, 1, (uint8_t)(i+1),
-				depth, next_hop, is_new_rule);
+			&tbl_next_num, masked_ip, 1, (uint8_t)(i + 1),
+			depth, next_hop, is_new_rule);
 		assert(status >= 0);
 	}
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_add, _v1705, 20.0);
-MAP_STATIC_SYMBOL(int rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip,
-				uint8_t depth, uint32_t next_hop),
-		rte_lpm6_add_v1705);
 
 /*
  * Takes a pointer to a table entry and inspect one level.
@@ -954,24 +942,7 @@ lookup_step(const struct rte_lpm6 *lpm, const struct rte_lpm6_tbl_entry *tbl,
  * Looks up an IP
  */
 int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_lookup_v1705(lpm, ip, &next_hop32);
-	if (status == 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-}
-
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
+rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
 		uint32_t *next_hop)
 {
 	const struct rte_lpm6_tbl_entry *tbl;
@@ -998,55 +969,12 @@ rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup, _v1705, 20.0);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
-				uint32_t *next_hop), rte_lpm6_lookup_v1705);
 
 /*
  * Looks up a group of IP addresses
  */
 int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t * next_hops, unsigned n)
-{
-	unsigned i;
-	const struct rte_lpm6_tbl_entry *tbl;
-	const struct rte_lpm6_tbl_entry *tbl_next = NULL;
-	uint32_t tbl24_index, next_hop;
-	uint8_t first_byte;
-	int status;
-
-	/* DEBUG: Check user input arguments. */
-	if ((lpm == NULL) || (ips == NULL) || (next_hops == NULL))
-		return -EINVAL;
-
-	for (i = 0; i < n; i++) {
-		first_byte = LOOKUP_FIRST_BYTE;
-		tbl24_index = (ips[i][0] << BYTES2_SIZE) |
-				(ips[i][1] << BYTE_SIZE) | ips[i][2];
-
-		/* Calculate pointer to the first entry to be inspected */
-		tbl = &lpm->tbl24[tbl24_index];
-
-		do {
-			/* Continue inspecting following levels until success or failure */
-			status = lookup_step(lpm, tbl, &tbl_next, ips[i], first_byte++,
-					&next_hop);
-			tbl = tbl_next;
-		} while (status == 1);
-
-		if (status < 0)
-			next_hops[i] = -1;
-		else
-			next_hops[i] = (int16_t)next_hop;
-	}
-
-	return 0;
-}
-
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
+rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n)
 {
@@ -1086,36 +1014,12 @@ rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup_bulk_func, _v1705, 20.0);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
-				uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-				int32_t *next_hops, unsigned int n),
-		rte_lpm6_lookup_bulk_func_v1705);
 
 /*
  * Look for a rule in the high-level rules table
  */
 int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_is_rule_present_v1705(lpm, ip, depth, &next_hop32);
-	if (status > 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-
-}
-
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop)
 {
 	uint8_t masked_ip[RTE_LPM6_IPV6_ADDR_SIZE];
@@ -1131,10 +1035,6 @@ rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 
 	return rule_find(lpm, masked_ip, depth, next_hop);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_is_rule_present, _v1705, 20.0);
-MAP_STATIC_SYMBOL(int rte_lpm6_is_rule_present(struct rte_lpm6 *lpm,
-				uint8_t *ip, uint8_t depth, uint32_t *next_hop),
-		rte_lpm6_is_rule_present_v1705);
 
 /*
  * Delete a rule from the rule table.
diff --git a/lib/librte_lpm/rte_lpm6.h b/lib/librte_lpm/rte_lpm6.h
index 5d59ccb1f..37dfb2024 100644
--- a/lib/librte_lpm/rte_lpm6.h
+++ b/lib/librte_lpm/rte_lpm6.h
@@ -96,12 +96,6 @@ rte_lpm6_free(struct rte_lpm6 *lpm);
 int
 rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t next_hop);
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -121,12 +115,6 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 int
 rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop);
-int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop);
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -184,11 +172,6 @@ rte_lpm6_delete_all(struct rte_lpm6 *lpm);
  */
 int
 rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip, uint32_t *next_hop);
-int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop);
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
-		uint32_t *next_hop);
 
 /**
  * Lookup multiple IP addresses in an LPM table.
@@ -210,14 +193,6 @@ int
 rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int32_t *next_hops, unsigned int n);
 
 #ifdef __cplusplus
 }
-- 
2.22.0.windows.1


^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH 7/8] lib: remove dead code from distributor
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (4 preceding siblings ...)
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 6/8] lib: remove dead code from lpm Marcin Baran
@ 2019-09-30  9:21 ` Marcin Baran
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 8/8] lib: change function suffix in distributor Marcin Baran
                   ` (11 subsequent siblings)
  17 siblings, 0 replies; 131+ messages in thread
From: Marcin Baran @ 2019-09-30  9:21 UTC (permalink / raw)
  To: dev, bruce.richardson, ray.kinsella; +Cc: Marcin Baran

After updating ABI policy old and unused
code needs to be removed and all libraries
symbols version should be set to v20.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
---
 lib/librte_distributor/rte_distributor.c      | 56 +++--------------
 .../rte_distributor_v1705.h                   | 61 -------------------
 2 files changed, 9 insertions(+), 108 deletions(-)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h

diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index edc942317..ca3f21b83 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -19,7 +19,6 @@
 #include "rte_distributor_private.h"
 #include "rte_distributor.h"
 #include "rte_distributor_v20.h"
-#include "rte_distributor_v1705.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
 
@@ -33,7 +32,7 @@ EAL_REGISTER_TAILQ(rte_dist_burst_tailq)
 /**** Burst Packet APIs called by workers ****/
 
 void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
+rte_distributor_request_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt,
 		unsigned int count)
 {
@@ -78,14 +77,9 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
 	 */
 	*retptr64 |= RTE_DISTRIB_GET_BUF;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_request_pkt, _v1705, 20.0);
-MAP_STATIC_SYMBOL(void rte_distributor_request_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count),
-		rte_distributor_request_pkt_v1705);
 
 int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
+rte_distributor_poll_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -119,13 +113,9 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
 
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_poll_pkt, _v1705, 20.0);
-MAP_STATIC_SYMBOL(int rte_distributor_poll_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts),
-		rte_distributor_poll_pkt_v1705);
 
 int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
+rte_distributor_get_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts,
 		struct rte_mbuf **oldpkt, unsigned int return_count)
 {
@@ -153,14 +143,9 @@ rte_distributor_get_pkt_v1705(struct rte_distributor *d,
 	}
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_get_pkt, _v1705, 20.0);
-MAP_STATIC_SYMBOL(int rte_distributor_get_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts,
-		struct rte_mbuf **oldpkt, unsigned int return_count),
-		rte_distributor_get_pkt_v1705);
 
 int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
+rte_distributor_return_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt, int num)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -187,10 +172,6 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_return_pkt, _v1705, 20.0);
-MAP_STATIC_SYMBOL(int rte_distributor_return_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt, int num),
-		rte_distributor_return_pkt_v1705);
 
 /**** APIs called on distributor core ***/
 
@@ -336,7 +317,7 @@ release(struct rte_distributor *d, unsigned int wkr)
 
 /* process a set of packets to distribute them to workers */
 int
-rte_distributor_process_v1705(struct rte_distributor *d,
+rte_distributor_process(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs)
 {
 	unsigned int next_idx = 0;
@@ -470,14 +451,10 @@ rte_distributor_process_v1705(struct rte_distributor *d,
 
 	return num_mbufs;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_process, _v1705, 20.0);
-MAP_STATIC_SYMBOL(int rte_distributor_process(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs),
-		rte_distributor_process_v1705);
 
 /* return to the caller, packets returned from workers */
 int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
+rte_distributor_returned_pkts(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -502,10 +479,6 @@ rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
 
 	return retval;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_returned_pkts, _v1705, 20.0);
-MAP_STATIC_SYMBOL(int rte_distributor_returned_pkts(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs),
-		rte_distributor_returned_pkts_v1705);
 
 /*
  * Return the number of packets in-flight in a distributor, i.e. packets
@@ -527,7 +500,7 @@ total_outstanding(const struct rte_distributor *d)
  * queued up.
  */
 int
-rte_distributor_flush_v1705(struct rte_distributor *d)
+rte_distributor_flush(struct rte_distributor *d)
 {
 	unsigned int flushed;
 	unsigned int wkr;
@@ -556,13 +529,10 @@ rte_distributor_flush_v1705(struct rte_distributor *d)
 
 	return flushed;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_flush, _v1705, 20.0);
-MAP_STATIC_SYMBOL(int rte_distributor_flush(struct rte_distributor *d),
-		rte_distributor_flush_v1705);
 
 /* clears the internal returns array in the distributor */
 void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d)
+rte_distributor_clear_returns(struct rte_distributor *d)
 {
 	unsigned int wkr;
 
@@ -576,13 +546,10 @@ rte_distributor_clear_returns_v1705(struct rte_distributor *d)
 	for (wkr = 0; wkr < d->num_workers; wkr++)
 		d->bufs[wkr].retptr64[0] = 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_clear_returns, _v1705, 20.0);
-MAP_STATIC_SYMBOL(void rte_distributor_clear_returns(struct rte_distributor *d),
-		rte_distributor_clear_returns_v1705);
 
 /* creates a distributor instance */
 struct rte_distributor *
-rte_distributor_create_v1705(const char *name,
+rte_distributor_create(const char *name,
 		unsigned int socket_id,
 		unsigned int num_workers,
 		unsigned int alg_type)
@@ -656,8 +623,3 @@ rte_distributor_create_v1705(const char *name,
 
 	return d;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_create, _v1705, 20.0);
-MAP_STATIC_SYMBOL(struct rte_distributor *rte_distributor_create(
-		const char *name, unsigned int socket_id,
-		unsigned int num_workers, unsigned int alg_type),
-		rte_distributor_create_v1705);
diff --git a/lib/librte_distributor/rte_distributor_v1705.h b/lib/librte_distributor/rte_distributor_v1705.h
deleted file mode 100644
index df4d9e815..000000000
--- a/lib/librte_distributor/rte_distributor_v1705.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2017 Intel Corporation
- */
-
-#ifndef _RTE_DISTRIB_V1705_H_
-#define _RTE_DISTRIB_V1705_H_
-
-/**
- * @file
- * RTE distributor
- *
- * The distributor is a component which is designed to pass packets
- * one-at-a-time to workers, with dynamic load balancing.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rte_distributor *
-rte_distributor_create_v1705(const char *name, unsigned int socket_id,
-		unsigned int num_workers,
-		unsigned int alg_type);
-
-int
-rte_distributor_process_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs);
-
-int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs);
-
-int
-rte_distributor_flush_v1705(struct rte_distributor *d);
-
-void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d);
-
-int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **pkts,
-	struct rte_mbuf **oldpkt, unsigned int retcount);
-
-int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **oldpkt, int num);
-
-void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count);
-
-int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **mbufs);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-- 
2.22.0.windows.1


^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH 8/8] lib: change function suffix in distributor
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (5 preceding siblings ...)
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 7/8] lib: remove dead code from distributor Marcin Baran
@ 2019-09-30  9:21 ` Marcin Baran
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
                   ` (10 subsequent siblings)
  17 siblings, 0 replies; 131+ messages in thread
From: Marcin Baran @ 2019-09-30  9:21 UTC (permalink / raw)
  To: dev, bruce.richardson, ray.kinsella; +Cc: Marcin Baran

The functions and structures version 2.0 is
still in use in librte_distributor for single
packet mode but the version suffix "_v20" needs
to be changed to "_single" in order to avoid
confusion.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
---
 lib/librte_distributor/Makefile               |  2 +-
 lib/librte_distributor/meson.build            |  2 +-
 lib/librte_distributor/rte_distributor.c      | 24 +++++-----
 .../rte_distributor_private.h                 | 10 ++--
 ...ributor_v20.c => rte_distributor_single.c} | 48 +++++++++----------
 ...ributor_v20.h => rte_distributor_single.h} | 26 +++++-----
 6 files changed, 57 insertions(+), 55 deletions(-)
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (87%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)

diff --git a/lib/librte_distributor/Makefile b/lib/librte_distributor/Makefile
index 0ef80dcff..d9d008916 100644
--- a/lib/librte_distributor/Makefile
+++ b/lib/librte_distributor/Makefile
@@ -15,7 +15,7 @@ EXPORT_MAP := rte_distributor_version.map
 LIBABIVER := 1
 
 # all source are stored in SRCS-y
-SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_v20.c
+SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_single.c
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor.c
 ifeq ($(CONFIG_RTE_ARCH_X86),y)
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor_match_sse.c
diff --git a/lib/librte_distributor/meson.build b/lib/librte_distributor/meson.build
index dba7e3b2a..bd12ddb2f 100644
--- a/lib/librte_distributor/meson.build
+++ b/lib/librte_distributor/meson.build
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-sources = files('rte_distributor.c', 'rte_distributor_v20.c')
+sources = files('rte_distributor.c', 'rte_distributor_single.c')
 if arch_subdir == 'x86'
 	sources += files('rte_distributor_match_sse.c')
 else
diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index ca3f21b83..b4fc0bfea 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -18,7 +18,7 @@
 
 #include "rte_distributor_private.h"
 #include "rte_distributor.h"
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
 
@@ -42,7 +42,7 @@ rte_distributor_request_pkt(struct rte_distributor *d,
 	volatile int64_t *retptr64;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		rte_distributor_request_pkt_v20(d->d_v20,
+		rte_distributor_request_pkt_single(d->d_single,
 			worker_id, oldpkt[0]);
 		return;
 	}
@@ -88,7 +88,8 @@ rte_distributor_poll_pkt(struct rte_distributor *d,
 	unsigned int i;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		pkts[0] = rte_distributor_poll_pkt_v20(d->d_v20, worker_id);
+		pkts[0] = rte_distributor_poll_pkt_single(d->d_single,
+			worker_id);
 		return (pkts[0]) ? 1 : 0;
 	}
 
@@ -123,7 +124,7 @@ rte_distributor_get_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (return_count <= 1) {
-			pkts[0] = rte_distributor_get_pkt_v20(d->d_v20,
+			pkts[0] = rte_distributor_get_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 			return (pkts[0]) ? 1 : 0;
 		} else
@@ -153,7 +154,7 @@ rte_distributor_return_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (num == 1)
-			return rte_distributor_return_pkt_v20(d->d_v20,
+			return rte_distributor_return_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 		else
 			return -EINVAL;
@@ -330,7 +331,8 @@ rte_distributor_process(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_process_v20(d->d_v20, mbufs, num_mbufs);
+		return rte_distributor_process_single(d->d_single,
+			mbufs, num_mbufs);
 	}
 
 	if (unlikely(num_mbufs == 0)) {
@@ -464,7 +466,7 @@ rte_distributor_returned_pkts(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_returned_pkts_v20(d->d_v20,
+		return rte_distributor_returned_pkts_single(d->d_single,
 				mbufs, max_mbufs);
 	}
 
@@ -507,7 +509,7 @@ rte_distributor_flush(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_flush_v20(d->d_v20);
+		return rte_distributor_flush_single(d->d_single);
 	}
 
 	flushed = total_outstanding(d);
@@ -538,7 +540,7 @@ rte_distributor_clear_returns(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		rte_distributor_clear_returns_v20(d->d_v20);
+		rte_distributor_clear_returns_single(d->d_single);
 		return;
 	}
 
@@ -578,9 +580,9 @@ rte_distributor_create(const char *name,
 			rte_errno = ENOMEM;
 			return NULL;
 		}
-		d->d_v20 = rte_distributor_create_v20(name,
+		d->d_single = rte_distributor_create_single(name,
 				socket_id, num_workers);
-		if (d->d_v20 == NULL) {
+		if (d->d_single == NULL) {
 			free(d);
 			/* rte_errno will have been set */
 			return NULL;
diff --git a/lib/librte_distributor/rte_distributor_private.h b/lib/librte_distributor/rte_distributor_private.h
index 33cd89410..bdb62b6e9 100644
--- a/lib/librte_distributor/rte_distributor_private.h
+++ b/lib/librte_distributor/rte_distributor_private.h
@@ -55,7 +55,7 @@ extern "C" {
  * the next cache line to worker 0, we pad this out to three cache lines.
  * Only 64-bits of the memory is actually used though.
  */
-union rte_distributor_buffer_v20 {
+union rte_distributor_buffer_single {
 	volatile int64_t bufptr64;
 	char pad[RTE_CACHE_LINE_SIZE*3];
 } __rte_cache_aligned;
@@ -80,8 +80,8 @@ struct rte_distributor_returned_pkts {
 	struct rte_mbuf *mbufs[RTE_DISTRIB_MAX_RETURNS];
 };
 
-struct rte_distributor_v20 {
-	TAILQ_ENTRY(rte_distributor_v20) next;    /**< Next in list. */
+struct rte_distributor_single {
+	TAILQ_ENTRY(rte_distributor_single) next;    /**< Next in list. */
 
 	char name[RTE_DISTRIBUTOR_NAMESIZE];  /**< Name of the ring. */
 	unsigned int num_workers;             /**< Number of workers polling */
@@ -96,7 +96,7 @@ struct rte_distributor_v20 {
 
 	struct rte_distributor_backlog backlog[RTE_DISTRIB_MAX_WORKERS];
 
-	union rte_distributor_buffer_v20 bufs[RTE_DISTRIB_MAX_WORKERS];
+	union rte_distributor_buffer_single bufs[RTE_DISTRIB_MAX_WORKERS];
 
 	struct rte_distributor_returned_pkts returns;
 };
@@ -154,7 +154,7 @@ struct rte_distributor {
 
 	enum rte_distributor_match_function dist_match_fn;
 
-	struct rte_distributor_v20 *d_v20;
+	struct rte_distributor_single *d_single;
 };
 
 void
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_single.c
similarity index 87%
rename from lib/librte_distributor/rte_distributor_v20.c
rename to lib/librte_distributor/rte_distributor_single.c
index 14ee0360e..9a6ef826c 100644
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ b/lib/librte_distributor/rte_distributor_single.c
@@ -15,10 +15,10 @@
 #include <rte_pause.h>
 #include <rte_tailq.h>
 
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 #include "rte_distributor_private.h"
 
-TAILQ_HEAD(rte_distributor_list, rte_distributor_v20);
+TAILQ_HEAD(rte_distributor_list, rte_distributor_single);
 
 static struct rte_tailq_elem rte_distributor_tailq = {
 	.name = "RTE_DISTRIBUTOR",
@@ -28,10 +28,10 @@ EAL_REGISTER_TAILQ(rte_distributor_tailq)
 /**** APIs called by workers ****/
 
 void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	int64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_GET_BUF;
 	while (unlikely(buf->bufptr64 & RTE_DISTRIB_FLAGS_MASK))
@@ -40,10 +40,10 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
 }
 
 struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	if (buf->bufptr64 & RTE_DISTRIB_GET_BUF)
 		return NULL;
 
@@ -53,21 +53,21 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
 }
 
 struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
 	struct rte_mbuf *ret;
-	rte_distributor_request_pkt_v20(d, worker_id, oldpkt);
-	while ((ret = rte_distributor_poll_pkt_v20(d, worker_id)) == NULL)
+	rte_distributor_request_pkt_single(d, worker_id, oldpkt);
+	while ((ret = rte_distributor_poll_pkt_single(d, worker_id)) == NULL)
 		rte_pause();
 	return ret;
 }
 
 int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	uint64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_RETURN_BUF;
 	buf->bufptr64 = req;
@@ -98,7 +98,7 @@ backlog_pop(struct rte_distributor_backlog *bl)
 
 /* stores a packet returned from a worker inside the returns array */
 static inline void
-store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
+store_return(uintptr_t oldbuf, struct rte_distributor_single *d,
 		unsigned *ret_start, unsigned *ret_count)
 {
 	/* store returns in a circular buffer - code is branch-free */
@@ -109,7 +109,7 @@ store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
 }
 
 static inline void
-handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
+handle_worker_shutdown(struct rte_distributor_single *d, unsigned int wkr)
 {
 	d->in_flight_tags[wkr] = 0;
 	d->in_flight_bitmask &= ~(1UL << wkr);
@@ -139,7 +139,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
 		 * Note that the tags were set before first level call
 		 * to rte_distributor_process.
 		 */
-		rte_distributor_process_v20(d, pkts, i);
+		rte_distributor_process_single(d, pkts, i);
 		bl->count = bl->start = 0;
 	}
 }
@@ -149,7 +149,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
  * to do a partial flush.
  */
 static int
-process_returns(struct rte_distributor_v20 *d)
+process_returns(struct rte_distributor_single *d)
 {
 	unsigned wkr;
 	unsigned flushed = 0;
@@ -188,7 +188,7 @@ process_returns(struct rte_distributor_v20 *d)
 
 /* process a set of packets to distribute them to workers */
 int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned num_mbufs)
 {
 	unsigned next_idx = 0;
@@ -292,7 +292,7 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 
 /* return to the caller, packets returned from workers */
 int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -314,7 +314,7 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
  * being worked on or queued up in a backlog.
  */
 static inline unsigned
-total_outstanding(const struct rte_distributor_v20 *d)
+total_outstanding(const struct rte_distributor_single *d)
 {
 	unsigned wkr, total_outstanding;
 
@@ -329,19 +329,19 @@ total_outstanding(const struct rte_distributor_v20 *d)
 /* flush the distributor, so that there are no outstanding packets in flight or
  * queued up. */
 int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d)
+rte_distributor_flush_single(struct rte_distributor_single *d)
 {
 	const unsigned flushed = total_outstanding(d);
 
 	while (total_outstanding(d) > 0)
-		rte_distributor_process_v20(d, NULL, 0);
+		rte_distributor_process_single(d, NULL, 0);
 
 	return flushed;
 }
 
 /* clears the internal returns array in the distributor */
 void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
+rte_distributor_clear_returns_single(struct rte_distributor_single *d)
 {
 	d->returns.start = d->returns.count = 0;
 #ifndef __OPTIMIZE__
@@ -350,12 +350,12 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
 }
 
 /* creates a distributor instance */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name,
 		unsigned socket_id,
 		unsigned num_workers)
 {
-	struct rte_distributor_v20 *d;
+	struct rte_distributor_single *d;
 	struct rte_distributor_list *distributor_list;
 	char mz_name[RTE_MEMZONE_NAMESIZE];
 	const struct rte_memzone *mz;
diff --git a/lib/librte_distributor/rte_distributor_v20.h b/lib/librte_distributor/rte_distributor_single.h
similarity index 89%
rename from lib/librte_distributor/rte_distributor_v20.h
rename to lib/librte_distributor/rte_distributor_single.h
index 12865658b..2f80aa43d 100644
--- a/lib/librte_distributor/rte_distributor_v20.h
+++ b/lib/librte_distributor/rte_distributor_single.h
@@ -2,8 +2,8 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
-#ifndef _RTE_DISTRIB_V20_H_
-#define _RTE_DISTRIB_V20_H_
+#ifndef _RTE_DISTRIB_SINGLE_H_
+#define _RTE_DISTRIB_SINGLE_H_
 
 /**
  * @file
@@ -19,7 +19,7 @@ extern "C" {
 
 #define RTE_DISTRIBUTOR_NAMESIZE 32 /**< Length of name for instance */
 
-struct rte_distributor_v20;
+struct rte_distributor_single;
 struct rte_mbuf;
 
 /**
@@ -38,8 +38,8 @@ struct rte_mbuf;
  * @return
  *   The newly created distributor instance
  */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name, unsigned int socket_id,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name, unsigned int socket_id,
 		unsigned int num_workers);
 
 /*  *** APIS to be called on the distributor lcore ***  */
@@ -74,7 +74,7 @@ rte_distributor_create_v20(const char *name, unsigned int socket_id,
  *   The number of mbufs processed.
  */
 int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs);
 
 /**
@@ -92,7 +92,7 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
  *   The number of mbufs returned in the mbufs array.
  */
 int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs);
 
 /**
@@ -107,7 +107,7 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
  *   The number of queued/in-flight packets that were completed by this call.
  */
 int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d);
+rte_distributor_flush_single(struct rte_distributor_single *d);
 
 /**
  * Clears the array of returned packets used as the source for the
@@ -119,7 +119,7 @@ rte_distributor_flush_v20(struct rte_distributor_v20 *d);
  *   The distributor instance to be used
  */
 void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
+rte_distributor_clear_returns_single(struct rte_distributor_single *d);
 
 /*  *** APIS to be called on the worker lcores ***  */
 /*
@@ -148,7 +148,7 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
  *   A new packet to be processed by the worker thread.
  */
 struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -164,7 +164,7 @@ rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet being processed by the worker
  */
 int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *mbuf);
 
 /**
@@ -188,7 +188,7 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet, if any, being processed by the worker
  */
 void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -208,7 +208,7 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
  *   packet is yet available.
  */
 struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id);
 
 #ifdef __cplusplus
-- 
2.22.0.windows.1


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH 3/8] buildtools: add ABI versioning check script
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 3/8] buildtools: add ABI versioning check script Marcin Baran
@ 2019-09-30 10:27   ` Bruce Richardson
  0 siblings, 0 replies; 131+ messages in thread
From: Bruce Richardson @ 2019-09-30 10:27 UTC (permalink / raw)
  To: Marcin Baran; +Cc: dev, ray.kinsella, Pawel Modrak

On Mon, Sep 30, 2019 at 11:21:34AM +0200, Marcin Baran wrote:
> The script 'check-abi-version.sh' should be used
> to check whether built libraries are versioned
> with correct ABI number (provided ABI, provided
> ABI+1 or EXPERIMENTAL).
> 
> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
> ---
>  buildtools/check-abi-version.sh | 46 +++++++++++++++++++++++++++++++++
>  buildtools/update_abi.sh        | 41 +++++++++++++++++++++++++++++
>  2 files changed, 87 insertions(+)
>  create mode 100755 buildtools/check-abi-version.sh
>  create mode 100755 buildtools/update_abi.sh
> 

This patch also includes an "update_abi.sh" script, which is not referred
to in the log. It should probably have it's own patch and explanation.

[Also, one script name uses "-" between words, the other "_", maybe
standardize]

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (6 preceding siblings ...)
  2019-09-30  9:21 ` [dpdk-dev] [PATCH 8/8] lib: change function suffix in distributor Marcin Baran
@ 2019-10-16 12:43 ` Anatoly Burakov
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
                     ` (9 more replies)
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 01/10] config: change ABI versioning for global Anatoly Burakov
                   ` (9 subsequent siblings)
  17 siblings, 10 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 12:43 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, bruce.richardson, thomas, david.marchand

This patchset prepares the codebase for the new ABI policy and
adds a few helper scripts.

There are two new scripts for managing ABI versions added. The
first one is a Python script that will read in a .map file,
flatten it and update the ABI version to the ABI version
specified on the command-line.

The second one is a shell script that will run the above mentioned
Python script recursively over the source tree and set the ABI
version to either that which is defined in config/ABI_VERSION, or
a user-specified one.

Example of its usage: buildtools/update-abi.sh 20.0

This will recurse into lib/ and drivers/ directory and update
whatever .map files it can find.

The other shell script that's added is one that can take in a .so
file and ensure that its declared public ABI matches either
current ABI, next ABI, or EXPERIMENTAL. This was moved to the
last commit because it made no sense to have it beforehand.

The source tree was verified to follow the new ABI policy using
the following command (assuming built binaries are in build/):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

This returns 0.

Changes since v1:
- Reordered patchset to have removal of old ABI's before introducing
  the new one to avoid compile breakages between patches
- Added a new patch fixing missing symbol in octeontx common
- Split script commits into multiple commits and reordered them
- Re-generated the ABI bump commit
- Verified all scripts to work

Anatoly Burakov (2):
  buildtools: add ABI update shell script
  drivers/octeontx: add missing public symbol

Marcin Baran (6):
  config: change ABI versioning for global
  timer: remove deprecated code
  lpm: remove deprecated code
  distributor: remove deprecated code
  lib: change function suffix in distributor
  buildtools: add ABI versioning check script

Pawel Modrak (2):
  buildtools: add script for updating symbols abi version
  build: change ABI version to 20.0

 buildtools/check-abi-version.sh               |  54 +
 buildtools/meson.build                        |   2 +
 buildtools/update-abi.sh                      |  36 +
 buildtools/update_version_map_abi.py          | 148 +++
 config/ABI_VERSION                            |   1 +
 config/meson.build                            |   3 +-
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |   8 +-
 .../null/rte_pmd_bbdev_null_version.map       |   2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |   2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     | 115 +-
 drivers/bus/fslmc/rte_bus_fslmc_version.map   | 154 ++-
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |  14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |   2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |  12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |  12 +-
 drivers/common/cpt/rte_common_cpt_version.map |   4 +-
 .../common/dpaax/rte_common_dpaax_version.map |   4 +-
 .../common/mvep/rte_common_mvep_version.map   |   6 +-
 .../octeontx/rte_common_octeontx_version.map  |   7 +-
 .../rte_common_octeontx2_version.map          |  16 +-
 .../compress/isal/rte_pmd_isal_version.map    |   2 +-
 .../rte_pmd_octeontx_compress_version.map     |   2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |   2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |   2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |   2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |   2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |   2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |   3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |   3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |  10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |  10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |   2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |   2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |   2 +-
 .../null/rte_pmd_null_crypto_version.map      |   2 +-
 .../rte_pmd_octeontx_crypto_version.map       |   3 +-
 .../openssl/rte_pmd_openssl_version.map       |   2 +-
 .../rte_pmd_crypto_scheduler_version.map      |  19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |   2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |   2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |   2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |   3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |   2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |   2 +-
 .../rte_pmd_octeontx_event_version.map        |   2 +-
 .../rte_pmd_octeontx2_event_version.map       |   3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |   2 +-
 .../rte_pmd_skeleton_event_version.map        |   3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |   2 +-
 .../bucket/rte_mempool_bucket_version.map     |   3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |   2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |  12 +-
 .../octeontx/rte_mempool_octeontx_version.map |   2 +-
 .../rte_mempool_octeontx2_version.map         |   4 +-
 .../mempool/ring/rte_mempool_ring_version.map |   3 +-
 .../stack/rte_mempool_stack_version.map       |   3 +-
 drivers/meson.build                           |  20 +-
 .../af_packet/rte_pmd_af_packet_version.map   |   3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |   2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |   5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |   4 +-
 drivers/net/avp/rte_pmd_avp_version.map       |   2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |   2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |   3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |   4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |  47 +-
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |   3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |  11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |  12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |   3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |   3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |   3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |   3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |   3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |   3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |   3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |   4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |  65 +-
 drivers/net/iavf/rte_pmd_iavf_version.map     |   3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |   3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |   3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |   3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |  62 +-
 drivers/net/kni/rte_pmd_kni_version.map       |   3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |   3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |   5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |   3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |   2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |   2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |   2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |   4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |   3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |   2 +-
 drivers/net/null/rte_pmd_null_version.map     |   3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |  10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |   3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |   3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |   3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |  10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |   3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |   2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |   2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |   3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |   3 +-
 .../rte_pmd_vdev_netvsc_version.map           |   3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |  11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |   3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |   3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |   3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |   4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |   3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |   3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |   5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |   3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |   3 +-
 lib/librte_acl/rte_acl_version.map            |   2 +-
 lib/librte_bbdev/rte_bbdev_version.map        |   4 +
 .../rte_bitratestats_version.map              |   2 +-
 lib/librte_bpf/rte_bpf_version.map            |   4 +
 lib/librte_cfgfile/rte_cfgfile_version.map    |  34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |  10 +-
 .../rte_compressdev_version.map               |   4 +
 .../rte_cryptodev_version.map                 | 102 +-
 lib/librte_distributor/Makefile               |   2 +-
 lib/librte_distributor/meson.build            |   2 +-
 lib/librte_distributor/rte_distributor.c      |  80 +-
 .../rte_distributor_private.h                 |  10 +-
 ...ributor_v20.c => rte_distributor_single.c} |  48 +-
 ...ributor_v20.h => rte_distributor_single.h} |  26 +-
 .../rte_distributor_v1705.h                   |  61 --
 .../rte_distributor_version.map               |  16 +-
 lib/librte_eal/rte_eal_version.map            | 310 ++----
 lib/librte_efd/rte_efd_version.map            |   2 +-
 lib/librte_ethdev/rte_ethdev_version.map      | 160 +--
 lib/librte_eventdev/rte_eventdev_version.map  | 130 +--
 .../rte_flow_classify_version.map             |   4 +
 lib/librte_gro/rte_gro_version.map            |   2 +-
 lib/librte_gso/rte_gso_version.map            |   2 +-
 lib/librte_hash/rte_hash_version.map          |  43 +-
 lib/librte_ip_frag/rte_ip_frag_version.map    |  10 +-
 lib/librte_ipsec/rte_ipsec_version.map        |   4 +
 lib/librte_jobstats/rte_jobstats_version.map  |  10 +-
 lib/librte_kni/rte_kni_version.map            |   2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |   4 +-
 .../rte_latencystats_version.map              |   2 +-
 lib/librte_lpm/rte_lpm.c                      | 996 +-----------------
 lib/librte_lpm/rte_lpm.h                      |  88 --
 lib/librte_lpm/rte_lpm6.c                     | 132 +--
 lib/librte_lpm/rte_lpm6.h                     |  25 -
 lib/librte_lpm/rte_lpm_version.map            |  39 +-
 lib/librte_mbuf/rte_mbuf_version.map          |  41 +-
 lib/librte_member/rte_member_version.map      |   2 +-
 lib/librte_mempool/rte_mempool_version.map    |  44 +-
 lib/librte_meter/rte_meter_version.map        |  13 +-
 lib/librte_metrics/rte_metrics_version.map    |   2 +-
 lib/librte_net/rte_net_version.map            |  23 +-
 lib/librte_pci/rte_pci_version.map            |   2 +-
 lib/librte_pdump/rte_pdump_version.map        |   2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |  36 +-
 lib/librte_port/rte_port_version.map          |  64 +-
 lib/librte_power/rte_power_version.map        |  24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |   4 +-
 lib/librte_rcu/rte_rcu_version.map            |   4 +
 lib/librte_reorder/rte_reorder_version.map    |   8 +-
 lib/librte_ring/rte_ring_version.map          |  10 +-
 lib/librte_sched/rte_sched_version.map        |  14 +-
 lib/librte_security/rte_security_version.map  |   2 +-
 lib/librte_stack/rte_stack_version.map        |   4 +
 lib/librte_table/rte_table_version.map        |   2 +-
 .../rte_telemetry_version.map                 |   4 +
 lib/librte_timer/rte_timer.c                  |  90 +-
 lib/librte_timer/rte_timer.h                  |  15 -
 lib/librte_timer/rte_timer_version.map        |  12 +-
 lib/librte_vhost/rte_vhost_version.map        |  52 +-
 lib/meson.build                               |  18 +-
 meson_options.txt                             |   2 -
 mk/rte.lib.mk                                 |  19 +-
 177 files changed, 1122 insertions(+), 2891 deletions(-)
 create mode 100755 buildtools/check-abi-version.sh
 create mode 100755 buildtools/update-abi.sh
 create mode 100755 buildtools/update_version_map_abi.py
 create mode 100644 config/ABI_VERSION
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (87%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h

-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v2 01/10] config: change ABI versioning for global
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (7 preceding siblings ...)
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
@ 2019-10-16 12:43 ` Anatoly Burakov
  2019-10-16 13:22   ` Bruce Richardson
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
                   ` (8 subsequent siblings)
  17 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 12:43 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Thomas Monjalon, Bruce Richardson, john.mcnamara,
	david.marchand, Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

The libraries should be maintained using global
ABI versioning. The changes includes adding global
ABI version support for both makefile and meson
build system. Experimental libraries should be
marked as 0.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 buildtools/meson.build |  2 ++
 config/ABI_VERSION     |  1 +
 config/meson.build     |  3 ++-
 drivers/meson.build    | 20 ++++++++++++++------
 lib/meson.build        | 18 +++++++++++++-----
 meson_options.txt      |  2 --
 mk/rte.lib.mk          | 19 +++++++++++--------
 7 files changed, 43 insertions(+), 22 deletions(-)
 create mode 100644 config/ABI_VERSION

diff --git a/buildtools/meson.build b/buildtools/meson.build
index 32c79c1308..78ce69977d 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -12,3 +12,5 @@ if python3.found()
 else
 	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
 endif
+
+is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
diff --git a/config/ABI_VERSION b/config/ABI_VERSION
new file mode 100644
index 0000000000..9a7c1e503f
--- /dev/null
+++ b/config/ABI_VERSION
@@ -0,0 +1 @@
+20.0
diff --git a/config/meson.build b/config/meson.build
index a27f731f85..25ecf928e4 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -17,7 +17,8 @@ endforeach
 # set the major version, which might be used by drivers and libraries
 # depending on the configuration options
 pver = meson.project_version().split('.')
-major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
+major_version = run_command(find_program('cat', 'more'),
+	files('ABI_VERSION')).stdout().strip()
 
 # extract all version information into the build configuration
 dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
diff --git a/drivers/meson.build b/drivers/meson.build
index 2ed2e95411..5c5fe87c7e 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -110,9 +110,20 @@ foreach class:dpdk_driver_classes
 					output: out_filename,
 					depends: [pmdinfogen, tmp_lib])
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/@2@_version.map'.format(
+					meson.current_source_dir(),
+					drv_path, lib_name)
+
+			if is_windows
+				version_map = '\\'.join(version_map.split('/'))
+			endif
+
+			is_experimental = run_command(is_experimental_cmd,
+				files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
 				lib_version = major_version
 				so_version = major_version
@@ -128,9 +139,6 @@ foreach class:dpdk_driver_classes
 				install: true)
 
 			# now build the shared driver
-			version_map = '@0@/@1@/@2@_version.map'.format(
-					meson.current_source_dir(),
-					drv_path, lib_name)
 			shared_lib = shared_library(lib_name,
 				sources,
 				objects: objs,
diff --git a/lib/meson.build b/lib/meson.build
index e5ff838934..3892c16e8f 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -97,9 +97,19 @@ foreach l:libraries
 				cflags += '-DALLOW_EXPERIMENTAL_API'
 			endif
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/rte_@2@_version.map'.format(
+					meson.current_source_dir(), dir_name, name)
+
+			if is_windows
+				version_map = '\\'.join(version_map.split('/'))
+			endif
+
+			is_experimental = run_command(is_experimental_cmd,
+					files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
 				lib_version = major_version
 				so_version = major_version
@@ -120,8 +130,6 @@ foreach l:libraries
 			# then use pre-build objects to build shared lib
 			sources = []
 			objs += static_lib.extract_all_objects(recursive: false)
-			version_map = '@0@/@1@/rte_@2@_version.map'.format(
-					meson.current_source_dir(), dir_name, name)
 			implib = dir_name + '.dll.a'
 
 			def_file = custom_target(name + '_def',
diff --git a/meson_options.txt b/meson_options.txt
index 448f3e63dc..000e38fd98 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -28,8 +28,6 @@ option('max_lcores', type: 'integer', value: 128,
 	description: 'maximum number of cores/threads supported by EAL')
 option('max_numa_nodes', type: 'integer', value: 4,
 	description: 'maximum number of NUMA nodes supported by EAL')
-option('per_library_versions', type: 'boolean', value: true,
-	description: 'true: each lib gets its own version number, false: DPDK version used for each lib')
 option('tests', type: 'boolean', value: true,
 	description: 'build unit tests')
 option('use_hpet', type: 'boolean', value: false,
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index 4df8849a08..f84161c6d5 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -11,20 +11,23 @@ EXTLIB_BUILD ?= n
 # VPATH contains at least SRCDIR
 VPATH += $(SRCDIR)
 
-ifneq ($(CONFIG_RTE_MAJOR_ABI),)
-ifneq ($(LIBABIVER),)
-LIBABIVER := $(CONFIG_RTE_MAJOR_ABI)
+ifeq ($(OS), Windows_NT)
+search_cmd = findstr
+print_cmd = more
+else
+search_cmd = grep
+print_cmd = cat
 endif
+
+ifneq ($(shell $(search_cmd) "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)
+LIBABIVER := $(shell $(print_cmd) $(RTE_SRCDIR)/config/ABI_VERSION)
+else
+LIBABIVER := 0
 endif
 
 ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
 LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))
 ifeq ($(EXTLIB_BUILD),n)
-ifeq ($(CONFIG_RTE_MAJOR_ABI),)
-ifeq ($(CONFIG_RTE_NEXT_ABI),y)
-LIB := $(LIB).1
-endif
-endif
 CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
 endif
 endif
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v2 02/10] buildtools: add script for updating symbols abi version
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (8 preceding siblings ...)
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 01/10] config: change ABI versioning for global Anatoly Burakov
@ 2019-10-16 12:43 ` Anatoly Burakov
  2019-10-16 13:25   ` Bruce Richardson
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 03/10] buildtools: add ABI update shell script Anatoly Burakov
                   ` (7 subsequent siblings)
  17 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 12:43 UTC (permalink / raw)
  To: dev; +Cc: Pawel Modrak, john.mcnamara, bruce.richardson, thomas, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Add a script that automatically merges all stable ABI's under one
ABI section with the new version, while leaving experimental
section exactly as it is.

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - Reworked script to be pep8-compliant and more reliable

 buildtools/update_version_map_abi.py | 148 +++++++++++++++++++++++++++
 1 file changed, 148 insertions(+)
 create mode 100755 buildtools/update_version_map_abi.py

diff --git a/buildtools/update_version_map_abi.py b/buildtools/update_version_map_abi.py
new file mode 100755
index 0000000000..ea9044cc81
--- /dev/null
+++ b/buildtools/update_version_map_abi.py
@@ -0,0 +1,148 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+"""
+A Python program to update the ABI version and function names in a DPDK
+lib_*_version.map file. Called from the buildtools/update_abi.sh utility.
+"""
+
+from __future__ import print_function
+import argparse
+import sys
+import re
+
+
+def __parse_map_file(f_in):
+    func_line_regex = re.compile(r"\s*(?P<func>[a-zA-Z_0-9]+)\s*;\s*$")
+    section_begin_regex = re.compile(
+        r"\s*(?P<version>[a-zA-Z0-9_\.]+)\s*{\s*$")
+    section_end_regex = re.compile(
+        r"\s*}\s*(?P<parent>[a-zA-Z0-9_\.]+)?\s*;\s*$")
+
+    # for stable ABI, we don't care about which version introduced which
+    # function, we just flatten the list. there are dupes in certain files, so
+    # use a set instead of a list
+    stable_lines = set()
+    # copy experimental section as is
+    experimental_lines = []
+    is_experimental = False
+
+    # gather all functions
+    for line in f_in:
+        # clean up the line
+        line = line.strip('\n').strip()
+
+        # is this an end of section?
+        match = section_end_regex.match(line)
+        if match:
+            # whatever section this was, it's not active any more
+            is_experimental = False
+            continue
+
+        # if we're in the middle of experimental section, we need to copy
+        # the section verbatim, so just add the line
+        if is_experimental:
+            experimental_lines += [line]
+            continue
+
+        # skip empty lines
+        if not line:
+            continue
+
+        # is this a beginning of a new section?
+        match = section_begin_regex.match(line)
+        if match:
+            cur_section = match.group("version")
+            # is it experimental?
+            is_experimental = cur_section == "EXPERIMENTAL"
+            continue
+
+        # is this a function?
+        match = func_line_regex.match(line)
+        if match:
+            stable_lines.add(match.group("func"))
+
+    return stable_lines, experimental_lines
+
+
+def __regenerate_map_file(f_out, abi_version, stable_lines,
+                          experimental_lines):
+    # print ABI version header
+    print("DPDK_{} {{".format(abi_version), file=f_out)
+
+    if stable_lines:
+        # print global section
+        print("\tglobal:", file=f_out)
+        # blank line
+        print(file=f_out)
+
+        # print all stable lines, alphabetically sorted
+        for line in sorted(stable_lines):
+            print("\t{};".format(line), file=f_out)
+
+        # another blank line
+        print(file=f_out)
+
+    # print local section
+    print("\tlocal: *;", file=f_out)
+
+    # end stable version
+    print("};", file=f_out)
+
+    # do we have experimental lines?
+    if not experimental_lines:
+        return
+
+    # another blank line
+    print(file=f_out)
+
+    # start experimental section
+    print("EXPERIMENTAL {", file=f_out)
+
+    # print all experimental lines as they were
+    for line in experimental_lines:
+        # don't print empty whitespace
+        if not line:
+            print("", file=f_out)
+        else:
+            print("\t{}".format(line), file=f_out)
+
+    # end section
+    print("};", file=f_out)
+
+
+def __main():
+    arg_parser = argparse.ArgumentParser(
+        description='Merge versions in linker version script.')
+
+    arg_parser.add_argument("map_file", type=str,
+                            help='path to linker version script file '
+                                 '(pattern: *version.map)')
+    arg_parser.add_argument("abi_version", type=str,
+                            help='target ABI version (pattern: MAJOR.MINOR)')
+
+    parsed = arg_parser.parse_args()
+
+    if not parsed.map_file.endswith('version.map'):
+        print("Invalid input file: {}".format(parsed.map_file),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    if not re.match(r"\d{1,2}\.\d{1,2}", parsed.abi_version):
+        print("Invalid ABI version: {}".format(parsed.abi_version),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    with open(parsed.map_file) as f_in:
+        stable_lines, experimental_lines = __parse_map_file(f_in)
+
+    with open(parsed.map_file, 'w') as f_out:
+        __regenerate_map_file(f_out, parsed.abi_version, stable_lines,
+                              experimental_lines)
+
+
+if __name__ == "__main__":
+    __main()
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v2 03/10] buildtools: add ABI update shell script
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (9 preceding siblings ...)
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
@ 2019-10-16 12:43 ` Anatoly Burakov
  2019-10-16 13:33   ` Bruce Richardson
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 04/10] timer: remove deprecated code Anatoly Burakov
                   ` (6 subsequent siblings)
  17 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 12:43 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, bruce.richardson, thomas, david.marchand

In order to facilitate mass updating of version files, add a shell
script that recurses into lib/ and drivers/ directories and calls
the ABI version update script.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - Add this patch to split the shell script from previous commit
    - Fixup miscellaneous bugs

 buildtools/update-abi.sh | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100755 buildtools/update-abi.sh

diff --git a/buildtools/update-abi.sh b/buildtools/update-abi.sh
new file mode 100755
index 0000000000..a6f916a437
--- /dev/null
+++ b/buildtools/update-abi.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+abi_version=""
+abi_version_file="./config/ABI_VERSION"
+update_path="lib drivers"
+
+if [ -z "$1" ]
+then
+      # output to stderr
+      >&2 echo "provide ABI version"
+      exit 1
+fi
+
+abi_version=$1
+
+if [ -n "$2" ]
+then
+      abi_version_file=$2
+fi
+
+if [ -n "$3" ]
+then
+      update_path=${@:3}
+fi
+
+echo "New ABI version:" $abi_version
+echo "ABI_VERSION path:" $abi_version_file
+echo "Path to update:" $update_path
+
+echo $abi_version > $abi_version_file
+
+find $update_path -name  \*version.map -exec \
+      ./buildtools/update_version_map_abi.py {} \
+      $abi_version \; -print
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v2 04/10] timer: remove deprecated code
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (10 preceding siblings ...)
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 03/10] buildtools: add ABI update shell script Anatoly Burakov
@ 2019-10-16 12:43 ` Anatoly Burakov
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 05/10] lpm: " Anatoly Burakov
                   ` (5 subsequent siblings)
  17 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 12:43 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, bruce.richardson, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_timer/rte_timer.c | 90 ++----------------------------------
 lib/librte_timer/rte_timer.h | 15 ------
 2 files changed, 5 insertions(+), 100 deletions(-)

diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c
index bdcf05d06b..de6959b809 100644
--- a/lib/librte_timer/rte_timer.c
+++ b/lib/librte_timer/rte_timer.c
@@ -68,9 +68,6 @@ static struct rte_timer_data *rte_timer_data_arr;
 static const uint32_t default_data_id;
 static uint32_t rte_timer_subsystem_initialized;
 
-/* For maintaining older interfaces for a period */
-static struct rte_timer_data default_timer_data;
-
 /* when debug is enabled, store some statistics */
 #ifdef RTE_LIBRTE_TIMER_DEBUG
 #define __TIMER_STAT_ADD(priv_timer, name, n) do {			\
@@ -131,22 +128,6 @@ rte_timer_data_dealloc(uint32_t id)
 	return 0;
 }
 
-void
-rte_timer_subsystem_init_v20(void)
-{
-	unsigned lcore_id;
-	struct priv_timer *priv_timer = default_timer_data.priv_timer;
-
-	/* since priv_timer is static, it's zeroed by default, so only init some
-	 * fields.
-	 */
-	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id ++) {
-		rte_spinlock_init(&priv_timer[lcore_id].list_lock);
-		priv_timer[lcore_id].prev_lcore = lcore_id;
-	}
-}
-VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
-
 /* Init the timer library. Allocate an array of timer data structs in shared
  * memory, and allocate the zeroth entry for use with original timer
  * APIs. Since the intersection of the sets of lcore ids in primary and
@@ -154,7 +135,7 @@ VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
  * multiple processes.
  */
 int
-rte_timer_subsystem_init_v1905(void)
+rte_timer_subsystem_init(void)
 {
 	const struct rte_memzone *mz;
 	struct rte_timer_data *data;
@@ -209,9 +190,6 @@ rte_timer_subsystem_init_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_subsystem_init(void),
-		  rte_timer_subsystem_init_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_subsystem_init, _v1905, 19.05);
 
 void
 rte_timer_subsystem_finalize(void)
@@ -552,42 +530,13 @@ __rte_timer_reset(struct rte_timer *tim, uint64_t expire,
 
 /* Reset and start the timer associated with the timer handle tim */
 int
-rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-		    enum rte_timer_type type, unsigned int tim_lcore,
-		    rte_timer_cb_t fct, void *arg)
-{
-	uint64_t cur_time = rte_get_timer_cycles();
-	uint64_t period;
-
-	if (unlikely((tim_lcore != (unsigned)LCORE_ID_ANY) &&
-			!(rte_lcore_is_enabled(tim_lcore) ||
-			  rte_lcore_has_role(tim_lcore, ROLE_SERVICE))))
-		return -1;
-
-	if (type == PERIODICAL)
-		period = ticks;
-	else
-		period = 0;
-
-	return __rte_timer_reset(tim,  cur_time + ticks, period, tim_lcore,
-			  fct, arg, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_reset, _v20, 2.0);
-
-int
-rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
+rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		      enum rte_timer_type type, unsigned int tim_lcore,
 		      rte_timer_cb_t fct, void *arg)
 {
 	return rte_timer_alt_reset(default_data_id, tim, ticks, type,
 				   tim_lcore, fct, arg);
 }
-MAP_STATIC_SYMBOL(int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
-				      enum rte_timer_type type,
-				      unsigned int tim_lcore,
-				      rte_timer_cb_t fct, void *arg),
-		  rte_timer_reset_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_reset, _v1905, 19.05);
 
 int
 rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim,
@@ -658,20 +607,10 @@ __rte_timer_stop(struct rte_timer *tim, int local_is_locked,
 
 /* Stop the timer associated with the timer handle tim */
 int
-rte_timer_stop_v20(struct rte_timer *tim)
-{
-	return __rte_timer_stop(tim, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_stop, _v20, 2.0);
-
-int
-rte_timer_stop_v1905(struct rte_timer *tim)
+rte_timer_stop(struct rte_timer *tim)
 {
 	return rte_timer_alt_stop(default_data_id, tim);
 }
-MAP_STATIC_SYMBOL(int rte_timer_stop(struct rte_timer *tim),
-		  rte_timer_stop_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_stop, _v1905, 19.05);
 
 int
 rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim)
@@ -817,15 +756,8 @@ __rte_timer_manage(struct rte_timer_data *timer_data)
 	priv_timer[lcore_id].running_tim = NULL;
 }
 
-void
-rte_timer_manage_v20(void)
-{
-	__rte_timer_manage(&default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_manage, _v20, 2.0);
-
 int
-rte_timer_manage_v1905(void)
+rte_timer_manage(void)
 {
 	struct rte_timer_data *timer_data;
 
@@ -835,8 +767,6 @@ rte_timer_manage_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_manage(void), rte_timer_manage_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_manage, _v1905, 19.05);
 
 int
 rte_timer_alt_manage(uint32_t timer_data_id,
@@ -1074,21 +1004,11 @@ __rte_timer_dump_stats(struct rte_timer_data *timer_data __rte_unused, FILE *f)
 #endif
 }
 
-void
-rte_timer_dump_stats_v20(FILE *f)
-{
-	__rte_timer_dump_stats(&default_timer_data, f);
-}
-VERSION_SYMBOL(rte_timer_dump_stats, _v20, 2.0);
-
 int
-rte_timer_dump_stats_v1905(FILE *f)
+rte_timer_dump_stats(FILE *f)
 {
 	return rte_timer_alt_dump_stats(default_data_id, f);
 }
-MAP_STATIC_SYMBOL(int rte_timer_dump_stats(FILE *f),
-		  rte_timer_dump_stats_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_dump_stats, _v1905, 19.05);
 
 int
 rte_timer_alt_dump_stats(uint32_t timer_data_id __rte_unused, FILE *f)
diff --git a/lib/librte_timer/rte_timer.h b/lib/librte_timer/rte_timer.h
index 05d287d8f2..9dc5fc3092 100644
--- a/lib/librte_timer/rte_timer.h
+++ b/lib/librte_timer/rte_timer.h
@@ -181,8 +181,6 @@ int rte_timer_data_dealloc(uint32_t id);
  *      subsystem
  */
 int rte_timer_subsystem_init(void);
-int rte_timer_subsystem_init_v1905(void);
-void rte_timer_subsystem_init_v20(void);
 
 /**
  * @warning
@@ -250,13 +248,6 @@ void rte_timer_init(struct rte_timer *tim);
 int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		    enum rte_timer_type type, unsigned tim_lcore,
 		    rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
-			  enum rte_timer_type type, unsigned int tim_lcore,
-			  rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-			enum rte_timer_type type, unsigned int tim_lcore,
-			rte_timer_cb_t fct, void *arg);
-
 
 /**
  * Loop until rte_timer_reset() succeeds.
@@ -313,8 +304,6 @@ rte_timer_reset_sync(struct rte_timer *tim, uint64_t ticks,
  *   - (-1): The timer is in the RUNNING or CONFIG state.
  */
 int rte_timer_stop(struct rte_timer *tim);
-int rte_timer_stop_v1905(struct rte_timer *tim);
-int rte_timer_stop_v20(struct rte_timer *tim);
 
 /**
  * Loop until rte_timer_stop() succeeds.
@@ -358,8 +347,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_manage(void);
-int rte_timer_manage_v1905(void);
-void rte_timer_manage_v20(void);
 
 /**
  * Dump statistics about timers.
@@ -371,8 +358,6 @@ void rte_timer_manage_v20(void);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_dump_stats(FILE *f);
-int rte_timer_dump_stats_v1905(FILE *f);
-void rte_timer_dump_stats_v20(FILE *f);
 
 /**
  * @warning
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v2 05/10] lpm: remove deprecated code
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (11 preceding siblings ...)
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 04/10] timer: remove deprecated code Anatoly Burakov
@ 2019-10-16 12:43 ` Anatoly Burakov
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 06/10] distributor: " Anatoly Burakov
                   ` (4 subsequent siblings)
  17 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 12:43 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Bruce Richardson, Vladimir Medvedkin,
	john.mcnamara, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_lpm/rte_lpm.c  | 996 ++------------------------------------
 lib/librte_lpm/rte_lpm.h  |  88 ----
 lib/librte_lpm/rte_lpm6.c | 132 +----
 lib/librte_lpm/rte_lpm6.h |  25 -
 4 files changed, 48 insertions(+), 1193 deletions(-)

diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c
index 3a929a1b16..2687564194 100644
--- a/lib/librte_lpm/rte_lpm.c
+++ b/lib/librte_lpm/rte_lpm.c
@@ -89,34 +89,8 @@ depth_to_range(uint8_t depth)
 /*
  * Find an existing lpm table and return a pointer to it.
  */
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name)
-{
-	struct rte_lpm_v20 *l = NULL;
-	struct rte_tailq_entry *te;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_read_lock();
-	TAILQ_FOREACH(te, lpm_list, next) {
-		l = te->data;
-		if (strncmp(name, l->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-	rte_mcfg_tailq_read_unlock();
-
-	if (te == NULL) {
-		rte_errno = ENOENT;
-		return NULL;
-	}
-
-	return l;
-}
-VERSION_SYMBOL(rte_lpm_find_existing, _v20, 2.0);
-
 struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name)
+rte_lpm_find_existing(const char *name)
 {
 	struct rte_lpm *l = NULL;
 	struct rte_tailq_entry *te;
@@ -139,88 +113,12 @@ rte_lpm_find_existing_v1604(const char *name)
 
 	return l;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_find_existing, _v1604, 16.04);
-MAP_STATIC_SYMBOL(struct rte_lpm *rte_lpm_find_existing(const char *name),
-		rte_lpm_find_existing_v1604);
 
 /*
  * Allocates memory for LPM object
  */
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules,
-		__rte_unused int flags)
-{
-	char mem_name[RTE_LPM_NAMESIZE];
-	struct rte_lpm_v20 *lpm = NULL;
-	struct rte_tailq_entry *te;
-	uint32_t mem_size;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	RTE_BUILD_BUG_ON(sizeof(struct rte_lpm_tbl_entry_v20) != 2);
-
-	/* Check user arguments. */
-	if ((name == NULL) || (socket_id < -1) || (max_rules == 0)) {
-		rte_errno = EINVAL;
-		return NULL;
-	}
-
-	snprintf(mem_name, sizeof(mem_name), "LPM_%s", name);
-
-	/* Determine the amount of memory to allocate. */
-	mem_size = sizeof(*lpm) + (sizeof(lpm->rules_tbl[0]) * max_rules);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* guarantee there's no existing */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		lpm = te->data;
-		if (strncmp(name, lpm->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-
-	if (te != NULL) {
-		lpm = NULL;
-		rte_errno = EEXIST;
-		goto exit;
-	}
-
-	/* allocate tailq entry */
-	te = rte_zmalloc("LPM_TAILQ_ENTRY", sizeof(*te), 0);
-	if (te == NULL) {
-		RTE_LOG(ERR, LPM, "Failed to allocate tailq entry\n");
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Allocate memory to store the LPM data structures. */
-	lpm = rte_zmalloc_socket(mem_name, mem_size,
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (lpm == NULL) {
-		RTE_LOG(ERR, LPM, "LPM memory allocation failed\n");
-		rte_free(te);
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Save user arguments. */
-	lpm->max_rules = max_rules;
-	strlcpy(lpm->name, name, sizeof(lpm->name));
-
-	te->data = lpm;
-
-	TAILQ_INSERT_TAIL(lpm_list, te, next);
-
-exit:
-	rte_mcfg_tailq_write_unlock();
-
-	return lpm;
-}
-VERSION_SYMBOL(rte_lpm_create, _v20, 2.0);
-
 struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
+rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config)
 {
 	char mem_name[RTE_LPM_NAMESIZE];
@@ -320,45 +218,12 @@ rte_lpm_create_v1604(const char *name, int socket_id,
 
 	return lpm;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_create, _v1604, 16.04);
-MAP_STATIC_SYMBOL(
-	struct rte_lpm *rte_lpm_create(const char *name, int socket_id,
-			const struct rte_lpm_config *config), rte_lpm_create_v1604);
 
 /*
  * Deallocates memory for given LPM table.
  */
 void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm)
-{
-	struct rte_lpm_list *lpm_list;
-	struct rte_tailq_entry *te;
-
-	/* Check user arguments. */
-	if (lpm == NULL)
-		return;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* find our tailq entry */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		if (te->data == (void *) lpm)
-			break;
-	}
-	if (te != NULL)
-		TAILQ_REMOVE(lpm_list, te, next);
-
-	rte_mcfg_tailq_write_unlock();
-
-	rte_free(lpm);
-	rte_free(te);
-}
-VERSION_SYMBOL(rte_lpm_free, _v20, 2.0);
-
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm)
+rte_lpm_free(struct rte_lpm *lpm)
 {
 	struct rte_lpm_list *lpm_list;
 	struct rte_tailq_entry *te;
@@ -386,9 +251,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm)
 	rte_free(lpm);
 	rte_free(te);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_free, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
-		rte_lpm_free_v1604);
 
 /*
  * Adds a rule to the rule table.
@@ -401,79 +263,7 @@ MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-	uint8_t next_hop)
-{
-	uint32_t rule_gindex, rule_index, last_rule;
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	/* Scan through rule group to see if rule already exists. */
-	if (lpm->rule_info[depth - 1].used_rules > 0) {
-
-		/* rule_gindex stands for rule group index. */
-		rule_gindex = lpm->rule_info[depth - 1].first_rule;
-		/* Initialise rule_index to point to start of rule group. */
-		rule_index = rule_gindex;
-		/* Last rule = Last used rule in this rule group. */
-		last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-		for (; rule_index < last_rule; rule_index++) {
-
-			/* If rule already exists update its next_hop and return. */
-			if (lpm->rules_tbl[rule_index].ip == ip_masked) {
-				lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-				return rule_index;
-			}
-		}
-
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-	} else {
-		/* Calculate the position in which the rule will be stored. */
-		rule_index = 0;
-
-		for (i = depth - 1; i > 0; i--) {
-			if (lpm->rule_info[i - 1].used_rules > 0) {
-				rule_index = lpm->rule_info[i - 1].first_rule
-						+ lpm->rule_info[i - 1].used_rules;
-				break;
-			}
-		}
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-
-		lpm->rule_info[depth - 1].first_rule = rule_index;
-	}
-
-	/* Make room for the new rule in the array. */
-	for (i = RTE_LPM_MAX_DEPTH; i > depth; i--) {
-		if (lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules == lpm->max_rules)
-			return -ENOSPC;
-
-		if (lpm->rule_info[i - 1].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules]
-					= lpm->rules_tbl[lpm->rule_info[i - 1].first_rule];
-			lpm->rule_info[i - 1].first_rule++;
-		}
-	}
-
-	/* Add the new rule. */
-	lpm->rules_tbl[rule_index].ip = ip_masked;
-	lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-	/* Increment the used rules counter for this rule group. */
-	lpm->rule_info[depth - 1].used_rules++;
-
-	return rule_index;
-}
-
-static int32_t
-rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+rule_add(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	uint32_t next_hop)
 {
 	uint32_t rule_gindex, rule_index, last_rule;
@@ -549,30 +339,7 @@ rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static void
-rule_delete_v20(struct rte_lpm_v20 *lpm, int32_t rule_index, uint8_t depth)
-{
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	lpm->rules_tbl[rule_index] =
-			lpm->rules_tbl[lpm->rule_info[depth - 1].first_rule
-				+ lpm->rule_info[depth - 1].used_rules - 1];
-
-	for (i = depth; i < RTE_LPM_MAX_DEPTH; i++) {
-		if (lpm->rule_info[i].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i].first_rule - 1] =
-				lpm->rules_tbl[lpm->rule_info[i].first_rule
-					+ lpm->rule_info[i].used_rules - 1];
-			lpm->rule_info[i].first_rule--;
-		}
-	}
-
-	lpm->rule_info[depth - 1].used_rules--;
-}
-
-static void
-rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
+rule_delete(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
 {
 	int i;
 
@@ -599,28 +366,7 @@ rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_find_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth)
-{
-	uint32_t rule_gindex, last_rule, rule_index;
-
-	VERIFY_DEPTH(depth);
-
-	rule_gindex = lpm->rule_info[depth - 1].first_rule;
-	last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-	/* Scan used rules at given depth to find rule. */
-	for (rule_index = rule_gindex; rule_index < last_rule; rule_index++) {
-		/* If rule is found return the rule index. */
-		if (lpm->rules_tbl[rule_index].ip == ip_masked)
-			return rule_index;
-	}
-
-	/* If rule is not found return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
+rule_find(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
 {
 	uint32_t rule_gindex, last_rule, rule_index;
 
@@ -644,42 +390,7 @@ rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
  * Find, clean and allocate a tbl8.
  */
 static int32_t
-tbl8_alloc_v20(struct rte_lpm_tbl_entry_v20 *tbl8)
-{
-	uint32_t group_idx; /* tbl8 group index. */
-	struct rte_lpm_tbl_entry_v20 *tbl8_entry;
-
-	/* Scan through tbl8 to find a free (i.e. INVALID) tbl8 group. */
-	for (group_idx = 0; group_idx < RTE_LPM_TBL8_NUM_GROUPS;
-			group_idx++) {
-		tbl8_entry = &tbl8[group_idx * RTE_LPM_TBL8_GROUP_NUM_ENTRIES];
-		/* If a free tbl8 group is found clean it and set as VALID. */
-		if (!tbl8_entry->valid_group) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = INVALID,
-				.depth = 0,
-				.valid_group = VALID,
-			};
-			new_tbl8_entry.next_hop = 0;
-
-			memset(&tbl8_entry[0], 0,
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES *
-					sizeof(tbl8_entry[0]));
-
-			__atomic_store(tbl8_entry, &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-
-			/* Return group index for allocated tbl8 group. */
-			return group_idx;
-		}
-	}
-
-	/* If there are no tbl8 groups free then return error. */
-	return -ENOSPC;
-}
-
-static int32_t
-tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
+tbl8_alloc(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 {
 	uint32_t group_idx; /* tbl8 group index. */
 	struct rte_lpm_tbl_entry *tbl8_entry;
@@ -713,22 +424,7 @@ tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 }
 
 static void
-tbl8_free_v20(struct rte_lpm_tbl_entry_v20 *tbl8, uint32_t tbl8_group_start)
-{
-	/* Set tbl8 group invalid*/
-	struct rte_lpm_tbl_entry_v20 zero_tbl8_entry = {
-		.valid = INVALID,
-		.depth = 0,
-		.valid_group = INVALID,
-	};
-	zero_tbl8_entry.next_hop = 0;
-
-	__atomic_store(&tbl8[tbl8_group_start], &zero_tbl8_entry,
-			__ATOMIC_RELAXED);
-}
-
-static void
-tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
+tbl8_free(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 {
 	/* Set tbl8 group invalid*/
 	struct rte_lpm_tbl_entry zero_tbl8_entry = {0};
@@ -738,78 +434,7 @@ tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 }
 
 static __rte_noinline int32_t
-add_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index, tbl24_range, tbl8_index, tbl8_group_end, i, j;
-
-	/* Calculate the index into Table24. */
-	tbl24_index = ip >> 8;
-	tbl24_range = depth_to_range(depth);
-
-	for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-		/*
-		 * For invalid OR valid and non-extended tbl 24 entries set
-		 * entry.
-		 */
-		if (!lpm->tbl24[i].valid || (lpm->tbl24[i].valid_group == 0 &&
-				lpm->tbl24[i].depth <= depth)) {
-
-			struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.valid = VALID,
-				.valid_group = 0,
-				.depth = depth,
-			};
-			new_tbl24_entry.next_hop = next_hop;
-
-			/* Setting tbl24 entry in one go to avoid race
-			 * conditions
-			 */
-			__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-					__ATOMIC_RELEASE);
-
-			continue;
-		}
-
-		if (lpm->tbl24[i].valid_group == 1) {
-			/* If tbl24 entry is valid and extended calculate the
-			 *  index into tbl8.
-			 */
-			tbl8_index = lpm->tbl24[i].group_idx *
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-			tbl8_group_end = tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-			for (j = tbl8_index; j < tbl8_group_end; j++) {
-				if (!lpm->tbl8[j].valid ||
-						lpm->tbl8[j].depth <= depth) {
-					struct rte_lpm_tbl_entry_v20
-						new_tbl8_entry = {
-						.valid = VALID,
-						.valid_group = VALID,
-						.depth = depth,
-					};
-					new_tbl8_entry.next_hop = next_hop;
-
-					/*
-					 * Setting tbl8 entry in one go to avoid
-					 * race conditions
-					 */
-					__atomic_store(&lpm->tbl8[j],
-						&new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-					continue;
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+add_depth_small(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -881,150 +506,7 @@ add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 }
 
 static __rte_noinline int32_t
-add_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index;
-	int32_t tbl8_group_index, tbl8_group_start, tbl8_group_end, tbl8_index,
-		tbl8_range, i;
-
-	tbl24_index = (ip_masked >> 8);
-	tbl8_range = depth_to_range(depth);
-
-	if (!lpm->tbl24[tbl24_index].valid) {
-		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		/* Check tbl8 allocation was successful. */
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		/* Find index into tbl8 and range. */
-		tbl8_index = (tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES) +
-				(ip_masked & 0xFF);
-
-		/* Set tbl8 entry. */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.group_idx = (uint8_t)tbl8_group_index,
-			.valid = VALID,
-			.valid_group = 1,
-			.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} /* If valid entry but not extended calculate the index into Table8. */
-	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
-		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_group_end = tbl8_group_start +
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-		/* Populate new tbl8 with tbl24 value. */
-		for (i = tbl8_group_start; i < tbl8_group_end; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = lpm->tbl24[tbl24_index].depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop =
-				lpm->tbl24[tbl24_index].next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		/* Insert new rule into the tbl8 entry. */
-		for (i = tbl8_index; i < tbl8_index + tbl8_range; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.group_idx = (uint8_t)tbl8_group_index,
-				.valid = VALID,
-				.valid_group = 1,
-				.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} else { /*
-		* If it is valid, extended entry calculate the index into tbl8.
-		*/
-		tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-
-			if (!lpm->tbl8[i].valid ||
-					lpm->tbl8[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-					.valid = VALID,
-					.depth = depth,
-					.valid_group = lpm->tbl8[i].valid_group,
-				};
-				new_tbl8_entry.next_hop = next_hop;
-				/*
-				 * Setting tbl8 entry in one go to avoid race
-				 * condition
-				 */
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-				continue;
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+add_depth_big(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -1037,7 +519,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 
 	if (!lpm->tbl24[tbl24_index].valid) {
 		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		/* Check tbl8 allocation was successful. */
 		if (tbl8_group_index < 0) {
@@ -1083,7 +565,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	} /* If valid entry but not extended calculate the index into Table8. */
 	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
 		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		if (tbl8_group_index < 0) {
 			return tbl8_group_index;
@@ -1177,48 +659,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * Add a route
  */
 int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	int32_t rule_index, status = 0;
-	uint32_t ip_masked;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/* Add the rule to the rule table. */
-	rule_index = rule_add_v20(lpm, ip_masked, depth, next_hop);
-
-	/* If the is no space available for new rule return error. */
-	if (rule_index < 0) {
-		return rule_index;
-	}
-
-	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v20(lpm, ip_masked, depth, next_hop);
-	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v20(lpm, ip_masked, depth, next_hop);
-
-		/*
-		 * If add fails due to exhaustion of tbl8 extensions delete
-		 * rule that was added to rule table.
-		 */
-		if (status < 0) {
-			rule_delete_v20(lpm, rule_index, depth);
-
-			return status;
-		}
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_add, _v20, 2.0);
-
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 	int32_t rule_index, status = 0;
@@ -1231,7 +672,7 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	ip_masked = ip & depth_to_mask(depth);
 
 	/* Add the rule to the rule table. */
-	rule_index = rule_add_v1604(lpm, ip_masked, depth, next_hop);
+	rule_index = rule_add(lpm, ip_masked, depth, next_hop);
 
 	/* If the is no space available for new rule return error. */
 	if (rule_index < 0) {
@@ -1239,16 +680,16 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	}
 
 	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_small(lpm, ip_masked, depth, next_hop);
 	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_big(lpm, ip_masked, depth, next_hop);
 
 		/*
 		 * If add fails due to exhaustion of tbl8 extensions delete
 		 * rule that was added to rule table.
 		 */
 		if (status < 0) {
-			rule_delete_v1604(lpm, rule_index, depth);
+			rule_delete(lpm, rule_index, depth);
 
 			return status;
 		}
@@ -1256,42 +697,12 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_add, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_add(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t next_hop), rte_lpm_add_v1604);
 
 /*
  * Look for a rule in the high-level rules table
  */
 int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop)
-{
-	uint32_t ip_masked;
-	int32_t rule_index;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) ||
-		(next_hop == NULL) ||
-		(depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	/* Look for the rule using rule_find. */
-	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v20(lpm, ip_masked, depth);
-
-	if (rule_index >= 0) {
-		*next_hop = lpm->rules_tbl[rule_index].next_hop;
-		return 1;
-	}
-
-	/* If rule is not found return 0. */
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_is_rule_present, _v20, 2.0);
-
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop)
 {
 	uint32_t ip_masked;
@@ -1305,7 +716,7 @@ uint32_t *next_hop)
 
 	/* Look for the rule using rule_find. */
 	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v1604(lpm, ip_masked, depth);
+	rule_index = rule_find(lpm, ip_masked, depth);
 
 	if (rule_index >= 0) {
 		*next_hop = lpm->rules_tbl[rule_index].next_hop;
@@ -1315,12 +726,9 @@ uint32_t *next_hop)
 	/* If rule is not found return 0. */
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_is_rule_present, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t *next_hop), rte_lpm_is_rule_present_v1604);
 
 static int32_t
-find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
+find_previous_rule(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint8_t *sub_rule_depth)
 {
 	int32_t rule_index;
@@ -1330,7 +738,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
 		ip_masked = ip & depth_to_mask(prev_depth);
 
-		rule_index = rule_find_v20(lpm, ip_masked, prev_depth);
+		rule_index = rule_find(lpm, ip_masked, prev_depth);
 
 		if (rule_index >= 0) {
 			*sub_rule_depth = prev_depth;
@@ -1342,133 +750,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 }
 
 static int32_t
-find_previous_rule_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint8_t *sub_rule_depth)
-{
-	int32_t rule_index;
-	uint32_t ip_masked;
-	uint8_t prev_depth;
-
-	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
-		ip_masked = ip & depth_to_mask(prev_depth);
-
-		rule_index = rule_find_v1604(lpm, ip_masked, prev_depth);
-
-		if (rule_index >= 0) {
-			*sub_rule_depth = prev_depth;
-			return rule_index;
-		}
-	}
-
-	return -1;
-}
-
-static int32_t
-delete_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_range, tbl24_index, tbl8_group_index, tbl8_index, i, j;
-
-	/* Calculate the range and index into Table24. */
-	tbl24_range = depth_to_range(depth);
-	tbl24_index = (ip_masked >> 8);
-
-	/*
-	 * Firstly check the sub_rule_index. A -1 indicates no replacement rule
-	 * and a positive number indicates a sub_rule_index.
-	 */
-	if (sub_rule_index < 0) {
-		/*
-		 * If no replacement rule exists then invalidate entries
-		 * associated with this rule.
-		 */
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20
-					zero_tbl24_entry = {
-						.valid = INVALID,
-						.depth = 0,
-						.valid_group = 0,
-					};
-					zero_tbl24_entry.next_hop = 0;
-				__atomic_store(&lpm->tbl24[i],
-					&zero_tbl24_entry, __ATOMIC_RELEASE);
-			} else if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						lpm->tbl8[j].valid = INVALID;
-				}
-			}
-		}
-	} else {
-		/*
-		 * If a replacement rule exists then modify entries
-		 * associated with this rule.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->rules_tbl[sub_rule_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = sub_rule_depth,
-		};
-
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.valid_group = VALID,
-			.depth = sub_rule_depth,
-		};
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-						__ATOMIC_RELEASE);
-			} else  if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						__atomic_store(&lpm->tbl8[j],
-							&new_tbl8_entry,
-							__ATOMIC_RELAXED);
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_small(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1575,7 +857,7 @@ delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * thus can be recycled
  */
 static int32_t
-tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
+tbl8_recycle_check(struct rte_lpm_tbl_entry *tbl8,
 		uint32_t tbl8_group_start)
 {
 	uint32_t tbl8_group_end, i;
@@ -1622,140 +904,7 @@ tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
 }
 
 static int32_t
-tbl8_recycle_check_v1604(struct rte_lpm_tbl_entry *tbl8,
-		uint32_t tbl8_group_start)
-{
-	uint32_t tbl8_group_end, i;
-	tbl8_group_end = tbl8_group_start + RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-	/*
-	 * Check the first entry of the given tbl8. If it is invalid we know
-	 * this tbl8 does not contain any rule with a depth < RTE_LPM_MAX_DEPTH
-	 *  (As they would affect all entries in a tbl8) and thus this table
-	 *  can not be recycled.
-	 */
-	if (tbl8[tbl8_group_start].valid) {
-		/*
-		 * If first entry is valid check if the depth is less than 24
-		 * and if so check the rest of the entries to verify that they
-		 * are all of this depth.
-		 */
-		if (tbl8[tbl8_group_start].depth <= MAX_DEPTH_TBL24) {
-			for (i = (tbl8_group_start + 1); i < tbl8_group_end;
-					i++) {
-
-				if (tbl8[i].depth !=
-						tbl8[tbl8_group_start].depth) {
-
-					return -EEXIST;
-				}
-			}
-			/* If all entries are the same return the tb8 index */
-			return tbl8_group_start;
-		}
-
-		return -EEXIST;
-	}
-	/*
-	 * If the first entry is invalid check if the rest of the entries in
-	 * the tbl8 are invalid.
-	 */
-	for (i = (tbl8_group_start + 1); i < tbl8_group_end; i++) {
-		if (tbl8[i].valid)
-			return -EEXIST;
-	}
-	/* If no valid entries are found then return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-delete_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_index, tbl8_group_index, tbl8_group_start, tbl8_index,
-			tbl8_range, i;
-	int32_t tbl8_recycle_index;
-
-	/*
-	 * Calculate the index into tbl24 and range. Note: All depths larger
-	 * than MAX_DEPTH_TBL24 are associated with only one tbl24 entry.
-	 */
-	tbl24_index = ip_masked >> 8;
-
-	/* Calculate the index into tbl8 and range. */
-	tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-	tbl8_group_start = tbl8_group_index * RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-	tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-	tbl8_range = depth_to_range(depth);
-
-	if (sub_rule_index < 0) {
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be removed or modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				lpm->tbl8[i].valid = INVALID;
-		}
-	} else {
-		/* Set new tbl8 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.depth = sub_rule_depth,
-			.valid_group = lpm->tbl8[tbl8_group_start].valid_group,
-		};
-
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-		}
-	}
-
-	/*
-	 * Check if there are any valid entries in this tbl8 group. If all
-	 * tbl8 entries are invalid we can free the tbl8 and invalidate the
-	 * associated tbl24 entry.
-	 */
-
-	tbl8_recycle_index = tbl8_recycle_check_v20(lpm->tbl8, tbl8_group_start);
-
-	if (tbl8_recycle_index == -EINVAL) {
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		lpm->tbl24[tbl24_index].valid = 0;
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	} else if (tbl8_recycle_index > -1) {
-		/* Update tbl24 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->tbl8[tbl8_recycle_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = lpm->tbl8[tbl8_recycle_index].depth,
-		};
-
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELAXED);
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_big(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1810,7 +959,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 	 * associated tbl24 entry.
 	 */
 
-	tbl8_recycle_index = tbl8_recycle_check_v1604(lpm->tbl8, tbl8_group_start);
+	tbl8_recycle_index = tbl8_recycle_check(lpm->tbl8, tbl8_group_start);
 
 	if (tbl8_recycle_index == -EINVAL) {
 		/* Set tbl24 before freeing tbl8 to avoid race condition.
@@ -1818,7 +967,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		 */
 		lpm->tbl24[tbl24_index].valid = 0;
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	} else if (tbl8_recycle_index > -1) {
 		/* Update tbl24 entry. */
 		struct rte_lpm_tbl_entry new_tbl24_entry = {
@@ -1834,7 +983,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
 				__ATOMIC_RELAXED);
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	}
 #undef group_idx
 	return 0;
@@ -1844,7 +993,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * Deletes a rule
  */
 int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
+rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
 {
 	int32_t rule_to_delete_index, sub_rule_index;
 	uint32_t ip_masked;
@@ -1863,7 +1012,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * Find the index of the input rule, that needs to be deleted, in the
 	 * rule table.
 	 */
-	rule_to_delete_index = rule_find_v20(lpm, ip_masked, depth);
+	rule_to_delete_index = rule_find(lpm, ip_masked, depth);
 
 	/*
 	 * Check if rule_to_delete_index was found. If no rule was found the
@@ -1873,7 +1022,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 		return -EINVAL;
 
 	/* Delete the rule from the rule table. */
-	rule_delete_v20(lpm, rule_to_delete_index, depth);
+	rule_delete(lpm, rule_to_delete_index, depth);
 
 	/*
 	 * Find rule to replace the rule_to_delete. If there is no rule to
@@ -1881,100 +1030,26 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * entries associated with this rule.
 	 */
 	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v20(lpm, ip, depth, &sub_rule_depth);
+	sub_rule_index = find_previous_rule(lpm, ip, depth, &sub_rule_depth);
 
 	/*
 	 * If the input depth value is less than 25 use function
 	 * delete_depth_small otherwise use delete_depth_big.
 	 */
 	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v20(lpm, ip_masked, depth,
+		return delete_depth_small(lpm, ip_masked, depth,
 				sub_rule_index, sub_rule_depth);
 	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v20(lpm, ip_masked, depth, sub_rule_index,
+		return delete_depth_big(lpm, ip_masked, depth, sub_rule_index,
 				sub_rule_depth);
 	}
 }
-VERSION_SYMBOL(rte_lpm_delete, _v20, 2.0);
-
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
-{
-	int32_t rule_to_delete_index, sub_rule_index;
-	uint32_t ip_masked;
-	uint8_t sub_rule_depth;
-	/*
-	 * Check input arguments. Note: IP must be a positive integer of 32
-	 * bits in length therefore it need not be checked.
-	 */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH)) {
-		return -EINVAL;
-	}
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/*
-	 * Find the index of the input rule, that needs to be deleted, in the
-	 * rule table.
-	 */
-	rule_to_delete_index = rule_find_v1604(lpm, ip_masked, depth);
-
-	/*
-	 * Check if rule_to_delete_index was found. If no rule was found the
-	 * function rule_find returns -EINVAL.
-	 */
-	if (rule_to_delete_index < 0)
-		return -EINVAL;
-
-	/* Delete the rule from the rule table. */
-	rule_delete_v1604(lpm, rule_to_delete_index, depth);
-
-	/*
-	 * Find rule to replace the rule_to_delete. If there is no rule to
-	 * replace the rule_to_delete we return -1 and invalidate the table
-	 * entries associated with this rule.
-	 */
-	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v1604(lpm, ip, depth, &sub_rule_depth);
-
-	/*
-	 * If the input depth value is less than 25 use function
-	 * delete_depth_small otherwise use delete_depth_big.
-	 */
-	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v1604(lpm, ip_masked, depth,
-				sub_rule_index, sub_rule_depth);
-	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v1604(lpm, ip_masked, depth, sub_rule_index,
-				sub_rule_depth);
-	}
-}
-BIND_DEFAULT_SYMBOL(rte_lpm_delete, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth), rte_lpm_delete_v1604);
 
 /*
  * Delete all rules from the LPM table.
  */
 void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm)
-{
-	/* Zero rule information. */
-	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
-
-	/* Zero tbl24. */
-	memset(lpm->tbl24, 0, sizeof(lpm->tbl24));
-
-	/* Zero tbl8. */
-	memset(lpm->tbl8, 0, sizeof(lpm->tbl8));
-
-	/* Delete all rules form the rules table. */
-	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
-}
-VERSION_SYMBOL(rte_lpm_delete_all, _v20, 2.0);
-
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
+rte_lpm_delete_all(struct rte_lpm *lpm)
 {
 	/* Zero rule information. */
 	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
@@ -1989,6 +1064,3 @@ rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
 	/* Delete all rules form the rules table. */
 	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_delete_all, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_delete_all(struct rte_lpm *lpm),
-		rte_lpm_delete_all_v1604);
diff --git a/lib/librte_lpm/rte_lpm.h b/lib/librte_lpm/rte_lpm.h
index 906ec44830..ca9627a141 100644
--- a/lib/librte_lpm/rte_lpm.h
+++ b/lib/librte_lpm/rte_lpm.h
@@ -65,31 +65,6 @@ extern "C" {
 
 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
 /** @internal Tbl24 entry structure. */
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	/**
-	 * Stores Next hop (tbl8 or tbl24 when valid_group is not set) or
-	 * a group index pointing to a tbl8 structure (tbl24 only, when
-	 * valid_group is set)
-	 */
-	RTE_STD_C11
-	union {
-		uint8_t next_hop;
-		uint8_t group_idx;
-	};
-	/* Using single uint8_t to store 3 values. */
-	uint8_t valid     :1;   /**< Validation flag. */
-	/**
-	 * For tbl24:
-	 *  - valid_group == 0: entry stores a next hop
-	 *  - valid_group == 1: entry stores a group_index pointing to a tbl8
-	 * For tbl8:
-	 *  - valid_group indicates whether the current tbl8 is in use or not
-	 */
-	uint8_t valid_group :1;
-	uint8_t depth       :6; /**< Rule depth. */
-} __rte_aligned(sizeof(uint16_t));
-
 __extension__
 struct rte_lpm_tbl_entry {
 	/**
@@ -112,16 +87,6 @@ struct rte_lpm_tbl_entry {
 };
 
 #else
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	uint8_t depth       :6;
-	uint8_t valid_group :1;
-	uint8_t valid       :1;
-	union {
-		uint8_t group_idx;
-		uint8_t next_hop;
-	};
-} __rte_aligned(sizeof(uint16_t));
 
 __extension__
 struct rte_lpm_tbl_entry {
@@ -142,11 +107,6 @@ struct rte_lpm_config {
 };
 
 /** @internal Rule structure. */
-struct rte_lpm_rule_v20 {
-	uint32_t ip; /**< Rule IP address. */
-	uint8_t  next_hop; /**< Rule next hop. */
-};
-
 struct rte_lpm_rule {
 	uint32_t ip; /**< Rule IP address. */
 	uint32_t next_hop; /**< Rule next hop. */
@@ -159,21 +119,6 @@ struct rte_lpm_rule_info {
 };
 
 /** @internal LPM structure. */
-struct rte_lpm_v20 {
-	/* LPM metadata. */
-	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
-	uint32_t max_rules; /**< Max. balanced rules per lpm. */
-	struct rte_lpm_rule_info rule_info[RTE_LPM_MAX_DEPTH]; /**< Rule info table. */
-
-	/* LPM Tables. */
-	struct rte_lpm_tbl_entry_v20 tbl24[RTE_LPM_TBL24_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl24 table. */
-	struct rte_lpm_tbl_entry_v20 tbl8[RTE_LPM_TBL8_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl8 table. */
-	struct rte_lpm_rule_v20 rules_tbl[]
-			__rte_cache_aligned; /**< LPM rules. */
-};
-
 struct rte_lpm {
 	/* LPM metadata. */
 	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
@@ -210,11 +155,6 @@ struct rte_lpm {
 struct rte_lpm *
 rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config);
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules, int flags);
-struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
-		const struct rte_lpm_config *config);
 
 /**
  * Find an existing LPM object and return a pointer to it.
@@ -228,10 +168,6 @@ rte_lpm_create_v1604(const char *name, int socket_id,
  */
 struct rte_lpm *
 rte_lpm_find_existing(const char *name);
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name);
-struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name);
 
 /**
  * Free an LPM object.
@@ -243,10 +179,6 @@ rte_lpm_find_existing_v1604(const char *name);
  */
 void
 rte_lpm_free(struct rte_lpm *lpm);
-void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm);
 
 /**
  * Add a rule to the LPM table.
@@ -264,12 +196,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm);
  */
 int
 rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth, uint32_t next_hop);
-int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -289,12 +215,6 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 int
 rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop);
-int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop);
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -310,10 +230,6 @@ uint32_t *next_hop);
  */
 int
 rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
 
 /**
  * Delete all rules from the LPM table.
@@ -323,10 +239,6 @@ rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
  */
 void
 rte_lpm_delete_all(struct rte_lpm *lpm);
-void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm);
 
 /**
  * Lookup an IP into the LPM table.
diff --git a/lib/librte_lpm/rte_lpm6.c b/lib/librte_lpm/rte_lpm6.c
index 9b8aeb9721..b981e40714 100644
--- a/lib/librte_lpm/rte_lpm6.c
+++ b/lib/librte_lpm/rte_lpm6.c
@@ -808,18 +808,6 @@ add_step(struct rte_lpm6 *lpm, struct rte_lpm6_tbl_entry *tbl,
 	return 1;
 }
 
-/*
- * Add a route
- */
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	return rte_lpm6_add_v1705(lpm, ip, depth, next_hop);
-}
-VERSION_SYMBOL(rte_lpm6_add, _v20, 2.0);
-
-
 /*
  * Simulate adding a route to LPM
  *
@@ -841,7 +829,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	ret = simulate_add_step(lpm, lpm->tbl24, &tbl_next, masked_ip,
-			ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
+		ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
 	total_need_tbl_nb = need_tbl_nb;
 	/*
 	 * Inspect one by one the rest of the bytes until
@@ -850,7 +838,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && ret == 1; i++) {
 		tbl = tbl_next;
 		ret = simulate_add_step(lpm, tbl, &tbl_next, masked_ip, 1,
-				(uint8_t)(i+1), depth, &need_tbl_nb);
+			(uint8_t)(i + 1), depth, &need_tbl_nb);
 		total_need_tbl_nb += need_tbl_nb;
 	}
 
@@ -861,9 +849,12 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	return 0;
 }
 
+/*
+ * Add a route
+ */
 int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop)
+rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+	uint32_t next_hop)
 {
 	struct rte_lpm6_tbl_entry *tbl;
 	struct rte_lpm6_tbl_entry *tbl_next = NULL;
@@ -895,8 +886,8 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	tbl = lpm->tbl24;
 	status = add_step(lpm, tbl, TBL24_IND, &tbl_next, &tbl_next_num,
-			masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
-			is_new_rule);
+		masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
+		is_new_rule);
 	assert(status >= 0);
 
 	/*
@@ -906,17 +897,13 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && status == 1; i++) {
 		tbl = tbl_next;
 		status = add_step(lpm, tbl, tbl_next_num, &tbl_next,
-				&tbl_next_num, masked_ip, 1, (uint8_t)(i+1),
-				depth, next_hop, is_new_rule);
+			&tbl_next_num, masked_ip, 1, (uint8_t)(i + 1),
+			depth, next_hop, is_new_rule);
 		assert(status >= 0);
 	}
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_add, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip,
-				uint8_t depth, uint32_t next_hop),
-		rte_lpm6_add_v1705);
 
 /*
  * Takes a pointer to a table entry and inspect one level.
@@ -955,25 +942,7 @@ lookup_step(const struct rte_lpm6 *lpm, const struct rte_lpm6_tbl_entry *tbl,
  * Looks up an IP
  */
 int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_lookup_v1705(lpm, ip, &next_hop32);
-	if (status == 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-}
-VERSION_SYMBOL(rte_lpm6_lookup, _v20, 2.0);
-
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
+rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
 		uint32_t *next_hop)
 {
 	const struct rte_lpm6_tbl_entry *tbl;
@@ -1000,56 +969,12 @@ rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
-				uint32_t *next_hop), rte_lpm6_lookup_v1705);
 
 /*
  * Looks up a group of IP addresses
  */
 int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t * next_hops, unsigned n)
-{
-	unsigned i;
-	const struct rte_lpm6_tbl_entry *tbl;
-	const struct rte_lpm6_tbl_entry *tbl_next = NULL;
-	uint32_t tbl24_index, next_hop;
-	uint8_t first_byte;
-	int status;
-
-	/* DEBUG: Check user input arguments. */
-	if ((lpm == NULL) || (ips == NULL) || (next_hops == NULL))
-		return -EINVAL;
-
-	for (i = 0; i < n; i++) {
-		first_byte = LOOKUP_FIRST_BYTE;
-		tbl24_index = (ips[i][0] << BYTES2_SIZE) |
-				(ips[i][1] << BYTE_SIZE) | ips[i][2];
-
-		/* Calculate pointer to the first entry to be inspected */
-		tbl = &lpm->tbl24[tbl24_index];
-
-		do {
-			/* Continue inspecting following levels until success or failure */
-			status = lookup_step(lpm, tbl, &tbl_next, ips[i], first_byte++,
-					&next_hop);
-			tbl = tbl_next;
-		} while (status == 1);
-
-		if (status < 0)
-			next_hops[i] = -1;
-		else
-			next_hops[i] = (int16_t)next_hop;
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm6_lookup_bulk_func, _v20, 2.0);
-
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
+rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n)
 {
@@ -1089,37 +1014,12 @@ rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup_bulk_func, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
-				uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-				int32_t *next_hops, unsigned int n),
-		rte_lpm6_lookup_bulk_func_v1705);
 
 /*
  * Look for a rule in the high-level rules table
  */
 int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_is_rule_present_v1705(lpm, ip, depth, &next_hop32);
-	if (status > 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-
-}
-VERSION_SYMBOL(rte_lpm6_is_rule_present, _v20, 2.0);
-
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop)
 {
 	uint8_t masked_ip[RTE_LPM6_IPV6_ADDR_SIZE];
@@ -1135,10 +1035,6 @@ rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 
 	return rule_find(lpm, masked_ip, depth, next_hop);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_is_rule_present, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_is_rule_present(struct rte_lpm6 *lpm,
-				uint8_t *ip, uint8_t depth, uint32_t *next_hop),
-		rte_lpm6_is_rule_present_v1705);
 
 /*
  * Delete a rule from the rule table.
diff --git a/lib/librte_lpm/rte_lpm6.h b/lib/librte_lpm/rte_lpm6.h
index 5d59ccb1fe..37dfb20249 100644
--- a/lib/librte_lpm/rte_lpm6.h
+++ b/lib/librte_lpm/rte_lpm6.h
@@ -96,12 +96,6 @@ rte_lpm6_free(struct rte_lpm6 *lpm);
 int
 rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t next_hop);
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -121,12 +115,6 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 int
 rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop);
-int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop);
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -184,11 +172,6 @@ rte_lpm6_delete_all(struct rte_lpm6 *lpm);
  */
 int
 rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip, uint32_t *next_hop);
-int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop);
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
-		uint32_t *next_hop);
 
 /**
  * Lookup multiple IP addresses in an LPM table.
@@ -210,14 +193,6 @@ int
 rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int32_t *next_hops, unsigned int n);
 
 #ifdef __cplusplus
 }
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v2 06/10] distributor: remove deprecated code
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (12 preceding siblings ...)
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 05/10] lpm: " Anatoly Burakov
@ 2019-10-16 12:43 ` Anatoly Burakov
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 07/10] lib: change function suffix in distributor Anatoly Burakov
                   ` (3 subsequent siblings)
  17 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 12:43 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, David Hunt, john.mcnamara, bruce.richardson,
	thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_distributor/rte_distributor.c      | 56 +++--------------
 .../rte_distributor_v1705.h                   | 61 -------------------
 2 files changed, 9 insertions(+), 108 deletions(-)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h

diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index 21eb1fb0a1..ca3f21b833 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -19,7 +19,6 @@
 #include "rte_distributor_private.h"
 #include "rte_distributor.h"
 #include "rte_distributor_v20.h"
-#include "rte_distributor_v1705.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
 
@@ -33,7 +32,7 @@ EAL_REGISTER_TAILQ(rte_dist_burst_tailq)
 /**** Burst Packet APIs called by workers ****/
 
 void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
+rte_distributor_request_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt,
 		unsigned int count)
 {
@@ -78,14 +77,9 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
 	 */
 	*retptr64 |= RTE_DISTRIB_GET_BUF;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_request_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_request_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count),
-		rte_distributor_request_pkt_v1705);
 
 int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
+rte_distributor_poll_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -119,13 +113,9 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
 
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_poll_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_poll_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts),
-		rte_distributor_poll_pkt_v1705);
 
 int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
+rte_distributor_get_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts,
 		struct rte_mbuf **oldpkt, unsigned int return_count)
 {
@@ -153,14 +143,9 @@ rte_distributor_get_pkt_v1705(struct rte_distributor *d,
 	}
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_get_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_get_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts,
-		struct rte_mbuf **oldpkt, unsigned int return_count),
-		rte_distributor_get_pkt_v1705);
 
 int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
+rte_distributor_return_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt, int num)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -187,10 +172,6 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_return_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_return_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt, int num),
-		rte_distributor_return_pkt_v1705);
 
 /**** APIs called on distributor core ***/
 
@@ -336,7 +317,7 @@ release(struct rte_distributor *d, unsigned int wkr)
 
 /* process a set of packets to distribute them to workers */
 int
-rte_distributor_process_v1705(struct rte_distributor *d,
+rte_distributor_process(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs)
 {
 	unsigned int next_idx = 0;
@@ -470,14 +451,10 @@ rte_distributor_process_v1705(struct rte_distributor *d,
 
 	return num_mbufs;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_process, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_process(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs),
-		rte_distributor_process_v1705);
 
 /* return to the caller, packets returned from workers */
 int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
+rte_distributor_returned_pkts(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -502,10 +479,6 @@ rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
 
 	return retval;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_returned_pkts, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_returned_pkts(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs),
-		rte_distributor_returned_pkts_v1705);
 
 /*
  * Return the number of packets in-flight in a distributor, i.e. packets
@@ -527,7 +500,7 @@ total_outstanding(const struct rte_distributor *d)
  * queued up.
  */
 int
-rte_distributor_flush_v1705(struct rte_distributor *d)
+rte_distributor_flush(struct rte_distributor *d)
 {
 	unsigned int flushed;
 	unsigned int wkr;
@@ -556,13 +529,10 @@ rte_distributor_flush_v1705(struct rte_distributor *d)
 
 	return flushed;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_flush, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_flush(struct rte_distributor *d),
-		rte_distributor_flush_v1705);
 
 /* clears the internal returns array in the distributor */
 void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d)
+rte_distributor_clear_returns(struct rte_distributor *d)
 {
 	unsigned int wkr;
 
@@ -576,13 +546,10 @@ rte_distributor_clear_returns_v1705(struct rte_distributor *d)
 	for (wkr = 0; wkr < d->num_workers; wkr++)
 		d->bufs[wkr].retptr64[0] = 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_clear_returns, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_clear_returns(struct rte_distributor *d),
-		rte_distributor_clear_returns_v1705);
 
 /* creates a distributor instance */
 struct rte_distributor *
-rte_distributor_create_v1705(const char *name,
+rte_distributor_create(const char *name,
 		unsigned int socket_id,
 		unsigned int num_workers,
 		unsigned int alg_type)
@@ -656,8 +623,3 @@ rte_distributor_create_v1705(const char *name,
 
 	return d;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_create, _v1705, 17.05);
-MAP_STATIC_SYMBOL(struct rte_distributor *rte_distributor_create(
-		const char *name, unsigned int socket_id,
-		unsigned int num_workers, unsigned int alg_type),
-		rte_distributor_create_v1705);
diff --git a/lib/librte_distributor/rte_distributor_v1705.h b/lib/librte_distributor/rte_distributor_v1705.h
deleted file mode 100644
index df4d9e8150..0000000000
--- a/lib/librte_distributor/rte_distributor_v1705.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2017 Intel Corporation
- */
-
-#ifndef _RTE_DISTRIB_V1705_H_
-#define _RTE_DISTRIB_V1705_H_
-
-/**
- * @file
- * RTE distributor
- *
- * The distributor is a component which is designed to pass packets
- * one-at-a-time to workers, with dynamic load balancing.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rte_distributor *
-rte_distributor_create_v1705(const char *name, unsigned int socket_id,
-		unsigned int num_workers,
-		unsigned int alg_type);
-
-int
-rte_distributor_process_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs);
-
-int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs);
-
-int
-rte_distributor_flush_v1705(struct rte_distributor *d);
-
-void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d);
-
-int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **pkts,
-	struct rte_mbuf **oldpkt, unsigned int retcount);
-
-int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **oldpkt, int num);
-
-void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count);
-
-int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **mbufs);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v2 07/10] lib: change function suffix in distributor
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (13 preceding siblings ...)
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 06/10] distributor: " Anatoly Burakov
@ 2019-10-16 12:43 ` Anatoly Burakov
  2019-10-16 13:18   ` Hunt, David
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
                   ` (2 subsequent siblings)
  17 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 12:43 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, David Hunt, john.mcnamara, bruce.richardson,
	thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

The functions and structures version 2.0 is
still in use in librte_distributor for single
packet mode but the version suffix "_v20" needs
to be changed to "_single" in order to avoid
confusion.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    Dave: do we still need this at all? Can we remove this?

 lib/librte_distributor/Makefile               |  2 +-
 lib/librte_distributor/meson.build            |  2 +-
 lib/librte_distributor/rte_distributor.c      | 24 +++++-----
 .../rte_distributor_private.h                 | 10 ++--
 ...ributor_v20.c => rte_distributor_single.c} | 48 +++++++++----------
 ...ributor_v20.h => rte_distributor_single.h} | 26 +++++-----
 6 files changed, 57 insertions(+), 55 deletions(-)
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (87%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)

diff --git a/lib/librte_distributor/Makefile b/lib/librte_distributor/Makefile
index 0ef80dcff4..d9d0089166 100644
--- a/lib/librte_distributor/Makefile
+++ b/lib/librte_distributor/Makefile
@@ -15,7 +15,7 @@ EXPORT_MAP := rte_distributor_version.map
 LIBABIVER := 1
 
 # all source are stored in SRCS-y
-SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_v20.c
+SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_single.c
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor.c
 ifeq ($(CONFIG_RTE_ARCH_X86),y)
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor_match_sse.c
diff --git a/lib/librte_distributor/meson.build b/lib/librte_distributor/meson.build
index dba7e3b2aa..bd12ddb2f1 100644
--- a/lib/librte_distributor/meson.build
+++ b/lib/librte_distributor/meson.build
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-sources = files('rte_distributor.c', 'rte_distributor_v20.c')
+sources = files('rte_distributor.c', 'rte_distributor_single.c')
 if arch_subdir == 'x86'
 	sources += files('rte_distributor_match_sse.c')
 else
diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index ca3f21b833..b4fc0bfead 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -18,7 +18,7 @@
 
 #include "rte_distributor_private.h"
 #include "rte_distributor.h"
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
 
@@ -42,7 +42,7 @@ rte_distributor_request_pkt(struct rte_distributor *d,
 	volatile int64_t *retptr64;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		rte_distributor_request_pkt_v20(d->d_v20,
+		rte_distributor_request_pkt_single(d->d_single,
 			worker_id, oldpkt[0]);
 		return;
 	}
@@ -88,7 +88,8 @@ rte_distributor_poll_pkt(struct rte_distributor *d,
 	unsigned int i;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		pkts[0] = rte_distributor_poll_pkt_v20(d->d_v20, worker_id);
+		pkts[0] = rte_distributor_poll_pkt_single(d->d_single,
+			worker_id);
 		return (pkts[0]) ? 1 : 0;
 	}
 
@@ -123,7 +124,7 @@ rte_distributor_get_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (return_count <= 1) {
-			pkts[0] = rte_distributor_get_pkt_v20(d->d_v20,
+			pkts[0] = rte_distributor_get_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 			return (pkts[0]) ? 1 : 0;
 		} else
@@ -153,7 +154,7 @@ rte_distributor_return_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (num == 1)
-			return rte_distributor_return_pkt_v20(d->d_v20,
+			return rte_distributor_return_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 		else
 			return -EINVAL;
@@ -330,7 +331,8 @@ rte_distributor_process(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_process_v20(d->d_v20, mbufs, num_mbufs);
+		return rte_distributor_process_single(d->d_single,
+			mbufs, num_mbufs);
 	}
 
 	if (unlikely(num_mbufs == 0)) {
@@ -464,7 +466,7 @@ rte_distributor_returned_pkts(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_returned_pkts_v20(d->d_v20,
+		return rte_distributor_returned_pkts_single(d->d_single,
 				mbufs, max_mbufs);
 	}
 
@@ -507,7 +509,7 @@ rte_distributor_flush(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_flush_v20(d->d_v20);
+		return rte_distributor_flush_single(d->d_single);
 	}
 
 	flushed = total_outstanding(d);
@@ -538,7 +540,7 @@ rte_distributor_clear_returns(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		rte_distributor_clear_returns_v20(d->d_v20);
+		rte_distributor_clear_returns_single(d->d_single);
 		return;
 	}
 
@@ -578,9 +580,9 @@ rte_distributor_create(const char *name,
 			rte_errno = ENOMEM;
 			return NULL;
 		}
-		d->d_v20 = rte_distributor_create_v20(name,
+		d->d_single = rte_distributor_create_single(name,
 				socket_id, num_workers);
-		if (d->d_v20 == NULL) {
+		if (d->d_single == NULL) {
 			free(d);
 			/* rte_errno will have been set */
 			return NULL;
diff --git a/lib/librte_distributor/rte_distributor_private.h b/lib/librte_distributor/rte_distributor_private.h
index 33cd89410c..bdb62b6e92 100644
--- a/lib/librte_distributor/rte_distributor_private.h
+++ b/lib/librte_distributor/rte_distributor_private.h
@@ -55,7 +55,7 @@ extern "C" {
  * the next cache line to worker 0, we pad this out to three cache lines.
  * Only 64-bits of the memory is actually used though.
  */
-union rte_distributor_buffer_v20 {
+union rte_distributor_buffer_single {
 	volatile int64_t bufptr64;
 	char pad[RTE_CACHE_LINE_SIZE*3];
 } __rte_cache_aligned;
@@ -80,8 +80,8 @@ struct rte_distributor_returned_pkts {
 	struct rte_mbuf *mbufs[RTE_DISTRIB_MAX_RETURNS];
 };
 
-struct rte_distributor_v20 {
-	TAILQ_ENTRY(rte_distributor_v20) next;    /**< Next in list. */
+struct rte_distributor_single {
+	TAILQ_ENTRY(rte_distributor_single) next;    /**< Next in list. */
 
 	char name[RTE_DISTRIBUTOR_NAMESIZE];  /**< Name of the ring. */
 	unsigned int num_workers;             /**< Number of workers polling */
@@ -96,7 +96,7 @@ struct rte_distributor_v20 {
 
 	struct rte_distributor_backlog backlog[RTE_DISTRIB_MAX_WORKERS];
 
-	union rte_distributor_buffer_v20 bufs[RTE_DISTRIB_MAX_WORKERS];
+	union rte_distributor_buffer_single bufs[RTE_DISTRIB_MAX_WORKERS];
 
 	struct rte_distributor_returned_pkts returns;
 };
@@ -154,7 +154,7 @@ struct rte_distributor {
 
 	enum rte_distributor_match_function dist_match_fn;
 
-	struct rte_distributor_v20 *d_v20;
+	struct rte_distributor_single *d_single;
 };
 
 void
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_single.c
similarity index 87%
rename from lib/librte_distributor/rte_distributor_v20.c
rename to lib/librte_distributor/rte_distributor_single.c
index cdc0969a89..8f44a94e68 100644
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ b/lib/librte_distributor/rte_distributor_single.c
@@ -15,10 +15,10 @@
 #include <rte_pause.h>
 #include <rte_tailq.h>
 
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 #include "rte_distributor_private.h"
 
-TAILQ_HEAD(rte_distributor_list, rte_distributor_v20);
+TAILQ_HEAD(rte_distributor_list, rte_distributor_single);
 
 static struct rte_tailq_elem rte_distributor_tailq = {
 	.name = "RTE_DISTRIBUTOR",
@@ -28,10 +28,10 @@ EAL_REGISTER_TAILQ(rte_distributor_tailq)
 /**** APIs called by workers ****/
 
 void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	int64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_GET_BUF;
 	while (unlikely(buf->bufptr64 & RTE_DISTRIB_FLAGS_MASK))
@@ -41,10 +41,10 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
 VERSION_SYMBOL(rte_distributor_request_pkt, _v20, 2.0);
 
 struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	if (buf->bufptr64 & RTE_DISTRIB_GET_BUF)
 		return NULL;
 
@@ -55,22 +55,22 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
 VERSION_SYMBOL(rte_distributor_poll_pkt, _v20, 2.0);
 
 struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
 	struct rte_mbuf *ret;
-	rte_distributor_request_pkt_v20(d, worker_id, oldpkt);
-	while ((ret = rte_distributor_poll_pkt_v20(d, worker_id)) == NULL)
+	rte_distributor_request_pkt_single(d, worker_id, oldpkt);
+	while ((ret = rte_distributor_poll_pkt_single(d, worker_id)) == NULL)
 		rte_pause();
 	return ret;
 }
 VERSION_SYMBOL(rte_distributor_get_pkt, _v20, 2.0);
 
 int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	uint64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_RETURN_BUF;
 	buf->bufptr64 = req;
@@ -102,7 +102,7 @@ backlog_pop(struct rte_distributor_backlog *bl)
 
 /* stores a packet returned from a worker inside the returns array */
 static inline void
-store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
+store_return(uintptr_t oldbuf, struct rte_distributor_single *d,
 		unsigned *ret_start, unsigned *ret_count)
 {
 	/* store returns in a circular buffer - code is branch-free */
@@ -113,7 +113,7 @@ store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
 }
 
 static inline void
-handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
+handle_worker_shutdown(struct rte_distributor_single *d, unsigned int wkr)
 {
 	d->in_flight_tags[wkr] = 0;
 	d->in_flight_bitmask &= ~(1UL << wkr);
@@ -143,7 +143,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
 		 * Note that the tags were set before first level call
 		 * to rte_distributor_process.
 		 */
-		rte_distributor_process_v20(d, pkts, i);
+		rte_distributor_process_single(d, pkts, i);
 		bl->count = bl->start = 0;
 	}
 }
@@ -153,7 +153,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
  * to do a partial flush.
  */
 static int
-process_returns(struct rte_distributor_v20 *d)
+process_returns(struct rte_distributor_single *d)
 {
 	unsigned wkr;
 	unsigned flushed = 0;
@@ -192,7 +192,7 @@ process_returns(struct rte_distributor_v20 *d)
 
 /* process a set of packets to distribute them to workers */
 int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned num_mbufs)
 {
 	unsigned next_idx = 0;
@@ -297,7 +297,7 @@ VERSION_SYMBOL(rte_distributor_process, _v20, 2.0);
 
 /* return to the caller, packets returned from workers */
 int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -320,7 +320,7 @@ VERSION_SYMBOL(rte_distributor_returned_pkts, _v20, 2.0);
  * being worked on or queued up in a backlog.
  */
 static inline unsigned
-total_outstanding(const struct rte_distributor_v20 *d)
+total_outstanding(const struct rte_distributor_single *d)
 {
 	unsigned wkr, total_outstanding;
 
@@ -335,12 +335,12 @@ total_outstanding(const struct rte_distributor_v20 *d)
 /* flush the distributor, so that there are no outstanding packets in flight or
  * queued up. */
 int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d)
+rte_distributor_flush_single(struct rte_distributor_single *d)
 {
 	const unsigned flushed = total_outstanding(d);
 
 	while (total_outstanding(d) > 0)
-		rte_distributor_process_v20(d, NULL, 0);
+		rte_distributor_process_single(d, NULL, 0);
 
 	return flushed;
 }
@@ -348,7 +348,7 @@ VERSION_SYMBOL(rte_distributor_flush, _v20, 2.0);
 
 /* clears the internal returns array in the distributor */
 void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
+rte_distributor_clear_returns_single(struct rte_distributor_single *d)
 {
 	d->returns.start = d->returns.count = 0;
 #ifndef __OPTIMIZE__
@@ -358,12 +358,12 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
 VERSION_SYMBOL(rte_distributor_clear_returns, _v20, 2.0);
 
 /* creates a distributor instance */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name,
 		unsigned socket_id,
 		unsigned num_workers)
 {
-	struct rte_distributor_v20 *d;
+	struct rte_distributor_single *d;
 	struct rte_distributor_list *distributor_list;
 	char mz_name[RTE_MEMZONE_NAMESIZE];
 	const struct rte_memzone *mz;
diff --git a/lib/librte_distributor/rte_distributor_v20.h b/lib/librte_distributor/rte_distributor_single.h
similarity index 89%
rename from lib/librte_distributor/rte_distributor_v20.h
rename to lib/librte_distributor/rte_distributor_single.h
index 12865658ba..2f80aa43d1 100644
--- a/lib/librte_distributor/rte_distributor_v20.h
+++ b/lib/librte_distributor/rte_distributor_single.h
@@ -2,8 +2,8 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
-#ifndef _RTE_DISTRIB_V20_H_
-#define _RTE_DISTRIB_V20_H_
+#ifndef _RTE_DISTRIB_SINGLE_H_
+#define _RTE_DISTRIB_SINGLE_H_
 
 /**
  * @file
@@ -19,7 +19,7 @@ extern "C" {
 
 #define RTE_DISTRIBUTOR_NAMESIZE 32 /**< Length of name for instance */
 
-struct rte_distributor_v20;
+struct rte_distributor_single;
 struct rte_mbuf;
 
 /**
@@ -38,8 +38,8 @@ struct rte_mbuf;
  * @return
  *   The newly created distributor instance
  */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name, unsigned int socket_id,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name, unsigned int socket_id,
 		unsigned int num_workers);
 
 /*  *** APIS to be called on the distributor lcore ***  */
@@ -74,7 +74,7 @@ rte_distributor_create_v20(const char *name, unsigned int socket_id,
  *   The number of mbufs processed.
  */
 int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs);
 
 /**
@@ -92,7 +92,7 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
  *   The number of mbufs returned in the mbufs array.
  */
 int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs);
 
 /**
@@ -107,7 +107,7 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
  *   The number of queued/in-flight packets that were completed by this call.
  */
 int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d);
+rte_distributor_flush_single(struct rte_distributor_single *d);
 
 /**
  * Clears the array of returned packets used as the source for the
@@ -119,7 +119,7 @@ rte_distributor_flush_v20(struct rte_distributor_v20 *d);
  *   The distributor instance to be used
  */
 void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
+rte_distributor_clear_returns_single(struct rte_distributor_single *d);
 
 /*  *** APIS to be called on the worker lcores ***  */
 /*
@@ -148,7 +148,7 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
  *   A new packet to be processed by the worker thread.
  */
 struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -164,7 +164,7 @@ rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet being processed by the worker
  */
 int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *mbuf);
 
 /**
@@ -188,7 +188,7 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet, if any, being processed by the worker
  */
 void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -208,7 +208,7 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
  *   packet is yet available.
  */
 struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id);
 
 #ifdef __cplusplus
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v2 08/10] drivers/octeontx: add missing public symbol
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (14 preceding siblings ...)
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 07/10] lib: change function suffix in distributor Anatoly Burakov
@ 2019-10-16 12:43 ` Anatoly Burakov
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 09/10] build: change ABI version to 20.0 Anatoly Burakov
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 10/10] buildtools: add ABI versioning check script Anatoly Burakov
  17 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 12:43 UTC (permalink / raw)
  To: dev
  Cc: Jerin Jacob, john.mcnamara, bruce.richardson, thomas,
	david.marchand, pbhagavatula, stable

The logtype symbol was missing from the .map file. Add it.

Fixes: d8dd31652cf4 ("common/octeontx: move mbox to common folder")
Cc: pbhagavatula@caviumnetworks.com
Cc: stable@dpdk.org

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - add this patch to avoid compile breakage when bumping ABI

 drivers/common/octeontx/rte_common_octeontx_version.map | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index f04b3b7f8a..a9b3cff9bc 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,6 +1,7 @@
 DPDK_18.05 {
 	global:
 
+	octeontx_logtype_mbox;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
 	octeontx_mbox_send;
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v2 09/10] build: change ABI version to 20.0
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (15 preceding siblings ...)
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
@ 2019-10-16 12:43 ` Anatoly Burakov
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 10/10] buildtools: add ABI versioning check script Anatoly Burakov
  17 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 12:43 UTC (permalink / raw)
  To: dev
  Cc: Pawel Modrak, Nicolas Chautru, Hemant Agrawal, Sachin Saxena,
	Rosen Xu, Stephen Hemminger, Anoob Joseph, Tomasz Duszynski,
	Liron Himi, Jerin Jacob, Nithin Dabilpuram, Vamsi Attunuru,
	Lee Daly, Fiona Trahe, Ashish Gupta, Sunila Sahu, Declan Doherty,
	Pablo de Lara, Gagandeep Singh, Ravi Kumar, Akhil Goyal,
	Michael Shamis, Nagadheeraj Rottela, Srikanth Jampala, Fan Zhang,
	Jay Zhou, Nipun Gupta, Mattias Rönnblom, Pavan Nikhilesh,
	Liang Ma, Peter Mccarthy, Harry van Haaren, Artem V. Andreev,
	Andrew Rybchenko, Olivier Matz, Gage Eads, John W. Linville,
	Xiaolong Ye, Qi Zhang, Shepard Siegel, Ed Czeck, John Miller,
	Igor Russkikh, Pavel Belous, Allain Legacy, Matt Peters,
	Rasesh Mody, Shahed Shaikh, Ajit Khaparde, Somnath Kotur,
	Chas Williams, Rahul Lakkireddy, Wenzhuo Lu, Marcin Wojtas,
	Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Igor Chauskin,
	John Daley, Hyong Youb Kim, Gaetan Rivet, Xiao Wang, Ziyang Xuan,
	Xiaoyun Wang, Guoyang Zhou, Wei Hu (Xavier), Min Hu (Connor),
	Yisen Zhuang, Beilei Xing, Jingjing Wu, Qiming Yang,
	Konstantin Ananyev, Ferruh Yigit, Shijith Thotton,
	Srisivasubramanian Srinivasan, Jakub Grajciar, Matan Azrad,
	Shahaf Shuler, Viacheslav Ovsiienko, Zyta Szpak,
	K. Y. Srinivasan, Haiyang Zhang, Rastislav Cernay, Jan Remes,
	Alejandro Lucero, Tetsuya Mukawa, Kiran Kumar K,
	Bruce Richardson, Jasvinder Singh, Cristian Dumitrescu,
	Keith Wiles, Maciej Czekaj, Maxime Coquelin, Tiwei Bie,
	Zhihong Wang, Yong Wang, Tianfei zhang, Xiaoyun Li, Satha Rao,
	Shreyansh Jain, David Hunt, Byron Marohn, Yipeng Wang,
	Thomas Monjalon, Bernard Iremonger, Jiayu Hu, Sameh Gobriel,
	Reshma Pattan, Vladimir Medvedkin, Honnappa Nagarahalli,
	Kevin Laatz, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Merge all vesions in linker version script files to DPDK_20.0.

This commit was generated by running the following command:

:~/DPDK$ buildtools/update-abi.sh 20.0

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - Regenerated this patch using the new script

 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |   8 +-
 .../null/rte_pmd_bbdev_null_version.map       |   2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |   2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     | 115 +++----
 drivers/bus/fslmc/rte_bus_fslmc_version.map   | 154 ++++-----
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |  14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |   2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |  12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |  12 +-
 drivers/common/cpt/rte_common_cpt_version.map |   4 +-
 .../common/dpaax/rte_common_dpaax_version.map |   4 +-
 .../common/mvep/rte_common_mvep_version.map   |   6 +-
 .../octeontx/rte_common_octeontx_version.map  |   6 +-
 .../rte_common_octeontx2_version.map          |  16 +-
 .../compress/isal/rte_pmd_isal_version.map    |   2 +-
 .../rte_pmd_octeontx_compress_version.map     |   2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |   2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |   2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |   2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |   2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |   2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |   3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |   3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |  10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |  10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |   2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |   2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |   2 +-
 .../null/rte_pmd_null_crypto_version.map      |   2 +-
 .../rte_pmd_octeontx_crypto_version.map       |   3 +-
 .../openssl/rte_pmd_openssl_version.map       |   2 +-
 .../rte_pmd_crypto_scheduler_version.map      |  19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |   2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |   2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |   2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |   3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |   2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |   2 +-
 .../rte_pmd_octeontx_event_version.map        |   2 +-
 .../rte_pmd_octeontx2_event_version.map       |   3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |   2 +-
 .../rte_pmd_skeleton_event_version.map        |   3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |   2 +-
 .../bucket/rte_mempool_bucket_version.map     |   3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |   2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |  12 +-
 .../octeontx/rte_mempool_octeontx_version.map |   2 +-
 .../rte_mempool_octeontx2_version.map         |   4 +-
 .../mempool/ring/rte_mempool_ring_version.map |   3 +-
 .../stack/rte_mempool_stack_version.map       |   3 +-
 .../af_packet/rte_pmd_af_packet_version.map   |   3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |   2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |   5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |   4 +-
 drivers/net/avp/rte_pmd_avp_version.map       |   2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |   2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |   3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |   4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |  47 +--
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |   3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |  11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |  12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |   3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |   3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |   3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |   3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |   3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |   3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |   3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |   4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |  65 ++--
 drivers/net/iavf/rte_pmd_iavf_version.map     |   3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |   3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |   3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |   3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |  62 ++--
 drivers/net/kni/rte_pmd_kni_version.map       |   3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |   3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |   5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |   3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |   2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |   2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |   2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |   4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |   3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |   2 +-
 drivers/net/null/rte_pmd_null_version.map     |   3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |  10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |   3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |   3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |   3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |  10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |   3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |   2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |   2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |   3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |   3 +-
 .../rte_pmd_vdev_netvsc_version.map           |   3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |  11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |   3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |   3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |   3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |   4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |   3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |   3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |   5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |   3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |   3 +-
 lib/librte_acl/rte_acl_version.map            |   2 +-
 lib/librte_bbdev/rte_bbdev_version.map        |   4 +
 .../rte_bitratestats_version.map              |   2 +-
 lib/librte_bpf/rte_bpf_version.map            |   4 +
 lib/librte_cfgfile/rte_cfgfile_version.map    |  34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |  10 +-
 .../rte_compressdev_version.map               |   4 +
 .../rte_cryptodev_version.map                 | 102 ++----
 .../rte_distributor_version.map               |  16 +-
 lib/librte_eal/rte_eal_version.map            | 310 +++++++-----------
 lib/librte_efd/rte_efd_version.map            |   2 +-
 lib/librte_ethdev/rte_ethdev_version.map      | 160 +++------
 lib/librte_eventdev/rte_eventdev_version.map  | 130 +++-----
 .../rte_flow_classify_version.map             |   4 +
 lib/librte_gro/rte_gro_version.map            |   2 +-
 lib/librte_gso/rte_gso_version.map            |   2 +-
 lib/librte_hash/rte_hash_version.map          |  43 +--
 lib/librte_ip_frag/rte_ip_frag_version.map    |  10 +-
 lib/librte_ipsec/rte_ipsec_version.map        |   4 +
 lib/librte_jobstats/rte_jobstats_version.map  |  10 +-
 lib/librte_kni/rte_kni_version.map            |   2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |   4 +-
 .../rte_latencystats_version.map              |   2 +-
 lib/librte_lpm/rte_lpm_version.map            |  39 +--
 lib/librte_mbuf/rte_mbuf_version.map          |  41 +--
 lib/librte_member/rte_member_version.map      |   2 +-
 lib/librte_mempool/rte_mempool_version.map    |  44 +--
 lib/librte_meter/rte_meter_version.map        |  13 +-
 lib/librte_metrics/rte_metrics_version.map    |   2 +-
 lib/librte_net/rte_net_version.map            |  23 +-
 lib/librte_pci/rte_pci_version.map            |   2 +-
 lib/librte_pdump/rte_pdump_version.map        |   2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |  36 +-
 lib/librte_port/rte_port_version.map          |  64 +---
 lib/librte_power/rte_power_version.map        |  24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |   4 +-
 lib/librte_rcu/rte_rcu_version.map            |   4 +
 lib/librte_reorder/rte_reorder_version.map    |   8 +-
 lib/librte_ring/rte_ring_version.map          |  10 +-
 lib/librte_sched/rte_sched_version.map        |  14 +-
 lib/librte_security/rte_security_version.map  |   2 +-
 lib/librte_stack/rte_stack_version.map        |   4 +
 lib/librte_table/rte_table_version.map        |   2 +-
 .../rte_telemetry_version.map                 |   4 +
 lib/librte_timer/rte_timer_version.map        |  12 +-
 lib/librte_vhost/rte_vhost_version.map        |  52 +--
 154 files changed, 721 insertions(+), 1413 deletions(-)

diff --git a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
index f64b0f9c27..6bcea2cc7f 100644
--- a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
+++ b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
@@ -1,10 +1,10 @@
-DPDK_19.08 {
-    local: *;
+DPDK_20.0 {
+	local: *;
 };
 
 EXPERIMENTAL {
-    global:
+	global:
 
-    fpga_lte_fec_configure;
+	fpga_lte_fec_configure;
 
 };
diff --git a/drivers/baseband/null/rte_pmd_bbdev_null_version.map b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/null/rte_pmd_bbdev_null_version.map
+++ b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
+++ b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map
index a221522c23..9ab8c76eef 100644
--- a/drivers/bus/dpaa/rte_bus_dpaa_version.map
+++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	bman_acquire;
@@ -8,127 +8,94 @@ DPDK_17.11 {
 	bman_new_pool;
 	bman_query_free_buffers;
 	bman_release;
+	bman_thread_irq;
+	dpaa_logtype_eventdev;
 	dpaa_logtype_mempool;
 	dpaa_logtype_pmd;
 	dpaa_netcfg;
+	dpaa_svr_family;
 	fman_ccsr_map_fd;
 	fman_dealloc_bufs_mask_hi;
 	fman_dealloc_bufs_mask_lo;
 	fman_if_add_mac_addr;
 	fman_if_clear_mac_addr;
 	fman_if_disable_rx;
-	fman_if_enable_rx;
 	fman_if_discard_rx_errors;
-	fman_if_get_fc_threshold;
+	fman_if_enable_rx;
 	fman_if_get_fc_quanta;
+	fman_if_get_fc_threshold;
 	fman_if_get_fdoff;
+	fman_if_get_sg_enable;
 	fman_if_loopback_disable;
 	fman_if_loopback_enable;
 	fman_if_promiscuous_disable;
 	fman_if_promiscuous_enable;
 	fman_if_reset_mcast_filter_table;
 	fman_if_set_bp;
-	fman_if_set_fc_threshold;
 	fman_if_set_fc_quanta;
+	fman_if_set_fc_threshold;
 	fman_if_set_fdoff;
 	fman_if_set_ic_params;
 	fman_if_set_maxfrm;
 	fman_if_set_mcast_filter_table;
+	fman_if_set_sg;
 	fman_if_stats_get;
 	fman_if_stats_get_all;
 	fman_if_stats_reset;
 	fman_ip_rev;
+	fsl_qman_fq_portal_create;
 	netcfg_acquire;
 	netcfg_release;
 	of_find_compatible_node;
+	of_get_mac_address;
 	of_get_property;
+	per_lcore_dpaa_io;
+	per_lcore_held_bufs;
 	qm_channel_caam;
+	qm_channel_pool1;
+	qman_alloc_cgrid_range;
+	qman_alloc_pool_range;
+	qman_clear_irq;
+	qman_create_cgr;
 	qman_create_fq;
+	qman_dca_index;
+	qman_delete_cgr;
 	qman_dequeue;
 	qman_dqrr_consume;
 	qman_enqueue;
 	qman_enqueue_multi;
+	qman_enqueue_multi_fq;
 	qman_fq_fqid;
+	qman_fq_portal_irqsource_add;
+	qman_fq_portal_irqsource_remove;
+	qman_fq_portal_thread_irq;
 	qman_fq_state;
 	qman_global_init;
 	qman_init_fq;
-	qman_poll_dqrr;
-	qman_query_fq_np;
-	qman_set_vdq;
-	qman_reserve_fqid_range;
-	qman_volatile_dequeue;
-	rte_dpaa_driver_register;
-	rte_dpaa_driver_unregister;
-	rte_dpaa_mem_ptov;
-	rte_dpaa_portal_init;
-
-	local: *;
-};
-
-DPDK_18.02 {
-	global:
-
-	dpaa_logtype_eventdev;
-	dpaa_svr_family;
-	per_lcore_dpaa_io;
-	per_lcore_held_bufs;
-	qm_channel_pool1;
-	qman_alloc_cgrid_range;
-	qman_alloc_pool_range;
-	qman_create_cgr;
-	qman_dca_index;
-	qman_delete_cgr;
-	qman_enqueue_multi_fq;
+	qman_irqsource_add;
+	qman_irqsource_remove;
 	qman_modify_cgr;
 	qman_oos_fq;
+	qman_poll_dqrr;
 	qman_portal_dequeue;
 	qman_portal_poll_rx;
 	qman_query_fq_frm_cnt;
+	qman_query_fq_np;
 	qman_release_cgrid_range;
+	qman_reserve_fqid_range;
 	qman_retire_fq;
+	qman_set_fq_lookup_table;
+	qman_set_vdq;
 	qman_static_dequeue_add;
-	rte_dpaa_portal_fq_close;
-	rte_dpaa_portal_fq_init;
-
-} DPDK_17.11;
-
-DPDK_18.08 {
-	global:
-
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-	of_get_mac_address;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-
-	bman_thread_irq;
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-	qman_clear_irq;
-
-	qman_irqsource_add;
-	qman_irqsource_remove;
 	qman_thread_fd;
 	qman_thread_irq;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	qman_set_fq_lookup_table;
-
-} DPDK_18.11;
-
-DPDK_19.11 {
-	global:
-
-	fsl_qman_fq_portal_create;
-	qman_fq_portal_irqsource_add;
-	qman_fq_portal_irqsource_remove;
-	qman_fq_portal_thread_irq;
-
-} DPDK_19.05;
+	qman_volatile_dequeue;
+	rte_dpaa_driver_register;
+	rte_dpaa_driver_unregister;
+	rte_dpaa_mem_ptov;
+	rte_dpaa_portal_fq_close;
+	rte_dpaa_portal_fq_init;
+	rte_dpaa_portal_init;
+
+	local: *;
+};
diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map
index 4da787236b..fe45575046 100644
--- a/drivers/bus/fslmc/rte_bus_fslmc_version.map
+++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map
@@ -1,32 +1,67 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
+	dpaa2_affine_qbman_ethrx_swp;
 	dpaa2_affine_qbman_swp;
 	dpaa2_alloc_dpbp_dev;
 	dpaa2_alloc_dq_storage;
+	dpaa2_dpbp_supported;
+	dpaa2_dqrr_size;
+	dpaa2_eqcr_size;
 	dpaa2_free_dpbp_dev;
 	dpaa2_free_dq_storage;
+	dpaa2_free_eq_descriptors;
+	dpaa2_get_qbman_swp;
+	dpaa2_io_portal;
+	dpaa2_svr_family;
+	dpaa2_virt_mode;
 	dpbp_disable;
 	dpbp_enable;
 	dpbp_get_attributes;
 	dpbp_get_num_free_bufs;
 	dpbp_open;
 	dpbp_reset;
+	dpci_get_opr;
+	dpci_set_opr;
+	dpci_set_rx_queue;
+	dpcon_get_attributes;
+	dpcon_open;
+	dpdmai_close;
+	dpdmai_disable;
+	dpdmai_enable;
+	dpdmai_get_attributes;
+	dpdmai_get_rx_queue;
+	dpdmai_get_tx_queue;
+	dpdmai_open;
+	dpdmai_set_rx_queue;
+	dpio_add_static_dequeue_channel;
 	dpio_close;
 	dpio_disable;
 	dpio_enable;
 	dpio_get_attributes;
 	dpio_open;
+	dpio_remove_static_dequeue_channel;
 	dpio_reset;
 	dpio_set_stashing_destination;
+	mc_get_soc_version;
+	mc_get_version;
 	mc_send_command;
 	per_lcore__dpaa2_io;
+	per_lcore_dpaa2_held_bufs;
 	qbman_check_command_complete;
+	qbman_check_new_result;
 	qbman_eq_desc_clear;
+	qbman_eq_desc_set_dca;
 	qbman_eq_desc_set_fq;
 	qbman_eq_desc_set_no_orp;
+	qbman_eq_desc_set_orp;
 	qbman_eq_desc_set_qd;
 	qbman_eq_desc_set_response;
+	qbman_eq_desc_set_token;
+	qbman_fq_query_state;
+	qbman_fq_state_frame_count;
+	qbman_get_dqrr_from_idx;
+	qbman_get_dqrr_idx;
 	qbman_pull_desc_clear;
 	qbman_pull_desc_set_fq;
 	qbman_pull_desc_set_numframes;
@@ -35,112 +70,43 @@ DPDK_17.05 {
 	qbman_release_desc_set_bpid;
 	qbman_result_DQ_fd;
 	qbman_result_DQ_flags;
-	qbman_result_has_new_result;
-	qbman_swp_acquire;
-	qbman_swp_pull;
-	qbman_swp_release;
-	rte_fslmc_driver_register;
-	rte_fslmc_driver_unregister;
-	rte_fslmc_vfio_dmamap;
-	rte_mcp_ptr_list;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	dpaa2_io_portal;
-	dpaa2_get_qbman_swp;
-	dpci_set_rx_queue;
-	dpcon_open;
-	dpcon_get_attributes;
-	dpio_add_static_dequeue_channel;
-	dpio_remove_static_dequeue_channel;
-	mc_get_soc_version;
-	mc_get_version;
-	qbman_check_new_result;
-	qbman_eq_desc_set_dca;
-	qbman_get_dqrr_from_idx;
-	qbman_get_dqrr_idx;
 	qbman_result_DQ_fqd_ctx;
+	qbman_result_DQ_odpid;
+	qbman_result_DQ_seqnum;
 	qbman_result_SCN_state;
+	qbman_result_eqresp_fd;
+	qbman_result_eqresp_rc;
+	qbman_result_eqresp_rspid;
+	qbman_result_eqresp_set_rspid;
+	qbman_result_has_new_result;
+	qbman_swp_acquire;
 	qbman_swp_dqrr_consume;
+	qbman_swp_dqrr_idx_consume;
 	qbman_swp_dqrr_next;
 	qbman_swp_enqueue_multiple;
 	qbman_swp_enqueue_multiple_desc;
+	qbman_swp_enqueue_multiple_fd;
 	qbman_swp_interrupt_clear_status;
+	qbman_swp_prefetch_dqrr_next;
+	qbman_swp_pull;
 	qbman_swp_push_set;
+	qbman_swp_release;
 	rte_dpaa2_alloc_dpci_dev;
-	rte_fslmc_object_register;
-	rte_global_active_dqs_list;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	dpaa2_dpbp_supported;
 	rte_dpaa2_dev_type;
+	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_intr_disable;
 	rte_dpaa2_intr_enable;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	dpaa2_svr_family;
-	dpaa2_virt_mode;
-	per_lcore_dpaa2_held_bufs;
-	qbman_fq_query_state;
-	qbman_fq_state_frame_count;
-	qbman_swp_dqrr_idx_consume;
-	qbman_swp_prefetch_dqrr_next;
-	rte_fslmc_get_device_count;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	dpaa2_affine_qbman_ethrx_swp;
-	dpdmai_close;
-	dpdmai_disable;
-	dpdmai_enable;
-	dpdmai_get_attributes;
-	dpdmai_get_rx_queue;
-	dpdmai_get_tx_queue;
-	dpdmai_open;
-	dpdmai_set_rx_queue;
-	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_memsegs;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-	dpaa2_dqrr_size;
-	dpaa2_eqcr_size;
-	dpci_get_opr;
-	dpci_set_opr;
-
-} DPDK_18.05;
-
-DPDK_19.05 {
-	global:
-	dpaa2_free_eq_descriptors;
-
-	qbman_eq_desc_set_orp;
-	qbman_eq_desc_set_token;
-	qbman_result_DQ_odpid;
-	qbman_result_DQ_seqnum;
-	qbman_result_eqresp_fd;
-	qbman_result_eqresp_rc;
-	qbman_result_eqresp_rspid;
-	qbman_result_eqresp_set_rspid;
-	qbman_swp_enqueue_multiple_fd;
-} DPDK_18.11;
+	rte_fslmc_driver_register;
+	rte_fslmc_driver_unregister;
+	rte_fslmc_get_device_count;
+	rte_fslmc_object_register;
+	rte_fslmc_vfio_dmamap;
+	rte_global_active_dqs_list;
+	rte_mcp_ptr_list;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/bus/ifpga/rte_bus_ifpga_version.map b/drivers/bus/ifpga/rte_bus_ifpga_version.map
index 964c9a9c45..05b4a28c1b 100644
--- a/drivers/bus/ifpga/rte_bus_ifpga_version.map
+++ b/drivers/bus/ifpga/rte_bus_ifpga_version.map
@@ -1,17 +1,11 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
-	rte_ifpga_get_integer32_arg;
-	rte_ifpga_get_string_arg;
 	rte_ifpga_driver_register;
 	rte_ifpga_driver_unregister;
+	rte_ifpga_find_afu_by_name;
+	rte_ifpga_get_integer32_arg;
+	rte_ifpga_get_string_arg;
 
 	local: *;
 };
-
-DPDK_19.05 {
-	global:
-
-	rte_ifpga_find_afu_by_name;
-
-} DPDK_18.05;
diff --git a/drivers/bus/pci/rte_bus_pci_version.map b/drivers/bus/pci/rte_bus_pci_version.map
index 27e9c4f101..012d817e14 100644
--- a/drivers/bus/pci/rte_bus_pci_version.map
+++ b/drivers/bus/pci/rte_bus_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pci_dump;
diff --git a/drivers/bus/vdev/rte_bus_vdev_version.map b/drivers/bus/vdev/rte_bus_vdev_version.map
index 590cf9b437..5abb10ecb0 100644
--- a/drivers/bus/vdev/rte_bus_vdev_version.map
+++ b/drivers/bus/vdev/rte_bus_vdev_version.map
@@ -1,18 +1,12 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
+	rte_vdev_add_custom_scan;
 	rte_vdev_init;
 	rte_vdev_register;
+	rte_vdev_remove_custom_scan;
 	rte_vdev_uninit;
 	rte_vdev_unregister;
 
 	local: *;
 };
-
-DPDK_18.02 {
-	global:
-
-	rte_vdev_add_custom_scan;
-	rte_vdev_remove_custom_scan;
-
-} DPDK_17.11;
diff --git a/drivers/bus/vmbus/rte_bus_vmbus_version.map b/drivers/bus/vmbus/rte_bus_vmbus_version.map
index ae231ad329..cbaaebc06c 100644
--- a/drivers/bus/vmbus/rte_bus_vmbus_version.map
+++ b/drivers/bus/vmbus/rte_bus_vmbus_version.map
@@ -1,6 +1,4 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_vmbus_chan_close;
@@ -20,6 +18,7 @@ DPDK_18.08 {
 	rte_vmbus_probe;
 	rte_vmbus_register;
 	rte_vmbus_scan;
+	rte_vmbus_set_latency;
 	rte_vmbus_sub_channel_index;
 	rte_vmbus_subchan_open;
 	rte_vmbus_unmap_device;
@@ -27,10 +26,3 @@ DPDK_18.08 {
 
 	local: *;
 };
-
-DPDK_18.11 {
-	global:
-
-	rte_vmbus_set_latency;
-
-} DPDK_18.08;
diff --git a/drivers/common/cpt/rte_common_cpt_version.map b/drivers/common/cpt/rte_common_cpt_version.map
index dec614f0de..79fa5751bc 100644
--- a/drivers/common/cpt/rte_common_cpt_version.map
+++ b/drivers/common/cpt/rte_common_cpt_version.map
@@ -1,6 +1,8 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	cpt_pmd_ops_helper_get_mlen_direct_mode;
 	cpt_pmd_ops_helper_get_mlen_sg_mode;
+
+	local: *;
 };
diff --git a/drivers/common/dpaax/rte_common_dpaax_version.map b/drivers/common/dpaax/rte_common_dpaax_version.map
index 8131c9e305..45d62aea9d 100644
--- a/drivers/common/dpaax/rte_common_dpaax_version.map
+++ b/drivers/common/dpaax/rte_common_dpaax_version.map
@@ -1,11 +1,11 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	dpaax_iova_table_update;
 	dpaax_iova_table_depopulate;
 	dpaax_iova_table_dump;
 	dpaax_iova_table_p;
 	dpaax_iova_table_populate;
+	dpaax_iova_table_update;
 
 	local: *;
 };
diff --git a/drivers/common/mvep/rte_common_mvep_version.map b/drivers/common/mvep/rte_common_mvep_version.map
index c71722d79f..030928439d 100644
--- a/drivers/common/mvep/rte_common_mvep_version.map
+++ b/drivers/common/mvep/rte_common_mvep_version.map
@@ -1,6 +1,8 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	rte_mvep_init;
 	rte_mvep_deinit;
+	rte_mvep_init;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index a9b3cff9bc..c15fb89112 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,8 +1,10 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
 	octeontx_logtype_mbox;
+	octeontx_mbox_send;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
-	octeontx_mbox_send;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx2/rte_common_octeontx2_version.map b/drivers/common/octeontx2/rte_common_octeontx2_version.map
index 4400120da0..adad21a2d6 100644
--- a/drivers/common/octeontx2/rte_common_octeontx2_version.map
+++ b/drivers/common/octeontx2/rte_common_octeontx2_version.map
@@ -1,39 +1,35 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	otx2_dev_active_vfs;
 	otx2_dev_fini;
 	otx2_dev_priv_init;
-
+	otx2_disable_irqs;
+	otx2_intra_dev_get_cfg;
 	otx2_logtype_base;
 	otx2_logtype_dpi;
 	otx2_logtype_mbox;
+	otx2_logtype_nix;
 	otx2_logtype_npa;
 	otx2_logtype_npc;
-	otx2_logtype_nix;
 	otx2_logtype_sso;
-	otx2_logtype_tm;
 	otx2_logtype_tim;
-
+	otx2_logtype_tm;
 	otx2_mbox_alloc_msg_rsp;
 	otx2_mbox_get_rsp;
 	otx2_mbox_get_rsp_tmo;
 	otx2_mbox_id2name;
 	otx2_mbox_msg_send;
 	otx2_mbox_wait_for_rsp;
-
-	otx2_intra_dev_get_cfg;
 	otx2_npa_lf_active;
 	otx2_npa_lf_obj_get;
 	otx2_npa_lf_obj_ref;
 	otx2_npa_pf_func_get;
 	otx2_npa_set_defaults;
+	otx2_register_irq;
 	otx2_sso_pf_func_get;
 	otx2_sso_pf_func_set;
-
-	otx2_disable_irqs;
 	otx2_unregister_irq;
-	otx2_register_irq;
 
 	local: *;
 };
diff --git a/drivers/compress/isal/rte_pmd_isal_version.map b/drivers/compress/isal/rte_pmd_isal_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/compress/isal/rte_pmd_isal_version.map
+++ b/drivers/compress/isal/rte_pmd_isal_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
+++ b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/qat/rte_pmd_qat_version.map b/drivers/compress/qat/rte_pmd_qat_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/qat/rte_pmd_qat_version.map
+++ b/drivers/compress/qat/rte_pmd_qat_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/zlib/rte_pmd_zlib_version.map b/drivers/compress/zlib/rte_pmd_zlib_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/zlib/rte_pmd_zlib_version.map
+++ b/drivers/compress/zlib/rte_pmd_zlib_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
+++ b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
+++ b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/armv8/rte_pmd_armv8_version.map b/drivers/crypto/armv8/rte_pmd_armv8_version.map
index 1f84b68a83..f9f17e4f6e 100644
--- a/drivers/crypto/armv8/rte_pmd_armv8_version.map
+++ b/drivers/crypto/armv8/rte_pmd_armv8_version.map
@@ -1,3 +1,3 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
+++ b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/ccp/rte_pmd_ccp_version.map b/drivers/crypto/ccp/rte_pmd_ccp_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/crypto/ccp/rte_pmd_ccp_version.map
+++ b/drivers/crypto/ccp/rte_pmd_ccp_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
index 0bfb986d0b..5952d645fd 100644
--- a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
+++ b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_sec_eventq_attach;
 	dpaa2_sec_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
index cc7f2162e0..8580fa13db 100644
--- a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
+++ b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_19.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa_sec_eventq_attach;
 	dpaa_sec_eventq_detach;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
index 8ffeca934e..f9f17e4f6e 100644
--- a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
+++ b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
@@ -1,3 +1,3 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
+++ b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
index 406964d1fc..f9f17e4f6e 100644
--- a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
+++ b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/null/rte_pmd_null_crypto_version.map b/drivers/crypto/null/rte_pmd_null_crypto_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/null/rte_pmd_null_crypto_version.map
+++ b/drivers/crypto/null/rte_pmd_null_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
+++ b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/openssl/rte_pmd_openssl_version.map b/drivers/crypto/openssl/rte_pmd_openssl_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/openssl/rte_pmd_openssl_version.map
+++ b/drivers/crypto/openssl/rte_pmd_openssl_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
index 5c43127cf2..077afedce7 100644
--- a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
+++ b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
@@ -1,21 +1,16 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_cryptodev_scheduler_load_user_scheduler;
-	rte_cryptodev_scheduler_slave_attach;
-	rte_cryptodev_scheduler_slave_detach;
-	rte_cryptodev_scheduler_ordering_set;
-	rte_cryptodev_scheduler_ordering_get;
-
-};
-
-DPDK_17.05 {
-	global:
-
 	rte_cryptodev_scheduler_mode_get;
 	rte_cryptodev_scheduler_mode_set;
 	rte_cryptodev_scheduler_option_get;
 	rte_cryptodev_scheduler_option_set;
+	rte_cryptodev_scheduler_ordering_get;
+	rte_cryptodev_scheduler_ordering_set;
+	rte_cryptodev_scheduler_slave_attach;
+	rte_cryptodev_scheduler_slave_detach;
 	rte_cryptodev_scheduler_slaves_get;
 
-} DPDK_17.02;
+	local: *;
+};
diff --git a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
+++ b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
+++ b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/zuc/rte_pmd_zuc_version.map b/drivers/crypto/zuc/rte_pmd_zuc_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/zuc/rte_pmd_zuc_version.map
+++ b/drivers/crypto/zuc/rte_pmd_zuc_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
+++ b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
index 1c0b7559dc..f9f17e4f6e 100644
--- a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
+++ b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dsw/rte_pmd_dsw_event_version.map b/drivers/event/dsw/rte_pmd_dsw_event_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/event/dsw/rte_pmd_dsw_event_version.map
+++ b/drivers/event/dsw/rte_pmd_dsw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
+++ b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
index 41c65c8c9c..f9f17e4f6e 100644
--- a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
+++ b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	local: *;
 };
-
diff --git a/drivers/event/opdl/rte_pmd_opdl_event_version.map b/drivers/event/opdl/rte_pmd_opdl_event_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/event/opdl/rte_pmd_opdl_event_version.map
+++ b/drivers/event/opdl/rte_pmd_opdl_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
+++ b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/sw/rte_pmd_sw_event_version.map b/drivers/event/sw/rte_pmd_sw_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/sw/rte_pmd_sw_event_version.map
+++ b/drivers/event/sw/rte_pmd_sw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/bucket/rte_mempool_bucket_version.map b/drivers/mempool/bucket/rte_mempool_bucket_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/mempool/bucket/rte_mempool_bucket_version.map
+++ b/drivers/mempool/bucket/rte_mempool_bucket_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
index 60bf50b2d1..9eebaf7ffd 100644
--- a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
+++ b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa_bpid_info;
diff --git a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
index b45e7a9ac1..cd4bc88273 100644
--- a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
+++ b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
@@ -1,16 +1,10 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa2_bpid_info;
 	rte_dpaa2_mbuf_alloc_bulk;
-
-	local: *;
-};
-
-DPDK_18.05 {
-	global:
-
 	rte_dpaa2_mbuf_from_buf_addr;
 	rte_dpaa2_mbuf_pool_bpid;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
+++ b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
index d703368c31..d4f81aed8e 100644
--- a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
+++ b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
@@ -1,8 +1,8 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
-	otx2_npa_lf_init;
 	otx2_npa_lf_fini;
+	otx2_npa_lf_init;
 
 	local: *;
 };
diff --git a/drivers/mempool/ring/rte_mempool_ring_version.map b/drivers/mempool/ring/rte_mempool_ring_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/ring/rte_mempool_ring_version.map
+++ b/drivers/mempool/ring/rte_mempool_ring_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/stack/rte_mempool_stack_version.map b/drivers/mempool/stack/rte_mempool_stack_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/stack/rte_mempool_stack_version.map
+++ b/drivers/mempool/stack/rte_mempool_stack_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_packet/rte_pmd_af_packet_version.map b/drivers/net/af_packet/rte_pmd_af_packet_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/af_packet/rte_pmd_af_packet_version.map
+++ b/drivers/net/af_packet/rte_pmd_af_packet_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
index c6db030fe6..f9f17e4f6e 100644
--- a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
+++ b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
@@ -1,3 +1,3 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ark/rte_pmd_ark_version.map b/drivers/net/ark/rte_pmd_ark_version.map
index 1062e0429f..f9f17e4f6e 100644
--- a/drivers/net/ark/rte_pmd_ark_version.map
+++ b/drivers/net/ark/rte_pmd_ark_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-	 local: *;
-
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/atlantic/rte_pmd_atlantic_version.map b/drivers/net/atlantic/rte_pmd_atlantic_version.map
index b16faa999f..9b04838d84 100644
--- a/drivers/net/atlantic/rte_pmd_atlantic_version.map
+++ b/drivers/net/atlantic/rte_pmd_atlantic_version.map
@@ -1,5 +1,4 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
 
@@ -13,4 +12,3 @@ EXPERIMENTAL {
 	rte_pmd_atl_macsec_select_txsa;
 	rte_pmd_atl_macsec_select_rxsa;
 };
-
diff --git a/drivers/net/avp/rte_pmd_avp_version.map b/drivers/net/avp/rte_pmd_avp_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/net/avp/rte_pmd_avp_version.map
+++ b/drivers/net/avp/rte_pmd_avp_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/axgbe/rte_pmd_axgbe_version.map b/drivers/net/axgbe/rte_pmd_axgbe_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/net/axgbe/rte_pmd_axgbe_version.map
+++ b/drivers/net/axgbe/rte_pmd_axgbe_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
+++ b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnxt/rte_pmd_bnxt_version.map b/drivers/net/bnxt/rte_pmd_bnxt_version.map
index 4750d40ad6..bb52562347 100644
--- a/drivers/net/bnxt/rte_pmd_bnxt_version.map
+++ b/drivers/net/bnxt/rte_pmd_bnxt_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_bnxt_get_vf_rx_status;
@@ -10,13 +10,13 @@ DPDK_17.08 {
 	rte_pmd_bnxt_set_tx_loopback;
 	rte_pmd_bnxt_set_vf_mac_addr;
 	rte_pmd_bnxt_set_vf_mac_anti_spoof;
+	rte_pmd_bnxt_set_vf_persist_stats;
 	rte_pmd_bnxt_set_vf_rate_limit;
 	rte_pmd_bnxt_set_vf_rxmode;
 	rte_pmd_bnxt_set_vf_vlan_anti_spoof;
 	rte_pmd_bnxt_set_vf_vlan_filter;
 	rte_pmd_bnxt_set_vf_vlan_insert;
 	rte_pmd_bnxt_set_vf_vlan_stripq;
-	rte_pmd_bnxt_set_vf_persist_stats;
 
 	local: *;
 };
diff --git a/drivers/net/bonding/rte_pmd_bond_version.map b/drivers/net/bonding/rte_pmd_bond_version.map
index 00d955c481..270c7d5d55 100644
--- a/drivers/net/bonding/rte_pmd_bond_version.map
+++ b/drivers/net/bonding/rte_pmd_bond_version.map
@@ -1,9 +1,21 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_bond_8023ad_agg_selection_get;
+	rte_eth_bond_8023ad_agg_selection_set;
+	rte_eth_bond_8023ad_conf_get;
+	rte_eth_bond_8023ad_dedicated_queues_disable;
+	rte_eth_bond_8023ad_dedicated_queues_enable;
+	rte_eth_bond_8023ad_ext_collect;
+	rte_eth_bond_8023ad_ext_collect_get;
+	rte_eth_bond_8023ad_ext_distrib;
+	rte_eth_bond_8023ad_ext_distrib_get;
+	rte_eth_bond_8023ad_ext_slowtx;
+	rte_eth_bond_8023ad_setup;
 	rte_eth_bond_8023ad_slave_info;
 	rte_eth_bond_active_slaves_get;
 	rte_eth_bond_create;
+	rte_eth_bond_free;
 	rte_eth_bond_link_monitoring_set;
 	rte_eth_bond_mac_address_reset;
 	rte_eth_bond_mac_address_set;
@@ -19,36 +31,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	rte_eth_bond_free;
-
-} DPDK_2.0;
-
-DPDK_16.04 {
-};
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_bond_8023ad_ext_collect;
-	rte_eth_bond_8023ad_ext_collect_get;
-	rte_eth_bond_8023ad_ext_distrib;
-	rte_eth_bond_8023ad_ext_distrib_get;
-	rte_eth_bond_8023ad_ext_slowtx;
-
-} DPDK_16.04;
-
-DPDK_17.08 {
-	global:
-
-	rte_eth_bond_8023ad_dedicated_queues_enable;
-	rte_eth_bond_8023ad_dedicated_queues_disable;
-	rte_eth_bond_8023ad_agg_selection_get;
-	rte_eth_bond_8023ad_agg_selection_set;
-	rte_eth_bond_8023ad_conf_get;
-	rte_eth_bond_8023ad_setup;
-
-} DPDK_16.07;
diff --git a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
+++ b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/dpaa/rte_pmd_dpaa_version.map b/drivers/net/dpaa/rte_pmd_dpaa_version.map
index 8cb4500b51..f403a1526d 100644
--- a/drivers/net/dpaa/rte_pmd_dpaa_version.map
+++ b/drivers/net/dpaa/rte_pmd_dpaa_version.map
@@ -1,12 +1,9 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	dpaa_eth_eventq_attach;
 	dpaa_eth_eventq_detach;
 	rte_pmd_dpaa_set_tx_loopback;
-} DPDK_17.11;
+
+	local: *;
+};
diff --git a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
index d1b4cdb232..f2bb793319 100644
--- a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
+++ b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
@@ -1,15 +1,11 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_eth_eventq_attach;
 	dpaa2_eth_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
@@ -17,4 +13,4 @@ EXPERIMENTAL {
 	rte_pmd_dpaa2_mux_flow_create;
 	rte_pmd_dpaa2_set_custom_hash;
 	rte_pmd_dpaa2_set_timestamp;
-} DPDK_17.11;
+};
diff --git a/drivers/net/e1000/rte_pmd_e1000_version.map b/drivers/net/e1000/rte_pmd_e1000_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/e1000/rte_pmd_e1000_version.map
+++ b/drivers/net/e1000/rte_pmd_e1000_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ena/rte_pmd_ena_version.map b/drivers/net/ena/rte_pmd_ena_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/ena/rte_pmd_ena_version.map
+++ b/drivers/net/ena/rte_pmd_ena_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enetc/rte_pmd_enetc_version.map b/drivers/net/enetc/rte_pmd_enetc_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/net/enetc/rte_pmd_enetc_version.map
+++ b/drivers/net/enetc/rte_pmd_enetc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enic/rte_pmd_enic_version.map b/drivers/net/enic/rte_pmd_enic_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/enic/rte_pmd_enic_version.map
+++ b/drivers/net/enic/rte_pmd_enic_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/failsafe/rte_pmd_failsafe_version.map b/drivers/net/failsafe/rte_pmd_failsafe_version.map
index b6d2840be4..f9f17e4f6e 100644
--- a/drivers/net/failsafe/rte_pmd_failsafe_version.map
+++ b/drivers/net/failsafe/rte_pmd_failsafe_version.map
@@ -1,4 +1,3 @@
-DPDK_17.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/fm10k/rte_pmd_fm10k_version.map b/drivers/net/fm10k/rte_pmd_fm10k_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/fm10k/rte_pmd_fm10k_version.map
+++ b/drivers/net/fm10k/rte_pmd_fm10k_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hinic/rte_pmd_hinic_version.map b/drivers/net/hinic/rte_pmd_hinic_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/hinic/rte_pmd_hinic_version.map
+++ b/drivers/net/hinic/rte_pmd_hinic_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map b/drivers/net/hns3/rte_pmd_hns3_version.map
index 35e5f2debb..f9f17e4f6e 100644
--- a/drivers/net/hns3/rte_pmd_hns3_version.map
+++ b/drivers/net/hns3/rte_pmd_hns3_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
-	 local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/i40e/rte_pmd_i40e_version.map b/drivers/net/i40e/rte_pmd_i40e_version.map
index cccd5768c2..a80e69b93e 100644
--- a/drivers/net/i40e/rte_pmd_i40e_version.map
+++ b/drivers/net/i40e/rte_pmd_i40e_version.map
@@ -1,23 +1,34 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_i40e_add_vf_mac_addr;
+	rte_pmd_i40e_flow_add_del_packet_template;
+	rte_pmd_i40e_flow_type_mapping_get;
+	rte_pmd_i40e_flow_type_mapping_reset;
+	rte_pmd_i40e_flow_type_mapping_update;
+	rte_pmd_i40e_get_ddp_info;
+	rte_pmd_i40e_get_ddp_list;
 	rte_pmd_i40e_get_vf_stats;
+	rte_pmd_i40e_inset_get;
+	rte_pmd_i40e_inset_set;
 	rte_pmd_i40e_ping_vfs;
+	rte_pmd_i40e_process_ddp_package;
 	rte_pmd_i40e_ptype_mapping_get;
 	rte_pmd_i40e_ptype_mapping_replace;
 	rte_pmd_i40e_ptype_mapping_reset;
 	rte_pmd_i40e_ptype_mapping_update;
+	rte_pmd_i40e_query_vfid_by_mac;
 	rte_pmd_i40e_reset_vf_stats;
+	rte_pmd_i40e_rss_queue_region_conf;
+	rte_pmd_i40e_set_tc_strict_prio;
 	rte_pmd_i40e_set_tx_loopback;
 	rte_pmd_i40e_set_vf_broadcast;
 	rte_pmd_i40e_set_vf_mac_addr;
 	rte_pmd_i40e_set_vf_mac_anti_spoof;
+	rte_pmd_i40e_set_vf_max_bw;
 	rte_pmd_i40e_set_vf_multicast_promisc;
+	rte_pmd_i40e_set_vf_tc_bw_alloc;
+	rte_pmd_i40e_set_vf_tc_max_bw;
 	rte_pmd_i40e_set_vf_unicast_promisc;
 	rte_pmd_i40e_set_vf_vlan_anti_spoof;
 	rte_pmd_i40e_set_vf_vlan_filter;
@@ -25,43 +36,5 @@ DPDK_17.02 {
 	rte_pmd_i40e_set_vf_vlan_stripq;
 	rte_pmd_i40e_set_vf_vlan_tag;
 
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_pmd_i40e_set_tc_strict_prio;
-	rte_pmd_i40e_set_vf_max_bw;
-	rte_pmd_i40e_set_vf_tc_bw_alloc;
-	rte_pmd_i40e_set_vf_tc_max_bw;
-	rte_pmd_i40e_process_ddp_package;
-	rte_pmd_i40e_get_ddp_list;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_i40e_get_ddp_info;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_pmd_i40e_add_vf_mac_addr;
-	rte_pmd_i40e_flow_add_del_packet_template;
-	rte_pmd_i40e_flow_type_mapping_update;
-	rte_pmd_i40e_flow_type_mapping_get;
-	rte_pmd_i40e_flow_type_mapping_reset;
-	rte_pmd_i40e_query_vfid_by_mac;
-	rte_pmd_i40e_rss_queue_region_conf;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_pmd_i40e_inset_get;
-	rte_pmd_i40e_inset_set;
-} DPDK_17.11;
\ No newline at end of file
+	local: *;
+};
diff --git a/drivers/net/iavf/rte_pmd_iavf_version.map b/drivers/net/iavf/rte_pmd_iavf_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/iavf/rte_pmd_iavf_version.map
+++ b/drivers/net/iavf/rte_pmd_iavf_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ice/rte_pmd_ice_version.map b/drivers/net/ice/rte_pmd_ice_version.map
index 7b23b609da..f9f17e4f6e 100644
--- a/drivers/net/ice/rte_pmd_ice_version.map
+++ b/drivers/net/ice/rte_pmd_ice_version.map
@@ -1,4 +1,3 @@
-DPDK_19.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ifc/rte_pmd_ifc_version.map b/drivers/net/ifc/rte_pmd_ifc_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/net/ifc/rte_pmd_ifc_version.map
+++ b/drivers/net/ifc/rte_pmd_ifc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
+++ b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
index c814f96d72..21534dbc3d 100644
--- a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
+++ b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
-	rte_pmd_ixgbe_set_all_queues_drop_en;
-	rte_pmd_ixgbe_set_tx_loopback;
-	rte_pmd_ixgbe_set_vf_mac_addr;
-	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
-	rte_pmd_ixgbe_set_vf_split_drop_en;
-	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
-	rte_pmd_ixgbe_set_vf_vlan_insert;
-	rte_pmd_ixgbe_set_vf_vlan_stripq;
-} DPDK_2.0;
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_ixgbe_bypass_event_show;
+	rte_pmd_ixgbe_bypass_event_store;
+	rte_pmd_ixgbe_bypass_init;
+	rte_pmd_ixgbe_bypass_state_set;
+	rte_pmd_ixgbe_bypass_state_show;
+	rte_pmd_ixgbe_bypass_ver_show;
+	rte_pmd_ixgbe_bypass_wd_reset;
+	rte_pmd_ixgbe_bypass_wd_timeout_show;
+	rte_pmd_ixgbe_bypass_wd_timeout_store;
 	rte_pmd_ixgbe_macsec_config_rxsc;
 	rte_pmd_ixgbe_macsec_config_txsc;
 	rte_pmd_ixgbe_macsec_disable;
 	rte_pmd_ixgbe_macsec_enable;
 	rte_pmd_ixgbe_macsec_select_rxsa;
 	rte_pmd_ixgbe_macsec_select_txsa;
+	rte_pmd_ixgbe_ping_vf;
+	rte_pmd_ixgbe_set_all_queues_drop_en;
+	rte_pmd_ixgbe_set_tc_bw_alloc;
+	rte_pmd_ixgbe_set_tx_loopback;
+	rte_pmd_ixgbe_set_vf_mac_addr;
+	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
 	rte_pmd_ixgbe_set_vf_rate_limit;
 	rte_pmd_ixgbe_set_vf_rx;
 	rte_pmd_ixgbe_set_vf_rxmode;
+	rte_pmd_ixgbe_set_vf_split_drop_en;
 	rte_pmd_ixgbe_set_vf_tx;
+	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
 	rte_pmd_ixgbe_set_vf_vlan_filter;
-} DPDK_16.11;
+	rte_pmd_ixgbe_set_vf_vlan_insert;
+	rte_pmd_ixgbe_set_vf_vlan_stripq;
 
-DPDK_17.05 {
-	global:
-
-	rte_pmd_ixgbe_ping_vf;
-	rte_pmd_ixgbe_set_tc_bw_alloc;
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_ixgbe_bypass_event_show;
-	rte_pmd_ixgbe_bypass_event_store;
-	rte_pmd_ixgbe_bypass_init;
-	rte_pmd_ixgbe_bypass_state_set;
-	rte_pmd_ixgbe_bypass_state_show;
-	rte_pmd_ixgbe_bypass_ver_show;
-	rte_pmd_ixgbe_bypass_wd_reset;
-	rte_pmd_ixgbe_bypass_wd_timeout_show;
-	rte_pmd_ixgbe_bypass_wd_timeout_store;
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/net/kni/rte_pmd_kni_version.map b/drivers/net/kni/rte_pmd_kni_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/kni/rte_pmd_kni_version.map
+++ b/drivers/net/kni/rte_pmd_kni_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/liquidio/rte_pmd_liquidio_version.map b/drivers/net/liquidio/rte_pmd_liquidio_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/liquidio/rte_pmd_liquidio_version.map
+++ b/drivers/net/liquidio/rte_pmd_liquidio_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/memif/rte_pmd_memif_version.map b/drivers/net/memif/rte_pmd_memif_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/net/memif/rte_pmd_memif_version.map
+++ b/drivers/net/memif/rte_pmd_memif_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/mlx4/rte_pmd_mlx4_version.map b/drivers/net/mlx4/rte_pmd_mlx4_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/mlx4/rte_pmd_mlx4_version.map
+++ b/drivers/net/mlx4/rte_pmd_mlx4_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mlx5/rte_pmd_mlx5_version.map b/drivers/net/mlx5/rte_pmd_mlx5_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/mlx5/rte_pmd_mlx5_version.map
+++ b/drivers/net/mlx5/rte_pmd_mlx5_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvneta/rte_pmd_mvneta_version.map b/drivers/net/mvneta/rte_pmd_mvneta_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/net/mvneta/rte_pmd_mvneta_version.map
+++ b/drivers/net/mvneta/rte_pmd_mvneta_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
+++ b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/netvsc/rte_pmd_netvsc_version.map b/drivers/net/netvsc/rte_pmd_netvsc_version.map
index d534019a6b..f9f17e4f6e 100644
--- a/drivers/net/netvsc/rte_pmd_netvsc_version.map
+++ b/drivers/net/netvsc/rte_pmd_netvsc_version.map
@@ -1,5 +1,3 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfb/rte_pmd_nfb_version.map b/drivers/net/nfb/rte_pmd_nfb_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/nfb/rte_pmd_nfb_version.map
+++ b/drivers/net/nfb/rte_pmd_nfb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfp/rte_pmd_nfp_version.map b/drivers/net/nfp/rte_pmd_nfp_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/nfp/rte_pmd_nfp_version.map
+++ b/drivers/net/nfp/rte_pmd_nfp_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/null/rte_pmd_null_version.map b/drivers/net/null/rte_pmd_null_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/null/rte_pmd_null_version.map
+++ b/drivers/net/null/rte_pmd_null_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/octeontx/rte_pmd_octeontx_version.map b/drivers/net/octeontx/rte_pmd_octeontx_version.map
index a3161b14d0..f7cae02fac 100644
--- a/drivers/net/octeontx/rte_pmd_octeontx_version.map
+++ b/drivers/net/octeontx/rte_pmd_octeontx_version.map
@@ -1,11 +1,7 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.02 {
+DPDK_20.0 {
 	global:
 
 	rte_octeontx_pchan_map;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
+++ b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/pcap/rte_pmd_pcap_version.map b/drivers/net/pcap/rte_pmd_pcap_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/pcap/rte_pmd_pcap_version.map
+++ b/drivers/net/pcap/rte_pmd_pcap_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/qede/rte_pmd_qede_version.map b/drivers/net/qede/rte_pmd_qede_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/qede/rte_pmd_qede_version.map
+++ b/drivers/net/qede/rte_pmd_qede_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ring/rte_pmd_ring_version.map b/drivers/net/ring/rte_pmd_ring_version.map
index 1f785d9409..ebb6be2733 100644
--- a/drivers/net/ring/rte_pmd_ring_version.map
+++ b/drivers/net/ring/rte_pmd_ring_version.map
@@ -1,14 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_from_ring;
 	rte_eth_from_rings;
 
 	local: *;
 };
-
-DPDK_2.2 {
-	global:
-
-	rte_eth_from_ring;
-
-} DPDK_2.0;
diff --git a/drivers/net/sfc/rte_pmd_sfc_version.map b/drivers/net/sfc/rte_pmd_sfc_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/sfc/rte_pmd_sfc_version.map
+++ b/drivers/net/sfc/rte_pmd_sfc_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/softnic/rte_pmd_softnic_version.map b/drivers/net/softnic/rte_pmd_softnic_version.map
index bc44b06f98..50f113d5a2 100644
--- a/drivers/net/softnic/rte_pmd_softnic_version.map
+++ b/drivers/net/softnic/rte_pmd_softnic_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_softnic_run;
diff --git a/drivers/net/szedata2/rte_pmd_szedata2_version.map b/drivers/net/szedata2/rte_pmd_szedata2_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/szedata2/rte_pmd_szedata2_version.map
+++ b/drivers/net/szedata2/rte_pmd_szedata2_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/tap/rte_pmd_tap_version.map b/drivers/net/tap/rte_pmd_tap_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/tap/rte_pmd_tap_version.map
+++ b/drivers/net/tap/rte_pmd_tap_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/thunderx/rte_pmd_thunderx_version.map b/drivers/net/thunderx/rte_pmd_thunderx_version.map
index 1901bcb3b3..f9f17e4f6e 100644
--- a/drivers/net/thunderx/rte_pmd_thunderx_version.map
+++ b/drivers/net/thunderx/rte_pmd_thunderx_version.map
@@ -1,4 +1,3 @@
-DPDK_16.07 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
+++ b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vhost/rte_pmd_vhost_version.map b/drivers/net/vhost/rte_pmd_vhost_version.map
index 695db85749..16b591ccc4 100644
--- a/drivers/net/vhost/rte_pmd_vhost_version.map
+++ b/drivers/net/vhost/rte_pmd_vhost_version.map
@@ -1,13 +1,8 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_vhost_get_queue_event;
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
 	rte_eth_vhost_get_vid_from_port_id;
+
+	local: *;
 };
diff --git a/drivers/net/virtio/rte_pmd_virtio_version.map b/drivers/net/virtio/rte_pmd_virtio_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/virtio/rte_pmd_virtio_version.map
+++ b/drivers/net/virtio/rte_pmd_virtio_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
+++ b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
+++ b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
index d16a136fc8..ca6a0d7626 100644
--- a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
+++ b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
@@ -1,4 +1,4 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	global:
 
 	rte_qdma_attr_get;
@@ -9,9 +9,9 @@ DPDK_19.05 {
 	rte_qdma_start;
 	rte_qdma_stop;
 	rte_qdma_vq_create;
-	rte_qdma_vq_destroy;
 	rte_qdma_vq_dequeue;
 	rte_qdma_vq_dequeue_multi;
+	rte_qdma_vq_destroy;
 	rte_qdma_vq_enqueue;
 	rte_qdma_vq_enqueue_multi;
 	rte_qdma_vq_stats;
diff --git a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
+++ b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ioat/rte_rawdev_ioat_version.map b/drivers/raw/ioat/rte_rawdev_ioat_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/ioat/rte_rawdev_ioat_version.map
+++ b/drivers/raw/ioat/rte_rawdev_ioat_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ntb/rte_rawdev_ntb_version.map b/drivers/raw/ntb/rte_rawdev_ntb_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/raw/ntb/rte_rawdev_ntb_version.map
+++ b/drivers/raw/ntb/rte_rawdev_ntb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
+++ b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
+++ b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/lib/librte_acl/rte_acl_version.map b/lib/librte_acl/rte_acl_version.map
index b09370a104..c3daca8115 100644
--- a/lib/librte_acl/rte_acl_version.map
+++ b/lib/librte_acl/rte_acl_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_acl_add_rules;
diff --git a/lib/librte_bbdev/rte_bbdev_version.map b/lib/librte_bbdev/rte_bbdev_version.map
index 3624eb1cb4..45b560dbe7 100644
--- a/lib/librte_bbdev/rte_bbdev_version.map
+++ b/lib/librte_bbdev/rte_bbdev_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_bitratestats/rte_bitratestats_version.map b/lib/librte_bitratestats/rte_bitratestats_version.map
index fe7454452d..88fc2912db 100644
--- a/lib/librte_bitratestats/rte_bitratestats_version.map
+++ b/lib/librte_bitratestats/rte_bitratestats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_stats_bitrate_calc;
diff --git a/lib/librte_bpf/rte_bpf_version.map b/lib/librte_bpf/rte_bpf_version.map
index a203e088ea..e1ec43faa0 100644
--- a/lib/librte_bpf/rte_bpf_version.map
+++ b/lib/librte_bpf/rte_bpf_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_cfgfile/rte_cfgfile_version.map b/lib/librte_cfgfile/rte_cfgfile_version.map
index a0a11cea8d..906eee96bf 100644
--- a/lib/librte_cfgfile/rte_cfgfile_version.map
+++ b/lib/librte_cfgfile/rte_cfgfile_version.map
@@ -1,40 +1,22 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_cfgfile_add_entry;
+	rte_cfgfile_add_section;
 	rte_cfgfile_close;
+	rte_cfgfile_create;
 	rte_cfgfile_get_entry;
 	rte_cfgfile_has_entry;
 	rte_cfgfile_has_section;
 	rte_cfgfile_load;
+	rte_cfgfile_load_with_params;
 	rte_cfgfile_num_sections;
+	rte_cfgfile_save;
 	rte_cfgfile_section_entries;
+	rte_cfgfile_section_entries_by_index;
 	rte_cfgfile_section_num_entries;
 	rte_cfgfile_sections;
+	rte_cfgfile_set_entry;
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_cfgfile_section_entries_by_index;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_cfgfile_load_with_params;
-
-} DPDK_16.04;
-
-DPDK_17.11 {
-	global:
-
-	rte_cfgfile_add_entry;
-	rte_cfgfile_add_section;
-	rte_cfgfile_create;
-	rte_cfgfile_save;
-	rte_cfgfile_set_entry;
-
-} DPDK_17.05;
diff --git a/lib/librte_cmdline/rte_cmdline_version.map b/lib/librte_cmdline/rte_cmdline_version.map
index 04bcb387f2..95fce812ff 100644
--- a/lib/librte_cmdline/rte_cmdline_version.map
+++ b/lib/librte_cmdline/rte_cmdline_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	cirbuf_add_buf_head;
@@ -40,6 +40,7 @@ DPDK_2.0 {
 	cmdline_parse_num;
 	cmdline_parse_portlist;
 	cmdline_parse_string;
+	cmdline_poll;
 	cmdline_printf;
 	cmdline_quit;
 	cmdline_set_prompt;
@@ -68,10 +69,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	cmdline_poll;
-
-} DPDK_2.0;
diff --git a/lib/librte_compressdev/rte_compressdev_version.map b/lib/librte_compressdev/rte_compressdev_version.map
index e2a108b650..cfcd50ac1c 100644
--- a/lib/librte_compressdev/rte_compressdev_version.map
+++ b/lib/librte_compressdev/rte_compressdev_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map
index 3deb265ac2..1dd1e259a0 100644
--- a/lib/librte_cryptodev/rte_cryptodev_version.map
+++ b/lib/librte_cryptodev/rte_cryptodev_version.map
@@ -1,92 +1,62 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
-	rte_cryptodevs;
+	rte_crypto_aead_algorithm_strings;
+	rte_crypto_aead_operation_strings;
+	rte_crypto_auth_algorithm_strings;
+	rte_crypto_auth_operation_strings;
+	rte_crypto_cipher_algorithm_strings;
+	rte_crypto_cipher_operation_strings;
+	rte_crypto_op_pool_create;
+	rte_cryptodev_allocate_driver;
 	rte_cryptodev_callback_register;
 	rte_cryptodev_callback_unregister;
 	rte_cryptodev_close;
-	rte_cryptodev_count;
 	rte_cryptodev_configure;
+	rte_cryptodev_count;
+	rte_cryptodev_device_count_by_driver;
+	rte_cryptodev_devices_get;
+	rte_cryptodev_driver_id_get;
+	rte_cryptodev_driver_name_get;
+	rte_cryptodev_get_aead_algo_enum;
+	rte_cryptodev_get_auth_algo_enum;
+	rte_cryptodev_get_cipher_algo_enum;
 	rte_cryptodev_get_dev_id;
 	rte_cryptodev_get_feature_name;
+	rte_cryptodev_get_sec_ctx;
 	rte_cryptodev_info_get;
+	rte_cryptodev_name_get;
 	rte_cryptodev_pmd_allocate;
 	rte_cryptodev_pmd_callback_process;
+	rte_cryptodev_pmd_create;
+	rte_cryptodev_pmd_create_dev_name;
+	rte_cryptodev_pmd_destroy;
+	rte_cryptodev_pmd_get_dev;
+	rte_cryptodev_pmd_get_named_dev;
+	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_pmd_parse_input_args;
 	rte_cryptodev_pmd_release_device;
-	rte_cryptodev_sym_session_create;
-	rte_cryptodev_sym_session_free;
+	rte_cryptodev_queue_pair_count;
+	rte_cryptodev_queue_pair_setup;
 	rte_cryptodev_socket_id;
 	rte_cryptodev_start;
 	rte_cryptodev_stats_get;
 	rte_cryptodev_stats_reset;
 	rte_cryptodev_stop;
-	rte_cryptodev_queue_pair_count;
-	rte_cryptodev_queue_pair_setup;
-	rte_crypto_op_pool_create;
-
-	local: *;
-};
-
-DPDK_17.02 {
-	global:
-
-	rte_cryptodev_devices_get;
-	rte_cryptodev_pmd_create_dev_name;
-	rte_cryptodev_pmd_get_dev;
-	rte_cryptodev_pmd_get_named_dev;
-	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_sym_capability_check_aead;
 	rte_cryptodev_sym_capability_check_auth;
 	rte_cryptodev_sym_capability_check_cipher;
 	rte_cryptodev_sym_capability_get;
-	rte_crypto_auth_algorithm_strings;
-	rte_crypto_auth_operation_strings;
-	rte_crypto_cipher_algorithm_strings;
-	rte_crypto_cipher_operation_strings;
-
-} DPDK_16.04;
-
-DPDK_17.05 {
-	global:
-
-	rte_cryptodev_get_auth_algo_enum;
-	rte_cryptodev_get_cipher_algo_enum;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_cryptodev_allocate_driver;
-	rte_cryptodev_device_count_by_driver;
-	rte_cryptodev_driver_id_get;
-	rte_cryptodev_driver_name_get;
-	rte_cryptodev_get_aead_algo_enum;
-	rte_cryptodev_sym_capability_check_aead;
-	rte_cryptodev_sym_session_init;
-	rte_cryptodev_sym_session_clear;
-	rte_crypto_aead_algorithm_strings;
-	rte_crypto_aead_operation_strings;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_cryptodev_get_sec_ctx;
-	rte_cryptodev_name_get;
-	rte_cryptodev_pmd_create;
-	rte_cryptodev_pmd_destroy;
-	rte_cryptodev_pmd_parse_input_args;
-
-} DPDK_17.08;
-
-DPDK_18.05 {
-	global:
-
 	rte_cryptodev_sym_get_header_session_size;
 	rte_cryptodev_sym_get_private_session_size;
+	rte_cryptodev_sym_session_clear;
+	rte_cryptodev_sym_session_create;
+	rte_cryptodev_sym_session_free;
+	rte_cryptodev_sym_session_init;
+	rte_cryptodevs;
 
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 3a285b394e..1b7c643005 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_distributor_clear_returns;
@@ -13,17 +13,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_17.05 {
-	global:
-
-	rte_distributor_clear_returns;
-	rte_distributor_create;
-	rte_distributor_flush;
-	rte_distributor_get_pkt;
-	rte_distributor_poll_pkt;
-	rte_distributor_process;
-	rte_distributor_request_pkt;
-	rte_distributor_return_pkt;
-	rte_distributor_returned_pkts;
-} DPDK_2.0;
diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map
index 7cbf82d37b..8c41999317 100644
--- a/lib/librte_eal/rte_eal_version.map
+++ b/lib/librte_eal/rte_eal_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	__rte_panic;
@@ -7,46 +7,111 @@ DPDK_2.0 {
 	lcore_config;
 	per_lcore__lcore_id;
 	per_lcore__rte_errno;
+	rte_bus_dump;
+	rte_bus_find;
+	rte_bus_find_by_device;
+	rte_bus_find_by_name;
+	rte_bus_get_iommu_class;
+	rte_bus_probe;
+	rte_bus_register;
+	rte_bus_scan;
+	rte_bus_unregister;
 	rte_calloc;
 	rte_calloc_socket;
 	rte_cpu_check_supported;
 	rte_cpu_get_flag_enabled;
+	rte_cpu_get_flag_name;
+	rte_cpu_is_supported;
+	rte_ctrl_thread_create;
 	rte_cycles_vmware_tsc_map;
 	rte_delay_us;
+	rte_delay_us_block;
+	rte_delay_us_callback_register;
+	rte_dev_is_probed;
+	rte_dev_probe;
+	rte_dev_remove;
+	rte_devargs_add;
+	rte_devargs_dump;
+	rte_devargs_insert;
+	rte_devargs_next;
+	rte_devargs_parse;
+	rte_devargs_parsef;
+	rte_devargs_remove;
+	rte_devargs_type_count;
 	rte_dump_physmem_layout;
 	rte_dump_registers;
 	rte_dump_stack;
 	rte_dump_tailq;
 	rte_eal_alarm_cancel;
 	rte_eal_alarm_set;
+	rte_eal_cleanup;
+	rte_eal_create_uio_dev;
 	rte_eal_get_configuration;
 	rte_eal_get_lcore_state;
 	rte_eal_get_physmem_size;
+	rte_eal_get_runtime_dir;
 	rte_eal_has_hugepages;
+	rte_eal_has_pci;
+	rte_eal_hotplug_add;
+	rte_eal_hotplug_remove;
 	rte_eal_hpet_init;
 	rte_eal_init;
 	rte_eal_iopl_init;
+	rte_eal_iova_mode;
 	rte_eal_lcore_role;
+	rte_eal_mbuf_user_pool_ops;
 	rte_eal_mp_remote_launch;
 	rte_eal_mp_wait_lcore;
+	rte_eal_primary_proc_alive;
 	rte_eal_process_type;
 	rte_eal_remote_launch;
 	rte_eal_tailq_lookup;
 	rte_eal_tailq_register;
+	rte_eal_using_phys_addrs;
+	rte_eal_vfio_intr_mode;
 	rte_eal_wait_lcore;
+	rte_epoll_ctl;
+	rte_epoll_wait;
 	rte_exit;
 	rte_free;
 	rte_get_hpet_cycles;
 	rte_get_hpet_hz;
 	rte_get_tsc_hz;
 	rte_hexdump;
+	rte_hypervisor_get;
+	rte_hypervisor_get_name;
+	rte_intr_allow_others;
 	rte_intr_callback_register;
 	rte_intr_callback_unregister;
+	rte_intr_cap_multiple;
 	rte_intr_disable;
+	rte_intr_dp_is_en;
+	rte_intr_efd_disable;
+	rte_intr_efd_enable;
 	rte_intr_enable;
+	rte_intr_free_epoll_fd;
+	rte_intr_rx_ctl;
+	rte_intr_tls_epfd;
+	rte_keepalive_create;
+	rte_keepalive_dispatch_pings;
+	rte_keepalive_mark_alive;
+	rte_keepalive_mark_sleep;
+	rte_keepalive_register_core;
+	rte_keepalive_register_relay_callback;
+	rte_lcore_has_role;
+	rte_lcore_index;
+	rte_lcore_to_socket_id;
 	rte_log;
 	rte_log_cur_msg_loglevel;
 	rte_log_cur_msg_logtype;
+	rte_log_dump;
+	rte_log_get_global_level;
+	rte_log_get_level;
+	rte_log_register;
+	rte_log_set_global_level;
+	rte_log_set_level;
+	rte_log_set_level_pattern;
+	rte_log_set_level_regexp;
 	rte_logs;
 	rte_malloc;
 	rte_malloc_dump_stats;
@@ -54,155 +119,38 @@ DPDK_2.0 {
 	rte_malloc_set_limit;
 	rte_malloc_socket;
 	rte_malloc_validate;
+	rte_malloc_virt2iova;
+	rte_mcfg_mem_read_lock;
+	rte_mcfg_mem_read_unlock;
+	rte_mcfg_mem_write_lock;
+	rte_mcfg_mem_write_unlock;
+	rte_mcfg_mempool_read_lock;
+	rte_mcfg_mempool_read_unlock;
+	rte_mcfg_mempool_write_lock;
+	rte_mcfg_mempool_write_unlock;
+	rte_mcfg_tailq_read_lock;
+	rte_mcfg_tailq_read_unlock;
+	rte_mcfg_tailq_write_lock;
+	rte_mcfg_tailq_write_unlock;
 	rte_mem_lock_page;
+	rte_mem_virt2iova;
 	rte_mem_virt2phy;
 	rte_memdump;
 	rte_memory_get_nchannel;
 	rte_memory_get_nrank;
 	rte_memzone_dump;
+	rte_memzone_free;
 	rte_memzone_lookup;
 	rte_memzone_reserve;
 	rte_memzone_reserve_aligned;
 	rte_memzone_reserve_bounded;
 	rte_memzone_walk;
 	rte_openlog_stream;
+	rte_rand;
 	rte_realloc;
-	rte_set_application_usage_hook;
-	rte_socket_id;
-	rte_strerror;
-	rte_strsplit;
-	rte_sys_gettid;
-	rte_thread_get_affinity;
-	rte_thread_set_affinity;
-	rte_vlog;
-	rte_zmalloc;
-	rte_zmalloc_socket;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_epoll_ctl;
-	rte_epoll_wait;
-	rte_intr_allow_others;
-	rte_intr_dp_is_en;
-	rte_intr_efd_disable;
-	rte_intr_efd_enable;
-	rte_intr_rx_ctl;
-	rte_intr_tls_epfd;
-	rte_memzone_free;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_intr_cap_multiple;
-	rte_keepalive_create;
-	rte_keepalive_dispatch_pings;
-	rte_keepalive_mark_alive;
-	rte_keepalive_register_core;
-
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_cpu_get_flag_name;
-	rte_eal_primary_proc_alive;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_keepalive_mark_sleep;
-	rte_keepalive_register_relay_callback;
-	rte_rtm_supported;
-	rte_thread_setname;
-
-} DPDK_16.04;
-
-DPDK_16.11 {
-	global:
-
-	rte_delay_us_block;
-	rte_delay_us_callback_register;
-
-} DPDK_16.07;
-
-DPDK_17.02 {
-	global:
-
-	rte_bus_dump;
-	rte_bus_probe;
-	rte_bus_register;
-	rte_bus_scan;
-	rte_bus_unregister;
-
-} DPDK_16.11;
-
-DPDK_17.05 {
-	global:
-
-	rte_cpu_is_supported;
-	rte_intr_free_epoll_fd;
-	rte_log_dump;
-	rte_log_get_global_level;
-	rte_log_register;
-	rte_log_set_global_level;
-	rte_log_set_level;
-	rte_log_set_level_regexp;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_bus_find;
-	rte_bus_find_by_device;
-	rte_bus_find_by_name;
-	rte_log_get_level;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eal_create_uio_dev;
-	rte_bus_get_iommu_class;
-	rte_eal_has_pci;
-	rte_eal_iova_mode;
-	rte_eal_using_phys_addrs;
-	rte_eal_vfio_intr_mode;
-	rte_lcore_has_role;
-	rte_malloc_virt2iova;
-	rte_mem_virt2iova;
-	rte_vfio_enable;
-	rte_vfio_is_enabled;
-	rte_vfio_noiommu_is_enabled;
-	rte_vfio_release_device;
-	rte_vfio_setup_device;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_hypervisor_get;
-	rte_hypervisor_get_name;
-	rte_vfio_clear_group;
 	rte_reciprocal_value;
 	rte_reciprocal_value_u64;
-
-}  DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_log_set_level_pattern;
+	rte_rtm_supported;
 	rte_service_attr_get;
 	rte_service_attr_reset_all;
 	rte_service_component_register;
@@ -215,6 +163,8 @@ DPDK_18.05 {
 	rte_service_get_count;
 	rte_service_get_name;
 	rte_service_lcore_add;
+	rte_service_lcore_attr_get;
+	rte_service_lcore_attr_reset_all;
 	rte_service_lcore_count;
 	rte_service_lcore_count_services;
 	rte_service_lcore_del;
@@ -224,6 +174,7 @@ DPDK_18.05 {
 	rte_service_lcore_stop;
 	rte_service_map_lcore_get;
 	rte_service_map_lcore_set;
+	rte_service_may_be_active;
 	rte_service_probe_capability;
 	rte_service_run_iter_on_app_lcore;
 	rte_service_runstate_get;
@@ -231,17 +182,23 @@ DPDK_18.05 {
 	rte_service_set_runstate_mapped_check;
 	rte_service_set_stats_enable;
 	rte_service_start_with_defaults;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eal_mbuf_user_pool_ops;
+	rte_set_application_usage_hook;
+	rte_socket_count;
+	rte_socket_id;
+	rte_socket_id_by_idx;
+	rte_srand;
+	rte_strerror;
+	rte_strscpy;
+	rte_strsplit;
+	rte_sys_gettid;
+	rte_thread_get_affinity;
+	rte_thread_set_affinity;
+	rte_thread_setname;
 	rte_uuid_compare;
 	rte_uuid_is_null;
 	rte_uuid_parse;
 	rte_uuid_unparse;
+	rte_vfio_clear_group;
 	rte_vfio_container_create;
 	rte_vfio_container_destroy;
 	rte_vfio_container_dma_map;
@@ -250,67 +207,20 @@ DPDK_18.08 {
 	rte_vfio_container_group_unbind;
 	rte_vfio_dma_map;
 	rte_vfio_dma_unmap;
+	rte_vfio_enable;
 	rte_vfio_get_container_fd;
 	rte_vfio_get_group_fd;
 	rte_vfio_get_group_num;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_dev_probe;
-	rte_dev_remove;
-	rte_eal_get_runtime_dir;
-	rte_eal_hotplug_add;
-	rte_eal_hotplug_remove;
-	rte_strscpy;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_ctrl_thread_create;
-	rte_dev_is_probed;
-	rte_devargs_add;
-	rte_devargs_dump;
-	rte_devargs_insert;
-	rte_devargs_next;
-	rte_devargs_parse;
-	rte_devargs_parsef;
-	rte_devargs_remove;
-	rte_devargs_type_count;
-	rte_eal_cleanup;
-	rte_socket_count;
-	rte_socket_id_by_idx;
-
-} DPDK_18.11;
-
-DPDK_19.08 {
-	global:
-
-	rte_lcore_index;
-	rte_lcore_to_socket_id;
-	rte_mcfg_mem_read_lock;
-	rte_mcfg_mem_read_unlock;
-	rte_mcfg_mem_write_lock;
-	rte_mcfg_mem_write_unlock;
-	rte_mcfg_mempool_read_lock;
-	rte_mcfg_mempool_read_unlock;
-	rte_mcfg_mempool_write_lock;
-	rte_mcfg_mempool_write_unlock;
-	rte_mcfg_tailq_read_lock;
-	rte_mcfg_tailq_read_unlock;
-	rte_mcfg_tailq_write_lock;
-	rte_mcfg_tailq_write_unlock;
-	rte_rand;
-	rte_service_lcore_attr_get;
-	rte_service_lcore_attr_reset_all;
-	rte_service_may_be_active;
-	rte_srand;
-
-} DPDK_19.05;
+	rte_vfio_is_enabled;
+	rte_vfio_noiommu_is_enabled;
+	rte_vfio_release_device;
+	rte_vfio_setup_device;
+	rte_vlog;
+	rte_zmalloc;
+	rte_zmalloc_socket;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_efd/rte_efd_version.map b/lib/librte_efd/rte_efd_version.map
index ae60a64178..e010eecfe4 100644
--- a/lib/librte_efd/rte_efd_version.map
+++ b/lib/librte_efd/rte_efd_version.map
@@ -1,4 +1,4 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_efd_create;
diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map
index 6df42a47b8..9e1dbdebb4 100644
--- a/lib/librte_ethdev/rte_ethdev_version.map
+++ b/lib/librte_ethdev/rte_ethdev_version.map
@@ -1,35 +1,53 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	global:
 
+	_rte_eth_dev_callback_process;
+	_rte_eth_dev_reset;
+	rte_eth_add_first_rx_callback;
 	rte_eth_add_rx_callback;
 	rte_eth_add_tx_callback;
 	rte_eth_allmulticast_disable;
 	rte_eth_allmulticast_enable;
 	rte_eth_allmulticast_get;
+	rte_eth_dev_adjust_nb_rx_tx_desc;
 	rte_eth_dev_allocate;
 	rte_eth_dev_allocated;
+	rte_eth_dev_attach_secondary;
 	rte_eth_dev_callback_register;
 	rte_eth_dev_callback_unregister;
 	rte_eth_dev_close;
 	rte_eth_dev_configure;
 	rte_eth_dev_count;
+	rte_eth_dev_count_avail;
+	rte_eth_dev_count_total;
 	rte_eth_dev_default_mac_addr_set;
+	rte_eth_dev_filter_ctrl;
 	rte_eth_dev_filter_supported;
 	rte_eth_dev_flow_ctrl_get;
 	rte_eth_dev_flow_ctrl_set;
+	rte_eth_dev_fw_version_get;
 	rte_eth_dev_get_dcb_info;
 	rte_eth_dev_get_eeprom;
 	rte_eth_dev_get_eeprom_length;
 	rte_eth_dev_get_mtu;
+	rte_eth_dev_get_name_by_port;
+	rte_eth_dev_get_port_by_name;
 	rte_eth_dev_get_reg_info;
+	rte_eth_dev_get_sec_ctx;
+	rte_eth_dev_get_supported_ptypes;
 	rte_eth_dev_get_vlan_offload;
-	rte_eth_devices;
 	rte_eth_dev_info_get;
 	rte_eth_dev_is_valid_port;
+	rte_eth_dev_l2_tunnel_eth_type_conf;
+	rte_eth_dev_l2_tunnel_offload_set;
+	rte_eth_dev_logtype;
 	rte_eth_dev_mac_addr_add;
 	rte_eth_dev_mac_addr_remove;
+	rte_eth_dev_pool_ops_supported;
 	rte_eth_dev_priority_flow_ctrl_set;
+	rte_eth_dev_probing_finish;
 	rte_eth_dev_release_port;
+	rte_eth_dev_reset;
 	rte_eth_dev_rss_hash_conf_get;
 	rte_eth_dev_rss_hash_update;
 	rte_eth_dev_rss_reta_query;
@@ -38,6 +56,7 @@ DPDK_2.2 {
 	rte_eth_dev_rx_intr_ctl_q;
 	rte_eth_dev_rx_intr_disable;
 	rte_eth_dev_rx_intr_enable;
+	rte_eth_dev_rx_offload_name;
 	rte_eth_dev_rx_queue_start;
 	rte_eth_dev_rx_queue_stop;
 	rte_eth_dev_set_eeprom;
@@ -47,18 +66,28 @@ DPDK_2.2 {
 	rte_eth_dev_set_mtu;
 	rte_eth_dev_set_rx_queue_stats_mapping;
 	rte_eth_dev_set_tx_queue_stats_mapping;
+	rte_eth_dev_set_vlan_ether_type;
 	rte_eth_dev_set_vlan_offload;
 	rte_eth_dev_set_vlan_pvid;
 	rte_eth_dev_set_vlan_strip_on_queue;
 	rte_eth_dev_socket_id;
 	rte_eth_dev_start;
 	rte_eth_dev_stop;
+	rte_eth_dev_tx_offload_name;
 	rte_eth_dev_tx_queue_start;
 	rte_eth_dev_tx_queue_stop;
 	rte_eth_dev_uc_all_hash_table_set;
 	rte_eth_dev_uc_hash_table_set;
+	rte_eth_dev_udp_tunnel_port_add;
+	rte_eth_dev_udp_tunnel_port_delete;
 	rte_eth_dev_vlan_filter;
+	rte_eth_devices;
 	rte_eth_dma_zone_reserve;
+	rte_eth_find_next;
+	rte_eth_find_next_owned_by;
+	rte_eth_iterator_cleanup;
+	rte_eth_iterator_init;
+	rte_eth_iterator_next;
 	rte_eth_led_off;
 	rte_eth_led_on;
 	rte_eth_link;
@@ -75,6 +104,7 @@ DPDK_2.2 {
 	rte_eth_rx_queue_info_get;
 	rte_eth_rx_queue_setup;
 	rte_eth_set_queue_rate_limit;
+	rte_eth_speed_bitflag;
 	rte_eth_stats;
 	rte_eth_stats_get;
 	rte_eth_stats_reset;
@@ -85,66 +115,27 @@ DPDK_2.2 {
 	rte_eth_timesync_read_time;
 	rte_eth_timesync_read_tx_timestamp;
 	rte_eth_timesync_write_time;
-	rte_eth_tx_queue_info_get;
-	rte_eth_tx_queue_setup;
-	rte_eth_xstats_get;
-	rte_eth_xstats_reset;
-
-	local: *;
-};
-
-DPDK_16.04 {
-	global:
-
-	rte_eth_dev_get_supported_ptypes;
-	rte_eth_dev_l2_tunnel_eth_type_conf;
-	rte_eth_dev_l2_tunnel_offload_set;
-	rte_eth_dev_set_vlan_ether_type;
-	rte_eth_dev_udp_tunnel_port_add;
-	rte_eth_dev_udp_tunnel_port_delete;
-	rte_eth_speed_bitflag;
 	rte_eth_tx_buffer_count_callback;
 	rte_eth_tx_buffer_drop_callback;
 	rte_eth_tx_buffer_init;
 	rte_eth_tx_buffer_set_err_callback;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_add_first_rx_callback;
-	rte_eth_dev_get_name_by_port;
-	rte_eth_dev_get_port_by_name;
-	rte_eth_xstats_get_names;
-
-} DPDK_16.04;
-
-DPDK_17.02 {
-	global:
-
-	_rte_eth_dev_reset;
-	rte_eth_dev_fw_version_get;
-
-} DPDK_16.07;
-
-DPDK_17.05 {
-	global:
-
-	rte_eth_dev_attach_secondary;
-	rte_eth_find_next;
 	rte_eth_tx_done_cleanup;
+	rte_eth_tx_queue_info_get;
+	rte_eth_tx_queue_setup;
+	rte_eth_xstats_get;
 	rte_eth_xstats_get_by_id;
 	rte_eth_xstats_get_id_by_name;
+	rte_eth_xstats_get_names;
 	rte_eth_xstats_get_names_by_id;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	_rte_eth_dev_callback_process;
-	rte_eth_dev_adjust_nb_rx_tx_desc;
+	rte_eth_xstats_reset;
+	rte_flow_copy;
+	rte_flow_create;
+	rte_flow_destroy;
+	rte_flow_error_set;
+	rte_flow_flush;
+	rte_flow_isolate;
+	rte_flow_query;
+	rte_flow_validate;
 	rte_tm_capabilities_get;
 	rte_tm_get_number_of_leaf_nodes;
 	rte_tm_hierarchy_commit;
@@ -176,65 +167,8 @@ DPDK_17.08 {
 	rte_tm_wred_profile_add;
 	rte_tm_wred_profile_delete;
 
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eth_dev_get_sec_ctx;
-	rte_eth_dev_pool_ops_supported;
-	rte_eth_dev_reset;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_eth_dev_filter_ctrl;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_eth_dev_count_avail;
-	rte_eth_dev_probing_finish;
-	rte_eth_find_next_owned_by;
-	rte_flow_copy;
-	rte_flow_create;
-	rte_flow_destroy;
-	rte_flow_error_set;
-	rte_flow_flush;
-	rte_flow_isolate;
-	rte_flow_query;
-	rte_flow_validate;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eth_dev_logtype;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_eth_dev_rx_offload_name;
-	rte_eth_dev_tx_offload_name;
-	rte_eth_iterator_cleanup;
-	rte_eth_iterator_init;
-	rte_eth_iterator_next;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_eth_dev_count_total;
-
-} DPDK_18.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_eventdev/rte_eventdev_version.map b/lib/librte_eventdev/rte_eventdev_version.map
index 76b3021d3a..edfc15282d 100644
--- a/lib/librte_eventdev/rte_eventdev_version.map
+++ b/lib/librte_eventdev/rte_eventdev_version.map
@@ -1,61 +1,38 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
-	rte_eventdevs;
-
+	rte_event_crypto_adapter_caps_get;
+	rte_event_crypto_adapter_create;
+	rte_event_crypto_adapter_create_ext;
+	rte_event_crypto_adapter_event_port_get;
+	rte_event_crypto_adapter_free;
+	rte_event_crypto_adapter_queue_pair_add;
+	rte_event_crypto_adapter_queue_pair_del;
+	rte_event_crypto_adapter_service_id_get;
+	rte_event_crypto_adapter_start;
+	rte_event_crypto_adapter_stats_get;
+	rte_event_crypto_adapter_stats_reset;
+	rte_event_crypto_adapter_stop;
+	rte_event_dequeue_timeout_ticks;
+	rte_event_dev_attr_get;
+	rte_event_dev_close;
+	rte_event_dev_configure;
 	rte_event_dev_count;
+	rte_event_dev_dump;
 	rte_event_dev_get_dev_id;
-	rte_event_dev_socket_id;
 	rte_event_dev_info_get;
-	rte_event_dev_configure;
+	rte_event_dev_selftest;
+	rte_event_dev_service_id_get;
+	rte_event_dev_socket_id;
 	rte_event_dev_start;
 	rte_event_dev_stop;
-	rte_event_dev_close;
-	rte_event_dev_dump;
+	rte_event_dev_stop_flush_callback_register;
 	rte_event_dev_xstats_by_name_get;
 	rte_event_dev_xstats_get;
 	rte_event_dev_xstats_names_get;
 	rte_event_dev_xstats_reset;
-
-	rte_event_port_default_conf_get;
-	rte_event_port_setup;
-	rte_event_port_link;
-	rte_event_port_unlink;
-	rte_event_port_links_get;
-
-	rte_event_queue_default_conf_get;
-	rte_event_queue_setup;
-
-	rte_event_dequeue_timeout_ticks;
-
-	rte_event_pmd_allocate;
-	rte_event_pmd_release;
-	rte_event_pmd_vdev_init;
-	rte_event_pmd_vdev_uninit;
-	rte_event_pmd_pci_probe;
-	rte_event_pmd_pci_remove;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	rte_event_ring_create;
-	rte_event_ring_free;
-	rte_event_ring_init;
-	rte_event_ring_lookup;
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_event_dev_attr_get;
-	rte_event_dev_service_id_get;
-	rte_event_port_attr_get;
-	rte_event_queue_attr_get;
-
 	rte_event_eth_rx_adapter_caps_get;
+	rte_event_eth_rx_adapter_cb_register;
 	rte_event_eth_rx_adapter_create;
 	rte_event_eth_rx_adapter_create_ext;
 	rte_event_eth_rx_adapter_free;
@@ -63,38 +40,9 @@ DPDK_17.11 {
 	rte_event_eth_rx_adapter_queue_del;
 	rte_event_eth_rx_adapter_service_id_get;
 	rte_event_eth_rx_adapter_start;
+	rte_event_eth_rx_adapter_stats_get;
 	rte_event_eth_rx_adapter_stats_reset;
 	rte_event_eth_rx_adapter_stop;
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_event_dev_selftest;
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_event_dev_stop_flush_callback_register;
-} DPDK_18.02;
-
-DPDK_19.05 {
-	global:
-
-	rte_event_crypto_adapter_caps_get;
-	rte_event_crypto_adapter_create;
-	rte_event_crypto_adapter_create_ext;
-	rte_event_crypto_adapter_event_port_get;
-	rte_event_crypto_adapter_free;
-	rte_event_crypto_adapter_queue_pair_add;
-	rte_event_crypto_adapter_queue_pair_del;
-	rte_event_crypto_adapter_service_id_get;
-	rte_event_crypto_adapter_start;
-	rte_event_crypto_adapter_stats_get;
-	rte_event_crypto_adapter_stats_reset;
-	rte_event_crypto_adapter_stop;
-	rte_event_port_unlinks_in_progress;
 	rte_event_eth_tx_adapter_caps_get;
 	rte_event_eth_tx_adapter_create;
 	rte_event_eth_tx_adapter_create_ext;
@@ -107,6 +55,26 @@ DPDK_19.05 {
 	rte_event_eth_tx_adapter_stats_get;
 	rte_event_eth_tx_adapter_stats_reset;
 	rte_event_eth_tx_adapter_stop;
+	rte_event_pmd_allocate;
+	rte_event_pmd_pci_probe;
+	rte_event_pmd_pci_remove;
+	rte_event_pmd_release;
+	rte_event_pmd_vdev_init;
+	rte_event_pmd_vdev_uninit;
+	rte_event_port_attr_get;
+	rte_event_port_default_conf_get;
+	rte_event_port_link;
+	rte_event_port_links_get;
+	rte_event_port_setup;
+	rte_event_port_unlink;
+	rte_event_port_unlinks_in_progress;
+	rte_event_queue_attr_get;
+	rte_event_queue_default_conf_get;
+	rte_event_queue_setup;
+	rte_event_ring_create;
+	rte_event_ring_free;
+	rte_event_ring_init;
+	rte_event_ring_lookup;
 	rte_event_timer_adapter_caps_get;
 	rte_event_timer_adapter_create;
 	rte_event_timer_adapter_create_ext;
@@ -121,11 +89,7 @@ DPDK_19.05 {
 	rte_event_timer_arm_burst;
 	rte_event_timer_arm_tmo_tick_burst;
 	rte_event_timer_cancel_burst;
-} DPDK_18.05;
+	rte_eventdevs;
 
-DPDK_19.08 {
-	global:
-
-	rte_event_eth_rx_adapter_cb_register;
-	rte_event_eth_rx_adapter_stats_get;
-} DPDK_19.05;
+	local: *;
+};
diff --git a/lib/librte_flow_classify/rte_flow_classify_version.map b/lib/librte_flow_classify/rte_flow_classify_version.map
index 49bc25c6a0..001ff660e3 100644
--- a/lib/librte_flow_classify/rte_flow_classify_version.map
+++ b/lib/librte_flow_classify/rte_flow_classify_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_gro/rte_gro_version.map b/lib/librte_gro/rte_gro_version.map
index 1606b6dc72..9f6fe79e57 100644
--- a/lib/librte_gro/rte_gro_version.map
+++ b/lib/librte_gro/rte_gro_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_gro_ctx_create;
diff --git a/lib/librte_gso/rte_gso_version.map b/lib/librte_gso/rte_gso_version.map
index e1fd453edb..8505a59c27 100644
--- a/lib/librte_gso/rte_gso_version.map
+++ b/lib/librte_gso/rte_gso_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_gso_segment;
diff --git a/lib/librte_hash/rte_hash_version.map b/lib/librte_hash/rte_hash_version.map
index 734ae28b04..138c130c1b 100644
--- a/lib/librte_hash/rte_hash_version.map
+++ b/lib/librte_hash/rte_hash_version.map
@@ -1,58 +1,33 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_fbk_hash_create;
 	rte_fbk_hash_find_existing;
 	rte_fbk_hash_free;
 	rte_hash_add_key;
+	rte_hash_add_key_data;
 	rte_hash_add_key_with_hash;
+	rte_hash_add_key_with_hash_data;
+	rte_hash_count;
 	rte_hash_create;
 	rte_hash_del_key;
 	rte_hash_del_key_with_hash;
 	rte_hash_find_existing;
 	rte_hash_free;
+	rte_hash_get_key_with_position;
 	rte_hash_hash;
+	rte_hash_iterate;
 	rte_hash_lookup;
 	rte_hash_lookup_bulk;
-	rte_hash_lookup_with_hash;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_hash_add_key_data;
-	rte_hash_add_key_with_hash_data;
-	rte_hash_iterate;
 	rte_hash_lookup_bulk_data;
 	rte_hash_lookup_data;
+	rte_hash_lookup_with_hash;
 	rte_hash_lookup_with_hash_data;
 	rte_hash_reset;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_hash_set_cmp_func;
 
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_hash_get_key_with_position;
-
-} DPDK_2.2;
-
-
-DPDK_18.08 {
-	global:
-
-	rte_hash_count;
-
-} DPDK_16.07;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_ip_frag/rte_ip_frag_version.map b/lib/librte_ip_frag/rte_ip_frag_version.map
index a193007c61..5dd34f828c 100644
--- a/lib/librte_ip_frag/rte_ip_frag_version.map
+++ b/lib/librte_ip_frag/rte_ip_frag_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
 	rte_ipv4_fragment_packet;
@@ -12,13 +13,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_17.08 {
-	global:
-
-	rte_ip_frag_table_destroy;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_ipsec/rte_ipsec_version.map b/lib/librte_ipsec/rte_ipsec_version.map
index ee9f1961b0..3723b812fc 100644
--- a/lib/librte_ipsec/rte_ipsec_version.map
+++ b/lib/librte_ipsec/rte_ipsec_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_jobstats/rte_jobstats_version.map b/lib/librte_jobstats/rte_jobstats_version.map
index f89441438e..dbd2664ae2 100644
--- a/lib/librte_jobstats/rte_jobstats_version.map
+++ b/lib/librte_jobstats/rte_jobstats_version.map
@@ -1,6 +1,7 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_jobstats_abort;
 	rte_jobstats_context_finish;
 	rte_jobstats_context_init;
 	rte_jobstats_context_reset;
@@ -17,10 +18,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_jobstats_abort;
-
-} DPDK_2.0;
diff --git a/lib/librte_kni/rte_kni_version.map b/lib/librte_kni/rte_kni_version.map
index c877dc6aaa..9cd3cedc54 100644
--- a/lib/librte_kni/rte_kni_version.map
+++ b/lib/librte_kni/rte_kni_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kni_alloc;
diff --git a/lib/librte_kvargs/rte_kvargs_version.map b/lib/librte_kvargs/rte_kvargs_version.map
index 8f4b4e3f8f..3ba0f4b59c 100644
--- a/lib/librte_kvargs/rte_kvargs_version.map
+++ b/lib/librte_kvargs/rte_kvargs_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kvargs_count;
@@ -15,4 +15,4 @@ EXPERIMENTAL {
 	rte_kvargs_parse_delim;
 	rte_kvargs_strcmp;
 
-} DPDK_2.0;
+};
diff --git a/lib/librte_latencystats/rte_latencystats_version.map b/lib/librte_latencystats/rte_latencystats_version.map
index ac8403e821..e04e63463f 100644
--- a/lib/librte_latencystats/rte_latencystats_version.map
+++ b/lib/librte_latencystats/rte_latencystats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_latencystats_get;
diff --git a/lib/librte_lpm/rte_lpm_version.map b/lib/librte_lpm/rte_lpm_version.map
index 90beac853d..500f58b806 100644
--- a/lib/librte_lpm/rte_lpm_version.map
+++ b/lib/librte_lpm/rte_lpm_version.map
@@ -1,13 +1,6 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
-	rte_lpm_add;
-	rte_lpm_create;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-	rte_lpm_find_existing;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
 	rte_lpm6_add;
 	rte_lpm6_create;
 	rte_lpm6_delete;
@@ -18,29 +11,13 @@ DPDK_2.0 {
 	rte_lpm6_is_rule_present;
 	rte_lpm6_lookup;
 	rte_lpm6_lookup_bulk_func;
+	rte_lpm_add;
+	rte_lpm_create;
+	rte_lpm_delete;
+	rte_lpm_delete_all;
+	rte_lpm_find_existing;
+	rte_lpm_free;
+	rte_lpm_is_rule_present;
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_lpm_add;
-	rte_lpm_find_existing;
-	rte_lpm_create;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_lpm6_add;
-	rte_lpm6_is_rule_present;
-	rte_lpm6_lookup;
-	rte_lpm6_lookup_bulk_func;
-
-} DPDK_16.04;
diff --git a/lib/librte_mbuf/rte_mbuf_version.map b/lib/librte_mbuf/rte_mbuf_version.map
index 2662a37bf6..d20aa31857 100644
--- a/lib/librte_mbuf/rte_mbuf_version.map
+++ b/lib/librte_mbuf/rte_mbuf_version.map
@@ -1,24 +1,4 @@
-DPDK_2.0 {
-	global:
-
-	rte_get_rx_ol_flag_name;
-	rte_get_tx_ol_flag_name;
-	rte_mbuf_sanity_check;
-	rte_pktmbuf_dump;
-	rte_pktmbuf_init;
-	rte_pktmbuf_pool_init;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pktmbuf_pool_create;
-
-} DPDK_2.0;
-
-DPDK_16.11 {
+DPDK_20.0 {
 	global:
 
 	__rte_pktmbuf_read;
@@ -31,23 +11,26 @@ DPDK_16.11 {
 	rte_get_ptype_name;
 	rte_get_ptype_tunnel_name;
 	rte_get_rx_ol_flag_list;
+	rte_get_rx_ol_flag_name;
 	rte_get_tx_ol_flag_list;
-
-} DPDK_2.1;
-
-DPDK_18.08 {
-	global:
-
+	rte_get_tx_ol_flag_name;
 	rte_mbuf_best_mempool_ops;
 	rte_mbuf_platform_mempool_ops;
+	rte_mbuf_sanity_check;
 	rte_mbuf_set_platform_mempool_ops;
 	rte_mbuf_set_user_mempool_ops;
 	rte_mbuf_user_mempool_ops;
+	rte_pktmbuf_dump;
+	rte_pktmbuf_init;
+	rte_pktmbuf_pool_create;
 	rte_pktmbuf_pool_create_by_ops;
-} DPDK_16.11;
+	rte_pktmbuf_pool_init;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
 
 	rte_mbuf_check;
-} DPDK_18.08;
+};
diff --git a/lib/librte_member/rte_member_version.map b/lib/librte_member/rte_member_version.map
index 019e4cd962..87780ae611 100644
--- a/lib/librte_member/rte_member_version.map
+++ b/lib/librte_member/rte_member_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_member_add;
diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map
index 17cbca4607..6a425d203a 100644
--- a/lib/librte_mempool/rte_mempool_version.map
+++ b/lib/librte_mempool/rte_mempool_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_mempool_audit;
-	rte_mempool_calc_obj_size;
-	rte_mempool_create;
-	rte_mempool_dump;
-	rte_mempool_list_dump;
-	rte_mempool_lookup;
-	rte_mempool_walk;
-
-	local: *;
-};
-
-DPDK_16.07 {
-	global:
-
 	rte_mempool_avail_count;
 	rte_mempool_cache_create;
 	rte_mempool_cache_flush;
 	rte_mempool_cache_free;
+	rte_mempool_calc_obj_size;
 	rte_mempool_check_cookies;
+	rte_mempool_contig_blocks_check_cookies;
+	rte_mempool_create;
 	rte_mempool_create_empty;
 	rte_mempool_default_cache;
+	rte_mempool_dump;
 	rte_mempool_free;
 	rte_mempool_generic_get;
 	rte_mempool_generic_put;
 	rte_mempool_in_use_count;
+	rte_mempool_list_dump;
+	rte_mempool_lookup;
 	rte_mempool_mem_iter;
 	rte_mempool_obj_iter;
+	rte_mempool_op_calc_mem_size_default;
+	rte_mempool_op_populate_default;
 	rte_mempool_ops_table;
 	rte_mempool_populate_anon;
 	rte_mempool_populate_default;
+	rte_mempool_populate_iova;
 	rte_mempool_populate_virt;
 	rte_mempool_register_ops;
 	rte_mempool_set_ops_byname;
+	rte_mempool_walk;
 
-} DPDK_2.0;
-
-DPDK_17.11 {
-	global:
-
-	rte_mempool_populate_iova;
-
-} DPDK_16.07;
-
-DPDK_18.05 {
-	global:
-
-	rte_mempool_contig_blocks_check_cookies;
-	rte_mempool_op_calc_mem_size_default;
-	rte_mempool_op_populate_default;
-
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_meter/rte_meter_version.map b/lib/librte_meter/rte_meter_version.map
index 4b460d5803..46410b0369 100644
--- a/lib/librte_meter/rte_meter_version.map
+++ b/lib/librte_meter/rte_meter_version.map
@@ -1,21 +1,16 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_meter_srtcm_color_aware_check;
 	rte_meter_srtcm_color_blind_check;
 	rte_meter_srtcm_config;
+	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_color_aware_check;
 	rte_meter_trtcm_color_blind_check;
 	rte_meter_trtcm_config;
-
-	local: *;
-};
-
-DPDK_18.08 {
-	global:
-
-	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_profile_config;
+
+	local: *;
 };
 
 EXPERIMENTAL {
diff --git a/lib/librte_metrics/rte_metrics_version.map b/lib/librte_metrics/rte_metrics_version.map
index 6ac99a44a1..85663f356e 100644
--- a/lib/librte_metrics/rte_metrics_version.map
+++ b/lib/librte_metrics/rte_metrics_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_metrics_get_names;
diff --git a/lib/librte_net/rte_net_version.map b/lib/librte_net/rte_net_version.map
index fffc4a3723..8a4e75a3a0 100644
--- a/lib/librte_net/rte_net_version.map
+++ b/lib/librte_net/rte_net_version.map
@@ -1,25 +1,14 @@
-DPDK_16.11 {
-	global:
-	rte_net_get_ptype;
-
-	local: *;
-};
-
-DPDK_17.05 {
-	global:
-
-	rte_net_crc_calc;
-	rte_net_crc_set_alg;
-
-} DPDK_16.11;
-
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_random_addr;
 	rte_ether_format_addr;
+	rte_net_crc_calc;
+	rte_net_crc_set_alg;
+	rte_net_get_ptype;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_pci/rte_pci_version.map b/lib/librte_pci/rte_pci_version.map
index c0280277bb..539785f5f4 100644
--- a/lib/librte_pci/rte_pci_version.map
+++ b/lib/librte_pci/rte_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	eal_parse_pci_BDF;
diff --git a/lib/librte_pdump/rte_pdump_version.map b/lib/librte_pdump/rte_pdump_version.map
index 3e744f3012..6d02ccce6d 100644
--- a/lib/librte_pdump/rte_pdump_version.map
+++ b/lib/librte_pdump/rte_pdump_version.map
@@ -1,4 +1,4 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	global:
 
 	rte_pdump_disable;
diff --git a/lib/librte_pipeline/rte_pipeline_version.map b/lib/librte_pipeline/rte_pipeline_version.map
index 420f065d6e..64d38afecd 100644
--- a/lib/librte_pipeline/rte_pipeline_version.map
+++ b/lib/librte_pipeline/rte_pipeline_version.map
@@ -1,6 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_pipeline_ah_packet_drop;
+	rte_pipeline_ah_packet_hijack;
 	rte_pipeline_check;
 	rte_pipeline_create;
 	rte_pipeline_flush;
@@ -9,42 +11,22 @@ DPDK_2.0 {
 	rte_pipeline_port_in_create;
 	rte_pipeline_port_in_disable;
 	rte_pipeline_port_in_enable;
+	rte_pipeline_port_in_stats_read;
 	rte_pipeline_port_out_create;
 	rte_pipeline_port_out_packet_insert;
+	rte_pipeline_port_out_stats_read;
 	rte_pipeline_run;
 	rte_pipeline_table_create;
 	rte_pipeline_table_default_entry_add;
 	rte_pipeline_table_default_entry_delete;
 	rte_pipeline_table_entry_add;
-	rte_pipeline_table_entry_delete;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pipeline_port_in_stats_read;
-	rte_pipeline_port_out_stats_read;
-	rte_pipeline_table_stats_read;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_pipeline_table_entry_add_bulk;
+	rte_pipeline_table_entry_delete;
 	rte_pipeline_table_entry_delete_bulk;
+	rte_pipeline_table_stats_read;
 
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_pipeline_ah_packet_hijack;
-	rte_pipeline_ah_packet_drop;
-
-} DPDK_2.2;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_port/rte_port_version.map b/lib/librte_port/rte_port_version.map
index 609bcec3ff..db1b8681d9 100644
--- a/lib/librte_port/rte_port_version.map
+++ b/lib/librte_port/rte_port_version.map
@@ -1,62 +1,32 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_port_ethdev_reader_ops;
+	rte_port_ethdev_writer_nodrop_ops;
 	rte_port_ethdev_writer_ops;
+	rte_port_fd_reader_ops;
+	rte_port_fd_writer_nodrop_ops;
+	rte_port_fd_writer_ops;
+	rte_port_kni_reader_ops;
+	rte_port_kni_writer_nodrop_ops;
+	rte_port_kni_writer_ops;
+	rte_port_ring_multi_reader_ops;
+	rte_port_ring_multi_writer_nodrop_ops;
+	rte_port_ring_multi_writer_ops;
 	rte_port_ring_reader_ipv4_frag_ops;
+	rte_port_ring_reader_ipv6_frag_ops;
 	rte_port_ring_reader_ops;
 	rte_port_ring_writer_ipv4_ras_ops;
+	rte_port_ring_writer_ipv6_ras_ops;
+	rte_port_ring_writer_nodrop_ops;
 	rte_port_ring_writer_ops;
 	rte_port_sched_reader_ops;
 	rte_port_sched_writer_ops;
 	rte_port_sink_ops;
 	rte_port_source_ops;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_port_ethdev_writer_nodrop_ops;
-	rte_port_ring_reader_ipv6_frag_ops;
-	rte_port_ring_writer_ipv6_ras_ops;
-	rte_port_ring_writer_nodrop_ops;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_port_ring_multi_reader_ops;
-	rte_port_ring_multi_writer_ops;
-	rte_port_ring_multi_writer_nodrop_ops;
-
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_port_kni_reader_ops;
-	rte_port_kni_writer_ops;
-	rte_port_kni_writer_nodrop_ops;
-
-} DPDK_2.2;
-
-DPDK_16.11 {
-	global:
-
-	rte_port_fd_reader_ops;
-	rte_port_fd_writer_ops;
-	rte_port_fd_writer_nodrop_ops;
-
-} DPDK_16.07;
-
-DPDK_18.11 {
-	global:
-
 	rte_port_sym_crypto_reader_ops;
-	rte_port_sym_crypto_writer_ops;
 	rte_port_sym_crypto_writer_nodrop_ops;
+	rte_port_sym_crypto_writer_ops;
 
-} DPDK_16.11;
+	local: *;
+};
diff --git a/lib/librte_power/rte_power_version.map b/lib/librte_power/rte_power_version.map
index 042917360e..a94ab30c3d 100644
--- a/lib/librte_power/rte_power_version.map
+++ b/lib/librte_power/rte_power_version.map
@@ -1,39 +1,27 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_power_exit;
+	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
+	rte_power_freq_enable_turbo;
 	rte_power_freq_max;
 	rte_power_freq_min;
 	rte_power_freq_up;
 	rte_power_freqs;
+	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_guest_channel_send_msg;
 	rte_power_init;
 	rte_power_set_env;
 	rte_power_set_freq;
+	rte_power_turbo_status;
 	rte_power_unset_env;
 
 	local: *;
 };
 
-DPDK_17.11 {
-	global:
-
-	rte_power_guest_channel_send_msg;
-	rte_power_freq_disable_turbo;
-	rte_power_freq_enable_turbo;
-	rte_power_turbo_status;
-
-} DPDK_2.0;
-
-DPDK_18.08 {
-	global:
-
-	rte_power_get_capabilities;
-
-} DPDK_17.11;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_rawdev/rte_rawdev_version.map b/lib/librte_rawdev/rte_rawdev_version.map
index b61dbff11c..d847c9e0d3 100644
--- a/lib/librte_rawdev/rte_rawdev_version.map
+++ b/lib/librte_rawdev/rte_rawdev_version.map
@@ -1,4 +1,4 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_rawdev_close;
@@ -17,8 +17,8 @@ DPDK_18.08 {
 	rte_rawdev_pmd_release;
 	rte_rawdev_queue_conf_get;
 	rte_rawdev_queue_count;
-	rte_rawdev_queue_setup;
 	rte_rawdev_queue_release;
+	rte_rawdev_queue_setup;
 	rte_rawdev_reset;
 	rte_rawdev_selftest;
 	rte_rawdev_set_attr;
diff --git a/lib/librte_rcu/rte_rcu_version.map b/lib/librte_rcu/rte_rcu_version.map
index f8b9ef2abb..787e51ef27 100644
--- a/lib/librte_rcu/rte_rcu_version.map
+++ b/lib/librte_rcu/rte_rcu_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_reorder/rte_reorder_version.map b/lib/librte_reorder/rte_reorder_version.map
index 0a8a54de83..cf444062df 100644
--- a/lib/librte_reorder/rte_reorder_version.map
+++ b/lib/librte_reorder/rte_reorder_version.map
@@ -1,13 +1,13 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_reorder_create;
-	rte_reorder_init;
+	rte_reorder_drain;
 	rte_reorder_find_existing;
-	rte_reorder_reset;
 	rte_reorder_free;
+	rte_reorder_init;
 	rte_reorder_insert;
-	rte_reorder_drain;
+	rte_reorder_reset;
 
 	local: *;
 };
diff --git a/lib/librte_ring/rte_ring_version.map b/lib/librte_ring/rte_ring_version.map
index 510c1386e0..89d84bcf48 100644
--- a/lib/librte_ring/rte_ring_version.map
+++ b/lib/librte_ring/rte_ring_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ring_create;
 	rte_ring_dump;
+	rte_ring_free;
 	rte_ring_get_memsize;
 	rte_ring_init;
 	rte_ring_list_dump;
@@ -11,13 +12,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.2 {
-	global:
-
-	rte_ring_free;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_sched/rte_sched_version.map b/lib/librte_sched/rte_sched_version.map
index 729588794e..1b48bfbf36 100644
--- a/lib/librte_sched/rte_sched_version.map
+++ b/lib/librte_sched/rte_sched_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_approx;
@@ -14,6 +14,9 @@ DPDK_2.0 {
 	rte_sched_port_enqueue;
 	rte_sched_port_free;
 	rte_sched_port_get_memory_footprint;
+	rte_sched_port_pkt_read_color;
+	rte_sched_port_pkt_read_tree_path;
+	rte_sched_port_pkt_write;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_read_stats;
@@ -21,15 +24,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.1 {
-	global:
-
-	rte_sched_port_pkt_write;
-	rte_sched_port_pkt_read_tree_path;
-	rte_sched_port_pkt_read_color;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_security/rte_security_version.map b/lib/librte_security/rte_security_version.map
index 53267bf3cc..b07314bbf4 100644
--- a/lib/librte_security/rte_security_version.map
+++ b/lib/librte_security/rte_security_version.map
@@ -1,4 +1,4 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	rte_security_attach_session;
diff --git a/lib/librte_stack/rte_stack_version.map b/lib/librte_stack/rte_stack_version.map
index 6662679c36..adbb7be9d9 100644
--- a/lib/librte_stack/rte_stack_version.map
+++ b/lib/librte_stack/rte_stack_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_table/rte_table_version.map b/lib/librte_table/rte_table_version.map
index 6237252bec..40f72b1fe8 100644
--- a/lib/librte_table/rte_table_version.map
+++ b/lib/librte_table/rte_table_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_table_acl_ops;
diff --git a/lib/librte_telemetry/rte_telemetry_version.map b/lib/librte_telemetry/rte_telemetry_version.map
index fa62d7718c..c1f4613af5 100644
--- a/lib/librte_telemetry/rte_telemetry_version.map
+++ b/lib/librte_telemetry/rte_telemetry_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_timer/rte_timer_version.map b/lib/librte_timer/rte_timer_version.map
index 72f75c8181..2a59d3f081 100644
--- a/lib/librte_timer/rte_timer_version.map
+++ b/lib/librte_timer/rte_timer_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_timer_dump_stats;
@@ -14,16 +14,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_19.05 {
-	global:
-
-	rte_timer_dump_stats;
-	rte_timer_manage;
-	rte_timer_reset;
-	rte_timer_stop;
-	rte_timer_subsystem_init;
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_vhost/rte_vhost_version.map b/lib/librte_vhost/rte_vhost_version.map
index 5f1d4a75c2..8e9ffac2c2 100644
--- a/lib/librte_vhost/rte_vhost_version.map
+++ b/lib/librte_vhost/rte_vhost_version.map
@@ -1,64 +1,34 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_vhost_avail_entries;
 	rte_vhost_dequeue_burst;
 	rte_vhost_driver_callback_register;
-	rte_vhost_driver_register;
-	rte_vhost_enable_guest_notification;
-	rte_vhost_enqueue_burst;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_vhost_driver_unregister;
-
-} DPDK_2.0;
-
-DPDK_16.07 {
-	global:
-
-	rte_vhost_avail_entries;
-	rte_vhost_get_ifname;
-	rte_vhost_get_numa_node;
-	rte_vhost_get_queue_num;
-
-} DPDK_2.1;
-
-DPDK_17.05 {
-	global:
-
 	rte_vhost_driver_disable_features;
 	rte_vhost_driver_enable_features;
 	rte_vhost_driver_get_features;
+	rte_vhost_driver_register;
 	rte_vhost_driver_set_features;
 	rte_vhost_driver_start;
+	rte_vhost_driver_unregister;
+	rte_vhost_enable_guest_notification;
+	rte_vhost_enqueue_burst;
+	rte_vhost_get_ifname;
 	rte_vhost_get_mem_table;
 	rte_vhost_get_mtu;
 	rte_vhost_get_negotiated_features;
+	rte_vhost_get_numa_node;
+	rte_vhost_get_queue_num;
 	rte_vhost_get_vhost_vring;
 	rte_vhost_get_vring_num;
 	rte_vhost_gpa_to_vva;
 	rte_vhost_log_used_vring;
 	rte_vhost_log_write;
-
-} DPDK_16.07;
-
-DPDK_17.08 {
-	global:
-
 	rte_vhost_rx_queue_count;
-
-} DPDK_17.05;
-
-DPDK_18.02 {
-	global:
-
 	rte_vhost_vring_call;
 
-} DPDK_17.08;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v2 10/10] buildtools: add ABI versioning check script
  2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
                   ` (16 preceding siblings ...)
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 09/10] build: change ABI version to 20.0 Anatoly Burakov
@ 2019-10-16 12:43 ` Anatoly Burakov
  17 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 12:43 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, john.mcnamara, bruce.richardson, thomas,
	david.marchand, Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

Add a shell script that checks whether built libraries are
versioned with expected ABI (current ABI, current ABI + 1,
or EXPERIMENTAL).

The following command was used to verify current source tree
(assuming build directory is in ./build):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - Moved this to the end of the patchset
    - Fixed bug when ABI symbols were not found because the .so
      did not declare any public symbols

 buildtools/check-abi-version.sh | 54 +++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100755 buildtools/check-abi-version.sh

diff --git a/buildtools/check-abi-version.sh b/buildtools/check-abi-version.sh
new file mode 100755
index 0000000000..29aea97735
--- /dev/null
+++ b/buildtools/check-abi-version.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+# Check whether library symbols have correct
+# version (provided ABI number or provided ABI
+# number + 1 or EXPERIMENTAL).
+# Args:
+#   $1: path of the library .so file
+#   $2: ABI major version number to check
+#       (defaults to ABI_VERSION file value)
+
+if [ -z "$1" ]; then
+    echo "Script checks whether library symbols have"
+    echo "correct version (ABI_VER/ABI_VER+1/EXPERIMENTAL)"
+    echo "Usage:"
+    echo "  $0 SO_FILE_PATH [ABI_VER]"
+    exit 1
+fi
+
+LIB="$1"
+DEFAULT_ABI=$(cat "$(dirname \
+            $(readlink -f $0))/../config/ABI_VERSION" | \
+            cut -d'.' -f 1)
+ABIVER="DPDK_${2-$DEFAULT_ABI}"
+NEXT_ABIVER="DPDK_$((${2-$DEFAULT_ABI}+1))"
+
+ret=0
+
+# get output of objdump
+OBJ_DUMP_OUTPUT=`objdump -TC --section=.text ${LIB} 2>&1 | grep ".text"`
+
+# there may not be any .text sections in the .so file, in which case exit early
+echo "${OBJ_DUMP_OUTPUT}" | grep "not found in any input file" -q
+if [ "$?" -eq 0 ]; then
+    exit 0
+fi
+
+# we have symbols, so let's see if the versions are correct
+for SYM in `echo "${OBJ_DUMP_OUTPUT}" | awk '{print $(NF-1) "-" $NF}'`
+do
+    version=$(echo $SYM | cut -d'-' -f 1)
+    symbol=$(echo $SYM | cut -d'-' -f 2)
+    case $version in (*"$ABIVER"*|*"$NEXT_ABIVER"*|"EXPERIMENTAL")
+        ;;
+    (*)
+        echo "Warning: symbol $symbol ($version) should be annotated " \
+             "as ABI version $ABIVER / $NEXT_ABIVER, or EXPERIMENTAL."
+        ret=1
+    ;;
+    esac
+done
+
+exit $ret
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v2 07/10] lib: change function suffix in distributor
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 07/10] lib: change function suffix in distributor Anatoly Burakov
@ 2019-10-16 13:18   ` Hunt, David
  0 siblings, 0 replies; 131+ messages in thread
From: Hunt, David @ 2019-10-16 13:18 UTC (permalink / raw)
  To: Anatoly Burakov, dev
  Cc: Marcin Baran, john.mcnamara, bruce.richardson, thomas, david.marchand


On 16/10/2019 13:43, Anatoly Burakov wrote:
> From: Marcin Baran <marcinx.baran@intel.com>
>
> The functions and structures version 2.0 is
> still in use in librte_distributor for single
> packet mode but the version suffix "_v20" needs
> to be changed to "_single" in order to avoid
> confusion.
>
> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> ---
>
> Notes:
>      Dave: do we still need this at all? Can we remove this?

Yes, it probably makes sense to remove the single version.

Rgds,
Dave.


> --snip--

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v2 01/10] config: change ABI versioning for global
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 01/10] config: change ABI versioning for global Anatoly Burakov
@ 2019-10-16 13:22   ` Bruce Richardson
  0 siblings, 0 replies; 131+ messages in thread
From: Bruce Richardson @ 2019-10-16 13:22 UTC (permalink / raw)
  To: Anatoly Burakov
  Cc: dev, Marcin Baran, Thomas Monjalon, john.mcnamara,
	david.marchand, Pawel Modrak

On Wed, Oct 16, 2019 at 01:43:16PM +0100, Anatoly Burakov wrote:
> From: Marcin Baran <marcinx.baran@intel.com>
> 
> The libraries should be maintained using global
> ABI versioning. The changes includes adding global
> ABI version support for both makefile and meson
> build system. Experimental libraries should be
> marked as 0.
> 
> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> ---

Some comments inline below.

/Bruce

>  buildtools/meson.build |  2 ++
>  config/ABI_VERSION     |  1 +
>  config/meson.build     |  3 ++-
>  drivers/meson.build    | 20 ++++++++++++++------
>  lib/meson.build        | 18 +++++++++++++-----
>  meson_options.txt      |  2 --
>  mk/rte.lib.mk          | 19 +++++++++++--------
>  7 files changed, 43 insertions(+), 22 deletions(-)
>  create mode 100644 config/ABI_VERSION
> 
> diff --git a/buildtools/meson.build b/buildtools/meson.build
> index 32c79c1308..78ce69977d 100644
> --- a/buildtools/meson.build
> +++ b/buildtools/meson.build
> @@ -12,3 +12,5 @@ if python3.found()
>  else
>  	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
>  endif
> +
> +is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
> diff --git a/config/ABI_VERSION b/config/ABI_VERSION
> new file mode 100644
> index 0000000000..9a7c1e503f
> --- /dev/null
> +++ b/config/ABI_VERSION
> @@ -0,0 +1 @@
> +20.0
> diff --git a/config/meson.build b/config/meson.build
> index a27f731f85..25ecf928e4 100644
> --- a/config/meson.build
> +++ b/config/meson.build
> @@ -17,7 +17,8 @@ endforeach
>  # set the major version, which might be used by drivers and libraries
>  # depending on the configuration options
>  pver = meson.project_version().split('.')
> -major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
> +major_version = run_command(find_program('cat', 'more'),
> +	files('ABI_VERSION')).stdout().strip()
>  

I wonder if we should rename this to abi_version rather than major_version?

>  # extract all version information into the build configuration
>  dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
> diff --git a/drivers/meson.build b/drivers/meson.build
> index 2ed2e95411..5c5fe87c7e 100644
> --- a/drivers/meson.build
> +++ b/drivers/meson.build
> @@ -110,9 +110,20 @@ foreach class:dpdk_driver_classes
>  					output: out_filename,
>  					depends: [pmdinfogen, tmp_lib])
>  
> -			if get_option('per_library_versions')
> -				lib_version = '@0@.1'.format(version)
> -				so_version = '@0@'.format(version)
> +			version_map = '@0@/@1@/@2@_version.map'.format(
> +					meson.current_source_dir(),
> +					drv_path, lib_name)
> +
> +			if is_windows
> +				version_map = '\\'.join(version_map.split('/'))
> +			endif

Don't think this block should be needed. Windows generally supports using
"/" as a separator, even if traditionally "\" was used.

> +
> +			is_experimental = run_command(is_experimental_cmd,
> +				files(version_map)).returncode()
> +
> +			if is_experimental != 0
> +				lib_version = '0.1'
> +				so_version = '0'
>  			else
>  				lib_version = major_version
>  				so_version = major_version
> @@ -128,9 +139,6 @@ foreach class:dpdk_driver_classes
>  				install: true)
>  
>  			# now build the shared driver
> -			version_map = '@0@/@1@/@2@_version.map'.format(
> -					meson.current_source_dir(),
> -					drv_path, lib_name)
>  			shared_lib = shared_library(lib_name,
>  				sources,
>  				objects: objs,
> diff --git a/lib/meson.build b/lib/meson.build
> index e5ff838934..3892c16e8f 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -97,9 +97,19 @@ foreach l:libraries
>  				cflags += '-DALLOW_EXPERIMENTAL_API'
>  			endif
>  
> -			if get_option('per_library_versions')
> -				lib_version = '@0@.1'.format(version)
> -				so_version = '@0@'.format(version)
> +			version_map = '@0@/@1@/rte_@2@_version.map'.format(
> +					meson.current_source_dir(), dir_name, name)
> +
> +			if is_windows
> +				version_map = '\\'.join(version_map.split('/'))
> +			endif
As above.

> +
> +			is_experimental = run_command(is_experimental_cmd,
> +					files(version_map)).returncode()
> +
> +			if is_experimental != 0
> +				lib_version = '0.1'
> +				so_version = '0'
>  			else
>  				lib_version = major_version
>  				so_version = major_version
> @@ -120,8 +130,6 @@ foreach l:libraries
>  			# then use pre-build objects to build shared lib
>  			sources = []
>  			objs += static_lib.extract_all_objects(recursive: false)
> -			version_map = '@0@/@1@/rte_@2@_version.map'.format(
> -					meson.current_source_dir(), dir_name, name)
>  			implib = dir_name + '.dll.a'
>  
>  			def_file = custom_target(name + '_def',
> diff --git a/meson_options.txt b/meson_options.txt
> index 448f3e63dc..000e38fd98 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -28,8 +28,6 @@ option('max_lcores', type: 'integer', value: 128,
>  	description: 'maximum number of cores/threads supported by EAL')
>  option('max_numa_nodes', type: 'integer', value: 4,
>  	description: 'maximum number of NUMA nodes supported by EAL')
> -option('per_library_versions', type: 'boolean', value: true,
> -	description: 'true: each lib gets its own version number, false: DPDK version used for each lib')
>  option('tests', type: 'boolean', value: true,
>  	description: 'build unit tests')
>  option('use_hpet', type: 'boolean', value: false,
> diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
> index 4df8849a08..f84161c6d5 100644
> --- a/mk/rte.lib.mk
> +++ b/mk/rte.lib.mk
> @@ -11,20 +11,23 @@ EXTLIB_BUILD ?= n
>  # VPATH contains at least SRCDIR
>  VPATH += $(SRCDIR)
>  
> -ifneq ($(CONFIG_RTE_MAJOR_ABI),)
> -ifneq ($(LIBABIVER),)
> -LIBABIVER := $(CONFIG_RTE_MAJOR_ABI)
> +ifeq ($(OS), Windows_NT)
> +search_cmd = findstr
> +print_cmd = more
> +else
> +search_cmd = grep
> +print_cmd = cat
We don't support make on windows, so no need for using findstr.

>  endif
> +
> +ifneq ($(shell $(search_cmd) "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)
> +LIBABIVER := $(shell $(print_cmd) $(RTE_SRCDIR)/config/ABI_VERSION)
> +else
> +LIBABIVER := 0
>  endif
>  
>  ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
>  LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))
>  ifeq ($(EXTLIB_BUILD),n)
> -ifeq ($(CONFIG_RTE_MAJOR_ABI),)
> -ifeq ($(CONFIG_RTE_NEXT_ABI),y)
> -LIB := $(LIB).1
> -endif
> -endif
>  CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
>  endif
>  endif
> -- 
> 2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v2 02/10] buildtools: add script for updating symbols abi version
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
@ 2019-10-16 13:25   ` Bruce Richardson
  0 siblings, 0 replies; 131+ messages in thread
From: Bruce Richardson @ 2019-10-16 13:25 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: dev, Pawel Modrak, john.mcnamara, thomas, david.marchand

On Wed, Oct 16, 2019 at 01:43:17PM +0100, Anatoly Burakov wrote:
> From: Pawel Modrak <pawelx.modrak@intel.com>
> 
> Add a script that automatically merges all stable ABI's under one
> ABI section with the new version, while leaving experimental
> section exactly as it is.
> 
> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> ---
> 
> Notes:
>     v2:
>     - Reworked script to be pep8-compliant and more reliable
> 
>  buildtools/update_version_map_abi.py | 148 +++++++++++++++++++++++++++
>  1 file changed, 148 insertions(+)
>  create mode 100755 buildtools/update_version_map_abi.py
> 
> diff --git a/buildtools/update_version_map_abi.py b/buildtools/update_version_map_abi.py
> new file mode 100755
> index 0000000000..ea9044cc81
> --- /dev/null
> +++ b/buildtools/update_version_map_abi.py
> @@ -0,0 +1,148 @@
> +#!/usr/bin/env python
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2019 Intel Corporation
> +
> +"""
> +A Python program to update the ABI version and function names in a DPDK
> +lib_*_version.map file. Called from the buildtools/update_abi.sh utility.
> +"""
> +
> +from __future__ import print_function
> +import argparse
> +import sys
> +import re
> +
> +
> +def __parse_map_file(f_in):
> +    func_line_regex = re.compile(r"\s*(?P<func>[a-zA-Z_0-9]+)\s*;\s*$")
> +    section_begin_regex = re.compile(
> +        r"\s*(?P<version>[a-zA-Z0-9_\.]+)\s*{\s*$")
> +    section_end_regex = re.compile(
> +        r"\s*}\s*(?P<parent>[a-zA-Z0-9_\.]+)?\s*;\s*$")
> +

To help readers of the code, can you put in a line or two of comment
explaining each regex a bit above.


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v2 03/10] buildtools: add ABI update shell script
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 03/10] buildtools: add ABI update shell script Anatoly Burakov
@ 2019-10-16 13:33   ` Bruce Richardson
  0 siblings, 0 replies; 131+ messages in thread
From: Bruce Richardson @ 2019-10-16 13:33 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: dev, john.mcnamara, thomas, david.marchand

On Wed, Oct 16, 2019 at 01:43:18PM +0100, Anatoly Burakov wrote:
> In order to facilitate mass updating of version files, add a shell
> script that recurses into lib/ and drivers/ directories and calls
> the ABI version update script.
> 
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> ---
> 
> Notes:
>     v2:
>     - Add this patch to split the shell script from previous commit
>     - Fixup miscellaneous bugs
> 
>  buildtools/update-abi.sh | 36 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 36 insertions(+)
>  create mode 100755 buildtools/update-abi.sh
> 
> diff --git a/buildtools/update-abi.sh b/buildtools/update-abi.sh
> new file mode 100755
> index 0000000000..a6f916a437
> --- /dev/null
> +++ b/buildtools/update-abi.sh
> @@ -0,0 +1,36 @@
> +#!/bin/bash

Does this actually need to be bash? Most of our scripts use plain "sh".
Also on FreeBSD bash is generally in /usr/local/bin not /bin.

> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2019 Intel Corporation
> +
> +abi_version=""
> +abi_version_file="./config/ABI_VERSION"
> +update_path="lib drivers"
> +
> +if [ -z "$1" ]
> +then

While there are a few scripts in DPDK putting the "then" on the next line
most scripts put it on the same line as the "if", after a ";".

> +      # output to stderr
> +      >&2 echo "provide ABI version"
> +      exit 1
> +fi
> +
> +abi_version=$1

I think you can just do this assignment at the top when you define
abi_version in the first place. Using $1 when it doesn't exist isn't a
problem.

> +
> +if [ -n "$2" ]
> +then
> +      abi_version_file=$2
> +fi
> +
> +if [ -n "$3" ]
> +then
> +      update_path=${@:3}

I think this might be a bash-ism, right? If so, I think using "shift" and
then directly using $@ should work instead to make it sh-compatible..

> +fi
> +
> +echo "New ABI version:" $abi_version
> +echo "ABI_VERSION path:" $abi_version_file
> +echo "Path to update:" $update_path
> +
> +echo $abi_version > $abi_version_file
Do we need to check the abi_version provided is in the correct format?
Should it have both major and minor components, or just major. I think the
former, so we can do minor bumps which keeping major compatibility.

> +
> +find $update_path -name  \*version.map -exec \
> +      ./buildtools/update_version_map_abi.py {} \
> +      $abi_version \; -print
> -- 
> 2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v3 0/9] Implement the new ABI policy and add helper scripts
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
@ 2019-10-16 17:03   ` Anatoly Burakov
  2019-10-17  8:50     ` Bruce Richardson
                       ` (11 more replies)
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global Anatoly Burakov
                     ` (8 subsequent siblings)
  9 siblings, 12 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 17:03 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, bruce.richardson, thomas, david.marchand

This patchset prepares the codebase for the new ABI policy and
adds a few helper scripts.

There are two new scripts for managing ABI versions added. The
first one is a Python script that will read in a .map file,
flatten it and update the ABI version to the ABI version
specified on the command-line.

The second one is a shell script that will run the above mentioned
Python script recursively over the source tree and set the ABI
version to either that which is defined in config/ABI_VERSION, or
a user-specified one.

Example of its usage: buildtools/update-abi.sh 20.0

This will recurse into lib/ and drivers/ directory and update
whatever .map files it can find.

The other shell script that's added is one that can take in a .so
file and ensure that its declared public ABI matches either
current ABI, next ABI, or EXPERIMENTAL. This was moved to the
last commit because it made no sense to have it beforehand.

The source tree was verified to follow the new ABI policy using
the following command (assuming built binaries are in build/):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

This returns 0.

Changes since v2:
- Addressed Bruce's review comments
- Removed single distributor mode as per Dave's suggestion

Changes since v1:
- Reordered patchset to have removal of old ABI's before introducing
  the new one to avoid compile breakages between patches
- Added a new patch fixing missing symbol in octeontx common
- Split script commits into multiple commits and reordered them
- Re-generated the ABI bump commit
- Verified all scripts to work

Anatoly Burakov (2):
  buildtools: add ABI update shell script
  drivers/octeontx: add missing public symbol

Marcin Baran (5):
  config: change ABI versioning to global
  timer: remove deprecated code
  lpm: remove deprecated code
  distributor: remove deprecated code
  buildtools: add ABI versioning check script

Pawel Modrak (2):
  buildtools: add script for updating symbols abi version
  build: change ABI version to 20.0

 app/test/test_distributor.c                   | 102 +-
 app/test/test_distributor_perf.c              |  12 -
 buildtools/check-abi-version.sh               |  54 +
 buildtools/meson.build                        |   2 +
 buildtools/update-abi.sh                      |  42 +
 buildtools/update_version_map_abi.py          | 170 +++
 config/ABI_VERSION                            |   1 +
 config/meson.build                            |   5 +-
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |   8 +-
 .../null/rte_pmd_bbdev_null_version.map       |   2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |   2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     | 115 +-
 drivers/bus/fslmc/rte_bus_fslmc_version.map   | 154 ++-
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |  14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |   2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |  12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |  12 +-
 drivers/common/cpt/rte_common_cpt_version.map |   4 +-
 .../common/dpaax/rte_common_dpaax_version.map |   4 +-
 .../common/mvep/rte_common_mvep_version.map   |   6 +-
 .../octeontx/rte_common_octeontx_version.map  |   7 +-
 .../rte_common_octeontx2_version.map          |  16 +-
 .../compress/isal/rte_pmd_isal_version.map    |   2 +-
 .../rte_pmd_octeontx_compress_version.map     |   2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |   2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |   2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |   2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |   2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |   2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |   3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |   3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |  10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |  10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |   2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |   2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |   2 +-
 .../null/rte_pmd_null_crypto_version.map      |   2 +-
 .../rte_pmd_octeontx_crypto_version.map       |   3 +-
 .../openssl/rte_pmd_openssl_version.map       |   2 +-
 .../rte_pmd_crypto_scheduler_version.map      |  19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |   2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |   2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |   2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |   3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |   2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |   2 +-
 .../rte_pmd_octeontx_event_version.map        |   2 +-
 .../rte_pmd_octeontx2_event_version.map       |   3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |   2 +-
 .../rte_pmd_skeleton_event_version.map        |   3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |   2 +-
 .../bucket/rte_mempool_bucket_version.map     |   3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |   2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |  12 +-
 .../octeontx/rte_mempool_octeontx_version.map |   2 +-
 .../rte_mempool_octeontx2_version.map         |   4 +-
 .../mempool/ring/rte_mempool_ring_version.map |   3 +-
 .../stack/rte_mempool_stack_version.map       |   3 +-
 drivers/meson.build                           |  20 +-
 .../af_packet/rte_pmd_af_packet_version.map   |   3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |   2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |   5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |   4 +-
 drivers/net/avp/rte_pmd_avp_version.map       |   2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |   2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |   3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |   4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |  47 +-
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |   3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |  11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |  12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |   3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |   3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |   3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |   3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |   3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |   3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |   3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |   4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |  65 +-
 drivers/net/iavf/rte_pmd_iavf_version.map     |   3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |   3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |   3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |   3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |  62 +-
 drivers/net/kni/rte_pmd_kni_version.map       |   3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |   3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |   5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |   3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |   2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |   2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |   2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |   4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |   3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |   2 +-
 drivers/net/null/rte_pmd_null_version.map     |   3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |  10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |   3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |   3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |   3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |  10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |   3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |   2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |   2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |   3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |   3 +-
 .../rte_pmd_vdev_netvsc_version.map           |   3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |  11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |   3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |   3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |   3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |   4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |   3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |   3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |   5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |   3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |   3 +-
 lib/librte_acl/rte_acl_version.map            |   2 +-
 lib/librte_bbdev/rte_bbdev_version.map        |   4 +
 .../rte_bitratestats_version.map              |   2 +-
 lib/librte_bpf/rte_bpf_version.map            |   4 +
 lib/librte_cfgfile/rte_cfgfile_version.map    |  34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |  10 +-
 .../rte_compressdev_version.map               |   4 +
 .../rte_cryptodev_version.map                 | 102 +-
 lib/librte_distributor/Makefile               |   1 -
 lib/librte_distributor/meson.build            |   2 +-
 lib/librte_distributor/rte_distributor.c      | 126 +--
 lib/librte_distributor/rte_distributor.h      |   1 -
 .../rte_distributor_private.h                 |  35 -
 .../rte_distributor_v1705.h                   |  61 --
 lib/librte_distributor/rte_distributor_v20.c  | 402 -------
 lib/librte_distributor/rte_distributor_v20.h  | 218 ----
 .../rte_distributor_version.map               |  16 +-
 lib/librte_eal/rte_eal_version.map            | 310 ++----
 lib/librte_efd/rte_efd_version.map            |   2 +-
 lib/librte_ethdev/rte_ethdev_version.map      | 160 +--
 lib/librte_eventdev/rte_eventdev_version.map  | 130 +--
 .../rte_flow_classify_version.map             |   4 +
 lib/librte_gro/rte_gro_version.map            |   2 +-
 lib/librte_gso/rte_gso_version.map            |   2 +-
 lib/librte_hash/rte_hash_version.map          |  43 +-
 lib/librte_ip_frag/rte_ip_frag_version.map    |  10 +-
 lib/librte_ipsec/rte_ipsec_version.map        |   4 +
 lib/librte_jobstats/rte_jobstats_version.map  |  10 +-
 lib/librte_kni/rte_kni_version.map            |   2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |   4 +-
 .../rte_latencystats_version.map              |   2 +-
 lib/librte_lpm/rte_lpm.c                      | 996 +-----------------
 lib/librte_lpm/rte_lpm.h                      |  88 --
 lib/librte_lpm/rte_lpm6.c                     | 132 +--
 lib/librte_lpm/rte_lpm6.h                     |  25 -
 lib/librte_lpm/rte_lpm_version.map            |  39 +-
 lib/librte_mbuf/rte_mbuf_version.map          |  41 +-
 lib/librte_member/rte_member_version.map      |   2 +-
 lib/librte_mempool/rte_mempool_version.map    |  44 +-
 lib/librte_meter/rte_meter_version.map        |  13 +-
 lib/librte_metrics/rte_metrics_version.map    |   2 +-
 lib/librte_net/rte_net_version.map            |  23 +-
 lib/librte_pci/rte_pci_version.map            |   2 +-
 lib/librte_pdump/rte_pdump_version.map        |   2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |  36 +-
 lib/librte_port/rte_port_version.map          |  64 +-
 lib/librte_power/rte_power_version.map        |  24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |   4 +-
 lib/librte_rcu/rte_rcu_version.map            |   4 +
 lib/librte_reorder/rte_reorder_version.map    |   8 +-
 lib/librte_ring/rte_ring_version.map          |  10 +-
 lib/librte_sched/rte_sched_version.map        |  14 +-
 lib/librte_security/rte_security_version.map  |   2 +-
 lib/librte_stack/rte_stack_version.map        |   4 +
 lib/librte_table/rte_table_version.map        |   2 +-
 .../rte_telemetry_version.map                 |   4 +
 lib/librte_timer/rte_timer.c                  |  90 +-
 lib/librte_timer/rte_timer.h                  |  15 -
 lib/librte_timer/rte_timer_version.map        |  12 +-
 lib/librte_vhost/rte_vhost_version.map        |  52 +-
 lib/meson.build                               |  18 +-
 meson_options.txt                             |   2 -
 mk/rte.lib.mk                                 |  13 +-
 180 files changed, 1111 insertions(+), 3657 deletions(-)
 create mode 100755 buildtools/check-abi-version.sh
 create mode 100755 buildtools/update-abi.sh
 create mode 100755 buildtools/update_version_map_abi.py
 create mode 100644 config/ABI_VERSION
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h
 delete mode 100644 lib/librte_distributor/rte_distributor_v20.c
 delete mode 100644 lib/librte_distributor/rte_distributor_v20.h

-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
@ 2019-10-16 17:03   ` Anatoly Burakov
  2019-10-17  8:44     ` Bruce Richardson
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 2/9] buildtools: add script for updating symbols abi version Anatoly Burakov
                     ` (7 subsequent siblings)
  9 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 17:03 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Thomas Monjalon, Bruce Richardson, john.mcnamara,
	david.marchand, Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

As per new ABI policy, all of the libraries are now versioned using
one global ABI version. Changes in this patch implement the
necessary steps to enable that.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v3:
    - Removed Windows support from Makefile changes
    - Removed unneeded path conversions from meson files

 buildtools/meson.build |  2 ++
 config/ABI_VERSION     |  1 +
 config/meson.build     |  5 +++--
 drivers/meson.build    | 20 ++++++++++++--------
 lib/meson.build        | 18 +++++++++++-------
 meson_options.txt      |  2 --
 mk/rte.lib.mk          | 13 ++++---------
 7 files changed, 33 insertions(+), 28 deletions(-)
 create mode 100644 config/ABI_VERSION

diff --git a/buildtools/meson.build b/buildtools/meson.build
index 32c79c1308..78ce69977d 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -12,3 +12,5 @@ if python3.found()
 else
 	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
 endif
+
+is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
diff --git a/config/ABI_VERSION b/config/ABI_VERSION
new file mode 100644
index 0000000000..9a7c1e503f
--- /dev/null
+++ b/config/ABI_VERSION
@@ -0,0 +1 @@
+20.0
diff --git a/config/meson.build b/config/meson.build
index a27f731f85..3cfc02406c 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -17,7 +17,8 @@ endforeach
 # set the major version, which might be used by drivers and libraries
 # depending on the configuration options
 pver = meson.project_version().split('.')
-major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
+abi_version = run_command(find_program('cat', 'more'),
+	files('ABI_VERSION')).stdout().strip()
 
 # extract all version information into the build configuration
 dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
@@ -37,7 +38,7 @@ endif
 
 pmd_subdir_opt = get_option('drivers_install_subdir')
 if pmd_subdir_opt.contains('<VERSION>')
-	pmd_subdir_opt = major_version.join(pmd_subdir_opt.split('<VERSION>'))
+	pmd_subdir_opt = abi_version.join(pmd_subdir_opt.split('<VERSION>'))
 endif
 driver_install_path = join_paths(get_option('libdir'), pmd_subdir_opt)
 eal_pmd_path = join_paths(get_option('prefix'), driver_install_path)
diff --git a/drivers/meson.build b/drivers/meson.build
index 2ed2e95411..fd628d9587 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -110,12 +110,19 @@ foreach class:dpdk_driver_classes
 					output: out_filename,
 					depends: [pmdinfogen, tmp_lib])
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/@2@_version.map'.format(
+					meson.current_source_dir(),
+					drv_path, lib_name)
+
+			is_experimental = run_command(is_experimental_cmd,
+				files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
-				lib_version = major_version
-				so_version = major_version
+				lib_version = abi_version
+				so_version = abi_version
 			endif
 
 			# now build the static driver
@@ -128,9 +135,6 @@ foreach class:dpdk_driver_classes
 				install: true)
 
 			# now build the shared driver
-			version_map = '@0@/@1@/@2@_version.map'.format(
-					meson.current_source_dir(),
-					drv_path, lib_name)
 			shared_lib = shared_library(lib_name,
 				sources,
 				objects: objs,
diff --git a/lib/meson.build b/lib/meson.build
index e5ff838934..e626da778c 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -97,12 +97,18 @@ foreach l:libraries
 				cflags += '-DALLOW_EXPERIMENTAL_API'
 			endif
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/rte_@2@_version.map'.format(
+					meson.current_source_dir(), dir_name, name)
+
+			is_experimental = run_command(is_experimental_cmd,
+					files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
-				lib_version = major_version
-				so_version = major_version
+				lib_version = abi_version
+				so_version = abi_version
 			endif
 
 			# first build static lib
@@ -120,8 +126,6 @@ foreach l:libraries
 			# then use pre-build objects to build shared lib
 			sources = []
 			objs += static_lib.extract_all_objects(recursive: false)
-			version_map = '@0@/@1@/rte_@2@_version.map'.format(
-					meson.current_source_dir(), dir_name, name)
 			implib = dir_name + '.dll.a'
 
 			def_file = custom_target(name + '_def',
diff --git a/meson_options.txt b/meson_options.txt
index 448f3e63dc..000e38fd98 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -28,8 +28,6 @@ option('max_lcores', type: 'integer', value: 128,
 	description: 'maximum number of cores/threads supported by EAL')
 option('max_numa_nodes', type: 'integer', value: 4,
 	description: 'maximum number of NUMA nodes supported by EAL')
-option('per_library_versions', type: 'boolean', value: true,
-	description: 'true: each lib gets its own version number, false: DPDK version used for each lib')
 option('tests', type: 'boolean', value: true,
 	description: 'build unit tests')
 option('use_hpet', type: 'boolean', value: false,
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index 4df8849a08..e1ea292b6e 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -11,20 +11,15 @@ EXTLIB_BUILD ?= n
 # VPATH contains at least SRCDIR
 VPATH += $(SRCDIR)
 
-ifneq ($(CONFIG_RTE_MAJOR_ABI),)
-ifneq ($(LIBABIVER),)
-LIBABIVER := $(CONFIG_RTE_MAJOR_ABI)
-endif
+ifneq ($(shell grep "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)
+LIBABIVER := $(shell cat $(RTE_SRCDIR)/config/ABI_VERSION)
+else
+LIBABIVER := 0
 endif
 
 ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
 LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))
 ifeq ($(EXTLIB_BUILD),n)
-ifeq ($(CONFIG_RTE_MAJOR_ABI),)
-ifeq ($(CONFIG_RTE_NEXT_ABI),y)
-LIB := $(LIB).1
-endif
-endif
 CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
 endif
 endif
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v3 2/9] buildtools: add script for updating symbols abi version
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global Anatoly Burakov
@ 2019-10-16 17:03   ` Anatoly Burakov
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 3/9] buildtools: add ABI update shell script Anatoly Burakov
                     ` (6 subsequent siblings)
  9 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 17:03 UTC (permalink / raw)
  To: dev; +Cc: Pawel Modrak, john.mcnamara, bruce.richardson, thomas, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Add a script that automatically merges all stable ABI's under one
ABI section with the new version, while leaving experimental
section exactly as it is.

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v3:
    - Add comments to regex patterns
    
    v2:
    - Reworked script to be pep8-compliant and more reliable

 buildtools/update_version_map_abi.py | 170 +++++++++++++++++++++++++++
 1 file changed, 170 insertions(+)
 create mode 100755 buildtools/update_version_map_abi.py

diff --git a/buildtools/update_version_map_abi.py b/buildtools/update_version_map_abi.py
new file mode 100755
index 0000000000..50283e6a3d
--- /dev/null
+++ b/buildtools/update_version_map_abi.py
@@ -0,0 +1,170 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+"""
+A Python program to update the ABI version and function names in a DPDK
+lib_*_version.map file. Called from the buildtools/update_abi.sh utility.
+"""
+
+from __future__ import print_function
+import argparse
+import sys
+import re
+
+
+def __parse_map_file(f_in):
+    # match function name, followed by semicolon, followed by EOL, optionally
+    # with whitespace inbetween each item
+    func_line_regex = re.compile(r"\s*"
+                                 r"(?P<func>[a-zA-Z_0-9]+)"
+                                 r"\s*"
+                                 r";"
+                                 r"\s*"
+                                 r"$")
+    # match section name, followed by opening bracked, followed by EOL,
+    # optionally with whitespace inbetween each item
+    section_begin_regex = re.compile(r"\s*"
+                                     r"(?P<version>[a-zA-Z0-9_\.]+)"
+                                     r"\s*"
+                                     r"{"
+                                     r"\s*"
+                                     r"$")
+    # match closing bracket, optionally followed by section name (for when we
+    # inherit from another ABI version), followed by semicolon, followed by
+    # EOL, optionally with whitespace inbetween each item
+    section_end_regex = re.compile(r"\s*"
+                                   r"}"
+                                   r"\s*"
+                                   r"(?P<parent>[a-zA-Z0-9_\.]+)?"
+                                   r"\s*"
+                                   r";"
+                                   r"\s*"
+                                   r"$")
+
+    # for stable ABI, we don't care about which version introduced which
+    # function, we just flatten the list. there are dupes in certain files, so
+    # use a set instead of a list
+    stable_lines = set()
+    # copy experimental section as is
+    experimental_lines = []
+    is_experimental = False
+
+    # gather all functions
+    for line in f_in:
+        # clean up the line
+        line = line.strip('\n').strip()
+
+        # is this an end of section?
+        match = section_end_regex.match(line)
+        if match:
+            # whatever section this was, it's not active any more
+            is_experimental = False
+            continue
+
+        # if we're in the middle of experimental section, we need to copy
+        # the section verbatim, so just add the line
+        if is_experimental:
+            experimental_lines += [line]
+            continue
+
+        # skip empty lines
+        if not line:
+            continue
+
+        # is this a beginning of a new section?
+        match = section_begin_regex.match(line)
+        if match:
+            cur_section = match.group("version")
+            # is it experimental?
+            is_experimental = cur_section == "EXPERIMENTAL"
+            continue
+
+        # is this a function?
+        match = func_line_regex.match(line)
+        if match:
+            stable_lines.add(match.group("func"))
+
+    return stable_lines, experimental_lines
+
+
+def __regenerate_map_file(f_out, abi_version, stable_lines,
+                          experimental_lines):
+    # print ABI version header
+    print("DPDK_{} {{".format(abi_version), file=f_out)
+
+    if stable_lines:
+        # print global section
+        print("\tglobal:", file=f_out)
+        # blank line
+        print(file=f_out)
+
+        # print all stable lines, alphabetically sorted
+        for line in sorted(stable_lines):
+            print("\t{};".format(line), file=f_out)
+
+        # another blank line
+        print(file=f_out)
+
+    # print local section
+    print("\tlocal: *;", file=f_out)
+
+    # end stable version
+    print("};", file=f_out)
+
+    # do we have experimental lines?
+    if not experimental_lines:
+        return
+
+    # another blank line
+    print(file=f_out)
+
+    # start experimental section
+    print("EXPERIMENTAL {", file=f_out)
+
+    # print all experimental lines as they were
+    for line in experimental_lines:
+        # don't print empty whitespace
+        if not line:
+            print("", file=f_out)
+        else:
+            print("\t{}".format(line), file=f_out)
+
+    # end section
+    print("};", file=f_out)
+
+
+def __main():
+    arg_parser = argparse.ArgumentParser(
+        description='Merge versions in linker version script.')
+
+    arg_parser.add_argument("map_file", type=str,
+                            help='path to linker version script file '
+                                 '(pattern: *version.map)')
+    arg_parser.add_argument("abi_version", type=str,
+                            help='target ABI version (pattern: MAJOR.MINOR)')
+
+    parsed = arg_parser.parse_args()
+
+    if not parsed.map_file.endswith('version.map'):
+        print("Invalid input file: {}".format(parsed.map_file),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    if not re.match(r"\d{1,2}\.\d{1,2}", parsed.abi_version):
+        print("Invalid ABI version: {}".format(parsed.abi_version),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    with open(parsed.map_file) as f_in:
+        stable_lines, experimental_lines = __parse_map_file(f_in)
+
+    with open(parsed.map_file, 'w') as f_out:
+        __regenerate_map_file(f_out, parsed.abi_version, stable_lines,
+                              experimental_lines)
+
+
+if __name__ == "__main__":
+    __main()
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v3 3/9] buildtools: add ABI update shell script
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
                     ` (2 preceding siblings ...)
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 2/9] buildtools: add script for updating symbols abi version Anatoly Burakov
@ 2019-10-16 17:03   ` Anatoly Burakov
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 4/9] timer: remove deprecated code Anatoly Burakov
                     ` (5 subsequent siblings)
  9 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 17:03 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, bruce.richardson, thomas, david.marchand

In order to facilitate mass updating of version files, add a shell
script that recurses into lib/ and drivers/ directories and calls
the ABI version update script.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v3:
    - Switch to sh rather than bash, and remove bash-isms
    - Address review comments
    
    v2:
    - Add this patch to split the shell script from previous commit
    - Fixup miscellaneous bugs

 buildtools/update-abi.sh | 42 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100755 buildtools/update-abi.sh

diff --git a/buildtools/update-abi.sh b/buildtools/update-abi.sh
new file mode 100755
index 0000000000..89ba5804a6
--- /dev/null
+++ b/buildtools/update-abi.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+abi_version=$1
+abi_version_file="./config/ABI_VERSION"
+update_path="lib drivers"
+
+if [ -z "$1" ]; then
+      # output to stderr
+      >&2 echo "Please provide ABI version"
+      exit 1
+fi
+
+# check version string format
+echo $abi_version | grep -q -e "^[[:digit:]]\{1,2\}\.[[:digit:]]\{1,2\}$"
+if [ "$?" -ne 0 ]; then
+      # output to stderr
+      >&2 echo "ABI version must be formatted as MAJOR.MINOR version"
+      exit 1
+fi
+
+if [ -n "$2" ]; then
+      abi_version_file=$2
+fi
+
+if [ -n "$3" ]; then
+      # drop $1 and $2
+      shift 2
+      # assign all other arguments as update paths
+      update_path=$@
+fi
+
+echo "New ABI version:" $abi_version
+echo "ABI_VERSION path:" $abi_version_file
+echo "Path to update:" $update_path
+
+echo $abi_version > $abi_version_file
+
+find $update_path -name  \*version.map -exec \
+      ./buildtools/update_version_map_abi.py {} \
+      $abi_version \; -print
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v3 4/9] timer: remove deprecated code
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
                     ` (3 preceding siblings ...)
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 3/9] buildtools: add ABI update shell script Anatoly Burakov
@ 2019-10-16 17:03   ` Anatoly Burakov
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 5/9] lpm: " Anatoly Burakov
                     ` (4 subsequent siblings)
  9 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 17:03 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, bruce.richardson, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_timer/rte_timer.c | 90 ++----------------------------------
 lib/librte_timer/rte_timer.h | 15 ------
 2 files changed, 5 insertions(+), 100 deletions(-)

diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c
index bdcf05d06b..de6959b809 100644
--- a/lib/librte_timer/rte_timer.c
+++ b/lib/librte_timer/rte_timer.c
@@ -68,9 +68,6 @@ static struct rte_timer_data *rte_timer_data_arr;
 static const uint32_t default_data_id;
 static uint32_t rte_timer_subsystem_initialized;
 
-/* For maintaining older interfaces for a period */
-static struct rte_timer_data default_timer_data;
-
 /* when debug is enabled, store some statistics */
 #ifdef RTE_LIBRTE_TIMER_DEBUG
 #define __TIMER_STAT_ADD(priv_timer, name, n) do {			\
@@ -131,22 +128,6 @@ rte_timer_data_dealloc(uint32_t id)
 	return 0;
 }
 
-void
-rte_timer_subsystem_init_v20(void)
-{
-	unsigned lcore_id;
-	struct priv_timer *priv_timer = default_timer_data.priv_timer;
-
-	/* since priv_timer is static, it's zeroed by default, so only init some
-	 * fields.
-	 */
-	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id ++) {
-		rte_spinlock_init(&priv_timer[lcore_id].list_lock);
-		priv_timer[lcore_id].prev_lcore = lcore_id;
-	}
-}
-VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
-
 /* Init the timer library. Allocate an array of timer data structs in shared
  * memory, and allocate the zeroth entry for use with original timer
  * APIs. Since the intersection of the sets of lcore ids in primary and
@@ -154,7 +135,7 @@ VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
  * multiple processes.
  */
 int
-rte_timer_subsystem_init_v1905(void)
+rte_timer_subsystem_init(void)
 {
 	const struct rte_memzone *mz;
 	struct rte_timer_data *data;
@@ -209,9 +190,6 @@ rte_timer_subsystem_init_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_subsystem_init(void),
-		  rte_timer_subsystem_init_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_subsystem_init, _v1905, 19.05);
 
 void
 rte_timer_subsystem_finalize(void)
@@ -552,42 +530,13 @@ __rte_timer_reset(struct rte_timer *tim, uint64_t expire,
 
 /* Reset and start the timer associated with the timer handle tim */
 int
-rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-		    enum rte_timer_type type, unsigned int tim_lcore,
-		    rte_timer_cb_t fct, void *arg)
-{
-	uint64_t cur_time = rte_get_timer_cycles();
-	uint64_t period;
-
-	if (unlikely((tim_lcore != (unsigned)LCORE_ID_ANY) &&
-			!(rte_lcore_is_enabled(tim_lcore) ||
-			  rte_lcore_has_role(tim_lcore, ROLE_SERVICE))))
-		return -1;
-
-	if (type == PERIODICAL)
-		period = ticks;
-	else
-		period = 0;
-
-	return __rte_timer_reset(tim,  cur_time + ticks, period, tim_lcore,
-			  fct, arg, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_reset, _v20, 2.0);
-
-int
-rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
+rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		      enum rte_timer_type type, unsigned int tim_lcore,
 		      rte_timer_cb_t fct, void *arg)
 {
 	return rte_timer_alt_reset(default_data_id, tim, ticks, type,
 				   tim_lcore, fct, arg);
 }
-MAP_STATIC_SYMBOL(int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
-				      enum rte_timer_type type,
-				      unsigned int tim_lcore,
-				      rte_timer_cb_t fct, void *arg),
-		  rte_timer_reset_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_reset, _v1905, 19.05);
 
 int
 rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim,
@@ -658,20 +607,10 @@ __rte_timer_stop(struct rte_timer *tim, int local_is_locked,
 
 /* Stop the timer associated with the timer handle tim */
 int
-rte_timer_stop_v20(struct rte_timer *tim)
-{
-	return __rte_timer_stop(tim, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_stop, _v20, 2.0);
-
-int
-rte_timer_stop_v1905(struct rte_timer *tim)
+rte_timer_stop(struct rte_timer *tim)
 {
 	return rte_timer_alt_stop(default_data_id, tim);
 }
-MAP_STATIC_SYMBOL(int rte_timer_stop(struct rte_timer *tim),
-		  rte_timer_stop_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_stop, _v1905, 19.05);
 
 int
 rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim)
@@ -817,15 +756,8 @@ __rte_timer_manage(struct rte_timer_data *timer_data)
 	priv_timer[lcore_id].running_tim = NULL;
 }
 
-void
-rte_timer_manage_v20(void)
-{
-	__rte_timer_manage(&default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_manage, _v20, 2.0);
-
 int
-rte_timer_manage_v1905(void)
+rte_timer_manage(void)
 {
 	struct rte_timer_data *timer_data;
 
@@ -835,8 +767,6 @@ rte_timer_manage_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_manage(void), rte_timer_manage_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_manage, _v1905, 19.05);
 
 int
 rte_timer_alt_manage(uint32_t timer_data_id,
@@ -1074,21 +1004,11 @@ __rte_timer_dump_stats(struct rte_timer_data *timer_data __rte_unused, FILE *f)
 #endif
 }
 
-void
-rte_timer_dump_stats_v20(FILE *f)
-{
-	__rte_timer_dump_stats(&default_timer_data, f);
-}
-VERSION_SYMBOL(rte_timer_dump_stats, _v20, 2.0);
-
 int
-rte_timer_dump_stats_v1905(FILE *f)
+rte_timer_dump_stats(FILE *f)
 {
 	return rte_timer_alt_dump_stats(default_data_id, f);
 }
-MAP_STATIC_SYMBOL(int rte_timer_dump_stats(FILE *f),
-		  rte_timer_dump_stats_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_dump_stats, _v1905, 19.05);
 
 int
 rte_timer_alt_dump_stats(uint32_t timer_data_id __rte_unused, FILE *f)
diff --git a/lib/librte_timer/rte_timer.h b/lib/librte_timer/rte_timer.h
index 05d287d8f2..9dc5fc3092 100644
--- a/lib/librte_timer/rte_timer.h
+++ b/lib/librte_timer/rte_timer.h
@@ -181,8 +181,6 @@ int rte_timer_data_dealloc(uint32_t id);
  *      subsystem
  */
 int rte_timer_subsystem_init(void);
-int rte_timer_subsystem_init_v1905(void);
-void rte_timer_subsystem_init_v20(void);
 
 /**
  * @warning
@@ -250,13 +248,6 @@ void rte_timer_init(struct rte_timer *tim);
 int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		    enum rte_timer_type type, unsigned tim_lcore,
 		    rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
-			  enum rte_timer_type type, unsigned int tim_lcore,
-			  rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-			enum rte_timer_type type, unsigned int tim_lcore,
-			rte_timer_cb_t fct, void *arg);
-
 
 /**
  * Loop until rte_timer_reset() succeeds.
@@ -313,8 +304,6 @@ rte_timer_reset_sync(struct rte_timer *tim, uint64_t ticks,
  *   - (-1): The timer is in the RUNNING or CONFIG state.
  */
 int rte_timer_stop(struct rte_timer *tim);
-int rte_timer_stop_v1905(struct rte_timer *tim);
-int rte_timer_stop_v20(struct rte_timer *tim);
 
 /**
  * Loop until rte_timer_stop() succeeds.
@@ -358,8 +347,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_manage(void);
-int rte_timer_manage_v1905(void);
-void rte_timer_manage_v20(void);
 
 /**
  * Dump statistics about timers.
@@ -371,8 +358,6 @@ void rte_timer_manage_v20(void);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_dump_stats(FILE *f);
-int rte_timer_dump_stats_v1905(FILE *f);
-void rte_timer_dump_stats_v20(FILE *f);
 
 /**
  * @warning
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v3 5/9] lpm: remove deprecated code
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
                     ` (4 preceding siblings ...)
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 4/9] timer: remove deprecated code Anatoly Burakov
@ 2019-10-16 17:03   ` Anatoly Burakov
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 6/9] distributor: " Anatoly Burakov
                     ` (3 subsequent siblings)
  9 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 17:03 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Bruce Richardson, Vladimir Medvedkin,
	john.mcnamara, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_lpm/rte_lpm.c  | 996 ++------------------------------------
 lib/librte_lpm/rte_lpm.h  |  88 ----
 lib/librte_lpm/rte_lpm6.c | 132 +----
 lib/librte_lpm/rte_lpm6.h |  25 -
 4 files changed, 48 insertions(+), 1193 deletions(-)

diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c
index 3a929a1b16..2687564194 100644
--- a/lib/librte_lpm/rte_lpm.c
+++ b/lib/librte_lpm/rte_lpm.c
@@ -89,34 +89,8 @@ depth_to_range(uint8_t depth)
 /*
  * Find an existing lpm table and return a pointer to it.
  */
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name)
-{
-	struct rte_lpm_v20 *l = NULL;
-	struct rte_tailq_entry *te;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_read_lock();
-	TAILQ_FOREACH(te, lpm_list, next) {
-		l = te->data;
-		if (strncmp(name, l->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-	rte_mcfg_tailq_read_unlock();
-
-	if (te == NULL) {
-		rte_errno = ENOENT;
-		return NULL;
-	}
-
-	return l;
-}
-VERSION_SYMBOL(rte_lpm_find_existing, _v20, 2.0);
-
 struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name)
+rte_lpm_find_existing(const char *name)
 {
 	struct rte_lpm *l = NULL;
 	struct rte_tailq_entry *te;
@@ -139,88 +113,12 @@ rte_lpm_find_existing_v1604(const char *name)
 
 	return l;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_find_existing, _v1604, 16.04);
-MAP_STATIC_SYMBOL(struct rte_lpm *rte_lpm_find_existing(const char *name),
-		rte_lpm_find_existing_v1604);
 
 /*
  * Allocates memory for LPM object
  */
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules,
-		__rte_unused int flags)
-{
-	char mem_name[RTE_LPM_NAMESIZE];
-	struct rte_lpm_v20 *lpm = NULL;
-	struct rte_tailq_entry *te;
-	uint32_t mem_size;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	RTE_BUILD_BUG_ON(sizeof(struct rte_lpm_tbl_entry_v20) != 2);
-
-	/* Check user arguments. */
-	if ((name == NULL) || (socket_id < -1) || (max_rules == 0)) {
-		rte_errno = EINVAL;
-		return NULL;
-	}
-
-	snprintf(mem_name, sizeof(mem_name), "LPM_%s", name);
-
-	/* Determine the amount of memory to allocate. */
-	mem_size = sizeof(*lpm) + (sizeof(lpm->rules_tbl[0]) * max_rules);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* guarantee there's no existing */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		lpm = te->data;
-		if (strncmp(name, lpm->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-
-	if (te != NULL) {
-		lpm = NULL;
-		rte_errno = EEXIST;
-		goto exit;
-	}
-
-	/* allocate tailq entry */
-	te = rte_zmalloc("LPM_TAILQ_ENTRY", sizeof(*te), 0);
-	if (te == NULL) {
-		RTE_LOG(ERR, LPM, "Failed to allocate tailq entry\n");
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Allocate memory to store the LPM data structures. */
-	lpm = rte_zmalloc_socket(mem_name, mem_size,
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (lpm == NULL) {
-		RTE_LOG(ERR, LPM, "LPM memory allocation failed\n");
-		rte_free(te);
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Save user arguments. */
-	lpm->max_rules = max_rules;
-	strlcpy(lpm->name, name, sizeof(lpm->name));
-
-	te->data = lpm;
-
-	TAILQ_INSERT_TAIL(lpm_list, te, next);
-
-exit:
-	rte_mcfg_tailq_write_unlock();
-
-	return lpm;
-}
-VERSION_SYMBOL(rte_lpm_create, _v20, 2.0);
-
 struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
+rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config)
 {
 	char mem_name[RTE_LPM_NAMESIZE];
@@ -320,45 +218,12 @@ rte_lpm_create_v1604(const char *name, int socket_id,
 
 	return lpm;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_create, _v1604, 16.04);
-MAP_STATIC_SYMBOL(
-	struct rte_lpm *rte_lpm_create(const char *name, int socket_id,
-			const struct rte_lpm_config *config), rte_lpm_create_v1604);
 
 /*
  * Deallocates memory for given LPM table.
  */
 void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm)
-{
-	struct rte_lpm_list *lpm_list;
-	struct rte_tailq_entry *te;
-
-	/* Check user arguments. */
-	if (lpm == NULL)
-		return;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* find our tailq entry */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		if (te->data == (void *) lpm)
-			break;
-	}
-	if (te != NULL)
-		TAILQ_REMOVE(lpm_list, te, next);
-
-	rte_mcfg_tailq_write_unlock();
-
-	rte_free(lpm);
-	rte_free(te);
-}
-VERSION_SYMBOL(rte_lpm_free, _v20, 2.0);
-
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm)
+rte_lpm_free(struct rte_lpm *lpm)
 {
 	struct rte_lpm_list *lpm_list;
 	struct rte_tailq_entry *te;
@@ -386,9 +251,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm)
 	rte_free(lpm);
 	rte_free(te);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_free, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
-		rte_lpm_free_v1604);
 
 /*
  * Adds a rule to the rule table.
@@ -401,79 +263,7 @@ MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-	uint8_t next_hop)
-{
-	uint32_t rule_gindex, rule_index, last_rule;
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	/* Scan through rule group to see if rule already exists. */
-	if (lpm->rule_info[depth - 1].used_rules > 0) {
-
-		/* rule_gindex stands for rule group index. */
-		rule_gindex = lpm->rule_info[depth - 1].first_rule;
-		/* Initialise rule_index to point to start of rule group. */
-		rule_index = rule_gindex;
-		/* Last rule = Last used rule in this rule group. */
-		last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-		for (; rule_index < last_rule; rule_index++) {
-
-			/* If rule already exists update its next_hop and return. */
-			if (lpm->rules_tbl[rule_index].ip == ip_masked) {
-				lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-				return rule_index;
-			}
-		}
-
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-	} else {
-		/* Calculate the position in which the rule will be stored. */
-		rule_index = 0;
-
-		for (i = depth - 1; i > 0; i--) {
-			if (lpm->rule_info[i - 1].used_rules > 0) {
-				rule_index = lpm->rule_info[i - 1].first_rule
-						+ lpm->rule_info[i - 1].used_rules;
-				break;
-			}
-		}
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-
-		lpm->rule_info[depth - 1].first_rule = rule_index;
-	}
-
-	/* Make room for the new rule in the array. */
-	for (i = RTE_LPM_MAX_DEPTH; i > depth; i--) {
-		if (lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules == lpm->max_rules)
-			return -ENOSPC;
-
-		if (lpm->rule_info[i - 1].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules]
-					= lpm->rules_tbl[lpm->rule_info[i - 1].first_rule];
-			lpm->rule_info[i - 1].first_rule++;
-		}
-	}
-
-	/* Add the new rule. */
-	lpm->rules_tbl[rule_index].ip = ip_masked;
-	lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-	/* Increment the used rules counter for this rule group. */
-	lpm->rule_info[depth - 1].used_rules++;
-
-	return rule_index;
-}
-
-static int32_t
-rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+rule_add(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	uint32_t next_hop)
 {
 	uint32_t rule_gindex, rule_index, last_rule;
@@ -549,30 +339,7 @@ rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static void
-rule_delete_v20(struct rte_lpm_v20 *lpm, int32_t rule_index, uint8_t depth)
-{
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	lpm->rules_tbl[rule_index] =
-			lpm->rules_tbl[lpm->rule_info[depth - 1].first_rule
-				+ lpm->rule_info[depth - 1].used_rules - 1];
-
-	for (i = depth; i < RTE_LPM_MAX_DEPTH; i++) {
-		if (lpm->rule_info[i].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i].first_rule - 1] =
-				lpm->rules_tbl[lpm->rule_info[i].first_rule
-					+ lpm->rule_info[i].used_rules - 1];
-			lpm->rule_info[i].first_rule--;
-		}
-	}
-
-	lpm->rule_info[depth - 1].used_rules--;
-}
-
-static void
-rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
+rule_delete(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
 {
 	int i;
 
@@ -599,28 +366,7 @@ rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_find_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth)
-{
-	uint32_t rule_gindex, last_rule, rule_index;
-
-	VERIFY_DEPTH(depth);
-
-	rule_gindex = lpm->rule_info[depth - 1].first_rule;
-	last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-	/* Scan used rules at given depth to find rule. */
-	for (rule_index = rule_gindex; rule_index < last_rule; rule_index++) {
-		/* If rule is found return the rule index. */
-		if (lpm->rules_tbl[rule_index].ip == ip_masked)
-			return rule_index;
-	}
-
-	/* If rule is not found return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
+rule_find(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
 {
 	uint32_t rule_gindex, last_rule, rule_index;
 
@@ -644,42 +390,7 @@ rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
  * Find, clean and allocate a tbl8.
  */
 static int32_t
-tbl8_alloc_v20(struct rte_lpm_tbl_entry_v20 *tbl8)
-{
-	uint32_t group_idx; /* tbl8 group index. */
-	struct rte_lpm_tbl_entry_v20 *tbl8_entry;
-
-	/* Scan through tbl8 to find a free (i.e. INVALID) tbl8 group. */
-	for (group_idx = 0; group_idx < RTE_LPM_TBL8_NUM_GROUPS;
-			group_idx++) {
-		tbl8_entry = &tbl8[group_idx * RTE_LPM_TBL8_GROUP_NUM_ENTRIES];
-		/* If a free tbl8 group is found clean it and set as VALID. */
-		if (!tbl8_entry->valid_group) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = INVALID,
-				.depth = 0,
-				.valid_group = VALID,
-			};
-			new_tbl8_entry.next_hop = 0;
-
-			memset(&tbl8_entry[0], 0,
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES *
-					sizeof(tbl8_entry[0]));
-
-			__atomic_store(tbl8_entry, &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-
-			/* Return group index for allocated tbl8 group. */
-			return group_idx;
-		}
-	}
-
-	/* If there are no tbl8 groups free then return error. */
-	return -ENOSPC;
-}
-
-static int32_t
-tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
+tbl8_alloc(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 {
 	uint32_t group_idx; /* tbl8 group index. */
 	struct rte_lpm_tbl_entry *tbl8_entry;
@@ -713,22 +424,7 @@ tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 }
 
 static void
-tbl8_free_v20(struct rte_lpm_tbl_entry_v20 *tbl8, uint32_t tbl8_group_start)
-{
-	/* Set tbl8 group invalid*/
-	struct rte_lpm_tbl_entry_v20 zero_tbl8_entry = {
-		.valid = INVALID,
-		.depth = 0,
-		.valid_group = INVALID,
-	};
-	zero_tbl8_entry.next_hop = 0;
-
-	__atomic_store(&tbl8[tbl8_group_start], &zero_tbl8_entry,
-			__ATOMIC_RELAXED);
-}
-
-static void
-tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
+tbl8_free(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 {
 	/* Set tbl8 group invalid*/
 	struct rte_lpm_tbl_entry zero_tbl8_entry = {0};
@@ -738,78 +434,7 @@ tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 }
 
 static __rte_noinline int32_t
-add_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index, tbl24_range, tbl8_index, tbl8_group_end, i, j;
-
-	/* Calculate the index into Table24. */
-	tbl24_index = ip >> 8;
-	tbl24_range = depth_to_range(depth);
-
-	for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-		/*
-		 * For invalid OR valid and non-extended tbl 24 entries set
-		 * entry.
-		 */
-		if (!lpm->tbl24[i].valid || (lpm->tbl24[i].valid_group == 0 &&
-				lpm->tbl24[i].depth <= depth)) {
-
-			struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.valid = VALID,
-				.valid_group = 0,
-				.depth = depth,
-			};
-			new_tbl24_entry.next_hop = next_hop;
-
-			/* Setting tbl24 entry in one go to avoid race
-			 * conditions
-			 */
-			__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-					__ATOMIC_RELEASE);
-
-			continue;
-		}
-
-		if (lpm->tbl24[i].valid_group == 1) {
-			/* If tbl24 entry is valid and extended calculate the
-			 *  index into tbl8.
-			 */
-			tbl8_index = lpm->tbl24[i].group_idx *
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-			tbl8_group_end = tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-			for (j = tbl8_index; j < tbl8_group_end; j++) {
-				if (!lpm->tbl8[j].valid ||
-						lpm->tbl8[j].depth <= depth) {
-					struct rte_lpm_tbl_entry_v20
-						new_tbl8_entry = {
-						.valid = VALID,
-						.valid_group = VALID,
-						.depth = depth,
-					};
-					new_tbl8_entry.next_hop = next_hop;
-
-					/*
-					 * Setting tbl8 entry in one go to avoid
-					 * race conditions
-					 */
-					__atomic_store(&lpm->tbl8[j],
-						&new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-					continue;
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+add_depth_small(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -881,150 +506,7 @@ add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 }
 
 static __rte_noinline int32_t
-add_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index;
-	int32_t tbl8_group_index, tbl8_group_start, tbl8_group_end, tbl8_index,
-		tbl8_range, i;
-
-	tbl24_index = (ip_masked >> 8);
-	tbl8_range = depth_to_range(depth);
-
-	if (!lpm->tbl24[tbl24_index].valid) {
-		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		/* Check tbl8 allocation was successful. */
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		/* Find index into tbl8 and range. */
-		tbl8_index = (tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES) +
-				(ip_masked & 0xFF);
-
-		/* Set tbl8 entry. */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.group_idx = (uint8_t)tbl8_group_index,
-			.valid = VALID,
-			.valid_group = 1,
-			.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} /* If valid entry but not extended calculate the index into Table8. */
-	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
-		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_group_end = tbl8_group_start +
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-		/* Populate new tbl8 with tbl24 value. */
-		for (i = tbl8_group_start; i < tbl8_group_end; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = lpm->tbl24[tbl24_index].depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop =
-				lpm->tbl24[tbl24_index].next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		/* Insert new rule into the tbl8 entry. */
-		for (i = tbl8_index; i < tbl8_index + tbl8_range; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.group_idx = (uint8_t)tbl8_group_index,
-				.valid = VALID,
-				.valid_group = 1,
-				.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} else { /*
-		* If it is valid, extended entry calculate the index into tbl8.
-		*/
-		tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-
-			if (!lpm->tbl8[i].valid ||
-					lpm->tbl8[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-					.valid = VALID,
-					.depth = depth,
-					.valid_group = lpm->tbl8[i].valid_group,
-				};
-				new_tbl8_entry.next_hop = next_hop;
-				/*
-				 * Setting tbl8 entry in one go to avoid race
-				 * condition
-				 */
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-				continue;
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+add_depth_big(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -1037,7 +519,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 
 	if (!lpm->tbl24[tbl24_index].valid) {
 		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		/* Check tbl8 allocation was successful. */
 		if (tbl8_group_index < 0) {
@@ -1083,7 +565,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	} /* If valid entry but not extended calculate the index into Table8. */
 	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
 		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		if (tbl8_group_index < 0) {
 			return tbl8_group_index;
@@ -1177,48 +659,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * Add a route
  */
 int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	int32_t rule_index, status = 0;
-	uint32_t ip_masked;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/* Add the rule to the rule table. */
-	rule_index = rule_add_v20(lpm, ip_masked, depth, next_hop);
-
-	/* If the is no space available for new rule return error. */
-	if (rule_index < 0) {
-		return rule_index;
-	}
-
-	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v20(lpm, ip_masked, depth, next_hop);
-	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v20(lpm, ip_masked, depth, next_hop);
-
-		/*
-		 * If add fails due to exhaustion of tbl8 extensions delete
-		 * rule that was added to rule table.
-		 */
-		if (status < 0) {
-			rule_delete_v20(lpm, rule_index, depth);
-
-			return status;
-		}
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_add, _v20, 2.0);
-
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 	int32_t rule_index, status = 0;
@@ -1231,7 +672,7 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	ip_masked = ip & depth_to_mask(depth);
 
 	/* Add the rule to the rule table. */
-	rule_index = rule_add_v1604(lpm, ip_masked, depth, next_hop);
+	rule_index = rule_add(lpm, ip_masked, depth, next_hop);
 
 	/* If the is no space available for new rule return error. */
 	if (rule_index < 0) {
@@ -1239,16 +680,16 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	}
 
 	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_small(lpm, ip_masked, depth, next_hop);
 	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_big(lpm, ip_masked, depth, next_hop);
 
 		/*
 		 * If add fails due to exhaustion of tbl8 extensions delete
 		 * rule that was added to rule table.
 		 */
 		if (status < 0) {
-			rule_delete_v1604(lpm, rule_index, depth);
+			rule_delete(lpm, rule_index, depth);
 
 			return status;
 		}
@@ -1256,42 +697,12 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_add, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_add(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t next_hop), rte_lpm_add_v1604);
 
 /*
  * Look for a rule in the high-level rules table
  */
 int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop)
-{
-	uint32_t ip_masked;
-	int32_t rule_index;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) ||
-		(next_hop == NULL) ||
-		(depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	/* Look for the rule using rule_find. */
-	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v20(lpm, ip_masked, depth);
-
-	if (rule_index >= 0) {
-		*next_hop = lpm->rules_tbl[rule_index].next_hop;
-		return 1;
-	}
-
-	/* If rule is not found return 0. */
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_is_rule_present, _v20, 2.0);
-
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop)
 {
 	uint32_t ip_masked;
@@ -1305,7 +716,7 @@ uint32_t *next_hop)
 
 	/* Look for the rule using rule_find. */
 	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v1604(lpm, ip_masked, depth);
+	rule_index = rule_find(lpm, ip_masked, depth);
 
 	if (rule_index >= 0) {
 		*next_hop = lpm->rules_tbl[rule_index].next_hop;
@@ -1315,12 +726,9 @@ uint32_t *next_hop)
 	/* If rule is not found return 0. */
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_is_rule_present, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t *next_hop), rte_lpm_is_rule_present_v1604);
 
 static int32_t
-find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
+find_previous_rule(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint8_t *sub_rule_depth)
 {
 	int32_t rule_index;
@@ -1330,7 +738,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
 		ip_masked = ip & depth_to_mask(prev_depth);
 
-		rule_index = rule_find_v20(lpm, ip_masked, prev_depth);
+		rule_index = rule_find(lpm, ip_masked, prev_depth);
 
 		if (rule_index >= 0) {
 			*sub_rule_depth = prev_depth;
@@ -1342,133 +750,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 }
 
 static int32_t
-find_previous_rule_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint8_t *sub_rule_depth)
-{
-	int32_t rule_index;
-	uint32_t ip_masked;
-	uint8_t prev_depth;
-
-	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
-		ip_masked = ip & depth_to_mask(prev_depth);
-
-		rule_index = rule_find_v1604(lpm, ip_masked, prev_depth);
-
-		if (rule_index >= 0) {
-			*sub_rule_depth = prev_depth;
-			return rule_index;
-		}
-	}
-
-	return -1;
-}
-
-static int32_t
-delete_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_range, tbl24_index, tbl8_group_index, tbl8_index, i, j;
-
-	/* Calculate the range and index into Table24. */
-	tbl24_range = depth_to_range(depth);
-	tbl24_index = (ip_masked >> 8);
-
-	/*
-	 * Firstly check the sub_rule_index. A -1 indicates no replacement rule
-	 * and a positive number indicates a sub_rule_index.
-	 */
-	if (sub_rule_index < 0) {
-		/*
-		 * If no replacement rule exists then invalidate entries
-		 * associated with this rule.
-		 */
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20
-					zero_tbl24_entry = {
-						.valid = INVALID,
-						.depth = 0,
-						.valid_group = 0,
-					};
-					zero_tbl24_entry.next_hop = 0;
-				__atomic_store(&lpm->tbl24[i],
-					&zero_tbl24_entry, __ATOMIC_RELEASE);
-			} else if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						lpm->tbl8[j].valid = INVALID;
-				}
-			}
-		}
-	} else {
-		/*
-		 * If a replacement rule exists then modify entries
-		 * associated with this rule.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->rules_tbl[sub_rule_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = sub_rule_depth,
-		};
-
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.valid_group = VALID,
-			.depth = sub_rule_depth,
-		};
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-						__ATOMIC_RELEASE);
-			} else  if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						__atomic_store(&lpm->tbl8[j],
-							&new_tbl8_entry,
-							__ATOMIC_RELAXED);
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_small(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1575,7 +857,7 @@ delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * thus can be recycled
  */
 static int32_t
-tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
+tbl8_recycle_check(struct rte_lpm_tbl_entry *tbl8,
 		uint32_t tbl8_group_start)
 {
 	uint32_t tbl8_group_end, i;
@@ -1622,140 +904,7 @@ tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
 }
 
 static int32_t
-tbl8_recycle_check_v1604(struct rte_lpm_tbl_entry *tbl8,
-		uint32_t tbl8_group_start)
-{
-	uint32_t tbl8_group_end, i;
-	tbl8_group_end = tbl8_group_start + RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-	/*
-	 * Check the first entry of the given tbl8. If it is invalid we know
-	 * this tbl8 does not contain any rule with a depth < RTE_LPM_MAX_DEPTH
-	 *  (As they would affect all entries in a tbl8) and thus this table
-	 *  can not be recycled.
-	 */
-	if (tbl8[tbl8_group_start].valid) {
-		/*
-		 * If first entry is valid check if the depth is less than 24
-		 * and if so check the rest of the entries to verify that they
-		 * are all of this depth.
-		 */
-		if (tbl8[tbl8_group_start].depth <= MAX_DEPTH_TBL24) {
-			for (i = (tbl8_group_start + 1); i < tbl8_group_end;
-					i++) {
-
-				if (tbl8[i].depth !=
-						tbl8[tbl8_group_start].depth) {
-
-					return -EEXIST;
-				}
-			}
-			/* If all entries are the same return the tb8 index */
-			return tbl8_group_start;
-		}
-
-		return -EEXIST;
-	}
-	/*
-	 * If the first entry is invalid check if the rest of the entries in
-	 * the tbl8 are invalid.
-	 */
-	for (i = (tbl8_group_start + 1); i < tbl8_group_end; i++) {
-		if (tbl8[i].valid)
-			return -EEXIST;
-	}
-	/* If no valid entries are found then return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-delete_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_index, tbl8_group_index, tbl8_group_start, tbl8_index,
-			tbl8_range, i;
-	int32_t tbl8_recycle_index;
-
-	/*
-	 * Calculate the index into tbl24 and range. Note: All depths larger
-	 * than MAX_DEPTH_TBL24 are associated with only one tbl24 entry.
-	 */
-	tbl24_index = ip_masked >> 8;
-
-	/* Calculate the index into tbl8 and range. */
-	tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-	tbl8_group_start = tbl8_group_index * RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-	tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-	tbl8_range = depth_to_range(depth);
-
-	if (sub_rule_index < 0) {
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be removed or modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				lpm->tbl8[i].valid = INVALID;
-		}
-	} else {
-		/* Set new tbl8 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.depth = sub_rule_depth,
-			.valid_group = lpm->tbl8[tbl8_group_start].valid_group,
-		};
-
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-		}
-	}
-
-	/*
-	 * Check if there are any valid entries in this tbl8 group. If all
-	 * tbl8 entries are invalid we can free the tbl8 and invalidate the
-	 * associated tbl24 entry.
-	 */
-
-	tbl8_recycle_index = tbl8_recycle_check_v20(lpm->tbl8, tbl8_group_start);
-
-	if (tbl8_recycle_index == -EINVAL) {
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		lpm->tbl24[tbl24_index].valid = 0;
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	} else if (tbl8_recycle_index > -1) {
-		/* Update tbl24 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->tbl8[tbl8_recycle_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = lpm->tbl8[tbl8_recycle_index].depth,
-		};
-
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELAXED);
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_big(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1810,7 +959,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 	 * associated tbl24 entry.
 	 */
 
-	tbl8_recycle_index = tbl8_recycle_check_v1604(lpm->tbl8, tbl8_group_start);
+	tbl8_recycle_index = tbl8_recycle_check(lpm->tbl8, tbl8_group_start);
 
 	if (tbl8_recycle_index == -EINVAL) {
 		/* Set tbl24 before freeing tbl8 to avoid race condition.
@@ -1818,7 +967,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		 */
 		lpm->tbl24[tbl24_index].valid = 0;
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	} else if (tbl8_recycle_index > -1) {
 		/* Update tbl24 entry. */
 		struct rte_lpm_tbl_entry new_tbl24_entry = {
@@ -1834,7 +983,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
 				__ATOMIC_RELAXED);
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	}
 #undef group_idx
 	return 0;
@@ -1844,7 +993,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * Deletes a rule
  */
 int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
+rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
 {
 	int32_t rule_to_delete_index, sub_rule_index;
 	uint32_t ip_masked;
@@ -1863,7 +1012,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * Find the index of the input rule, that needs to be deleted, in the
 	 * rule table.
 	 */
-	rule_to_delete_index = rule_find_v20(lpm, ip_masked, depth);
+	rule_to_delete_index = rule_find(lpm, ip_masked, depth);
 
 	/*
 	 * Check if rule_to_delete_index was found. If no rule was found the
@@ -1873,7 +1022,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 		return -EINVAL;
 
 	/* Delete the rule from the rule table. */
-	rule_delete_v20(lpm, rule_to_delete_index, depth);
+	rule_delete(lpm, rule_to_delete_index, depth);
 
 	/*
 	 * Find rule to replace the rule_to_delete. If there is no rule to
@@ -1881,100 +1030,26 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * entries associated with this rule.
 	 */
 	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v20(lpm, ip, depth, &sub_rule_depth);
+	sub_rule_index = find_previous_rule(lpm, ip, depth, &sub_rule_depth);
 
 	/*
 	 * If the input depth value is less than 25 use function
 	 * delete_depth_small otherwise use delete_depth_big.
 	 */
 	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v20(lpm, ip_masked, depth,
+		return delete_depth_small(lpm, ip_masked, depth,
 				sub_rule_index, sub_rule_depth);
 	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v20(lpm, ip_masked, depth, sub_rule_index,
+		return delete_depth_big(lpm, ip_masked, depth, sub_rule_index,
 				sub_rule_depth);
 	}
 }
-VERSION_SYMBOL(rte_lpm_delete, _v20, 2.0);
-
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
-{
-	int32_t rule_to_delete_index, sub_rule_index;
-	uint32_t ip_masked;
-	uint8_t sub_rule_depth;
-	/*
-	 * Check input arguments. Note: IP must be a positive integer of 32
-	 * bits in length therefore it need not be checked.
-	 */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH)) {
-		return -EINVAL;
-	}
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/*
-	 * Find the index of the input rule, that needs to be deleted, in the
-	 * rule table.
-	 */
-	rule_to_delete_index = rule_find_v1604(lpm, ip_masked, depth);
-
-	/*
-	 * Check if rule_to_delete_index was found. If no rule was found the
-	 * function rule_find returns -EINVAL.
-	 */
-	if (rule_to_delete_index < 0)
-		return -EINVAL;
-
-	/* Delete the rule from the rule table. */
-	rule_delete_v1604(lpm, rule_to_delete_index, depth);
-
-	/*
-	 * Find rule to replace the rule_to_delete. If there is no rule to
-	 * replace the rule_to_delete we return -1 and invalidate the table
-	 * entries associated with this rule.
-	 */
-	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v1604(lpm, ip, depth, &sub_rule_depth);
-
-	/*
-	 * If the input depth value is less than 25 use function
-	 * delete_depth_small otherwise use delete_depth_big.
-	 */
-	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v1604(lpm, ip_masked, depth,
-				sub_rule_index, sub_rule_depth);
-	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v1604(lpm, ip_masked, depth, sub_rule_index,
-				sub_rule_depth);
-	}
-}
-BIND_DEFAULT_SYMBOL(rte_lpm_delete, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth), rte_lpm_delete_v1604);
 
 /*
  * Delete all rules from the LPM table.
  */
 void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm)
-{
-	/* Zero rule information. */
-	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
-
-	/* Zero tbl24. */
-	memset(lpm->tbl24, 0, sizeof(lpm->tbl24));
-
-	/* Zero tbl8. */
-	memset(lpm->tbl8, 0, sizeof(lpm->tbl8));
-
-	/* Delete all rules form the rules table. */
-	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
-}
-VERSION_SYMBOL(rte_lpm_delete_all, _v20, 2.0);
-
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
+rte_lpm_delete_all(struct rte_lpm *lpm)
 {
 	/* Zero rule information. */
 	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
@@ -1989,6 +1064,3 @@ rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
 	/* Delete all rules form the rules table. */
 	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_delete_all, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_delete_all(struct rte_lpm *lpm),
-		rte_lpm_delete_all_v1604);
diff --git a/lib/librte_lpm/rte_lpm.h b/lib/librte_lpm/rte_lpm.h
index 906ec44830..ca9627a141 100644
--- a/lib/librte_lpm/rte_lpm.h
+++ b/lib/librte_lpm/rte_lpm.h
@@ -65,31 +65,6 @@ extern "C" {
 
 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
 /** @internal Tbl24 entry structure. */
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	/**
-	 * Stores Next hop (tbl8 or tbl24 when valid_group is not set) or
-	 * a group index pointing to a tbl8 structure (tbl24 only, when
-	 * valid_group is set)
-	 */
-	RTE_STD_C11
-	union {
-		uint8_t next_hop;
-		uint8_t group_idx;
-	};
-	/* Using single uint8_t to store 3 values. */
-	uint8_t valid     :1;   /**< Validation flag. */
-	/**
-	 * For tbl24:
-	 *  - valid_group == 0: entry stores a next hop
-	 *  - valid_group == 1: entry stores a group_index pointing to a tbl8
-	 * For tbl8:
-	 *  - valid_group indicates whether the current tbl8 is in use or not
-	 */
-	uint8_t valid_group :1;
-	uint8_t depth       :6; /**< Rule depth. */
-} __rte_aligned(sizeof(uint16_t));
-
 __extension__
 struct rte_lpm_tbl_entry {
 	/**
@@ -112,16 +87,6 @@ struct rte_lpm_tbl_entry {
 };
 
 #else
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	uint8_t depth       :6;
-	uint8_t valid_group :1;
-	uint8_t valid       :1;
-	union {
-		uint8_t group_idx;
-		uint8_t next_hop;
-	};
-} __rte_aligned(sizeof(uint16_t));
 
 __extension__
 struct rte_lpm_tbl_entry {
@@ -142,11 +107,6 @@ struct rte_lpm_config {
 };
 
 /** @internal Rule structure. */
-struct rte_lpm_rule_v20 {
-	uint32_t ip; /**< Rule IP address. */
-	uint8_t  next_hop; /**< Rule next hop. */
-};
-
 struct rte_lpm_rule {
 	uint32_t ip; /**< Rule IP address. */
 	uint32_t next_hop; /**< Rule next hop. */
@@ -159,21 +119,6 @@ struct rte_lpm_rule_info {
 };
 
 /** @internal LPM structure. */
-struct rte_lpm_v20 {
-	/* LPM metadata. */
-	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
-	uint32_t max_rules; /**< Max. balanced rules per lpm. */
-	struct rte_lpm_rule_info rule_info[RTE_LPM_MAX_DEPTH]; /**< Rule info table. */
-
-	/* LPM Tables. */
-	struct rte_lpm_tbl_entry_v20 tbl24[RTE_LPM_TBL24_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl24 table. */
-	struct rte_lpm_tbl_entry_v20 tbl8[RTE_LPM_TBL8_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl8 table. */
-	struct rte_lpm_rule_v20 rules_tbl[]
-			__rte_cache_aligned; /**< LPM rules. */
-};
-
 struct rte_lpm {
 	/* LPM metadata. */
 	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
@@ -210,11 +155,6 @@ struct rte_lpm {
 struct rte_lpm *
 rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config);
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules, int flags);
-struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
-		const struct rte_lpm_config *config);
 
 /**
  * Find an existing LPM object and return a pointer to it.
@@ -228,10 +168,6 @@ rte_lpm_create_v1604(const char *name, int socket_id,
  */
 struct rte_lpm *
 rte_lpm_find_existing(const char *name);
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name);
-struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name);
 
 /**
  * Free an LPM object.
@@ -243,10 +179,6 @@ rte_lpm_find_existing_v1604(const char *name);
  */
 void
 rte_lpm_free(struct rte_lpm *lpm);
-void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm);
 
 /**
  * Add a rule to the LPM table.
@@ -264,12 +196,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm);
  */
 int
 rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth, uint32_t next_hop);
-int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -289,12 +215,6 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 int
 rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop);
-int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop);
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -310,10 +230,6 @@ uint32_t *next_hop);
  */
 int
 rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
 
 /**
  * Delete all rules from the LPM table.
@@ -323,10 +239,6 @@ rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
  */
 void
 rte_lpm_delete_all(struct rte_lpm *lpm);
-void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm);
 
 /**
  * Lookup an IP into the LPM table.
diff --git a/lib/librte_lpm/rte_lpm6.c b/lib/librte_lpm/rte_lpm6.c
index 9b8aeb9721..b981e40714 100644
--- a/lib/librte_lpm/rte_lpm6.c
+++ b/lib/librte_lpm/rte_lpm6.c
@@ -808,18 +808,6 @@ add_step(struct rte_lpm6 *lpm, struct rte_lpm6_tbl_entry *tbl,
 	return 1;
 }
 
-/*
- * Add a route
- */
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	return rte_lpm6_add_v1705(lpm, ip, depth, next_hop);
-}
-VERSION_SYMBOL(rte_lpm6_add, _v20, 2.0);
-
-
 /*
  * Simulate adding a route to LPM
  *
@@ -841,7 +829,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	ret = simulate_add_step(lpm, lpm->tbl24, &tbl_next, masked_ip,
-			ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
+		ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
 	total_need_tbl_nb = need_tbl_nb;
 	/*
 	 * Inspect one by one the rest of the bytes until
@@ -850,7 +838,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && ret == 1; i++) {
 		tbl = tbl_next;
 		ret = simulate_add_step(lpm, tbl, &tbl_next, masked_ip, 1,
-				(uint8_t)(i+1), depth, &need_tbl_nb);
+			(uint8_t)(i + 1), depth, &need_tbl_nb);
 		total_need_tbl_nb += need_tbl_nb;
 	}
 
@@ -861,9 +849,12 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	return 0;
 }
 
+/*
+ * Add a route
+ */
 int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop)
+rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+	uint32_t next_hop)
 {
 	struct rte_lpm6_tbl_entry *tbl;
 	struct rte_lpm6_tbl_entry *tbl_next = NULL;
@@ -895,8 +886,8 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	tbl = lpm->tbl24;
 	status = add_step(lpm, tbl, TBL24_IND, &tbl_next, &tbl_next_num,
-			masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
-			is_new_rule);
+		masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
+		is_new_rule);
 	assert(status >= 0);
 
 	/*
@@ -906,17 +897,13 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && status == 1; i++) {
 		tbl = tbl_next;
 		status = add_step(lpm, tbl, tbl_next_num, &tbl_next,
-				&tbl_next_num, masked_ip, 1, (uint8_t)(i+1),
-				depth, next_hop, is_new_rule);
+			&tbl_next_num, masked_ip, 1, (uint8_t)(i + 1),
+			depth, next_hop, is_new_rule);
 		assert(status >= 0);
 	}
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_add, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip,
-				uint8_t depth, uint32_t next_hop),
-		rte_lpm6_add_v1705);
 
 /*
  * Takes a pointer to a table entry and inspect one level.
@@ -955,25 +942,7 @@ lookup_step(const struct rte_lpm6 *lpm, const struct rte_lpm6_tbl_entry *tbl,
  * Looks up an IP
  */
 int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_lookup_v1705(lpm, ip, &next_hop32);
-	if (status == 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-}
-VERSION_SYMBOL(rte_lpm6_lookup, _v20, 2.0);
-
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
+rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
 		uint32_t *next_hop)
 {
 	const struct rte_lpm6_tbl_entry *tbl;
@@ -1000,56 +969,12 @@ rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
-				uint32_t *next_hop), rte_lpm6_lookup_v1705);
 
 /*
  * Looks up a group of IP addresses
  */
 int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t * next_hops, unsigned n)
-{
-	unsigned i;
-	const struct rte_lpm6_tbl_entry *tbl;
-	const struct rte_lpm6_tbl_entry *tbl_next = NULL;
-	uint32_t tbl24_index, next_hop;
-	uint8_t first_byte;
-	int status;
-
-	/* DEBUG: Check user input arguments. */
-	if ((lpm == NULL) || (ips == NULL) || (next_hops == NULL))
-		return -EINVAL;
-
-	for (i = 0; i < n; i++) {
-		first_byte = LOOKUP_FIRST_BYTE;
-		tbl24_index = (ips[i][0] << BYTES2_SIZE) |
-				(ips[i][1] << BYTE_SIZE) | ips[i][2];
-
-		/* Calculate pointer to the first entry to be inspected */
-		tbl = &lpm->tbl24[tbl24_index];
-
-		do {
-			/* Continue inspecting following levels until success or failure */
-			status = lookup_step(lpm, tbl, &tbl_next, ips[i], first_byte++,
-					&next_hop);
-			tbl = tbl_next;
-		} while (status == 1);
-
-		if (status < 0)
-			next_hops[i] = -1;
-		else
-			next_hops[i] = (int16_t)next_hop;
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm6_lookup_bulk_func, _v20, 2.0);
-
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
+rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n)
 {
@@ -1089,37 +1014,12 @@ rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup_bulk_func, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
-				uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-				int32_t *next_hops, unsigned int n),
-		rte_lpm6_lookup_bulk_func_v1705);
 
 /*
  * Look for a rule in the high-level rules table
  */
 int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_is_rule_present_v1705(lpm, ip, depth, &next_hop32);
-	if (status > 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-
-}
-VERSION_SYMBOL(rte_lpm6_is_rule_present, _v20, 2.0);
-
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop)
 {
 	uint8_t masked_ip[RTE_LPM6_IPV6_ADDR_SIZE];
@@ -1135,10 +1035,6 @@ rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 
 	return rule_find(lpm, masked_ip, depth, next_hop);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_is_rule_present, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_is_rule_present(struct rte_lpm6 *lpm,
-				uint8_t *ip, uint8_t depth, uint32_t *next_hop),
-		rte_lpm6_is_rule_present_v1705);
 
 /*
  * Delete a rule from the rule table.
diff --git a/lib/librte_lpm/rte_lpm6.h b/lib/librte_lpm/rte_lpm6.h
index 5d59ccb1fe..37dfb20249 100644
--- a/lib/librte_lpm/rte_lpm6.h
+++ b/lib/librte_lpm/rte_lpm6.h
@@ -96,12 +96,6 @@ rte_lpm6_free(struct rte_lpm6 *lpm);
 int
 rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t next_hop);
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -121,12 +115,6 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 int
 rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop);
-int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop);
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -184,11 +172,6 @@ rte_lpm6_delete_all(struct rte_lpm6 *lpm);
  */
 int
 rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip, uint32_t *next_hop);
-int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop);
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
-		uint32_t *next_hop);
 
 /**
  * Lookup multiple IP addresses in an LPM table.
@@ -210,14 +193,6 @@ int
 rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int32_t *next_hops, unsigned int n);
 
 #ifdef __cplusplus
 }
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v3 6/9] distributor: remove deprecated code
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
                     ` (5 preceding siblings ...)
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 5/9] lpm: " Anatoly Burakov
@ 2019-10-16 17:03   ` Anatoly Burakov
  2019-10-17 10:53     ` Hunt, David
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 7/9] drivers/octeontx: add missing public symbol Anatoly Burakov
                     ` (2 subsequent siblings)
  9 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 17:03 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, David Hunt, john.mcnamara, bruce.richardson,
	thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v3:
    - Removed single mode from distributor as per Dave's comments
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 app/test/test_distributor.c                   | 102 ++---
 app/test/test_distributor_perf.c              |  12 -
 lib/librte_distributor/Makefile               |   1 -
 lib/librte_distributor/meson.build            |   2 +-
 lib/librte_distributor/rte_distributor.c      | 126 +-----
 lib/librte_distributor/rte_distributor.h      |   1 -
 .../rte_distributor_private.h                 |  35 --
 .../rte_distributor_v1705.h                   |  61 ---
 lib/librte_distributor/rte_distributor_v20.c  | 402 ------------------
 lib/librte_distributor/rte_distributor_v20.h  | 218 ----------
 .../rte_distributor_version.map               |  16 +-
 11 files changed, 38 insertions(+), 938 deletions(-)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h
 delete mode 100644 lib/librte_distributor/rte_distributor_v20.c
 delete mode 100644 lib/librte_distributor/rte_distributor_v20.h

diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c
index 7090b55f88..af42f3a991 100644
--- a/app/test/test_distributor.c
+++ b/app/test/test_distributor.c
@@ -511,18 +511,9 @@ test_flush_with_worker_shutdown(struct worker_params *wp,
 static
 int test_error_distributor_create_name(void)
 {
-	struct rte_distributor *d = NULL;
 	struct rte_distributor *db = NULL;
 	char *name = NULL;
 
-	d = rte_distributor_create(name, rte_socket_id(),
-			rte_lcore_count() - 1,
-			RTE_DIST_ALG_SINGLE);
-	if (d != NULL || rte_errno != EINVAL) {
-		printf("ERROR: No error on create() with NULL name param\n");
-		return -1;
-	}
-
 	db = rte_distributor_create(name, rte_socket_id(),
 			rte_lcore_count() - 1,
 			RTE_DIST_ALG_BURST);
@@ -538,17 +529,8 @@ int test_error_distributor_create_name(void)
 static
 int test_error_distributor_create_numworkers(void)
 {
-	struct rte_distributor *ds = NULL;
 	struct rte_distributor *db = NULL;
 
-	ds = rte_distributor_create("test_numworkers", rte_socket_id(),
-			RTE_MAX_LCORE + 10,
-			RTE_DIST_ALG_SINGLE);
-	if (ds != NULL || rte_errno != EINVAL) {
-		printf("ERROR: No error on create() with num_workers > MAX\n");
-		return -1;
-	}
-
 	db = rte_distributor_create("test_numworkers", rte_socket_id(),
 			RTE_MAX_LCORE + 10,
 			RTE_DIST_ALG_BURST);
@@ -589,11 +571,8 @@ quit_workers(struct worker_params *wp, struct rte_mempool *p)
 static int
 test_distributor(void)
 {
-	static struct rte_distributor *ds;
 	static struct rte_distributor *db;
-	static struct rte_distributor *dist[2];
 	static struct rte_mempool *p;
-	int i;
 
 	if (rte_lcore_count() < 2) {
 		printf("Not enough cores for distributor_autotest, expecting at least 2\n");
@@ -613,20 +592,6 @@ test_distributor(void)
 		rte_distributor_clear_returns(db);
 	}
 
-	if (ds == NULL) {
-		ds = rte_distributor_create("Test_dist_single",
-				rte_socket_id(),
-				rte_lcore_count() - 1,
-			RTE_DIST_ALG_SINGLE);
-		if (ds == NULL) {
-			printf("Error creating single distributor\n");
-			return -1;
-		}
-	} else {
-		rte_distributor_flush(ds);
-		rte_distributor_clear_returns(ds);
-	}
-
 	const unsigned nb_bufs = (511 * rte_lcore_count()) < BIG_BATCH ?
 			(BIG_BATCH * 2) - 1 : (511 * rte_lcore_count());
 	if (p == NULL) {
@@ -638,52 +603,39 @@ test_distributor(void)
 		}
 	}
 
-	dist[0] = ds;
-	dist[1] = db;
-
-	for (i = 0; i < 2; i++) {
-
-		worker_params.dist = dist[i];
-		if (i)
-			strlcpy(worker_params.name, "burst",
-					sizeof(worker_params.name));
-		else
-			strlcpy(worker_params.name, "single",
-					sizeof(worker_params.name));
-
-		rte_eal_mp_remote_launch(handle_work,
-				&worker_params, SKIP_MASTER);
-		if (sanity_test(&worker_params, p) < 0)
+	worker_params.dist = db;
+
+	rte_eal_mp_remote_launch(handle_work,
+			&worker_params, SKIP_MASTER);
+	if (sanity_test(&worker_params, p) < 0)
+		goto err;
+	quit_workers(&worker_params, p);
+
+	rte_eal_mp_remote_launch(handle_work_with_free_mbufs,
+			&worker_params, SKIP_MASTER);
+	if (sanity_test_with_mbuf_alloc(&worker_params, p) < 0)
+		goto err;
+	quit_workers(&worker_params, p);
+
+	if (rte_lcore_count() > 2) {
+		rte_eal_mp_remote_launch(handle_work_for_shutdown_test,
+				&worker_params,
+				SKIP_MASTER);
+		if (sanity_test_with_worker_shutdown(&worker_params,
+				p) < 0)
 			goto err;
 		quit_workers(&worker_params, p);
 
-		rte_eal_mp_remote_launch(handle_work_with_free_mbufs,
-				&worker_params, SKIP_MASTER);
-		if (sanity_test_with_mbuf_alloc(&worker_params, p) < 0)
+		rte_eal_mp_remote_launch(handle_work_for_shutdown_test,
+				&worker_params,
+				SKIP_MASTER);
+		if (test_flush_with_worker_shutdown(&worker_params,
+				p) < 0)
 			goto err;
 		quit_workers(&worker_params, p);
 
-		if (rte_lcore_count() > 2) {
-			rte_eal_mp_remote_launch(handle_work_for_shutdown_test,
-					&worker_params,
-					SKIP_MASTER);
-			if (sanity_test_with_worker_shutdown(&worker_params,
-					p) < 0)
-				goto err;
-			quit_workers(&worker_params, p);
-
-			rte_eal_mp_remote_launch(handle_work_for_shutdown_test,
-					&worker_params,
-					SKIP_MASTER);
-			if (test_flush_with_worker_shutdown(&worker_params,
-					p) < 0)
-				goto err;
-			quit_workers(&worker_params, p);
-
-		} else {
-			printf("Too few cores to run worker shutdown test\n");
-		}
-
+	} else {
+		printf("Too few cores to run worker shutdown test\n");
 	}
 
 	if (test_error_distributor_create_numworkers() == -1 ||
diff --git a/app/test/test_distributor_perf.c b/app/test/test_distributor_perf.c
index 664530ff9e..a0bbae1a16 100644
--- a/app/test/test_distributor_perf.c
+++ b/app/test/test_distributor_perf.c
@@ -215,18 +215,6 @@ test_distributor_perf(void)
 	/* first time how long it takes to round-trip a cache line */
 	time_cache_line_switch();
 
-	if (ds == NULL) {
-		ds = rte_distributor_create("Test_perf", rte_socket_id(),
-				rte_lcore_count() - 1,
-				RTE_DIST_ALG_SINGLE);
-		if (ds == NULL) {
-			printf("Error creating distributor\n");
-			return -1;
-		}
-	} else {
-		rte_distributor_clear_returns(ds);
-	}
-
 	if (db == NULL) {
 		db = rte_distributor_create("Test_burst", rte_socket_id(),
 				rte_lcore_count() - 1,
diff --git a/lib/librte_distributor/Makefile b/lib/librte_distributor/Makefile
index 0ef80dcff4..54e9b0cc27 100644
--- a/lib/librte_distributor/Makefile
+++ b/lib/librte_distributor/Makefile
@@ -15,7 +15,6 @@ EXPORT_MAP := rte_distributor_version.map
 LIBABIVER := 1
 
 # all source are stored in SRCS-y
-SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_v20.c
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor.c
 ifeq ($(CONFIG_RTE_ARCH_X86),y)
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor_match_sse.c
diff --git a/lib/librte_distributor/meson.build b/lib/librte_distributor/meson.build
index dba7e3b2aa..d3e2aaa9e0 100644
--- a/lib/librte_distributor/meson.build
+++ b/lib/librte_distributor/meson.build
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-sources = files('rte_distributor.c', 'rte_distributor_v20.c')
+sources = files('rte_distributor.c')
 if arch_subdir == 'x86'
 	sources += files('rte_distributor_match_sse.c')
 else
diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index 21eb1fb0a1..d74fa468c8 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -18,8 +18,6 @@
 
 #include "rte_distributor_private.h"
 #include "rte_distributor.h"
-#include "rte_distributor_v20.h"
-#include "rte_distributor_v1705.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
 
@@ -33,7 +31,7 @@ EAL_REGISTER_TAILQ(rte_dist_burst_tailq)
 /**** Burst Packet APIs called by workers ****/
 
 void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
+rte_distributor_request_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt,
 		unsigned int count)
 {
@@ -42,12 +40,6 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
 
 	volatile int64_t *retptr64;
 
-	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		rte_distributor_request_pkt_v20(d->d_v20,
-			worker_id, oldpkt[0]);
-		return;
-	}
-
 	retptr64 = &(buf->retptr64[0]);
 	/* Spin while handshake bits are set (scheduler clears it) */
 	while (unlikely(*retptr64 & RTE_DISTRIB_GET_BUF)) {
@@ -78,14 +70,9 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
 	 */
 	*retptr64 |= RTE_DISTRIB_GET_BUF;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_request_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_request_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count),
-		rte_distributor_request_pkt_v1705);
 
 int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
+rte_distributor_poll_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -93,11 +80,6 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
 	int count = 0;
 	unsigned int i;
 
-	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		pkts[0] = rte_distributor_poll_pkt_v20(d->d_v20, worker_id);
-		return (pkts[0]) ? 1 : 0;
-	}
-
 	/* If bit is set, return */
 	if (buf->bufptr64[0] & RTE_DISTRIB_GET_BUF)
 		return -1;
@@ -119,27 +101,14 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
 
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_poll_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_poll_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts),
-		rte_distributor_poll_pkt_v1705);
 
 int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
+rte_distributor_get_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts,
 		struct rte_mbuf **oldpkt, unsigned int return_count)
 {
 	int count;
 
-	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		if (return_count <= 1) {
-			pkts[0] = rte_distributor_get_pkt_v20(d->d_v20,
-				worker_id, oldpkt[0]);
-			return (pkts[0]) ? 1 : 0;
-		} else
-			return -EINVAL;
-	}
-
 	rte_distributor_request_pkt(d, worker_id, oldpkt, return_count);
 
 	count = rte_distributor_poll_pkt(d, worker_id, pkts);
@@ -153,27 +122,14 @@ rte_distributor_get_pkt_v1705(struct rte_distributor *d,
 	}
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_get_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_get_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts,
-		struct rte_mbuf **oldpkt, unsigned int return_count),
-		rte_distributor_get_pkt_v1705);
 
 int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
+rte_distributor_return_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt, int num)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
 	unsigned int i;
 
-	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		if (num == 1)
-			return rte_distributor_return_pkt_v20(d->d_v20,
-				worker_id, oldpkt[0]);
-		else
-			return -EINVAL;
-	}
-
 	for (i = 0; i < RTE_DIST_BURST_SIZE; i++)
 		/* Switch off the return bit first */
 		buf->retptr64[i] &= ~RTE_DISTRIB_RETURN_BUF;
@@ -187,10 +143,6 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_return_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_return_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt, int num),
-		rte_distributor_return_pkt_v1705);
 
 /**** APIs called on distributor core ***/
 
@@ -336,7 +288,7 @@ release(struct rte_distributor *d, unsigned int wkr)
 
 /* process a set of packets to distribute them to workers */
 int
-rte_distributor_process_v1705(struct rte_distributor *d,
+rte_distributor_process(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs)
 {
 	unsigned int next_idx = 0;
@@ -347,11 +299,6 @@ rte_distributor_process_v1705(struct rte_distributor *d,
 	uint16_t flows[RTE_DIST_BURST_SIZE] __rte_cache_aligned;
 	unsigned int i, j, w, wid;
 
-	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
-		/* Call the old API */
-		return rte_distributor_process_v20(d->d_v20, mbufs, num_mbufs);
-	}
-
 	if (unlikely(num_mbufs == 0)) {
 		/* Flush out all non-full cache-lines to workers. */
 		for (wid = 0 ; wid < d->num_workers; wid++) {
@@ -470,14 +417,10 @@ rte_distributor_process_v1705(struct rte_distributor *d,
 
 	return num_mbufs;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_process, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_process(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs),
-		rte_distributor_process_v1705);
 
 /* return to the caller, packets returned from workers */
 int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
+rte_distributor_returned_pkts(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -485,12 +428,6 @@ rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
 			max_mbufs : returns->count;
 	unsigned int i;
 
-	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
-		/* Call the old API */
-		return rte_distributor_returned_pkts_v20(d->d_v20,
-				mbufs, max_mbufs);
-	}
-
 	for (i = 0; i < retval; i++) {
 		unsigned int idx = (returns->start + i) &
 				RTE_DISTRIB_RETURNS_MASK;
@@ -502,10 +439,6 @@ rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
 
 	return retval;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_returned_pkts, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_returned_pkts(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs),
-		rte_distributor_returned_pkts_v1705);
 
 /*
  * Return the number of packets in-flight in a distributor, i.e. packets
@@ -527,16 +460,11 @@ total_outstanding(const struct rte_distributor *d)
  * queued up.
  */
 int
-rte_distributor_flush_v1705(struct rte_distributor *d)
+rte_distributor_flush(struct rte_distributor *d)
 {
 	unsigned int flushed;
 	unsigned int wkr;
 
-	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
-		/* Call the old API */
-		return rte_distributor_flush_v20(d->d_v20);
-	}
-
 	flushed = total_outstanding(d);
 
 	while (total_outstanding(d) > 0)
@@ -556,33 +484,21 @@ rte_distributor_flush_v1705(struct rte_distributor *d)
 
 	return flushed;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_flush, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_flush(struct rte_distributor *d),
-		rte_distributor_flush_v1705);
 
 /* clears the internal returns array in the distributor */
 void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d)
+rte_distributor_clear_returns(struct rte_distributor *d)
 {
 	unsigned int wkr;
 
-	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
-		/* Call the old API */
-		rte_distributor_clear_returns_v20(d->d_v20);
-		return;
-	}
-
 	/* throw away returns, so workers can exit */
 	for (wkr = 0; wkr < d->num_workers; wkr++)
 		d->bufs[wkr].retptr64[0] = 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_clear_returns, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_clear_returns(struct rte_distributor *d),
-		rte_distributor_clear_returns_v1705);
 
 /* creates a distributor instance */
 struct rte_distributor *
-rte_distributor_create_v1705(const char *name,
+rte_distributor_create(const char *name,
 		unsigned int socket_id,
 		unsigned int num_workers,
 		unsigned int alg_type)
@@ -593,8 +509,6 @@ rte_distributor_create_v1705(const char *name,
 	const struct rte_memzone *mz;
 	unsigned int i;
 
-	/* TODO Reorganise function properly around RTE_DIST_ALG_SINGLE/BURST */
-
 	/* compilation-time checks */
 	RTE_BUILD_BUG_ON((sizeof(*d) & RTE_CACHE_LINE_MASK) != 0);
 	RTE_BUILD_BUG_ON((RTE_DISTRIB_MAX_WORKERS & 7) != 0);
@@ -605,23 +519,6 @@ rte_distributor_create_v1705(const char *name,
 		return NULL;
 	}
 
-	if (alg_type == RTE_DIST_ALG_SINGLE) {
-		d = malloc(sizeof(struct rte_distributor));
-		if (d == NULL) {
-			rte_errno = ENOMEM;
-			return NULL;
-		}
-		d->d_v20 = rte_distributor_create_v20(name,
-				socket_id, num_workers);
-		if (d->d_v20 == NULL) {
-			free(d);
-			/* rte_errno will have been set */
-			return NULL;
-		}
-		d->alg_type = alg_type;
-		return d;
-	}
-
 	snprintf(mz_name, sizeof(mz_name), RTE_DISTRIB_PREFIX"%s", name);
 	mz = rte_memzone_reserve(mz_name, sizeof(*d), socket_id, NO_FLAGS);
 	if (mz == NULL) {
@@ -656,8 +553,3 @@ rte_distributor_create_v1705(const char *name,
 
 	return d;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_create, _v1705, 17.05);
-MAP_STATIC_SYMBOL(struct rte_distributor *rte_distributor_create(
-		const char *name, unsigned int socket_id,
-		unsigned int num_workers, unsigned int alg_type),
-		rte_distributor_create_v1705);
diff --git a/lib/librte_distributor/rte_distributor.h b/lib/librte_distributor/rte_distributor.h
index 327c0c4ab2..41c06093ee 100644
--- a/lib/librte_distributor/rte_distributor.h
+++ b/lib/librte_distributor/rte_distributor.h
@@ -20,7 +20,6 @@ extern "C" {
 /* Type of distribution (burst/single) */
 enum rte_distributor_alg_type {
 	RTE_DIST_ALG_BURST = 0,
-	RTE_DIST_ALG_SINGLE,
 	RTE_DIST_NUM_ALG_TYPES
 };
 
diff --git a/lib/librte_distributor/rte_distributor_private.h b/lib/librte_distributor/rte_distributor_private.h
index 33cd89410c..552eecc88f 100644
--- a/lib/librte_distributor/rte_distributor_private.h
+++ b/lib/librte_distributor/rte_distributor_private.h
@@ -48,18 +48,6 @@ extern "C" {
 
 #define RTE_DISTRIBUTOR_NAMESIZE 32 /**< Length of name for instance */
 
-/**
- * Buffer structure used to pass the pointer data between cores. This is cache
- * line aligned, but to improve performance and prevent adjacent cache-line
- * prefetches of buffers for other workers, e.g. when worker 1's buffer is on
- * the next cache line to worker 0, we pad this out to three cache lines.
- * Only 64-bits of the memory is actually used though.
- */
-union rte_distributor_buffer_v20 {
-	volatile int64_t bufptr64;
-	char pad[RTE_CACHE_LINE_SIZE*3];
-} __rte_cache_aligned;
-
 /*
  * Transfer up to 8 mbufs at a time to/from workers, and
  * flow matching algorithm optimized for 8 flow IDs at a time
@@ -80,27 +68,6 @@ struct rte_distributor_returned_pkts {
 	struct rte_mbuf *mbufs[RTE_DISTRIB_MAX_RETURNS];
 };
 
-struct rte_distributor_v20 {
-	TAILQ_ENTRY(rte_distributor_v20) next;    /**< Next in list. */
-
-	char name[RTE_DISTRIBUTOR_NAMESIZE];  /**< Name of the ring. */
-	unsigned int num_workers;             /**< Number of workers polling */
-
-	uint32_t in_flight_tags[RTE_DISTRIB_MAX_WORKERS];
-		/**< Tracks the tag being processed per core */
-	uint64_t in_flight_bitmask;
-		/**< on/off bits for in-flight tags.
-		 * Note that if RTE_DISTRIB_MAX_WORKERS is larger than 64 then
-		 * the bitmask has to expand.
-		 */
-
-	struct rte_distributor_backlog backlog[RTE_DISTRIB_MAX_WORKERS];
-
-	union rte_distributor_buffer_v20 bufs[RTE_DISTRIB_MAX_WORKERS];
-
-	struct rte_distributor_returned_pkts returns;
-};
-
 /* All different signature compare functions */
 enum rte_distributor_match_function {
 	RTE_DIST_MATCH_SCALAR = 0,
@@ -153,8 +120,6 @@ struct rte_distributor {
 	struct rte_distributor_returned_pkts returns;
 
 	enum rte_distributor_match_function dist_match_fn;
-
-	struct rte_distributor_v20 *d_v20;
 };
 
 void
diff --git a/lib/librte_distributor/rte_distributor_v1705.h b/lib/librte_distributor/rte_distributor_v1705.h
deleted file mode 100644
index df4d9e8150..0000000000
--- a/lib/librte_distributor/rte_distributor_v1705.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2017 Intel Corporation
- */
-
-#ifndef _RTE_DISTRIB_V1705_H_
-#define _RTE_DISTRIB_V1705_H_
-
-/**
- * @file
- * RTE distributor
- *
- * The distributor is a component which is designed to pass packets
- * one-at-a-time to workers, with dynamic load balancing.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rte_distributor *
-rte_distributor_create_v1705(const char *name, unsigned int socket_id,
-		unsigned int num_workers,
-		unsigned int alg_type);
-
-int
-rte_distributor_process_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs);
-
-int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs);
-
-int
-rte_distributor_flush_v1705(struct rte_distributor *d);
-
-void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d);
-
-int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **pkts,
-	struct rte_mbuf **oldpkt, unsigned int retcount);
-
-int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **oldpkt, int num);
-
-void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count);
-
-int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **mbufs);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_v20.c
deleted file mode 100644
index cdc0969a89..0000000000
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-
-#include <stdio.h>
-#include <sys/queue.h>
-#include <string.h>
-#include <rte_mbuf.h>
-#include <rte_memory.h>
-#include <rte_memzone.h>
-#include <rte_errno.h>
-#include <rte_compat.h>
-#include <rte_string_fns.h>
-#include <rte_eal_memconfig.h>
-#include <rte_pause.h>
-#include <rte_tailq.h>
-
-#include "rte_distributor_v20.h"
-#include "rte_distributor_private.h"
-
-TAILQ_HEAD(rte_distributor_list, rte_distributor_v20);
-
-static struct rte_tailq_elem rte_distributor_tailq = {
-	.name = "RTE_DISTRIBUTOR",
-};
-EAL_REGISTER_TAILQ(rte_distributor_tailq)
-
-/**** APIs called by workers ****/
-
-void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
-		unsigned worker_id, struct rte_mbuf *oldpkt)
-{
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
-	int64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
-			| RTE_DISTRIB_GET_BUF;
-	while (unlikely(buf->bufptr64 & RTE_DISTRIB_FLAGS_MASK))
-		rte_pause();
-	buf->bufptr64 = req;
-}
-VERSION_SYMBOL(rte_distributor_request_pkt, _v20, 2.0);
-
-struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
-		unsigned worker_id)
-{
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
-	if (buf->bufptr64 & RTE_DISTRIB_GET_BUF)
-		return NULL;
-
-	/* since bufptr64 is signed, this should be an arithmetic shift */
-	int64_t ret = buf->bufptr64 >> RTE_DISTRIB_FLAG_BITS;
-	return (struct rte_mbuf *)((uintptr_t)ret);
-}
-VERSION_SYMBOL(rte_distributor_poll_pkt, _v20, 2.0);
-
-struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
-		unsigned worker_id, struct rte_mbuf *oldpkt)
-{
-	struct rte_mbuf *ret;
-	rte_distributor_request_pkt_v20(d, worker_id, oldpkt);
-	while ((ret = rte_distributor_poll_pkt_v20(d, worker_id)) == NULL)
-		rte_pause();
-	return ret;
-}
-VERSION_SYMBOL(rte_distributor_get_pkt, _v20, 2.0);
-
-int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
-		unsigned worker_id, struct rte_mbuf *oldpkt)
-{
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
-	uint64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
-			| RTE_DISTRIB_RETURN_BUF;
-	buf->bufptr64 = req;
-	return 0;
-}
-VERSION_SYMBOL(rte_distributor_return_pkt, _v20, 2.0);
-
-/**** APIs called on distributor core ***/
-
-/* as name suggests, adds a packet to the backlog for a particular worker */
-static int
-add_to_backlog(struct rte_distributor_backlog *bl, int64_t item)
-{
-	if (bl->count == RTE_DISTRIB_BACKLOG_SIZE)
-		return -1;
-
-	bl->pkts[(bl->start + bl->count++) & (RTE_DISTRIB_BACKLOG_MASK)]
-			= item;
-	return 0;
-}
-
-/* takes the next packet for a worker off the backlog */
-static int64_t
-backlog_pop(struct rte_distributor_backlog *bl)
-{
-	bl->count--;
-	return bl->pkts[bl->start++ & RTE_DISTRIB_BACKLOG_MASK];
-}
-
-/* stores a packet returned from a worker inside the returns array */
-static inline void
-store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
-		unsigned *ret_start, unsigned *ret_count)
-{
-	/* store returns in a circular buffer - code is branch-free */
-	d->returns.mbufs[(*ret_start + *ret_count) & RTE_DISTRIB_RETURNS_MASK]
-			= (void *)oldbuf;
-	*ret_start += (*ret_count == RTE_DISTRIB_RETURNS_MASK) & !!(oldbuf);
-	*ret_count += (*ret_count != RTE_DISTRIB_RETURNS_MASK) & !!(oldbuf);
-}
-
-static inline void
-handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
-{
-	d->in_flight_tags[wkr] = 0;
-	d->in_flight_bitmask &= ~(1UL << wkr);
-	d->bufs[wkr].bufptr64 = 0;
-	if (unlikely(d->backlog[wkr].count != 0)) {
-		/* On return of a packet, we need to move the
-		 * queued packets for this core elsewhere.
-		 * Easiest solution is to set things up for
-		 * a recursive call. That will cause those
-		 * packets to be queued up for the next free
-		 * core, i.e. it will return as soon as a
-		 * core becomes free to accept the first
-		 * packet, as subsequent ones will be added to
-		 * the backlog for that core.
-		 */
-		struct rte_mbuf *pkts[RTE_DISTRIB_BACKLOG_SIZE];
-		unsigned i;
-		struct rte_distributor_backlog *bl = &d->backlog[wkr];
-
-		for (i = 0; i < bl->count; i++) {
-			unsigned idx = (bl->start + i) &
-					RTE_DISTRIB_BACKLOG_MASK;
-			pkts[i] = (void *)((uintptr_t)(bl->pkts[idx] >>
-					RTE_DISTRIB_FLAG_BITS));
-		}
-		/* recursive call.
-		 * Note that the tags were set before first level call
-		 * to rte_distributor_process.
-		 */
-		rte_distributor_process_v20(d, pkts, i);
-		bl->count = bl->start = 0;
-	}
-}
-
-/* this function is called when process() fn is called without any new
- * packets. It goes through all the workers and clears any returned packets
- * to do a partial flush.
- */
-static int
-process_returns(struct rte_distributor_v20 *d)
-{
-	unsigned wkr;
-	unsigned flushed = 0;
-	unsigned ret_start = d->returns.start,
-			ret_count = d->returns.count;
-
-	for (wkr = 0; wkr < d->num_workers; wkr++) {
-
-		const int64_t data = d->bufs[wkr].bufptr64;
-		uintptr_t oldbuf = 0;
-
-		if (data & RTE_DISTRIB_GET_BUF) {
-			flushed++;
-			if (d->backlog[wkr].count)
-				d->bufs[wkr].bufptr64 =
-						backlog_pop(&d->backlog[wkr]);
-			else {
-				d->bufs[wkr].bufptr64 = RTE_DISTRIB_GET_BUF;
-				d->in_flight_tags[wkr] = 0;
-				d->in_flight_bitmask &= ~(1UL << wkr);
-			}
-			oldbuf = data >> RTE_DISTRIB_FLAG_BITS;
-		} else if (data & RTE_DISTRIB_RETURN_BUF) {
-			handle_worker_shutdown(d, wkr);
-			oldbuf = data >> RTE_DISTRIB_FLAG_BITS;
-		}
-
-		store_return(oldbuf, d, &ret_start, &ret_count);
-	}
-
-	d->returns.start = ret_start;
-	d->returns.count = ret_count;
-
-	return flushed;
-}
-
-/* process a set of packets to distribute them to workers */
-int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
-		struct rte_mbuf **mbufs, unsigned num_mbufs)
-{
-	unsigned next_idx = 0;
-	unsigned wkr = 0;
-	struct rte_mbuf *next_mb = NULL;
-	int64_t next_value = 0;
-	uint32_t new_tag = 0;
-	unsigned ret_start = d->returns.start,
-			ret_count = d->returns.count;
-
-	if (unlikely(num_mbufs == 0))
-		return process_returns(d);
-
-	while (next_idx < num_mbufs || next_mb != NULL) {
-
-		int64_t data = d->bufs[wkr].bufptr64;
-		uintptr_t oldbuf = 0;
-
-		if (!next_mb) {
-			next_mb = mbufs[next_idx++];
-			next_value = (((int64_t)(uintptr_t)next_mb)
-					<< RTE_DISTRIB_FLAG_BITS);
-			/*
-			 * User is advocated to set tag value for each
-			 * mbuf before calling rte_distributor_process.
-			 * User defined tags are used to identify flows,
-			 * or sessions.
-			 */
-			new_tag = next_mb->hash.usr;
-
-			/*
-			 * Note that if RTE_DISTRIB_MAX_WORKERS is larger than 64
-			 * then the size of match has to be expanded.
-			 */
-			uint64_t match = 0;
-			unsigned i;
-			/*
-			 * to scan for a match use "xor" and "not" to get a 0/1
-			 * value, then use shifting to merge to single "match"
-			 * variable, where a one-bit indicates a match for the
-			 * worker given by the bit-position
-			 */
-			for (i = 0; i < d->num_workers; i++)
-				match |= (!(d->in_flight_tags[i] ^ new_tag)
-					<< i);
-
-			/* Only turned-on bits are considered as match */
-			match &= d->in_flight_bitmask;
-
-			if (match) {
-				next_mb = NULL;
-				unsigned worker = __builtin_ctzl(match);
-				if (add_to_backlog(&d->backlog[worker],
-						next_value) < 0)
-					next_idx--;
-			}
-		}
-
-		if ((data & RTE_DISTRIB_GET_BUF) &&
-				(d->backlog[wkr].count || next_mb)) {
-
-			if (d->backlog[wkr].count)
-				d->bufs[wkr].bufptr64 =
-						backlog_pop(&d->backlog[wkr]);
-
-			else {
-				d->bufs[wkr].bufptr64 = next_value;
-				d->in_flight_tags[wkr] = new_tag;
-				d->in_flight_bitmask |= (1UL << wkr);
-				next_mb = NULL;
-			}
-			oldbuf = data >> RTE_DISTRIB_FLAG_BITS;
-		} else if (data & RTE_DISTRIB_RETURN_BUF) {
-			handle_worker_shutdown(d, wkr);
-			oldbuf = data >> RTE_DISTRIB_FLAG_BITS;
-		}
-
-		/* store returns in a circular buffer */
-		store_return(oldbuf, d, &ret_start, &ret_count);
-
-		if (++wkr == d->num_workers)
-			wkr = 0;
-	}
-	/* to finish, check all workers for backlog and schedule work for them
-	 * if they are ready */
-	for (wkr = 0; wkr < d->num_workers; wkr++)
-		if (d->backlog[wkr].count &&
-				(d->bufs[wkr].bufptr64 & RTE_DISTRIB_GET_BUF)) {
-
-			int64_t oldbuf = d->bufs[wkr].bufptr64 >>
-					RTE_DISTRIB_FLAG_BITS;
-			store_return(oldbuf, d, &ret_start, &ret_count);
-
-			d->bufs[wkr].bufptr64 = backlog_pop(&d->backlog[wkr]);
-		}
-
-	d->returns.start = ret_start;
-	d->returns.count = ret_count;
-	return num_mbufs;
-}
-VERSION_SYMBOL(rte_distributor_process, _v20, 2.0);
-
-/* return to the caller, packets returned from workers */
-int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
-		struct rte_mbuf **mbufs, unsigned max_mbufs)
-{
-	struct rte_distributor_returned_pkts *returns = &d->returns;
-	unsigned retval = (max_mbufs < returns->count) ?
-			max_mbufs : returns->count;
-	unsigned i;
-
-	for (i = 0; i < retval; i++) {
-		unsigned idx = (returns->start + i) & RTE_DISTRIB_RETURNS_MASK;
-		mbufs[i] = returns->mbufs[idx];
-	}
-	returns->start += i;
-	returns->count -= i;
-
-	return retval;
-}
-VERSION_SYMBOL(rte_distributor_returned_pkts, _v20, 2.0);
-
-/* return the number of packets in-flight in a distributor, i.e. packets
- * being worked on or queued up in a backlog.
- */
-static inline unsigned
-total_outstanding(const struct rte_distributor_v20 *d)
-{
-	unsigned wkr, total_outstanding;
-
-	total_outstanding = __builtin_popcountl(d->in_flight_bitmask);
-
-	for (wkr = 0; wkr < d->num_workers; wkr++)
-		total_outstanding += d->backlog[wkr].count;
-
-	return total_outstanding;
-}
-
-/* flush the distributor, so that there are no outstanding packets in flight or
- * queued up. */
-int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d)
-{
-	const unsigned flushed = total_outstanding(d);
-
-	while (total_outstanding(d) > 0)
-		rte_distributor_process_v20(d, NULL, 0);
-
-	return flushed;
-}
-VERSION_SYMBOL(rte_distributor_flush, _v20, 2.0);
-
-/* clears the internal returns array in the distributor */
-void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
-{
-	d->returns.start = d->returns.count = 0;
-#ifndef __OPTIMIZE__
-	memset(d->returns.mbufs, 0, sizeof(d->returns.mbufs));
-#endif
-}
-VERSION_SYMBOL(rte_distributor_clear_returns, _v20, 2.0);
-
-/* creates a distributor instance */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name,
-		unsigned socket_id,
-		unsigned num_workers)
-{
-	struct rte_distributor_v20 *d;
-	struct rte_distributor_list *distributor_list;
-	char mz_name[RTE_MEMZONE_NAMESIZE];
-	const struct rte_memzone *mz;
-
-	/* compilation-time checks */
-	RTE_BUILD_BUG_ON((sizeof(*d) & RTE_CACHE_LINE_MASK) != 0);
-	RTE_BUILD_BUG_ON((RTE_DISTRIB_MAX_WORKERS & 7) != 0);
-	RTE_BUILD_BUG_ON(RTE_DISTRIB_MAX_WORKERS >
-				sizeof(d->in_flight_bitmask) * CHAR_BIT);
-
-	if (name == NULL || num_workers >= RTE_DISTRIB_MAX_WORKERS) {
-		rte_errno = EINVAL;
-		return NULL;
-	}
-
-	snprintf(mz_name, sizeof(mz_name), RTE_DISTRIB_PREFIX"%s", name);
-	mz = rte_memzone_reserve(mz_name, sizeof(*d), socket_id, NO_FLAGS);
-	if (mz == NULL) {
-		rte_errno = ENOMEM;
-		return NULL;
-	}
-
-	d = mz->addr;
-	strlcpy(d->name, name, sizeof(d->name));
-	d->num_workers = num_workers;
-
-	distributor_list = RTE_TAILQ_CAST(rte_distributor_tailq.head,
-					  rte_distributor_list);
-
-	rte_mcfg_tailq_write_lock();
-	TAILQ_INSERT_TAIL(distributor_list, d, next);
-	rte_mcfg_tailq_write_unlock();
-
-	return d;
-}
-VERSION_SYMBOL(rte_distributor_create, _v20, 2.0);
diff --git a/lib/librte_distributor/rte_distributor_v20.h b/lib/librte_distributor/rte_distributor_v20.h
deleted file mode 100644
index 12865658ba..0000000000
--- a/lib/librte_distributor/rte_distributor_v20.h
+++ /dev/null
@@ -1,218 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2010-2014 Intel Corporation
- */
-
-#ifndef _RTE_DISTRIB_V20_H_
-#define _RTE_DISTRIB_V20_H_
-
-/**
- * @file
- * RTE distributor
- *
- * The distributor is a component which is designed to pass packets
- * one-at-a-time to workers, with dynamic load balancing.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define RTE_DISTRIBUTOR_NAMESIZE 32 /**< Length of name for instance */
-
-struct rte_distributor_v20;
-struct rte_mbuf;
-
-/**
- * Function to create a new distributor instance
- *
- * Reserves the memory needed for the distributor operation and
- * initializes the distributor to work with the configured number of workers.
- *
- * @param name
- *   The name to be given to the distributor instance.
- * @param socket_id
- *   The NUMA node on which the memory is to be allocated
- * @param num_workers
- *   The maximum number of workers that will request packets from this
- *   distributor
- * @return
- *   The newly created distributor instance
- */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name, unsigned int socket_id,
-		unsigned int num_workers);
-
-/*  *** APIS to be called on the distributor lcore ***  */
-/*
- * The following APIs are the public APIs which are designed for use on a
- * single lcore which acts as the distributor lcore for a given distributor
- * instance. These functions cannot be called on multiple cores simultaneously
- * without using locking to protect access to the internals of the distributor.
- *
- * NOTE: a given lcore cannot act as both a distributor lcore and a worker lcore
- * for the same distributor instance, otherwise deadlock will result.
- */
-
-/**
- * Process a set of packets by distributing them among workers that request
- * packets. The distributor will ensure that no two packets that have the
- * same flow id, or tag, in the mbuf will be processed at the same time.
- *
- * The user is advocated to set tag for each mbuf before calling this function.
- * If user doesn't set the tag, the tag value can be various values depending on
- * driver implementation and configuration.
- *
- * This is not multi-thread safe and should only be called on a single lcore.
- *
- * @param d
- *   The distributor instance to be used
- * @param mbufs
- *   The mbufs to be distributed
- * @param num_mbufs
- *   The number of mbufs in the mbufs array
- * @return
- *   The number of mbufs processed.
- */
-int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs);
-
-/**
- * Get a set of mbufs that have been returned to the distributor by workers
- *
- * This should only be called on the same lcore as rte_distributor_process()
- *
- * @param d
- *   The distributor instance to be used
- * @param mbufs
- *   The mbufs pointer array to be filled in
- * @param max_mbufs
- *   The size of the mbufs array
- * @return
- *   The number of mbufs returned in the mbufs array.
- */
-int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs);
-
-/**
- * Flush the distributor component, so that there are no in-flight or
- * backlogged packets awaiting processing
- *
- * This should only be called on the same lcore as rte_distributor_process()
- *
- * @param d
- *   The distributor instance to be used
- * @return
- *   The number of queued/in-flight packets that were completed by this call.
- */
-int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d);
-
-/**
- * Clears the array of returned packets used as the source for the
- * rte_distributor_returned_pkts() API call.
- *
- * This should only be called on the same lcore as rte_distributor_process()
- *
- * @param d
- *   The distributor instance to be used
- */
-void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
-
-/*  *** APIS to be called on the worker lcores ***  */
-/*
- * The following APIs are the public APIs which are designed for use on
- * multiple lcores which act as workers for a distributor. Each lcore should use
- * a unique worker id when requesting packets.
- *
- * NOTE: a given lcore cannot act as both a distributor lcore and a worker lcore
- * for the same distributor instance, otherwise deadlock will result.
- */
-
-/**
- * API called by a worker to get a new packet to process. Any previous packet
- * given to the worker is assumed to have completed processing, and may be
- * optionally returned to the distributor via the oldpkt parameter.
- *
- * @param d
- *   The distributor instance to be used
- * @param worker_id
- *   The worker instance number to use - must be less that num_workers passed
- *   at distributor creation time.
- * @param oldpkt
- *   The previous packet, if any, being processed by the worker
- *
- * @return
- *   A new packet to be processed by the worker thread.
- */
-struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
-		unsigned int worker_id, struct rte_mbuf *oldpkt);
-
-/**
- * API called by a worker to return a completed packet without requesting a
- * new packet, for example, because a worker thread is shutting down
- *
- * @param d
- *   The distributor instance to be used
- * @param worker_id
- *   The worker instance number to use - must be less that num_workers passed
- *   at distributor creation time.
- * @param mbuf
- *   The previous packet being processed by the worker
- */
-int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
-		unsigned int worker_id, struct rte_mbuf *mbuf);
-
-/**
- * API called by a worker to request a new packet to process.
- * Any previous packet given to the worker is assumed to have completed
- * processing, and may be optionally returned to the distributor via
- * the oldpkt parameter.
- * Unlike rte_distributor_get_pkt(), this function does not wait for a new
- * packet to be provided by the distributor.
- *
- * NOTE: after calling this function, rte_distributor_poll_pkt() should
- * be used to poll for the packet requested. The rte_distributor_get_pkt()
- * API should *not* be used to try and retrieve the new packet.
- *
- * @param d
- *   The distributor instance to be used
- * @param worker_id
- *   The worker instance number to use - must be less that num_workers passed
- *   at distributor creation time.
- * @param oldpkt
- *   The previous packet, if any, being processed by the worker
- */
-void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
-		unsigned int worker_id, struct rte_mbuf *oldpkt);
-
-/**
- * API called by a worker to check for a new packet that was previously
- * requested by a call to rte_distributor_request_pkt(). It does not wait
- * for the new packet to be available, but returns NULL if the request has
- * not yet been fulfilled by the distributor.
- *
- * @param d
- *   The distributor instance to be used
- * @param worker_id
- *   The worker instance number to use - must be less that num_workers passed
- *   at distributor creation time.
- *
- * @return
- *   A new packet to be processed by the worker thread, or NULL if no
- *   packet is yet available.
- */
-struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
-		unsigned int worker_id);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 3a285b394e..5643ab85fb 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_17.05 {
 	global:
 
 	rte_distributor_clear_returns;
@@ -13,17 +13,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_17.05 {
-	global:
-
-	rte_distributor_clear_returns;
-	rte_distributor_create;
-	rte_distributor_flush;
-	rte_distributor_get_pkt;
-	rte_distributor_poll_pkt;
-	rte_distributor_process;
-	rte_distributor_request_pkt;
-	rte_distributor_return_pkt;
-	rte_distributor_returned_pkts;
-} DPDK_2.0;
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v3 7/9] drivers/octeontx: add missing public symbol
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
                     ` (6 preceding siblings ...)
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 6/9] distributor: " Anatoly Burakov
@ 2019-10-16 17:03   ` Anatoly Burakov
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 8/9] build: change ABI version to 20.0 Anatoly Burakov
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 9/9] buildtools: add ABI versioning check script Anatoly Burakov
  9 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 17:03 UTC (permalink / raw)
  To: dev
  Cc: Jerin Jacob, john.mcnamara, bruce.richardson, thomas,
	david.marchand, pbhagavatula, stable

The logtype symbol was missing from the .map file. Add it.

Fixes: d8dd31652cf4 ("common/octeontx: move mbox to common folder")
Cc: pbhagavatula@caviumnetworks.com
Cc: stable@dpdk.org

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - add this patch to avoid compile breakage when bumping ABI

 drivers/common/octeontx/rte_common_octeontx_version.map | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index f04b3b7f8a..a9b3cff9bc 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,6 +1,7 @@
 DPDK_18.05 {
 	global:
 
+	octeontx_logtype_mbox;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
 	octeontx_mbox_send;
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v3 8/9] build: change ABI version to 20.0
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
                     ` (7 preceding siblings ...)
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 7/9] drivers/octeontx: add missing public symbol Anatoly Burakov
@ 2019-10-16 17:03   ` Anatoly Burakov
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 9/9] buildtools: add ABI versioning check script Anatoly Burakov
  9 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 17:03 UTC (permalink / raw)
  To: dev
  Cc: Pawel Modrak, Nicolas Chautru, Hemant Agrawal, Sachin Saxena,
	Rosen Xu, Stephen Hemminger, Anoob Joseph, Tomasz Duszynski,
	Liron Himi, Jerin Jacob, Nithin Dabilpuram, Vamsi Attunuru,
	Lee Daly, Fiona Trahe, Ashish Gupta, Sunila Sahu, Declan Doherty,
	Pablo de Lara, Gagandeep Singh, Ravi Kumar, Akhil Goyal,
	Michael Shamis, Nagadheeraj Rottela, Srikanth Jampala, Fan Zhang,
	Jay Zhou, Nipun Gupta, Mattias Rönnblom, Pavan Nikhilesh,
	Liang Ma, Peter Mccarthy, Harry van Haaren, Artem V. Andreev,
	Andrew Rybchenko, Olivier Matz, Gage Eads, John W. Linville,
	Xiaolong Ye, Qi Zhang, Shepard Siegel, Ed Czeck, John Miller,
	Igor Russkikh, Pavel Belous, Allain Legacy, Matt Peters,
	Rasesh Mody, Shahed Shaikh, Ajit Khaparde, Somnath Kotur,
	Chas Williams, Rahul Lakkireddy, Wenzhuo Lu, Marcin Wojtas,
	Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Igor Chauskin,
	John Daley, Hyong Youb Kim, Gaetan Rivet, Xiao Wang, Ziyang Xuan,
	Xiaoyun Wang, Guoyang Zhou, Wei Hu (Xavier), Min Hu (Connor),
	Yisen Zhuang, Beilei Xing, Jingjing Wu, Qiming Yang,
	Konstantin Ananyev, Ferruh Yigit, Shijith Thotton,
	Srisivasubramanian Srinivasan, Jakub Grajciar, Matan Azrad,
	Shahaf Shuler, Viacheslav Ovsiienko, Zyta Szpak,
	K. Y. Srinivasan, Haiyang Zhang, Rastislav Cernay, Jan Remes,
	Alejandro Lucero, Tetsuya Mukawa, Kiran Kumar K,
	Bruce Richardson, Jasvinder Singh, Cristian Dumitrescu,
	Keith Wiles, Maciej Czekaj, Maxime Coquelin, Tiwei Bie,
	Zhihong Wang, Yong Wang, Tianfei zhang, Xiaoyun Li, Satha Rao,
	Shreyansh Jain, David Hunt, Byron Marohn, Yipeng Wang,
	Thomas Monjalon, Bernard Iremonger, Jiayu Hu, Sameh Gobriel,
	Reshma Pattan, Vladimir Medvedkin, Honnappa Nagarahalli,
	Kevin Laatz, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Merge all vesions in linker version script files to DPDK_20.0.

This commit was generated by running the following command:

:~/DPDK$ buildtools/update-abi.sh 20.0

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - Regenerate the commit using the new script

 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |   8 +-
 .../null/rte_pmd_bbdev_null_version.map       |   2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |   2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     | 115 +++----
 drivers/bus/fslmc/rte_bus_fslmc_version.map   | 154 ++++-----
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |  14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |   2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |  12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |  12 +-
 drivers/common/cpt/rte_common_cpt_version.map |   4 +-
 .../common/dpaax/rte_common_dpaax_version.map |   4 +-
 .../common/mvep/rte_common_mvep_version.map   |   6 +-
 .../octeontx/rte_common_octeontx_version.map  |   6 +-
 .../rte_common_octeontx2_version.map          |  16 +-
 .../compress/isal/rte_pmd_isal_version.map    |   2 +-
 .../rte_pmd_octeontx_compress_version.map     |   2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |   2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |   2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |   2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |   2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |   2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |   3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |   3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |  10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |  10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |   2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |   2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |   2 +-
 .../null/rte_pmd_null_crypto_version.map      |   2 +-
 .../rte_pmd_octeontx_crypto_version.map       |   3 +-
 .../openssl/rte_pmd_openssl_version.map       |   2 +-
 .../rte_pmd_crypto_scheduler_version.map      |  19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |   2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |   2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |   2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |   3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |   2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |   2 +-
 .../rte_pmd_octeontx_event_version.map        |   2 +-
 .../rte_pmd_octeontx2_event_version.map       |   3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |   2 +-
 .../rte_pmd_skeleton_event_version.map        |   3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |   2 +-
 .../bucket/rte_mempool_bucket_version.map     |   3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |   2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |  12 +-
 .../octeontx/rte_mempool_octeontx_version.map |   2 +-
 .../rte_mempool_octeontx2_version.map         |   4 +-
 .../mempool/ring/rte_mempool_ring_version.map |   3 +-
 .../stack/rte_mempool_stack_version.map       |   3 +-
 .../af_packet/rte_pmd_af_packet_version.map   |   3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |   2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |   5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |   4 +-
 drivers/net/avp/rte_pmd_avp_version.map       |   2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |   2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |   3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |   4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |  47 +--
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |   3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |  11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |  12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |   3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |   3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |   3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |   3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |   3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |   3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |   3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |   4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |  65 ++--
 drivers/net/iavf/rte_pmd_iavf_version.map     |   3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |   3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |   3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |   3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |  62 ++--
 drivers/net/kni/rte_pmd_kni_version.map       |   3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |   3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |   5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |   3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |   2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |   2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |   2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |   4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |   3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |   2 +-
 drivers/net/null/rte_pmd_null_version.map     |   3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |  10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |   3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |   3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |   3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |  10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |   3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |   2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |   2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |   3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |   3 +-
 .../rte_pmd_vdev_netvsc_version.map           |   3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |  11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |   3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |   3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |   3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |   4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |   3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |   3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |   5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |   3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |   3 +-
 lib/librte_acl/rte_acl_version.map            |   2 +-
 lib/librte_bbdev/rte_bbdev_version.map        |   4 +
 .../rte_bitratestats_version.map              |   2 +-
 lib/librte_bpf/rte_bpf_version.map            |   4 +
 lib/librte_cfgfile/rte_cfgfile_version.map    |  34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |  10 +-
 .../rte_compressdev_version.map               |   4 +
 .../rte_cryptodev_version.map                 | 102 ++----
 .../rte_distributor_version.map               |   2 +-
 lib/librte_eal/rte_eal_version.map            | 310 +++++++-----------
 lib/librte_efd/rte_efd_version.map            |   2 +-
 lib/librte_ethdev/rte_ethdev_version.map      | 160 +++------
 lib/librte_eventdev/rte_eventdev_version.map  | 130 +++-----
 .../rte_flow_classify_version.map             |   4 +
 lib/librte_gro/rte_gro_version.map            |   2 +-
 lib/librte_gso/rte_gso_version.map            |   2 +-
 lib/librte_hash/rte_hash_version.map          |  43 +--
 lib/librte_ip_frag/rte_ip_frag_version.map    |  10 +-
 lib/librte_ipsec/rte_ipsec_version.map        |   4 +
 lib/librte_jobstats/rte_jobstats_version.map  |  10 +-
 lib/librte_kni/rte_kni_version.map            |   2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |   4 +-
 .../rte_latencystats_version.map              |   2 +-
 lib/librte_lpm/rte_lpm_version.map            |  39 +--
 lib/librte_mbuf/rte_mbuf_version.map          |  41 +--
 lib/librte_member/rte_member_version.map      |   2 +-
 lib/librte_mempool/rte_mempool_version.map    |  44 +--
 lib/librte_meter/rte_meter_version.map        |  13 +-
 lib/librte_metrics/rte_metrics_version.map    |   2 +-
 lib/librte_net/rte_net_version.map            |  23 +-
 lib/librte_pci/rte_pci_version.map            |   2 +-
 lib/librte_pdump/rte_pdump_version.map        |   2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |  36 +-
 lib/librte_port/rte_port_version.map          |  64 +---
 lib/librte_power/rte_power_version.map        |  24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |   4 +-
 lib/librte_rcu/rte_rcu_version.map            |   4 +
 lib/librte_reorder/rte_reorder_version.map    |   8 +-
 lib/librte_ring/rte_ring_version.map          |  10 +-
 lib/librte_sched/rte_sched_version.map        |  14 +-
 lib/librte_security/rte_security_version.map  |   2 +-
 lib/librte_stack/rte_stack_version.map        |   4 +
 lib/librte_table/rte_table_version.map        |   2 +-
 .../rte_telemetry_version.map                 |   4 +
 lib/librte_timer/rte_timer_version.map        |  12 +-
 lib/librte_vhost/rte_vhost_version.map        |  52 +--
 154 files changed, 721 insertions(+), 1399 deletions(-)

diff --git a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
index f64b0f9c27..6bcea2cc7f 100644
--- a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
+++ b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
@@ -1,10 +1,10 @@
-DPDK_19.08 {
-    local: *;
+DPDK_20.0 {
+	local: *;
 };
 
 EXPERIMENTAL {
-    global:
+	global:
 
-    fpga_lte_fec_configure;
+	fpga_lte_fec_configure;
 
 };
diff --git a/drivers/baseband/null/rte_pmd_bbdev_null_version.map b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/null/rte_pmd_bbdev_null_version.map
+++ b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
+++ b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map
index a221522c23..9ab8c76eef 100644
--- a/drivers/bus/dpaa/rte_bus_dpaa_version.map
+++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	bman_acquire;
@@ -8,127 +8,94 @@ DPDK_17.11 {
 	bman_new_pool;
 	bman_query_free_buffers;
 	bman_release;
+	bman_thread_irq;
+	dpaa_logtype_eventdev;
 	dpaa_logtype_mempool;
 	dpaa_logtype_pmd;
 	dpaa_netcfg;
+	dpaa_svr_family;
 	fman_ccsr_map_fd;
 	fman_dealloc_bufs_mask_hi;
 	fman_dealloc_bufs_mask_lo;
 	fman_if_add_mac_addr;
 	fman_if_clear_mac_addr;
 	fman_if_disable_rx;
-	fman_if_enable_rx;
 	fman_if_discard_rx_errors;
-	fman_if_get_fc_threshold;
+	fman_if_enable_rx;
 	fman_if_get_fc_quanta;
+	fman_if_get_fc_threshold;
 	fman_if_get_fdoff;
+	fman_if_get_sg_enable;
 	fman_if_loopback_disable;
 	fman_if_loopback_enable;
 	fman_if_promiscuous_disable;
 	fman_if_promiscuous_enable;
 	fman_if_reset_mcast_filter_table;
 	fman_if_set_bp;
-	fman_if_set_fc_threshold;
 	fman_if_set_fc_quanta;
+	fman_if_set_fc_threshold;
 	fman_if_set_fdoff;
 	fman_if_set_ic_params;
 	fman_if_set_maxfrm;
 	fman_if_set_mcast_filter_table;
+	fman_if_set_sg;
 	fman_if_stats_get;
 	fman_if_stats_get_all;
 	fman_if_stats_reset;
 	fman_ip_rev;
+	fsl_qman_fq_portal_create;
 	netcfg_acquire;
 	netcfg_release;
 	of_find_compatible_node;
+	of_get_mac_address;
 	of_get_property;
+	per_lcore_dpaa_io;
+	per_lcore_held_bufs;
 	qm_channel_caam;
+	qm_channel_pool1;
+	qman_alloc_cgrid_range;
+	qman_alloc_pool_range;
+	qman_clear_irq;
+	qman_create_cgr;
 	qman_create_fq;
+	qman_dca_index;
+	qman_delete_cgr;
 	qman_dequeue;
 	qman_dqrr_consume;
 	qman_enqueue;
 	qman_enqueue_multi;
+	qman_enqueue_multi_fq;
 	qman_fq_fqid;
+	qman_fq_portal_irqsource_add;
+	qman_fq_portal_irqsource_remove;
+	qman_fq_portal_thread_irq;
 	qman_fq_state;
 	qman_global_init;
 	qman_init_fq;
-	qman_poll_dqrr;
-	qman_query_fq_np;
-	qman_set_vdq;
-	qman_reserve_fqid_range;
-	qman_volatile_dequeue;
-	rte_dpaa_driver_register;
-	rte_dpaa_driver_unregister;
-	rte_dpaa_mem_ptov;
-	rte_dpaa_portal_init;
-
-	local: *;
-};
-
-DPDK_18.02 {
-	global:
-
-	dpaa_logtype_eventdev;
-	dpaa_svr_family;
-	per_lcore_dpaa_io;
-	per_lcore_held_bufs;
-	qm_channel_pool1;
-	qman_alloc_cgrid_range;
-	qman_alloc_pool_range;
-	qman_create_cgr;
-	qman_dca_index;
-	qman_delete_cgr;
-	qman_enqueue_multi_fq;
+	qman_irqsource_add;
+	qman_irqsource_remove;
 	qman_modify_cgr;
 	qman_oos_fq;
+	qman_poll_dqrr;
 	qman_portal_dequeue;
 	qman_portal_poll_rx;
 	qman_query_fq_frm_cnt;
+	qman_query_fq_np;
 	qman_release_cgrid_range;
+	qman_reserve_fqid_range;
 	qman_retire_fq;
+	qman_set_fq_lookup_table;
+	qman_set_vdq;
 	qman_static_dequeue_add;
-	rte_dpaa_portal_fq_close;
-	rte_dpaa_portal_fq_init;
-
-} DPDK_17.11;
-
-DPDK_18.08 {
-	global:
-
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-	of_get_mac_address;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-
-	bman_thread_irq;
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-	qman_clear_irq;
-
-	qman_irqsource_add;
-	qman_irqsource_remove;
 	qman_thread_fd;
 	qman_thread_irq;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	qman_set_fq_lookup_table;
-
-} DPDK_18.11;
-
-DPDK_19.11 {
-	global:
-
-	fsl_qman_fq_portal_create;
-	qman_fq_portal_irqsource_add;
-	qman_fq_portal_irqsource_remove;
-	qman_fq_portal_thread_irq;
-
-} DPDK_19.05;
+	qman_volatile_dequeue;
+	rte_dpaa_driver_register;
+	rte_dpaa_driver_unregister;
+	rte_dpaa_mem_ptov;
+	rte_dpaa_portal_fq_close;
+	rte_dpaa_portal_fq_init;
+	rte_dpaa_portal_init;
+
+	local: *;
+};
diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map
index 4da787236b..fe45575046 100644
--- a/drivers/bus/fslmc/rte_bus_fslmc_version.map
+++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map
@@ -1,32 +1,67 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
+	dpaa2_affine_qbman_ethrx_swp;
 	dpaa2_affine_qbman_swp;
 	dpaa2_alloc_dpbp_dev;
 	dpaa2_alloc_dq_storage;
+	dpaa2_dpbp_supported;
+	dpaa2_dqrr_size;
+	dpaa2_eqcr_size;
 	dpaa2_free_dpbp_dev;
 	dpaa2_free_dq_storage;
+	dpaa2_free_eq_descriptors;
+	dpaa2_get_qbman_swp;
+	dpaa2_io_portal;
+	dpaa2_svr_family;
+	dpaa2_virt_mode;
 	dpbp_disable;
 	dpbp_enable;
 	dpbp_get_attributes;
 	dpbp_get_num_free_bufs;
 	dpbp_open;
 	dpbp_reset;
+	dpci_get_opr;
+	dpci_set_opr;
+	dpci_set_rx_queue;
+	dpcon_get_attributes;
+	dpcon_open;
+	dpdmai_close;
+	dpdmai_disable;
+	dpdmai_enable;
+	dpdmai_get_attributes;
+	dpdmai_get_rx_queue;
+	dpdmai_get_tx_queue;
+	dpdmai_open;
+	dpdmai_set_rx_queue;
+	dpio_add_static_dequeue_channel;
 	dpio_close;
 	dpio_disable;
 	dpio_enable;
 	dpio_get_attributes;
 	dpio_open;
+	dpio_remove_static_dequeue_channel;
 	dpio_reset;
 	dpio_set_stashing_destination;
+	mc_get_soc_version;
+	mc_get_version;
 	mc_send_command;
 	per_lcore__dpaa2_io;
+	per_lcore_dpaa2_held_bufs;
 	qbman_check_command_complete;
+	qbman_check_new_result;
 	qbman_eq_desc_clear;
+	qbman_eq_desc_set_dca;
 	qbman_eq_desc_set_fq;
 	qbman_eq_desc_set_no_orp;
+	qbman_eq_desc_set_orp;
 	qbman_eq_desc_set_qd;
 	qbman_eq_desc_set_response;
+	qbman_eq_desc_set_token;
+	qbman_fq_query_state;
+	qbman_fq_state_frame_count;
+	qbman_get_dqrr_from_idx;
+	qbman_get_dqrr_idx;
 	qbman_pull_desc_clear;
 	qbman_pull_desc_set_fq;
 	qbman_pull_desc_set_numframes;
@@ -35,112 +70,43 @@ DPDK_17.05 {
 	qbman_release_desc_set_bpid;
 	qbman_result_DQ_fd;
 	qbman_result_DQ_flags;
-	qbman_result_has_new_result;
-	qbman_swp_acquire;
-	qbman_swp_pull;
-	qbman_swp_release;
-	rte_fslmc_driver_register;
-	rte_fslmc_driver_unregister;
-	rte_fslmc_vfio_dmamap;
-	rte_mcp_ptr_list;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	dpaa2_io_portal;
-	dpaa2_get_qbman_swp;
-	dpci_set_rx_queue;
-	dpcon_open;
-	dpcon_get_attributes;
-	dpio_add_static_dequeue_channel;
-	dpio_remove_static_dequeue_channel;
-	mc_get_soc_version;
-	mc_get_version;
-	qbman_check_new_result;
-	qbman_eq_desc_set_dca;
-	qbman_get_dqrr_from_idx;
-	qbman_get_dqrr_idx;
 	qbman_result_DQ_fqd_ctx;
+	qbman_result_DQ_odpid;
+	qbman_result_DQ_seqnum;
 	qbman_result_SCN_state;
+	qbman_result_eqresp_fd;
+	qbman_result_eqresp_rc;
+	qbman_result_eqresp_rspid;
+	qbman_result_eqresp_set_rspid;
+	qbman_result_has_new_result;
+	qbman_swp_acquire;
 	qbman_swp_dqrr_consume;
+	qbman_swp_dqrr_idx_consume;
 	qbman_swp_dqrr_next;
 	qbman_swp_enqueue_multiple;
 	qbman_swp_enqueue_multiple_desc;
+	qbman_swp_enqueue_multiple_fd;
 	qbman_swp_interrupt_clear_status;
+	qbman_swp_prefetch_dqrr_next;
+	qbman_swp_pull;
 	qbman_swp_push_set;
+	qbman_swp_release;
 	rte_dpaa2_alloc_dpci_dev;
-	rte_fslmc_object_register;
-	rte_global_active_dqs_list;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	dpaa2_dpbp_supported;
 	rte_dpaa2_dev_type;
+	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_intr_disable;
 	rte_dpaa2_intr_enable;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	dpaa2_svr_family;
-	dpaa2_virt_mode;
-	per_lcore_dpaa2_held_bufs;
-	qbman_fq_query_state;
-	qbman_fq_state_frame_count;
-	qbman_swp_dqrr_idx_consume;
-	qbman_swp_prefetch_dqrr_next;
-	rte_fslmc_get_device_count;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	dpaa2_affine_qbman_ethrx_swp;
-	dpdmai_close;
-	dpdmai_disable;
-	dpdmai_enable;
-	dpdmai_get_attributes;
-	dpdmai_get_rx_queue;
-	dpdmai_get_tx_queue;
-	dpdmai_open;
-	dpdmai_set_rx_queue;
-	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_memsegs;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-	dpaa2_dqrr_size;
-	dpaa2_eqcr_size;
-	dpci_get_opr;
-	dpci_set_opr;
-
-} DPDK_18.05;
-
-DPDK_19.05 {
-	global:
-	dpaa2_free_eq_descriptors;
-
-	qbman_eq_desc_set_orp;
-	qbman_eq_desc_set_token;
-	qbman_result_DQ_odpid;
-	qbman_result_DQ_seqnum;
-	qbman_result_eqresp_fd;
-	qbman_result_eqresp_rc;
-	qbman_result_eqresp_rspid;
-	qbman_result_eqresp_set_rspid;
-	qbman_swp_enqueue_multiple_fd;
-} DPDK_18.11;
+	rte_fslmc_driver_register;
+	rte_fslmc_driver_unregister;
+	rte_fslmc_get_device_count;
+	rte_fslmc_object_register;
+	rte_fslmc_vfio_dmamap;
+	rte_global_active_dqs_list;
+	rte_mcp_ptr_list;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/bus/ifpga/rte_bus_ifpga_version.map b/drivers/bus/ifpga/rte_bus_ifpga_version.map
index 964c9a9c45..05b4a28c1b 100644
--- a/drivers/bus/ifpga/rte_bus_ifpga_version.map
+++ b/drivers/bus/ifpga/rte_bus_ifpga_version.map
@@ -1,17 +1,11 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
-	rte_ifpga_get_integer32_arg;
-	rte_ifpga_get_string_arg;
 	rte_ifpga_driver_register;
 	rte_ifpga_driver_unregister;
+	rte_ifpga_find_afu_by_name;
+	rte_ifpga_get_integer32_arg;
+	rte_ifpga_get_string_arg;
 
 	local: *;
 };
-
-DPDK_19.05 {
-	global:
-
-	rte_ifpga_find_afu_by_name;
-
-} DPDK_18.05;
diff --git a/drivers/bus/pci/rte_bus_pci_version.map b/drivers/bus/pci/rte_bus_pci_version.map
index 27e9c4f101..012d817e14 100644
--- a/drivers/bus/pci/rte_bus_pci_version.map
+++ b/drivers/bus/pci/rte_bus_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pci_dump;
diff --git a/drivers/bus/vdev/rte_bus_vdev_version.map b/drivers/bus/vdev/rte_bus_vdev_version.map
index 590cf9b437..5abb10ecb0 100644
--- a/drivers/bus/vdev/rte_bus_vdev_version.map
+++ b/drivers/bus/vdev/rte_bus_vdev_version.map
@@ -1,18 +1,12 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
+	rte_vdev_add_custom_scan;
 	rte_vdev_init;
 	rte_vdev_register;
+	rte_vdev_remove_custom_scan;
 	rte_vdev_uninit;
 	rte_vdev_unregister;
 
 	local: *;
 };
-
-DPDK_18.02 {
-	global:
-
-	rte_vdev_add_custom_scan;
-	rte_vdev_remove_custom_scan;
-
-} DPDK_17.11;
diff --git a/drivers/bus/vmbus/rte_bus_vmbus_version.map b/drivers/bus/vmbus/rte_bus_vmbus_version.map
index ae231ad329..cbaaebc06c 100644
--- a/drivers/bus/vmbus/rte_bus_vmbus_version.map
+++ b/drivers/bus/vmbus/rte_bus_vmbus_version.map
@@ -1,6 +1,4 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_vmbus_chan_close;
@@ -20,6 +18,7 @@ DPDK_18.08 {
 	rte_vmbus_probe;
 	rte_vmbus_register;
 	rte_vmbus_scan;
+	rte_vmbus_set_latency;
 	rte_vmbus_sub_channel_index;
 	rte_vmbus_subchan_open;
 	rte_vmbus_unmap_device;
@@ -27,10 +26,3 @@ DPDK_18.08 {
 
 	local: *;
 };
-
-DPDK_18.11 {
-	global:
-
-	rte_vmbus_set_latency;
-
-} DPDK_18.08;
diff --git a/drivers/common/cpt/rte_common_cpt_version.map b/drivers/common/cpt/rte_common_cpt_version.map
index dec614f0de..79fa5751bc 100644
--- a/drivers/common/cpt/rte_common_cpt_version.map
+++ b/drivers/common/cpt/rte_common_cpt_version.map
@@ -1,6 +1,8 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	cpt_pmd_ops_helper_get_mlen_direct_mode;
 	cpt_pmd_ops_helper_get_mlen_sg_mode;
+
+	local: *;
 };
diff --git a/drivers/common/dpaax/rte_common_dpaax_version.map b/drivers/common/dpaax/rte_common_dpaax_version.map
index 8131c9e305..45d62aea9d 100644
--- a/drivers/common/dpaax/rte_common_dpaax_version.map
+++ b/drivers/common/dpaax/rte_common_dpaax_version.map
@@ -1,11 +1,11 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	dpaax_iova_table_update;
 	dpaax_iova_table_depopulate;
 	dpaax_iova_table_dump;
 	dpaax_iova_table_p;
 	dpaax_iova_table_populate;
+	dpaax_iova_table_update;
 
 	local: *;
 };
diff --git a/drivers/common/mvep/rte_common_mvep_version.map b/drivers/common/mvep/rte_common_mvep_version.map
index c71722d79f..030928439d 100644
--- a/drivers/common/mvep/rte_common_mvep_version.map
+++ b/drivers/common/mvep/rte_common_mvep_version.map
@@ -1,6 +1,8 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	rte_mvep_init;
 	rte_mvep_deinit;
+	rte_mvep_init;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index a9b3cff9bc..c15fb89112 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,8 +1,10 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
 	octeontx_logtype_mbox;
+	octeontx_mbox_send;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
-	octeontx_mbox_send;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx2/rte_common_octeontx2_version.map b/drivers/common/octeontx2/rte_common_octeontx2_version.map
index 4400120da0..adad21a2d6 100644
--- a/drivers/common/octeontx2/rte_common_octeontx2_version.map
+++ b/drivers/common/octeontx2/rte_common_octeontx2_version.map
@@ -1,39 +1,35 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	otx2_dev_active_vfs;
 	otx2_dev_fini;
 	otx2_dev_priv_init;
-
+	otx2_disable_irqs;
+	otx2_intra_dev_get_cfg;
 	otx2_logtype_base;
 	otx2_logtype_dpi;
 	otx2_logtype_mbox;
+	otx2_logtype_nix;
 	otx2_logtype_npa;
 	otx2_logtype_npc;
-	otx2_logtype_nix;
 	otx2_logtype_sso;
-	otx2_logtype_tm;
 	otx2_logtype_tim;
-
+	otx2_logtype_tm;
 	otx2_mbox_alloc_msg_rsp;
 	otx2_mbox_get_rsp;
 	otx2_mbox_get_rsp_tmo;
 	otx2_mbox_id2name;
 	otx2_mbox_msg_send;
 	otx2_mbox_wait_for_rsp;
-
-	otx2_intra_dev_get_cfg;
 	otx2_npa_lf_active;
 	otx2_npa_lf_obj_get;
 	otx2_npa_lf_obj_ref;
 	otx2_npa_pf_func_get;
 	otx2_npa_set_defaults;
+	otx2_register_irq;
 	otx2_sso_pf_func_get;
 	otx2_sso_pf_func_set;
-
-	otx2_disable_irqs;
 	otx2_unregister_irq;
-	otx2_register_irq;
 
 	local: *;
 };
diff --git a/drivers/compress/isal/rte_pmd_isal_version.map b/drivers/compress/isal/rte_pmd_isal_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/compress/isal/rte_pmd_isal_version.map
+++ b/drivers/compress/isal/rte_pmd_isal_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
+++ b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/qat/rte_pmd_qat_version.map b/drivers/compress/qat/rte_pmd_qat_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/qat/rte_pmd_qat_version.map
+++ b/drivers/compress/qat/rte_pmd_qat_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/zlib/rte_pmd_zlib_version.map b/drivers/compress/zlib/rte_pmd_zlib_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/zlib/rte_pmd_zlib_version.map
+++ b/drivers/compress/zlib/rte_pmd_zlib_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
+++ b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
+++ b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/armv8/rte_pmd_armv8_version.map b/drivers/crypto/armv8/rte_pmd_armv8_version.map
index 1f84b68a83..f9f17e4f6e 100644
--- a/drivers/crypto/armv8/rte_pmd_armv8_version.map
+++ b/drivers/crypto/armv8/rte_pmd_armv8_version.map
@@ -1,3 +1,3 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
+++ b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/ccp/rte_pmd_ccp_version.map b/drivers/crypto/ccp/rte_pmd_ccp_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/crypto/ccp/rte_pmd_ccp_version.map
+++ b/drivers/crypto/ccp/rte_pmd_ccp_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
index 0bfb986d0b..5952d645fd 100644
--- a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
+++ b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_sec_eventq_attach;
 	dpaa2_sec_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
index cc7f2162e0..8580fa13db 100644
--- a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
+++ b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_19.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa_sec_eventq_attach;
 	dpaa_sec_eventq_detach;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
index 8ffeca934e..f9f17e4f6e 100644
--- a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
+++ b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
@@ -1,3 +1,3 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
+++ b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
index 406964d1fc..f9f17e4f6e 100644
--- a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
+++ b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/null/rte_pmd_null_crypto_version.map b/drivers/crypto/null/rte_pmd_null_crypto_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/null/rte_pmd_null_crypto_version.map
+++ b/drivers/crypto/null/rte_pmd_null_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
+++ b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/openssl/rte_pmd_openssl_version.map b/drivers/crypto/openssl/rte_pmd_openssl_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/openssl/rte_pmd_openssl_version.map
+++ b/drivers/crypto/openssl/rte_pmd_openssl_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
index 5c43127cf2..077afedce7 100644
--- a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
+++ b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
@@ -1,21 +1,16 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_cryptodev_scheduler_load_user_scheduler;
-	rte_cryptodev_scheduler_slave_attach;
-	rte_cryptodev_scheduler_slave_detach;
-	rte_cryptodev_scheduler_ordering_set;
-	rte_cryptodev_scheduler_ordering_get;
-
-};
-
-DPDK_17.05 {
-	global:
-
 	rte_cryptodev_scheduler_mode_get;
 	rte_cryptodev_scheduler_mode_set;
 	rte_cryptodev_scheduler_option_get;
 	rte_cryptodev_scheduler_option_set;
+	rte_cryptodev_scheduler_ordering_get;
+	rte_cryptodev_scheduler_ordering_set;
+	rte_cryptodev_scheduler_slave_attach;
+	rte_cryptodev_scheduler_slave_detach;
 	rte_cryptodev_scheduler_slaves_get;
 
-} DPDK_17.02;
+	local: *;
+};
diff --git a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
+++ b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
+++ b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/zuc/rte_pmd_zuc_version.map b/drivers/crypto/zuc/rte_pmd_zuc_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/zuc/rte_pmd_zuc_version.map
+++ b/drivers/crypto/zuc/rte_pmd_zuc_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
+++ b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
index 1c0b7559dc..f9f17e4f6e 100644
--- a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
+++ b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dsw/rte_pmd_dsw_event_version.map b/drivers/event/dsw/rte_pmd_dsw_event_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/event/dsw/rte_pmd_dsw_event_version.map
+++ b/drivers/event/dsw/rte_pmd_dsw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
+++ b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
index 41c65c8c9c..f9f17e4f6e 100644
--- a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
+++ b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	local: *;
 };
-
diff --git a/drivers/event/opdl/rte_pmd_opdl_event_version.map b/drivers/event/opdl/rte_pmd_opdl_event_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/event/opdl/rte_pmd_opdl_event_version.map
+++ b/drivers/event/opdl/rte_pmd_opdl_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
+++ b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/sw/rte_pmd_sw_event_version.map b/drivers/event/sw/rte_pmd_sw_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/sw/rte_pmd_sw_event_version.map
+++ b/drivers/event/sw/rte_pmd_sw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/bucket/rte_mempool_bucket_version.map b/drivers/mempool/bucket/rte_mempool_bucket_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/mempool/bucket/rte_mempool_bucket_version.map
+++ b/drivers/mempool/bucket/rte_mempool_bucket_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
index 60bf50b2d1..9eebaf7ffd 100644
--- a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
+++ b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa_bpid_info;
diff --git a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
index b45e7a9ac1..cd4bc88273 100644
--- a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
+++ b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
@@ -1,16 +1,10 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa2_bpid_info;
 	rte_dpaa2_mbuf_alloc_bulk;
-
-	local: *;
-};
-
-DPDK_18.05 {
-	global:
-
 	rte_dpaa2_mbuf_from_buf_addr;
 	rte_dpaa2_mbuf_pool_bpid;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
+++ b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
index d703368c31..d4f81aed8e 100644
--- a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
+++ b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
@@ -1,8 +1,8 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
-	otx2_npa_lf_init;
 	otx2_npa_lf_fini;
+	otx2_npa_lf_init;
 
 	local: *;
 };
diff --git a/drivers/mempool/ring/rte_mempool_ring_version.map b/drivers/mempool/ring/rte_mempool_ring_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/ring/rte_mempool_ring_version.map
+++ b/drivers/mempool/ring/rte_mempool_ring_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/stack/rte_mempool_stack_version.map b/drivers/mempool/stack/rte_mempool_stack_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/stack/rte_mempool_stack_version.map
+++ b/drivers/mempool/stack/rte_mempool_stack_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_packet/rte_pmd_af_packet_version.map b/drivers/net/af_packet/rte_pmd_af_packet_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/af_packet/rte_pmd_af_packet_version.map
+++ b/drivers/net/af_packet/rte_pmd_af_packet_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
index c6db030fe6..f9f17e4f6e 100644
--- a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
+++ b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
@@ -1,3 +1,3 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ark/rte_pmd_ark_version.map b/drivers/net/ark/rte_pmd_ark_version.map
index 1062e0429f..f9f17e4f6e 100644
--- a/drivers/net/ark/rte_pmd_ark_version.map
+++ b/drivers/net/ark/rte_pmd_ark_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-	 local: *;
-
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/atlantic/rte_pmd_atlantic_version.map b/drivers/net/atlantic/rte_pmd_atlantic_version.map
index b16faa999f..9b04838d84 100644
--- a/drivers/net/atlantic/rte_pmd_atlantic_version.map
+++ b/drivers/net/atlantic/rte_pmd_atlantic_version.map
@@ -1,5 +1,4 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
 
@@ -13,4 +12,3 @@ EXPERIMENTAL {
 	rte_pmd_atl_macsec_select_txsa;
 	rte_pmd_atl_macsec_select_rxsa;
 };
-
diff --git a/drivers/net/avp/rte_pmd_avp_version.map b/drivers/net/avp/rte_pmd_avp_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/net/avp/rte_pmd_avp_version.map
+++ b/drivers/net/avp/rte_pmd_avp_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/axgbe/rte_pmd_axgbe_version.map b/drivers/net/axgbe/rte_pmd_axgbe_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/net/axgbe/rte_pmd_axgbe_version.map
+++ b/drivers/net/axgbe/rte_pmd_axgbe_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
+++ b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnxt/rte_pmd_bnxt_version.map b/drivers/net/bnxt/rte_pmd_bnxt_version.map
index 4750d40ad6..bb52562347 100644
--- a/drivers/net/bnxt/rte_pmd_bnxt_version.map
+++ b/drivers/net/bnxt/rte_pmd_bnxt_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_bnxt_get_vf_rx_status;
@@ -10,13 +10,13 @@ DPDK_17.08 {
 	rte_pmd_bnxt_set_tx_loopback;
 	rte_pmd_bnxt_set_vf_mac_addr;
 	rte_pmd_bnxt_set_vf_mac_anti_spoof;
+	rte_pmd_bnxt_set_vf_persist_stats;
 	rte_pmd_bnxt_set_vf_rate_limit;
 	rte_pmd_bnxt_set_vf_rxmode;
 	rte_pmd_bnxt_set_vf_vlan_anti_spoof;
 	rte_pmd_bnxt_set_vf_vlan_filter;
 	rte_pmd_bnxt_set_vf_vlan_insert;
 	rte_pmd_bnxt_set_vf_vlan_stripq;
-	rte_pmd_bnxt_set_vf_persist_stats;
 
 	local: *;
 };
diff --git a/drivers/net/bonding/rte_pmd_bond_version.map b/drivers/net/bonding/rte_pmd_bond_version.map
index 00d955c481..270c7d5d55 100644
--- a/drivers/net/bonding/rte_pmd_bond_version.map
+++ b/drivers/net/bonding/rte_pmd_bond_version.map
@@ -1,9 +1,21 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_bond_8023ad_agg_selection_get;
+	rte_eth_bond_8023ad_agg_selection_set;
+	rte_eth_bond_8023ad_conf_get;
+	rte_eth_bond_8023ad_dedicated_queues_disable;
+	rte_eth_bond_8023ad_dedicated_queues_enable;
+	rte_eth_bond_8023ad_ext_collect;
+	rte_eth_bond_8023ad_ext_collect_get;
+	rte_eth_bond_8023ad_ext_distrib;
+	rte_eth_bond_8023ad_ext_distrib_get;
+	rte_eth_bond_8023ad_ext_slowtx;
+	rte_eth_bond_8023ad_setup;
 	rte_eth_bond_8023ad_slave_info;
 	rte_eth_bond_active_slaves_get;
 	rte_eth_bond_create;
+	rte_eth_bond_free;
 	rte_eth_bond_link_monitoring_set;
 	rte_eth_bond_mac_address_reset;
 	rte_eth_bond_mac_address_set;
@@ -19,36 +31,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	rte_eth_bond_free;
-
-} DPDK_2.0;
-
-DPDK_16.04 {
-};
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_bond_8023ad_ext_collect;
-	rte_eth_bond_8023ad_ext_collect_get;
-	rte_eth_bond_8023ad_ext_distrib;
-	rte_eth_bond_8023ad_ext_distrib_get;
-	rte_eth_bond_8023ad_ext_slowtx;
-
-} DPDK_16.04;
-
-DPDK_17.08 {
-	global:
-
-	rte_eth_bond_8023ad_dedicated_queues_enable;
-	rte_eth_bond_8023ad_dedicated_queues_disable;
-	rte_eth_bond_8023ad_agg_selection_get;
-	rte_eth_bond_8023ad_agg_selection_set;
-	rte_eth_bond_8023ad_conf_get;
-	rte_eth_bond_8023ad_setup;
-
-} DPDK_16.07;
diff --git a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
+++ b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/dpaa/rte_pmd_dpaa_version.map b/drivers/net/dpaa/rte_pmd_dpaa_version.map
index 8cb4500b51..f403a1526d 100644
--- a/drivers/net/dpaa/rte_pmd_dpaa_version.map
+++ b/drivers/net/dpaa/rte_pmd_dpaa_version.map
@@ -1,12 +1,9 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	dpaa_eth_eventq_attach;
 	dpaa_eth_eventq_detach;
 	rte_pmd_dpaa_set_tx_loopback;
-} DPDK_17.11;
+
+	local: *;
+};
diff --git a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
index d1b4cdb232..f2bb793319 100644
--- a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
+++ b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
@@ -1,15 +1,11 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_eth_eventq_attach;
 	dpaa2_eth_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
@@ -17,4 +13,4 @@ EXPERIMENTAL {
 	rte_pmd_dpaa2_mux_flow_create;
 	rte_pmd_dpaa2_set_custom_hash;
 	rte_pmd_dpaa2_set_timestamp;
-} DPDK_17.11;
+};
diff --git a/drivers/net/e1000/rte_pmd_e1000_version.map b/drivers/net/e1000/rte_pmd_e1000_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/e1000/rte_pmd_e1000_version.map
+++ b/drivers/net/e1000/rte_pmd_e1000_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ena/rte_pmd_ena_version.map b/drivers/net/ena/rte_pmd_ena_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/ena/rte_pmd_ena_version.map
+++ b/drivers/net/ena/rte_pmd_ena_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enetc/rte_pmd_enetc_version.map b/drivers/net/enetc/rte_pmd_enetc_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/net/enetc/rte_pmd_enetc_version.map
+++ b/drivers/net/enetc/rte_pmd_enetc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enic/rte_pmd_enic_version.map b/drivers/net/enic/rte_pmd_enic_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/enic/rte_pmd_enic_version.map
+++ b/drivers/net/enic/rte_pmd_enic_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/failsafe/rte_pmd_failsafe_version.map b/drivers/net/failsafe/rte_pmd_failsafe_version.map
index b6d2840be4..f9f17e4f6e 100644
--- a/drivers/net/failsafe/rte_pmd_failsafe_version.map
+++ b/drivers/net/failsafe/rte_pmd_failsafe_version.map
@@ -1,4 +1,3 @@
-DPDK_17.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/fm10k/rte_pmd_fm10k_version.map b/drivers/net/fm10k/rte_pmd_fm10k_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/fm10k/rte_pmd_fm10k_version.map
+++ b/drivers/net/fm10k/rte_pmd_fm10k_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hinic/rte_pmd_hinic_version.map b/drivers/net/hinic/rte_pmd_hinic_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/hinic/rte_pmd_hinic_version.map
+++ b/drivers/net/hinic/rte_pmd_hinic_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map b/drivers/net/hns3/rte_pmd_hns3_version.map
index 35e5f2debb..f9f17e4f6e 100644
--- a/drivers/net/hns3/rte_pmd_hns3_version.map
+++ b/drivers/net/hns3/rte_pmd_hns3_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
-	 local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/i40e/rte_pmd_i40e_version.map b/drivers/net/i40e/rte_pmd_i40e_version.map
index cccd5768c2..a80e69b93e 100644
--- a/drivers/net/i40e/rte_pmd_i40e_version.map
+++ b/drivers/net/i40e/rte_pmd_i40e_version.map
@@ -1,23 +1,34 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_i40e_add_vf_mac_addr;
+	rte_pmd_i40e_flow_add_del_packet_template;
+	rte_pmd_i40e_flow_type_mapping_get;
+	rte_pmd_i40e_flow_type_mapping_reset;
+	rte_pmd_i40e_flow_type_mapping_update;
+	rte_pmd_i40e_get_ddp_info;
+	rte_pmd_i40e_get_ddp_list;
 	rte_pmd_i40e_get_vf_stats;
+	rte_pmd_i40e_inset_get;
+	rte_pmd_i40e_inset_set;
 	rte_pmd_i40e_ping_vfs;
+	rte_pmd_i40e_process_ddp_package;
 	rte_pmd_i40e_ptype_mapping_get;
 	rte_pmd_i40e_ptype_mapping_replace;
 	rte_pmd_i40e_ptype_mapping_reset;
 	rte_pmd_i40e_ptype_mapping_update;
+	rte_pmd_i40e_query_vfid_by_mac;
 	rte_pmd_i40e_reset_vf_stats;
+	rte_pmd_i40e_rss_queue_region_conf;
+	rte_pmd_i40e_set_tc_strict_prio;
 	rte_pmd_i40e_set_tx_loopback;
 	rte_pmd_i40e_set_vf_broadcast;
 	rte_pmd_i40e_set_vf_mac_addr;
 	rte_pmd_i40e_set_vf_mac_anti_spoof;
+	rte_pmd_i40e_set_vf_max_bw;
 	rte_pmd_i40e_set_vf_multicast_promisc;
+	rte_pmd_i40e_set_vf_tc_bw_alloc;
+	rte_pmd_i40e_set_vf_tc_max_bw;
 	rte_pmd_i40e_set_vf_unicast_promisc;
 	rte_pmd_i40e_set_vf_vlan_anti_spoof;
 	rte_pmd_i40e_set_vf_vlan_filter;
@@ -25,43 +36,5 @@ DPDK_17.02 {
 	rte_pmd_i40e_set_vf_vlan_stripq;
 	rte_pmd_i40e_set_vf_vlan_tag;
 
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_pmd_i40e_set_tc_strict_prio;
-	rte_pmd_i40e_set_vf_max_bw;
-	rte_pmd_i40e_set_vf_tc_bw_alloc;
-	rte_pmd_i40e_set_vf_tc_max_bw;
-	rte_pmd_i40e_process_ddp_package;
-	rte_pmd_i40e_get_ddp_list;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_i40e_get_ddp_info;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_pmd_i40e_add_vf_mac_addr;
-	rte_pmd_i40e_flow_add_del_packet_template;
-	rte_pmd_i40e_flow_type_mapping_update;
-	rte_pmd_i40e_flow_type_mapping_get;
-	rte_pmd_i40e_flow_type_mapping_reset;
-	rte_pmd_i40e_query_vfid_by_mac;
-	rte_pmd_i40e_rss_queue_region_conf;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_pmd_i40e_inset_get;
-	rte_pmd_i40e_inset_set;
-} DPDK_17.11;
\ No newline at end of file
+	local: *;
+};
diff --git a/drivers/net/iavf/rte_pmd_iavf_version.map b/drivers/net/iavf/rte_pmd_iavf_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/iavf/rte_pmd_iavf_version.map
+++ b/drivers/net/iavf/rte_pmd_iavf_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ice/rte_pmd_ice_version.map b/drivers/net/ice/rte_pmd_ice_version.map
index 7b23b609da..f9f17e4f6e 100644
--- a/drivers/net/ice/rte_pmd_ice_version.map
+++ b/drivers/net/ice/rte_pmd_ice_version.map
@@ -1,4 +1,3 @@
-DPDK_19.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ifc/rte_pmd_ifc_version.map b/drivers/net/ifc/rte_pmd_ifc_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/net/ifc/rte_pmd_ifc_version.map
+++ b/drivers/net/ifc/rte_pmd_ifc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
+++ b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
index c814f96d72..21534dbc3d 100644
--- a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
+++ b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
-	rte_pmd_ixgbe_set_all_queues_drop_en;
-	rte_pmd_ixgbe_set_tx_loopback;
-	rte_pmd_ixgbe_set_vf_mac_addr;
-	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
-	rte_pmd_ixgbe_set_vf_split_drop_en;
-	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
-	rte_pmd_ixgbe_set_vf_vlan_insert;
-	rte_pmd_ixgbe_set_vf_vlan_stripq;
-} DPDK_2.0;
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_ixgbe_bypass_event_show;
+	rte_pmd_ixgbe_bypass_event_store;
+	rte_pmd_ixgbe_bypass_init;
+	rte_pmd_ixgbe_bypass_state_set;
+	rte_pmd_ixgbe_bypass_state_show;
+	rte_pmd_ixgbe_bypass_ver_show;
+	rte_pmd_ixgbe_bypass_wd_reset;
+	rte_pmd_ixgbe_bypass_wd_timeout_show;
+	rte_pmd_ixgbe_bypass_wd_timeout_store;
 	rte_pmd_ixgbe_macsec_config_rxsc;
 	rte_pmd_ixgbe_macsec_config_txsc;
 	rte_pmd_ixgbe_macsec_disable;
 	rte_pmd_ixgbe_macsec_enable;
 	rte_pmd_ixgbe_macsec_select_rxsa;
 	rte_pmd_ixgbe_macsec_select_txsa;
+	rte_pmd_ixgbe_ping_vf;
+	rte_pmd_ixgbe_set_all_queues_drop_en;
+	rte_pmd_ixgbe_set_tc_bw_alloc;
+	rte_pmd_ixgbe_set_tx_loopback;
+	rte_pmd_ixgbe_set_vf_mac_addr;
+	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
 	rte_pmd_ixgbe_set_vf_rate_limit;
 	rte_pmd_ixgbe_set_vf_rx;
 	rte_pmd_ixgbe_set_vf_rxmode;
+	rte_pmd_ixgbe_set_vf_split_drop_en;
 	rte_pmd_ixgbe_set_vf_tx;
+	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
 	rte_pmd_ixgbe_set_vf_vlan_filter;
-} DPDK_16.11;
+	rte_pmd_ixgbe_set_vf_vlan_insert;
+	rte_pmd_ixgbe_set_vf_vlan_stripq;
 
-DPDK_17.05 {
-	global:
-
-	rte_pmd_ixgbe_ping_vf;
-	rte_pmd_ixgbe_set_tc_bw_alloc;
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_ixgbe_bypass_event_show;
-	rte_pmd_ixgbe_bypass_event_store;
-	rte_pmd_ixgbe_bypass_init;
-	rte_pmd_ixgbe_bypass_state_set;
-	rte_pmd_ixgbe_bypass_state_show;
-	rte_pmd_ixgbe_bypass_ver_show;
-	rte_pmd_ixgbe_bypass_wd_reset;
-	rte_pmd_ixgbe_bypass_wd_timeout_show;
-	rte_pmd_ixgbe_bypass_wd_timeout_store;
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/net/kni/rte_pmd_kni_version.map b/drivers/net/kni/rte_pmd_kni_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/kni/rte_pmd_kni_version.map
+++ b/drivers/net/kni/rte_pmd_kni_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/liquidio/rte_pmd_liquidio_version.map b/drivers/net/liquidio/rte_pmd_liquidio_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/liquidio/rte_pmd_liquidio_version.map
+++ b/drivers/net/liquidio/rte_pmd_liquidio_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/memif/rte_pmd_memif_version.map b/drivers/net/memif/rte_pmd_memif_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/net/memif/rte_pmd_memif_version.map
+++ b/drivers/net/memif/rte_pmd_memif_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/mlx4/rte_pmd_mlx4_version.map b/drivers/net/mlx4/rte_pmd_mlx4_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/mlx4/rte_pmd_mlx4_version.map
+++ b/drivers/net/mlx4/rte_pmd_mlx4_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mlx5/rte_pmd_mlx5_version.map b/drivers/net/mlx5/rte_pmd_mlx5_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/mlx5/rte_pmd_mlx5_version.map
+++ b/drivers/net/mlx5/rte_pmd_mlx5_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvneta/rte_pmd_mvneta_version.map b/drivers/net/mvneta/rte_pmd_mvneta_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/net/mvneta/rte_pmd_mvneta_version.map
+++ b/drivers/net/mvneta/rte_pmd_mvneta_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
+++ b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/netvsc/rte_pmd_netvsc_version.map b/drivers/net/netvsc/rte_pmd_netvsc_version.map
index d534019a6b..f9f17e4f6e 100644
--- a/drivers/net/netvsc/rte_pmd_netvsc_version.map
+++ b/drivers/net/netvsc/rte_pmd_netvsc_version.map
@@ -1,5 +1,3 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfb/rte_pmd_nfb_version.map b/drivers/net/nfb/rte_pmd_nfb_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/nfb/rte_pmd_nfb_version.map
+++ b/drivers/net/nfb/rte_pmd_nfb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfp/rte_pmd_nfp_version.map b/drivers/net/nfp/rte_pmd_nfp_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/nfp/rte_pmd_nfp_version.map
+++ b/drivers/net/nfp/rte_pmd_nfp_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/null/rte_pmd_null_version.map b/drivers/net/null/rte_pmd_null_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/null/rte_pmd_null_version.map
+++ b/drivers/net/null/rte_pmd_null_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/octeontx/rte_pmd_octeontx_version.map b/drivers/net/octeontx/rte_pmd_octeontx_version.map
index a3161b14d0..f7cae02fac 100644
--- a/drivers/net/octeontx/rte_pmd_octeontx_version.map
+++ b/drivers/net/octeontx/rte_pmd_octeontx_version.map
@@ -1,11 +1,7 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.02 {
+DPDK_20.0 {
 	global:
 
 	rte_octeontx_pchan_map;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
+++ b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/pcap/rte_pmd_pcap_version.map b/drivers/net/pcap/rte_pmd_pcap_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/pcap/rte_pmd_pcap_version.map
+++ b/drivers/net/pcap/rte_pmd_pcap_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/qede/rte_pmd_qede_version.map b/drivers/net/qede/rte_pmd_qede_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/qede/rte_pmd_qede_version.map
+++ b/drivers/net/qede/rte_pmd_qede_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ring/rte_pmd_ring_version.map b/drivers/net/ring/rte_pmd_ring_version.map
index 1f785d9409..ebb6be2733 100644
--- a/drivers/net/ring/rte_pmd_ring_version.map
+++ b/drivers/net/ring/rte_pmd_ring_version.map
@@ -1,14 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_from_ring;
 	rte_eth_from_rings;
 
 	local: *;
 };
-
-DPDK_2.2 {
-	global:
-
-	rte_eth_from_ring;
-
-} DPDK_2.0;
diff --git a/drivers/net/sfc/rte_pmd_sfc_version.map b/drivers/net/sfc/rte_pmd_sfc_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/sfc/rte_pmd_sfc_version.map
+++ b/drivers/net/sfc/rte_pmd_sfc_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/softnic/rte_pmd_softnic_version.map b/drivers/net/softnic/rte_pmd_softnic_version.map
index bc44b06f98..50f113d5a2 100644
--- a/drivers/net/softnic/rte_pmd_softnic_version.map
+++ b/drivers/net/softnic/rte_pmd_softnic_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_softnic_run;
diff --git a/drivers/net/szedata2/rte_pmd_szedata2_version.map b/drivers/net/szedata2/rte_pmd_szedata2_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/szedata2/rte_pmd_szedata2_version.map
+++ b/drivers/net/szedata2/rte_pmd_szedata2_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/tap/rte_pmd_tap_version.map b/drivers/net/tap/rte_pmd_tap_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/tap/rte_pmd_tap_version.map
+++ b/drivers/net/tap/rte_pmd_tap_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/thunderx/rte_pmd_thunderx_version.map b/drivers/net/thunderx/rte_pmd_thunderx_version.map
index 1901bcb3b3..f9f17e4f6e 100644
--- a/drivers/net/thunderx/rte_pmd_thunderx_version.map
+++ b/drivers/net/thunderx/rte_pmd_thunderx_version.map
@@ -1,4 +1,3 @@
-DPDK_16.07 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
+++ b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vhost/rte_pmd_vhost_version.map b/drivers/net/vhost/rte_pmd_vhost_version.map
index 695db85749..16b591ccc4 100644
--- a/drivers/net/vhost/rte_pmd_vhost_version.map
+++ b/drivers/net/vhost/rte_pmd_vhost_version.map
@@ -1,13 +1,8 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_vhost_get_queue_event;
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
 	rte_eth_vhost_get_vid_from_port_id;
+
+	local: *;
 };
diff --git a/drivers/net/virtio/rte_pmd_virtio_version.map b/drivers/net/virtio/rte_pmd_virtio_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/virtio/rte_pmd_virtio_version.map
+++ b/drivers/net/virtio/rte_pmd_virtio_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
+++ b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
+++ b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
index d16a136fc8..ca6a0d7626 100644
--- a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
+++ b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
@@ -1,4 +1,4 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	global:
 
 	rte_qdma_attr_get;
@@ -9,9 +9,9 @@ DPDK_19.05 {
 	rte_qdma_start;
 	rte_qdma_stop;
 	rte_qdma_vq_create;
-	rte_qdma_vq_destroy;
 	rte_qdma_vq_dequeue;
 	rte_qdma_vq_dequeue_multi;
+	rte_qdma_vq_destroy;
 	rte_qdma_vq_enqueue;
 	rte_qdma_vq_enqueue_multi;
 	rte_qdma_vq_stats;
diff --git a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
+++ b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ioat/rte_rawdev_ioat_version.map b/drivers/raw/ioat/rte_rawdev_ioat_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/ioat/rte_rawdev_ioat_version.map
+++ b/drivers/raw/ioat/rte_rawdev_ioat_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ntb/rte_rawdev_ntb_version.map b/drivers/raw/ntb/rte_rawdev_ntb_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/raw/ntb/rte_rawdev_ntb_version.map
+++ b/drivers/raw/ntb/rte_rawdev_ntb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
+++ b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
+++ b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/lib/librte_acl/rte_acl_version.map b/lib/librte_acl/rte_acl_version.map
index b09370a104..c3daca8115 100644
--- a/lib/librte_acl/rte_acl_version.map
+++ b/lib/librte_acl/rte_acl_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_acl_add_rules;
diff --git a/lib/librte_bbdev/rte_bbdev_version.map b/lib/librte_bbdev/rte_bbdev_version.map
index 3624eb1cb4..45b560dbe7 100644
--- a/lib/librte_bbdev/rte_bbdev_version.map
+++ b/lib/librte_bbdev/rte_bbdev_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_bitratestats/rte_bitratestats_version.map b/lib/librte_bitratestats/rte_bitratestats_version.map
index fe7454452d..88fc2912db 100644
--- a/lib/librte_bitratestats/rte_bitratestats_version.map
+++ b/lib/librte_bitratestats/rte_bitratestats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_stats_bitrate_calc;
diff --git a/lib/librte_bpf/rte_bpf_version.map b/lib/librte_bpf/rte_bpf_version.map
index a203e088ea..e1ec43faa0 100644
--- a/lib/librte_bpf/rte_bpf_version.map
+++ b/lib/librte_bpf/rte_bpf_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_cfgfile/rte_cfgfile_version.map b/lib/librte_cfgfile/rte_cfgfile_version.map
index a0a11cea8d..906eee96bf 100644
--- a/lib/librte_cfgfile/rte_cfgfile_version.map
+++ b/lib/librte_cfgfile/rte_cfgfile_version.map
@@ -1,40 +1,22 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_cfgfile_add_entry;
+	rte_cfgfile_add_section;
 	rte_cfgfile_close;
+	rte_cfgfile_create;
 	rte_cfgfile_get_entry;
 	rte_cfgfile_has_entry;
 	rte_cfgfile_has_section;
 	rte_cfgfile_load;
+	rte_cfgfile_load_with_params;
 	rte_cfgfile_num_sections;
+	rte_cfgfile_save;
 	rte_cfgfile_section_entries;
+	rte_cfgfile_section_entries_by_index;
 	rte_cfgfile_section_num_entries;
 	rte_cfgfile_sections;
+	rte_cfgfile_set_entry;
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_cfgfile_section_entries_by_index;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_cfgfile_load_with_params;
-
-} DPDK_16.04;
-
-DPDK_17.11 {
-	global:
-
-	rte_cfgfile_add_entry;
-	rte_cfgfile_add_section;
-	rte_cfgfile_create;
-	rte_cfgfile_save;
-	rte_cfgfile_set_entry;
-
-} DPDK_17.05;
diff --git a/lib/librte_cmdline/rte_cmdline_version.map b/lib/librte_cmdline/rte_cmdline_version.map
index 04bcb387f2..95fce812ff 100644
--- a/lib/librte_cmdline/rte_cmdline_version.map
+++ b/lib/librte_cmdline/rte_cmdline_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	cirbuf_add_buf_head;
@@ -40,6 +40,7 @@ DPDK_2.0 {
 	cmdline_parse_num;
 	cmdline_parse_portlist;
 	cmdline_parse_string;
+	cmdline_poll;
 	cmdline_printf;
 	cmdline_quit;
 	cmdline_set_prompt;
@@ -68,10 +69,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	cmdline_poll;
-
-} DPDK_2.0;
diff --git a/lib/librte_compressdev/rte_compressdev_version.map b/lib/librte_compressdev/rte_compressdev_version.map
index e2a108b650..cfcd50ac1c 100644
--- a/lib/librte_compressdev/rte_compressdev_version.map
+++ b/lib/librte_compressdev/rte_compressdev_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map
index 3deb265ac2..1dd1e259a0 100644
--- a/lib/librte_cryptodev/rte_cryptodev_version.map
+++ b/lib/librte_cryptodev/rte_cryptodev_version.map
@@ -1,92 +1,62 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
-	rte_cryptodevs;
+	rte_crypto_aead_algorithm_strings;
+	rte_crypto_aead_operation_strings;
+	rte_crypto_auth_algorithm_strings;
+	rte_crypto_auth_operation_strings;
+	rte_crypto_cipher_algorithm_strings;
+	rte_crypto_cipher_operation_strings;
+	rte_crypto_op_pool_create;
+	rte_cryptodev_allocate_driver;
 	rte_cryptodev_callback_register;
 	rte_cryptodev_callback_unregister;
 	rte_cryptodev_close;
-	rte_cryptodev_count;
 	rte_cryptodev_configure;
+	rte_cryptodev_count;
+	rte_cryptodev_device_count_by_driver;
+	rte_cryptodev_devices_get;
+	rte_cryptodev_driver_id_get;
+	rte_cryptodev_driver_name_get;
+	rte_cryptodev_get_aead_algo_enum;
+	rte_cryptodev_get_auth_algo_enum;
+	rte_cryptodev_get_cipher_algo_enum;
 	rte_cryptodev_get_dev_id;
 	rte_cryptodev_get_feature_name;
+	rte_cryptodev_get_sec_ctx;
 	rte_cryptodev_info_get;
+	rte_cryptodev_name_get;
 	rte_cryptodev_pmd_allocate;
 	rte_cryptodev_pmd_callback_process;
+	rte_cryptodev_pmd_create;
+	rte_cryptodev_pmd_create_dev_name;
+	rte_cryptodev_pmd_destroy;
+	rte_cryptodev_pmd_get_dev;
+	rte_cryptodev_pmd_get_named_dev;
+	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_pmd_parse_input_args;
 	rte_cryptodev_pmd_release_device;
-	rte_cryptodev_sym_session_create;
-	rte_cryptodev_sym_session_free;
+	rte_cryptodev_queue_pair_count;
+	rte_cryptodev_queue_pair_setup;
 	rte_cryptodev_socket_id;
 	rte_cryptodev_start;
 	rte_cryptodev_stats_get;
 	rte_cryptodev_stats_reset;
 	rte_cryptodev_stop;
-	rte_cryptodev_queue_pair_count;
-	rte_cryptodev_queue_pair_setup;
-	rte_crypto_op_pool_create;
-
-	local: *;
-};
-
-DPDK_17.02 {
-	global:
-
-	rte_cryptodev_devices_get;
-	rte_cryptodev_pmd_create_dev_name;
-	rte_cryptodev_pmd_get_dev;
-	rte_cryptodev_pmd_get_named_dev;
-	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_sym_capability_check_aead;
 	rte_cryptodev_sym_capability_check_auth;
 	rte_cryptodev_sym_capability_check_cipher;
 	rte_cryptodev_sym_capability_get;
-	rte_crypto_auth_algorithm_strings;
-	rte_crypto_auth_operation_strings;
-	rte_crypto_cipher_algorithm_strings;
-	rte_crypto_cipher_operation_strings;
-
-} DPDK_16.04;
-
-DPDK_17.05 {
-	global:
-
-	rte_cryptodev_get_auth_algo_enum;
-	rte_cryptodev_get_cipher_algo_enum;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_cryptodev_allocate_driver;
-	rte_cryptodev_device_count_by_driver;
-	rte_cryptodev_driver_id_get;
-	rte_cryptodev_driver_name_get;
-	rte_cryptodev_get_aead_algo_enum;
-	rte_cryptodev_sym_capability_check_aead;
-	rte_cryptodev_sym_session_init;
-	rte_cryptodev_sym_session_clear;
-	rte_crypto_aead_algorithm_strings;
-	rte_crypto_aead_operation_strings;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_cryptodev_get_sec_ctx;
-	rte_cryptodev_name_get;
-	rte_cryptodev_pmd_create;
-	rte_cryptodev_pmd_destroy;
-	rte_cryptodev_pmd_parse_input_args;
-
-} DPDK_17.08;
-
-DPDK_18.05 {
-	global:
-
 	rte_cryptodev_sym_get_header_session_size;
 	rte_cryptodev_sym_get_private_session_size;
+	rte_cryptodev_sym_session_clear;
+	rte_cryptodev_sym_session_create;
+	rte_cryptodev_sym_session_free;
+	rte_cryptodev_sym_session_init;
+	rte_cryptodevs;
 
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 5643ab85fb..1b7c643005 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_distributor_clear_returns;
diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map
index 7cbf82d37b..8c41999317 100644
--- a/lib/librte_eal/rte_eal_version.map
+++ b/lib/librte_eal/rte_eal_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	__rte_panic;
@@ -7,46 +7,111 @@ DPDK_2.0 {
 	lcore_config;
 	per_lcore__lcore_id;
 	per_lcore__rte_errno;
+	rte_bus_dump;
+	rte_bus_find;
+	rte_bus_find_by_device;
+	rte_bus_find_by_name;
+	rte_bus_get_iommu_class;
+	rte_bus_probe;
+	rte_bus_register;
+	rte_bus_scan;
+	rte_bus_unregister;
 	rte_calloc;
 	rte_calloc_socket;
 	rte_cpu_check_supported;
 	rte_cpu_get_flag_enabled;
+	rte_cpu_get_flag_name;
+	rte_cpu_is_supported;
+	rte_ctrl_thread_create;
 	rte_cycles_vmware_tsc_map;
 	rte_delay_us;
+	rte_delay_us_block;
+	rte_delay_us_callback_register;
+	rte_dev_is_probed;
+	rte_dev_probe;
+	rte_dev_remove;
+	rte_devargs_add;
+	rte_devargs_dump;
+	rte_devargs_insert;
+	rte_devargs_next;
+	rte_devargs_parse;
+	rte_devargs_parsef;
+	rte_devargs_remove;
+	rte_devargs_type_count;
 	rte_dump_physmem_layout;
 	rte_dump_registers;
 	rte_dump_stack;
 	rte_dump_tailq;
 	rte_eal_alarm_cancel;
 	rte_eal_alarm_set;
+	rte_eal_cleanup;
+	rte_eal_create_uio_dev;
 	rte_eal_get_configuration;
 	rte_eal_get_lcore_state;
 	rte_eal_get_physmem_size;
+	rte_eal_get_runtime_dir;
 	rte_eal_has_hugepages;
+	rte_eal_has_pci;
+	rte_eal_hotplug_add;
+	rte_eal_hotplug_remove;
 	rte_eal_hpet_init;
 	rte_eal_init;
 	rte_eal_iopl_init;
+	rte_eal_iova_mode;
 	rte_eal_lcore_role;
+	rte_eal_mbuf_user_pool_ops;
 	rte_eal_mp_remote_launch;
 	rte_eal_mp_wait_lcore;
+	rte_eal_primary_proc_alive;
 	rte_eal_process_type;
 	rte_eal_remote_launch;
 	rte_eal_tailq_lookup;
 	rte_eal_tailq_register;
+	rte_eal_using_phys_addrs;
+	rte_eal_vfio_intr_mode;
 	rte_eal_wait_lcore;
+	rte_epoll_ctl;
+	rte_epoll_wait;
 	rte_exit;
 	rte_free;
 	rte_get_hpet_cycles;
 	rte_get_hpet_hz;
 	rte_get_tsc_hz;
 	rte_hexdump;
+	rte_hypervisor_get;
+	rte_hypervisor_get_name;
+	rte_intr_allow_others;
 	rte_intr_callback_register;
 	rte_intr_callback_unregister;
+	rte_intr_cap_multiple;
 	rte_intr_disable;
+	rte_intr_dp_is_en;
+	rte_intr_efd_disable;
+	rte_intr_efd_enable;
 	rte_intr_enable;
+	rte_intr_free_epoll_fd;
+	rte_intr_rx_ctl;
+	rte_intr_tls_epfd;
+	rte_keepalive_create;
+	rte_keepalive_dispatch_pings;
+	rte_keepalive_mark_alive;
+	rte_keepalive_mark_sleep;
+	rte_keepalive_register_core;
+	rte_keepalive_register_relay_callback;
+	rte_lcore_has_role;
+	rte_lcore_index;
+	rte_lcore_to_socket_id;
 	rte_log;
 	rte_log_cur_msg_loglevel;
 	rte_log_cur_msg_logtype;
+	rte_log_dump;
+	rte_log_get_global_level;
+	rte_log_get_level;
+	rte_log_register;
+	rte_log_set_global_level;
+	rte_log_set_level;
+	rte_log_set_level_pattern;
+	rte_log_set_level_regexp;
 	rte_logs;
 	rte_malloc;
 	rte_malloc_dump_stats;
@@ -54,155 +119,38 @@ DPDK_2.0 {
 	rte_malloc_set_limit;
 	rte_malloc_socket;
 	rte_malloc_validate;
+	rte_malloc_virt2iova;
+	rte_mcfg_mem_read_lock;
+	rte_mcfg_mem_read_unlock;
+	rte_mcfg_mem_write_lock;
+	rte_mcfg_mem_write_unlock;
+	rte_mcfg_mempool_read_lock;
+	rte_mcfg_mempool_read_unlock;
+	rte_mcfg_mempool_write_lock;
+	rte_mcfg_mempool_write_unlock;
+	rte_mcfg_tailq_read_lock;
+	rte_mcfg_tailq_read_unlock;
+	rte_mcfg_tailq_write_lock;
+	rte_mcfg_tailq_write_unlock;
 	rte_mem_lock_page;
+	rte_mem_virt2iova;
 	rte_mem_virt2phy;
 	rte_memdump;
 	rte_memory_get_nchannel;
 	rte_memory_get_nrank;
 	rte_memzone_dump;
+	rte_memzone_free;
 	rte_memzone_lookup;
 	rte_memzone_reserve;
 	rte_memzone_reserve_aligned;
 	rte_memzone_reserve_bounded;
 	rte_memzone_walk;
 	rte_openlog_stream;
+	rte_rand;
 	rte_realloc;
-	rte_set_application_usage_hook;
-	rte_socket_id;
-	rte_strerror;
-	rte_strsplit;
-	rte_sys_gettid;
-	rte_thread_get_affinity;
-	rte_thread_set_affinity;
-	rte_vlog;
-	rte_zmalloc;
-	rte_zmalloc_socket;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_epoll_ctl;
-	rte_epoll_wait;
-	rte_intr_allow_others;
-	rte_intr_dp_is_en;
-	rte_intr_efd_disable;
-	rte_intr_efd_enable;
-	rte_intr_rx_ctl;
-	rte_intr_tls_epfd;
-	rte_memzone_free;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_intr_cap_multiple;
-	rte_keepalive_create;
-	rte_keepalive_dispatch_pings;
-	rte_keepalive_mark_alive;
-	rte_keepalive_register_core;
-
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_cpu_get_flag_name;
-	rte_eal_primary_proc_alive;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_keepalive_mark_sleep;
-	rte_keepalive_register_relay_callback;
-	rte_rtm_supported;
-	rte_thread_setname;
-
-} DPDK_16.04;
-
-DPDK_16.11 {
-	global:
-
-	rte_delay_us_block;
-	rte_delay_us_callback_register;
-
-} DPDK_16.07;
-
-DPDK_17.02 {
-	global:
-
-	rte_bus_dump;
-	rte_bus_probe;
-	rte_bus_register;
-	rte_bus_scan;
-	rte_bus_unregister;
-
-} DPDK_16.11;
-
-DPDK_17.05 {
-	global:
-
-	rte_cpu_is_supported;
-	rte_intr_free_epoll_fd;
-	rte_log_dump;
-	rte_log_get_global_level;
-	rte_log_register;
-	rte_log_set_global_level;
-	rte_log_set_level;
-	rte_log_set_level_regexp;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_bus_find;
-	rte_bus_find_by_device;
-	rte_bus_find_by_name;
-	rte_log_get_level;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eal_create_uio_dev;
-	rte_bus_get_iommu_class;
-	rte_eal_has_pci;
-	rte_eal_iova_mode;
-	rte_eal_using_phys_addrs;
-	rte_eal_vfio_intr_mode;
-	rte_lcore_has_role;
-	rte_malloc_virt2iova;
-	rte_mem_virt2iova;
-	rte_vfio_enable;
-	rte_vfio_is_enabled;
-	rte_vfio_noiommu_is_enabled;
-	rte_vfio_release_device;
-	rte_vfio_setup_device;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_hypervisor_get;
-	rte_hypervisor_get_name;
-	rte_vfio_clear_group;
 	rte_reciprocal_value;
 	rte_reciprocal_value_u64;
-
-}  DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_log_set_level_pattern;
+	rte_rtm_supported;
 	rte_service_attr_get;
 	rte_service_attr_reset_all;
 	rte_service_component_register;
@@ -215,6 +163,8 @@ DPDK_18.05 {
 	rte_service_get_count;
 	rte_service_get_name;
 	rte_service_lcore_add;
+	rte_service_lcore_attr_get;
+	rte_service_lcore_attr_reset_all;
 	rte_service_lcore_count;
 	rte_service_lcore_count_services;
 	rte_service_lcore_del;
@@ -224,6 +174,7 @@ DPDK_18.05 {
 	rte_service_lcore_stop;
 	rte_service_map_lcore_get;
 	rte_service_map_lcore_set;
+	rte_service_may_be_active;
 	rte_service_probe_capability;
 	rte_service_run_iter_on_app_lcore;
 	rte_service_runstate_get;
@@ -231,17 +182,23 @@ DPDK_18.05 {
 	rte_service_set_runstate_mapped_check;
 	rte_service_set_stats_enable;
 	rte_service_start_with_defaults;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eal_mbuf_user_pool_ops;
+	rte_set_application_usage_hook;
+	rte_socket_count;
+	rte_socket_id;
+	rte_socket_id_by_idx;
+	rte_srand;
+	rte_strerror;
+	rte_strscpy;
+	rte_strsplit;
+	rte_sys_gettid;
+	rte_thread_get_affinity;
+	rte_thread_set_affinity;
+	rte_thread_setname;
 	rte_uuid_compare;
 	rte_uuid_is_null;
 	rte_uuid_parse;
 	rte_uuid_unparse;
+	rte_vfio_clear_group;
 	rte_vfio_container_create;
 	rte_vfio_container_destroy;
 	rte_vfio_container_dma_map;
@@ -250,67 +207,20 @@ DPDK_18.08 {
 	rte_vfio_container_group_unbind;
 	rte_vfio_dma_map;
 	rte_vfio_dma_unmap;
+	rte_vfio_enable;
 	rte_vfio_get_container_fd;
 	rte_vfio_get_group_fd;
 	rte_vfio_get_group_num;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_dev_probe;
-	rte_dev_remove;
-	rte_eal_get_runtime_dir;
-	rte_eal_hotplug_add;
-	rte_eal_hotplug_remove;
-	rte_strscpy;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_ctrl_thread_create;
-	rte_dev_is_probed;
-	rte_devargs_add;
-	rte_devargs_dump;
-	rte_devargs_insert;
-	rte_devargs_next;
-	rte_devargs_parse;
-	rte_devargs_parsef;
-	rte_devargs_remove;
-	rte_devargs_type_count;
-	rte_eal_cleanup;
-	rte_socket_count;
-	rte_socket_id_by_idx;
-
-} DPDK_18.11;
-
-DPDK_19.08 {
-	global:
-
-	rte_lcore_index;
-	rte_lcore_to_socket_id;
-	rte_mcfg_mem_read_lock;
-	rte_mcfg_mem_read_unlock;
-	rte_mcfg_mem_write_lock;
-	rte_mcfg_mem_write_unlock;
-	rte_mcfg_mempool_read_lock;
-	rte_mcfg_mempool_read_unlock;
-	rte_mcfg_mempool_write_lock;
-	rte_mcfg_mempool_write_unlock;
-	rte_mcfg_tailq_read_lock;
-	rte_mcfg_tailq_read_unlock;
-	rte_mcfg_tailq_write_lock;
-	rte_mcfg_tailq_write_unlock;
-	rte_rand;
-	rte_service_lcore_attr_get;
-	rte_service_lcore_attr_reset_all;
-	rte_service_may_be_active;
-	rte_srand;
-
-} DPDK_19.05;
+	rte_vfio_is_enabled;
+	rte_vfio_noiommu_is_enabled;
+	rte_vfio_release_device;
+	rte_vfio_setup_device;
+	rte_vlog;
+	rte_zmalloc;
+	rte_zmalloc_socket;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_efd/rte_efd_version.map b/lib/librte_efd/rte_efd_version.map
index ae60a64178..e010eecfe4 100644
--- a/lib/librte_efd/rte_efd_version.map
+++ b/lib/librte_efd/rte_efd_version.map
@@ -1,4 +1,4 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_efd_create;
diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map
index 6df42a47b8..9e1dbdebb4 100644
--- a/lib/librte_ethdev/rte_ethdev_version.map
+++ b/lib/librte_ethdev/rte_ethdev_version.map
@@ -1,35 +1,53 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	global:
 
+	_rte_eth_dev_callback_process;
+	_rte_eth_dev_reset;
+	rte_eth_add_first_rx_callback;
 	rte_eth_add_rx_callback;
 	rte_eth_add_tx_callback;
 	rte_eth_allmulticast_disable;
 	rte_eth_allmulticast_enable;
 	rte_eth_allmulticast_get;
+	rte_eth_dev_adjust_nb_rx_tx_desc;
 	rte_eth_dev_allocate;
 	rte_eth_dev_allocated;
+	rte_eth_dev_attach_secondary;
 	rte_eth_dev_callback_register;
 	rte_eth_dev_callback_unregister;
 	rte_eth_dev_close;
 	rte_eth_dev_configure;
 	rte_eth_dev_count;
+	rte_eth_dev_count_avail;
+	rte_eth_dev_count_total;
 	rte_eth_dev_default_mac_addr_set;
+	rte_eth_dev_filter_ctrl;
 	rte_eth_dev_filter_supported;
 	rte_eth_dev_flow_ctrl_get;
 	rte_eth_dev_flow_ctrl_set;
+	rte_eth_dev_fw_version_get;
 	rte_eth_dev_get_dcb_info;
 	rte_eth_dev_get_eeprom;
 	rte_eth_dev_get_eeprom_length;
 	rte_eth_dev_get_mtu;
+	rte_eth_dev_get_name_by_port;
+	rte_eth_dev_get_port_by_name;
 	rte_eth_dev_get_reg_info;
+	rte_eth_dev_get_sec_ctx;
+	rte_eth_dev_get_supported_ptypes;
 	rte_eth_dev_get_vlan_offload;
-	rte_eth_devices;
 	rte_eth_dev_info_get;
 	rte_eth_dev_is_valid_port;
+	rte_eth_dev_l2_tunnel_eth_type_conf;
+	rte_eth_dev_l2_tunnel_offload_set;
+	rte_eth_dev_logtype;
 	rte_eth_dev_mac_addr_add;
 	rte_eth_dev_mac_addr_remove;
+	rte_eth_dev_pool_ops_supported;
 	rte_eth_dev_priority_flow_ctrl_set;
+	rte_eth_dev_probing_finish;
 	rte_eth_dev_release_port;
+	rte_eth_dev_reset;
 	rte_eth_dev_rss_hash_conf_get;
 	rte_eth_dev_rss_hash_update;
 	rte_eth_dev_rss_reta_query;
@@ -38,6 +56,7 @@ DPDK_2.2 {
 	rte_eth_dev_rx_intr_ctl_q;
 	rte_eth_dev_rx_intr_disable;
 	rte_eth_dev_rx_intr_enable;
+	rte_eth_dev_rx_offload_name;
 	rte_eth_dev_rx_queue_start;
 	rte_eth_dev_rx_queue_stop;
 	rte_eth_dev_set_eeprom;
@@ -47,18 +66,28 @@ DPDK_2.2 {
 	rte_eth_dev_set_mtu;
 	rte_eth_dev_set_rx_queue_stats_mapping;
 	rte_eth_dev_set_tx_queue_stats_mapping;
+	rte_eth_dev_set_vlan_ether_type;
 	rte_eth_dev_set_vlan_offload;
 	rte_eth_dev_set_vlan_pvid;
 	rte_eth_dev_set_vlan_strip_on_queue;
 	rte_eth_dev_socket_id;
 	rte_eth_dev_start;
 	rte_eth_dev_stop;
+	rte_eth_dev_tx_offload_name;
 	rte_eth_dev_tx_queue_start;
 	rte_eth_dev_tx_queue_stop;
 	rte_eth_dev_uc_all_hash_table_set;
 	rte_eth_dev_uc_hash_table_set;
+	rte_eth_dev_udp_tunnel_port_add;
+	rte_eth_dev_udp_tunnel_port_delete;
 	rte_eth_dev_vlan_filter;
+	rte_eth_devices;
 	rte_eth_dma_zone_reserve;
+	rte_eth_find_next;
+	rte_eth_find_next_owned_by;
+	rte_eth_iterator_cleanup;
+	rte_eth_iterator_init;
+	rte_eth_iterator_next;
 	rte_eth_led_off;
 	rte_eth_led_on;
 	rte_eth_link;
@@ -75,6 +104,7 @@ DPDK_2.2 {
 	rte_eth_rx_queue_info_get;
 	rte_eth_rx_queue_setup;
 	rte_eth_set_queue_rate_limit;
+	rte_eth_speed_bitflag;
 	rte_eth_stats;
 	rte_eth_stats_get;
 	rte_eth_stats_reset;
@@ -85,66 +115,27 @@ DPDK_2.2 {
 	rte_eth_timesync_read_time;
 	rte_eth_timesync_read_tx_timestamp;
 	rte_eth_timesync_write_time;
-	rte_eth_tx_queue_info_get;
-	rte_eth_tx_queue_setup;
-	rte_eth_xstats_get;
-	rte_eth_xstats_reset;
-
-	local: *;
-};
-
-DPDK_16.04 {
-	global:
-
-	rte_eth_dev_get_supported_ptypes;
-	rte_eth_dev_l2_tunnel_eth_type_conf;
-	rte_eth_dev_l2_tunnel_offload_set;
-	rte_eth_dev_set_vlan_ether_type;
-	rte_eth_dev_udp_tunnel_port_add;
-	rte_eth_dev_udp_tunnel_port_delete;
-	rte_eth_speed_bitflag;
 	rte_eth_tx_buffer_count_callback;
 	rte_eth_tx_buffer_drop_callback;
 	rte_eth_tx_buffer_init;
 	rte_eth_tx_buffer_set_err_callback;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_add_first_rx_callback;
-	rte_eth_dev_get_name_by_port;
-	rte_eth_dev_get_port_by_name;
-	rte_eth_xstats_get_names;
-
-} DPDK_16.04;
-
-DPDK_17.02 {
-	global:
-
-	_rte_eth_dev_reset;
-	rte_eth_dev_fw_version_get;
-
-} DPDK_16.07;
-
-DPDK_17.05 {
-	global:
-
-	rte_eth_dev_attach_secondary;
-	rte_eth_find_next;
 	rte_eth_tx_done_cleanup;
+	rte_eth_tx_queue_info_get;
+	rte_eth_tx_queue_setup;
+	rte_eth_xstats_get;
 	rte_eth_xstats_get_by_id;
 	rte_eth_xstats_get_id_by_name;
+	rte_eth_xstats_get_names;
 	rte_eth_xstats_get_names_by_id;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	_rte_eth_dev_callback_process;
-	rte_eth_dev_adjust_nb_rx_tx_desc;
+	rte_eth_xstats_reset;
+	rte_flow_copy;
+	rte_flow_create;
+	rte_flow_destroy;
+	rte_flow_error_set;
+	rte_flow_flush;
+	rte_flow_isolate;
+	rte_flow_query;
+	rte_flow_validate;
 	rte_tm_capabilities_get;
 	rte_tm_get_number_of_leaf_nodes;
 	rte_tm_hierarchy_commit;
@@ -176,65 +167,8 @@ DPDK_17.08 {
 	rte_tm_wred_profile_add;
 	rte_tm_wred_profile_delete;
 
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eth_dev_get_sec_ctx;
-	rte_eth_dev_pool_ops_supported;
-	rte_eth_dev_reset;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_eth_dev_filter_ctrl;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_eth_dev_count_avail;
-	rte_eth_dev_probing_finish;
-	rte_eth_find_next_owned_by;
-	rte_flow_copy;
-	rte_flow_create;
-	rte_flow_destroy;
-	rte_flow_error_set;
-	rte_flow_flush;
-	rte_flow_isolate;
-	rte_flow_query;
-	rte_flow_validate;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eth_dev_logtype;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_eth_dev_rx_offload_name;
-	rte_eth_dev_tx_offload_name;
-	rte_eth_iterator_cleanup;
-	rte_eth_iterator_init;
-	rte_eth_iterator_next;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_eth_dev_count_total;
-
-} DPDK_18.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_eventdev/rte_eventdev_version.map b/lib/librte_eventdev/rte_eventdev_version.map
index 76b3021d3a..edfc15282d 100644
--- a/lib/librte_eventdev/rte_eventdev_version.map
+++ b/lib/librte_eventdev/rte_eventdev_version.map
@@ -1,61 +1,38 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
-	rte_eventdevs;
-
+	rte_event_crypto_adapter_caps_get;
+	rte_event_crypto_adapter_create;
+	rte_event_crypto_adapter_create_ext;
+	rte_event_crypto_adapter_event_port_get;
+	rte_event_crypto_adapter_free;
+	rte_event_crypto_adapter_queue_pair_add;
+	rte_event_crypto_adapter_queue_pair_del;
+	rte_event_crypto_adapter_service_id_get;
+	rte_event_crypto_adapter_start;
+	rte_event_crypto_adapter_stats_get;
+	rte_event_crypto_adapter_stats_reset;
+	rte_event_crypto_adapter_stop;
+	rte_event_dequeue_timeout_ticks;
+	rte_event_dev_attr_get;
+	rte_event_dev_close;
+	rte_event_dev_configure;
 	rte_event_dev_count;
+	rte_event_dev_dump;
 	rte_event_dev_get_dev_id;
-	rte_event_dev_socket_id;
 	rte_event_dev_info_get;
-	rte_event_dev_configure;
+	rte_event_dev_selftest;
+	rte_event_dev_service_id_get;
+	rte_event_dev_socket_id;
 	rte_event_dev_start;
 	rte_event_dev_stop;
-	rte_event_dev_close;
-	rte_event_dev_dump;
+	rte_event_dev_stop_flush_callback_register;
 	rte_event_dev_xstats_by_name_get;
 	rte_event_dev_xstats_get;
 	rte_event_dev_xstats_names_get;
 	rte_event_dev_xstats_reset;
-
-	rte_event_port_default_conf_get;
-	rte_event_port_setup;
-	rte_event_port_link;
-	rte_event_port_unlink;
-	rte_event_port_links_get;
-
-	rte_event_queue_default_conf_get;
-	rte_event_queue_setup;
-
-	rte_event_dequeue_timeout_ticks;
-
-	rte_event_pmd_allocate;
-	rte_event_pmd_release;
-	rte_event_pmd_vdev_init;
-	rte_event_pmd_vdev_uninit;
-	rte_event_pmd_pci_probe;
-	rte_event_pmd_pci_remove;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	rte_event_ring_create;
-	rte_event_ring_free;
-	rte_event_ring_init;
-	rte_event_ring_lookup;
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_event_dev_attr_get;
-	rte_event_dev_service_id_get;
-	rte_event_port_attr_get;
-	rte_event_queue_attr_get;
-
 	rte_event_eth_rx_adapter_caps_get;
+	rte_event_eth_rx_adapter_cb_register;
 	rte_event_eth_rx_adapter_create;
 	rte_event_eth_rx_adapter_create_ext;
 	rte_event_eth_rx_adapter_free;
@@ -63,38 +40,9 @@ DPDK_17.11 {
 	rte_event_eth_rx_adapter_queue_del;
 	rte_event_eth_rx_adapter_service_id_get;
 	rte_event_eth_rx_adapter_start;
+	rte_event_eth_rx_adapter_stats_get;
 	rte_event_eth_rx_adapter_stats_reset;
 	rte_event_eth_rx_adapter_stop;
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_event_dev_selftest;
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_event_dev_stop_flush_callback_register;
-} DPDK_18.02;
-
-DPDK_19.05 {
-	global:
-
-	rte_event_crypto_adapter_caps_get;
-	rte_event_crypto_adapter_create;
-	rte_event_crypto_adapter_create_ext;
-	rte_event_crypto_adapter_event_port_get;
-	rte_event_crypto_adapter_free;
-	rte_event_crypto_adapter_queue_pair_add;
-	rte_event_crypto_adapter_queue_pair_del;
-	rte_event_crypto_adapter_service_id_get;
-	rte_event_crypto_adapter_start;
-	rte_event_crypto_adapter_stats_get;
-	rte_event_crypto_adapter_stats_reset;
-	rte_event_crypto_adapter_stop;
-	rte_event_port_unlinks_in_progress;
 	rte_event_eth_tx_adapter_caps_get;
 	rte_event_eth_tx_adapter_create;
 	rte_event_eth_tx_adapter_create_ext;
@@ -107,6 +55,26 @@ DPDK_19.05 {
 	rte_event_eth_tx_adapter_stats_get;
 	rte_event_eth_tx_adapter_stats_reset;
 	rte_event_eth_tx_adapter_stop;
+	rte_event_pmd_allocate;
+	rte_event_pmd_pci_probe;
+	rte_event_pmd_pci_remove;
+	rte_event_pmd_release;
+	rte_event_pmd_vdev_init;
+	rte_event_pmd_vdev_uninit;
+	rte_event_port_attr_get;
+	rte_event_port_default_conf_get;
+	rte_event_port_link;
+	rte_event_port_links_get;
+	rte_event_port_setup;
+	rte_event_port_unlink;
+	rte_event_port_unlinks_in_progress;
+	rte_event_queue_attr_get;
+	rte_event_queue_default_conf_get;
+	rte_event_queue_setup;
+	rte_event_ring_create;
+	rte_event_ring_free;
+	rte_event_ring_init;
+	rte_event_ring_lookup;
 	rte_event_timer_adapter_caps_get;
 	rte_event_timer_adapter_create;
 	rte_event_timer_adapter_create_ext;
@@ -121,11 +89,7 @@ DPDK_19.05 {
 	rte_event_timer_arm_burst;
 	rte_event_timer_arm_tmo_tick_burst;
 	rte_event_timer_cancel_burst;
-} DPDK_18.05;
+	rte_eventdevs;
 
-DPDK_19.08 {
-	global:
-
-	rte_event_eth_rx_adapter_cb_register;
-	rte_event_eth_rx_adapter_stats_get;
-} DPDK_19.05;
+	local: *;
+};
diff --git a/lib/librte_flow_classify/rte_flow_classify_version.map b/lib/librte_flow_classify/rte_flow_classify_version.map
index 49bc25c6a0..001ff660e3 100644
--- a/lib/librte_flow_classify/rte_flow_classify_version.map
+++ b/lib/librte_flow_classify/rte_flow_classify_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_gro/rte_gro_version.map b/lib/librte_gro/rte_gro_version.map
index 1606b6dc72..9f6fe79e57 100644
--- a/lib/librte_gro/rte_gro_version.map
+++ b/lib/librte_gro/rte_gro_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_gro_ctx_create;
diff --git a/lib/librte_gso/rte_gso_version.map b/lib/librte_gso/rte_gso_version.map
index e1fd453edb..8505a59c27 100644
--- a/lib/librte_gso/rte_gso_version.map
+++ b/lib/librte_gso/rte_gso_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_gso_segment;
diff --git a/lib/librte_hash/rte_hash_version.map b/lib/librte_hash/rte_hash_version.map
index 734ae28b04..138c130c1b 100644
--- a/lib/librte_hash/rte_hash_version.map
+++ b/lib/librte_hash/rte_hash_version.map
@@ -1,58 +1,33 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_fbk_hash_create;
 	rte_fbk_hash_find_existing;
 	rte_fbk_hash_free;
 	rte_hash_add_key;
+	rte_hash_add_key_data;
 	rte_hash_add_key_with_hash;
+	rte_hash_add_key_with_hash_data;
+	rte_hash_count;
 	rte_hash_create;
 	rte_hash_del_key;
 	rte_hash_del_key_with_hash;
 	rte_hash_find_existing;
 	rte_hash_free;
+	rte_hash_get_key_with_position;
 	rte_hash_hash;
+	rte_hash_iterate;
 	rte_hash_lookup;
 	rte_hash_lookup_bulk;
-	rte_hash_lookup_with_hash;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_hash_add_key_data;
-	rte_hash_add_key_with_hash_data;
-	rte_hash_iterate;
 	rte_hash_lookup_bulk_data;
 	rte_hash_lookup_data;
+	rte_hash_lookup_with_hash;
 	rte_hash_lookup_with_hash_data;
 	rte_hash_reset;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_hash_set_cmp_func;
 
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_hash_get_key_with_position;
-
-} DPDK_2.2;
-
-
-DPDK_18.08 {
-	global:
-
-	rte_hash_count;
-
-} DPDK_16.07;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_ip_frag/rte_ip_frag_version.map b/lib/librte_ip_frag/rte_ip_frag_version.map
index a193007c61..5dd34f828c 100644
--- a/lib/librte_ip_frag/rte_ip_frag_version.map
+++ b/lib/librte_ip_frag/rte_ip_frag_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
 	rte_ipv4_fragment_packet;
@@ -12,13 +13,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_17.08 {
-	global:
-
-	rte_ip_frag_table_destroy;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_ipsec/rte_ipsec_version.map b/lib/librte_ipsec/rte_ipsec_version.map
index ee9f1961b0..3723b812fc 100644
--- a/lib/librte_ipsec/rte_ipsec_version.map
+++ b/lib/librte_ipsec/rte_ipsec_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_jobstats/rte_jobstats_version.map b/lib/librte_jobstats/rte_jobstats_version.map
index f89441438e..dbd2664ae2 100644
--- a/lib/librte_jobstats/rte_jobstats_version.map
+++ b/lib/librte_jobstats/rte_jobstats_version.map
@@ -1,6 +1,7 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_jobstats_abort;
 	rte_jobstats_context_finish;
 	rte_jobstats_context_init;
 	rte_jobstats_context_reset;
@@ -17,10 +18,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_jobstats_abort;
-
-} DPDK_2.0;
diff --git a/lib/librte_kni/rte_kni_version.map b/lib/librte_kni/rte_kni_version.map
index c877dc6aaa..9cd3cedc54 100644
--- a/lib/librte_kni/rte_kni_version.map
+++ b/lib/librte_kni/rte_kni_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kni_alloc;
diff --git a/lib/librte_kvargs/rte_kvargs_version.map b/lib/librte_kvargs/rte_kvargs_version.map
index 8f4b4e3f8f..3ba0f4b59c 100644
--- a/lib/librte_kvargs/rte_kvargs_version.map
+++ b/lib/librte_kvargs/rte_kvargs_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kvargs_count;
@@ -15,4 +15,4 @@ EXPERIMENTAL {
 	rte_kvargs_parse_delim;
 	rte_kvargs_strcmp;
 
-} DPDK_2.0;
+};
diff --git a/lib/librte_latencystats/rte_latencystats_version.map b/lib/librte_latencystats/rte_latencystats_version.map
index ac8403e821..e04e63463f 100644
--- a/lib/librte_latencystats/rte_latencystats_version.map
+++ b/lib/librte_latencystats/rte_latencystats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_latencystats_get;
diff --git a/lib/librte_lpm/rte_lpm_version.map b/lib/librte_lpm/rte_lpm_version.map
index 90beac853d..500f58b806 100644
--- a/lib/librte_lpm/rte_lpm_version.map
+++ b/lib/librte_lpm/rte_lpm_version.map
@@ -1,13 +1,6 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
-	rte_lpm_add;
-	rte_lpm_create;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-	rte_lpm_find_existing;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
 	rte_lpm6_add;
 	rte_lpm6_create;
 	rte_lpm6_delete;
@@ -18,29 +11,13 @@ DPDK_2.0 {
 	rte_lpm6_is_rule_present;
 	rte_lpm6_lookup;
 	rte_lpm6_lookup_bulk_func;
+	rte_lpm_add;
+	rte_lpm_create;
+	rte_lpm_delete;
+	rte_lpm_delete_all;
+	rte_lpm_find_existing;
+	rte_lpm_free;
+	rte_lpm_is_rule_present;
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_lpm_add;
-	rte_lpm_find_existing;
-	rte_lpm_create;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_lpm6_add;
-	rte_lpm6_is_rule_present;
-	rte_lpm6_lookup;
-	rte_lpm6_lookup_bulk_func;
-
-} DPDK_16.04;
diff --git a/lib/librte_mbuf/rte_mbuf_version.map b/lib/librte_mbuf/rte_mbuf_version.map
index 2662a37bf6..d20aa31857 100644
--- a/lib/librte_mbuf/rte_mbuf_version.map
+++ b/lib/librte_mbuf/rte_mbuf_version.map
@@ -1,24 +1,4 @@
-DPDK_2.0 {
-	global:
-
-	rte_get_rx_ol_flag_name;
-	rte_get_tx_ol_flag_name;
-	rte_mbuf_sanity_check;
-	rte_pktmbuf_dump;
-	rte_pktmbuf_init;
-	rte_pktmbuf_pool_init;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pktmbuf_pool_create;
-
-} DPDK_2.0;
-
-DPDK_16.11 {
+DPDK_20.0 {
 	global:
 
 	__rte_pktmbuf_read;
@@ -31,23 +11,26 @@ DPDK_16.11 {
 	rte_get_ptype_name;
 	rte_get_ptype_tunnel_name;
 	rte_get_rx_ol_flag_list;
+	rte_get_rx_ol_flag_name;
 	rte_get_tx_ol_flag_list;
-
-} DPDK_2.1;
-
-DPDK_18.08 {
-	global:
-
+	rte_get_tx_ol_flag_name;
 	rte_mbuf_best_mempool_ops;
 	rte_mbuf_platform_mempool_ops;
+	rte_mbuf_sanity_check;
 	rte_mbuf_set_platform_mempool_ops;
 	rte_mbuf_set_user_mempool_ops;
 	rte_mbuf_user_mempool_ops;
+	rte_pktmbuf_dump;
+	rte_pktmbuf_init;
+	rte_pktmbuf_pool_create;
 	rte_pktmbuf_pool_create_by_ops;
-} DPDK_16.11;
+	rte_pktmbuf_pool_init;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
 
 	rte_mbuf_check;
-} DPDK_18.08;
+};
diff --git a/lib/librte_member/rte_member_version.map b/lib/librte_member/rte_member_version.map
index 019e4cd962..87780ae611 100644
--- a/lib/librte_member/rte_member_version.map
+++ b/lib/librte_member/rte_member_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_member_add;
diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map
index 17cbca4607..6a425d203a 100644
--- a/lib/librte_mempool/rte_mempool_version.map
+++ b/lib/librte_mempool/rte_mempool_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_mempool_audit;
-	rte_mempool_calc_obj_size;
-	rte_mempool_create;
-	rte_mempool_dump;
-	rte_mempool_list_dump;
-	rte_mempool_lookup;
-	rte_mempool_walk;
-
-	local: *;
-};
-
-DPDK_16.07 {
-	global:
-
 	rte_mempool_avail_count;
 	rte_mempool_cache_create;
 	rte_mempool_cache_flush;
 	rte_mempool_cache_free;
+	rte_mempool_calc_obj_size;
 	rte_mempool_check_cookies;
+	rte_mempool_contig_blocks_check_cookies;
+	rte_mempool_create;
 	rte_mempool_create_empty;
 	rte_mempool_default_cache;
+	rte_mempool_dump;
 	rte_mempool_free;
 	rte_mempool_generic_get;
 	rte_mempool_generic_put;
 	rte_mempool_in_use_count;
+	rte_mempool_list_dump;
+	rte_mempool_lookup;
 	rte_mempool_mem_iter;
 	rte_mempool_obj_iter;
+	rte_mempool_op_calc_mem_size_default;
+	rte_mempool_op_populate_default;
 	rte_mempool_ops_table;
 	rte_mempool_populate_anon;
 	rte_mempool_populate_default;
+	rte_mempool_populate_iova;
 	rte_mempool_populate_virt;
 	rte_mempool_register_ops;
 	rte_mempool_set_ops_byname;
+	rte_mempool_walk;
 
-} DPDK_2.0;
-
-DPDK_17.11 {
-	global:
-
-	rte_mempool_populate_iova;
-
-} DPDK_16.07;
-
-DPDK_18.05 {
-	global:
-
-	rte_mempool_contig_blocks_check_cookies;
-	rte_mempool_op_calc_mem_size_default;
-	rte_mempool_op_populate_default;
-
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_meter/rte_meter_version.map b/lib/librte_meter/rte_meter_version.map
index 4b460d5803..46410b0369 100644
--- a/lib/librte_meter/rte_meter_version.map
+++ b/lib/librte_meter/rte_meter_version.map
@@ -1,21 +1,16 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_meter_srtcm_color_aware_check;
 	rte_meter_srtcm_color_blind_check;
 	rte_meter_srtcm_config;
+	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_color_aware_check;
 	rte_meter_trtcm_color_blind_check;
 	rte_meter_trtcm_config;
-
-	local: *;
-};
-
-DPDK_18.08 {
-	global:
-
-	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_profile_config;
+
+	local: *;
 };
 
 EXPERIMENTAL {
diff --git a/lib/librte_metrics/rte_metrics_version.map b/lib/librte_metrics/rte_metrics_version.map
index 6ac99a44a1..85663f356e 100644
--- a/lib/librte_metrics/rte_metrics_version.map
+++ b/lib/librte_metrics/rte_metrics_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_metrics_get_names;
diff --git a/lib/librte_net/rte_net_version.map b/lib/librte_net/rte_net_version.map
index fffc4a3723..8a4e75a3a0 100644
--- a/lib/librte_net/rte_net_version.map
+++ b/lib/librte_net/rte_net_version.map
@@ -1,25 +1,14 @@
-DPDK_16.11 {
-	global:
-	rte_net_get_ptype;
-
-	local: *;
-};
-
-DPDK_17.05 {
-	global:
-
-	rte_net_crc_calc;
-	rte_net_crc_set_alg;
-
-} DPDK_16.11;
-
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_random_addr;
 	rte_ether_format_addr;
+	rte_net_crc_calc;
+	rte_net_crc_set_alg;
+	rte_net_get_ptype;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_pci/rte_pci_version.map b/lib/librte_pci/rte_pci_version.map
index c0280277bb..539785f5f4 100644
--- a/lib/librte_pci/rte_pci_version.map
+++ b/lib/librte_pci/rte_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	eal_parse_pci_BDF;
diff --git a/lib/librte_pdump/rte_pdump_version.map b/lib/librte_pdump/rte_pdump_version.map
index 3e744f3012..6d02ccce6d 100644
--- a/lib/librte_pdump/rte_pdump_version.map
+++ b/lib/librte_pdump/rte_pdump_version.map
@@ -1,4 +1,4 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	global:
 
 	rte_pdump_disable;
diff --git a/lib/librte_pipeline/rte_pipeline_version.map b/lib/librte_pipeline/rte_pipeline_version.map
index 420f065d6e..64d38afecd 100644
--- a/lib/librte_pipeline/rte_pipeline_version.map
+++ b/lib/librte_pipeline/rte_pipeline_version.map
@@ -1,6 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_pipeline_ah_packet_drop;
+	rte_pipeline_ah_packet_hijack;
 	rte_pipeline_check;
 	rte_pipeline_create;
 	rte_pipeline_flush;
@@ -9,42 +11,22 @@ DPDK_2.0 {
 	rte_pipeline_port_in_create;
 	rte_pipeline_port_in_disable;
 	rte_pipeline_port_in_enable;
+	rte_pipeline_port_in_stats_read;
 	rte_pipeline_port_out_create;
 	rte_pipeline_port_out_packet_insert;
+	rte_pipeline_port_out_stats_read;
 	rte_pipeline_run;
 	rte_pipeline_table_create;
 	rte_pipeline_table_default_entry_add;
 	rte_pipeline_table_default_entry_delete;
 	rte_pipeline_table_entry_add;
-	rte_pipeline_table_entry_delete;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pipeline_port_in_stats_read;
-	rte_pipeline_port_out_stats_read;
-	rte_pipeline_table_stats_read;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_pipeline_table_entry_add_bulk;
+	rte_pipeline_table_entry_delete;
 	rte_pipeline_table_entry_delete_bulk;
+	rte_pipeline_table_stats_read;
 
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_pipeline_ah_packet_hijack;
-	rte_pipeline_ah_packet_drop;
-
-} DPDK_2.2;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_port/rte_port_version.map b/lib/librte_port/rte_port_version.map
index 609bcec3ff..db1b8681d9 100644
--- a/lib/librte_port/rte_port_version.map
+++ b/lib/librte_port/rte_port_version.map
@@ -1,62 +1,32 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_port_ethdev_reader_ops;
+	rte_port_ethdev_writer_nodrop_ops;
 	rte_port_ethdev_writer_ops;
+	rte_port_fd_reader_ops;
+	rte_port_fd_writer_nodrop_ops;
+	rte_port_fd_writer_ops;
+	rte_port_kni_reader_ops;
+	rte_port_kni_writer_nodrop_ops;
+	rte_port_kni_writer_ops;
+	rte_port_ring_multi_reader_ops;
+	rte_port_ring_multi_writer_nodrop_ops;
+	rte_port_ring_multi_writer_ops;
 	rte_port_ring_reader_ipv4_frag_ops;
+	rte_port_ring_reader_ipv6_frag_ops;
 	rte_port_ring_reader_ops;
 	rte_port_ring_writer_ipv4_ras_ops;
+	rte_port_ring_writer_ipv6_ras_ops;
+	rte_port_ring_writer_nodrop_ops;
 	rte_port_ring_writer_ops;
 	rte_port_sched_reader_ops;
 	rte_port_sched_writer_ops;
 	rte_port_sink_ops;
 	rte_port_source_ops;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_port_ethdev_writer_nodrop_ops;
-	rte_port_ring_reader_ipv6_frag_ops;
-	rte_port_ring_writer_ipv6_ras_ops;
-	rte_port_ring_writer_nodrop_ops;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_port_ring_multi_reader_ops;
-	rte_port_ring_multi_writer_ops;
-	rte_port_ring_multi_writer_nodrop_ops;
-
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_port_kni_reader_ops;
-	rte_port_kni_writer_ops;
-	rte_port_kni_writer_nodrop_ops;
-
-} DPDK_2.2;
-
-DPDK_16.11 {
-	global:
-
-	rte_port_fd_reader_ops;
-	rte_port_fd_writer_ops;
-	rte_port_fd_writer_nodrop_ops;
-
-} DPDK_16.07;
-
-DPDK_18.11 {
-	global:
-
 	rte_port_sym_crypto_reader_ops;
-	rte_port_sym_crypto_writer_ops;
 	rte_port_sym_crypto_writer_nodrop_ops;
+	rte_port_sym_crypto_writer_ops;
 
-} DPDK_16.11;
+	local: *;
+};
diff --git a/lib/librte_power/rte_power_version.map b/lib/librte_power/rte_power_version.map
index 042917360e..a94ab30c3d 100644
--- a/lib/librte_power/rte_power_version.map
+++ b/lib/librte_power/rte_power_version.map
@@ -1,39 +1,27 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_power_exit;
+	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
+	rte_power_freq_enable_turbo;
 	rte_power_freq_max;
 	rte_power_freq_min;
 	rte_power_freq_up;
 	rte_power_freqs;
+	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_guest_channel_send_msg;
 	rte_power_init;
 	rte_power_set_env;
 	rte_power_set_freq;
+	rte_power_turbo_status;
 	rte_power_unset_env;
 
 	local: *;
 };
 
-DPDK_17.11 {
-	global:
-
-	rte_power_guest_channel_send_msg;
-	rte_power_freq_disable_turbo;
-	rte_power_freq_enable_turbo;
-	rte_power_turbo_status;
-
-} DPDK_2.0;
-
-DPDK_18.08 {
-	global:
-
-	rte_power_get_capabilities;
-
-} DPDK_17.11;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_rawdev/rte_rawdev_version.map b/lib/librte_rawdev/rte_rawdev_version.map
index b61dbff11c..d847c9e0d3 100644
--- a/lib/librte_rawdev/rte_rawdev_version.map
+++ b/lib/librte_rawdev/rte_rawdev_version.map
@@ -1,4 +1,4 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_rawdev_close;
@@ -17,8 +17,8 @@ DPDK_18.08 {
 	rte_rawdev_pmd_release;
 	rte_rawdev_queue_conf_get;
 	rte_rawdev_queue_count;
-	rte_rawdev_queue_setup;
 	rte_rawdev_queue_release;
+	rte_rawdev_queue_setup;
 	rte_rawdev_reset;
 	rte_rawdev_selftest;
 	rte_rawdev_set_attr;
diff --git a/lib/librte_rcu/rte_rcu_version.map b/lib/librte_rcu/rte_rcu_version.map
index f8b9ef2abb..787e51ef27 100644
--- a/lib/librte_rcu/rte_rcu_version.map
+++ b/lib/librte_rcu/rte_rcu_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_reorder/rte_reorder_version.map b/lib/librte_reorder/rte_reorder_version.map
index 0a8a54de83..cf444062df 100644
--- a/lib/librte_reorder/rte_reorder_version.map
+++ b/lib/librte_reorder/rte_reorder_version.map
@@ -1,13 +1,13 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_reorder_create;
-	rte_reorder_init;
+	rte_reorder_drain;
 	rte_reorder_find_existing;
-	rte_reorder_reset;
 	rte_reorder_free;
+	rte_reorder_init;
 	rte_reorder_insert;
-	rte_reorder_drain;
+	rte_reorder_reset;
 
 	local: *;
 };
diff --git a/lib/librte_ring/rte_ring_version.map b/lib/librte_ring/rte_ring_version.map
index 510c1386e0..89d84bcf48 100644
--- a/lib/librte_ring/rte_ring_version.map
+++ b/lib/librte_ring/rte_ring_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ring_create;
 	rte_ring_dump;
+	rte_ring_free;
 	rte_ring_get_memsize;
 	rte_ring_init;
 	rte_ring_list_dump;
@@ -11,13 +12,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.2 {
-	global:
-
-	rte_ring_free;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_sched/rte_sched_version.map b/lib/librte_sched/rte_sched_version.map
index 729588794e..1b48bfbf36 100644
--- a/lib/librte_sched/rte_sched_version.map
+++ b/lib/librte_sched/rte_sched_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_approx;
@@ -14,6 +14,9 @@ DPDK_2.0 {
 	rte_sched_port_enqueue;
 	rte_sched_port_free;
 	rte_sched_port_get_memory_footprint;
+	rte_sched_port_pkt_read_color;
+	rte_sched_port_pkt_read_tree_path;
+	rte_sched_port_pkt_write;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_read_stats;
@@ -21,15 +24,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.1 {
-	global:
-
-	rte_sched_port_pkt_write;
-	rte_sched_port_pkt_read_tree_path;
-	rte_sched_port_pkt_read_color;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_security/rte_security_version.map b/lib/librte_security/rte_security_version.map
index 53267bf3cc..b07314bbf4 100644
--- a/lib/librte_security/rte_security_version.map
+++ b/lib/librte_security/rte_security_version.map
@@ -1,4 +1,4 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	rte_security_attach_session;
diff --git a/lib/librte_stack/rte_stack_version.map b/lib/librte_stack/rte_stack_version.map
index 6662679c36..adbb7be9d9 100644
--- a/lib/librte_stack/rte_stack_version.map
+++ b/lib/librte_stack/rte_stack_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_table/rte_table_version.map b/lib/librte_table/rte_table_version.map
index 6237252bec..40f72b1fe8 100644
--- a/lib/librte_table/rte_table_version.map
+++ b/lib/librte_table/rte_table_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_table_acl_ops;
diff --git a/lib/librte_telemetry/rte_telemetry_version.map b/lib/librte_telemetry/rte_telemetry_version.map
index fa62d7718c..c1f4613af5 100644
--- a/lib/librte_telemetry/rte_telemetry_version.map
+++ b/lib/librte_telemetry/rte_telemetry_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_timer/rte_timer_version.map b/lib/librte_timer/rte_timer_version.map
index 72f75c8181..2a59d3f081 100644
--- a/lib/librte_timer/rte_timer_version.map
+++ b/lib/librte_timer/rte_timer_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_timer_dump_stats;
@@ -14,16 +14,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_19.05 {
-	global:
-
-	rte_timer_dump_stats;
-	rte_timer_manage;
-	rte_timer_reset;
-	rte_timer_stop;
-	rte_timer_subsystem_init;
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_vhost/rte_vhost_version.map b/lib/librte_vhost/rte_vhost_version.map
index 5f1d4a75c2..8e9ffac2c2 100644
--- a/lib/librte_vhost/rte_vhost_version.map
+++ b/lib/librte_vhost/rte_vhost_version.map
@@ -1,64 +1,34 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_vhost_avail_entries;
 	rte_vhost_dequeue_burst;
 	rte_vhost_driver_callback_register;
-	rte_vhost_driver_register;
-	rte_vhost_enable_guest_notification;
-	rte_vhost_enqueue_burst;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_vhost_driver_unregister;
-
-} DPDK_2.0;
-
-DPDK_16.07 {
-	global:
-
-	rte_vhost_avail_entries;
-	rte_vhost_get_ifname;
-	rte_vhost_get_numa_node;
-	rte_vhost_get_queue_num;
-
-} DPDK_2.1;
-
-DPDK_17.05 {
-	global:
-
 	rte_vhost_driver_disable_features;
 	rte_vhost_driver_enable_features;
 	rte_vhost_driver_get_features;
+	rte_vhost_driver_register;
 	rte_vhost_driver_set_features;
 	rte_vhost_driver_start;
+	rte_vhost_driver_unregister;
+	rte_vhost_enable_guest_notification;
+	rte_vhost_enqueue_burst;
+	rte_vhost_get_ifname;
 	rte_vhost_get_mem_table;
 	rte_vhost_get_mtu;
 	rte_vhost_get_negotiated_features;
+	rte_vhost_get_numa_node;
+	rte_vhost_get_queue_num;
 	rte_vhost_get_vhost_vring;
 	rte_vhost_get_vring_num;
 	rte_vhost_gpa_to_vva;
 	rte_vhost_log_used_vring;
 	rte_vhost_log_write;
-
-} DPDK_16.07;
-
-DPDK_17.08 {
-	global:
-
 	rte_vhost_rx_queue_count;
-
-} DPDK_17.05;
-
-DPDK_18.02 {
-	global:
-
 	rte_vhost_vring_call;
 
-} DPDK_17.08;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v3 9/9] buildtools: add ABI versioning check script
  2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
                     ` (8 preceding siblings ...)
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 8/9] build: change ABI version to 20.0 Anatoly Burakov
@ 2019-10-16 17:03   ` Anatoly Burakov
  9 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-16 17:03 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, john.mcnamara, bruce.richardson, thomas,
	david.marchand, Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

Add a shell script that checks whether built libraries are
versioned with expected ABI (current ABI, current ABI + 1,
or EXPERIMENTAL).

The following command was used to verify current source tree
(assuming build directory is in ./build):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - Moved this to the end of the patchset
    - Fixed bug when ABI symbols were not found because the .so
      did not declare any public symbols

 buildtools/check-abi-version.sh | 54 +++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100755 buildtools/check-abi-version.sh

diff --git a/buildtools/check-abi-version.sh b/buildtools/check-abi-version.sh
new file mode 100755
index 0000000000..29aea97735
--- /dev/null
+++ b/buildtools/check-abi-version.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+# Check whether library symbols have correct
+# version (provided ABI number or provided ABI
+# number + 1 or EXPERIMENTAL).
+# Args:
+#   $1: path of the library .so file
+#   $2: ABI major version number to check
+#       (defaults to ABI_VERSION file value)
+
+if [ -z "$1" ]; then
+    echo "Script checks whether library symbols have"
+    echo "correct version (ABI_VER/ABI_VER+1/EXPERIMENTAL)"
+    echo "Usage:"
+    echo "  $0 SO_FILE_PATH [ABI_VER]"
+    exit 1
+fi
+
+LIB="$1"
+DEFAULT_ABI=$(cat "$(dirname \
+            $(readlink -f $0))/../config/ABI_VERSION" | \
+            cut -d'.' -f 1)
+ABIVER="DPDK_${2-$DEFAULT_ABI}"
+NEXT_ABIVER="DPDK_$((${2-$DEFAULT_ABI}+1))"
+
+ret=0
+
+# get output of objdump
+OBJ_DUMP_OUTPUT=`objdump -TC --section=.text ${LIB} 2>&1 | grep ".text"`
+
+# there may not be any .text sections in the .so file, in which case exit early
+echo "${OBJ_DUMP_OUTPUT}" | grep "not found in any input file" -q
+if [ "$?" -eq 0 ]; then
+    exit 0
+fi
+
+# we have symbols, so let's see if the versions are correct
+for SYM in `echo "${OBJ_DUMP_OUTPUT}" | awk '{print $(NF-1) "-" $NF}'`
+do
+    version=$(echo $SYM | cut -d'-' -f 1)
+    symbol=$(echo $SYM | cut -d'-' -f 2)
+    case $version in (*"$ABIVER"*|*"$NEXT_ABIVER"*|"EXPERIMENTAL")
+        ;;
+    (*)
+        echo "Warning: symbol $symbol ($version) should be annotated " \
+             "as ABI version $ABIVER / $NEXT_ABIVER, or EXPERIMENTAL."
+        ret=1
+    ;;
+    esac
+done
+
+exit $ret
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global Anatoly Burakov
@ 2019-10-17  8:44     ` Bruce Richardson
  2019-10-17 10:25       ` Burakov, Anatoly
  2019-10-17 14:09       ` Luca Boccassi
  0 siblings, 2 replies; 131+ messages in thread
From: Bruce Richardson @ 2019-10-17  8:44 UTC (permalink / raw)
  To: Anatoly Burakov
  Cc: dev, Marcin Baran, Thomas Monjalon, john.mcnamara,
	david.marchand, Pawel Modrak, bluca, ktraynor

On Wed, Oct 16, 2019 at 06:03:36PM +0100, Anatoly Burakov wrote:
> From: Marcin Baran <marcinx.baran@intel.com>
> 
> As per new ABI policy, all of the libraries are now versioned using
> one global ABI version. Changes in this patch implement the
> necessary steps to enable that.
> 
> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> ---
> 
> Notes:
>     v3:
>     - Removed Windows support from Makefile changes
>     - Removed unneeded path conversions from meson files
> 
>  buildtools/meson.build |  2 ++
>  config/ABI_VERSION     |  1 +
>  config/meson.build     |  5 +++--
>  drivers/meson.build    | 20 ++++++++++++--------
>  lib/meson.build        | 18 +++++++++++-------
>  meson_options.txt      |  2 --
>  mk/rte.lib.mk          | 13 ++++---------
>  7 files changed, 33 insertions(+), 28 deletions(-)
>  create mode 100644 config/ABI_VERSION
> 
> diff --git a/buildtools/meson.build b/buildtools/meson.build
> index 32c79c1308..78ce69977d 100644
> --- a/buildtools/meson.build
> +++ b/buildtools/meson.build
> @@ -12,3 +12,5 @@ if python3.found()
>  else
>  	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
>  endif
> +
> +is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
> diff --git a/config/ABI_VERSION b/config/ABI_VERSION
> new file mode 100644
> index 0000000000..9a7c1e503f
> --- /dev/null
> +++ b/config/ABI_VERSION
> @@ -0,0 +1 @@
> +20.0
> diff --git a/config/meson.build b/config/meson.build
> index a27f731f85..3cfc02406c 100644
> --- a/config/meson.build
> +++ b/config/meson.build
> @@ -17,7 +17,8 @@ endforeach
>  # set the major version, which might be used by drivers and libraries
>  # depending on the configuration options
>  pver = meson.project_version().split('.')
> -major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
> +abi_version = run_command(find_program('cat', 'more'),
> +	files('ABI_VERSION')).stdout().strip()
>  
>  # extract all version information into the build configuration
>  dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
> @@ -37,7 +38,7 @@ endif
>  
>  pmd_subdir_opt = get_option('drivers_install_subdir')
>  if pmd_subdir_opt.contains('<VERSION>')
> -	pmd_subdir_opt = major_version.join(pmd_subdir_opt.split('<VERSION>'))
> +	pmd_subdir_opt = abi_version.join(pmd_subdir_opt.split('<VERSION>'))
>  endif

This is an interesting change, and I'm not sure about it. I think for
user-visible changes, version should still refer to DPDK version rather
than ABI version. Even with a stable ABI, it makes more sense to me to find
the drivers in a 19.11 directory than a 20.0 one. Then again, the drivers
should be re-usable across the one ABI version, so perhaps this is the best
approach.

Thoughts from others? Luca or Kevin, any thoughts from a packagers
perspective?

/Bruce

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v3 0/9] Implement the new ABI policy and add helper scripts
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
@ 2019-10-17  8:50     ` Bruce Richardson
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
                       ` (10 subsequent siblings)
  11 siblings, 0 replies; 131+ messages in thread
From: Bruce Richardson @ 2019-10-17  8:50 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: dev, john.mcnamara, thomas, david.marchand

On Wed, Oct 16, 2019 at 06:03:35PM +0100, Anatoly Burakov wrote:
> This patchset prepares the codebase for the new ABI policy and
> adds a few helper scripts.
> 
> There are two new scripts for managing ABI versions added. The
> first one is a Python script that will read in a .map file,
> flatten it and update the ABI version to the ABI version
> specified on the command-line.
> 
> The second one is a shell script that will run the above mentioned
> Python script recursively over the source tree and set the ABI
> version to either that which is defined in config/ABI_VERSION, or
> a user-specified one.
> 
> Example of its usage: buildtools/update-abi.sh 20.0
> 
> This will recurse into lib/ and drivers/ directory and update
> whatever .map files it can find.
> 
> The other shell script that's added is one that can take in a .so
> file and ensure that its declared public ABI matches either
> current ABI, next ABI, or EXPERIMENTAL. This was moved to the
> last commit because it made no sense to have it beforehand.
> 
> The source tree was verified to follow the new ABI policy using
> the following command (assuming built binaries are in build/):
> 
> find ./build/lib ./build/drivers -name  \*.so \
> 	-exec ./buildtools/check-abi-version.sh {} \; -print
> 
> This returns 0.
> 
> Changes since v2:
> - Addressed Bruce's review comments
> - Removed single distributor mode as per Dave's suggestion
> 
> Changes since v1:
> - Reordered patchset to have removal of old ABI's before introducing
>   the new one to avoid compile breakages between patches
> - Added a new patch fixing missing symbol in octeontx common
> - Split script commits into multiple commits and reordered them
> - Re-generated the ABI bump commit
> - Verified all scripts to work
> 
> Anatoly Burakov (2):
>   buildtools: add ABI update shell script
>   drivers/octeontx: add missing public symbol
> 
> Marcin Baran (5):
>   config: change ABI versioning to global
>   timer: remove deprecated code
>   lpm: remove deprecated code
>   distributor: remove deprecated code
>   buildtools: add ABI versioning check script
> 
> Pawel Modrak (2):
>   buildtools: add script for updating symbols abi version
>   build: change ABI version to 20.0
> 

For me, bar the one small open question on driver paths, this looks pretty
good.

Series-acked-by: Bruce Richardson <bruce.richardson@intel.com>

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global
  2019-10-17  8:44     ` Bruce Richardson
@ 2019-10-17 10:25       ` Burakov, Anatoly
  2019-10-17 14:09       ` Luca Boccassi
  1 sibling, 0 replies; 131+ messages in thread
From: Burakov, Anatoly @ 2019-10-17 10:25 UTC (permalink / raw)
  To: Bruce Richardson
  Cc: dev, Marcin Baran, Thomas Monjalon, john.mcnamara,
	david.marchand, Pawel Modrak, bluca, ktraynor

On 17-Oct-19 9:44 AM, Bruce Richardson wrote:
> On Wed, Oct 16, 2019 at 06:03:36PM +0100, Anatoly Burakov wrote:
>> From: Marcin Baran <marcinx.baran@intel.com>
>>
>> As per new ABI policy, all of the libraries are now versioned using
>> one global ABI version. Changes in this patch implement the
>> necessary steps to enable that.
>>
>> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
>> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
>> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
>> ---
>>
>> Notes:
>>      v3:
>>      - Removed Windows support from Makefile changes
>>      - Removed unneeded path conversions from meson files
>>
>>   buildtools/meson.build |  2 ++
>>   config/ABI_VERSION     |  1 +
>>   config/meson.build     |  5 +++--
>>   drivers/meson.build    | 20 ++++++++++++--------
>>   lib/meson.build        | 18 +++++++++++-------
>>   meson_options.txt      |  2 --
>>   mk/rte.lib.mk          | 13 ++++---------
>>   7 files changed, 33 insertions(+), 28 deletions(-)
>>   create mode 100644 config/ABI_VERSION
>>
>> diff --git a/buildtools/meson.build b/buildtools/meson.build
>> index 32c79c1308..78ce69977d 100644
>> --- a/buildtools/meson.build
>> +++ b/buildtools/meson.build
>> @@ -12,3 +12,5 @@ if python3.found()
>>   else
>>   	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
>>   endif
>> +
>> +is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
>> diff --git a/config/ABI_VERSION b/config/ABI_VERSION
>> new file mode 100644
>> index 0000000000..9a7c1e503f
>> --- /dev/null
>> +++ b/config/ABI_VERSION
>> @@ -0,0 +1 @@
>> +20.0
>> diff --git a/config/meson.build b/config/meson.build
>> index a27f731f85..3cfc02406c 100644
>> --- a/config/meson.build
>> +++ b/config/meson.build
>> @@ -17,7 +17,8 @@ endforeach
>>   # set the major version, which might be used by drivers and libraries
>>   # depending on the configuration options
>>   pver = meson.project_version().split('.')
>> -major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
>> +abi_version = run_command(find_program('cat', 'more'),
>> +	files('ABI_VERSION')).stdout().strip()
>>   
>>   # extract all version information into the build configuration
>>   dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
>> @@ -37,7 +38,7 @@ endif
>>   
>>   pmd_subdir_opt = get_option('drivers_install_subdir')
>>   if pmd_subdir_opt.contains('<VERSION>')
>> -	pmd_subdir_opt = major_version.join(pmd_subdir_opt.split('<VERSION>'))
>> +	pmd_subdir_opt = abi_version.join(pmd_subdir_opt.split('<VERSION>'))
>>   endif
> 
> This is an interesting change, and I'm not sure about it. I think for
> user-visible changes, version should still refer to DPDK version rather
> than ABI version. Even with a stable ABI, it makes more sense to me to find
> the drivers in a 19.11 directory than a 20.0 one. Then again, the drivers
> should be re-usable across the one ABI version, so perhaps this is the best
> approach.
> 
> Thoughts from others? Luca or Kevin, any thoughts from a packagers
> perspective?
> 
> /Bruce

I can certainly change it back. This wasn't intentional - i just did a 
search-and-replace without thinking too much about it :)

-- 
Thanks,
Anatoly

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v3 6/9] distributor: remove deprecated code
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 6/9] distributor: " Anatoly Burakov
@ 2019-10-17 10:53     ` Hunt, David
  0 siblings, 0 replies; 131+ messages in thread
From: Hunt, David @ 2019-10-17 10:53 UTC (permalink / raw)
  To: Anatoly Burakov, dev
  Cc: Marcin Baran, john.mcnamara, bruce.richardson, thomas, david.marchand


On 16/10/2019 18:03, Anatoly Burakov wrote:
> From: Marcin Baran <marcinx.baran@intel.com>
>
> Remove code for old ABI versions ahead of ABI version bump.
>
> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> ---
>
> Notes:
>      v3:
>      - Removed single mode from distributor as per Dave's comments


Hi Anatoly,

Having looked at this code closer, I see that this now breaks the API 
for when a distributor instance is created with the RTE_DIST_ALG_SINGLE.

I think now that the better solution would be to just re-name the _v20 
to _single for structs, functions, etc, as you did in the previous patch 
version. That means that the unit and perf tests should still work 
unchanged, and maintain the API.

Rgds,
Dave.



^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global
  2019-10-17  8:44     ` Bruce Richardson
  2019-10-17 10:25       ` Burakov, Anatoly
@ 2019-10-17 14:09       ` Luca Boccassi
  2019-10-17 14:12         ` Bruce Richardson
  2019-10-18 10:07         ` Kevin Traynor
  1 sibling, 2 replies; 131+ messages in thread
From: Luca Boccassi @ 2019-10-17 14:09 UTC (permalink / raw)
  To: Bruce Richardson, Anatoly Burakov, Christian Ehrhardt
  Cc: dev, Marcin Baran, Thomas Monjalon, john.mcnamara,
	david.marchand, Pawel Modrak, ktraynor

On Thu, 2019-10-17 at 09:44 +0100, Bruce Richardson wrote:
> On Wed, Oct 16, 2019 at 06:03:36PM +0100, Anatoly Burakov wrote:
> > From: Marcin Baran <
> > marcinx.baran@intel.com
> > >
> > 
> > As per new ABI policy, all of the libraries are now versioned using
> > one global ABI version. Changes in this patch implement the
> > necessary steps to enable that.
> > 
> > Signed-off-by: Marcin Baran <
> > marcinx.baran@intel.com
> > >
> > Signed-off-by: Pawel Modrak <
> > pawelx.modrak@intel.com
> > >
> > Signed-off-by: Anatoly Burakov <
> > anatoly.burakov@intel.com
> > >
> > ---
> > 
> > Notes:
> >     v3:
> >     - Removed Windows support from Makefile changes
> >     - Removed unneeded path conversions from meson files
> > 
> >  buildtools/meson.build |  2 ++
> >  config/ABI_VERSION     |  1 +
> >  config/meson.build     |  5 +++--
> >  drivers/meson.build    | 20 ++++++++++++--------
> >  lib/meson.build        | 18 +++++++++++-------
> >  meson_options.txt      |  2 --
> >  mk/rte.lib.mk          | 13 ++++---------
> >  7 files changed, 33 insertions(+), 28 deletions(-)
> >  create mode 100644 config/ABI_VERSION
> > 
> > diff --git a/buildtools/meson.build b/buildtools/meson.build
> > index 32c79c1308..78ce69977d 100644
> > --- a/buildtools/meson.build
> > +++ b/buildtools/meson.build
> > @@ -12,3 +12,5 @@ if python3.found()
> >  else
> >  	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
> >  endif
> > +
> > +is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
> > diff --git a/config/ABI_VERSION b/config/ABI_VERSION
> > new file mode 100644
> > index 0000000000..9a7c1e503f
> > --- /dev/null
> > +++ b/config/ABI_VERSION
> > @@ -0,0 +1 @@
> > +20.0
> > diff --git a/config/meson.build b/config/meson.build
> > index a27f731f85..3cfc02406c 100644
> > --- a/config/meson.build
> > +++ b/config/meson.build
> > @@ -17,7 +17,8 @@ endforeach
> >  # set the major version, which might be used by drivers and
> > libraries
> >  # depending on the configuration options
> >  pver = meson.project_version().split('.')
> > -major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
> > +abi_version = run_command(find_program('cat', 'more'),
> > +	files('ABI_VERSION')).stdout().strip()
> >  
> >  # extract all version information into the build configuration
> >  dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
> > @@ -37,7 +38,7 @@ endif
> >  
> >  pmd_subdir_opt = get_option('drivers_install_subdir')
> >  if pmd_subdir_opt.contains('<VERSION>')
> > -	pmd_subdir_opt =
> > major_version.join(pmd_subdir_opt.split('<VERSION>'))
> > +	pmd_subdir_opt =
> > abi_version.join(pmd_subdir_opt.split('<VERSION>'))
> >  endif
> 
> This is an interesting change, and I'm not sure about it. I think for
> user-visible changes, version should still refer to DPDK version
> rather
> than ABI version. Even with a stable ABI, it makes more sense to me
> to find
> the drivers in a 19.11 directory than a 20.0 one. Then again, the
> drivers
> should be re-usable across the one ABI version, so perhaps this is
> the best
> approach.
> 
> Thoughts from others? Luca or Kevin, any thoughts from a packagers
> perspective?
> 
> /Bruce

Hi,

We are currently assembing this path using the ABI version in
Debian/Ubuntu, as we want same-ABI libraries not to be co-installed,
but instead fo use the exact same name/path. So from our POV this
change seems right.

-- 
Kind regards,
Luca Boccassi

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global
  2019-10-17 14:09       ` Luca Boccassi
@ 2019-10-17 14:12         ` Bruce Richardson
  2019-10-18 10:07         ` Kevin Traynor
  1 sibling, 0 replies; 131+ messages in thread
From: Bruce Richardson @ 2019-10-17 14:12 UTC (permalink / raw)
  To: Luca Boccassi
  Cc: Anatoly Burakov, Christian Ehrhardt, dev, Marcin Baran,
	Thomas Monjalon, john.mcnamara, david.marchand, Pawel Modrak,
	ktraynor

On Thu, Oct 17, 2019 at 03:09:00PM +0100, Luca Boccassi wrote:
> On Thu, 2019-10-17 at 09:44 +0100, Bruce Richardson wrote:
> > On Wed, Oct 16, 2019 at 06:03:36PM +0100, Anatoly Burakov wrote:
> > > From: Marcin Baran <
> > > marcinx.baran@intel.com
> > > >
> > > 
> > > As per new ABI policy, all of the libraries are now versioned using
> > > one global ABI version. Changes in this patch implement the
> > > necessary steps to enable that.
> > > 
> > > Signed-off-by: Marcin Baran <
> > > marcinx.baran@intel.com
> > > >
> > > Signed-off-by: Pawel Modrak <
> > > pawelx.modrak@intel.com
> > > >
> > > Signed-off-by: Anatoly Burakov <
> > > anatoly.burakov@intel.com
> > > >
> > > ---
> > > 
> > > Notes:
> > >     v3:
> > >     - Removed Windows support from Makefile changes
> > >     - Removed unneeded path conversions from meson files
> > > 
> > >  buildtools/meson.build |  2 ++
> > >  config/ABI_VERSION     |  1 +
> > >  config/meson.build     |  5 +++--
> > >  drivers/meson.build    | 20 ++++++++++++--------
> > >  lib/meson.build        | 18 +++++++++++-------
> > >  meson_options.txt      |  2 --
> > >  mk/rte.lib.mk          | 13 ++++---------
> > >  7 files changed, 33 insertions(+), 28 deletions(-)
> > >  create mode 100644 config/ABI_VERSION
> > > 
> > > diff --git a/buildtools/meson.build b/buildtools/meson.build
> > > index 32c79c1308..78ce69977d 100644
> > > --- a/buildtools/meson.build
> > > +++ b/buildtools/meson.build
> > > @@ -12,3 +12,5 @@ if python3.found()
> > >  else
> > >  	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
> > >  endif
> > > +
> > > +is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
> > > diff --git a/config/ABI_VERSION b/config/ABI_VERSION
> > > new file mode 100644
> > > index 0000000000..9a7c1e503f
> > > --- /dev/null
> > > +++ b/config/ABI_VERSION
> > > @@ -0,0 +1 @@
> > > +20.0
> > > diff --git a/config/meson.build b/config/meson.build
> > > index a27f731f85..3cfc02406c 100644
> > > --- a/config/meson.build
> > > +++ b/config/meson.build
> > > @@ -17,7 +17,8 @@ endforeach
> > >  # set the major version, which might be used by drivers and
> > > libraries
> > >  # depending on the configuration options
> > >  pver = meson.project_version().split('.')
> > > -major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
> > > +abi_version = run_command(find_program('cat', 'more'),
> > > +	files('ABI_VERSION')).stdout().strip()
> > >  
> > >  # extract all version information into the build configuration
> > >  dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
> > > @@ -37,7 +38,7 @@ endif
> > >  
> > >  pmd_subdir_opt = get_option('drivers_install_subdir')
> > >  if pmd_subdir_opt.contains('<VERSION>')
> > > -	pmd_subdir_opt =
> > > major_version.join(pmd_subdir_opt.split('<VERSION>'))
> > > +	pmd_subdir_opt =
> > > abi_version.join(pmd_subdir_opt.split('<VERSION>'))
> > >  endif
> > 
> > This is an interesting change, and I'm not sure about it. I think for
> > user-visible changes, version should still refer to DPDK version
> > rather
> > than ABI version. Even with a stable ABI, it makes more sense to me
> > to find
> > the drivers in a 19.11 directory than a 20.0 one. Then again, the
> > drivers
> > should be re-usable across the one ABI version, so perhaps this is
> > the best
> > approach.
> > 
> > Thoughts from others? Luca or Kevin, any thoughts from a packagers
> > perspective?
> > 
> > /Bruce
> 
> Hi,
> 
> We are currently assembing this path using the ABI version in
> Debian/Ubuntu, as we want same-ABI libraries not to be co-installed,
> but instead fo use the exact same name/path. So from our POV this
> change seems right.
> 
Thanks for confirming, Luca.

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v4 00/10] Implement the new ABI policy and add helper scripts
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
  2019-10-17  8:50     ` Bruce Richardson
@ 2019-10-17 14:31     ` Anatoly Burakov
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
                         ` (10 more replies)
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 01/10] config: change ABI versioning to global Anatoly Burakov
                       ` (9 subsequent siblings)
  11 siblings, 11 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-17 14:31 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, bruce.richardson, thomas, david.marchand

This patchset prepares the codebase for the new ABI policy and
adds a few helper scripts.

There are two new scripts for managing ABI versions added. The
first one is a Python script that will read in a .map file,
flatten it and update the ABI version to the ABI version
specified on the command-line.

The second one is a shell script that will run the above mentioned
Python script recursively over the source tree and set the ABI
version to either that which is defined in config/ABI_VERSION, or
a user-specified one.

Example of its usage: buildtools/update-abi.sh 20.0

This will recurse into lib/ and drivers/ directory and update
whatever .map files it can find.

The other shell script that's added is one that can take in a .so
file and ensure that its declared public ABI matches either
current ABI, next ABI, or EXPERIMENTAL. This was moved to the
last commit because it made no sense to have it beforehand.

The source tree was verified to follow the new ABI policy using
the following command (assuming built binaries are in build/):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

This returns 0.

Changes since v3:
- Put distributor code back and cleaned it up
- Rebased on latest master and regenerated commit 9

Changes since v2:
- Addressed Bruce's review comments
- Removed single distributor mode as per Dave's suggestion

Changes since v1:
- Reordered patchset to have removal of old ABI's before introducing
  the new one to avoid compile breakages between patches
- Added a new patch fixing missing symbol in octeontx common
- Split script commits into multiple commits and reordered them
- Re-generated the ABI bump commit
- Verified all scripts to work

Anatoly Burakov (2):
  buildtools: add ABI update shell script
  drivers/octeontx: add missing public symbol

Marcin Baran (6):
  config: change ABI versioning to global
  timer: remove deprecated code
  lpm: remove deprecated code
  distributor: remove deprecated code
  distributor: rename v2.0 ABI to _single suffix
  buildtools: add ABI versioning check script

Pawel Modrak (2):
  buildtools: add script for updating symbols abi version
  build: change ABI version to 20.0

 buildtools/check-abi-version.sh               |  54 +
 buildtools/meson.build                        |   2 +
 buildtools/update-abi.sh                      |  42 +
 buildtools/update_version_map_abi.py          | 170 +++
 config/ABI_VERSION                            |   1 +
 config/meson.build                            |   4 +-
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |   8 +-
 .../null/rte_pmd_bbdev_null_version.map       |   2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |   2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     | 115 +-
 drivers/bus/fslmc/rte_bus_fslmc_version.map   | 154 ++-
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |  14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |   2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |  12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |  12 +-
 drivers/common/cpt/rte_common_cpt_version.map |   4 +-
 .../common/dpaax/rte_common_dpaax_version.map |   4 +-
 .../common/mvep/rte_common_mvep_version.map   |   6 +-
 .../octeontx/rte_common_octeontx_version.map  |   7 +-
 .../rte_common_octeontx2_version.map          |  16 +-
 .../compress/isal/rte_pmd_isal_version.map    |   2 +-
 .../rte_pmd_octeontx_compress_version.map     |   2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |   2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |   2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |   2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |   2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |   2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |   3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |   3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |  10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |  10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |   2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |   2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |   2 +-
 .../null/rte_pmd_null_crypto_version.map      |   2 +-
 .../rte_pmd_octeontx_crypto_version.map       |   3 +-
 .../openssl/rte_pmd_openssl_version.map       |   2 +-
 .../rte_pmd_crypto_scheduler_version.map      |  19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |   2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |   2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |   2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |   3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |   2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |   2 +-
 .../rte_pmd_octeontx_event_version.map        |   2 +-
 .../rte_pmd_octeontx2_event_version.map       |   3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |   2 +-
 .../rte_pmd_skeleton_event_version.map        |   3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |   2 +-
 .../bucket/rte_mempool_bucket_version.map     |   3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |   2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |  12 +-
 .../octeontx/rte_mempool_octeontx_version.map |   2 +-
 .../rte_mempool_octeontx2_version.map         |   4 +-
 .../mempool/ring/rte_mempool_ring_version.map |   3 +-
 .../stack/rte_mempool_stack_version.map       |   3 +-
 drivers/meson.build                           |  20 +-
 .../af_packet/rte_pmd_af_packet_version.map   |   3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |   2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |   5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |   4 +-
 drivers/net/avp/rte_pmd_avp_version.map       |   2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |   2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |   3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |   4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |  47 +-
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |   3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |  11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |  12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |   3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |   3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |   3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |   3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |   3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |   3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |   3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |   4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |  65 +-
 drivers/net/iavf/rte_pmd_iavf_version.map     |   3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |   3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |   3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |   3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |  62 +-
 drivers/net/kni/rte_pmd_kni_version.map       |   3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |   3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |   5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |   3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |   2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |   2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |   2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |   4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |   3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |   2 +-
 drivers/net/null/rte_pmd_null_version.map     |   3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |  10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |   3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |   3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |   3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |  10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |   3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |   2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |   2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |   3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |   3 +-
 .../rte_pmd_vdev_netvsc_version.map           |   3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |  11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |   3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |   3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |   3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |   4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |   3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |   3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |   5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |   3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |   3 +-
 lib/librte_acl/rte_acl_version.map            |   2 +-
 lib/librte_bbdev/rte_bbdev_version.map        |   4 +
 .../rte_bitratestats_version.map              |   2 +-
 lib/librte_bpf/rte_bpf_version.map            |   4 +
 lib/librte_cfgfile/rte_cfgfile_version.map    |  34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |  10 +-
 .../rte_compressdev_version.map               |   4 +
 .../rte_cryptodev_version.map                 | 102 +-
 lib/librte_distributor/Makefile               |   2 +-
 lib/librte_distributor/meson.build            |   2 +-
 lib/librte_distributor/rte_distributor.c      |  80 +-
 .../rte_distributor_private.h                 |  10 +-
 ...ributor_v20.c => rte_distributor_single.c} |  57 +-
 ...ributor_v20.h => rte_distributor_single.h} |  26 +-
 .../rte_distributor_v1705.h                   |  61 --
 .../rte_distributor_version.map               |  16 +-
 lib/librte_eal/rte_eal_version.map            | 310 ++----
 lib/librte_efd/rte_efd_version.map            |   2 +-
 lib/librte_ethdev/rte_ethdev_version.map      | 160 +--
 lib/librte_eventdev/rte_eventdev_version.map  | 130 +--
 .../rte_flow_classify_version.map             |   4 +
 lib/librte_gro/rte_gro_version.map            |   2 +-
 lib/librte_gso/rte_gso_version.map            |   2 +-
 lib/librte_hash/rte_hash_version.map          |  43 +-
 lib/librte_ip_frag/rte_ip_frag_version.map    |  10 +-
 lib/librte_ipsec/rte_ipsec_version.map        |   4 +
 lib/librte_jobstats/rte_jobstats_version.map  |  10 +-
 lib/librte_kni/rte_kni_version.map            |   2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |   4 +-
 .../rte_latencystats_version.map              |   2 +-
 lib/librte_lpm/rte_lpm.c                      | 996 +-----------------
 lib/librte_lpm/rte_lpm.h                      |  88 --
 lib/librte_lpm/rte_lpm6.c                     | 132 +--
 lib/librte_lpm/rte_lpm6.h                     |  25 -
 lib/librte_lpm/rte_lpm_version.map            |  39 +-
 lib/librte_mbuf/rte_mbuf_version.map          |  49 +-
 lib/librte_member/rte_member_version.map      |   2 +-
 lib/librte_mempool/rte_mempool_version.map    |  44 +-
 lib/librte_meter/rte_meter_version.map        |  13 +-
 lib/librte_metrics/rte_metrics_version.map    |   2 +-
 lib/librte_net/rte_net_version.map            |  23 +-
 lib/librte_pci/rte_pci_version.map            |   2 +-
 lib/librte_pdump/rte_pdump_version.map        |   2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |  36 +-
 lib/librte_port/rte_port_version.map          |  64 +-
 lib/librte_power/rte_power_version.map        |  24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |   4 +-
 lib/librte_rcu/rte_rcu_version.map            |   4 +
 lib/librte_reorder/rte_reorder_version.map    |   8 +-
 lib/librte_ring/rte_ring_version.map          |  10 +-
 lib/librte_sched/rte_sched_version.map        |  14 +-
 lib/librte_security/rte_security_version.map  |   2 +-
 lib/librte_stack/rte_stack_version.map        |   4 +
 lib/librte_table/rte_table_version.map        |   2 +-
 .../rte_telemetry_version.map                 |   4 +
 lib/librte_timer/rte_timer.c                  |  90 +-
 lib/librte_timer/rte_timer.h                  |  15 -
 lib/librte_timer/rte_timer_version.map        |  12 +-
 lib/librte_vhost/rte_vhost_version.map        |  52 +-
 lib/meson.build                               |  18 +-
 meson_options.txt                             |   2 -
 mk/rte.lib.mk                                 |  13 +-
 177 files changed, 1141 insertions(+), 2912 deletions(-)
 create mode 100755 buildtools/check-abi-version.sh
 create mode 100755 buildtools/update-abi.sh
 create mode 100755 buildtools/update_version_map_abi.py
 create mode 100644 config/ABI_VERSION
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (84%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h

-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v4 01/10] config: change ABI versioning to global
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
  2019-10-17  8:50     ` Bruce Richardson
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
@ 2019-10-17 14:31     ` Anatoly Burakov
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
                       ` (8 subsequent siblings)
  11 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-17 14:31 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Thomas Monjalon, Bruce Richardson, john.mcnamara,
	david.marchand, Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

As per new ABI policy, all of the libraries are now versioned using
one global ABI version. Changes in this patch implement the
necessary steps to enable that.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v3:
    - Removed Windows support from Makefile changes
    - Removed unneeded path conversions from meson files

 buildtools/meson.build |  2 ++
 config/ABI_VERSION     |  1 +
 config/meson.build     |  4 +++-
 drivers/meson.build    | 20 ++++++++++++--------
 lib/meson.build        | 18 +++++++++++-------
 meson_options.txt      |  2 --
 mk/rte.lib.mk          | 13 ++++---------
 7 files changed, 33 insertions(+), 27 deletions(-)
 create mode 100644 config/ABI_VERSION

diff --git a/buildtools/meson.build b/buildtools/meson.build
index 32c79c1308..78ce69977d 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -12,3 +12,5 @@ if python3.found()
 else
 	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
 endif
+
+is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
diff --git a/config/ABI_VERSION b/config/ABI_VERSION
new file mode 100644
index 0000000000..9a7c1e503f
--- /dev/null
+++ b/config/ABI_VERSION
@@ -0,0 +1 @@
+20.0
diff --git a/config/meson.build b/config/meson.build
index a27f731f85..374735590c 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -18,6 +18,8 @@ endforeach
 # depending on the configuration options
 pver = meson.project_version().split('.')
 major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
+abi_version = run_command(find_program('cat', 'more'),
+	files('ABI_VERSION')).stdout().strip()
 
 # extract all version information into the build configuration
 dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
@@ -37,7 +39,7 @@ endif
 
 pmd_subdir_opt = get_option('drivers_install_subdir')
 if pmd_subdir_opt.contains('<VERSION>')
-	pmd_subdir_opt = major_version.join(pmd_subdir_opt.split('<VERSION>'))
+	pmd_subdir_opt = abi_version.join(pmd_subdir_opt.split('<VERSION>'))
 endif
 driver_install_path = join_paths(get_option('libdir'), pmd_subdir_opt)
 eal_pmd_path = join_paths(get_option('prefix'), driver_install_path)
diff --git a/drivers/meson.build b/drivers/meson.build
index 2ed2e95411..fd628d9587 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -110,12 +110,19 @@ foreach class:dpdk_driver_classes
 					output: out_filename,
 					depends: [pmdinfogen, tmp_lib])
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/@2@_version.map'.format(
+					meson.current_source_dir(),
+					drv_path, lib_name)
+
+			is_experimental = run_command(is_experimental_cmd,
+				files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
-				lib_version = major_version
-				so_version = major_version
+				lib_version = abi_version
+				so_version = abi_version
 			endif
 
 			# now build the static driver
@@ -128,9 +135,6 @@ foreach class:dpdk_driver_classes
 				install: true)
 
 			# now build the shared driver
-			version_map = '@0@/@1@/@2@_version.map'.format(
-					meson.current_source_dir(),
-					drv_path, lib_name)
 			shared_lib = shared_library(lib_name,
 				sources,
 				objects: objs,
diff --git a/lib/meson.build b/lib/meson.build
index e5ff838934..e626da778c 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -97,12 +97,18 @@ foreach l:libraries
 				cflags += '-DALLOW_EXPERIMENTAL_API'
 			endif
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/rte_@2@_version.map'.format(
+					meson.current_source_dir(), dir_name, name)
+
+			is_experimental = run_command(is_experimental_cmd,
+					files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
-				lib_version = major_version
-				so_version = major_version
+				lib_version = abi_version
+				so_version = abi_version
 			endif
 
 			# first build static lib
@@ -120,8 +126,6 @@ foreach l:libraries
 			# then use pre-build objects to build shared lib
 			sources = []
 			objs += static_lib.extract_all_objects(recursive: false)
-			version_map = '@0@/@1@/rte_@2@_version.map'.format(
-					meson.current_source_dir(), dir_name, name)
 			implib = dir_name + '.dll.a'
 
 			def_file = custom_target(name + '_def',
diff --git a/meson_options.txt b/meson_options.txt
index 448f3e63dc..000e38fd98 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -28,8 +28,6 @@ option('max_lcores', type: 'integer', value: 128,
 	description: 'maximum number of cores/threads supported by EAL')
 option('max_numa_nodes', type: 'integer', value: 4,
 	description: 'maximum number of NUMA nodes supported by EAL')
-option('per_library_versions', type: 'boolean', value: true,
-	description: 'true: each lib gets its own version number, false: DPDK version used for each lib')
 option('tests', type: 'boolean', value: true,
 	description: 'build unit tests')
 option('use_hpet', type: 'boolean', value: false,
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index 4df8849a08..e1ea292b6e 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -11,20 +11,15 @@ EXTLIB_BUILD ?= n
 # VPATH contains at least SRCDIR
 VPATH += $(SRCDIR)
 
-ifneq ($(CONFIG_RTE_MAJOR_ABI),)
-ifneq ($(LIBABIVER),)
-LIBABIVER := $(CONFIG_RTE_MAJOR_ABI)
-endif
+ifneq ($(shell grep "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)
+LIBABIVER := $(shell cat $(RTE_SRCDIR)/config/ABI_VERSION)
+else
+LIBABIVER := 0
 endif
 
 ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
 LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))
 ifeq ($(EXTLIB_BUILD),n)
-ifeq ($(CONFIG_RTE_MAJOR_ABI),)
-ifeq ($(CONFIG_RTE_NEXT_ABI),y)
-LIB := $(LIB).1
-endif
-endif
 CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
 endif
 endif
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v4 02/10] buildtools: add script for updating symbols abi version
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
                       ` (2 preceding siblings ...)
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 01/10] config: change ABI versioning to global Anatoly Burakov
@ 2019-10-17 14:31     ` Anatoly Burakov
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 03/10] buildtools: add ABI update shell script Anatoly Burakov
                       ` (7 subsequent siblings)
  11 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-17 14:31 UTC (permalink / raw)
  To: dev; +Cc: Pawel Modrak, john.mcnamara, bruce.richardson, thomas, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Add a script that automatically merges all stable ABI's under one
ABI section with the new version, while leaving experimental
section exactly as it is.

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v3:
    - Add comments to regex patterns
    
    v2:
    - Reworked script to be pep8-compliant and more reliable

 buildtools/update_version_map_abi.py | 170 +++++++++++++++++++++++++++
 1 file changed, 170 insertions(+)
 create mode 100755 buildtools/update_version_map_abi.py

diff --git a/buildtools/update_version_map_abi.py b/buildtools/update_version_map_abi.py
new file mode 100755
index 0000000000..50283e6a3d
--- /dev/null
+++ b/buildtools/update_version_map_abi.py
@@ -0,0 +1,170 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+"""
+A Python program to update the ABI version and function names in a DPDK
+lib_*_version.map file. Called from the buildtools/update_abi.sh utility.
+"""
+
+from __future__ import print_function
+import argparse
+import sys
+import re
+
+
+def __parse_map_file(f_in):
+    # match function name, followed by semicolon, followed by EOL, optionally
+    # with whitespace inbetween each item
+    func_line_regex = re.compile(r"\s*"
+                                 r"(?P<func>[a-zA-Z_0-9]+)"
+                                 r"\s*"
+                                 r";"
+                                 r"\s*"
+                                 r"$")
+    # match section name, followed by opening bracked, followed by EOL,
+    # optionally with whitespace inbetween each item
+    section_begin_regex = re.compile(r"\s*"
+                                     r"(?P<version>[a-zA-Z0-9_\.]+)"
+                                     r"\s*"
+                                     r"{"
+                                     r"\s*"
+                                     r"$")
+    # match closing bracket, optionally followed by section name (for when we
+    # inherit from another ABI version), followed by semicolon, followed by
+    # EOL, optionally with whitespace inbetween each item
+    section_end_regex = re.compile(r"\s*"
+                                   r"}"
+                                   r"\s*"
+                                   r"(?P<parent>[a-zA-Z0-9_\.]+)?"
+                                   r"\s*"
+                                   r";"
+                                   r"\s*"
+                                   r"$")
+
+    # for stable ABI, we don't care about which version introduced which
+    # function, we just flatten the list. there are dupes in certain files, so
+    # use a set instead of a list
+    stable_lines = set()
+    # copy experimental section as is
+    experimental_lines = []
+    is_experimental = False
+
+    # gather all functions
+    for line in f_in:
+        # clean up the line
+        line = line.strip('\n').strip()
+
+        # is this an end of section?
+        match = section_end_regex.match(line)
+        if match:
+            # whatever section this was, it's not active any more
+            is_experimental = False
+            continue
+
+        # if we're in the middle of experimental section, we need to copy
+        # the section verbatim, so just add the line
+        if is_experimental:
+            experimental_lines += [line]
+            continue
+
+        # skip empty lines
+        if not line:
+            continue
+
+        # is this a beginning of a new section?
+        match = section_begin_regex.match(line)
+        if match:
+            cur_section = match.group("version")
+            # is it experimental?
+            is_experimental = cur_section == "EXPERIMENTAL"
+            continue
+
+        # is this a function?
+        match = func_line_regex.match(line)
+        if match:
+            stable_lines.add(match.group("func"))
+
+    return stable_lines, experimental_lines
+
+
+def __regenerate_map_file(f_out, abi_version, stable_lines,
+                          experimental_lines):
+    # print ABI version header
+    print("DPDK_{} {{".format(abi_version), file=f_out)
+
+    if stable_lines:
+        # print global section
+        print("\tglobal:", file=f_out)
+        # blank line
+        print(file=f_out)
+
+        # print all stable lines, alphabetically sorted
+        for line in sorted(stable_lines):
+            print("\t{};".format(line), file=f_out)
+
+        # another blank line
+        print(file=f_out)
+
+    # print local section
+    print("\tlocal: *;", file=f_out)
+
+    # end stable version
+    print("};", file=f_out)
+
+    # do we have experimental lines?
+    if not experimental_lines:
+        return
+
+    # another blank line
+    print(file=f_out)
+
+    # start experimental section
+    print("EXPERIMENTAL {", file=f_out)
+
+    # print all experimental lines as they were
+    for line in experimental_lines:
+        # don't print empty whitespace
+        if not line:
+            print("", file=f_out)
+        else:
+            print("\t{}".format(line), file=f_out)
+
+    # end section
+    print("};", file=f_out)
+
+
+def __main():
+    arg_parser = argparse.ArgumentParser(
+        description='Merge versions in linker version script.')
+
+    arg_parser.add_argument("map_file", type=str,
+                            help='path to linker version script file '
+                                 '(pattern: *version.map)')
+    arg_parser.add_argument("abi_version", type=str,
+                            help='target ABI version (pattern: MAJOR.MINOR)')
+
+    parsed = arg_parser.parse_args()
+
+    if not parsed.map_file.endswith('version.map'):
+        print("Invalid input file: {}".format(parsed.map_file),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    if not re.match(r"\d{1,2}\.\d{1,2}", parsed.abi_version):
+        print("Invalid ABI version: {}".format(parsed.abi_version),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    with open(parsed.map_file) as f_in:
+        stable_lines, experimental_lines = __parse_map_file(f_in)
+
+    with open(parsed.map_file, 'w') as f_out:
+        __regenerate_map_file(f_out, parsed.abi_version, stable_lines,
+                              experimental_lines)
+
+
+if __name__ == "__main__":
+    __main()
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v4 03/10] buildtools: add ABI update shell script
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
                       ` (3 preceding siblings ...)
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
@ 2019-10-17 14:31     ` Anatoly Burakov
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 04/10] timer: remove deprecated code Anatoly Burakov
                       ` (6 subsequent siblings)
  11 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-17 14:31 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, bruce.richardson, thomas, david.marchand

In order to facilitate mass updating of version files, add a shell
script that recurses into lib/ and drivers/ directories and calls
the ABI version update script.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v3:
    - Switch to sh rather than bash, and remove bash-isms
    - Address review comments
    
    v2:
    - Add this patch to split the shell script from previous commit
    - Fixup miscellaneous bugs

 buildtools/update-abi.sh | 42 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100755 buildtools/update-abi.sh

diff --git a/buildtools/update-abi.sh b/buildtools/update-abi.sh
new file mode 100755
index 0000000000..89ba5804a6
--- /dev/null
+++ b/buildtools/update-abi.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+abi_version=$1
+abi_version_file="./config/ABI_VERSION"
+update_path="lib drivers"
+
+if [ -z "$1" ]; then
+      # output to stderr
+      >&2 echo "Please provide ABI version"
+      exit 1
+fi
+
+# check version string format
+echo $abi_version | grep -q -e "^[[:digit:]]\{1,2\}\.[[:digit:]]\{1,2\}$"
+if [ "$?" -ne 0 ]; then
+      # output to stderr
+      >&2 echo "ABI version must be formatted as MAJOR.MINOR version"
+      exit 1
+fi
+
+if [ -n "$2" ]; then
+      abi_version_file=$2
+fi
+
+if [ -n "$3" ]; then
+      # drop $1 and $2
+      shift 2
+      # assign all other arguments as update paths
+      update_path=$@
+fi
+
+echo "New ABI version:" $abi_version
+echo "ABI_VERSION path:" $abi_version_file
+echo "Path to update:" $update_path
+
+echo $abi_version > $abi_version_file
+
+find $update_path -name  \*version.map -exec \
+      ./buildtools/update_version_map_abi.py {} \
+      $abi_version \; -print
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v4 04/10] timer: remove deprecated code
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
                       ` (4 preceding siblings ...)
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 03/10] buildtools: add ABI update shell script Anatoly Burakov
@ 2019-10-17 14:31     ` Anatoly Burakov
  2019-10-17 21:04       ` Carrillo, Erik G
  2019-10-21 13:24       ` Kevin Traynor
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 05/10] lpm: " Anatoly Burakov
                       ` (5 subsequent siblings)
  11 siblings, 2 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-17 14:31 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, bruce.richardson, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_timer/rte_timer.c | 90 ++----------------------------------
 lib/librte_timer/rte_timer.h | 15 ------
 2 files changed, 5 insertions(+), 100 deletions(-)

diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c
index bdcf05d06b..de6959b809 100644
--- a/lib/librte_timer/rte_timer.c
+++ b/lib/librte_timer/rte_timer.c
@@ -68,9 +68,6 @@ static struct rte_timer_data *rte_timer_data_arr;
 static const uint32_t default_data_id;
 static uint32_t rte_timer_subsystem_initialized;
 
-/* For maintaining older interfaces for a period */
-static struct rte_timer_data default_timer_data;
-
 /* when debug is enabled, store some statistics */
 #ifdef RTE_LIBRTE_TIMER_DEBUG
 #define __TIMER_STAT_ADD(priv_timer, name, n) do {			\
@@ -131,22 +128,6 @@ rte_timer_data_dealloc(uint32_t id)
 	return 0;
 }
 
-void
-rte_timer_subsystem_init_v20(void)
-{
-	unsigned lcore_id;
-	struct priv_timer *priv_timer = default_timer_data.priv_timer;
-
-	/* since priv_timer is static, it's zeroed by default, so only init some
-	 * fields.
-	 */
-	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id ++) {
-		rte_spinlock_init(&priv_timer[lcore_id].list_lock);
-		priv_timer[lcore_id].prev_lcore = lcore_id;
-	}
-}
-VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
-
 /* Init the timer library. Allocate an array of timer data structs in shared
  * memory, and allocate the zeroth entry for use with original timer
  * APIs. Since the intersection of the sets of lcore ids in primary and
@@ -154,7 +135,7 @@ VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
  * multiple processes.
  */
 int
-rte_timer_subsystem_init_v1905(void)
+rte_timer_subsystem_init(void)
 {
 	const struct rte_memzone *mz;
 	struct rte_timer_data *data;
@@ -209,9 +190,6 @@ rte_timer_subsystem_init_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_subsystem_init(void),
-		  rte_timer_subsystem_init_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_subsystem_init, _v1905, 19.05);
 
 void
 rte_timer_subsystem_finalize(void)
@@ -552,42 +530,13 @@ __rte_timer_reset(struct rte_timer *tim, uint64_t expire,
 
 /* Reset and start the timer associated with the timer handle tim */
 int
-rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-		    enum rte_timer_type type, unsigned int tim_lcore,
-		    rte_timer_cb_t fct, void *arg)
-{
-	uint64_t cur_time = rte_get_timer_cycles();
-	uint64_t period;
-
-	if (unlikely((tim_lcore != (unsigned)LCORE_ID_ANY) &&
-			!(rte_lcore_is_enabled(tim_lcore) ||
-			  rte_lcore_has_role(tim_lcore, ROLE_SERVICE))))
-		return -1;
-
-	if (type == PERIODICAL)
-		period = ticks;
-	else
-		period = 0;
-
-	return __rte_timer_reset(tim,  cur_time + ticks, period, tim_lcore,
-			  fct, arg, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_reset, _v20, 2.0);
-
-int
-rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
+rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		      enum rte_timer_type type, unsigned int tim_lcore,
 		      rte_timer_cb_t fct, void *arg)
 {
 	return rte_timer_alt_reset(default_data_id, tim, ticks, type,
 				   tim_lcore, fct, arg);
 }
-MAP_STATIC_SYMBOL(int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
-				      enum rte_timer_type type,
-				      unsigned int tim_lcore,
-				      rte_timer_cb_t fct, void *arg),
-		  rte_timer_reset_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_reset, _v1905, 19.05);
 
 int
 rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim,
@@ -658,20 +607,10 @@ __rte_timer_stop(struct rte_timer *tim, int local_is_locked,
 
 /* Stop the timer associated with the timer handle tim */
 int
-rte_timer_stop_v20(struct rte_timer *tim)
-{
-	return __rte_timer_stop(tim, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_stop, _v20, 2.0);
-
-int
-rte_timer_stop_v1905(struct rte_timer *tim)
+rte_timer_stop(struct rte_timer *tim)
 {
 	return rte_timer_alt_stop(default_data_id, tim);
 }
-MAP_STATIC_SYMBOL(int rte_timer_stop(struct rte_timer *tim),
-		  rte_timer_stop_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_stop, _v1905, 19.05);
 
 int
 rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim)
@@ -817,15 +756,8 @@ __rte_timer_manage(struct rte_timer_data *timer_data)
 	priv_timer[lcore_id].running_tim = NULL;
 }
 
-void
-rte_timer_manage_v20(void)
-{
-	__rte_timer_manage(&default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_manage, _v20, 2.0);
-
 int
-rte_timer_manage_v1905(void)
+rte_timer_manage(void)
 {
 	struct rte_timer_data *timer_data;
 
@@ -835,8 +767,6 @@ rte_timer_manage_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_manage(void), rte_timer_manage_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_manage, _v1905, 19.05);
 
 int
 rte_timer_alt_manage(uint32_t timer_data_id,
@@ -1074,21 +1004,11 @@ __rte_timer_dump_stats(struct rte_timer_data *timer_data __rte_unused, FILE *f)
 #endif
 }
 
-void
-rte_timer_dump_stats_v20(FILE *f)
-{
-	__rte_timer_dump_stats(&default_timer_data, f);
-}
-VERSION_SYMBOL(rte_timer_dump_stats, _v20, 2.0);
-
 int
-rte_timer_dump_stats_v1905(FILE *f)
+rte_timer_dump_stats(FILE *f)
 {
 	return rte_timer_alt_dump_stats(default_data_id, f);
 }
-MAP_STATIC_SYMBOL(int rte_timer_dump_stats(FILE *f),
-		  rte_timer_dump_stats_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_dump_stats, _v1905, 19.05);
 
 int
 rte_timer_alt_dump_stats(uint32_t timer_data_id __rte_unused, FILE *f)
diff --git a/lib/librte_timer/rte_timer.h b/lib/librte_timer/rte_timer.h
index 05d287d8f2..9dc5fc3092 100644
--- a/lib/librte_timer/rte_timer.h
+++ b/lib/librte_timer/rte_timer.h
@@ -181,8 +181,6 @@ int rte_timer_data_dealloc(uint32_t id);
  *      subsystem
  */
 int rte_timer_subsystem_init(void);
-int rte_timer_subsystem_init_v1905(void);
-void rte_timer_subsystem_init_v20(void);
 
 /**
  * @warning
@@ -250,13 +248,6 @@ void rte_timer_init(struct rte_timer *tim);
 int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		    enum rte_timer_type type, unsigned tim_lcore,
 		    rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
-			  enum rte_timer_type type, unsigned int tim_lcore,
-			  rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-			enum rte_timer_type type, unsigned int tim_lcore,
-			rte_timer_cb_t fct, void *arg);
-
 
 /**
  * Loop until rte_timer_reset() succeeds.
@@ -313,8 +304,6 @@ rte_timer_reset_sync(struct rte_timer *tim, uint64_t ticks,
  *   - (-1): The timer is in the RUNNING or CONFIG state.
  */
 int rte_timer_stop(struct rte_timer *tim);
-int rte_timer_stop_v1905(struct rte_timer *tim);
-int rte_timer_stop_v20(struct rte_timer *tim);
 
 /**
  * Loop until rte_timer_stop() succeeds.
@@ -358,8 +347,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_manage(void);
-int rte_timer_manage_v1905(void);
-void rte_timer_manage_v20(void);
 
 /**
  * Dump statistics about timers.
@@ -371,8 +358,6 @@ void rte_timer_manage_v20(void);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_dump_stats(FILE *f);
-int rte_timer_dump_stats_v1905(FILE *f);
-void rte_timer_dump_stats_v20(FILE *f);
 
 /**
  * @warning
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v4 05/10] lpm: remove deprecated code
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
                       ` (5 preceding siblings ...)
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 04/10] timer: remove deprecated code Anatoly Burakov
@ 2019-10-17 14:31     ` Anatoly Burakov
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 06/10] distributor: " Anatoly Burakov
                       ` (4 subsequent siblings)
  11 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-17 14:31 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Bruce Richardson, Vladimir Medvedkin,
	john.mcnamara, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_lpm/rte_lpm.c  | 996 ++------------------------------------
 lib/librte_lpm/rte_lpm.h  |  88 ----
 lib/librte_lpm/rte_lpm6.c | 132 +----
 lib/librte_lpm/rte_lpm6.h |  25 -
 4 files changed, 48 insertions(+), 1193 deletions(-)

diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c
index 3a929a1b16..2687564194 100644
--- a/lib/librte_lpm/rte_lpm.c
+++ b/lib/librte_lpm/rte_lpm.c
@@ -89,34 +89,8 @@ depth_to_range(uint8_t depth)
 /*
  * Find an existing lpm table and return a pointer to it.
  */
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name)
-{
-	struct rte_lpm_v20 *l = NULL;
-	struct rte_tailq_entry *te;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_read_lock();
-	TAILQ_FOREACH(te, lpm_list, next) {
-		l = te->data;
-		if (strncmp(name, l->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-	rte_mcfg_tailq_read_unlock();
-
-	if (te == NULL) {
-		rte_errno = ENOENT;
-		return NULL;
-	}
-
-	return l;
-}
-VERSION_SYMBOL(rte_lpm_find_existing, _v20, 2.0);
-
 struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name)
+rte_lpm_find_existing(const char *name)
 {
 	struct rte_lpm *l = NULL;
 	struct rte_tailq_entry *te;
@@ -139,88 +113,12 @@ rte_lpm_find_existing_v1604(const char *name)
 
 	return l;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_find_existing, _v1604, 16.04);
-MAP_STATIC_SYMBOL(struct rte_lpm *rte_lpm_find_existing(const char *name),
-		rte_lpm_find_existing_v1604);
 
 /*
  * Allocates memory for LPM object
  */
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules,
-		__rte_unused int flags)
-{
-	char mem_name[RTE_LPM_NAMESIZE];
-	struct rte_lpm_v20 *lpm = NULL;
-	struct rte_tailq_entry *te;
-	uint32_t mem_size;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	RTE_BUILD_BUG_ON(sizeof(struct rte_lpm_tbl_entry_v20) != 2);
-
-	/* Check user arguments. */
-	if ((name == NULL) || (socket_id < -1) || (max_rules == 0)) {
-		rte_errno = EINVAL;
-		return NULL;
-	}
-
-	snprintf(mem_name, sizeof(mem_name), "LPM_%s", name);
-
-	/* Determine the amount of memory to allocate. */
-	mem_size = sizeof(*lpm) + (sizeof(lpm->rules_tbl[0]) * max_rules);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* guarantee there's no existing */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		lpm = te->data;
-		if (strncmp(name, lpm->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-
-	if (te != NULL) {
-		lpm = NULL;
-		rte_errno = EEXIST;
-		goto exit;
-	}
-
-	/* allocate tailq entry */
-	te = rte_zmalloc("LPM_TAILQ_ENTRY", sizeof(*te), 0);
-	if (te == NULL) {
-		RTE_LOG(ERR, LPM, "Failed to allocate tailq entry\n");
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Allocate memory to store the LPM data structures. */
-	lpm = rte_zmalloc_socket(mem_name, mem_size,
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (lpm == NULL) {
-		RTE_LOG(ERR, LPM, "LPM memory allocation failed\n");
-		rte_free(te);
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Save user arguments. */
-	lpm->max_rules = max_rules;
-	strlcpy(lpm->name, name, sizeof(lpm->name));
-
-	te->data = lpm;
-
-	TAILQ_INSERT_TAIL(lpm_list, te, next);
-
-exit:
-	rte_mcfg_tailq_write_unlock();
-
-	return lpm;
-}
-VERSION_SYMBOL(rte_lpm_create, _v20, 2.0);
-
 struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
+rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config)
 {
 	char mem_name[RTE_LPM_NAMESIZE];
@@ -320,45 +218,12 @@ rte_lpm_create_v1604(const char *name, int socket_id,
 
 	return lpm;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_create, _v1604, 16.04);
-MAP_STATIC_SYMBOL(
-	struct rte_lpm *rte_lpm_create(const char *name, int socket_id,
-			const struct rte_lpm_config *config), rte_lpm_create_v1604);
 
 /*
  * Deallocates memory for given LPM table.
  */
 void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm)
-{
-	struct rte_lpm_list *lpm_list;
-	struct rte_tailq_entry *te;
-
-	/* Check user arguments. */
-	if (lpm == NULL)
-		return;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* find our tailq entry */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		if (te->data == (void *) lpm)
-			break;
-	}
-	if (te != NULL)
-		TAILQ_REMOVE(lpm_list, te, next);
-
-	rte_mcfg_tailq_write_unlock();
-
-	rte_free(lpm);
-	rte_free(te);
-}
-VERSION_SYMBOL(rte_lpm_free, _v20, 2.0);
-
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm)
+rte_lpm_free(struct rte_lpm *lpm)
 {
 	struct rte_lpm_list *lpm_list;
 	struct rte_tailq_entry *te;
@@ -386,9 +251,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm)
 	rte_free(lpm);
 	rte_free(te);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_free, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
-		rte_lpm_free_v1604);
 
 /*
  * Adds a rule to the rule table.
@@ -401,79 +263,7 @@ MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-	uint8_t next_hop)
-{
-	uint32_t rule_gindex, rule_index, last_rule;
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	/* Scan through rule group to see if rule already exists. */
-	if (lpm->rule_info[depth - 1].used_rules > 0) {
-
-		/* rule_gindex stands for rule group index. */
-		rule_gindex = lpm->rule_info[depth - 1].first_rule;
-		/* Initialise rule_index to point to start of rule group. */
-		rule_index = rule_gindex;
-		/* Last rule = Last used rule in this rule group. */
-		last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-		for (; rule_index < last_rule; rule_index++) {
-
-			/* If rule already exists update its next_hop and return. */
-			if (lpm->rules_tbl[rule_index].ip == ip_masked) {
-				lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-				return rule_index;
-			}
-		}
-
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-	} else {
-		/* Calculate the position in which the rule will be stored. */
-		rule_index = 0;
-
-		for (i = depth - 1; i > 0; i--) {
-			if (lpm->rule_info[i - 1].used_rules > 0) {
-				rule_index = lpm->rule_info[i - 1].first_rule
-						+ lpm->rule_info[i - 1].used_rules;
-				break;
-			}
-		}
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-
-		lpm->rule_info[depth - 1].first_rule = rule_index;
-	}
-
-	/* Make room for the new rule in the array. */
-	for (i = RTE_LPM_MAX_DEPTH; i > depth; i--) {
-		if (lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules == lpm->max_rules)
-			return -ENOSPC;
-
-		if (lpm->rule_info[i - 1].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules]
-					= lpm->rules_tbl[lpm->rule_info[i - 1].first_rule];
-			lpm->rule_info[i - 1].first_rule++;
-		}
-	}
-
-	/* Add the new rule. */
-	lpm->rules_tbl[rule_index].ip = ip_masked;
-	lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-	/* Increment the used rules counter for this rule group. */
-	lpm->rule_info[depth - 1].used_rules++;
-
-	return rule_index;
-}
-
-static int32_t
-rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+rule_add(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	uint32_t next_hop)
 {
 	uint32_t rule_gindex, rule_index, last_rule;
@@ -549,30 +339,7 @@ rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static void
-rule_delete_v20(struct rte_lpm_v20 *lpm, int32_t rule_index, uint8_t depth)
-{
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	lpm->rules_tbl[rule_index] =
-			lpm->rules_tbl[lpm->rule_info[depth - 1].first_rule
-				+ lpm->rule_info[depth - 1].used_rules - 1];
-
-	for (i = depth; i < RTE_LPM_MAX_DEPTH; i++) {
-		if (lpm->rule_info[i].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i].first_rule - 1] =
-				lpm->rules_tbl[lpm->rule_info[i].first_rule
-					+ lpm->rule_info[i].used_rules - 1];
-			lpm->rule_info[i].first_rule--;
-		}
-	}
-
-	lpm->rule_info[depth - 1].used_rules--;
-}
-
-static void
-rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
+rule_delete(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
 {
 	int i;
 
@@ -599,28 +366,7 @@ rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_find_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth)
-{
-	uint32_t rule_gindex, last_rule, rule_index;
-
-	VERIFY_DEPTH(depth);
-
-	rule_gindex = lpm->rule_info[depth - 1].first_rule;
-	last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-	/* Scan used rules at given depth to find rule. */
-	for (rule_index = rule_gindex; rule_index < last_rule; rule_index++) {
-		/* If rule is found return the rule index. */
-		if (lpm->rules_tbl[rule_index].ip == ip_masked)
-			return rule_index;
-	}
-
-	/* If rule is not found return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
+rule_find(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
 {
 	uint32_t rule_gindex, last_rule, rule_index;
 
@@ -644,42 +390,7 @@ rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
  * Find, clean and allocate a tbl8.
  */
 static int32_t
-tbl8_alloc_v20(struct rte_lpm_tbl_entry_v20 *tbl8)
-{
-	uint32_t group_idx; /* tbl8 group index. */
-	struct rte_lpm_tbl_entry_v20 *tbl8_entry;
-
-	/* Scan through tbl8 to find a free (i.e. INVALID) tbl8 group. */
-	for (group_idx = 0; group_idx < RTE_LPM_TBL8_NUM_GROUPS;
-			group_idx++) {
-		tbl8_entry = &tbl8[group_idx * RTE_LPM_TBL8_GROUP_NUM_ENTRIES];
-		/* If a free tbl8 group is found clean it and set as VALID. */
-		if (!tbl8_entry->valid_group) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = INVALID,
-				.depth = 0,
-				.valid_group = VALID,
-			};
-			new_tbl8_entry.next_hop = 0;
-
-			memset(&tbl8_entry[0], 0,
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES *
-					sizeof(tbl8_entry[0]));
-
-			__atomic_store(tbl8_entry, &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-
-			/* Return group index for allocated tbl8 group. */
-			return group_idx;
-		}
-	}
-
-	/* If there are no tbl8 groups free then return error. */
-	return -ENOSPC;
-}
-
-static int32_t
-tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
+tbl8_alloc(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 {
 	uint32_t group_idx; /* tbl8 group index. */
 	struct rte_lpm_tbl_entry *tbl8_entry;
@@ -713,22 +424,7 @@ tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 }
 
 static void
-tbl8_free_v20(struct rte_lpm_tbl_entry_v20 *tbl8, uint32_t tbl8_group_start)
-{
-	/* Set tbl8 group invalid*/
-	struct rte_lpm_tbl_entry_v20 zero_tbl8_entry = {
-		.valid = INVALID,
-		.depth = 0,
-		.valid_group = INVALID,
-	};
-	zero_tbl8_entry.next_hop = 0;
-
-	__atomic_store(&tbl8[tbl8_group_start], &zero_tbl8_entry,
-			__ATOMIC_RELAXED);
-}
-
-static void
-tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
+tbl8_free(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 {
 	/* Set tbl8 group invalid*/
 	struct rte_lpm_tbl_entry zero_tbl8_entry = {0};
@@ -738,78 +434,7 @@ tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 }
 
 static __rte_noinline int32_t
-add_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index, tbl24_range, tbl8_index, tbl8_group_end, i, j;
-
-	/* Calculate the index into Table24. */
-	tbl24_index = ip >> 8;
-	tbl24_range = depth_to_range(depth);
-
-	for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-		/*
-		 * For invalid OR valid and non-extended tbl 24 entries set
-		 * entry.
-		 */
-		if (!lpm->tbl24[i].valid || (lpm->tbl24[i].valid_group == 0 &&
-				lpm->tbl24[i].depth <= depth)) {
-
-			struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.valid = VALID,
-				.valid_group = 0,
-				.depth = depth,
-			};
-			new_tbl24_entry.next_hop = next_hop;
-
-			/* Setting tbl24 entry in one go to avoid race
-			 * conditions
-			 */
-			__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-					__ATOMIC_RELEASE);
-
-			continue;
-		}
-
-		if (lpm->tbl24[i].valid_group == 1) {
-			/* If tbl24 entry is valid and extended calculate the
-			 *  index into tbl8.
-			 */
-			tbl8_index = lpm->tbl24[i].group_idx *
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-			tbl8_group_end = tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-			for (j = tbl8_index; j < tbl8_group_end; j++) {
-				if (!lpm->tbl8[j].valid ||
-						lpm->tbl8[j].depth <= depth) {
-					struct rte_lpm_tbl_entry_v20
-						new_tbl8_entry = {
-						.valid = VALID,
-						.valid_group = VALID,
-						.depth = depth,
-					};
-					new_tbl8_entry.next_hop = next_hop;
-
-					/*
-					 * Setting tbl8 entry in one go to avoid
-					 * race conditions
-					 */
-					__atomic_store(&lpm->tbl8[j],
-						&new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-					continue;
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+add_depth_small(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -881,150 +506,7 @@ add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 }
 
 static __rte_noinline int32_t
-add_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index;
-	int32_t tbl8_group_index, tbl8_group_start, tbl8_group_end, tbl8_index,
-		tbl8_range, i;
-
-	tbl24_index = (ip_masked >> 8);
-	tbl8_range = depth_to_range(depth);
-
-	if (!lpm->tbl24[tbl24_index].valid) {
-		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		/* Check tbl8 allocation was successful. */
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		/* Find index into tbl8 and range. */
-		tbl8_index = (tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES) +
-				(ip_masked & 0xFF);
-
-		/* Set tbl8 entry. */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.group_idx = (uint8_t)tbl8_group_index,
-			.valid = VALID,
-			.valid_group = 1,
-			.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} /* If valid entry but not extended calculate the index into Table8. */
-	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
-		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_group_end = tbl8_group_start +
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-		/* Populate new tbl8 with tbl24 value. */
-		for (i = tbl8_group_start; i < tbl8_group_end; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = lpm->tbl24[tbl24_index].depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop =
-				lpm->tbl24[tbl24_index].next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		/* Insert new rule into the tbl8 entry. */
-		for (i = tbl8_index; i < tbl8_index + tbl8_range; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.group_idx = (uint8_t)tbl8_group_index,
-				.valid = VALID,
-				.valid_group = 1,
-				.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} else { /*
-		* If it is valid, extended entry calculate the index into tbl8.
-		*/
-		tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-
-			if (!lpm->tbl8[i].valid ||
-					lpm->tbl8[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-					.valid = VALID,
-					.depth = depth,
-					.valid_group = lpm->tbl8[i].valid_group,
-				};
-				new_tbl8_entry.next_hop = next_hop;
-				/*
-				 * Setting tbl8 entry in one go to avoid race
-				 * condition
-				 */
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-				continue;
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+add_depth_big(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -1037,7 +519,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 
 	if (!lpm->tbl24[tbl24_index].valid) {
 		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		/* Check tbl8 allocation was successful. */
 		if (tbl8_group_index < 0) {
@@ -1083,7 +565,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	} /* If valid entry but not extended calculate the index into Table8. */
 	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
 		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		if (tbl8_group_index < 0) {
 			return tbl8_group_index;
@@ -1177,48 +659,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * Add a route
  */
 int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	int32_t rule_index, status = 0;
-	uint32_t ip_masked;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/* Add the rule to the rule table. */
-	rule_index = rule_add_v20(lpm, ip_masked, depth, next_hop);
-
-	/* If the is no space available for new rule return error. */
-	if (rule_index < 0) {
-		return rule_index;
-	}
-
-	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v20(lpm, ip_masked, depth, next_hop);
-	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v20(lpm, ip_masked, depth, next_hop);
-
-		/*
-		 * If add fails due to exhaustion of tbl8 extensions delete
-		 * rule that was added to rule table.
-		 */
-		if (status < 0) {
-			rule_delete_v20(lpm, rule_index, depth);
-
-			return status;
-		}
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_add, _v20, 2.0);
-
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 	int32_t rule_index, status = 0;
@@ -1231,7 +672,7 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	ip_masked = ip & depth_to_mask(depth);
 
 	/* Add the rule to the rule table. */
-	rule_index = rule_add_v1604(lpm, ip_masked, depth, next_hop);
+	rule_index = rule_add(lpm, ip_masked, depth, next_hop);
 
 	/* If the is no space available for new rule return error. */
 	if (rule_index < 0) {
@@ -1239,16 +680,16 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	}
 
 	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_small(lpm, ip_masked, depth, next_hop);
 	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_big(lpm, ip_masked, depth, next_hop);
 
 		/*
 		 * If add fails due to exhaustion of tbl8 extensions delete
 		 * rule that was added to rule table.
 		 */
 		if (status < 0) {
-			rule_delete_v1604(lpm, rule_index, depth);
+			rule_delete(lpm, rule_index, depth);
 
 			return status;
 		}
@@ -1256,42 +697,12 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_add, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_add(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t next_hop), rte_lpm_add_v1604);
 
 /*
  * Look for a rule in the high-level rules table
  */
 int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop)
-{
-	uint32_t ip_masked;
-	int32_t rule_index;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) ||
-		(next_hop == NULL) ||
-		(depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	/* Look for the rule using rule_find. */
-	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v20(lpm, ip_masked, depth);
-
-	if (rule_index >= 0) {
-		*next_hop = lpm->rules_tbl[rule_index].next_hop;
-		return 1;
-	}
-
-	/* If rule is not found return 0. */
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_is_rule_present, _v20, 2.0);
-
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop)
 {
 	uint32_t ip_masked;
@@ -1305,7 +716,7 @@ uint32_t *next_hop)
 
 	/* Look for the rule using rule_find. */
 	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v1604(lpm, ip_masked, depth);
+	rule_index = rule_find(lpm, ip_masked, depth);
 
 	if (rule_index >= 0) {
 		*next_hop = lpm->rules_tbl[rule_index].next_hop;
@@ -1315,12 +726,9 @@ uint32_t *next_hop)
 	/* If rule is not found return 0. */
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_is_rule_present, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t *next_hop), rte_lpm_is_rule_present_v1604);
 
 static int32_t
-find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
+find_previous_rule(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint8_t *sub_rule_depth)
 {
 	int32_t rule_index;
@@ -1330,7 +738,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
 		ip_masked = ip & depth_to_mask(prev_depth);
 
-		rule_index = rule_find_v20(lpm, ip_masked, prev_depth);
+		rule_index = rule_find(lpm, ip_masked, prev_depth);
 
 		if (rule_index >= 0) {
 			*sub_rule_depth = prev_depth;
@@ -1342,133 +750,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 }
 
 static int32_t
-find_previous_rule_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint8_t *sub_rule_depth)
-{
-	int32_t rule_index;
-	uint32_t ip_masked;
-	uint8_t prev_depth;
-
-	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
-		ip_masked = ip & depth_to_mask(prev_depth);
-
-		rule_index = rule_find_v1604(lpm, ip_masked, prev_depth);
-
-		if (rule_index >= 0) {
-			*sub_rule_depth = prev_depth;
-			return rule_index;
-		}
-	}
-
-	return -1;
-}
-
-static int32_t
-delete_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_range, tbl24_index, tbl8_group_index, tbl8_index, i, j;
-
-	/* Calculate the range and index into Table24. */
-	tbl24_range = depth_to_range(depth);
-	tbl24_index = (ip_masked >> 8);
-
-	/*
-	 * Firstly check the sub_rule_index. A -1 indicates no replacement rule
-	 * and a positive number indicates a sub_rule_index.
-	 */
-	if (sub_rule_index < 0) {
-		/*
-		 * If no replacement rule exists then invalidate entries
-		 * associated with this rule.
-		 */
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20
-					zero_tbl24_entry = {
-						.valid = INVALID,
-						.depth = 0,
-						.valid_group = 0,
-					};
-					zero_tbl24_entry.next_hop = 0;
-				__atomic_store(&lpm->tbl24[i],
-					&zero_tbl24_entry, __ATOMIC_RELEASE);
-			} else if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						lpm->tbl8[j].valid = INVALID;
-				}
-			}
-		}
-	} else {
-		/*
-		 * If a replacement rule exists then modify entries
-		 * associated with this rule.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->rules_tbl[sub_rule_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = sub_rule_depth,
-		};
-
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.valid_group = VALID,
-			.depth = sub_rule_depth,
-		};
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-						__ATOMIC_RELEASE);
-			} else  if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						__atomic_store(&lpm->tbl8[j],
-							&new_tbl8_entry,
-							__ATOMIC_RELAXED);
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_small(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1575,7 +857,7 @@ delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * thus can be recycled
  */
 static int32_t
-tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
+tbl8_recycle_check(struct rte_lpm_tbl_entry *tbl8,
 		uint32_t tbl8_group_start)
 {
 	uint32_t tbl8_group_end, i;
@@ -1622,140 +904,7 @@ tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
 }
 
 static int32_t
-tbl8_recycle_check_v1604(struct rte_lpm_tbl_entry *tbl8,
-		uint32_t tbl8_group_start)
-{
-	uint32_t tbl8_group_end, i;
-	tbl8_group_end = tbl8_group_start + RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-	/*
-	 * Check the first entry of the given tbl8. If it is invalid we know
-	 * this tbl8 does not contain any rule with a depth < RTE_LPM_MAX_DEPTH
-	 *  (As they would affect all entries in a tbl8) and thus this table
-	 *  can not be recycled.
-	 */
-	if (tbl8[tbl8_group_start].valid) {
-		/*
-		 * If first entry is valid check if the depth is less than 24
-		 * and if so check the rest of the entries to verify that they
-		 * are all of this depth.
-		 */
-		if (tbl8[tbl8_group_start].depth <= MAX_DEPTH_TBL24) {
-			for (i = (tbl8_group_start + 1); i < tbl8_group_end;
-					i++) {
-
-				if (tbl8[i].depth !=
-						tbl8[tbl8_group_start].depth) {
-
-					return -EEXIST;
-				}
-			}
-			/* If all entries are the same return the tb8 index */
-			return tbl8_group_start;
-		}
-
-		return -EEXIST;
-	}
-	/*
-	 * If the first entry is invalid check if the rest of the entries in
-	 * the tbl8 are invalid.
-	 */
-	for (i = (tbl8_group_start + 1); i < tbl8_group_end; i++) {
-		if (tbl8[i].valid)
-			return -EEXIST;
-	}
-	/* If no valid entries are found then return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-delete_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_index, tbl8_group_index, tbl8_group_start, tbl8_index,
-			tbl8_range, i;
-	int32_t tbl8_recycle_index;
-
-	/*
-	 * Calculate the index into tbl24 and range. Note: All depths larger
-	 * than MAX_DEPTH_TBL24 are associated with only one tbl24 entry.
-	 */
-	tbl24_index = ip_masked >> 8;
-
-	/* Calculate the index into tbl8 and range. */
-	tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-	tbl8_group_start = tbl8_group_index * RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-	tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-	tbl8_range = depth_to_range(depth);
-
-	if (sub_rule_index < 0) {
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be removed or modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				lpm->tbl8[i].valid = INVALID;
-		}
-	} else {
-		/* Set new tbl8 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.depth = sub_rule_depth,
-			.valid_group = lpm->tbl8[tbl8_group_start].valid_group,
-		};
-
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-		}
-	}
-
-	/*
-	 * Check if there are any valid entries in this tbl8 group. If all
-	 * tbl8 entries are invalid we can free the tbl8 and invalidate the
-	 * associated tbl24 entry.
-	 */
-
-	tbl8_recycle_index = tbl8_recycle_check_v20(lpm->tbl8, tbl8_group_start);
-
-	if (tbl8_recycle_index == -EINVAL) {
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		lpm->tbl24[tbl24_index].valid = 0;
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	} else if (tbl8_recycle_index > -1) {
-		/* Update tbl24 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->tbl8[tbl8_recycle_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = lpm->tbl8[tbl8_recycle_index].depth,
-		};
-
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELAXED);
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_big(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1810,7 +959,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 	 * associated tbl24 entry.
 	 */
 
-	tbl8_recycle_index = tbl8_recycle_check_v1604(lpm->tbl8, tbl8_group_start);
+	tbl8_recycle_index = tbl8_recycle_check(lpm->tbl8, tbl8_group_start);
 
 	if (tbl8_recycle_index == -EINVAL) {
 		/* Set tbl24 before freeing tbl8 to avoid race condition.
@@ -1818,7 +967,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		 */
 		lpm->tbl24[tbl24_index].valid = 0;
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	} else if (tbl8_recycle_index > -1) {
 		/* Update tbl24 entry. */
 		struct rte_lpm_tbl_entry new_tbl24_entry = {
@@ -1834,7 +983,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
 				__ATOMIC_RELAXED);
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	}
 #undef group_idx
 	return 0;
@@ -1844,7 +993,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * Deletes a rule
  */
 int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
+rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
 {
 	int32_t rule_to_delete_index, sub_rule_index;
 	uint32_t ip_masked;
@@ -1863,7 +1012,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * Find the index of the input rule, that needs to be deleted, in the
 	 * rule table.
 	 */
-	rule_to_delete_index = rule_find_v20(lpm, ip_masked, depth);
+	rule_to_delete_index = rule_find(lpm, ip_masked, depth);
 
 	/*
 	 * Check if rule_to_delete_index was found. If no rule was found the
@@ -1873,7 +1022,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 		return -EINVAL;
 
 	/* Delete the rule from the rule table. */
-	rule_delete_v20(lpm, rule_to_delete_index, depth);
+	rule_delete(lpm, rule_to_delete_index, depth);
 
 	/*
 	 * Find rule to replace the rule_to_delete. If there is no rule to
@@ -1881,100 +1030,26 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * entries associated with this rule.
 	 */
 	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v20(lpm, ip, depth, &sub_rule_depth);
+	sub_rule_index = find_previous_rule(lpm, ip, depth, &sub_rule_depth);
 
 	/*
 	 * If the input depth value is less than 25 use function
 	 * delete_depth_small otherwise use delete_depth_big.
 	 */
 	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v20(lpm, ip_masked, depth,
+		return delete_depth_small(lpm, ip_masked, depth,
 				sub_rule_index, sub_rule_depth);
 	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v20(lpm, ip_masked, depth, sub_rule_index,
+		return delete_depth_big(lpm, ip_masked, depth, sub_rule_index,
 				sub_rule_depth);
 	}
 }
-VERSION_SYMBOL(rte_lpm_delete, _v20, 2.0);
-
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
-{
-	int32_t rule_to_delete_index, sub_rule_index;
-	uint32_t ip_masked;
-	uint8_t sub_rule_depth;
-	/*
-	 * Check input arguments. Note: IP must be a positive integer of 32
-	 * bits in length therefore it need not be checked.
-	 */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH)) {
-		return -EINVAL;
-	}
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/*
-	 * Find the index of the input rule, that needs to be deleted, in the
-	 * rule table.
-	 */
-	rule_to_delete_index = rule_find_v1604(lpm, ip_masked, depth);
-
-	/*
-	 * Check if rule_to_delete_index was found. If no rule was found the
-	 * function rule_find returns -EINVAL.
-	 */
-	if (rule_to_delete_index < 0)
-		return -EINVAL;
-
-	/* Delete the rule from the rule table. */
-	rule_delete_v1604(lpm, rule_to_delete_index, depth);
-
-	/*
-	 * Find rule to replace the rule_to_delete. If there is no rule to
-	 * replace the rule_to_delete we return -1 and invalidate the table
-	 * entries associated with this rule.
-	 */
-	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v1604(lpm, ip, depth, &sub_rule_depth);
-
-	/*
-	 * If the input depth value is less than 25 use function
-	 * delete_depth_small otherwise use delete_depth_big.
-	 */
-	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v1604(lpm, ip_masked, depth,
-				sub_rule_index, sub_rule_depth);
-	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v1604(lpm, ip_masked, depth, sub_rule_index,
-				sub_rule_depth);
-	}
-}
-BIND_DEFAULT_SYMBOL(rte_lpm_delete, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth), rte_lpm_delete_v1604);
 
 /*
  * Delete all rules from the LPM table.
  */
 void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm)
-{
-	/* Zero rule information. */
-	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
-
-	/* Zero tbl24. */
-	memset(lpm->tbl24, 0, sizeof(lpm->tbl24));
-
-	/* Zero tbl8. */
-	memset(lpm->tbl8, 0, sizeof(lpm->tbl8));
-
-	/* Delete all rules form the rules table. */
-	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
-}
-VERSION_SYMBOL(rte_lpm_delete_all, _v20, 2.0);
-
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
+rte_lpm_delete_all(struct rte_lpm *lpm)
 {
 	/* Zero rule information. */
 	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
@@ -1989,6 +1064,3 @@ rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
 	/* Delete all rules form the rules table. */
 	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_delete_all, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_delete_all(struct rte_lpm *lpm),
-		rte_lpm_delete_all_v1604);
diff --git a/lib/librte_lpm/rte_lpm.h b/lib/librte_lpm/rte_lpm.h
index 906ec44830..ca9627a141 100644
--- a/lib/librte_lpm/rte_lpm.h
+++ b/lib/librte_lpm/rte_lpm.h
@@ -65,31 +65,6 @@ extern "C" {
 
 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
 /** @internal Tbl24 entry structure. */
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	/**
-	 * Stores Next hop (tbl8 or tbl24 when valid_group is not set) or
-	 * a group index pointing to a tbl8 structure (tbl24 only, when
-	 * valid_group is set)
-	 */
-	RTE_STD_C11
-	union {
-		uint8_t next_hop;
-		uint8_t group_idx;
-	};
-	/* Using single uint8_t to store 3 values. */
-	uint8_t valid     :1;   /**< Validation flag. */
-	/**
-	 * For tbl24:
-	 *  - valid_group == 0: entry stores a next hop
-	 *  - valid_group == 1: entry stores a group_index pointing to a tbl8
-	 * For tbl8:
-	 *  - valid_group indicates whether the current tbl8 is in use or not
-	 */
-	uint8_t valid_group :1;
-	uint8_t depth       :6; /**< Rule depth. */
-} __rte_aligned(sizeof(uint16_t));
-
 __extension__
 struct rte_lpm_tbl_entry {
 	/**
@@ -112,16 +87,6 @@ struct rte_lpm_tbl_entry {
 };
 
 #else
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	uint8_t depth       :6;
-	uint8_t valid_group :1;
-	uint8_t valid       :1;
-	union {
-		uint8_t group_idx;
-		uint8_t next_hop;
-	};
-} __rte_aligned(sizeof(uint16_t));
 
 __extension__
 struct rte_lpm_tbl_entry {
@@ -142,11 +107,6 @@ struct rte_lpm_config {
 };
 
 /** @internal Rule structure. */
-struct rte_lpm_rule_v20 {
-	uint32_t ip; /**< Rule IP address. */
-	uint8_t  next_hop; /**< Rule next hop. */
-};
-
 struct rte_lpm_rule {
 	uint32_t ip; /**< Rule IP address. */
 	uint32_t next_hop; /**< Rule next hop. */
@@ -159,21 +119,6 @@ struct rte_lpm_rule_info {
 };
 
 /** @internal LPM structure. */
-struct rte_lpm_v20 {
-	/* LPM metadata. */
-	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
-	uint32_t max_rules; /**< Max. balanced rules per lpm. */
-	struct rte_lpm_rule_info rule_info[RTE_LPM_MAX_DEPTH]; /**< Rule info table. */
-
-	/* LPM Tables. */
-	struct rte_lpm_tbl_entry_v20 tbl24[RTE_LPM_TBL24_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl24 table. */
-	struct rte_lpm_tbl_entry_v20 tbl8[RTE_LPM_TBL8_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl8 table. */
-	struct rte_lpm_rule_v20 rules_tbl[]
-			__rte_cache_aligned; /**< LPM rules. */
-};
-
 struct rte_lpm {
 	/* LPM metadata. */
 	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
@@ -210,11 +155,6 @@ struct rte_lpm {
 struct rte_lpm *
 rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config);
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules, int flags);
-struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
-		const struct rte_lpm_config *config);
 
 /**
  * Find an existing LPM object and return a pointer to it.
@@ -228,10 +168,6 @@ rte_lpm_create_v1604(const char *name, int socket_id,
  */
 struct rte_lpm *
 rte_lpm_find_existing(const char *name);
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name);
-struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name);
 
 /**
  * Free an LPM object.
@@ -243,10 +179,6 @@ rte_lpm_find_existing_v1604(const char *name);
  */
 void
 rte_lpm_free(struct rte_lpm *lpm);
-void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm);
 
 /**
  * Add a rule to the LPM table.
@@ -264,12 +196,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm);
  */
 int
 rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth, uint32_t next_hop);
-int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -289,12 +215,6 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 int
 rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop);
-int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop);
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -310,10 +230,6 @@ uint32_t *next_hop);
  */
 int
 rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
 
 /**
  * Delete all rules from the LPM table.
@@ -323,10 +239,6 @@ rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
  */
 void
 rte_lpm_delete_all(struct rte_lpm *lpm);
-void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm);
 
 /**
  * Lookup an IP into the LPM table.
diff --git a/lib/librte_lpm/rte_lpm6.c b/lib/librte_lpm/rte_lpm6.c
index 9b8aeb9721..b981e40714 100644
--- a/lib/librte_lpm/rte_lpm6.c
+++ b/lib/librte_lpm/rte_lpm6.c
@@ -808,18 +808,6 @@ add_step(struct rte_lpm6 *lpm, struct rte_lpm6_tbl_entry *tbl,
 	return 1;
 }
 
-/*
- * Add a route
- */
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	return rte_lpm6_add_v1705(lpm, ip, depth, next_hop);
-}
-VERSION_SYMBOL(rte_lpm6_add, _v20, 2.0);
-
-
 /*
  * Simulate adding a route to LPM
  *
@@ -841,7 +829,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	ret = simulate_add_step(lpm, lpm->tbl24, &tbl_next, masked_ip,
-			ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
+		ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
 	total_need_tbl_nb = need_tbl_nb;
 	/*
 	 * Inspect one by one the rest of the bytes until
@@ -850,7 +838,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && ret == 1; i++) {
 		tbl = tbl_next;
 		ret = simulate_add_step(lpm, tbl, &tbl_next, masked_ip, 1,
-				(uint8_t)(i+1), depth, &need_tbl_nb);
+			(uint8_t)(i + 1), depth, &need_tbl_nb);
 		total_need_tbl_nb += need_tbl_nb;
 	}
 
@@ -861,9 +849,12 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	return 0;
 }
 
+/*
+ * Add a route
+ */
 int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop)
+rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+	uint32_t next_hop)
 {
 	struct rte_lpm6_tbl_entry *tbl;
 	struct rte_lpm6_tbl_entry *tbl_next = NULL;
@@ -895,8 +886,8 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	tbl = lpm->tbl24;
 	status = add_step(lpm, tbl, TBL24_IND, &tbl_next, &tbl_next_num,
-			masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
-			is_new_rule);
+		masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
+		is_new_rule);
 	assert(status >= 0);
 
 	/*
@@ -906,17 +897,13 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && status == 1; i++) {
 		tbl = tbl_next;
 		status = add_step(lpm, tbl, tbl_next_num, &tbl_next,
-				&tbl_next_num, masked_ip, 1, (uint8_t)(i+1),
-				depth, next_hop, is_new_rule);
+			&tbl_next_num, masked_ip, 1, (uint8_t)(i + 1),
+			depth, next_hop, is_new_rule);
 		assert(status >= 0);
 	}
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_add, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip,
-				uint8_t depth, uint32_t next_hop),
-		rte_lpm6_add_v1705);
 
 /*
  * Takes a pointer to a table entry and inspect one level.
@@ -955,25 +942,7 @@ lookup_step(const struct rte_lpm6 *lpm, const struct rte_lpm6_tbl_entry *tbl,
  * Looks up an IP
  */
 int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_lookup_v1705(lpm, ip, &next_hop32);
-	if (status == 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-}
-VERSION_SYMBOL(rte_lpm6_lookup, _v20, 2.0);
-
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
+rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
 		uint32_t *next_hop)
 {
 	const struct rte_lpm6_tbl_entry *tbl;
@@ -1000,56 +969,12 @@ rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
-				uint32_t *next_hop), rte_lpm6_lookup_v1705);
 
 /*
  * Looks up a group of IP addresses
  */
 int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t * next_hops, unsigned n)
-{
-	unsigned i;
-	const struct rte_lpm6_tbl_entry *tbl;
-	const struct rte_lpm6_tbl_entry *tbl_next = NULL;
-	uint32_t tbl24_index, next_hop;
-	uint8_t first_byte;
-	int status;
-
-	/* DEBUG: Check user input arguments. */
-	if ((lpm == NULL) || (ips == NULL) || (next_hops == NULL))
-		return -EINVAL;
-
-	for (i = 0; i < n; i++) {
-		first_byte = LOOKUP_FIRST_BYTE;
-		tbl24_index = (ips[i][0] << BYTES2_SIZE) |
-				(ips[i][1] << BYTE_SIZE) | ips[i][2];
-
-		/* Calculate pointer to the first entry to be inspected */
-		tbl = &lpm->tbl24[tbl24_index];
-
-		do {
-			/* Continue inspecting following levels until success or failure */
-			status = lookup_step(lpm, tbl, &tbl_next, ips[i], first_byte++,
-					&next_hop);
-			tbl = tbl_next;
-		} while (status == 1);
-
-		if (status < 0)
-			next_hops[i] = -1;
-		else
-			next_hops[i] = (int16_t)next_hop;
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm6_lookup_bulk_func, _v20, 2.0);
-
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
+rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n)
 {
@@ -1089,37 +1014,12 @@ rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup_bulk_func, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
-				uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-				int32_t *next_hops, unsigned int n),
-		rte_lpm6_lookup_bulk_func_v1705);
 
 /*
  * Look for a rule in the high-level rules table
  */
 int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_is_rule_present_v1705(lpm, ip, depth, &next_hop32);
-	if (status > 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-
-}
-VERSION_SYMBOL(rte_lpm6_is_rule_present, _v20, 2.0);
-
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop)
 {
 	uint8_t masked_ip[RTE_LPM6_IPV6_ADDR_SIZE];
@@ -1135,10 +1035,6 @@ rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 
 	return rule_find(lpm, masked_ip, depth, next_hop);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_is_rule_present, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_is_rule_present(struct rte_lpm6 *lpm,
-				uint8_t *ip, uint8_t depth, uint32_t *next_hop),
-		rte_lpm6_is_rule_present_v1705);
 
 /*
  * Delete a rule from the rule table.
diff --git a/lib/librte_lpm/rte_lpm6.h b/lib/librte_lpm/rte_lpm6.h
index 5d59ccb1fe..37dfb20249 100644
--- a/lib/librte_lpm/rte_lpm6.h
+++ b/lib/librte_lpm/rte_lpm6.h
@@ -96,12 +96,6 @@ rte_lpm6_free(struct rte_lpm6 *lpm);
 int
 rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t next_hop);
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -121,12 +115,6 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 int
 rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop);
-int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop);
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -184,11 +172,6 @@ rte_lpm6_delete_all(struct rte_lpm6 *lpm);
  */
 int
 rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip, uint32_t *next_hop);
-int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop);
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
-		uint32_t *next_hop);
 
 /**
  * Lookup multiple IP addresses in an LPM table.
@@ -210,14 +193,6 @@ int
 rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int32_t *next_hops, unsigned int n);
 
 #ifdef __cplusplus
 }
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v4 06/10] distributor: remove deprecated code
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
                       ` (6 preceding siblings ...)
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 05/10] lpm: " Anatoly Burakov
@ 2019-10-17 14:31     ` Anatoly Burakov
  2019-10-17 15:59       ` Hunt, David
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
                       ` (3 subsequent siblings)
  11 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-17 14:31 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, David Hunt, john.mcnamara, bruce.richardson,
	thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_distributor/rte_distributor.c      | 56 +++--------------
 .../rte_distributor_v1705.h                   | 61 -------------------
 2 files changed, 9 insertions(+), 108 deletions(-)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h

diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index 21eb1fb0a1..ca3f21b833 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -19,7 +19,6 @@
 #include "rte_distributor_private.h"
 #include "rte_distributor.h"
 #include "rte_distributor_v20.h"
-#include "rte_distributor_v1705.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
 
@@ -33,7 +32,7 @@ EAL_REGISTER_TAILQ(rte_dist_burst_tailq)
 /**** Burst Packet APIs called by workers ****/
 
 void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
+rte_distributor_request_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt,
 		unsigned int count)
 {
@@ -78,14 +77,9 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
 	 */
 	*retptr64 |= RTE_DISTRIB_GET_BUF;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_request_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_request_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count),
-		rte_distributor_request_pkt_v1705);
 
 int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
+rte_distributor_poll_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -119,13 +113,9 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
 
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_poll_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_poll_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts),
-		rte_distributor_poll_pkt_v1705);
 
 int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
+rte_distributor_get_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts,
 		struct rte_mbuf **oldpkt, unsigned int return_count)
 {
@@ -153,14 +143,9 @@ rte_distributor_get_pkt_v1705(struct rte_distributor *d,
 	}
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_get_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_get_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts,
-		struct rte_mbuf **oldpkt, unsigned int return_count),
-		rte_distributor_get_pkt_v1705);
 
 int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
+rte_distributor_return_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt, int num)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -187,10 +172,6 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_return_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_return_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt, int num),
-		rte_distributor_return_pkt_v1705);
 
 /**** APIs called on distributor core ***/
 
@@ -336,7 +317,7 @@ release(struct rte_distributor *d, unsigned int wkr)
 
 /* process a set of packets to distribute them to workers */
 int
-rte_distributor_process_v1705(struct rte_distributor *d,
+rte_distributor_process(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs)
 {
 	unsigned int next_idx = 0;
@@ -470,14 +451,10 @@ rte_distributor_process_v1705(struct rte_distributor *d,
 
 	return num_mbufs;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_process, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_process(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs),
-		rte_distributor_process_v1705);
 
 /* return to the caller, packets returned from workers */
 int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
+rte_distributor_returned_pkts(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -502,10 +479,6 @@ rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
 
 	return retval;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_returned_pkts, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_returned_pkts(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs),
-		rte_distributor_returned_pkts_v1705);
 
 /*
  * Return the number of packets in-flight in a distributor, i.e. packets
@@ -527,7 +500,7 @@ total_outstanding(const struct rte_distributor *d)
  * queued up.
  */
 int
-rte_distributor_flush_v1705(struct rte_distributor *d)
+rte_distributor_flush(struct rte_distributor *d)
 {
 	unsigned int flushed;
 	unsigned int wkr;
@@ -556,13 +529,10 @@ rte_distributor_flush_v1705(struct rte_distributor *d)
 
 	return flushed;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_flush, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_flush(struct rte_distributor *d),
-		rte_distributor_flush_v1705);
 
 /* clears the internal returns array in the distributor */
 void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d)
+rte_distributor_clear_returns(struct rte_distributor *d)
 {
 	unsigned int wkr;
 
@@ -576,13 +546,10 @@ rte_distributor_clear_returns_v1705(struct rte_distributor *d)
 	for (wkr = 0; wkr < d->num_workers; wkr++)
 		d->bufs[wkr].retptr64[0] = 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_clear_returns, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_clear_returns(struct rte_distributor *d),
-		rte_distributor_clear_returns_v1705);
 
 /* creates a distributor instance */
 struct rte_distributor *
-rte_distributor_create_v1705(const char *name,
+rte_distributor_create(const char *name,
 		unsigned int socket_id,
 		unsigned int num_workers,
 		unsigned int alg_type)
@@ -656,8 +623,3 @@ rte_distributor_create_v1705(const char *name,
 
 	return d;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_create, _v1705, 17.05);
-MAP_STATIC_SYMBOL(struct rte_distributor *rte_distributor_create(
-		const char *name, unsigned int socket_id,
-		unsigned int num_workers, unsigned int alg_type),
-		rte_distributor_create_v1705);
diff --git a/lib/librte_distributor/rte_distributor_v1705.h b/lib/librte_distributor/rte_distributor_v1705.h
deleted file mode 100644
index df4d9e8150..0000000000
--- a/lib/librte_distributor/rte_distributor_v1705.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2017 Intel Corporation
- */
-
-#ifndef _RTE_DISTRIB_V1705_H_
-#define _RTE_DISTRIB_V1705_H_
-
-/**
- * @file
- * RTE distributor
- *
- * The distributor is a component which is designed to pass packets
- * one-at-a-time to workers, with dynamic load balancing.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rte_distributor *
-rte_distributor_create_v1705(const char *name, unsigned int socket_id,
-		unsigned int num_workers,
-		unsigned int alg_type);
-
-int
-rte_distributor_process_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs);
-
-int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs);
-
-int
-rte_distributor_flush_v1705(struct rte_distributor *d);
-
-void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d);
-
-int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **pkts,
-	struct rte_mbuf **oldpkt, unsigned int retcount);
-
-int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **oldpkt, int num);
-
-void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count);
-
-int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **mbufs);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v4 07/10] distributor: rename v2.0 ABI to _single suffix
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
                       ` (7 preceding siblings ...)
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 06/10] distributor: " Anatoly Burakov
@ 2019-10-17 14:31     ` Anatoly Burakov
  2019-10-17 16:00       ` Hunt, David
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
                       ` (2 subsequent siblings)
  11 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-17 14:31 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, David Hunt, john.mcnamara, bruce.richardson,
	thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

The original ABI versioning was slightly misleading in that the
DPDK 2.0 ABI was really a single mode for the distributor, and is
used as such throughout the distributor code.

Fix this by renaming all _v20 API's to _single API's, and remove
symbol versioning.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v4:
    - Changed it back to how it was with v2
    - Removed remaining v2.0 symbols
    
    v3:
    - Removed single mode from distributor as per Dave's comments
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_distributor/Makefile               |  2 +-
 lib/librte_distributor/meson.build            |  2 +-
 lib/librte_distributor/rte_distributor.c      | 24 ++++----
 .../rte_distributor_private.h                 | 10 ++--
 ...ributor_v20.c => rte_distributor_single.c} | 57 ++++++++-----------
 ...ributor_v20.h => rte_distributor_single.h} | 26 ++++-----
 .../rte_distributor_version.map               | 18 +-----
 7 files changed, 58 insertions(+), 81 deletions(-)
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (84%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)

diff --git a/lib/librte_distributor/Makefile b/lib/librte_distributor/Makefile
index 0ef80dcff4..d9d0089166 100644
--- a/lib/librte_distributor/Makefile
+++ b/lib/librte_distributor/Makefile
@@ -15,7 +15,7 @@ EXPORT_MAP := rte_distributor_version.map
 LIBABIVER := 1
 
 # all source are stored in SRCS-y
-SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_v20.c
+SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_single.c
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor.c
 ifeq ($(CONFIG_RTE_ARCH_X86),y)
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor_match_sse.c
diff --git a/lib/librte_distributor/meson.build b/lib/librte_distributor/meson.build
index dba7e3b2aa..bd12ddb2f1 100644
--- a/lib/librte_distributor/meson.build
+++ b/lib/librte_distributor/meson.build
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-sources = files('rte_distributor.c', 'rte_distributor_v20.c')
+sources = files('rte_distributor.c', 'rte_distributor_single.c')
 if arch_subdir == 'x86'
 	sources += files('rte_distributor_match_sse.c')
 else
diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index ca3f21b833..b4fc0bfead 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -18,7 +18,7 @@
 
 #include "rte_distributor_private.h"
 #include "rte_distributor.h"
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
 
@@ -42,7 +42,7 @@ rte_distributor_request_pkt(struct rte_distributor *d,
 	volatile int64_t *retptr64;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		rte_distributor_request_pkt_v20(d->d_v20,
+		rte_distributor_request_pkt_single(d->d_single,
 			worker_id, oldpkt[0]);
 		return;
 	}
@@ -88,7 +88,8 @@ rte_distributor_poll_pkt(struct rte_distributor *d,
 	unsigned int i;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		pkts[0] = rte_distributor_poll_pkt_v20(d->d_v20, worker_id);
+		pkts[0] = rte_distributor_poll_pkt_single(d->d_single,
+			worker_id);
 		return (pkts[0]) ? 1 : 0;
 	}
 
@@ -123,7 +124,7 @@ rte_distributor_get_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (return_count <= 1) {
-			pkts[0] = rte_distributor_get_pkt_v20(d->d_v20,
+			pkts[0] = rte_distributor_get_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 			return (pkts[0]) ? 1 : 0;
 		} else
@@ -153,7 +154,7 @@ rte_distributor_return_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (num == 1)
-			return rte_distributor_return_pkt_v20(d->d_v20,
+			return rte_distributor_return_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 		else
 			return -EINVAL;
@@ -330,7 +331,8 @@ rte_distributor_process(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_process_v20(d->d_v20, mbufs, num_mbufs);
+		return rte_distributor_process_single(d->d_single,
+			mbufs, num_mbufs);
 	}
 
 	if (unlikely(num_mbufs == 0)) {
@@ -464,7 +466,7 @@ rte_distributor_returned_pkts(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_returned_pkts_v20(d->d_v20,
+		return rte_distributor_returned_pkts_single(d->d_single,
 				mbufs, max_mbufs);
 	}
 
@@ -507,7 +509,7 @@ rte_distributor_flush(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_flush_v20(d->d_v20);
+		return rte_distributor_flush_single(d->d_single);
 	}
 
 	flushed = total_outstanding(d);
@@ -538,7 +540,7 @@ rte_distributor_clear_returns(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		rte_distributor_clear_returns_v20(d->d_v20);
+		rte_distributor_clear_returns_single(d->d_single);
 		return;
 	}
 
@@ -578,9 +580,9 @@ rte_distributor_create(const char *name,
 			rte_errno = ENOMEM;
 			return NULL;
 		}
-		d->d_v20 = rte_distributor_create_v20(name,
+		d->d_single = rte_distributor_create_single(name,
 				socket_id, num_workers);
-		if (d->d_v20 == NULL) {
+		if (d->d_single == NULL) {
 			free(d);
 			/* rte_errno will have been set */
 			return NULL;
diff --git a/lib/librte_distributor/rte_distributor_private.h b/lib/librte_distributor/rte_distributor_private.h
index 33cd89410c..bdb62b6e92 100644
--- a/lib/librte_distributor/rte_distributor_private.h
+++ b/lib/librte_distributor/rte_distributor_private.h
@@ -55,7 +55,7 @@ extern "C" {
  * the next cache line to worker 0, we pad this out to three cache lines.
  * Only 64-bits of the memory is actually used though.
  */
-union rte_distributor_buffer_v20 {
+union rte_distributor_buffer_single {
 	volatile int64_t bufptr64;
 	char pad[RTE_CACHE_LINE_SIZE*3];
 } __rte_cache_aligned;
@@ -80,8 +80,8 @@ struct rte_distributor_returned_pkts {
 	struct rte_mbuf *mbufs[RTE_DISTRIB_MAX_RETURNS];
 };
 
-struct rte_distributor_v20 {
-	TAILQ_ENTRY(rte_distributor_v20) next;    /**< Next in list. */
+struct rte_distributor_single {
+	TAILQ_ENTRY(rte_distributor_single) next;    /**< Next in list. */
 
 	char name[RTE_DISTRIBUTOR_NAMESIZE];  /**< Name of the ring. */
 	unsigned int num_workers;             /**< Number of workers polling */
@@ -96,7 +96,7 @@ struct rte_distributor_v20 {
 
 	struct rte_distributor_backlog backlog[RTE_DISTRIB_MAX_WORKERS];
 
-	union rte_distributor_buffer_v20 bufs[RTE_DISTRIB_MAX_WORKERS];
+	union rte_distributor_buffer_single bufs[RTE_DISTRIB_MAX_WORKERS];
 
 	struct rte_distributor_returned_pkts returns;
 };
@@ -154,7 +154,7 @@ struct rte_distributor {
 
 	enum rte_distributor_match_function dist_match_fn;
 
-	struct rte_distributor_v20 *d_v20;
+	struct rte_distributor_single *d_single;
 };
 
 void
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_single.c
similarity index 84%
rename from lib/librte_distributor/rte_distributor_v20.c
rename to lib/librte_distributor/rte_distributor_single.c
index cdc0969a89..9a6ef826c9 100644
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ b/lib/librte_distributor/rte_distributor_single.c
@@ -15,10 +15,10 @@
 #include <rte_pause.h>
 #include <rte_tailq.h>
 
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 #include "rte_distributor_private.h"
 
-TAILQ_HEAD(rte_distributor_list, rte_distributor_v20);
+TAILQ_HEAD(rte_distributor_list, rte_distributor_single);
 
 static struct rte_tailq_elem rte_distributor_tailq = {
 	.name = "RTE_DISTRIBUTOR",
@@ -28,23 +28,22 @@ EAL_REGISTER_TAILQ(rte_distributor_tailq)
 /**** APIs called by workers ****/
 
 void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	int64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_GET_BUF;
 	while (unlikely(buf->bufptr64 & RTE_DISTRIB_FLAGS_MASK))
 		rte_pause();
 	buf->bufptr64 = req;
 }
-VERSION_SYMBOL(rte_distributor_request_pkt, _v20, 2.0);
 
 struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	if (buf->bufptr64 & RTE_DISTRIB_GET_BUF)
 		return NULL;
 
@@ -52,31 +51,28 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
 	int64_t ret = buf->bufptr64 >> RTE_DISTRIB_FLAG_BITS;
 	return (struct rte_mbuf *)((uintptr_t)ret);
 }
-VERSION_SYMBOL(rte_distributor_poll_pkt, _v20, 2.0);
 
 struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
 	struct rte_mbuf *ret;
-	rte_distributor_request_pkt_v20(d, worker_id, oldpkt);
-	while ((ret = rte_distributor_poll_pkt_v20(d, worker_id)) == NULL)
+	rte_distributor_request_pkt_single(d, worker_id, oldpkt);
+	while ((ret = rte_distributor_poll_pkt_single(d, worker_id)) == NULL)
 		rte_pause();
 	return ret;
 }
-VERSION_SYMBOL(rte_distributor_get_pkt, _v20, 2.0);
 
 int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	uint64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_RETURN_BUF;
 	buf->bufptr64 = req;
 	return 0;
 }
-VERSION_SYMBOL(rte_distributor_return_pkt, _v20, 2.0);
 
 /**** APIs called on distributor core ***/
 
@@ -102,7 +98,7 @@ backlog_pop(struct rte_distributor_backlog *bl)
 
 /* stores a packet returned from a worker inside the returns array */
 static inline void
-store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
+store_return(uintptr_t oldbuf, struct rte_distributor_single *d,
 		unsigned *ret_start, unsigned *ret_count)
 {
 	/* store returns in a circular buffer - code is branch-free */
@@ -113,7 +109,7 @@ store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
 }
 
 static inline void
-handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
+handle_worker_shutdown(struct rte_distributor_single *d, unsigned int wkr)
 {
 	d->in_flight_tags[wkr] = 0;
 	d->in_flight_bitmask &= ~(1UL << wkr);
@@ -143,7 +139,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
 		 * Note that the tags were set before first level call
 		 * to rte_distributor_process.
 		 */
-		rte_distributor_process_v20(d, pkts, i);
+		rte_distributor_process_single(d, pkts, i);
 		bl->count = bl->start = 0;
 	}
 }
@@ -153,7 +149,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
  * to do a partial flush.
  */
 static int
-process_returns(struct rte_distributor_v20 *d)
+process_returns(struct rte_distributor_single *d)
 {
 	unsigned wkr;
 	unsigned flushed = 0;
@@ -192,7 +188,7 @@ process_returns(struct rte_distributor_v20 *d)
 
 /* process a set of packets to distribute them to workers */
 int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned num_mbufs)
 {
 	unsigned next_idx = 0;
@@ -293,11 +289,10 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 	d->returns.count = ret_count;
 	return num_mbufs;
 }
-VERSION_SYMBOL(rte_distributor_process, _v20, 2.0);
 
 /* return to the caller, packets returned from workers */
 int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -314,13 +309,12 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
 
 	return retval;
 }
-VERSION_SYMBOL(rte_distributor_returned_pkts, _v20, 2.0);
 
 /* return the number of packets in-flight in a distributor, i.e. packets
  * being worked on or queued up in a backlog.
  */
 static inline unsigned
-total_outstanding(const struct rte_distributor_v20 *d)
+total_outstanding(const struct rte_distributor_single *d)
 {
 	unsigned wkr, total_outstanding;
 
@@ -335,35 +329,33 @@ total_outstanding(const struct rte_distributor_v20 *d)
 /* flush the distributor, so that there are no outstanding packets in flight or
  * queued up. */
 int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d)
+rte_distributor_flush_single(struct rte_distributor_single *d)
 {
 	const unsigned flushed = total_outstanding(d);
 
 	while (total_outstanding(d) > 0)
-		rte_distributor_process_v20(d, NULL, 0);
+		rte_distributor_process_single(d, NULL, 0);
 
 	return flushed;
 }
-VERSION_SYMBOL(rte_distributor_flush, _v20, 2.0);
 
 /* clears the internal returns array in the distributor */
 void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
+rte_distributor_clear_returns_single(struct rte_distributor_single *d)
 {
 	d->returns.start = d->returns.count = 0;
 #ifndef __OPTIMIZE__
 	memset(d->returns.mbufs, 0, sizeof(d->returns.mbufs));
 #endif
 }
-VERSION_SYMBOL(rte_distributor_clear_returns, _v20, 2.0);
 
 /* creates a distributor instance */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name,
 		unsigned socket_id,
 		unsigned num_workers)
 {
-	struct rte_distributor_v20 *d;
+	struct rte_distributor_single *d;
 	struct rte_distributor_list *distributor_list;
 	char mz_name[RTE_MEMZONE_NAMESIZE];
 	const struct rte_memzone *mz;
@@ -399,4 +391,3 @@ rte_distributor_create_v20(const char *name,
 
 	return d;
 }
-VERSION_SYMBOL(rte_distributor_create, _v20, 2.0);
diff --git a/lib/librte_distributor/rte_distributor_v20.h b/lib/librte_distributor/rte_distributor_single.h
similarity index 89%
rename from lib/librte_distributor/rte_distributor_v20.h
rename to lib/librte_distributor/rte_distributor_single.h
index 12865658ba..2f80aa43d1 100644
--- a/lib/librte_distributor/rte_distributor_v20.h
+++ b/lib/librte_distributor/rte_distributor_single.h
@@ -2,8 +2,8 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
-#ifndef _RTE_DISTRIB_V20_H_
-#define _RTE_DISTRIB_V20_H_
+#ifndef _RTE_DISTRIB_SINGLE_H_
+#define _RTE_DISTRIB_SINGLE_H_
 
 /**
  * @file
@@ -19,7 +19,7 @@ extern "C" {
 
 #define RTE_DISTRIBUTOR_NAMESIZE 32 /**< Length of name for instance */
 
-struct rte_distributor_v20;
+struct rte_distributor_single;
 struct rte_mbuf;
 
 /**
@@ -38,8 +38,8 @@ struct rte_mbuf;
  * @return
  *   The newly created distributor instance
  */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name, unsigned int socket_id,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name, unsigned int socket_id,
 		unsigned int num_workers);
 
 /*  *** APIS to be called on the distributor lcore ***  */
@@ -74,7 +74,7 @@ rte_distributor_create_v20(const char *name, unsigned int socket_id,
  *   The number of mbufs processed.
  */
 int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs);
 
 /**
@@ -92,7 +92,7 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
  *   The number of mbufs returned in the mbufs array.
  */
 int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs);
 
 /**
@@ -107,7 +107,7 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
  *   The number of queued/in-flight packets that were completed by this call.
  */
 int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d);
+rte_distributor_flush_single(struct rte_distributor_single *d);
 
 /**
  * Clears the array of returned packets used as the source for the
@@ -119,7 +119,7 @@ rte_distributor_flush_v20(struct rte_distributor_v20 *d);
  *   The distributor instance to be used
  */
 void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
+rte_distributor_clear_returns_single(struct rte_distributor_single *d);
 
 /*  *** APIS to be called on the worker lcores ***  */
 /*
@@ -148,7 +148,7 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
  *   A new packet to be processed by the worker thread.
  */
 struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -164,7 +164,7 @@ rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet being processed by the worker
  */
 int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *mbuf);
 
 /**
@@ -188,7 +188,7 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet, if any, being processed by the worker
  */
 void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -208,7 +208,7 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
  *   packet is yet available.
  */
 struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id);
 
 #ifdef __cplusplus
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 3a285b394e..00e26b4804 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,19 +1,3 @@
-DPDK_2.0 {
-	global:
-
-	rte_distributor_clear_returns;
-	rte_distributor_create;
-	rte_distributor_flush;
-	rte_distributor_get_pkt;
-	rte_distributor_poll_pkt;
-	rte_distributor_process;
-	rte_distributor_request_pkt;
-	rte_distributor_return_pkt;
-	rte_distributor_returned_pkts;
-
-	local: *;
-};
-
 DPDK_17.05 {
 	global:
 
@@ -26,4 +10,4 @@ DPDK_17.05 {
 	rte_distributor_request_pkt;
 	rte_distributor_return_pkt;
 	rte_distributor_returned_pkts;
-} DPDK_2.0;
+};
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v4 08/10] drivers/octeontx: add missing public symbol
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
                       ` (8 preceding siblings ...)
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
@ 2019-10-17 14:31     ` Anatoly Burakov
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 09/10] build: change ABI version to 20.0 Anatoly Burakov
  2019-10-17 14:32     ` [dpdk-dev] [PATCH v4 10/10] buildtools: add ABI versioning check script Anatoly Burakov
  11 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-17 14:31 UTC (permalink / raw)
  To: dev
  Cc: Jerin Jacob, john.mcnamara, bruce.richardson, thomas,
	david.marchand, pbhagavatula, stable

The logtype symbol was missing from the .map file. Add it.

Fixes: d8dd31652cf4 ("common/octeontx: move mbox to common folder")
Cc: pbhagavatula@caviumnetworks.com
Cc: stable@dpdk.org

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - add this patch to avoid compile breakage when bumping ABI

 drivers/common/octeontx/rte_common_octeontx_version.map | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index f04b3b7f8a..a9b3cff9bc 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,6 +1,7 @@
 DPDK_18.05 {
 	global:
 
+	octeontx_logtype_mbox;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
 	octeontx_mbox_send;
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v4 09/10] build: change ABI version to 20.0
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
                       ` (9 preceding siblings ...)
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
@ 2019-10-17 14:31     ` Anatoly Burakov
  2019-10-17 14:32     ` [dpdk-dev] [PATCH v4 10/10] buildtools: add ABI versioning check script Anatoly Burakov
  11 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-17 14:31 UTC (permalink / raw)
  To: dev
  Cc: Pawel Modrak, Nicolas Chautru, Hemant Agrawal, Sachin Saxena,
	Rosen Xu, Stephen Hemminger, Anoob Joseph, Tomasz Duszynski,
	Liron Himi, Jerin Jacob, Nithin Dabilpuram, Vamsi Attunuru,
	Lee Daly, Fiona Trahe, Ashish Gupta, Sunila Sahu, Declan Doherty,
	Pablo de Lara, Gagandeep Singh, Ravi Kumar, Akhil Goyal,
	Michael Shamis, Nagadheeraj Rottela, Srikanth Jampala, Fan Zhang,
	Jay Zhou, Nipun Gupta, Mattias Rönnblom, Pavan Nikhilesh,
	Liang Ma, Peter Mccarthy, Harry van Haaren, Artem V. Andreev,
	Andrew Rybchenko, Olivier Matz, Gage Eads, John W. Linville,
	Xiaolong Ye, Qi Zhang, Shepard Siegel, Ed Czeck, John Miller,
	Igor Russkikh, Pavel Belous, Allain Legacy, Matt Peters,
	Rasesh Mody, Shahed Shaikh, Ajit Khaparde, Somnath Kotur,
	Chas Williams, Rahul Lakkireddy, Wenzhuo Lu, Marcin Wojtas,
	Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Igor Chauskin,
	John Daley, Hyong Youb Kim, Gaetan Rivet, Xiao Wang, Ziyang Xuan,
	Xiaoyun Wang, Guoyang Zhou, Wei Hu (Xavier), Min Hu (Connor),
	Yisen Zhuang, Beilei Xing, Jingjing Wu, Qiming Yang,
	Konstantin Ananyev, Ferruh Yigit, Shijith Thotton,
	Srisivasubramanian Srinivasan, Jakub Grajciar, Matan Azrad,
	Shahaf Shuler, Viacheslav Ovsiienko, Zyta Szpak,
	K. Y. Srinivasan, Haiyang Zhang, Rastislav Cernay, Jan Remes,
	Alejandro Lucero, Tetsuya Mukawa, Kiran Kumar K,
	Bruce Richardson, Jasvinder Singh, Cristian Dumitrescu,
	Keith Wiles, Maciej Czekaj, Maxime Coquelin, Tiwei Bie,
	Zhihong Wang, Yong Wang, Tianfei zhang, Xiaoyun Li, Satha Rao,
	Shreyansh Jain, David Hunt, Byron Marohn, Yipeng Wang,
	Thomas Monjalon, Bernard Iremonger, Jiayu Hu, Sameh Gobriel,
	Reshma Pattan, Vladimir Medvedkin, Honnappa Nagarahalli,
	Kevin Laatz, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Merge all vesions in linker version script files to DPDK_20.0.

This commit was generated by running the following command:

:~/DPDK$ buildtools/update-abi.sh 20.0

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |   8 +-
 .../null/rte_pmd_bbdev_null_version.map       |   2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |   2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     | 115 +++----
 drivers/bus/fslmc/rte_bus_fslmc_version.map   | 154 ++++-----
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |  14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |   2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |  12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |  12 +-
 drivers/common/cpt/rte_common_cpt_version.map |   4 +-
 .../common/dpaax/rte_common_dpaax_version.map |   4 +-
 .../common/mvep/rte_common_mvep_version.map   |   6 +-
 .../octeontx/rte_common_octeontx_version.map  |   6 +-
 .../rte_common_octeontx2_version.map          |  16 +-
 .../compress/isal/rte_pmd_isal_version.map    |   2 +-
 .../rte_pmd_octeontx_compress_version.map     |   2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |   2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |   2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |   2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |   2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |   2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |   3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |   3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |  10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |  10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |   2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |   2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |   2 +-
 .../null/rte_pmd_null_crypto_version.map      |   2 +-
 .../rte_pmd_octeontx_crypto_version.map       |   3 +-
 .../openssl/rte_pmd_openssl_version.map       |   2 +-
 .../rte_pmd_crypto_scheduler_version.map      |  19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |   2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |   2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |   2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |   3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |   2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |   2 +-
 .../rte_pmd_octeontx_event_version.map        |   2 +-
 .../rte_pmd_octeontx2_event_version.map       |   3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |   2 +-
 .../rte_pmd_skeleton_event_version.map        |   3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |   2 +-
 .../bucket/rte_mempool_bucket_version.map     |   3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |   2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |  12 +-
 .../octeontx/rte_mempool_octeontx_version.map |   2 +-
 .../rte_mempool_octeontx2_version.map         |   4 +-
 .../mempool/ring/rte_mempool_ring_version.map |   3 +-
 .../stack/rte_mempool_stack_version.map       |   3 +-
 .../af_packet/rte_pmd_af_packet_version.map   |   3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |   2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |   5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |   4 +-
 drivers/net/avp/rte_pmd_avp_version.map       |   2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |   2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |   3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |   4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |  47 +--
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |   3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |  11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |  12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |   3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |   3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |   3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |   3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |   3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |   3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |   3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |   4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |  65 ++--
 drivers/net/iavf/rte_pmd_iavf_version.map     |   3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |   3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |   3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |   3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |  62 ++--
 drivers/net/kni/rte_pmd_kni_version.map       |   3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |   3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |   5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |   3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |   2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |   2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |   2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |   4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |   3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |   2 +-
 drivers/net/null/rte_pmd_null_version.map     |   3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |  10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |   3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |   3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |   3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |  10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |   3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |   2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |   2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |   3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |   3 +-
 .../rte_pmd_vdev_netvsc_version.map           |   3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |  11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |   3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |   3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |   3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |   4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |   3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |   3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |   5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |   3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |   3 +-
 lib/librte_acl/rte_acl_version.map            |   2 +-
 lib/librte_bbdev/rte_bbdev_version.map        |   4 +
 .../rte_bitratestats_version.map              |   2 +-
 lib/librte_bpf/rte_bpf_version.map            |   4 +
 lib/librte_cfgfile/rte_cfgfile_version.map    |  34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |  10 +-
 .../rte_compressdev_version.map               |   4 +
 .../rte_cryptodev_version.map                 | 102 ++----
 .../rte_distributor_version.map               |   4 +-
 lib/librte_eal/rte_eal_version.map            | 310 +++++++-----------
 lib/librte_efd/rte_efd_version.map            |   2 +-
 lib/librte_ethdev/rte_ethdev_version.map      | 160 +++------
 lib/librte_eventdev/rte_eventdev_version.map  | 130 +++-----
 .../rte_flow_classify_version.map             |   4 +
 lib/librte_gro/rte_gro_version.map            |   2 +-
 lib/librte_gso/rte_gso_version.map            |   2 +-
 lib/librte_hash/rte_hash_version.map          |  43 +--
 lib/librte_ip_frag/rte_ip_frag_version.map    |  10 +-
 lib/librte_ipsec/rte_ipsec_version.map        |   4 +
 lib/librte_jobstats/rte_jobstats_version.map  |  10 +-
 lib/librte_kni/rte_kni_version.map            |   2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |   4 +-
 .../rte_latencystats_version.map              |   2 +-
 lib/librte_lpm/rte_lpm_version.map            |  39 +--
 lib/librte_mbuf/rte_mbuf_version.map          |  49 +--
 lib/librte_member/rte_member_version.map      |   2 +-
 lib/librte_mempool/rte_mempool_version.map    |  44 +--
 lib/librte_meter/rte_meter_version.map        |  13 +-
 lib/librte_metrics/rte_metrics_version.map    |   2 +-
 lib/librte_net/rte_net_version.map            |  23 +-
 lib/librte_pci/rte_pci_version.map            |   2 +-
 lib/librte_pdump/rte_pdump_version.map        |   2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |  36 +-
 lib/librte_port/rte_port_version.map          |  64 +---
 lib/librte_power/rte_power_version.map        |  24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |   4 +-
 lib/librte_rcu/rte_rcu_version.map            |   4 +
 lib/librte_reorder/rte_reorder_version.map    |   8 +-
 lib/librte_ring/rte_ring_version.map          |  10 +-
 lib/librte_sched/rte_sched_version.map        |  14 +-
 lib/librte_security/rte_security_version.map  |   2 +-
 lib/librte_stack/rte_stack_version.map        |   4 +
 lib/librte_table/rte_table_version.map        |   2 +-
 .../rte_telemetry_version.map                 |   4 +
 lib/librte_timer/rte_timer_version.map        |  12 +-
 lib/librte_vhost/rte_vhost_version.map        |  52 +--
 154 files changed, 724 insertions(+), 1406 deletions(-)

diff --git a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
index f64b0f9c27..6bcea2cc7f 100644
--- a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
+++ b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
@@ -1,10 +1,10 @@
-DPDK_19.08 {
-    local: *;
+DPDK_20.0 {
+	local: *;
 };
 
 EXPERIMENTAL {
-    global:
+	global:
 
-    fpga_lte_fec_configure;
+	fpga_lte_fec_configure;
 
 };
diff --git a/drivers/baseband/null/rte_pmd_bbdev_null_version.map b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/null/rte_pmd_bbdev_null_version.map
+++ b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
+++ b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map
index a221522c23..9ab8c76eef 100644
--- a/drivers/bus/dpaa/rte_bus_dpaa_version.map
+++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	bman_acquire;
@@ -8,127 +8,94 @@ DPDK_17.11 {
 	bman_new_pool;
 	bman_query_free_buffers;
 	bman_release;
+	bman_thread_irq;
+	dpaa_logtype_eventdev;
 	dpaa_logtype_mempool;
 	dpaa_logtype_pmd;
 	dpaa_netcfg;
+	dpaa_svr_family;
 	fman_ccsr_map_fd;
 	fman_dealloc_bufs_mask_hi;
 	fman_dealloc_bufs_mask_lo;
 	fman_if_add_mac_addr;
 	fman_if_clear_mac_addr;
 	fman_if_disable_rx;
-	fman_if_enable_rx;
 	fman_if_discard_rx_errors;
-	fman_if_get_fc_threshold;
+	fman_if_enable_rx;
 	fman_if_get_fc_quanta;
+	fman_if_get_fc_threshold;
 	fman_if_get_fdoff;
+	fman_if_get_sg_enable;
 	fman_if_loopback_disable;
 	fman_if_loopback_enable;
 	fman_if_promiscuous_disable;
 	fman_if_promiscuous_enable;
 	fman_if_reset_mcast_filter_table;
 	fman_if_set_bp;
-	fman_if_set_fc_threshold;
 	fman_if_set_fc_quanta;
+	fman_if_set_fc_threshold;
 	fman_if_set_fdoff;
 	fman_if_set_ic_params;
 	fman_if_set_maxfrm;
 	fman_if_set_mcast_filter_table;
+	fman_if_set_sg;
 	fman_if_stats_get;
 	fman_if_stats_get_all;
 	fman_if_stats_reset;
 	fman_ip_rev;
+	fsl_qman_fq_portal_create;
 	netcfg_acquire;
 	netcfg_release;
 	of_find_compatible_node;
+	of_get_mac_address;
 	of_get_property;
+	per_lcore_dpaa_io;
+	per_lcore_held_bufs;
 	qm_channel_caam;
+	qm_channel_pool1;
+	qman_alloc_cgrid_range;
+	qman_alloc_pool_range;
+	qman_clear_irq;
+	qman_create_cgr;
 	qman_create_fq;
+	qman_dca_index;
+	qman_delete_cgr;
 	qman_dequeue;
 	qman_dqrr_consume;
 	qman_enqueue;
 	qman_enqueue_multi;
+	qman_enqueue_multi_fq;
 	qman_fq_fqid;
+	qman_fq_portal_irqsource_add;
+	qman_fq_portal_irqsource_remove;
+	qman_fq_portal_thread_irq;
 	qman_fq_state;
 	qman_global_init;
 	qman_init_fq;
-	qman_poll_dqrr;
-	qman_query_fq_np;
-	qman_set_vdq;
-	qman_reserve_fqid_range;
-	qman_volatile_dequeue;
-	rte_dpaa_driver_register;
-	rte_dpaa_driver_unregister;
-	rte_dpaa_mem_ptov;
-	rte_dpaa_portal_init;
-
-	local: *;
-};
-
-DPDK_18.02 {
-	global:
-
-	dpaa_logtype_eventdev;
-	dpaa_svr_family;
-	per_lcore_dpaa_io;
-	per_lcore_held_bufs;
-	qm_channel_pool1;
-	qman_alloc_cgrid_range;
-	qman_alloc_pool_range;
-	qman_create_cgr;
-	qman_dca_index;
-	qman_delete_cgr;
-	qman_enqueue_multi_fq;
+	qman_irqsource_add;
+	qman_irqsource_remove;
 	qman_modify_cgr;
 	qman_oos_fq;
+	qman_poll_dqrr;
 	qman_portal_dequeue;
 	qman_portal_poll_rx;
 	qman_query_fq_frm_cnt;
+	qman_query_fq_np;
 	qman_release_cgrid_range;
+	qman_reserve_fqid_range;
 	qman_retire_fq;
+	qman_set_fq_lookup_table;
+	qman_set_vdq;
 	qman_static_dequeue_add;
-	rte_dpaa_portal_fq_close;
-	rte_dpaa_portal_fq_init;
-
-} DPDK_17.11;
-
-DPDK_18.08 {
-	global:
-
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-	of_get_mac_address;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-
-	bman_thread_irq;
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-	qman_clear_irq;
-
-	qman_irqsource_add;
-	qman_irqsource_remove;
 	qman_thread_fd;
 	qman_thread_irq;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	qman_set_fq_lookup_table;
-
-} DPDK_18.11;
-
-DPDK_19.11 {
-	global:
-
-	fsl_qman_fq_portal_create;
-	qman_fq_portal_irqsource_add;
-	qman_fq_portal_irqsource_remove;
-	qman_fq_portal_thread_irq;
-
-} DPDK_19.05;
+	qman_volatile_dequeue;
+	rte_dpaa_driver_register;
+	rte_dpaa_driver_unregister;
+	rte_dpaa_mem_ptov;
+	rte_dpaa_portal_fq_close;
+	rte_dpaa_portal_fq_init;
+	rte_dpaa_portal_init;
+
+	local: *;
+};
diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map
index 4da787236b..fe45575046 100644
--- a/drivers/bus/fslmc/rte_bus_fslmc_version.map
+++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map
@@ -1,32 +1,67 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
+	dpaa2_affine_qbman_ethrx_swp;
 	dpaa2_affine_qbman_swp;
 	dpaa2_alloc_dpbp_dev;
 	dpaa2_alloc_dq_storage;
+	dpaa2_dpbp_supported;
+	dpaa2_dqrr_size;
+	dpaa2_eqcr_size;
 	dpaa2_free_dpbp_dev;
 	dpaa2_free_dq_storage;
+	dpaa2_free_eq_descriptors;
+	dpaa2_get_qbman_swp;
+	dpaa2_io_portal;
+	dpaa2_svr_family;
+	dpaa2_virt_mode;
 	dpbp_disable;
 	dpbp_enable;
 	dpbp_get_attributes;
 	dpbp_get_num_free_bufs;
 	dpbp_open;
 	dpbp_reset;
+	dpci_get_opr;
+	dpci_set_opr;
+	dpci_set_rx_queue;
+	dpcon_get_attributes;
+	dpcon_open;
+	dpdmai_close;
+	dpdmai_disable;
+	dpdmai_enable;
+	dpdmai_get_attributes;
+	dpdmai_get_rx_queue;
+	dpdmai_get_tx_queue;
+	dpdmai_open;
+	dpdmai_set_rx_queue;
+	dpio_add_static_dequeue_channel;
 	dpio_close;
 	dpio_disable;
 	dpio_enable;
 	dpio_get_attributes;
 	dpio_open;
+	dpio_remove_static_dequeue_channel;
 	dpio_reset;
 	dpio_set_stashing_destination;
+	mc_get_soc_version;
+	mc_get_version;
 	mc_send_command;
 	per_lcore__dpaa2_io;
+	per_lcore_dpaa2_held_bufs;
 	qbman_check_command_complete;
+	qbman_check_new_result;
 	qbman_eq_desc_clear;
+	qbman_eq_desc_set_dca;
 	qbman_eq_desc_set_fq;
 	qbman_eq_desc_set_no_orp;
+	qbman_eq_desc_set_orp;
 	qbman_eq_desc_set_qd;
 	qbman_eq_desc_set_response;
+	qbman_eq_desc_set_token;
+	qbman_fq_query_state;
+	qbman_fq_state_frame_count;
+	qbman_get_dqrr_from_idx;
+	qbman_get_dqrr_idx;
 	qbman_pull_desc_clear;
 	qbman_pull_desc_set_fq;
 	qbman_pull_desc_set_numframes;
@@ -35,112 +70,43 @@ DPDK_17.05 {
 	qbman_release_desc_set_bpid;
 	qbman_result_DQ_fd;
 	qbman_result_DQ_flags;
-	qbman_result_has_new_result;
-	qbman_swp_acquire;
-	qbman_swp_pull;
-	qbman_swp_release;
-	rte_fslmc_driver_register;
-	rte_fslmc_driver_unregister;
-	rte_fslmc_vfio_dmamap;
-	rte_mcp_ptr_list;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	dpaa2_io_portal;
-	dpaa2_get_qbman_swp;
-	dpci_set_rx_queue;
-	dpcon_open;
-	dpcon_get_attributes;
-	dpio_add_static_dequeue_channel;
-	dpio_remove_static_dequeue_channel;
-	mc_get_soc_version;
-	mc_get_version;
-	qbman_check_new_result;
-	qbman_eq_desc_set_dca;
-	qbman_get_dqrr_from_idx;
-	qbman_get_dqrr_idx;
 	qbman_result_DQ_fqd_ctx;
+	qbman_result_DQ_odpid;
+	qbman_result_DQ_seqnum;
 	qbman_result_SCN_state;
+	qbman_result_eqresp_fd;
+	qbman_result_eqresp_rc;
+	qbman_result_eqresp_rspid;
+	qbman_result_eqresp_set_rspid;
+	qbman_result_has_new_result;
+	qbman_swp_acquire;
 	qbman_swp_dqrr_consume;
+	qbman_swp_dqrr_idx_consume;
 	qbman_swp_dqrr_next;
 	qbman_swp_enqueue_multiple;
 	qbman_swp_enqueue_multiple_desc;
+	qbman_swp_enqueue_multiple_fd;
 	qbman_swp_interrupt_clear_status;
+	qbman_swp_prefetch_dqrr_next;
+	qbman_swp_pull;
 	qbman_swp_push_set;
+	qbman_swp_release;
 	rte_dpaa2_alloc_dpci_dev;
-	rte_fslmc_object_register;
-	rte_global_active_dqs_list;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	dpaa2_dpbp_supported;
 	rte_dpaa2_dev_type;
+	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_intr_disable;
 	rte_dpaa2_intr_enable;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	dpaa2_svr_family;
-	dpaa2_virt_mode;
-	per_lcore_dpaa2_held_bufs;
-	qbman_fq_query_state;
-	qbman_fq_state_frame_count;
-	qbman_swp_dqrr_idx_consume;
-	qbman_swp_prefetch_dqrr_next;
-	rte_fslmc_get_device_count;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	dpaa2_affine_qbman_ethrx_swp;
-	dpdmai_close;
-	dpdmai_disable;
-	dpdmai_enable;
-	dpdmai_get_attributes;
-	dpdmai_get_rx_queue;
-	dpdmai_get_tx_queue;
-	dpdmai_open;
-	dpdmai_set_rx_queue;
-	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_memsegs;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-	dpaa2_dqrr_size;
-	dpaa2_eqcr_size;
-	dpci_get_opr;
-	dpci_set_opr;
-
-} DPDK_18.05;
-
-DPDK_19.05 {
-	global:
-	dpaa2_free_eq_descriptors;
-
-	qbman_eq_desc_set_orp;
-	qbman_eq_desc_set_token;
-	qbman_result_DQ_odpid;
-	qbman_result_DQ_seqnum;
-	qbman_result_eqresp_fd;
-	qbman_result_eqresp_rc;
-	qbman_result_eqresp_rspid;
-	qbman_result_eqresp_set_rspid;
-	qbman_swp_enqueue_multiple_fd;
-} DPDK_18.11;
+	rte_fslmc_driver_register;
+	rte_fslmc_driver_unregister;
+	rte_fslmc_get_device_count;
+	rte_fslmc_object_register;
+	rte_fslmc_vfio_dmamap;
+	rte_global_active_dqs_list;
+	rte_mcp_ptr_list;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/bus/ifpga/rte_bus_ifpga_version.map b/drivers/bus/ifpga/rte_bus_ifpga_version.map
index 964c9a9c45..05b4a28c1b 100644
--- a/drivers/bus/ifpga/rte_bus_ifpga_version.map
+++ b/drivers/bus/ifpga/rte_bus_ifpga_version.map
@@ -1,17 +1,11 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
-	rte_ifpga_get_integer32_arg;
-	rte_ifpga_get_string_arg;
 	rte_ifpga_driver_register;
 	rte_ifpga_driver_unregister;
+	rte_ifpga_find_afu_by_name;
+	rte_ifpga_get_integer32_arg;
+	rte_ifpga_get_string_arg;
 
 	local: *;
 };
-
-DPDK_19.05 {
-	global:
-
-	rte_ifpga_find_afu_by_name;
-
-} DPDK_18.05;
diff --git a/drivers/bus/pci/rte_bus_pci_version.map b/drivers/bus/pci/rte_bus_pci_version.map
index 27e9c4f101..012d817e14 100644
--- a/drivers/bus/pci/rte_bus_pci_version.map
+++ b/drivers/bus/pci/rte_bus_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pci_dump;
diff --git a/drivers/bus/vdev/rte_bus_vdev_version.map b/drivers/bus/vdev/rte_bus_vdev_version.map
index 590cf9b437..5abb10ecb0 100644
--- a/drivers/bus/vdev/rte_bus_vdev_version.map
+++ b/drivers/bus/vdev/rte_bus_vdev_version.map
@@ -1,18 +1,12 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
+	rte_vdev_add_custom_scan;
 	rte_vdev_init;
 	rte_vdev_register;
+	rte_vdev_remove_custom_scan;
 	rte_vdev_uninit;
 	rte_vdev_unregister;
 
 	local: *;
 };
-
-DPDK_18.02 {
-	global:
-
-	rte_vdev_add_custom_scan;
-	rte_vdev_remove_custom_scan;
-
-} DPDK_17.11;
diff --git a/drivers/bus/vmbus/rte_bus_vmbus_version.map b/drivers/bus/vmbus/rte_bus_vmbus_version.map
index ae231ad329..cbaaebc06c 100644
--- a/drivers/bus/vmbus/rte_bus_vmbus_version.map
+++ b/drivers/bus/vmbus/rte_bus_vmbus_version.map
@@ -1,6 +1,4 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_vmbus_chan_close;
@@ -20,6 +18,7 @@ DPDK_18.08 {
 	rte_vmbus_probe;
 	rte_vmbus_register;
 	rte_vmbus_scan;
+	rte_vmbus_set_latency;
 	rte_vmbus_sub_channel_index;
 	rte_vmbus_subchan_open;
 	rte_vmbus_unmap_device;
@@ -27,10 +26,3 @@ DPDK_18.08 {
 
 	local: *;
 };
-
-DPDK_18.11 {
-	global:
-
-	rte_vmbus_set_latency;
-
-} DPDK_18.08;
diff --git a/drivers/common/cpt/rte_common_cpt_version.map b/drivers/common/cpt/rte_common_cpt_version.map
index dec614f0de..79fa5751bc 100644
--- a/drivers/common/cpt/rte_common_cpt_version.map
+++ b/drivers/common/cpt/rte_common_cpt_version.map
@@ -1,6 +1,8 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	cpt_pmd_ops_helper_get_mlen_direct_mode;
 	cpt_pmd_ops_helper_get_mlen_sg_mode;
+
+	local: *;
 };
diff --git a/drivers/common/dpaax/rte_common_dpaax_version.map b/drivers/common/dpaax/rte_common_dpaax_version.map
index 8131c9e305..45d62aea9d 100644
--- a/drivers/common/dpaax/rte_common_dpaax_version.map
+++ b/drivers/common/dpaax/rte_common_dpaax_version.map
@@ -1,11 +1,11 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	dpaax_iova_table_update;
 	dpaax_iova_table_depopulate;
 	dpaax_iova_table_dump;
 	dpaax_iova_table_p;
 	dpaax_iova_table_populate;
+	dpaax_iova_table_update;
 
 	local: *;
 };
diff --git a/drivers/common/mvep/rte_common_mvep_version.map b/drivers/common/mvep/rte_common_mvep_version.map
index c71722d79f..030928439d 100644
--- a/drivers/common/mvep/rte_common_mvep_version.map
+++ b/drivers/common/mvep/rte_common_mvep_version.map
@@ -1,6 +1,8 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	rte_mvep_init;
 	rte_mvep_deinit;
+	rte_mvep_init;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index a9b3cff9bc..c15fb89112 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,8 +1,10 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
 	octeontx_logtype_mbox;
+	octeontx_mbox_send;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
-	octeontx_mbox_send;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx2/rte_common_octeontx2_version.map b/drivers/common/octeontx2/rte_common_octeontx2_version.map
index 4400120da0..adad21a2d6 100644
--- a/drivers/common/octeontx2/rte_common_octeontx2_version.map
+++ b/drivers/common/octeontx2/rte_common_octeontx2_version.map
@@ -1,39 +1,35 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	otx2_dev_active_vfs;
 	otx2_dev_fini;
 	otx2_dev_priv_init;
-
+	otx2_disable_irqs;
+	otx2_intra_dev_get_cfg;
 	otx2_logtype_base;
 	otx2_logtype_dpi;
 	otx2_logtype_mbox;
+	otx2_logtype_nix;
 	otx2_logtype_npa;
 	otx2_logtype_npc;
-	otx2_logtype_nix;
 	otx2_logtype_sso;
-	otx2_logtype_tm;
 	otx2_logtype_tim;
-
+	otx2_logtype_tm;
 	otx2_mbox_alloc_msg_rsp;
 	otx2_mbox_get_rsp;
 	otx2_mbox_get_rsp_tmo;
 	otx2_mbox_id2name;
 	otx2_mbox_msg_send;
 	otx2_mbox_wait_for_rsp;
-
-	otx2_intra_dev_get_cfg;
 	otx2_npa_lf_active;
 	otx2_npa_lf_obj_get;
 	otx2_npa_lf_obj_ref;
 	otx2_npa_pf_func_get;
 	otx2_npa_set_defaults;
+	otx2_register_irq;
 	otx2_sso_pf_func_get;
 	otx2_sso_pf_func_set;
-
-	otx2_disable_irqs;
 	otx2_unregister_irq;
-	otx2_register_irq;
 
 	local: *;
 };
diff --git a/drivers/compress/isal/rte_pmd_isal_version.map b/drivers/compress/isal/rte_pmd_isal_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/compress/isal/rte_pmd_isal_version.map
+++ b/drivers/compress/isal/rte_pmd_isal_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
+++ b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/qat/rte_pmd_qat_version.map b/drivers/compress/qat/rte_pmd_qat_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/qat/rte_pmd_qat_version.map
+++ b/drivers/compress/qat/rte_pmd_qat_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/zlib/rte_pmd_zlib_version.map b/drivers/compress/zlib/rte_pmd_zlib_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/zlib/rte_pmd_zlib_version.map
+++ b/drivers/compress/zlib/rte_pmd_zlib_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
+++ b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
+++ b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/armv8/rte_pmd_armv8_version.map b/drivers/crypto/armv8/rte_pmd_armv8_version.map
index 1f84b68a83..f9f17e4f6e 100644
--- a/drivers/crypto/armv8/rte_pmd_armv8_version.map
+++ b/drivers/crypto/armv8/rte_pmd_armv8_version.map
@@ -1,3 +1,3 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
+++ b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/ccp/rte_pmd_ccp_version.map b/drivers/crypto/ccp/rte_pmd_ccp_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/crypto/ccp/rte_pmd_ccp_version.map
+++ b/drivers/crypto/ccp/rte_pmd_ccp_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
index 0bfb986d0b..5952d645fd 100644
--- a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
+++ b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_sec_eventq_attach;
 	dpaa2_sec_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
index cc7f2162e0..8580fa13db 100644
--- a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
+++ b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_19.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa_sec_eventq_attach;
 	dpaa_sec_eventq_detach;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
index 8ffeca934e..f9f17e4f6e 100644
--- a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
+++ b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
@@ -1,3 +1,3 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
+++ b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
index 406964d1fc..f9f17e4f6e 100644
--- a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
+++ b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/null/rte_pmd_null_crypto_version.map b/drivers/crypto/null/rte_pmd_null_crypto_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/null/rte_pmd_null_crypto_version.map
+++ b/drivers/crypto/null/rte_pmd_null_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
+++ b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/openssl/rte_pmd_openssl_version.map b/drivers/crypto/openssl/rte_pmd_openssl_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/openssl/rte_pmd_openssl_version.map
+++ b/drivers/crypto/openssl/rte_pmd_openssl_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
index 5c43127cf2..077afedce7 100644
--- a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
+++ b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
@@ -1,21 +1,16 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_cryptodev_scheduler_load_user_scheduler;
-	rte_cryptodev_scheduler_slave_attach;
-	rte_cryptodev_scheduler_slave_detach;
-	rte_cryptodev_scheduler_ordering_set;
-	rte_cryptodev_scheduler_ordering_get;
-
-};
-
-DPDK_17.05 {
-	global:
-
 	rte_cryptodev_scheduler_mode_get;
 	rte_cryptodev_scheduler_mode_set;
 	rte_cryptodev_scheduler_option_get;
 	rte_cryptodev_scheduler_option_set;
+	rte_cryptodev_scheduler_ordering_get;
+	rte_cryptodev_scheduler_ordering_set;
+	rte_cryptodev_scheduler_slave_attach;
+	rte_cryptodev_scheduler_slave_detach;
 	rte_cryptodev_scheduler_slaves_get;
 
-} DPDK_17.02;
+	local: *;
+};
diff --git a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
+++ b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
+++ b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/zuc/rte_pmd_zuc_version.map b/drivers/crypto/zuc/rte_pmd_zuc_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/zuc/rte_pmd_zuc_version.map
+++ b/drivers/crypto/zuc/rte_pmd_zuc_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
+++ b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
index 1c0b7559dc..f9f17e4f6e 100644
--- a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
+++ b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dsw/rte_pmd_dsw_event_version.map b/drivers/event/dsw/rte_pmd_dsw_event_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/event/dsw/rte_pmd_dsw_event_version.map
+++ b/drivers/event/dsw/rte_pmd_dsw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
+++ b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
index 41c65c8c9c..f9f17e4f6e 100644
--- a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
+++ b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	local: *;
 };
-
diff --git a/drivers/event/opdl/rte_pmd_opdl_event_version.map b/drivers/event/opdl/rte_pmd_opdl_event_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/event/opdl/rte_pmd_opdl_event_version.map
+++ b/drivers/event/opdl/rte_pmd_opdl_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
+++ b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/sw/rte_pmd_sw_event_version.map b/drivers/event/sw/rte_pmd_sw_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/sw/rte_pmd_sw_event_version.map
+++ b/drivers/event/sw/rte_pmd_sw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/bucket/rte_mempool_bucket_version.map b/drivers/mempool/bucket/rte_mempool_bucket_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/mempool/bucket/rte_mempool_bucket_version.map
+++ b/drivers/mempool/bucket/rte_mempool_bucket_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
index 60bf50b2d1..9eebaf7ffd 100644
--- a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
+++ b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa_bpid_info;
diff --git a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
index b45e7a9ac1..cd4bc88273 100644
--- a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
+++ b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
@@ -1,16 +1,10 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa2_bpid_info;
 	rte_dpaa2_mbuf_alloc_bulk;
-
-	local: *;
-};
-
-DPDK_18.05 {
-	global:
-
 	rte_dpaa2_mbuf_from_buf_addr;
 	rte_dpaa2_mbuf_pool_bpid;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
+++ b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
index d703368c31..d4f81aed8e 100644
--- a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
+++ b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
@@ -1,8 +1,8 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
-	otx2_npa_lf_init;
 	otx2_npa_lf_fini;
+	otx2_npa_lf_init;
 
 	local: *;
 };
diff --git a/drivers/mempool/ring/rte_mempool_ring_version.map b/drivers/mempool/ring/rte_mempool_ring_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/ring/rte_mempool_ring_version.map
+++ b/drivers/mempool/ring/rte_mempool_ring_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/stack/rte_mempool_stack_version.map b/drivers/mempool/stack/rte_mempool_stack_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/stack/rte_mempool_stack_version.map
+++ b/drivers/mempool/stack/rte_mempool_stack_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_packet/rte_pmd_af_packet_version.map b/drivers/net/af_packet/rte_pmd_af_packet_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/af_packet/rte_pmd_af_packet_version.map
+++ b/drivers/net/af_packet/rte_pmd_af_packet_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
index c6db030fe6..f9f17e4f6e 100644
--- a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
+++ b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
@@ -1,3 +1,3 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ark/rte_pmd_ark_version.map b/drivers/net/ark/rte_pmd_ark_version.map
index 1062e0429f..f9f17e4f6e 100644
--- a/drivers/net/ark/rte_pmd_ark_version.map
+++ b/drivers/net/ark/rte_pmd_ark_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-	 local: *;
-
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/atlantic/rte_pmd_atlantic_version.map b/drivers/net/atlantic/rte_pmd_atlantic_version.map
index b16faa999f..9b04838d84 100644
--- a/drivers/net/atlantic/rte_pmd_atlantic_version.map
+++ b/drivers/net/atlantic/rte_pmd_atlantic_version.map
@@ -1,5 +1,4 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
 
@@ -13,4 +12,3 @@ EXPERIMENTAL {
 	rte_pmd_atl_macsec_select_txsa;
 	rte_pmd_atl_macsec_select_rxsa;
 };
-
diff --git a/drivers/net/avp/rte_pmd_avp_version.map b/drivers/net/avp/rte_pmd_avp_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/net/avp/rte_pmd_avp_version.map
+++ b/drivers/net/avp/rte_pmd_avp_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/axgbe/rte_pmd_axgbe_version.map b/drivers/net/axgbe/rte_pmd_axgbe_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/net/axgbe/rte_pmd_axgbe_version.map
+++ b/drivers/net/axgbe/rte_pmd_axgbe_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
+++ b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnxt/rte_pmd_bnxt_version.map b/drivers/net/bnxt/rte_pmd_bnxt_version.map
index 4750d40ad6..bb52562347 100644
--- a/drivers/net/bnxt/rte_pmd_bnxt_version.map
+++ b/drivers/net/bnxt/rte_pmd_bnxt_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_bnxt_get_vf_rx_status;
@@ -10,13 +10,13 @@ DPDK_17.08 {
 	rte_pmd_bnxt_set_tx_loopback;
 	rte_pmd_bnxt_set_vf_mac_addr;
 	rte_pmd_bnxt_set_vf_mac_anti_spoof;
+	rte_pmd_bnxt_set_vf_persist_stats;
 	rte_pmd_bnxt_set_vf_rate_limit;
 	rte_pmd_bnxt_set_vf_rxmode;
 	rte_pmd_bnxt_set_vf_vlan_anti_spoof;
 	rte_pmd_bnxt_set_vf_vlan_filter;
 	rte_pmd_bnxt_set_vf_vlan_insert;
 	rte_pmd_bnxt_set_vf_vlan_stripq;
-	rte_pmd_bnxt_set_vf_persist_stats;
 
 	local: *;
 };
diff --git a/drivers/net/bonding/rte_pmd_bond_version.map b/drivers/net/bonding/rte_pmd_bond_version.map
index 00d955c481..270c7d5d55 100644
--- a/drivers/net/bonding/rte_pmd_bond_version.map
+++ b/drivers/net/bonding/rte_pmd_bond_version.map
@@ -1,9 +1,21 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_bond_8023ad_agg_selection_get;
+	rte_eth_bond_8023ad_agg_selection_set;
+	rte_eth_bond_8023ad_conf_get;
+	rte_eth_bond_8023ad_dedicated_queues_disable;
+	rte_eth_bond_8023ad_dedicated_queues_enable;
+	rte_eth_bond_8023ad_ext_collect;
+	rte_eth_bond_8023ad_ext_collect_get;
+	rte_eth_bond_8023ad_ext_distrib;
+	rte_eth_bond_8023ad_ext_distrib_get;
+	rte_eth_bond_8023ad_ext_slowtx;
+	rte_eth_bond_8023ad_setup;
 	rte_eth_bond_8023ad_slave_info;
 	rte_eth_bond_active_slaves_get;
 	rte_eth_bond_create;
+	rte_eth_bond_free;
 	rte_eth_bond_link_monitoring_set;
 	rte_eth_bond_mac_address_reset;
 	rte_eth_bond_mac_address_set;
@@ -19,36 +31,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	rte_eth_bond_free;
-
-} DPDK_2.0;
-
-DPDK_16.04 {
-};
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_bond_8023ad_ext_collect;
-	rte_eth_bond_8023ad_ext_collect_get;
-	rte_eth_bond_8023ad_ext_distrib;
-	rte_eth_bond_8023ad_ext_distrib_get;
-	rte_eth_bond_8023ad_ext_slowtx;
-
-} DPDK_16.04;
-
-DPDK_17.08 {
-	global:
-
-	rte_eth_bond_8023ad_dedicated_queues_enable;
-	rte_eth_bond_8023ad_dedicated_queues_disable;
-	rte_eth_bond_8023ad_agg_selection_get;
-	rte_eth_bond_8023ad_agg_selection_set;
-	rte_eth_bond_8023ad_conf_get;
-	rte_eth_bond_8023ad_setup;
-
-} DPDK_16.07;
diff --git a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
+++ b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/dpaa/rte_pmd_dpaa_version.map b/drivers/net/dpaa/rte_pmd_dpaa_version.map
index 8cb4500b51..f403a1526d 100644
--- a/drivers/net/dpaa/rte_pmd_dpaa_version.map
+++ b/drivers/net/dpaa/rte_pmd_dpaa_version.map
@@ -1,12 +1,9 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	dpaa_eth_eventq_attach;
 	dpaa_eth_eventq_detach;
 	rte_pmd_dpaa_set_tx_loopback;
-} DPDK_17.11;
+
+	local: *;
+};
diff --git a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
index d1b4cdb232..f2bb793319 100644
--- a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
+++ b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
@@ -1,15 +1,11 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_eth_eventq_attach;
 	dpaa2_eth_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
@@ -17,4 +13,4 @@ EXPERIMENTAL {
 	rte_pmd_dpaa2_mux_flow_create;
 	rte_pmd_dpaa2_set_custom_hash;
 	rte_pmd_dpaa2_set_timestamp;
-} DPDK_17.11;
+};
diff --git a/drivers/net/e1000/rte_pmd_e1000_version.map b/drivers/net/e1000/rte_pmd_e1000_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/e1000/rte_pmd_e1000_version.map
+++ b/drivers/net/e1000/rte_pmd_e1000_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ena/rte_pmd_ena_version.map b/drivers/net/ena/rte_pmd_ena_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/ena/rte_pmd_ena_version.map
+++ b/drivers/net/ena/rte_pmd_ena_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enetc/rte_pmd_enetc_version.map b/drivers/net/enetc/rte_pmd_enetc_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/net/enetc/rte_pmd_enetc_version.map
+++ b/drivers/net/enetc/rte_pmd_enetc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enic/rte_pmd_enic_version.map b/drivers/net/enic/rte_pmd_enic_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/enic/rte_pmd_enic_version.map
+++ b/drivers/net/enic/rte_pmd_enic_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/failsafe/rte_pmd_failsafe_version.map b/drivers/net/failsafe/rte_pmd_failsafe_version.map
index b6d2840be4..f9f17e4f6e 100644
--- a/drivers/net/failsafe/rte_pmd_failsafe_version.map
+++ b/drivers/net/failsafe/rte_pmd_failsafe_version.map
@@ -1,4 +1,3 @@
-DPDK_17.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/fm10k/rte_pmd_fm10k_version.map b/drivers/net/fm10k/rte_pmd_fm10k_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/fm10k/rte_pmd_fm10k_version.map
+++ b/drivers/net/fm10k/rte_pmd_fm10k_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hinic/rte_pmd_hinic_version.map b/drivers/net/hinic/rte_pmd_hinic_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/hinic/rte_pmd_hinic_version.map
+++ b/drivers/net/hinic/rte_pmd_hinic_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map b/drivers/net/hns3/rte_pmd_hns3_version.map
index 35e5f2debb..f9f17e4f6e 100644
--- a/drivers/net/hns3/rte_pmd_hns3_version.map
+++ b/drivers/net/hns3/rte_pmd_hns3_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
-	 local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/i40e/rte_pmd_i40e_version.map b/drivers/net/i40e/rte_pmd_i40e_version.map
index cccd5768c2..a80e69b93e 100644
--- a/drivers/net/i40e/rte_pmd_i40e_version.map
+++ b/drivers/net/i40e/rte_pmd_i40e_version.map
@@ -1,23 +1,34 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_i40e_add_vf_mac_addr;
+	rte_pmd_i40e_flow_add_del_packet_template;
+	rte_pmd_i40e_flow_type_mapping_get;
+	rte_pmd_i40e_flow_type_mapping_reset;
+	rte_pmd_i40e_flow_type_mapping_update;
+	rte_pmd_i40e_get_ddp_info;
+	rte_pmd_i40e_get_ddp_list;
 	rte_pmd_i40e_get_vf_stats;
+	rte_pmd_i40e_inset_get;
+	rte_pmd_i40e_inset_set;
 	rte_pmd_i40e_ping_vfs;
+	rte_pmd_i40e_process_ddp_package;
 	rte_pmd_i40e_ptype_mapping_get;
 	rte_pmd_i40e_ptype_mapping_replace;
 	rte_pmd_i40e_ptype_mapping_reset;
 	rte_pmd_i40e_ptype_mapping_update;
+	rte_pmd_i40e_query_vfid_by_mac;
 	rte_pmd_i40e_reset_vf_stats;
+	rte_pmd_i40e_rss_queue_region_conf;
+	rte_pmd_i40e_set_tc_strict_prio;
 	rte_pmd_i40e_set_tx_loopback;
 	rte_pmd_i40e_set_vf_broadcast;
 	rte_pmd_i40e_set_vf_mac_addr;
 	rte_pmd_i40e_set_vf_mac_anti_spoof;
+	rte_pmd_i40e_set_vf_max_bw;
 	rte_pmd_i40e_set_vf_multicast_promisc;
+	rte_pmd_i40e_set_vf_tc_bw_alloc;
+	rte_pmd_i40e_set_vf_tc_max_bw;
 	rte_pmd_i40e_set_vf_unicast_promisc;
 	rte_pmd_i40e_set_vf_vlan_anti_spoof;
 	rte_pmd_i40e_set_vf_vlan_filter;
@@ -25,43 +36,5 @@ DPDK_17.02 {
 	rte_pmd_i40e_set_vf_vlan_stripq;
 	rte_pmd_i40e_set_vf_vlan_tag;
 
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_pmd_i40e_set_tc_strict_prio;
-	rte_pmd_i40e_set_vf_max_bw;
-	rte_pmd_i40e_set_vf_tc_bw_alloc;
-	rte_pmd_i40e_set_vf_tc_max_bw;
-	rte_pmd_i40e_process_ddp_package;
-	rte_pmd_i40e_get_ddp_list;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_i40e_get_ddp_info;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_pmd_i40e_add_vf_mac_addr;
-	rte_pmd_i40e_flow_add_del_packet_template;
-	rte_pmd_i40e_flow_type_mapping_update;
-	rte_pmd_i40e_flow_type_mapping_get;
-	rte_pmd_i40e_flow_type_mapping_reset;
-	rte_pmd_i40e_query_vfid_by_mac;
-	rte_pmd_i40e_rss_queue_region_conf;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_pmd_i40e_inset_get;
-	rte_pmd_i40e_inset_set;
-} DPDK_17.11;
\ No newline at end of file
+	local: *;
+};
diff --git a/drivers/net/iavf/rte_pmd_iavf_version.map b/drivers/net/iavf/rte_pmd_iavf_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/iavf/rte_pmd_iavf_version.map
+++ b/drivers/net/iavf/rte_pmd_iavf_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ice/rte_pmd_ice_version.map b/drivers/net/ice/rte_pmd_ice_version.map
index 7b23b609da..f9f17e4f6e 100644
--- a/drivers/net/ice/rte_pmd_ice_version.map
+++ b/drivers/net/ice/rte_pmd_ice_version.map
@@ -1,4 +1,3 @@
-DPDK_19.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ifc/rte_pmd_ifc_version.map b/drivers/net/ifc/rte_pmd_ifc_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/net/ifc/rte_pmd_ifc_version.map
+++ b/drivers/net/ifc/rte_pmd_ifc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
+++ b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
index c814f96d72..21534dbc3d 100644
--- a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
+++ b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
-	rte_pmd_ixgbe_set_all_queues_drop_en;
-	rte_pmd_ixgbe_set_tx_loopback;
-	rte_pmd_ixgbe_set_vf_mac_addr;
-	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
-	rte_pmd_ixgbe_set_vf_split_drop_en;
-	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
-	rte_pmd_ixgbe_set_vf_vlan_insert;
-	rte_pmd_ixgbe_set_vf_vlan_stripq;
-} DPDK_2.0;
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_ixgbe_bypass_event_show;
+	rte_pmd_ixgbe_bypass_event_store;
+	rte_pmd_ixgbe_bypass_init;
+	rte_pmd_ixgbe_bypass_state_set;
+	rte_pmd_ixgbe_bypass_state_show;
+	rte_pmd_ixgbe_bypass_ver_show;
+	rte_pmd_ixgbe_bypass_wd_reset;
+	rte_pmd_ixgbe_bypass_wd_timeout_show;
+	rte_pmd_ixgbe_bypass_wd_timeout_store;
 	rte_pmd_ixgbe_macsec_config_rxsc;
 	rte_pmd_ixgbe_macsec_config_txsc;
 	rte_pmd_ixgbe_macsec_disable;
 	rte_pmd_ixgbe_macsec_enable;
 	rte_pmd_ixgbe_macsec_select_rxsa;
 	rte_pmd_ixgbe_macsec_select_txsa;
+	rte_pmd_ixgbe_ping_vf;
+	rte_pmd_ixgbe_set_all_queues_drop_en;
+	rte_pmd_ixgbe_set_tc_bw_alloc;
+	rte_pmd_ixgbe_set_tx_loopback;
+	rte_pmd_ixgbe_set_vf_mac_addr;
+	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
 	rte_pmd_ixgbe_set_vf_rate_limit;
 	rte_pmd_ixgbe_set_vf_rx;
 	rte_pmd_ixgbe_set_vf_rxmode;
+	rte_pmd_ixgbe_set_vf_split_drop_en;
 	rte_pmd_ixgbe_set_vf_tx;
+	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
 	rte_pmd_ixgbe_set_vf_vlan_filter;
-} DPDK_16.11;
+	rte_pmd_ixgbe_set_vf_vlan_insert;
+	rte_pmd_ixgbe_set_vf_vlan_stripq;
 
-DPDK_17.05 {
-	global:
-
-	rte_pmd_ixgbe_ping_vf;
-	rte_pmd_ixgbe_set_tc_bw_alloc;
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_ixgbe_bypass_event_show;
-	rte_pmd_ixgbe_bypass_event_store;
-	rte_pmd_ixgbe_bypass_init;
-	rte_pmd_ixgbe_bypass_state_set;
-	rte_pmd_ixgbe_bypass_state_show;
-	rte_pmd_ixgbe_bypass_ver_show;
-	rte_pmd_ixgbe_bypass_wd_reset;
-	rte_pmd_ixgbe_bypass_wd_timeout_show;
-	rte_pmd_ixgbe_bypass_wd_timeout_store;
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/net/kni/rte_pmd_kni_version.map b/drivers/net/kni/rte_pmd_kni_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/kni/rte_pmd_kni_version.map
+++ b/drivers/net/kni/rte_pmd_kni_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/liquidio/rte_pmd_liquidio_version.map b/drivers/net/liquidio/rte_pmd_liquidio_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/liquidio/rte_pmd_liquidio_version.map
+++ b/drivers/net/liquidio/rte_pmd_liquidio_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/memif/rte_pmd_memif_version.map b/drivers/net/memif/rte_pmd_memif_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/net/memif/rte_pmd_memif_version.map
+++ b/drivers/net/memif/rte_pmd_memif_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/mlx4/rte_pmd_mlx4_version.map b/drivers/net/mlx4/rte_pmd_mlx4_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/mlx4/rte_pmd_mlx4_version.map
+++ b/drivers/net/mlx4/rte_pmd_mlx4_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mlx5/rte_pmd_mlx5_version.map b/drivers/net/mlx5/rte_pmd_mlx5_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/mlx5/rte_pmd_mlx5_version.map
+++ b/drivers/net/mlx5/rte_pmd_mlx5_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvneta/rte_pmd_mvneta_version.map b/drivers/net/mvneta/rte_pmd_mvneta_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/net/mvneta/rte_pmd_mvneta_version.map
+++ b/drivers/net/mvneta/rte_pmd_mvneta_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
+++ b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/netvsc/rte_pmd_netvsc_version.map b/drivers/net/netvsc/rte_pmd_netvsc_version.map
index d534019a6b..f9f17e4f6e 100644
--- a/drivers/net/netvsc/rte_pmd_netvsc_version.map
+++ b/drivers/net/netvsc/rte_pmd_netvsc_version.map
@@ -1,5 +1,3 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfb/rte_pmd_nfb_version.map b/drivers/net/nfb/rte_pmd_nfb_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/nfb/rte_pmd_nfb_version.map
+++ b/drivers/net/nfb/rte_pmd_nfb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfp/rte_pmd_nfp_version.map b/drivers/net/nfp/rte_pmd_nfp_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/nfp/rte_pmd_nfp_version.map
+++ b/drivers/net/nfp/rte_pmd_nfp_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/null/rte_pmd_null_version.map b/drivers/net/null/rte_pmd_null_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/null/rte_pmd_null_version.map
+++ b/drivers/net/null/rte_pmd_null_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/octeontx/rte_pmd_octeontx_version.map b/drivers/net/octeontx/rte_pmd_octeontx_version.map
index a3161b14d0..f7cae02fac 100644
--- a/drivers/net/octeontx/rte_pmd_octeontx_version.map
+++ b/drivers/net/octeontx/rte_pmd_octeontx_version.map
@@ -1,11 +1,7 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.02 {
+DPDK_20.0 {
 	global:
 
 	rte_octeontx_pchan_map;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
+++ b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/pcap/rte_pmd_pcap_version.map b/drivers/net/pcap/rte_pmd_pcap_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/pcap/rte_pmd_pcap_version.map
+++ b/drivers/net/pcap/rte_pmd_pcap_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/qede/rte_pmd_qede_version.map b/drivers/net/qede/rte_pmd_qede_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/qede/rte_pmd_qede_version.map
+++ b/drivers/net/qede/rte_pmd_qede_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ring/rte_pmd_ring_version.map b/drivers/net/ring/rte_pmd_ring_version.map
index 1f785d9409..ebb6be2733 100644
--- a/drivers/net/ring/rte_pmd_ring_version.map
+++ b/drivers/net/ring/rte_pmd_ring_version.map
@@ -1,14 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_from_ring;
 	rte_eth_from_rings;
 
 	local: *;
 };
-
-DPDK_2.2 {
-	global:
-
-	rte_eth_from_ring;
-
-} DPDK_2.0;
diff --git a/drivers/net/sfc/rte_pmd_sfc_version.map b/drivers/net/sfc/rte_pmd_sfc_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/sfc/rte_pmd_sfc_version.map
+++ b/drivers/net/sfc/rte_pmd_sfc_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/softnic/rte_pmd_softnic_version.map b/drivers/net/softnic/rte_pmd_softnic_version.map
index bc44b06f98..50f113d5a2 100644
--- a/drivers/net/softnic/rte_pmd_softnic_version.map
+++ b/drivers/net/softnic/rte_pmd_softnic_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_softnic_run;
diff --git a/drivers/net/szedata2/rte_pmd_szedata2_version.map b/drivers/net/szedata2/rte_pmd_szedata2_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/szedata2/rte_pmd_szedata2_version.map
+++ b/drivers/net/szedata2/rte_pmd_szedata2_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/tap/rte_pmd_tap_version.map b/drivers/net/tap/rte_pmd_tap_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/tap/rte_pmd_tap_version.map
+++ b/drivers/net/tap/rte_pmd_tap_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/thunderx/rte_pmd_thunderx_version.map b/drivers/net/thunderx/rte_pmd_thunderx_version.map
index 1901bcb3b3..f9f17e4f6e 100644
--- a/drivers/net/thunderx/rte_pmd_thunderx_version.map
+++ b/drivers/net/thunderx/rte_pmd_thunderx_version.map
@@ -1,4 +1,3 @@
-DPDK_16.07 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
+++ b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vhost/rte_pmd_vhost_version.map b/drivers/net/vhost/rte_pmd_vhost_version.map
index 695db85749..16b591ccc4 100644
--- a/drivers/net/vhost/rte_pmd_vhost_version.map
+++ b/drivers/net/vhost/rte_pmd_vhost_version.map
@@ -1,13 +1,8 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_vhost_get_queue_event;
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
 	rte_eth_vhost_get_vid_from_port_id;
+
+	local: *;
 };
diff --git a/drivers/net/virtio/rte_pmd_virtio_version.map b/drivers/net/virtio/rte_pmd_virtio_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/virtio/rte_pmd_virtio_version.map
+++ b/drivers/net/virtio/rte_pmd_virtio_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
+++ b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
+++ b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
index d16a136fc8..ca6a0d7626 100644
--- a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
+++ b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
@@ -1,4 +1,4 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	global:
 
 	rte_qdma_attr_get;
@@ -9,9 +9,9 @@ DPDK_19.05 {
 	rte_qdma_start;
 	rte_qdma_stop;
 	rte_qdma_vq_create;
-	rte_qdma_vq_destroy;
 	rte_qdma_vq_dequeue;
 	rte_qdma_vq_dequeue_multi;
+	rte_qdma_vq_destroy;
 	rte_qdma_vq_enqueue;
 	rte_qdma_vq_enqueue_multi;
 	rte_qdma_vq_stats;
diff --git a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
+++ b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ioat/rte_rawdev_ioat_version.map b/drivers/raw/ioat/rte_rawdev_ioat_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/ioat/rte_rawdev_ioat_version.map
+++ b/drivers/raw/ioat/rte_rawdev_ioat_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ntb/rte_rawdev_ntb_version.map b/drivers/raw/ntb/rte_rawdev_ntb_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/raw/ntb/rte_rawdev_ntb_version.map
+++ b/drivers/raw/ntb/rte_rawdev_ntb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
+++ b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
+++ b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/lib/librte_acl/rte_acl_version.map b/lib/librte_acl/rte_acl_version.map
index b09370a104..c3daca8115 100644
--- a/lib/librte_acl/rte_acl_version.map
+++ b/lib/librte_acl/rte_acl_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_acl_add_rules;
diff --git a/lib/librte_bbdev/rte_bbdev_version.map b/lib/librte_bbdev/rte_bbdev_version.map
index 3624eb1cb4..45b560dbe7 100644
--- a/lib/librte_bbdev/rte_bbdev_version.map
+++ b/lib/librte_bbdev/rte_bbdev_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_bitratestats/rte_bitratestats_version.map b/lib/librte_bitratestats/rte_bitratestats_version.map
index fe7454452d..88fc2912db 100644
--- a/lib/librte_bitratestats/rte_bitratestats_version.map
+++ b/lib/librte_bitratestats/rte_bitratestats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_stats_bitrate_calc;
diff --git a/lib/librte_bpf/rte_bpf_version.map b/lib/librte_bpf/rte_bpf_version.map
index a203e088ea..e1ec43faa0 100644
--- a/lib/librte_bpf/rte_bpf_version.map
+++ b/lib/librte_bpf/rte_bpf_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_cfgfile/rte_cfgfile_version.map b/lib/librte_cfgfile/rte_cfgfile_version.map
index a0a11cea8d..906eee96bf 100644
--- a/lib/librte_cfgfile/rte_cfgfile_version.map
+++ b/lib/librte_cfgfile/rte_cfgfile_version.map
@@ -1,40 +1,22 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_cfgfile_add_entry;
+	rte_cfgfile_add_section;
 	rte_cfgfile_close;
+	rte_cfgfile_create;
 	rte_cfgfile_get_entry;
 	rte_cfgfile_has_entry;
 	rte_cfgfile_has_section;
 	rte_cfgfile_load;
+	rte_cfgfile_load_with_params;
 	rte_cfgfile_num_sections;
+	rte_cfgfile_save;
 	rte_cfgfile_section_entries;
+	rte_cfgfile_section_entries_by_index;
 	rte_cfgfile_section_num_entries;
 	rte_cfgfile_sections;
+	rte_cfgfile_set_entry;
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_cfgfile_section_entries_by_index;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_cfgfile_load_with_params;
-
-} DPDK_16.04;
-
-DPDK_17.11 {
-	global:
-
-	rte_cfgfile_add_entry;
-	rte_cfgfile_add_section;
-	rte_cfgfile_create;
-	rte_cfgfile_save;
-	rte_cfgfile_set_entry;
-
-} DPDK_17.05;
diff --git a/lib/librte_cmdline/rte_cmdline_version.map b/lib/librte_cmdline/rte_cmdline_version.map
index 04bcb387f2..95fce812ff 100644
--- a/lib/librte_cmdline/rte_cmdline_version.map
+++ b/lib/librte_cmdline/rte_cmdline_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	cirbuf_add_buf_head;
@@ -40,6 +40,7 @@ DPDK_2.0 {
 	cmdline_parse_num;
 	cmdline_parse_portlist;
 	cmdline_parse_string;
+	cmdline_poll;
 	cmdline_printf;
 	cmdline_quit;
 	cmdline_set_prompt;
@@ -68,10 +69,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	cmdline_poll;
-
-} DPDK_2.0;
diff --git a/lib/librte_compressdev/rte_compressdev_version.map b/lib/librte_compressdev/rte_compressdev_version.map
index e2a108b650..cfcd50ac1c 100644
--- a/lib/librte_compressdev/rte_compressdev_version.map
+++ b/lib/librte_compressdev/rte_compressdev_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map
index 3deb265ac2..1dd1e259a0 100644
--- a/lib/librte_cryptodev/rte_cryptodev_version.map
+++ b/lib/librte_cryptodev/rte_cryptodev_version.map
@@ -1,92 +1,62 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
-	rte_cryptodevs;
+	rte_crypto_aead_algorithm_strings;
+	rte_crypto_aead_operation_strings;
+	rte_crypto_auth_algorithm_strings;
+	rte_crypto_auth_operation_strings;
+	rte_crypto_cipher_algorithm_strings;
+	rte_crypto_cipher_operation_strings;
+	rte_crypto_op_pool_create;
+	rte_cryptodev_allocate_driver;
 	rte_cryptodev_callback_register;
 	rte_cryptodev_callback_unregister;
 	rte_cryptodev_close;
-	rte_cryptodev_count;
 	rte_cryptodev_configure;
+	rte_cryptodev_count;
+	rte_cryptodev_device_count_by_driver;
+	rte_cryptodev_devices_get;
+	rte_cryptodev_driver_id_get;
+	rte_cryptodev_driver_name_get;
+	rte_cryptodev_get_aead_algo_enum;
+	rte_cryptodev_get_auth_algo_enum;
+	rte_cryptodev_get_cipher_algo_enum;
 	rte_cryptodev_get_dev_id;
 	rte_cryptodev_get_feature_name;
+	rte_cryptodev_get_sec_ctx;
 	rte_cryptodev_info_get;
+	rte_cryptodev_name_get;
 	rte_cryptodev_pmd_allocate;
 	rte_cryptodev_pmd_callback_process;
+	rte_cryptodev_pmd_create;
+	rte_cryptodev_pmd_create_dev_name;
+	rte_cryptodev_pmd_destroy;
+	rte_cryptodev_pmd_get_dev;
+	rte_cryptodev_pmd_get_named_dev;
+	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_pmd_parse_input_args;
 	rte_cryptodev_pmd_release_device;
-	rte_cryptodev_sym_session_create;
-	rte_cryptodev_sym_session_free;
+	rte_cryptodev_queue_pair_count;
+	rte_cryptodev_queue_pair_setup;
 	rte_cryptodev_socket_id;
 	rte_cryptodev_start;
 	rte_cryptodev_stats_get;
 	rte_cryptodev_stats_reset;
 	rte_cryptodev_stop;
-	rte_cryptodev_queue_pair_count;
-	rte_cryptodev_queue_pair_setup;
-	rte_crypto_op_pool_create;
-
-	local: *;
-};
-
-DPDK_17.02 {
-	global:
-
-	rte_cryptodev_devices_get;
-	rte_cryptodev_pmd_create_dev_name;
-	rte_cryptodev_pmd_get_dev;
-	rte_cryptodev_pmd_get_named_dev;
-	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_sym_capability_check_aead;
 	rte_cryptodev_sym_capability_check_auth;
 	rte_cryptodev_sym_capability_check_cipher;
 	rte_cryptodev_sym_capability_get;
-	rte_crypto_auth_algorithm_strings;
-	rte_crypto_auth_operation_strings;
-	rte_crypto_cipher_algorithm_strings;
-	rte_crypto_cipher_operation_strings;
-
-} DPDK_16.04;
-
-DPDK_17.05 {
-	global:
-
-	rte_cryptodev_get_auth_algo_enum;
-	rte_cryptodev_get_cipher_algo_enum;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_cryptodev_allocate_driver;
-	rte_cryptodev_device_count_by_driver;
-	rte_cryptodev_driver_id_get;
-	rte_cryptodev_driver_name_get;
-	rte_cryptodev_get_aead_algo_enum;
-	rte_cryptodev_sym_capability_check_aead;
-	rte_cryptodev_sym_session_init;
-	rte_cryptodev_sym_session_clear;
-	rte_crypto_aead_algorithm_strings;
-	rte_crypto_aead_operation_strings;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_cryptodev_get_sec_ctx;
-	rte_cryptodev_name_get;
-	rte_cryptodev_pmd_create;
-	rte_cryptodev_pmd_destroy;
-	rte_cryptodev_pmd_parse_input_args;
-
-} DPDK_17.08;
-
-DPDK_18.05 {
-	global:
-
 	rte_cryptodev_sym_get_header_session_size;
 	rte_cryptodev_sym_get_private_session_size;
+	rte_cryptodev_sym_session_clear;
+	rte_cryptodev_sym_session_create;
+	rte_cryptodev_sym_session_free;
+	rte_cryptodev_sym_session_init;
+	rte_cryptodevs;
 
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 00e26b4804..1b7c643005 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_distributor_clear_returns;
@@ -10,4 +10,6 @@ DPDK_17.05 {
 	rte_distributor_request_pkt;
 	rte_distributor_return_pkt;
 	rte_distributor_returned_pkts;
+
+	local: *;
 };
diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map
index 7cbf82d37b..8c41999317 100644
--- a/lib/librte_eal/rte_eal_version.map
+++ b/lib/librte_eal/rte_eal_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	__rte_panic;
@@ -7,46 +7,111 @@ DPDK_2.0 {
 	lcore_config;
 	per_lcore__lcore_id;
 	per_lcore__rte_errno;
+	rte_bus_dump;
+	rte_bus_find;
+	rte_bus_find_by_device;
+	rte_bus_find_by_name;
+	rte_bus_get_iommu_class;
+	rte_bus_probe;
+	rte_bus_register;
+	rte_bus_scan;
+	rte_bus_unregister;
 	rte_calloc;
 	rte_calloc_socket;
 	rte_cpu_check_supported;
 	rte_cpu_get_flag_enabled;
+	rte_cpu_get_flag_name;
+	rte_cpu_is_supported;
+	rte_ctrl_thread_create;
 	rte_cycles_vmware_tsc_map;
 	rte_delay_us;
+	rte_delay_us_block;
+	rte_delay_us_callback_register;
+	rte_dev_is_probed;
+	rte_dev_probe;
+	rte_dev_remove;
+	rte_devargs_add;
+	rte_devargs_dump;
+	rte_devargs_insert;
+	rte_devargs_next;
+	rte_devargs_parse;
+	rte_devargs_parsef;
+	rte_devargs_remove;
+	rte_devargs_type_count;
 	rte_dump_physmem_layout;
 	rte_dump_registers;
 	rte_dump_stack;
 	rte_dump_tailq;
 	rte_eal_alarm_cancel;
 	rte_eal_alarm_set;
+	rte_eal_cleanup;
+	rte_eal_create_uio_dev;
 	rte_eal_get_configuration;
 	rte_eal_get_lcore_state;
 	rte_eal_get_physmem_size;
+	rte_eal_get_runtime_dir;
 	rte_eal_has_hugepages;
+	rte_eal_has_pci;
+	rte_eal_hotplug_add;
+	rte_eal_hotplug_remove;
 	rte_eal_hpet_init;
 	rte_eal_init;
 	rte_eal_iopl_init;
+	rte_eal_iova_mode;
 	rte_eal_lcore_role;
+	rte_eal_mbuf_user_pool_ops;
 	rte_eal_mp_remote_launch;
 	rte_eal_mp_wait_lcore;
+	rte_eal_primary_proc_alive;
 	rte_eal_process_type;
 	rte_eal_remote_launch;
 	rte_eal_tailq_lookup;
 	rte_eal_tailq_register;
+	rte_eal_using_phys_addrs;
+	rte_eal_vfio_intr_mode;
 	rte_eal_wait_lcore;
+	rte_epoll_ctl;
+	rte_epoll_wait;
 	rte_exit;
 	rte_free;
 	rte_get_hpet_cycles;
 	rte_get_hpet_hz;
 	rte_get_tsc_hz;
 	rte_hexdump;
+	rte_hypervisor_get;
+	rte_hypervisor_get_name;
+	rte_intr_allow_others;
 	rte_intr_callback_register;
 	rte_intr_callback_unregister;
+	rte_intr_cap_multiple;
 	rte_intr_disable;
+	rte_intr_dp_is_en;
+	rte_intr_efd_disable;
+	rte_intr_efd_enable;
 	rte_intr_enable;
+	rte_intr_free_epoll_fd;
+	rte_intr_rx_ctl;
+	rte_intr_tls_epfd;
+	rte_keepalive_create;
+	rte_keepalive_dispatch_pings;
+	rte_keepalive_mark_alive;
+	rte_keepalive_mark_sleep;
+	rte_keepalive_register_core;
+	rte_keepalive_register_relay_callback;
+	rte_lcore_has_role;
+	rte_lcore_index;
+	rte_lcore_to_socket_id;
 	rte_log;
 	rte_log_cur_msg_loglevel;
 	rte_log_cur_msg_logtype;
+	rte_log_dump;
+	rte_log_get_global_level;
+	rte_log_get_level;
+	rte_log_register;
+	rte_log_set_global_level;
+	rte_log_set_level;
+	rte_log_set_level_pattern;
+	rte_log_set_level_regexp;
 	rte_logs;
 	rte_malloc;
 	rte_malloc_dump_stats;
@@ -54,155 +119,38 @@ DPDK_2.0 {
 	rte_malloc_set_limit;
 	rte_malloc_socket;
 	rte_malloc_validate;
+	rte_malloc_virt2iova;
+	rte_mcfg_mem_read_lock;
+	rte_mcfg_mem_read_unlock;
+	rte_mcfg_mem_write_lock;
+	rte_mcfg_mem_write_unlock;
+	rte_mcfg_mempool_read_lock;
+	rte_mcfg_mempool_read_unlock;
+	rte_mcfg_mempool_write_lock;
+	rte_mcfg_mempool_write_unlock;
+	rte_mcfg_tailq_read_lock;
+	rte_mcfg_tailq_read_unlock;
+	rte_mcfg_tailq_write_lock;
+	rte_mcfg_tailq_write_unlock;
 	rte_mem_lock_page;
+	rte_mem_virt2iova;
 	rte_mem_virt2phy;
 	rte_memdump;
 	rte_memory_get_nchannel;
 	rte_memory_get_nrank;
 	rte_memzone_dump;
+	rte_memzone_free;
 	rte_memzone_lookup;
 	rte_memzone_reserve;
 	rte_memzone_reserve_aligned;
 	rte_memzone_reserve_bounded;
 	rte_memzone_walk;
 	rte_openlog_stream;
+	rte_rand;
 	rte_realloc;
-	rte_set_application_usage_hook;
-	rte_socket_id;
-	rte_strerror;
-	rte_strsplit;
-	rte_sys_gettid;
-	rte_thread_get_affinity;
-	rte_thread_set_affinity;
-	rte_vlog;
-	rte_zmalloc;
-	rte_zmalloc_socket;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_epoll_ctl;
-	rte_epoll_wait;
-	rte_intr_allow_others;
-	rte_intr_dp_is_en;
-	rte_intr_efd_disable;
-	rte_intr_efd_enable;
-	rte_intr_rx_ctl;
-	rte_intr_tls_epfd;
-	rte_memzone_free;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_intr_cap_multiple;
-	rte_keepalive_create;
-	rte_keepalive_dispatch_pings;
-	rte_keepalive_mark_alive;
-	rte_keepalive_register_core;
-
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_cpu_get_flag_name;
-	rte_eal_primary_proc_alive;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_keepalive_mark_sleep;
-	rte_keepalive_register_relay_callback;
-	rte_rtm_supported;
-	rte_thread_setname;
-
-} DPDK_16.04;
-
-DPDK_16.11 {
-	global:
-
-	rte_delay_us_block;
-	rte_delay_us_callback_register;
-
-} DPDK_16.07;
-
-DPDK_17.02 {
-	global:
-
-	rte_bus_dump;
-	rte_bus_probe;
-	rte_bus_register;
-	rte_bus_scan;
-	rte_bus_unregister;
-
-} DPDK_16.11;
-
-DPDK_17.05 {
-	global:
-
-	rte_cpu_is_supported;
-	rte_intr_free_epoll_fd;
-	rte_log_dump;
-	rte_log_get_global_level;
-	rte_log_register;
-	rte_log_set_global_level;
-	rte_log_set_level;
-	rte_log_set_level_regexp;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_bus_find;
-	rte_bus_find_by_device;
-	rte_bus_find_by_name;
-	rte_log_get_level;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eal_create_uio_dev;
-	rte_bus_get_iommu_class;
-	rte_eal_has_pci;
-	rte_eal_iova_mode;
-	rte_eal_using_phys_addrs;
-	rte_eal_vfio_intr_mode;
-	rte_lcore_has_role;
-	rte_malloc_virt2iova;
-	rte_mem_virt2iova;
-	rte_vfio_enable;
-	rte_vfio_is_enabled;
-	rte_vfio_noiommu_is_enabled;
-	rte_vfio_release_device;
-	rte_vfio_setup_device;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_hypervisor_get;
-	rte_hypervisor_get_name;
-	rte_vfio_clear_group;
 	rte_reciprocal_value;
 	rte_reciprocal_value_u64;
-
-}  DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_log_set_level_pattern;
+	rte_rtm_supported;
 	rte_service_attr_get;
 	rte_service_attr_reset_all;
 	rte_service_component_register;
@@ -215,6 +163,8 @@ DPDK_18.05 {
 	rte_service_get_count;
 	rte_service_get_name;
 	rte_service_lcore_add;
+	rte_service_lcore_attr_get;
+	rte_service_lcore_attr_reset_all;
 	rte_service_lcore_count;
 	rte_service_lcore_count_services;
 	rte_service_lcore_del;
@@ -224,6 +174,7 @@ DPDK_18.05 {
 	rte_service_lcore_stop;
 	rte_service_map_lcore_get;
 	rte_service_map_lcore_set;
+	rte_service_may_be_active;
 	rte_service_probe_capability;
 	rte_service_run_iter_on_app_lcore;
 	rte_service_runstate_get;
@@ -231,17 +182,23 @@ DPDK_18.05 {
 	rte_service_set_runstate_mapped_check;
 	rte_service_set_stats_enable;
 	rte_service_start_with_defaults;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eal_mbuf_user_pool_ops;
+	rte_set_application_usage_hook;
+	rte_socket_count;
+	rte_socket_id;
+	rte_socket_id_by_idx;
+	rte_srand;
+	rte_strerror;
+	rte_strscpy;
+	rte_strsplit;
+	rte_sys_gettid;
+	rte_thread_get_affinity;
+	rte_thread_set_affinity;
+	rte_thread_setname;
 	rte_uuid_compare;
 	rte_uuid_is_null;
 	rte_uuid_parse;
 	rte_uuid_unparse;
+	rte_vfio_clear_group;
 	rte_vfio_container_create;
 	rte_vfio_container_destroy;
 	rte_vfio_container_dma_map;
@@ -250,67 +207,20 @@ DPDK_18.08 {
 	rte_vfio_container_group_unbind;
 	rte_vfio_dma_map;
 	rte_vfio_dma_unmap;
+	rte_vfio_enable;
 	rte_vfio_get_container_fd;
 	rte_vfio_get_group_fd;
 	rte_vfio_get_group_num;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_dev_probe;
-	rte_dev_remove;
-	rte_eal_get_runtime_dir;
-	rte_eal_hotplug_add;
-	rte_eal_hotplug_remove;
-	rte_strscpy;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_ctrl_thread_create;
-	rte_dev_is_probed;
-	rte_devargs_add;
-	rte_devargs_dump;
-	rte_devargs_insert;
-	rte_devargs_next;
-	rte_devargs_parse;
-	rte_devargs_parsef;
-	rte_devargs_remove;
-	rte_devargs_type_count;
-	rte_eal_cleanup;
-	rte_socket_count;
-	rte_socket_id_by_idx;
-
-} DPDK_18.11;
-
-DPDK_19.08 {
-	global:
-
-	rte_lcore_index;
-	rte_lcore_to_socket_id;
-	rte_mcfg_mem_read_lock;
-	rte_mcfg_mem_read_unlock;
-	rte_mcfg_mem_write_lock;
-	rte_mcfg_mem_write_unlock;
-	rte_mcfg_mempool_read_lock;
-	rte_mcfg_mempool_read_unlock;
-	rte_mcfg_mempool_write_lock;
-	rte_mcfg_mempool_write_unlock;
-	rte_mcfg_tailq_read_lock;
-	rte_mcfg_tailq_read_unlock;
-	rte_mcfg_tailq_write_lock;
-	rte_mcfg_tailq_write_unlock;
-	rte_rand;
-	rte_service_lcore_attr_get;
-	rte_service_lcore_attr_reset_all;
-	rte_service_may_be_active;
-	rte_srand;
-
-} DPDK_19.05;
+	rte_vfio_is_enabled;
+	rte_vfio_noiommu_is_enabled;
+	rte_vfio_release_device;
+	rte_vfio_setup_device;
+	rte_vlog;
+	rte_zmalloc;
+	rte_zmalloc_socket;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_efd/rte_efd_version.map b/lib/librte_efd/rte_efd_version.map
index ae60a64178..e010eecfe4 100644
--- a/lib/librte_efd/rte_efd_version.map
+++ b/lib/librte_efd/rte_efd_version.map
@@ -1,4 +1,4 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_efd_create;
diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map
index 6df42a47b8..9e1dbdebb4 100644
--- a/lib/librte_ethdev/rte_ethdev_version.map
+++ b/lib/librte_ethdev/rte_ethdev_version.map
@@ -1,35 +1,53 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	global:
 
+	_rte_eth_dev_callback_process;
+	_rte_eth_dev_reset;
+	rte_eth_add_first_rx_callback;
 	rte_eth_add_rx_callback;
 	rte_eth_add_tx_callback;
 	rte_eth_allmulticast_disable;
 	rte_eth_allmulticast_enable;
 	rte_eth_allmulticast_get;
+	rte_eth_dev_adjust_nb_rx_tx_desc;
 	rte_eth_dev_allocate;
 	rte_eth_dev_allocated;
+	rte_eth_dev_attach_secondary;
 	rte_eth_dev_callback_register;
 	rte_eth_dev_callback_unregister;
 	rte_eth_dev_close;
 	rte_eth_dev_configure;
 	rte_eth_dev_count;
+	rte_eth_dev_count_avail;
+	rte_eth_dev_count_total;
 	rte_eth_dev_default_mac_addr_set;
+	rte_eth_dev_filter_ctrl;
 	rte_eth_dev_filter_supported;
 	rte_eth_dev_flow_ctrl_get;
 	rte_eth_dev_flow_ctrl_set;
+	rte_eth_dev_fw_version_get;
 	rte_eth_dev_get_dcb_info;
 	rte_eth_dev_get_eeprom;
 	rte_eth_dev_get_eeprom_length;
 	rte_eth_dev_get_mtu;
+	rte_eth_dev_get_name_by_port;
+	rte_eth_dev_get_port_by_name;
 	rte_eth_dev_get_reg_info;
+	rte_eth_dev_get_sec_ctx;
+	rte_eth_dev_get_supported_ptypes;
 	rte_eth_dev_get_vlan_offload;
-	rte_eth_devices;
 	rte_eth_dev_info_get;
 	rte_eth_dev_is_valid_port;
+	rte_eth_dev_l2_tunnel_eth_type_conf;
+	rte_eth_dev_l2_tunnel_offload_set;
+	rte_eth_dev_logtype;
 	rte_eth_dev_mac_addr_add;
 	rte_eth_dev_mac_addr_remove;
+	rte_eth_dev_pool_ops_supported;
 	rte_eth_dev_priority_flow_ctrl_set;
+	rte_eth_dev_probing_finish;
 	rte_eth_dev_release_port;
+	rte_eth_dev_reset;
 	rte_eth_dev_rss_hash_conf_get;
 	rte_eth_dev_rss_hash_update;
 	rte_eth_dev_rss_reta_query;
@@ -38,6 +56,7 @@ DPDK_2.2 {
 	rte_eth_dev_rx_intr_ctl_q;
 	rte_eth_dev_rx_intr_disable;
 	rte_eth_dev_rx_intr_enable;
+	rte_eth_dev_rx_offload_name;
 	rte_eth_dev_rx_queue_start;
 	rte_eth_dev_rx_queue_stop;
 	rte_eth_dev_set_eeprom;
@@ -47,18 +66,28 @@ DPDK_2.2 {
 	rte_eth_dev_set_mtu;
 	rte_eth_dev_set_rx_queue_stats_mapping;
 	rte_eth_dev_set_tx_queue_stats_mapping;
+	rte_eth_dev_set_vlan_ether_type;
 	rte_eth_dev_set_vlan_offload;
 	rte_eth_dev_set_vlan_pvid;
 	rte_eth_dev_set_vlan_strip_on_queue;
 	rte_eth_dev_socket_id;
 	rte_eth_dev_start;
 	rte_eth_dev_stop;
+	rte_eth_dev_tx_offload_name;
 	rte_eth_dev_tx_queue_start;
 	rte_eth_dev_tx_queue_stop;
 	rte_eth_dev_uc_all_hash_table_set;
 	rte_eth_dev_uc_hash_table_set;
+	rte_eth_dev_udp_tunnel_port_add;
+	rte_eth_dev_udp_tunnel_port_delete;
 	rte_eth_dev_vlan_filter;
+	rte_eth_devices;
 	rte_eth_dma_zone_reserve;
+	rte_eth_find_next;
+	rte_eth_find_next_owned_by;
+	rte_eth_iterator_cleanup;
+	rte_eth_iterator_init;
+	rte_eth_iterator_next;
 	rte_eth_led_off;
 	rte_eth_led_on;
 	rte_eth_link;
@@ -75,6 +104,7 @@ DPDK_2.2 {
 	rte_eth_rx_queue_info_get;
 	rte_eth_rx_queue_setup;
 	rte_eth_set_queue_rate_limit;
+	rte_eth_speed_bitflag;
 	rte_eth_stats;
 	rte_eth_stats_get;
 	rte_eth_stats_reset;
@@ -85,66 +115,27 @@ DPDK_2.2 {
 	rte_eth_timesync_read_time;
 	rte_eth_timesync_read_tx_timestamp;
 	rte_eth_timesync_write_time;
-	rte_eth_tx_queue_info_get;
-	rte_eth_tx_queue_setup;
-	rte_eth_xstats_get;
-	rte_eth_xstats_reset;
-
-	local: *;
-};
-
-DPDK_16.04 {
-	global:
-
-	rte_eth_dev_get_supported_ptypes;
-	rte_eth_dev_l2_tunnel_eth_type_conf;
-	rte_eth_dev_l2_tunnel_offload_set;
-	rte_eth_dev_set_vlan_ether_type;
-	rte_eth_dev_udp_tunnel_port_add;
-	rte_eth_dev_udp_tunnel_port_delete;
-	rte_eth_speed_bitflag;
 	rte_eth_tx_buffer_count_callback;
 	rte_eth_tx_buffer_drop_callback;
 	rte_eth_tx_buffer_init;
 	rte_eth_tx_buffer_set_err_callback;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_add_first_rx_callback;
-	rte_eth_dev_get_name_by_port;
-	rte_eth_dev_get_port_by_name;
-	rte_eth_xstats_get_names;
-
-} DPDK_16.04;
-
-DPDK_17.02 {
-	global:
-
-	_rte_eth_dev_reset;
-	rte_eth_dev_fw_version_get;
-
-} DPDK_16.07;
-
-DPDK_17.05 {
-	global:
-
-	rte_eth_dev_attach_secondary;
-	rte_eth_find_next;
 	rte_eth_tx_done_cleanup;
+	rte_eth_tx_queue_info_get;
+	rte_eth_tx_queue_setup;
+	rte_eth_xstats_get;
 	rte_eth_xstats_get_by_id;
 	rte_eth_xstats_get_id_by_name;
+	rte_eth_xstats_get_names;
 	rte_eth_xstats_get_names_by_id;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	_rte_eth_dev_callback_process;
-	rte_eth_dev_adjust_nb_rx_tx_desc;
+	rte_eth_xstats_reset;
+	rte_flow_copy;
+	rte_flow_create;
+	rte_flow_destroy;
+	rte_flow_error_set;
+	rte_flow_flush;
+	rte_flow_isolate;
+	rte_flow_query;
+	rte_flow_validate;
 	rte_tm_capabilities_get;
 	rte_tm_get_number_of_leaf_nodes;
 	rte_tm_hierarchy_commit;
@@ -176,65 +167,8 @@ DPDK_17.08 {
 	rte_tm_wred_profile_add;
 	rte_tm_wred_profile_delete;
 
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eth_dev_get_sec_ctx;
-	rte_eth_dev_pool_ops_supported;
-	rte_eth_dev_reset;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_eth_dev_filter_ctrl;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_eth_dev_count_avail;
-	rte_eth_dev_probing_finish;
-	rte_eth_find_next_owned_by;
-	rte_flow_copy;
-	rte_flow_create;
-	rte_flow_destroy;
-	rte_flow_error_set;
-	rte_flow_flush;
-	rte_flow_isolate;
-	rte_flow_query;
-	rte_flow_validate;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eth_dev_logtype;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_eth_dev_rx_offload_name;
-	rte_eth_dev_tx_offload_name;
-	rte_eth_iterator_cleanup;
-	rte_eth_iterator_init;
-	rte_eth_iterator_next;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_eth_dev_count_total;
-
-} DPDK_18.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_eventdev/rte_eventdev_version.map b/lib/librte_eventdev/rte_eventdev_version.map
index 76b3021d3a..edfc15282d 100644
--- a/lib/librte_eventdev/rte_eventdev_version.map
+++ b/lib/librte_eventdev/rte_eventdev_version.map
@@ -1,61 +1,38 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
-	rte_eventdevs;
-
+	rte_event_crypto_adapter_caps_get;
+	rte_event_crypto_adapter_create;
+	rte_event_crypto_adapter_create_ext;
+	rte_event_crypto_adapter_event_port_get;
+	rte_event_crypto_adapter_free;
+	rte_event_crypto_adapter_queue_pair_add;
+	rte_event_crypto_adapter_queue_pair_del;
+	rte_event_crypto_adapter_service_id_get;
+	rte_event_crypto_adapter_start;
+	rte_event_crypto_adapter_stats_get;
+	rte_event_crypto_adapter_stats_reset;
+	rte_event_crypto_adapter_stop;
+	rte_event_dequeue_timeout_ticks;
+	rte_event_dev_attr_get;
+	rte_event_dev_close;
+	rte_event_dev_configure;
 	rte_event_dev_count;
+	rte_event_dev_dump;
 	rte_event_dev_get_dev_id;
-	rte_event_dev_socket_id;
 	rte_event_dev_info_get;
-	rte_event_dev_configure;
+	rte_event_dev_selftest;
+	rte_event_dev_service_id_get;
+	rte_event_dev_socket_id;
 	rte_event_dev_start;
 	rte_event_dev_stop;
-	rte_event_dev_close;
-	rte_event_dev_dump;
+	rte_event_dev_stop_flush_callback_register;
 	rte_event_dev_xstats_by_name_get;
 	rte_event_dev_xstats_get;
 	rte_event_dev_xstats_names_get;
 	rte_event_dev_xstats_reset;
-
-	rte_event_port_default_conf_get;
-	rte_event_port_setup;
-	rte_event_port_link;
-	rte_event_port_unlink;
-	rte_event_port_links_get;
-
-	rte_event_queue_default_conf_get;
-	rte_event_queue_setup;
-
-	rte_event_dequeue_timeout_ticks;
-
-	rte_event_pmd_allocate;
-	rte_event_pmd_release;
-	rte_event_pmd_vdev_init;
-	rte_event_pmd_vdev_uninit;
-	rte_event_pmd_pci_probe;
-	rte_event_pmd_pci_remove;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	rte_event_ring_create;
-	rte_event_ring_free;
-	rte_event_ring_init;
-	rte_event_ring_lookup;
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_event_dev_attr_get;
-	rte_event_dev_service_id_get;
-	rte_event_port_attr_get;
-	rte_event_queue_attr_get;
-
 	rte_event_eth_rx_adapter_caps_get;
+	rte_event_eth_rx_adapter_cb_register;
 	rte_event_eth_rx_adapter_create;
 	rte_event_eth_rx_adapter_create_ext;
 	rte_event_eth_rx_adapter_free;
@@ -63,38 +40,9 @@ DPDK_17.11 {
 	rte_event_eth_rx_adapter_queue_del;
 	rte_event_eth_rx_adapter_service_id_get;
 	rte_event_eth_rx_adapter_start;
+	rte_event_eth_rx_adapter_stats_get;
 	rte_event_eth_rx_adapter_stats_reset;
 	rte_event_eth_rx_adapter_stop;
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_event_dev_selftest;
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_event_dev_stop_flush_callback_register;
-} DPDK_18.02;
-
-DPDK_19.05 {
-	global:
-
-	rte_event_crypto_adapter_caps_get;
-	rte_event_crypto_adapter_create;
-	rte_event_crypto_adapter_create_ext;
-	rte_event_crypto_adapter_event_port_get;
-	rte_event_crypto_adapter_free;
-	rte_event_crypto_adapter_queue_pair_add;
-	rte_event_crypto_adapter_queue_pair_del;
-	rte_event_crypto_adapter_service_id_get;
-	rte_event_crypto_adapter_start;
-	rte_event_crypto_adapter_stats_get;
-	rte_event_crypto_adapter_stats_reset;
-	rte_event_crypto_adapter_stop;
-	rte_event_port_unlinks_in_progress;
 	rte_event_eth_tx_adapter_caps_get;
 	rte_event_eth_tx_adapter_create;
 	rte_event_eth_tx_adapter_create_ext;
@@ -107,6 +55,26 @@ DPDK_19.05 {
 	rte_event_eth_tx_adapter_stats_get;
 	rte_event_eth_tx_adapter_stats_reset;
 	rte_event_eth_tx_adapter_stop;
+	rte_event_pmd_allocate;
+	rte_event_pmd_pci_probe;
+	rte_event_pmd_pci_remove;
+	rte_event_pmd_release;
+	rte_event_pmd_vdev_init;
+	rte_event_pmd_vdev_uninit;
+	rte_event_port_attr_get;
+	rte_event_port_default_conf_get;
+	rte_event_port_link;
+	rte_event_port_links_get;
+	rte_event_port_setup;
+	rte_event_port_unlink;
+	rte_event_port_unlinks_in_progress;
+	rte_event_queue_attr_get;
+	rte_event_queue_default_conf_get;
+	rte_event_queue_setup;
+	rte_event_ring_create;
+	rte_event_ring_free;
+	rte_event_ring_init;
+	rte_event_ring_lookup;
 	rte_event_timer_adapter_caps_get;
 	rte_event_timer_adapter_create;
 	rte_event_timer_adapter_create_ext;
@@ -121,11 +89,7 @@ DPDK_19.05 {
 	rte_event_timer_arm_burst;
 	rte_event_timer_arm_tmo_tick_burst;
 	rte_event_timer_cancel_burst;
-} DPDK_18.05;
+	rte_eventdevs;
 
-DPDK_19.08 {
-	global:
-
-	rte_event_eth_rx_adapter_cb_register;
-	rte_event_eth_rx_adapter_stats_get;
-} DPDK_19.05;
+	local: *;
+};
diff --git a/lib/librte_flow_classify/rte_flow_classify_version.map b/lib/librte_flow_classify/rte_flow_classify_version.map
index 49bc25c6a0..001ff660e3 100644
--- a/lib/librte_flow_classify/rte_flow_classify_version.map
+++ b/lib/librte_flow_classify/rte_flow_classify_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_gro/rte_gro_version.map b/lib/librte_gro/rte_gro_version.map
index 1606b6dc72..9f6fe79e57 100644
--- a/lib/librte_gro/rte_gro_version.map
+++ b/lib/librte_gro/rte_gro_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_gro_ctx_create;
diff --git a/lib/librte_gso/rte_gso_version.map b/lib/librte_gso/rte_gso_version.map
index e1fd453edb..8505a59c27 100644
--- a/lib/librte_gso/rte_gso_version.map
+++ b/lib/librte_gso/rte_gso_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_gso_segment;
diff --git a/lib/librte_hash/rte_hash_version.map b/lib/librte_hash/rte_hash_version.map
index 734ae28b04..138c130c1b 100644
--- a/lib/librte_hash/rte_hash_version.map
+++ b/lib/librte_hash/rte_hash_version.map
@@ -1,58 +1,33 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_fbk_hash_create;
 	rte_fbk_hash_find_existing;
 	rte_fbk_hash_free;
 	rte_hash_add_key;
+	rte_hash_add_key_data;
 	rte_hash_add_key_with_hash;
+	rte_hash_add_key_with_hash_data;
+	rte_hash_count;
 	rte_hash_create;
 	rte_hash_del_key;
 	rte_hash_del_key_with_hash;
 	rte_hash_find_existing;
 	rte_hash_free;
+	rte_hash_get_key_with_position;
 	rte_hash_hash;
+	rte_hash_iterate;
 	rte_hash_lookup;
 	rte_hash_lookup_bulk;
-	rte_hash_lookup_with_hash;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_hash_add_key_data;
-	rte_hash_add_key_with_hash_data;
-	rte_hash_iterate;
 	rte_hash_lookup_bulk_data;
 	rte_hash_lookup_data;
+	rte_hash_lookup_with_hash;
 	rte_hash_lookup_with_hash_data;
 	rte_hash_reset;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_hash_set_cmp_func;
 
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_hash_get_key_with_position;
-
-} DPDK_2.2;
-
-
-DPDK_18.08 {
-	global:
-
-	rte_hash_count;
-
-} DPDK_16.07;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_ip_frag/rte_ip_frag_version.map b/lib/librte_ip_frag/rte_ip_frag_version.map
index a193007c61..5dd34f828c 100644
--- a/lib/librte_ip_frag/rte_ip_frag_version.map
+++ b/lib/librte_ip_frag/rte_ip_frag_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
 	rte_ipv4_fragment_packet;
@@ -12,13 +13,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_17.08 {
-	global:
-
-	rte_ip_frag_table_destroy;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_ipsec/rte_ipsec_version.map b/lib/librte_ipsec/rte_ipsec_version.map
index ee9f1961b0..3723b812fc 100644
--- a/lib/librte_ipsec/rte_ipsec_version.map
+++ b/lib/librte_ipsec/rte_ipsec_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_jobstats/rte_jobstats_version.map b/lib/librte_jobstats/rte_jobstats_version.map
index f89441438e..dbd2664ae2 100644
--- a/lib/librte_jobstats/rte_jobstats_version.map
+++ b/lib/librte_jobstats/rte_jobstats_version.map
@@ -1,6 +1,7 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_jobstats_abort;
 	rte_jobstats_context_finish;
 	rte_jobstats_context_init;
 	rte_jobstats_context_reset;
@@ -17,10 +18,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_jobstats_abort;
-
-} DPDK_2.0;
diff --git a/lib/librte_kni/rte_kni_version.map b/lib/librte_kni/rte_kni_version.map
index c877dc6aaa..9cd3cedc54 100644
--- a/lib/librte_kni/rte_kni_version.map
+++ b/lib/librte_kni/rte_kni_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kni_alloc;
diff --git a/lib/librte_kvargs/rte_kvargs_version.map b/lib/librte_kvargs/rte_kvargs_version.map
index 8f4b4e3f8f..3ba0f4b59c 100644
--- a/lib/librte_kvargs/rte_kvargs_version.map
+++ b/lib/librte_kvargs/rte_kvargs_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kvargs_count;
@@ -15,4 +15,4 @@ EXPERIMENTAL {
 	rte_kvargs_parse_delim;
 	rte_kvargs_strcmp;
 
-} DPDK_2.0;
+};
diff --git a/lib/librte_latencystats/rte_latencystats_version.map b/lib/librte_latencystats/rte_latencystats_version.map
index ac8403e821..e04e63463f 100644
--- a/lib/librte_latencystats/rte_latencystats_version.map
+++ b/lib/librte_latencystats/rte_latencystats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_latencystats_get;
diff --git a/lib/librte_lpm/rte_lpm_version.map b/lib/librte_lpm/rte_lpm_version.map
index 90beac853d..500f58b806 100644
--- a/lib/librte_lpm/rte_lpm_version.map
+++ b/lib/librte_lpm/rte_lpm_version.map
@@ -1,13 +1,6 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
-	rte_lpm_add;
-	rte_lpm_create;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-	rte_lpm_find_existing;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
 	rte_lpm6_add;
 	rte_lpm6_create;
 	rte_lpm6_delete;
@@ -18,29 +11,13 @@ DPDK_2.0 {
 	rte_lpm6_is_rule_present;
 	rte_lpm6_lookup;
 	rte_lpm6_lookup_bulk_func;
+	rte_lpm_add;
+	rte_lpm_create;
+	rte_lpm_delete;
+	rte_lpm_delete_all;
+	rte_lpm_find_existing;
+	rte_lpm_free;
+	rte_lpm_is_rule_present;
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_lpm_add;
-	rte_lpm_find_existing;
-	rte_lpm_create;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_lpm6_add;
-	rte_lpm6_is_rule_present;
-	rte_lpm6_lookup;
-	rte_lpm6_lookup_bulk_func;
-
-} DPDK_16.04;
diff --git a/lib/librte_mbuf/rte_mbuf_version.map b/lib/librte_mbuf/rte_mbuf_version.map
index 519fead35a..b2dc5e50f4 100644
--- a/lib/librte_mbuf/rte_mbuf_version.map
+++ b/lib/librte_mbuf/rte_mbuf_version.map
@@ -1,26 +1,7 @@
-DPDK_2.0 {
-	global:
-
-	rte_get_rx_ol_flag_name;
-	rte_get_tx_ol_flag_name;
-	rte_mbuf_sanity_check;
-	rte_pktmbuf_dump;
-	rte_pktmbuf_init;
-	rte_pktmbuf_pool_init;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pktmbuf_pool_create;
-
-} DPDK_2.0;
-
-DPDK_16.11 {
+DPDK_20.0 {
 	global:
 
+	__rte_pktmbuf_linearize;
 	__rte_pktmbuf_read;
 	rte_get_ptype_inner_l2_name;
 	rte_get_ptype_inner_l3_name;
@@ -31,28 +12,24 @@ DPDK_16.11 {
 	rte_get_ptype_name;
 	rte_get_ptype_tunnel_name;
 	rte_get_rx_ol_flag_list;
+	rte_get_rx_ol_flag_name;
 	rte_get_tx_ol_flag_list;
-
-} DPDK_2.1;
-
-DPDK_18.08 {
-	global:
-
+	rte_get_tx_ol_flag_name;
 	rte_mbuf_best_mempool_ops;
 	rte_mbuf_platform_mempool_ops;
+	rte_mbuf_sanity_check;
 	rte_mbuf_set_platform_mempool_ops;
 	rte_mbuf_set_user_mempool_ops;
 	rte_mbuf_user_mempool_ops;
-	rte_pktmbuf_pool_create_by_ops;
-} DPDK_16.11;
-
-DPDK_19.11 {
-	global:
-
-	__rte_pktmbuf_linearize;
 	rte_pktmbuf_clone;
+	rte_pktmbuf_dump;
+	rte_pktmbuf_init;
+	rte_pktmbuf_pool_create;
+	rte_pktmbuf_pool_create_by_ops;
+	rte_pktmbuf_pool_init;
 
-} DPDK_18.08;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
@@ -60,4 +37,4 @@ EXPERIMENTAL {
 	rte_mbuf_check;
 	rte_pktmbuf_copy;
 
-} DPDK_18.08;
+};
diff --git a/lib/librte_member/rte_member_version.map b/lib/librte_member/rte_member_version.map
index 019e4cd962..87780ae611 100644
--- a/lib/librte_member/rte_member_version.map
+++ b/lib/librte_member/rte_member_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_member_add;
diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map
index 17cbca4607..6a425d203a 100644
--- a/lib/librte_mempool/rte_mempool_version.map
+++ b/lib/librte_mempool/rte_mempool_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_mempool_audit;
-	rte_mempool_calc_obj_size;
-	rte_mempool_create;
-	rte_mempool_dump;
-	rte_mempool_list_dump;
-	rte_mempool_lookup;
-	rte_mempool_walk;
-
-	local: *;
-};
-
-DPDK_16.07 {
-	global:
-
 	rte_mempool_avail_count;
 	rte_mempool_cache_create;
 	rte_mempool_cache_flush;
 	rte_mempool_cache_free;
+	rte_mempool_calc_obj_size;
 	rte_mempool_check_cookies;
+	rte_mempool_contig_blocks_check_cookies;
+	rte_mempool_create;
 	rte_mempool_create_empty;
 	rte_mempool_default_cache;
+	rte_mempool_dump;
 	rte_mempool_free;
 	rte_mempool_generic_get;
 	rte_mempool_generic_put;
 	rte_mempool_in_use_count;
+	rte_mempool_list_dump;
+	rte_mempool_lookup;
 	rte_mempool_mem_iter;
 	rte_mempool_obj_iter;
+	rte_mempool_op_calc_mem_size_default;
+	rte_mempool_op_populate_default;
 	rte_mempool_ops_table;
 	rte_mempool_populate_anon;
 	rte_mempool_populate_default;
+	rte_mempool_populate_iova;
 	rte_mempool_populate_virt;
 	rte_mempool_register_ops;
 	rte_mempool_set_ops_byname;
+	rte_mempool_walk;
 
-} DPDK_2.0;
-
-DPDK_17.11 {
-	global:
-
-	rte_mempool_populate_iova;
-
-} DPDK_16.07;
-
-DPDK_18.05 {
-	global:
-
-	rte_mempool_contig_blocks_check_cookies;
-	rte_mempool_op_calc_mem_size_default;
-	rte_mempool_op_populate_default;
-
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_meter/rte_meter_version.map b/lib/librte_meter/rte_meter_version.map
index 4b460d5803..46410b0369 100644
--- a/lib/librte_meter/rte_meter_version.map
+++ b/lib/librte_meter/rte_meter_version.map
@@ -1,21 +1,16 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_meter_srtcm_color_aware_check;
 	rte_meter_srtcm_color_blind_check;
 	rte_meter_srtcm_config;
+	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_color_aware_check;
 	rte_meter_trtcm_color_blind_check;
 	rte_meter_trtcm_config;
-
-	local: *;
-};
-
-DPDK_18.08 {
-	global:
-
-	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_profile_config;
+
+	local: *;
 };
 
 EXPERIMENTAL {
diff --git a/lib/librte_metrics/rte_metrics_version.map b/lib/librte_metrics/rte_metrics_version.map
index 6ac99a44a1..85663f356e 100644
--- a/lib/librte_metrics/rte_metrics_version.map
+++ b/lib/librte_metrics/rte_metrics_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_metrics_get_names;
diff --git a/lib/librte_net/rte_net_version.map b/lib/librte_net/rte_net_version.map
index fffc4a3723..8a4e75a3a0 100644
--- a/lib/librte_net/rte_net_version.map
+++ b/lib/librte_net/rte_net_version.map
@@ -1,25 +1,14 @@
-DPDK_16.11 {
-	global:
-	rte_net_get_ptype;
-
-	local: *;
-};
-
-DPDK_17.05 {
-	global:
-
-	rte_net_crc_calc;
-	rte_net_crc_set_alg;
-
-} DPDK_16.11;
-
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_random_addr;
 	rte_ether_format_addr;
+	rte_net_crc_calc;
+	rte_net_crc_set_alg;
+	rte_net_get_ptype;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_pci/rte_pci_version.map b/lib/librte_pci/rte_pci_version.map
index c0280277bb..539785f5f4 100644
--- a/lib/librte_pci/rte_pci_version.map
+++ b/lib/librte_pci/rte_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	eal_parse_pci_BDF;
diff --git a/lib/librte_pdump/rte_pdump_version.map b/lib/librte_pdump/rte_pdump_version.map
index 3e744f3012..6d02ccce6d 100644
--- a/lib/librte_pdump/rte_pdump_version.map
+++ b/lib/librte_pdump/rte_pdump_version.map
@@ -1,4 +1,4 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	global:
 
 	rte_pdump_disable;
diff --git a/lib/librte_pipeline/rte_pipeline_version.map b/lib/librte_pipeline/rte_pipeline_version.map
index 420f065d6e..64d38afecd 100644
--- a/lib/librte_pipeline/rte_pipeline_version.map
+++ b/lib/librte_pipeline/rte_pipeline_version.map
@@ -1,6 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_pipeline_ah_packet_drop;
+	rte_pipeline_ah_packet_hijack;
 	rte_pipeline_check;
 	rte_pipeline_create;
 	rte_pipeline_flush;
@@ -9,42 +11,22 @@ DPDK_2.0 {
 	rte_pipeline_port_in_create;
 	rte_pipeline_port_in_disable;
 	rte_pipeline_port_in_enable;
+	rte_pipeline_port_in_stats_read;
 	rte_pipeline_port_out_create;
 	rte_pipeline_port_out_packet_insert;
+	rte_pipeline_port_out_stats_read;
 	rte_pipeline_run;
 	rte_pipeline_table_create;
 	rte_pipeline_table_default_entry_add;
 	rte_pipeline_table_default_entry_delete;
 	rte_pipeline_table_entry_add;
-	rte_pipeline_table_entry_delete;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pipeline_port_in_stats_read;
-	rte_pipeline_port_out_stats_read;
-	rte_pipeline_table_stats_read;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_pipeline_table_entry_add_bulk;
+	rte_pipeline_table_entry_delete;
 	rte_pipeline_table_entry_delete_bulk;
+	rte_pipeline_table_stats_read;
 
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_pipeline_ah_packet_hijack;
-	rte_pipeline_ah_packet_drop;
-
-} DPDK_2.2;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_port/rte_port_version.map b/lib/librte_port/rte_port_version.map
index 609bcec3ff..db1b8681d9 100644
--- a/lib/librte_port/rte_port_version.map
+++ b/lib/librte_port/rte_port_version.map
@@ -1,62 +1,32 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_port_ethdev_reader_ops;
+	rte_port_ethdev_writer_nodrop_ops;
 	rte_port_ethdev_writer_ops;
+	rte_port_fd_reader_ops;
+	rte_port_fd_writer_nodrop_ops;
+	rte_port_fd_writer_ops;
+	rte_port_kni_reader_ops;
+	rte_port_kni_writer_nodrop_ops;
+	rte_port_kni_writer_ops;
+	rte_port_ring_multi_reader_ops;
+	rte_port_ring_multi_writer_nodrop_ops;
+	rte_port_ring_multi_writer_ops;
 	rte_port_ring_reader_ipv4_frag_ops;
+	rte_port_ring_reader_ipv6_frag_ops;
 	rte_port_ring_reader_ops;
 	rte_port_ring_writer_ipv4_ras_ops;
+	rte_port_ring_writer_ipv6_ras_ops;
+	rte_port_ring_writer_nodrop_ops;
 	rte_port_ring_writer_ops;
 	rte_port_sched_reader_ops;
 	rte_port_sched_writer_ops;
 	rte_port_sink_ops;
 	rte_port_source_ops;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_port_ethdev_writer_nodrop_ops;
-	rte_port_ring_reader_ipv6_frag_ops;
-	rte_port_ring_writer_ipv6_ras_ops;
-	rte_port_ring_writer_nodrop_ops;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_port_ring_multi_reader_ops;
-	rte_port_ring_multi_writer_ops;
-	rte_port_ring_multi_writer_nodrop_ops;
-
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_port_kni_reader_ops;
-	rte_port_kni_writer_ops;
-	rte_port_kni_writer_nodrop_ops;
-
-} DPDK_2.2;
-
-DPDK_16.11 {
-	global:
-
-	rte_port_fd_reader_ops;
-	rte_port_fd_writer_ops;
-	rte_port_fd_writer_nodrop_ops;
-
-} DPDK_16.07;
-
-DPDK_18.11 {
-	global:
-
 	rte_port_sym_crypto_reader_ops;
-	rte_port_sym_crypto_writer_ops;
 	rte_port_sym_crypto_writer_nodrop_ops;
+	rte_port_sym_crypto_writer_ops;
 
-} DPDK_16.11;
+	local: *;
+};
diff --git a/lib/librte_power/rte_power_version.map b/lib/librte_power/rte_power_version.map
index 042917360e..a94ab30c3d 100644
--- a/lib/librte_power/rte_power_version.map
+++ b/lib/librte_power/rte_power_version.map
@@ -1,39 +1,27 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_power_exit;
+	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
+	rte_power_freq_enable_turbo;
 	rte_power_freq_max;
 	rte_power_freq_min;
 	rte_power_freq_up;
 	rte_power_freqs;
+	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_guest_channel_send_msg;
 	rte_power_init;
 	rte_power_set_env;
 	rte_power_set_freq;
+	rte_power_turbo_status;
 	rte_power_unset_env;
 
 	local: *;
 };
 
-DPDK_17.11 {
-	global:
-
-	rte_power_guest_channel_send_msg;
-	rte_power_freq_disable_turbo;
-	rte_power_freq_enable_turbo;
-	rte_power_turbo_status;
-
-} DPDK_2.0;
-
-DPDK_18.08 {
-	global:
-
-	rte_power_get_capabilities;
-
-} DPDK_17.11;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_rawdev/rte_rawdev_version.map b/lib/librte_rawdev/rte_rawdev_version.map
index b61dbff11c..d847c9e0d3 100644
--- a/lib/librte_rawdev/rte_rawdev_version.map
+++ b/lib/librte_rawdev/rte_rawdev_version.map
@@ -1,4 +1,4 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_rawdev_close;
@@ -17,8 +17,8 @@ DPDK_18.08 {
 	rte_rawdev_pmd_release;
 	rte_rawdev_queue_conf_get;
 	rte_rawdev_queue_count;
-	rte_rawdev_queue_setup;
 	rte_rawdev_queue_release;
+	rte_rawdev_queue_setup;
 	rte_rawdev_reset;
 	rte_rawdev_selftest;
 	rte_rawdev_set_attr;
diff --git a/lib/librte_rcu/rte_rcu_version.map b/lib/librte_rcu/rte_rcu_version.map
index f8b9ef2abb..787e51ef27 100644
--- a/lib/librte_rcu/rte_rcu_version.map
+++ b/lib/librte_rcu/rte_rcu_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_reorder/rte_reorder_version.map b/lib/librte_reorder/rte_reorder_version.map
index 0a8a54de83..cf444062df 100644
--- a/lib/librte_reorder/rte_reorder_version.map
+++ b/lib/librte_reorder/rte_reorder_version.map
@@ -1,13 +1,13 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_reorder_create;
-	rte_reorder_init;
+	rte_reorder_drain;
 	rte_reorder_find_existing;
-	rte_reorder_reset;
 	rte_reorder_free;
+	rte_reorder_init;
 	rte_reorder_insert;
-	rte_reorder_drain;
+	rte_reorder_reset;
 
 	local: *;
 };
diff --git a/lib/librte_ring/rte_ring_version.map b/lib/librte_ring/rte_ring_version.map
index 510c1386e0..89d84bcf48 100644
--- a/lib/librte_ring/rte_ring_version.map
+++ b/lib/librte_ring/rte_ring_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ring_create;
 	rte_ring_dump;
+	rte_ring_free;
 	rte_ring_get_memsize;
 	rte_ring_init;
 	rte_ring_list_dump;
@@ -11,13 +12,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.2 {
-	global:
-
-	rte_ring_free;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_sched/rte_sched_version.map b/lib/librte_sched/rte_sched_version.map
index 729588794e..1b48bfbf36 100644
--- a/lib/librte_sched/rte_sched_version.map
+++ b/lib/librte_sched/rte_sched_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_approx;
@@ -14,6 +14,9 @@ DPDK_2.0 {
 	rte_sched_port_enqueue;
 	rte_sched_port_free;
 	rte_sched_port_get_memory_footprint;
+	rte_sched_port_pkt_read_color;
+	rte_sched_port_pkt_read_tree_path;
+	rte_sched_port_pkt_write;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_read_stats;
@@ -21,15 +24,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.1 {
-	global:
-
-	rte_sched_port_pkt_write;
-	rte_sched_port_pkt_read_tree_path;
-	rte_sched_port_pkt_read_color;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_security/rte_security_version.map b/lib/librte_security/rte_security_version.map
index 53267bf3cc..b07314bbf4 100644
--- a/lib/librte_security/rte_security_version.map
+++ b/lib/librte_security/rte_security_version.map
@@ -1,4 +1,4 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	rte_security_attach_session;
diff --git a/lib/librte_stack/rte_stack_version.map b/lib/librte_stack/rte_stack_version.map
index 6662679c36..adbb7be9d9 100644
--- a/lib/librte_stack/rte_stack_version.map
+++ b/lib/librte_stack/rte_stack_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_table/rte_table_version.map b/lib/librte_table/rte_table_version.map
index 6237252bec..40f72b1fe8 100644
--- a/lib/librte_table/rte_table_version.map
+++ b/lib/librte_table/rte_table_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_table_acl_ops;
diff --git a/lib/librte_telemetry/rte_telemetry_version.map b/lib/librte_telemetry/rte_telemetry_version.map
index fa62d7718c..c1f4613af5 100644
--- a/lib/librte_telemetry/rte_telemetry_version.map
+++ b/lib/librte_telemetry/rte_telemetry_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_timer/rte_timer_version.map b/lib/librte_timer/rte_timer_version.map
index 72f75c8181..2a59d3f081 100644
--- a/lib/librte_timer/rte_timer_version.map
+++ b/lib/librte_timer/rte_timer_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_timer_dump_stats;
@@ -14,16 +14,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_19.05 {
-	global:
-
-	rte_timer_dump_stats;
-	rte_timer_manage;
-	rte_timer_reset;
-	rte_timer_stop;
-	rte_timer_subsystem_init;
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_vhost/rte_vhost_version.map b/lib/librte_vhost/rte_vhost_version.map
index 5f1d4a75c2..8e9ffac2c2 100644
--- a/lib/librte_vhost/rte_vhost_version.map
+++ b/lib/librte_vhost/rte_vhost_version.map
@@ -1,64 +1,34 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_vhost_avail_entries;
 	rte_vhost_dequeue_burst;
 	rte_vhost_driver_callback_register;
-	rte_vhost_driver_register;
-	rte_vhost_enable_guest_notification;
-	rte_vhost_enqueue_burst;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_vhost_driver_unregister;
-
-} DPDK_2.0;
-
-DPDK_16.07 {
-	global:
-
-	rte_vhost_avail_entries;
-	rte_vhost_get_ifname;
-	rte_vhost_get_numa_node;
-	rte_vhost_get_queue_num;
-
-} DPDK_2.1;
-
-DPDK_17.05 {
-	global:
-
 	rte_vhost_driver_disable_features;
 	rte_vhost_driver_enable_features;
 	rte_vhost_driver_get_features;
+	rte_vhost_driver_register;
 	rte_vhost_driver_set_features;
 	rte_vhost_driver_start;
+	rte_vhost_driver_unregister;
+	rte_vhost_enable_guest_notification;
+	rte_vhost_enqueue_burst;
+	rte_vhost_get_ifname;
 	rte_vhost_get_mem_table;
 	rte_vhost_get_mtu;
 	rte_vhost_get_negotiated_features;
+	rte_vhost_get_numa_node;
+	rte_vhost_get_queue_num;
 	rte_vhost_get_vhost_vring;
 	rte_vhost_get_vring_num;
 	rte_vhost_gpa_to_vva;
 	rte_vhost_log_used_vring;
 	rte_vhost_log_write;
-
-} DPDK_16.07;
-
-DPDK_17.08 {
-	global:
-
 	rte_vhost_rx_queue_count;
-
-} DPDK_17.05;
-
-DPDK_18.02 {
-	global:
-
 	rte_vhost_vring_call;
 
-} DPDK_17.08;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v4 10/10] buildtools: add ABI versioning check script
  2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
                       ` (10 preceding siblings ...)
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 09/10] build: change ABI version to 20.0 Anatoly Burakov
@ 2019-10-17 14:32     ` Anatoly Burakov
  11 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-17 14:32 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, john.mcnamara, bruce.richardson, thomas,
	david.marchand, Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

Add a shell script that checks whether built libraries are
versioned with expected ABI (current ABI, current ABI + 1,
or EXPERIMENTAL).

The following command was used to verify current source tree
(assuming build directory is in ./build):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - Moved this to the end of the patchset
    - Fixed bug when ABI symbols were not found because the .so
      did not declare any public symbols

 buildtools/check-abi-version.sh | 54 +++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100755 buildtools/check-abi-version.sh

diff --git a/buildtools/check-abi-version.sh b/buildtools/check-abi-version.sh
new file mode 100755
index 0000000000..29aea97735
--- /dev/null
+++ b/buildtools/check-abi-version.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+# Check whether library symbols have correct
+# version (provided ABI number or provided ABI
+# number + 1 or EXPERIMENTAL).
+# Args:
+#   $1: path of the library .so file
+#   $2: ABI major version number to check
+#       (defaults to ABI_VERSION file value)
+
+if [ -z "$1" ]; then
+    echo "Script checks whether library symbols have"
+    echo "correct version (ABI_VER/ABI_VER+1/EXPERIMENTAL)"
+    echo "Usage:"
+    echo "  $0 SO_FILE_PATH [ABI_VER]"
+    exit 1
+fi
+
+LIB="$1"
+DEFAULT_ABI=$(cat "$(dirname \
+            $(readlink -f $0))/../config/ABI_VERSION" | \
+            cut -d'.' -f 1)
+ABIVER="DPDK_${2-$DEFAULT_ABI}"
+NEXT_ABIVER="DPDK_$((${2-$DEFAULT_ABI}+1))"
+
+ret=0
+
+# get output of objdump
+OBJ_DUMP_OUTPUT=`objdump -TC --section=.text ${LIB} 2>&1 | grep ".text"`
+
+# there may not be any .text sections in the .so file, in which case exit early
+echo "${OBJ_DUMP_OUTPUT}" | grep "not found in any input file" -q
+if [ "$?" -eq 0 ]; then
+    exit 0
+fi
+
+# we have symbols, so let's see if the versions are correct
+for SYM in `echo "${OBJ_DUMP_OUTPUT}" | awk '{print $(NF-1) "-" $NF}'`
+do
+    version=$(echo $SYM | cut -d'-' -f 1)
+    symbol=$(echo $SYM | cut -d'-' -f 2)
+    case $version in (*"$ABIVER"*|*"$NEXT_ABIVER"*|"EXPERIMENTAL")
+        ;;
+    (*)
+        echo "Warning: symbol $symbol ($version) should be annotated " \
+             "as ABI version $ABIVER / $NEXT_ABIVER, or EXPERIMENTAL."
+        ret=1
+    ;;
+    esac
+done
+
+exit $ret
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v4 06/10] distributor: remove deprecated code
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 06/10] distributor: " Anatoly Burakov
@ 2019-10-17 15:59       ` Hunt, David
  0 siblings, 0 replies; 131+ messages in thread
From: Hunt, David @ 2019-10-17 15:59 UTC (permalink / raw)
  To: Anatoly Burakov, dev
  Cc: Marcin Baran, john.mcnamara, bruce.richardson, thomas, david.marchand


On 17/10/2019 15:31, Anatoly Burakov wrote:
> From: Marcin Baran <marcinx.baran@intel.com>
>
> Remove code for old ABI versions ahead of ABI version bump.
>
> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> ---
>
> Notes:
>      v2:
>      - Moved this to before ABI version bump to avoid compile breakage
>

Hi Anatoly,

     tested with Distributor sample app, Unit tests, looks good.

Acked-by: David Hunt <david.hunt@intel.com>




^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v4 07/10] distributor: rename v2.0 ABI to _single suffix
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
@ 2019-10-17 16:00       ` Hunt, David
  0 siblings, 0 replies; 131+ messages in thread
From: Hunt, David @ 2019-10-17 16:00 UTC (permalink / raw)
  To: Anatoly Burakov, dev
  Cc: Marcin Baran, john.mcnamara, bruce.richardson, thomas, david.marchand


On 17/10/2019 15:31, Anatoly Burakov wrote:
> From: Marcin Baran <marcinx.baran@intel.com>
>
> The original ABI versioning was slightly misleading in that the
> DPDK 2.0 ABI was really a single mode for the distributor, and is
> used as such throughout the distributor code.
>
> Fix this by renaming all _v20 API's to _single API's, and remove
> symbol versioning.
>
> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> ---
>
> Notes:
>      v4:
>      - Changed it back to how it was with v2
>      - Removed remaining v2.0 symbols
>      
>      v3:
>      - Removed single mode from distributor as per Dave's comments
>      
>      v2:
>      - Moved this to before ABI version bump to avoid compile breakage
>

Hi Anatoly,

     tested with Distributor sample app, Unit tests, looks good.

Acked-by: David Hunt <david.hunt@intel.com>




^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v4 04/10] timer: remove deprecated code
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 04/10] timer: remove deprecated code Anatoly Burakov
@ 2019-10-17 21:04       ` Carrillo, Erik G
  2019-10-21 13:24       ` Kevin Traynor
  1 sibling, 0 replies; 131+ messages in thread
From: Carrillo, Erik G @ 2019-10-17 21:04 UTC (permalink / raw)
  To: Burakov, Anatoly, dev
  Cc: Baran, MarcinX, Robert Sanford, Mcnamara, John, Richardson,
	Bruce, thomas, david.marchand

> -----Original Message-----
> From: Burakov, Anatoly <anatoly.burakov@intel.com>
> Sent: Thursday, October 17, 2019 9:32 AM
> To: dev@dpdk.org
> Cc: Baran, MarcinX <marcinx.baran@intel.com>; Robert Sanford
> <rsanford@akamai.com>; Carrillo, Erik G <erik.g.carrillo@intel.com>;
> Mcnamara, John <john.mcnamara@intel.com>; Richardson, Bruce
> <bruce.richardson@intel.com>; thomas@monjalon.net;
> david.marchand@redhat.com
> Subject: [PATCH v4 04/10] timer: remove deprecated code
> 
> From: Marcin Baran <marcinx.baran@intel.com>
> 
> Remove code for old ABI versions ahead of ABI version bump.
> 
> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Looks good to me too:
Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global
  2019-10-17 14:09       ` Luca Boccassi
  2019-10-17 14:12         ` Bruce Richardson
@ 2019-10-18 10:07         ` Kevin Traynor
  1 sibling, 0 replies; 131+ messages in thread
From: Kevin Traynor @ 2019-10-18 10:07 UTC (permalink / raw)
  To: Luca Boccassi, Bruce Richardson, Anatoly Burakov,
	Christian Ehrhardt, Timothy Redaelli
  Cc: dev, Marcin Baran, Thomas Monjalon, john.mcnamara,
	david.marchand, Pawel Modrak

On 17/10/2019 15:09, Luca Boccassi wrote:
> On Thu, 2019-10-17 at 09:44 +0100, Bruce Richardson wrote:
>> On Wed, Oct 16, 2019 at 06:03:36PM +0100, Anatoly Burakov wrote:
>>> From: Marcin Baran <
>>> marcinx.baran@intel.com
>>>>
>>>
>>> As per new ABI policy, all of the libraries are now versioned using
>>> one global ABI version. Changes in this patch implement the
>>> necessary steps to enable that.
>>>
>>> Signed-off-by: Marcin Baran <
>>> marcinx.baran@intel.com
>>>>
>>> Signed-off-by: Pawel Modrak <
>>> pawelx.modrak@intel.com
>>>>
>>> Signed-off-by: Anatoly Burakov <
>>> anatoly.burakov@intel.com
>>>>
>>> ---
>>>
>>> Notes:
>>>     v3:
>>>     - Removed Windows support from Makefile changes
>>>     - Removed unneeded path conversions from meson files
>>>
>>>  buildtools/meson.build |  2 ++
>>>  config/ABI_VERSION     |  1 +
>>>  config/meson.build     |  5 +++--
>>>  drivers/meson.build    | 20 ++++++++++++--------
>>>  lib/meson.build        | 18 +++++++++++-------
>>>  meson_options.txt      |  2 --
>>>  mk/rte.lib.mk          | 13 ++++---------
>>>  7 files changed, 33 insertions(+), 28 deletions(-)
>>>  create mode 100644 config/ABI_VERSION
>>>
>>> diff --git a/buildtools/meson.build b/buildtools/meson.build
>>> index 32c79c1308..78ce69977d 100644
>>> --- a/buildtools/meson.build
>>> +++ b/buildtools/meson.build
>>> @@ -12,3 +12,5 @@ if python3.found()
>>>  else
>>>  	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
>>>  endif
>>> +
>>> +is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
>>> diff --git a/config/ABI_VERSION b/config/ABI_VERSION
>>> new file mode 100644
>>> index 0000000000..9a7c1e503f
>>> --- /dev/null
>>> +++ b/config/ABI_VERSION
>>> @@ -0,0 +1 @@
>>> +20.0
>>> diff --git a/config/meson.build b/config/meson.build
>>> index a27f731f85..3cfc02406c 100644
>>> --- a/config/meson.build
>>> +++ b/config/meson.build
>>> @@ -17,7 +17,8 @@ endforeach
>>>  # set the major version, which might be used by drivers and
>>> libraries
>>>  # depending on the configuration options
>>>  pver = meson.project_version().split('.')
>>> -major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
>>> +abi_version = run_command(find_program('cat', 'more'),
>>> +	files('ABI_VERSION')).stdout().strip()
>>>  
>>>  # extract all version information into the build configuration
>>>  dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
>>> @@ -37,7 +38,7 @@ endif
>>>  
>>>  pmd_subdir_opt = get_option('drivers_install_subdir')
>>>  if pmd_subdir_opt.contains('<VERSION>')
>>> -	pmd_subdir_opt =
>>> major_version.join(pmd_subdir_opt.split('<VERSION>'))
>>> +	pmd_subdir_opt =
>>> abi_version.join(pmd_subdir_opt.split('<VERSION>'))
>>>  endif
>>
>> This is an interesting change, and I'm not sure about it. I think for
>> user-visible changes, version should still refer to DPDK version
>> rather
>> than ABI version. Even with a stable ABI, it makes more sense to me
>> to find
>> the drivers in a 19.11 directory than a 20.0 one. Then again, the
>> drivers
>> should be re-usable across the one ABI version, so perhaps this is
>> the best
>> approach.
>>
>> Thoughts from others? Luca or Kevin, any thoughts from a packagers
>> perspective?
>>
>> /Bruce
> 
> Hi,
> 
> We are currently assembing this path using the ABI version in
> Debian/Ubuntu, as we want same-ABI libraries not to be co-installed,
> but instead fo use the exact same name/path. So from our POV this
> change seems right.
> 

Seems ok to me as it's consistent with having the libs from different
releases using one ABI version. Would like to check with Timothy too..

+ Timothy

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v4 04/10] timer: remove deprecated code
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 04/10] timer: remove deprecated code Anatoly Burakov
  2019-10-17 21:04       ` Carrillo, Erik G
@ 2019-10-21 13:24       ` Kevin Traynor
  2019-10-24  9:07         ` Burakov, Anatoly
  1 sibling, 1 reply; 131+ messages in thread
From: Kevin Traynor @ 2019-10-21 13:24 UTC (permalink / raw)
  To: Anatoly Burakov, dev
  Cc: Marcin Baran, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, bruce.richardson, thomas, david.marchand

On 17/10/2019 15:31, Anatoly Burakov wrote:
> From: Marcin Baran <marcinx.baran@intel.com>
> 
> Remove code for old ABI versions ahead of ABI version bump.
> 

I think there needs to be some doc updates for this.

Looking at http://doc.dpdk.org/guides/rel_notes/deprecation.html there
is nothing saying these functions are deprecated? (probably same issue
for other 'remove deprecated code' patches)

There should probably be an entry in the API/ABI changes section of the
release notes too.

> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> 
> Notes:
>     v2:
>     - Moved this to before ABI version bump to avoid compile breakage
> 
>  lib/librte_timer/rte_timer.c | 90 ++----------------------------------
>  lib/librte_timer/rte_timer.h | 15 ------
>  2 files changed, 5 insertions(+), 100 deletions(-)
> 
> diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c
> index bdcf05d06b..de6959b809 100644
> --- a/lib/librte_timer/rte_timer.c
> +++ b/lib/librte_timer/rte_timer.c
> @@ -68,9 +68,6 @@ static struct rte_timer_data *rte_timer_data_arr;
>  static const uint32_t default_data_id;
>  static uint32_t rte_timer_subsystem_initialized;
>  
> -/* For maintaining older interfaces for a period */
> -static struct rte_timer_data default_timer_data;
> -
>  /* when debug is enabled, store some statistics */
>  #ifdef RTE_LIBRTE_TIMER_DEBUG
>  #define __TIMER_STAT_ADD(priv_timer, name, n) do {			\
> @@ -131,22 +128,6 @@ rte_timer_data_dealloc(uint32_t id)
>  	return 0;
>  }
>  
> -void
> -rte_timer_subsystem_init_v20(void)
> -{
> -	unsigned lcore_id;
> -	struct priv_timer *priv_timer = default_timer_data.priv_timer;
> -
> -	/* since priv_timer is static, it's zeroed by default, so only init some
> -	 * fields.
> -	 */
> -	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id ++) {
> -		rte_spinlock_init(&priv_timer[lcore_id].list_lock);
> -		priv_timer[lcore_id].prev_lcore = lcore_id;
> -	}
> -}
> -VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
> -
>  /* Init the timer library. Allocate an array of timer data structs in shared
>   * memory, and allocate the zeroth entry for use with original timer
>   * APIs. Since the intersection of the sets of lcore ids in primary and
> @@ -154,7 +135,7 @@ VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
>   * multiple processes.
>   */
>  int
> -rte_timer_subsystem_init_v1905(void)
> +rte_timer_subsystem_init(void)
>  {
>  	const struct rte_memzone *mz;
>  	struct rte_timer_data *data;
> @@ -209,9 +190,6 @@ rte_timer_subsystem_init_v1905(void)
>  
>  	return 0;
>  }
> -MAP_STATIC_SYMBOL(int rte_timer_subsystem_init(void),
> -		  rte_timer_subsystem_init_v1905);
> -BIND_DEFAULT_SYMBOL(rte_timer_subsystem_init, _v1905, 19.05);
>  
>  void
>  rte_timer_subsystem_finalize(void)
> @@ -552,42 +530,13 @@ __rte_timer_reset(struct rte_timer *tim, uint64_t expire,
>  
>  /* Reset and start the timer associated with the timer handle tim */
>  int
> -rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
> -		    enum rte_timer_type type, unsigned int tim_lcore,
> -		    rte_timer_cb_t fct, void *arg)
> -{
> -	uint64_t cur_time = rte_get_timer_cycles();
> -	uint64_t period;
> -
> -	if (unlikely((tim_lcore != (unsigned)LCORE_ID_ANY) &&
> -			!(rte_lcore_is_enabled(tim_lcore) ||
> -			  rte_lcore_has_role(tim_lcore, ROLE_SERVICE))))
> -		return -1;
> -
> -	if (type == PERIODICAL)
> -		period = ticks;
> -	else
> -		period = 0;
> -
> -	return __rte_timer_reset(tim,  cur_time + ticks, period, tim_lcore,
> -			  fct, arg, 0, &default_timer_data);
> -}
> -VERSION_SYMBOL(rte_timer_reset, _v20, 2.0);
> -
> -int
> -rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
> +rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
>  		      enum rte_timer_type type, unsigned int tim_lcore,
>  		      rte_timer_cb_t fct, void *arg)
>  {
>  	return rte_timer_alt_reset(default_data_id, tim, ticks, type,
>  				   tim_lcore, fct, arg);
>  }
> -MAP_STATIC_SYMBOL(int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
> -				      enum rte_timer_type type,
> -				      unsigned int tim_lcore,
> -				      rte_timer_cb_t fct, void *arg),
> -		  rte_timer_reset_v1905);
> -BIND_DEFAULT_SYMBOL(rte_timer_reset, _v1905, 19.05);
>  
>  int
>  rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim,
> @@ -658,20 +607,10 @@ __rte_timer_stop(struct rte_timer *tim, int local_is_locked,
>  
>  /* Stop the timer associated with the timer handle tim */
>  int
> -rte_timer_stop_v20(struct rte_timer *tim)
> -{
> -	return __rte_timer_stop(tim, 0, &default_timer_data);
> -}
> -VERSION_SYMBOL(rte_timer_stop, _v20, 2.0);
> -
> -int
> -rte_timer_stop_v1905(struct rte_timer *tim)
> +rte_timer_stop(struct rte_timer *tim)
>  {
>  	return rte_timer_alt_stop(default_data_id, tim);
>  }
> -MAP_STATIC_SYMBOL(int rte_timer_stop(struct rte_timer *tim),
> -		  rte_timer_stop_v1905);
> -BIND_DEFAULT_SYMBOL(rte_timer_stop, _v1905, 19.05);
>  
>  int
>  rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim)
> @@ -817,15 +756,8 @@ __rte_timer_manage(struct rte_timer_data *timer_data)
>  	priv_timer[lcore_id].running_tim = NULL;
>  }
>  
> -void
> -rte_timer_manage_v20(void)
> -{
> -	__rte_timer_manage(&default_timer_data);
> -}
> -VERSION_SYMBOL(rte_timer_manage, _v20, 2.0);
> -
>  int
> -rte_timer_manage_v1905(void)
> +rte_timer_manage(void)
>  {
>  	struct rte_timer_data *timer_data;
>  
> @@ -835,8 +767,6 @@ rte_timer_manage_v1905(void)
>  
>  	return 0;
>  }
> -MAP_STATIC_SYMBOL(int rte_timer_manage(void), rte_timer_manage_v1905);
> -BIND_DEFAULT_SYMBOL(rte_timer_manage, _v1905, 19.05);
>  
>  int
>  rte_timer_alt_manage(uint32_t timer_data_id,
> @@ -1074,21 +1004,11 @@ __rte_timer_dump_stats(struct rte_timer_data *timer_data __rte_unused, FILE *f)
>  #endif
>  }
>  
> -void
> -rte_timer_dump_stats_v20(FILE *f)
> -{
> -	__rte_timer_dump_stats(&default_timer_data, f);
> -}
> -VERSION_SYMBOL(rte_timer_dump_stats, _v20, 2.0);
> -
>  int
> -rte_timer_dump_stats_v1905(FILE *f)
> +rte_timer_dump_stats(FILE *f)
>  {
>  	return rte_timer_alt_dump_stats(default_data_id, f);
>  }
> -MAP_STATIC_SYMBOL(int rte_timer_dump_stats(FILE *f),
> -		  rte_timer_dump_stats_v1905);
> -BIND_DEFAULT_SYMBOL(rte_timer_dump_stats, _v1905, 19.05);
>  
>  int
>  rte_timer_alt_dump_stats(uint32_t timer_data_id __rte_unused, FILE *f)
> diff --git a/lib/librte_timer/rte_timer.h b/lib/librte_timer/rte_timer.h
> index 05d287d8f2..9dc5fc3092 100644
> --- a/lib/librte_timer/rte_timer.h
> +++ b/lib/librte_timer/rte_timer.h
> @@ -181,8 +181,6 @@ int rte_timer_data_dealloc(uint32_t id);
>   *      subsystem
>   */
>  int rte_timer_subsystem_init(void);
> -int rte_timer_subsystem_init_v1905(void);
> -void rte_timer_subsystem_init_v20(void);
>  
>  /**
>   * @warning
> @@ -250,13 +248,6 @@ void rte_timer_init(struct rte_timer *tim);
>  int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
>  		    enum rte_timer_type type, unsigned tim_lcore,
>  		    rte_timer_cb_t fct, void *arg);
> -int rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
> -			  enum rte_timer_type type, unsigned int tim_lcore,
> -			  rte_timer_cb_t fct, void *arg);
> -int rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
> -			enum rte_timer_type type, unsigned int tim_lcore,
> -			rte_timer_cb_t fct, void *arg);
> -
>  
>  /**
>   * Loop until rte_timer_reset() succeeds.
> @@ -313,8 +304,6 @@ rte_timer_reset_sync(struct rte_timer *tim, uint64_t ticks,
>   *   - (-1): The timer is in the RUNNING or CONFIG state.
>   */
>  int rte_timer_stop(struct rte_timer *tim);
> -int rte_timer_stop_v1905(struct rte_timer *tim);
> -int rte_timer_stop_v20(struct rte_timer *tim);
>  
>  /**
>   * Loop until rte_timer_stop() succeeds.
> @@ -358,8 +347,6 @@ int rte_timer_pending(struct rte_timer *tim);
>   *   - -EINVAL: timer subsystem not yet initialized
>   */
>  int rte_timer_manage(void);
> -int rte_timer_manage_v1905(void);
> -void rte_timer_manage_v20(void);
>  
>  /**
>   * Dump statistics about timers.
> @@ -371,8 +358,6 @@ void rte_timer_manage_v20(void);
>   *   - -EINVAL: timer subsystem not yet initialized
>   */
>  int rte_timer_dump_stats(FILE *f);
> -int rte_timer_dump_stats_v1905(FILE *f);
> -void rte_timer_dump_stats_v20(FILE *f);
>  
>  /**
>   * @warning
> 


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v4 04/10] timer: remove deprecated code
  2019-10-21 13:24       ` Kevin Traynor
@ 2019-10-24  9:07         ` Burakov, Anatoly
  0 siblings, 0 replies; 131+ messages in thread
From: Burakov, Anatoly @ 2019-10-24  9:07 UTC (permalink / raw)
  To: Kevin Traynor, dev
  Cc: Marcin Baran, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, bruce.richardson, thomas, david.marchand

On 21-Oct-19 2:24 PM, Kevin Traynor wrote:
> On 17/10/2019 15:31, Anatoly Burakov wrote:
>> From: Marcin Baran <marcinx.baran@intel.com>
>>
>> Remove code for old ABI versions ahead of ABI version bump.
>>
> 
> I think there needs to be some doc updates for this.
> 
> Looking at http://doc.dpdk.org/guides/rel_notes/deprecation.html there
> is nothing saying these functions are deprecated? (probably same issue
> for other 'remove deprecated code' patches)
> 
> There should probably be an entry in the API/ABI changes section of the
> release notes too.
> 

The new ABI policy implies such deprecation, because everything now 
becomes one ABI version across the board. I'm not changing the API - 
just removing old ABI.

Regarding doc patches, i had a chat with John and he agreed that doc 
patches for this can come later.

-- 
Thanks,
Anatoly

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v5 00/10] Implement the new ABI policy and add helper scripts
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
@ 2019-10-24  9:46       ` Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
                           ` (10 more replies)
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 01/10] config: change ABI versioning to global Anatoly Burakov
                         ` (9 subsequent siblings)
  10 siblings, 11 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-24  9:46 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, ray.kinsella, bruce.richardson, thomas, david.marchand

This patchset prepares the codebase for the new ABI policy and
adds a few helper scripts.

There are two new scripts for managing ABI versions added. The
first one is a Python script that will read in a .map file,
flatten it and update the ABI version to the ABI version
specified on the command-line.

The second one is a shell script that will run the above mentioned
Python script recursively over the source tree and set the ABI
version to either that which is defined in config/ABI_VERSION, or
a user-specified one.

Example of its usage: buildtools/update-abi.sh 20.0

This will recurse into lib/ and drivers/ directory and update
whatever .map files it can find.

The other shell script that's added is one that can take in a .so
file and ensure that its declared public ABI matches either
current ABI, next ABI, or EXPERIMENTAL. This was moved to the
last commit because it made no sense to have it beforehand.

The source tree was verified to follow the new ABI policy using
the following command (assuming built binaries are in build/):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

This returns 0.

Changes since v4:
- Fixed shared library build issue for distributor

Changes since v3:
- Put distributor code back and cleaned it up
- Rebased on latest master and regenerated commit 9

Changes since v2:
- Addressed Bruce's review comments
- Removed single distributor mode as per Dave's suggestion

Changes since v1:
- Reordered patchset to have removal of old ABI's before introducing
  the new one to avoid compile breakages between patches
- Added a new patch fixing missing symbol in octeontx common
- Split script commits into multiple commits and reordered them
- Re-generated the ABI bump commit
- Verified all scripts to work

Anatoly Burakov (2):
  buildtools: add ABI update shell script
  drivers/octeontx: add missing public symbol

Marcin Baran (6):
  config: change ABI versioning to global
  timer: remove deprecated code
  lpm: remove deprecated code
  distributor: remove deprecated code
  distributor: rename v2.0 ABI to _single suffix
  buildtools: add ABI versioning check script

Pawel Modrak (2):
  buildtools: add script for updating symbols abi version
  build: change ABI version to 20.0

 buildtools/check-abi-version.sh               |  54 +
 buildtools/meson.build                        |   2 +
 buildtools/update-abi.sh                      |  42 +
 buildtools/update_version_map_abi.py          | 170 +++
 config/ABI_VERSION                            |   1 +
 config/meson.build                            |   4 +-
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |   8 +-
 .../null/rte_pmd_bbdev_null_version.map       |   2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |   2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     | 115 +-
 drivers/bus/fslmc/rte_bus_fslmc_version.map   | 154 ++-
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |  14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |   2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |  12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |  12 +-
 drivers/common/cpt/rte_common_cpt_version.map |   4 +-
 .../common/dpaax/rte_common_dpaax_version.map |   4 +-
 .../common/mvep/rte_common_mvep_version.map   |   6 +-
 .../octeontx/rte_common_octeontx_version.map  |   7 +-
 .../rte_common_octeontx2_version.map          |  16 +-
 .../compress/isal/rte_pmd_isal_version.map    |   2 +-
 .../rte_pmd_octeontx_compress_version.map     |   2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |   2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |   2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |   2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |   2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |   2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |   3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |   3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |  10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |  10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |   2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |   2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |   2 +-
 .../null/rte_pmd_null_crypto_version.map      |   2 +-
 .../rte_pmd_octeontx_crypto_version.map       |   3 +-
 .../openssl/rte_pmd_openssl_version.map       |   2 +-
 .../rte_pmd_crypto_scheduler_version.map      |  19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |   2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |   2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |   2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |   3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |   2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |   2 +-
 .../rte_pmd_octeontx_event_version.map        |   2 +-
 .../rte_pmd_octeontx2_event_version.map       |   3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |   2 +-
 .../rte_pmd_skeleton_event_version.map        |   3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |   2 +-
 .../bucket/rte_mempool_bucket_version.map     |   3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |   2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |  12 +-
 .../octeontx/rte_mempool_octeontx_version.map |   2 +-
 .../rte_mempool_octeontx2_version.map         |   4 +-
 .../mempool/ring/rte_mempool_ring_version.map |   3 +-
 .../stack/rte_mempool_stack_version.map       |   3 +-
 drivers/meson.build                           |  20 +-
 .../af_packet/rte_pmd_af_packet_version.map   |   3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |   2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |   5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |   4 +-
 drivers/net/avp/rte_pmd_avp_version.map       |   2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |   2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |   3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |   4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |  47 +-
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |   3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |  11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |  12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |   3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |   3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |   3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |   3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |   3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |   3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |   3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |   4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |  65 +-
 drivers/net/iavf/rte_pmd_iavf_version.map     |   3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |   3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |   3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |   3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |  62 +-
 drivers/net/kni/rte_pmd_kni_version.map       |   3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |   3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |   5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |   3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |   2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |   2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |   2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |   4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |   3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |   2 +-
 drivers/net/null/rte_pmd_null_version.map     |   3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |  10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |   3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |   3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |   3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |  10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |   3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |   2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |   2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |   3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |   3 +-
 .../rte_pmd_vdev_netvsc_version.map           |   3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |  11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |   3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |   3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |   3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |   4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |   3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |   3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |   5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |   3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |   3 +-
 lib/librte_acl/rte_acl_version.map            |   2 +-
 lib/librte_bbdev/rte_bbdev_version.map        |   4 +
 .../rte_bitratestats_version.map              |   2 +-
 lib/librte_bpf/rte_bpf_version.map            |   4 +
 lib/librte_cfgfile/rte_cfgfile_version.map    |  34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |  10 +-
 .../rte_compressdev_version.map               |   4 +
 .../rte_cryptodev_version.map                 | 102 +-
 lib/librte_distributor/Makefile               |   2 +-
 lib/librte_distributor/meson.build            |   2 +-
 lib/librte_distributor/rte_distributor.c      |  80 +-
 .../rte_distributor_private.h                 |  10 +-
 ...ributor_v20.c => rte_distributor_single.c} |  57 +-
 ...ributor_v20.h => rte_distributor_single.h} |  26 +-
 .../rte_distributor_v1705.h                   |  61 --
 .../rte_distributor_version.map               |  16 +-
 lib/librte_eal/rte_eal_version.map            | 310 ++----
 lib/librte_efd/rte_efd_version.map            |   2 +-
 lib/librte_ethdev/rte_ethdev_version.map      | 160 +--
 lib/librte_eventdev/rte_eventdev_version.map  | 130 +--
 .../rte_flow_classify_version.map             |   4 +
 lib/librte_gro/rte_gro_version.map            |   2 +-
 lib/librte_gso/rte_gso_version.map            |   2 +-
 lib/librte_hash/rte_hash_version.map          |  43 +-
 lib/librte_ip_frag/rte_ip_frag_version.map    |  10 +-
 lib/librte_ipsec/rte_ipsec_version.map        |   4 +
 lib/librte_jobstats/rte_jobstats_version.map  |  10 +-
 lib/librte_kni/rte_kni_version.map            |   2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |   4 +-
 .../rte_latencystats_version.map              |   2 +-
 lib/librte_lpm/rte_lpm.c                      | 996 +-----------------
 lib/librte_lpm/rte_lpm.h                      |  88 --
 lib/librte_lpm/rte_lpm6.c                     | 132 +--
 lib/librte_lpm/rte_lpm6.h                     |  25 -
 lib/librte_lpm/rte_lpm_version.map            |  39 +-
 lib/librte_mbuf/rte_mbuf_version.map          |  49 +-
 lib/librte_member/rte_member_version.map      |   2 +-
 lib/librte_mempool/rte_mempool_version.map    |  44 +-
 lib/librte_meter/rte_meter_version.map        |  13 +-
 lib/librte_metrics/rte_metrics_version.map    |   2 +-
 lib/librte_net/rte_net_version.map            |  23 +-
 lib/librte_pci/rte_pci_version.map            |   2 +-
 lib/librte_pdump/rte_pdump_version.map        |   2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |  36 +-
 lib/librte_port/rte_port_version.map          |  64 +-
 lib/librte_power/rte_power_version.map        |  24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |   4 +-
 lib/librte_rcu/rte_rcu_version.map            |   4 +
 lib/librte_reorder/rte_reorder_version.map    |   8 +-
 lib/librte_ring/rte_ring_version.map          |  10 +-
 lib/librte_sched/rte_sched_version.map        |  14 +-
 lib/librte_security/rte_security_version.map  |   2 +-
 lib/librte_stack/rte_stack_version.map        |   4 +
 lib/librte_table/rte_table_version.map        |   2 +-
 .../rte_telemetry_version.map                 |   4 +
 lib/librte_timer/rte_timer.c                  |  90 +-
 lib/librte_timer/rte_timer.h                  |  15 -
 lib/librte_timer/rte_timer_version.map        |  12 +-
 lib/librte_vhost/rte_vhost_version.map        |  52 +-
 lib/meson.build                               |  18 +-
 meson_options.txt                             |   2 -
 mk/rte.lib.mk                                 |  13 +-
 177 files changed, 1141 insertions(+), 2912 deletions(-)
 create mode 100755 buildtools/check-abi-version.sh
 create mode 100755 buildtools/update-abi.sh
 create mode 100755 buildtools/update_version_map_abi.py
 create mode 100644 config/ABI_VERSION
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (84%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h

-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v5 01/10] config: change ABI versioning to global
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
@ 2019-10-24  9:46       ` Anatoly Burakov
  2019-11-05 11:05         ` David Marchand
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
                         ` (8 subsequent siblings)
  10 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-24  9:46 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Thomas Monjalon, Bruce Richardson, john.mcnamara,
	ray.kinsella, david.marchand, Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

As per new ABI policy, all of the libraries are now versioned using
one global ABI version. Changes in this patch implement the
necessary steps to enable that.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v3:
    - Removed Windows support from Makefile changes
    - Removed unneeded path conversions from meson files

 buildtools/meson.build |  2 ++
 config/ABI_VERSION     |  1 +
 config/meson.build     |  4 +++-
 drivers/meson.build    | 20 ++++++++++++--------
 lib/meson.build        | 18 +++++++++++-------
 meson_options.txt      |  2 --
 mk/rte.lib.mk          | 13 ++++---------
 7 files changed, 33 insertions(+), 27 deletions(-)
 create mode 100644 config/ABI_VERSION

diff --git a/buildtools/meson.build b/buildtools/meson.build
index 32c79c1308..78ce69977d 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -12,3 +12,5 @@ if python3.found()
 else
 	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
 endif
+
+is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
diff --git a/config/ABI_VERSION b/config/ABI_VERSION
new file mode 100644
index 0000000000..9a7c1e503f
--- /dev/null
+++ b/config/ABI_VERSION
@@ -0,0 +1 @@
+20.0
diff --git a/config/meson.build b/config/meson.build
index acacba704a..40ad34345f 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -18,6 +18,8 @@ endforeach
 # depending on the configuration options
 pver = meson.project_version().split('.')
 major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
+abi_version = run_command(find_program('cat', 'more'),
+	files('ABI_VERSION')).stdout().strip()
 
 # extract all version information into the build configuration
 dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
@@ -37,7 +39,7 @@ endif
 
 pmd_subdir_opt = get_option('drivers_install_subdir')
 if pmd_subdir_opt.contains('<VERSION>')
-	pmd_subdir_opt = major_version.join(pmd_subdir_opt.split('<VERSION>'))
+	pmd_subdir_opt = abi_version.join(pmd_subdir_opt.split('<VERSION>'))
 endif
 driver_install_path = join_paths(get_option('libdir'), pmd_subdir_opt)
 eal_pmd_path = join_paths(get_option('prefix'), driver_install_path)
diff --git a/drivers/meson.build b/drivers/meson.build
index 4a1cb8b5be..1c1190053e 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -119,12 +119,19 @@ foreach class:dpdk_driver_classes
 					output: out_filename,
 					depends: [pmdinfogen, tmp_lib])
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/@2@_version.map'.format(
+					meson.current_source_dir(),
+					drv_path, lib_name)
+
+			is_experimental = run_command(is_experimental_cmd,
+				files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
-				lib_version = major_version
-				so_version = major_version
+				lib_version = abi_version
+				so_version = abi_version
 			endif
 
 			# now build the static driver
@@ -137,9 +144,6 @@ foreach class:dpdk_driver_classes
 				install: true)
 
 			# now build the shared driver
-			version_map = '@0@/@1@/@2@_version.map'.format(
-					meson.current_source_dir(),
-					drv_path, lib_name)
 			shared_lib = shared_library(lib_name,
 				sources,
 				objects: objs,
diff --git a/lib/meson.build b/lib/meson.build
index 8ea3671c04..6302c0b680 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -100,12 +100,18 @@ foreach l:libraries
 				cflags += '-DALLOW_EXPERIMENTAL_API'
 			endif
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/rte_@2@_version.map'.format(
+					meson.current_source_dir(), dir_name, name)
+
+			is_experimental = run_command(is_experimental_cmd,
+					files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
-				lib_version = major_version
-				so_version = major_version
+				lib_version = abi_version
+				so_version = abi_version
 			endif
 
 			# first build static lib
@@ -123,8 +129,6 @@ foreach l:libraries
 			# then use pre-build objects to build shared lib
 			sources = []
 			objs += static_lib.extract_all_objects(recursive: false)
-			version_map = '@0@/@1@/rte_@2@_version.map'.format(
-					meson.current_source_dir(), dir_name, name)
 			implib = dir_name + '.dll.a'
 
 			def_file = custom_target(name + '_def',
diff --git a/meson_options.txt b/meson_options.txt
index 89650b0e9c..da6a7f0302 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -30,8 +30,6 @@ option('max_lcores', type: 'integer', value: 128,
 	description: 'maximum number of cores/threads supported by EAL')
 option('max_numa_nodes', type: 'integer', value: 4,
 	description: 'maximum number of NUMA nodes supported by EAL')
-option('per_library_versions', type: 'boolean', value: true,
-	description: 'true: each lib gets its own version number, false: DPDK version used for each lib')
 option('tests', type: 'boolean', value: true,
 	description: 'build unit tests')
 option('use_hpet', type: 'boolean', value: false,
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index 4df8849a08..e1ea292b6e 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -11,20 +11,15 @@ EXTLIB_BUILD ?= n
 # VPATH contains at least SRCDIR
 VPATH += $(SRCDIR)
 
-ifneq ($(CONFIG_RTE_MAJOR_ABI),)
-ifneq ($(LIBABIVER),)
-LIBABIVER := $(CONFIG_RTE_MAJOR_ABI)
-endif
+ifneq ($(shell grep "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)
+LIBABIVER := $(shell cat $(RTE_SRCDIR)/config/ABI_VERSION)
+else
+LIBABIVER := 0
 endif
 
 ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
 LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))
 ifeq ($(EXTLIB_BUILD),n)
-ifeq ($(CONFIG_RTE_MAJOR_ABI),)
-ifeq ($(CONFIG_RTE_NEXT_ABI),y)
-LIB := $(LIB).1
-endif
-endif
 CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
 endif
 endif
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v5 02/10] buildtools: add script for updating symbols abi version
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 01/10] config: change ABI versioning to global Anatoly Burakov
@ 2019-10-24  9:46       ` Anatoly Burakov
  2019-11-06 15:38         ` David Marchand
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 03/10] buildtools: add ABI update shell script Anatoly Burakov
                         ` (7 subsequent siblings)
  10 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-24  9:46 UTC (permalink / raw)
  To: dev
  Cc: Pawel Modrak, john.mcnamara, ray.kinsella, bruce.richardson,
	thomas, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Add a script that automatically merges all stable ABI's under one
ABI section with the new version, while leaving experimental
section exactly as it is.

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v3:
    - Add comments to regex patterns
    
    v2:
    - Reworked script to be pep8-compliant and more reliable

 buildtools/update_version_map_abi.py | 170 +++++++++++++++++++++++++++
 1 file changed, 170 insertions(+)
 create mode 100755 buildtools/update_version_map_abi.py

diff --git a/buildtools/update_version_map_abi.py b/buildtools/update_version_map_abi.py
new file mode 100755
index 0000000000..50283e6a3d
--- /dev/null
+++ b/buildtools/update_version_map_abi.py
@@ -0,0 +1,170 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+"""
+A Python program to update the ABI version and function names in a DPDK
+lib_*_version.map file. Called from the buildtools/update_abi.sh utility.
+"""
+
+from __future__ import print_function
+import argparse
+import sys
+import re
+
+
+def __parse_map_file(f_in):
+    # match function name, followed by semicolon, followed by EOL, optionally
+    # with whitespace inbetween each item
+    func_line_regex = re.compile(r"\s*"
+                                 r"(?P<func>[a-zA-Z_0-9]+)"
+                                 r"\s*"
+                                 r";"
+                                 r"\s*"
+                                 r"$")
+    # match section name, followed by opening bracked, followed by EOL,
+    # optionally with whitespace inbetween each item
+    section_begin_regex = re.compile(r"\s*"
+                                     r"(?P<version>[a-zA-Z0-9_\.]+)"
+                                     r"\s*"
+                                     r"{"
+                                     r"\s*"
+                                     r"$")
+    # match closing bracket, optionally followed by section name (for when we
+    # inherit from another ABI version), followed by semicolon, followed by
+    # EOL, optionally with whitespace inbetween each item
+    section_end_regex = re.compile(r"\s*"
+                                   r"}"
+                                   r"\s*"
+                                   r"(?P<parent>[a-zA-Z0-9_\.]+)?"
+                                   r"\s*"
+                                   r";"
+                                   r"\s*"
+                                   r"$")
+
+    # for stable ABI, we don't care about which version introduced which
+    # function, we just flatten the list. there are dupes in certain files, so
+    # use a set instead of a list
+    stable_lines = set()
+    # copy experimental section as is
+    experimental_lines = []
+    is_experimental = False
+
+    # gather all functions
+    for line in f_in:
+        # clean up the line
+        line = line.strip('\n').strip()
+
+        # is this an end of section?
+        match = section_end_regex.match(line)
+        if match:
+            # whatever section this was, it's not active any more
+            is_experimental = False
+            continue
+
+        # if we're in the middle of experimental section, we need to copy
+        # the section verbatim, so just add the line
+        if is_experimental:
+            experimental_lines += [line]
+            continue
+
+        # skip empty lines
+        if not line:
+            continue
+
+        # is this a beginning of a new section?
+        match = section_begin_regex.match(line)
+        if match:
+            cur_section = match.group("version")
+            # is it experimental?
+            is_experimental = cur_section == "EXPERIMENTAL"
+            continue
+
+        # is this a function?
+        match = func_line_regex.match(line)
+        if match:
+            stable_lines.add(match.group("func"))
+
+    return stable_lines, experimental_lines
+
+
+def __regenerate_map_file(f_out, abi_version, stable_lines,
+                          experimental_lines):
+    # print ABI version header
+    print("DPDK_{} {{".format(abi_version), file=f_out)
+
+    if stable_lines:
+        # print global section
+        print("\tglobal:", file=f_out)
+        # blank line
+        print(file=f_out)
+
+        # print all stable lines, alphabetically sorted
+        for line in sorted(stable_lines):
+            print("\t{};".format(line), file=f_out)
+
+        # another blank line
+        print(file=f_out)
+
+    # print local section
+    print("\tlocal: *;", file=f_out)
+
+    # end stable version
+    print("};", file=f_out)
+
+    # do we have experimental lines?
+    if not experimental_lines:
+        return
+
+    # another blank line
+    print(file=f_out)
+
+    # start experimental section
+    print("EXPERIMENTAL {", file=f_out)
+
+    # print all experimental lines as they were
+    for line in experimental_lines:
+        # don't print empty whitespace
+        if not line:
+            print("", file=f_out)
+        else:
+            print("\t{}".format(line), file=f_out)
+
+    # end section
+    print("};", file=f_out)
+
+
+def __main():
+    arg_parser = argparse.ArgumentParser(
+        description='Merge versions in linker version script.')
+
+    arg_parser.add_argument("map_file", type=str,
+                            help='path to linker version script file '
+                                 '(pattern: *version.map)')
+    arg_parser.add_argument("abi_version", type=str,
+                            help='target ABI version (pattern: MAJOR.MINOR)')
+
+    parsed = arg_parser.parse_args()
+
+    if not parsed.map_file.endswith('version.map'):
+        print("Invalid input file: {}".format(parsed.map_file),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    if not re.match(r"\d{1,2}\.\d{1,2}", parsed.abi_version):
+        print("Invalid ABI version: {}".format(parsed.abi_version),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    with open(parsed.map_file) as f_in:
+        stable_lines, experimental_lines = __parse_map_file(f_in)
+
+    with open(parsed.map_file, 'w') as f_out:
+        __regenerate_map_file(f_out, parsed.abi_version, stable_lines,
+                              experimental_lines)
+
+
+if __name__ == "__main__":
+    __main()
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v5 03/10] buildtools: add ABI update shell script
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
                         ` (2 preceding siblings ...)
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
@ 2019-10-24  9:46       ` Anatoly Burakov
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 04/10] timer: remove deprecated code Anatoly Burakov
                         ` (6 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-24  9:46 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, ray.kinsella, bruce.richardson, thomas, david.marchand

In order to facilitate mass updating of version files, add a shell
script that recurses into lib/ and drivers/ directories and calls
the ABI version update script.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v3:
    - Switch to sh rather than bash, and remove bash-isms
    - Address review comments
    
    v2:
    - Add this patch to split the shell script from previous commit
    - Fixup miscellaneous bugs

 buildtools/update-abi.sh | 42 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100755 buildtools/update-abi.sh

diff --git a/buildtools/update-abi.sh b/buildtools/update-abi.sh
new file mode 100755
index 0000000000..89ba5804a6
--- /dev/null
+++ b/buildtools/update-abi.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+abi_version=$1
+abi_version_file="./config/ABI_VERSION"
+update_path="lib drivers"
+
+if [ -z "$1" ]; then
+      # output to stderr
+      >&2 echo "Please provide ABI version"
+      exit 1
+fi
+
+# check version string format
+echo $abi_version | grep -q -e "^[[:digit:]]\{1,2\}\.[[:digit:]]\{1,2\}$"
+if [ "$?" -ne 0 ]; then
+      # output to stderr
+      >&2 echo "ABI version must be formatted as MAJOR.MINOR version"
+      exit 1
+fi
+
+if [ -n "$2" ]; then
+      abi_version_file=$2
+fi
+
+if [ -n "$3" ]; then
+      # drop $1 and $2
+      shift 2
+      # assign all other arguments as update paths
+      update_path=$@
+fi
+
+echo "New ABI version:" $abi_version
+echo "ABI_VERSION path:" $abi_version_file
+echo "Path to update:" $update_path
+
+echo $abi_version > $abi_version_file
+
+find $update_path -name  \*version.map -exec \
+      ./buildtools/update_version_map_abi.py {} \
+      $abi_version \; -print
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v5 04/10] timer: remove deprecated code
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
                         ` (3 preceding siblings ...)
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 03/10] buildtools: add ABI update shell script Anatoly Burakov
@ 2019-10-24  9:46       ` Anatoly Burakov
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 05/10] lpm: " Anatoly Burakov
                         ` (5 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-24  9:46 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, ray.kinsella, bruce.richardson, thomas,
	david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_timer/rte_timer.c | 90 ++----------------------------------
 lib/librte_timer/rte_timer.h | 15 ------
 2 files changed, 5 insertions(+), 100 deletions(-)

diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c
index bdcf05d06b..de6959b809 100644
--- a/lib/librte_timer/rte_timer.c
+++ b/lib/librte_timer/rte_timer.c
@@ -68,9 +68,6 @@ static struct rte_timer_data *rte_timer_data_arr;
 static const uint32_t default_data_id;
 static uint32_t rte_timer_subsystem_initialized;
 
-/* For maintaining older interfaces for a period */
-static struct rte_timer_data default_timer_data;
-
 /* when debug is enabled, store some statistics */
 #ifdef RTE_LIBRTE_TIMER_DEBUG
 #define __TIMER_STAT_ADD(priv_timer, name, n) do {			\
@@ -131,22 +128,6 @@ rte_timer_data_dealloc(uint32_t id)
 	return 0;
 }
 
-void
-rte_timer_subsystem_init_v20(void)
-{
-	unsigned lcore_id;
-	struct priv_timer *priv_timer = default_timer_data.priv_timer;
-
-	/* since priv_timer is static, it's zeroed by default, so only init some
-	 * fields.
-	 */
-	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id ++) {
-		rte_spinlock_init(&priv_timer[lcore_id].list_lock);
-		priv_timer[lcore_id].prev_lcore = lcore_id;
-	}
-}
-VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
-
 /* Init the timer library. Allocate an array of timer data structs in shared
  * memory, and allocate the zeroth entry for use with original timer
  * APIs. Since the intersection of the sets of lcore ids in primary and
@@ -154,7 +135,7 @@ VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
  * multiple processes.
  */
 int
-rte_timer_subsystem_init_v1905(void)
+rte_timer_subsystem_init(void)
 {
 	const struct rte_memzone *mz;
 	struct rte_timer_data *data;
@@ -209,9 +190,6 @@ rte_timer_subsystem_init_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_subsystem_init(void),
-		  rte_timer_subsystem_init_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_subsystem_init, _v1905, 19.05);
 
 void
 rte_timer_subsystem_finalize(void)
@@ -552,42 +530,13 @@ __rte_timer_reset(struct rte_timer *tim, uint64_t expire,
 
 /* Reset and start the timer associated with the timer handle tim */
 int
-rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-		    enum rte_timer_type type, unsigned int tim_lcore,
-		    rte_timer_cb_t fct, void *arg)
-{
-	uint64_t cur_time = rte_get_timer_cycles();
-	uint64_t period;
-
-	if (unlikely((tim_lcore != (unsigned)LCORE_ID_ANY) &&
-			!(rte_lcore_is_enabled(tim_lcore) ||
-			  rte_lcore_has_role(tim_lcore, ROLE_SERVICE))))
-		return -1;
-
-	if (type == PERIODICAL)
-		period = ticks;
-	else
-		period = 0;
-
-	return __rte_timer_reset(tim,  cur_time + ticks, period, tim_lcore,
-			  fct, arg, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_reset, _v20, 2.0);
-
-int
-rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
+rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		      enum rte_timer_type type, unsigned int tim_lcore,
 		      rte_timer_cb_t fct, void *arg)
 {
 	return rte_timer_alt_reset(default_data_id, tim, ticks, type,
 				   tim_lcore, fct, arg);
 }
-MAP_STATIC_SYMBOL(int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
-				      enum rte_timer_type type,
-				      unsigned int tim_lcore,
-				      rte_timer_cb_t fct, void *arg),
-		  rte_timer_reset_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_reset, _v1905, 19.05);
 
 int
 rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim,
@@ -658,20 +607,10 @@ __rte_timer_stop(struct rte_timer *tim, int local_is_locked,
 
 /* Stop the timer associated with the timer handle tim */
 int
-rte_timer_stop_v20(struct rte_timer *tim)
-{
-	return __rte_timer_stop(tim, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_stop, _v20, 2.0);
-
-int
-rte_timer_stop_v1905(struct rte_timer *tim)
+rte_timer_stop(struct rte_timer *tim)
 {
 	return rte_timer_alt_stop(default_data_id, tim);
 }
-MAP_STATIC_SYMBOL(int rte_timer_stop(struct rte_timer *tim),
-		  rte_timer_stop_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_stop, _v1905, 19.05);
 
 int
 rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim)
@@ -817,15 +756,8 @@ __rte_timer_manage(struct rte_timer_data *timer_data)
 	priv_timer[lcore_id].running_tim = NULL;
 }
 
-void
-rte_timer_manage_v20(void)
-{
-	__rte_timer_manage(&default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_manage, _v20, 2.0);
-
 int
-rte_timer_manage_v1905(void)
+rte_timer_manage(void)
 {
 	struct rte_timer_data *timer_data;
 
@@ -835,8 +767,6 @@ rte_timer_manage_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_manage(void), rte_timer_manage_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_manage, _v1905, 19.05);
 
 int
 rte_timer_alt_manage(uint32_t timer_data_id,
@@ -1074,21 +1004,11 @@ __rte_timer_dump_stats(struct rte_timer_data *timer_data __rte_unused, FILE *f)
 #endif
 }
 
-void
-rte_timer_dump_stats_v20(FILE *f)
-{
-	__rte_timer_dump_stats(&default_timer_data, f);
-}
-VERSION_SYMBOL(rte_timer_dump_stats, _v20, 2.0);
-
 int
-rte_timer_dump_stats_v1905(FILE *f)
+rte_timer_dump_stats(FILE *f)
 {
 	return rte_timer_alt_dump_stats(default_data_id, f);
 }
-MAP_STATIC_SYMBOL(int rte_timer_dump_stats(FILE *f),
-		  rte_timer_dump_stats_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_dump_stats, _v1905, 19.05);
 
 int
 rte_timer_alt_dump_stats(uint32_t timer_data_id __rte_unused, FILE *f)
diff --git a/lib/librte_timer/rte_timer.h b/lib/librte_timer/rte_timer.h
index 05d287d8f2..9dc5fc3092 100644
--- a/lib/librte_timer/rte_timer.h
+++ b/lib/librte_timer/rte_timer.h
@@ -181,8 +181,6 @@ int rte_timer_data_dealloc(uint32_t id);
  *      subsystem
  */
 int rte_timer_subsystem_init(void);
-int rte_timer_subsystem_init_v1905(void);
-void rte_timer_subsystem_init_v20(void);
 
 /**
  * @warning
@@ -250,13 +248,6 @@ void rte_timer_init(struct rte_timer *tim);
 int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		    enum rte_timer_type type, unsigned tim_lcore,
 		    rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
-			  enum rte_timer_type type, unsigned int tim_lcore,
-			  rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-			enum rte_timer_type type, unsigned int tim_lcore,
-			rte_timer_cb_t fct, void *arg);
-
 
 /**
  * Loop until rte_timer_reset() succeeds.
@@ -313,8 +304,6 @@ rte_timer_reset_sync(struct rte_timer *tim, uint64_t ticks,
  *   - (-1): The timer is in the RUNNING or CONFIG state.
  */
 int rte_timer_stop(struct rte_timer *tim);
-int rte_timer_stop_v1905(struct rte_timer *tim);
-int rte_timer_stop_v20(struct rte_timer *tim);
 
 /**
  * Loop until rte_timer_stop() succeeds.
@@ -358,8 +347,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_manage(void);
-int rte_timer_manage_v1905(void);
-void rte_timer_manage_v20(void);
 
 /**
  * Dump statistics about timers.
@@ -371,8 +358,6 @@ void rte_timer_manage_v20(void);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_dump_stats(FILE *f);
-int rte_timer_dump_stats_v1905(FILE *f);
-void rte_timer_dump_stats_v20(FILE *f);
 
 /**
  * @warning
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v5 05/10] lpm: remove deprecated code
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
                         ` (4 preceding siblings ...)
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 04/10] timer: remove deprecated code Anatoly Burakov
@ 2019-10-24  9:46       ` Anatoly Burakov
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 06/10] distributor: " Anatoly Burakov
                         ` (4 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-24  9:46 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Bruce Richardson, Vladimir Medvedkin,
	john.mcnamara, ray.kinsella, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_lpm/rte_lpm.c  | 996 ++------------------------------------
 lib/librte_lpm/rte_lpm.h  |  88 ----
 lib/librte_lpm/rte_lpm6.c | 132 +----
 lib/librte_lpm/rte_lpm6.h |  25 -
 4 files changed, 48 insertions(+), 1193 deletions(-)

diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c
index 3a929a1b16..2687564194 100644
--- a/lib/librte_lpm/rte_lpm.c
+++ b/lib/librte_lpm/rte_lpm.c
@@ -89,34 +89,8 @@ depth_to_range(uint8_t depth)
 /*
  * Find an existing lpm table and return a pointer to it.
  */
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name)
-{
-	struct rte_lpm_v20 *l = NULL;
-	struct rte_tailq_entry *te;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_read_lock();
-	TAILQ_FOREACH(te, lpm_list, next) {
-		l = te->data;
-		if (strncmp(name, l->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-	rte_mcfg_tailq_read_unlock();
-
-	if (te == NULL) {
-		rte_errno = ENOENT;
-		return NULL;
-	}
-
-	return l;
-}
-VERSION_SYMBOL(rte_lpm_find_existing, _v20, 2.0);
-
 struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name)
+rte_lpm_find_existing(const char *name)
 {
 	struct rte_lpm *l = NULL;
 	struct rte_tailq_entry *te;
@@ -139,88 +113,12 @@ rte_lpm_find_existing_v1604(const char *name)
 
 	return l;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_find_existing, _v1604, 16.04);
-MAP_STATIC_SYMBOL(struct rte_lpm *rte_lpm_find_existing(const char *name),
-		rte_lpm_find_existing_v1604);
 
 /*
  * Allocates memory for LPM object
  */
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules,
-		__rte_unused int flags)
-{
-	char mem_name[RTE_LPM_NAMESIZE];
-	struct rte_lpm_v20 *lpm = NULL;
-	struct rte_tailq_entry *te;
-	uint32_t mem_size;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	RTE_BUILD_BUG_ON(sizeof(struct rte_lpm_tbl_entry_v20) != 2);
-
-	/* Check user arguments. */
-	if ((name == NULL) || (socket_id < -1) || (max_rules == 0)) {
-		rte_errno = EINVAL;
-		return NULL;
-	}
-
-	snprintf(mem_name, sizeof(mem_name), "LPM_%s", name);
-
-	/* Determine the amount of memory to allocate. */
-	mem_size = sizeof(*lpm) + (sizeof(lpm->rules_tbl[0]) * max_rules);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* guarantee there's no existing */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		lpm = te->data;
-		if (strncmp(name, lpm->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-
-	if (te != NULL) {
-		lpm = NULL;
-		rte_errno = EEXIST;
-		goto exit;
-	}
-
-	/* allocate tailq entry */
-	te = rte_zmalloc("LPM_TAILQ_ENTRY", sizeof(*te), 0);
-	if (te == NULL) {
-		RTE_LOG(ERR, LPM, "Failed to allocate tailq entry\n");
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Allocate memory to store the LPM data structures. */
-	lpm = rte_zmalloc_socket(mem_name, mem_size,
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (lpm == NULL) {
-		RTE_LOG(ERR, LPM, "LPM memory allocation failed\n");
-		rte_free(te);
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Save user arguments. */
-	lpm->max_rules = max_rules;
-	strlcpy(lpm->name, name, sizeof(lpm->name));
-
-	te->data = lpm;
-
-	TAILQ_INSERT_TAIL(lpm_list, te, next);
-
-exit:
-	rte_mcfg_tailq_write_unlock();
-
-	return lpm;
-}
-VERSION_SYMBOL(rte_lpm_create, _v20, 2.0);
-
 struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
+rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config)
 {
 	char mem_name[RTE_LPM_NAMESIZE];
@@ -320,45 +218,12 @@ rte_lpm_create_v1604(const char *name, int socket_id,
 
 	return lpm;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_create, _v1604, 16.04);
-MAP_STATIC_SYMBOL(
-	struct rte_lpm *rte_lpm_create(const char *name, int socket_id,
-			const struct rte_lpm_config *config), rte_lpm_create_v1604);
 
 /*
  * Deallocates memory for given LPM table.
  */
 void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm)
-{
-	struct rte_lpm_list *lpm_list;
-	struct rte_tailq_entry *te;
-
-	/* Check user arguments. */
-	if (lpm == NULL)
-		return;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* find our tailq entry */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		if (te->data == (void *) lpm)
-			break;
-	}
-	if (te != NULL)
-		TAILQ_REMOVE(lpm_list, te, next);
-
-	rte_mcfg_tailq_write_unlock();
-
-	rte_free(lpm);
-	rte_free(te);
-}
-VERSION_SYMBOL(rte_lpm_free, _v20, 2.0);
-
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm)
+rte_lpm_free(struct rte_lpm *lpm)
 {
 	struct rte_lpm_list *lpm_list;
 	struct rte_tailq_entry *te;
@@ -386,9 +251,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm)
 	rte_free(lpm);
 	rte_free(te);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_free, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
-		rte_lpm_free_v1604);
 
 /*
  * Adds a rule to the rule table.
@@ -401,79 +263,7 @@ MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-	uint8_t next_hop)
-{
-	uint32_t rule_gindex, rule_index, last_rule;
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	/* Scan through rule group to see if rule already exists. */
-	if (lpm->rule_info[depth - 1].used_rules > 0) {
-
-		/* rule_gindex stands for rule group index. */
-		rule_gindex = lpm->rule_info[depth - 1].first_rule;
-		/* Initialise rule_index to point to start of rule group. */
-		rule_index = rule_gindex;
-		/* Last rule = Last used rule in this rule group. */
-		last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-		for (; rule_index < last_rule; rule_index++) {
-
-			/* If rule already exists update its next_hop and return. */
-			if (lpm->rules_tbl[rule_index].ip == ip_masked) {
-				lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-				return rule_index;
-			}
-		}
-
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-	} else {
-		/* Calculate the position in which the rule will be stored. */
-		rule_index = 0;
-
-		for (i = depth - 1; i > 0; i--) {
-			if (lpm->rule_info[i - 1].used_rules > 0) {
-				rule_index = lpm->rule_info[i - 1].first_rule
-						+ lpm->rule_info[i - 1].used_rules;
-				break;
-			}
-		}
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-
-		lpm->rule_info[depth - 1].first_rule = rule_index;
-	}
-
-	/* Make room for the new rule in the array. */
-	for (i = RTE_LPM_MAX_DEPTH; i > depth; i--) {
-		if (lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules == lpm->max_rules)
-			return -ENOSPC;
-
-		if (lpm->rule_info[i - 1].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules]
-					= lpm->rules_tbl[lpm->rule_info[i - 1].first_rule];
-			lpm->rule_info[i - 1].first_rule++;
-		}
-	}
-
-	/* Add the new rule. */
-	lpm->rules_tbl[rule_index].ip = ip_masked;
-	lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-	/* Increment the used rules counter for this rule group. */
-	lpm->rule_info[depth - 1].used_rules++;
-
-	return rule_index;
-}
-
-static int32_t
-rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+rule_add(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	uint32_t next_hop)
 {
 	uint32_t rule_gindex, rule_index, last_rule;
@@ -549,30 +339,7 @@ rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static void
-rule_delete_v20(struct rte_lpm_v20 *lpm, int32_t rule_index, uint8_t depth)
-{
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	lpm->rules_tbl[rule_index] =
-			lpm->rules_tbl[lpm->rule_info[depth - 1].first_rule
-				+ lpm->rule_info[depth - 1].used_rules - 1];
-
-	for (i = depth; i < RTE_LPM_MAX_DEPTH; i++) {
-		if (lpm->rule_info[i].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i].first_rule - 1] =
-				lpm->rules_tbl[lpm->rule_info[i].first_rule
-					+ lpm->rule_info[i].used_rules - 1];
-			lpm->rule_info[i].first_rule--;
-		}
-	}
-
-	lpm->rule_info[depth - 1].used_rules--;
-}
-
-static void
-rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
+rule_delete(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
 {
 	int i;
 
@@ -599,28 +366,7 @@ rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_find_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth)
-{
-	uint32_t rule_gindex, last_rule, rule_index;
-
-	VERIFY_DEPTH(depth);
-
-	rule_gindex = lpm->rule_info[depth - 1].first_rule;
-	last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-	/* Scan used rules at given depth to find rule. */
-	for (rule_index = rule_gindex; rule_index < last_rule; rule_index++) {
-		/* If rule is found return the rule index. */
-		if (lpm->rules_tbl[rule_index].ip == ip_masked)
-			return rule_index;
-	}
-
-	/* If rule is not found return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
+rule_find(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
 {
 	uint32_t rule_gindex, last_rule, rule_index;
 
@@ -644,42 +390,7 @@ rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
  * Find, clean and allocate a tbl8.
  */
 static int32_t
-tbl8_alloc_v20(struct rte_lpm_tbl_entry_v20 *tbl8)
-{
-	uint32_t group_idx; /* tbl8 group index. */
-	struct rte_lpm_tbl_entry_v20 *tbl8_entry;
-
-	/* Scan through tbl8 to find a free (i.e. INVALID) tbl8 group. */
-	for (group_idx = 0; group_idx < RTE_LPM_TBL8_NUM_GROUPS;
-			group_idx++) {
-		tbl8_entry = &tbl8[group_idx * RTE_LPM_TBL8_GROUP_NUM_ENTRIES];
-		/* If a free tbl8 group is found clean it and set as VALID. */
-		if (!tbl8_entry->valid_group) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = INVALID,
-				.depth = 0,
-				.valid_group = VALID,
-			};
-			new_tbl8_entry.next_hop = 0;
-
-			memset(&tbl8_entry[0], 0,
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES *
-					sizeof(tbl8_entry[0]));
-
-			__atomic_store(tbl8_entry, &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-
-			/* Return group index for allocated tbl8 group. */
-			return group_idx;
-		}
-	}
-
-	/* If there are no tbl8 groups free then return error. */
-	return -ENOSPC;
-}
-
-static int32_t
-tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
+tbl8_alloc(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 {
 	uint32_t group_idx; /* tbl8 group index. */
 	struct rte_lpm_tbl_entry *tbl8_entry;
@@ -713,22 +424,7 @@ tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 }
 
 static void
-tbl8_free_v20(struct rte_lpm_tbl_entry_v20 *tbl8, uint32_t tbl8_group_start)
-{
-	/* Set tbl8 group invalid*/
-	struct rte_lpm_tbl_entry_v20 zero_tbl8_entry = {
-		.valid = INVALID,
-		.depth = 0,
-		.valid_group = INVALID,
-	};
-	zero_tbl8_entry.next_hop = 0;
-
-	__atomic_store(&tbl8[tbl8_group_start], &zero_tbl8_entry,
-			__ATOMIC_RELAXED);
-}
-
-static void
-tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
+tbl8_free(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 {
 	/* Set tbl8 group invalid*/
 	struct rte_lpm_tbl_entry zero_tbl8_entry = {0};
@@ -738,78 +434,7 @@ tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 }
 
 static __rte_noinline int32_t
-add_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index, tbl24_range, tbl8_index, tbl8_group_end, i, j;
-
-	/* Calculate the index into Table24. */
-	tbl24_index = ip >> 8;
-	tbl24_range = depth_to_range(depth);
-
-	for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-		/*
-		 * For invalid OR valid and non-extended tbl 24 entries set
-		 * entry.
-		 */
-		if (!lpm->tbl24[i].valid || (lpm->tbl24[i].valid_group == 0 &&
-				lpm->tbl24[i].depth <= depth)) {
-
-			struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.valid = VALID,
-				.valid_group = 0,
-				.depth = depth,
-			};
-			new_tbl24_entry.next_hop = next_hop;
-
-			/* Setting tbl24 entry in one go to avoid race
-			 * conditions
-			 */
-			__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-					__ATOMIC_RELEASE);
-
-			continue;
-		}
-
-		if (lpm->tbl24[i].valid_group == 1) {
-			/* If tbl24 entry is valid and extended calculate the
-			 *  index into tbl8.
-			 */
-			tbl8_index = lpm->tbl24[i].group_idx *
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-			tbl8_group_end = tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-			for (j = tbl8_index; j < tbl8_group_end; j++) {
-				if (!lpm->tbl8[j].valid ||
-						lpm->tbl8[j].depth <= depth) {
-					struct rte_lpm_tbl_entry_v20
-						new_tbl8_entry = {
-						.valid = VALID,
-						.valid_group = VALID,
-						.depth = depth,
-					};
-					new_tbl8_entry.next_hop = next_hop;
-
-					/*
-					 * Setting tbl8 entry in one go to avoid
-					 * race conditions
-					 */
-					__atomic_store(&lpm->tbl8[j],
-						&new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-					continue;
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+add_depth_small(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -881,150 +506,7 @@ add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 }
 
 static __rte_noinline int32_t
-add_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index;
-	int32_t tbl8_group_index, tbl8_group_start, tbl8_group_end, tbl8_index,
-		tbl8_range, i;
-
-	tbl24_index = (ip_masked >> 8);
-	tbl8_range = depth_to_range(depth);
-
-	if (!lpm->tbl24[tbl24_index].valid) {
-		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		/* Check tbl8 allocation was successful. */
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		/* Find index into tbl8 and range. */
-		tbl8_index = (tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES) +
-				(ip_masked & 0xFF);
-
-		/* Set tbl8 entry. */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.group_idx = (uint8_t)tbl8_group_index,
-			.valid = VALID,
-			.valid_group = 1,
-			.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} /* If valid entry but not extended calculate the index into Table8. */
-	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
-		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_group_end = tbl8_group_start +
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-		/* Populate new tbl8 with tbl24 value. */
-		for (i = tbl8_group_start; i < tbl8_group_end; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = lpm->tbl24[tbl24_index].depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop =
-				lpm->tbl24[tbl24_index].next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		/* Insert new rule into the tbl8 entry. */
-		for (i = tbl8_index; i < tbl8_index + tbl8_range; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.group_idx = (uint8_t)tbl8_group_index,
-				.valid = VALID,
-				.valid_group = 1,
-				.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} else { /*
-		* If it is valid, extended entry calculate the index into tbl8.
-		*/
-		tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-
-			if (!lpm->tbl8[i].valid ||
-					lpm->tbl8[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-					.valid = VALID,
-					.depth = depth,
-					.valid_group = lpm->tbl8[i].valid_group,
-				};
-				new_tbl8_entry.next_hop = next_hop;
-				/*
-				 * Setting tbl8 entry in one go to avoid race
-				 * condition
-				 */
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-				continue;
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+add_depth_big(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -1037,7 +519,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 
 	if (!lpm->tbl24[tbl24_index].valid) {
 		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		/* Check tbl8 allocation was successful. */
 		if (tbl8_group_index < 0) {
@@ -1083,7 +565,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	} /* If valid entry but not extended calculate the index into Table8. */
 	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
 		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		if (tbl8_group_index < 0) {
 			return tbl8_group_index;
@@ -1177,48 +659,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * Add a route
  */
 int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	int32_t rule_index, status = 0;
-	uint32_t ip_masked;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/* Add the rule to the rule table. */
-	rule_index = rule_add_v20(lpm, ip_masked, depth, next_hop);
-
-	/* If the is no space available for new rule return error. */
-	if (rule_index < 0) {
-		return rule_index;
-	}
-
-	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v20(lpm, ip_masked, depth, next_hop);
-	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v20(lpm, ip_masked, depth, next_hop);
-
-		/*
-		 * If add fails due to exhaustion of tbl8 extensions delete
-		 * rule that was added to rule table.
-		 */
-		if (status < 0) {
-			rule_delete_v20(lpm, rule_index, depth);
-
-			return status;
-		}
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_add, _v20, 2.0);
-
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 	int32_t rule_index, status = 0;
@@ -1231,7 +672,7 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	ip_masked = ip & depth_to_mask(depth);
 
 	/* Add the rule to the rule table. */
-	rule_index = rule_add_v1604(lpm, ip_masked, depth, next_hop);
+	rule_index = rule_add(lpm, ip_masked, depth, next_hop);
 
 	/* If the is no space available for new rule return error. */
 	if (rule_index < 0) {
@@ -1239,16 +680,16 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	}
 
 	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_small(lpm, ip_masked, depth, next_hop);
 	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_big(lpm, ip_masked, depth, next_hop);
 
 		/*
 		 * If add fails due to exhaustion of tbl8 extensions delete
 		 * rule that was added to rule table.
 		 */
 		if (status < 0) {
-			rule_delete_v1604(lpm, rule_index, depth);
+			rule_delete(lpm, rule_index, depth);
 
 			return status;
 		}
@@ -1256,42 +697,12 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_add, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_add(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t next_hop), rte_lpm_add_v1604);
 
 /*
  * Look for a rule in the high-level rules table
  */
 int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop)
-{
-	uint32_t ip_masked;
-	int32_t rule_index;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) ||
-		(next_hop == NULL) ||
-		(depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	/* Look for the rule using rule_find. */
-	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v20(lpm, ip_masked, depth);
-
-	if (rule_index >= 0) {
-		*next_hop = lpm->rules_tbl[rule_index].next_hop;
-		return 1;
-	}
-
-	/* If rule is not found return 0. */
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_is_rule_present, _v20, 2.0);
-
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop)
 {
 	uint32_t ip_masked;
@@ -1305,7 +716,7 @@ uint32_t *next_hop)
 
 	/* Look for the rule using rule_find. */
 	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v1604(lpm, ip_masked, depth);
+	rule_index = rule_find(lpm, ip_masked, depth);
 
 	if (rule_index >= 0) {
 		*next_hop = lpm->rules_tbl[rule_index].next_hop;
@@ -1315,12 +726,9 @@ uint32_t *next_hop)
 	/* If rule is not found return 0. */
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_is_rule_present, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t *next_hop), rte_lpm_is_rule_present_v1604);
 
 static int32_t
-find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
+find_previous_rule(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint8_t *sub_rule_depth)
 {
 	int32_t rule_index;
@@ -1330,7 +738,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
 		ip_masked = ip & depth_to_mask(prev_depth);
 
-		rule_index = rule_find_v20(lpm, ip_masked, prev_depth);
+		rule_index = rule_find(lpm, ip_masked, prev_depth);
 
 		if (rule_index >= 0) {
 			*sub_rule_depth = prev_depth;
@@ -1342,133 +750,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 }
 
 static int32_t
-find_previous_rule_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint8_t *sub_rule_depth)
-{
-	int32_t rule_index;
-	uint32_t ip_masked;
-	uint8_t prev_depth;
-
-	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
-		ip_masked = ip & depth_to_mask(prev_depth);
-
-		rule_index = rule_find_v1604(lpm, ip_masked, prev_depth);
-
-		if (rule_index >= 0) {
-			*sub_rule_depth = prev_depth;
-			return rule_index;
-		}
-	}
-
-	return -1;
-}
-
-static int32_t
-delete_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_range, tbl24_index, tbl8_group_index, tbl8_index, i, j;
-
-	/* Calculate the range and index into Table24. */
-	tbl24_range = depth_to_range(depth);
-	tbl24_index = (ip_masked >> 8);
-
-	/*
-	 * Firstly check the sub_rule_index. A -1 indicates no replacement rule
-	 * and a positive number indicates a sub_rule_index.
-	 */
-	if (sub_rule_index < 0) {
-		/*
-		 * If no replacement rule exists then invalidate entries
-		 * associated with this rule.
-		 */
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20
-					zero_tbl24_entry = {
-						.valid = INVALID,
-						.depth = 0,
-						.valid_group = 0,
-					};
-					zero_tbl24_entry.next_hop = 0;
-				__atomic_store(&lpm->tbl24[i],
-					&zero_tbl24_entry, __ATOMIC_RELEASE);
-			} else if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						lpm->tbl8[j].valid = INVALID;
-				}
-			}
-		}
-	} else {
-		/*
-		 * If a replacement rule exists then modify entries
-		 * associated with this rule.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->rules_tbl[sub_rule_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = sub_rule_depth,
-		};
-
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.valid_group = VALID,
-			.depth = sub_rule_depth,
-		};
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-						__ATOMIC_RELEASE);
-			} else  if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						__atomic_store(&lpm->tbl8[j],
-							&new_tbl8_entry,
-							__ATOMIC_RELAXED);
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_small(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1575,7 +857,7 @@ delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * thus can be recycled
  */
 static int32_t
-tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
+tbl8_recycle_check(struct rte_lpm_tbl_entry *tbl8,
 		uint32_t tbl8_group_start)
 {
 	uint32_t tbl8_group_end, i;
@@ -1622,140 +904,7 @@ tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
 }
 
 static int32_t
-tbl8_recycle_check_v1604(struct rte_lpm_tbl_entry *tbl8,
-		uint32_t tbl8_group_start)
-{
-	uint32_t tbl8_group_end, i;
-	tbl8_group_end = tbl8_group_start + RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-	/*
-	 * Check the first entry of the given tbl8. If it is invalid we know
-	 * this tbl8 does not contain any rule with a depth < RTE_LPM_MAX_DEPTH
-	 *  (As they would affect all entries in a tbl8) and thus this table
-	 *  can not be recycled.
-	 */
-	if (tbl8[tbl8_group_start].valid) {
-		/*
-		 * If first entry is valid check if the depth is less than 24
-		 * and if so check the rest of the entries to verify that they
-		 * are all of this depth.
-		 */
-		if (tbl8[tbl8_group_start].depth <= MAX_DEPTH_TBL24) {
-			for (i = (tbl8_group_start + 1); i < tbl8_group_end;
-					i++) {
-
-				if (tbl8[i].depth !=
-						tbl8[tbl8_group_start].depth) {
-
-					return -EEXIST;
-				}
-			}
-			/* If all entries are the same return the tb8 index */
-			return tbl8_group_start;
-		}
-
-		return -EEXIST;
-	}
-	/*
-	 * If the first entry is invalid check if the rest of the entries in
-	 * the tbl8 are invalid.
-	 */
-	for (i = (tbl8_group_start + 1); i < tbl8_group_end; i++) {
-		if (tbl8[i].valid)
-			return -EEXIST;
-	}
-	/* If no valid entries are found then return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-delete_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_index, tbl8_group_index, tbl8_group_start, tbl8_index,
-			tbl8_range, i;
-	int32_t tbl8_recycle_index;
-
-	/*
-	 * Calculate the index into tbl24 and range. Note: All depths larger
-	 * than MAX_DEPTH_TBL24 are associated with only one tbl24 entry.
-	 */
-	tbl24_index = ip_masked >> 8;
-
-	/* Calculate the index into tbl8 and range. */
-	tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-	tbl8_group_start = tbl8_group_index * RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-	tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-	tbl8_range = depth_to_range(depth);
-
-	if (sub_rule_index < 0) {
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be removed or modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				lpm->tbl8[i].valid = INVALID;
-		}
-	} else {
-		/* Set new tbl8 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.depth = sub_rule_depth,
-			.valid_group = lpm->tbl8[tbl8_group_start].valid_group,
-		};
-
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-		}
-	}
-
-	/*
-	 * Check if there are any valid entries in this tbl8 group. If all
-	 * tbl8 entries are invalid we can free the tbl8 and invalidate the
-	 * associated tbl24 entry.
-	 */
-
-	tbl8_recycle_index = tbl8_recycle_check_v20(lpm->tbl8, tbl8_group_start);
-
-	if (tbl8_recycle_index == -EINVAL) {
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		lpm->tbl24[tbl24_index].valid = 0;
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	} else if (tbl8_recycle_index > -1) {
-		/* Update tbl24 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->tbl8[tbl8_recycle_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = lpm->tbl8[tbl8_recycle_index].depth,
-		};
-
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELAXED);
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_big(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1810,7 +959,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 	 * associated tbl24 entry.
 	 */
 
-	tbl8_recycle_index = tbl8_recycle_check_v1604(lpm->tbl8, tbl8_group_start);
+	tbl8_recycle_index = tbl8_recycle_check(lpm->tbl8, tbl8_group_start);
 
 	if (tbl8_recycle_index == -EINVAL) {
 		/* Set tbl24 before freeing tbl8 to avoid race condition.
@@ -1818,7 +967,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		 */
 		lpm->tbl24[tbl24_index].valid = 0;
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	} else if (tbl8_recycle_index > -1) {
 		/* Update tbl24 entry. */
 		struct rte_lpm_tbl_entry new_tbl24_entry = {
@@ -1834,7 +983,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
 				__ATOMIC_RELAXED);
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	}
 #undef group_idx
 	return 0;
@@ -1844,7 +993,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * Deletes a rule
  */
 int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
+rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
 {
 	int32_t rule_to_delete_index, sub_rule_index;
 	uint32_t ip_masked;
@@ -1863,7 +1012,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * Find the index of the input rule, that needs to be deleted, in the
 	 * rule table.
 	 */
-	rule_to_delete_index = rule_find_v20(lpm, ip_masked, depth);
+	rule_to_delete_index = rule_find(lpm, ip_masked, depth);
 
 	/*
 	 * Check if rule_to_delete_index was found. If no rule was found the
@@ -1873,7 +1022,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 		return -EINVAL;
 
 	/* Delete the rule from the rule table. */
-	rule_delete_v20(lpm, rule_to_delete_index, depth);
+	rule_delete(lpm, rule_to_delete_index, depth);
 
 	/*
 	 * Find rule to replace the rule_to_delete. If there is no rule to
@@ -1881,100 +1030,26 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * entries associated with this rule.
 	 */
 	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v20(lpm, ip, depth, &sub_rule_depth);
+	sub_rule_index = find_previous_rule(lpm, ip, depth, &sub_rule_depth);
 
 	/*
 	 * If the input depth value is less than 25 use function
 	 * delete_depth_small otherwise use delete_depth_big.
 	 */
 	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v20(lpm, ip_masked, depth,
+		return delete_depth_small(lpm, ip_masked, depth,
 				sub_rule_index, sub_rule_depth);
 	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v20(lpm, ip_masked, depth, sub_rule_index,
+		return delete_depth_big(lpm, ip_masked, depth, sub_rule_index,
 				sub_rule_depth);
 	}
 }
-VERSION_SYMBOL(rte_lpm_delete, _v20, 2.0);
-
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
-{
-	int32_t rule_to_delete_index, sub_rule_index;
-	uint32_t ip_masked;
-	uint8_t sub_rule_depth;
-	/*
-	 * Check input arguments. Note: IP must be a positive integer of 32
-	 * bits in length therefore it need not be checked.
-	 */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH)) {
-		return -EINVAL;
-	}
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/*
-	 * Find the index of the input rule, that needs to be deleted, in the
-	 * rule table.
-	 */
-	rule_to_delete_index = rule_find_v1604(lpm, ip_masked, depth);
-
-	/*
-	 * Check if rule_to_delete_index was found. If no rule was found the
-	 * function rule_find returns -EINVAL.
-	 */
-	if (rule_to_delete_index < 0)
-		return -EINVAL;
-
-	/* Delete the rule from the rule table. */
-	rule_delete_v1604(lpm, rule_to_delete_index, depth);
-
-	/*
-	 * Find rule to replace the rule_to_delete. If there is no rule to
-	 * replace the rule_to_delete we return -1 and invalidate the table
-	 * entries associated with this rule.
-	 */
-	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v1604(lpm, ip, depth, &sub_rule_depth);
-
-	/*
-	 * If the input depth value is less than 25 use function
-	 * delete_depth_small otherwise use delete_depth_big.
-	 */
-	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v1604(lpm, ip_masked, depth,
-				sub_rule_index, sub_rule_depth);
-	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v1604(lpm, ip_masked, depth, sub_rule_index,
-				sub_rule_depth);
-	}
-}
-BIND_DEFAULT_SYMBOL(rte_lpm_delete, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth), rte_lpm_delete_v1604);
 
 /*
  * Delete all rules from the LPM table.
  */
 void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm)
-{
-	/* Zero rule information. */
-	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
-
-	/* Zero tbl24. */
-	memset(lpm->tbl24, 0, sizeof(lpm->tbl24));
-
-	/* Zero tbl8. */
-	memset(lpm->tbl8, 0, sizeof(lpm->tbl8));
-
-	/* Delete all rules form the rules table. */
-	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
-}
-VERSION_SYMBOL(rte_lpm_delete_all, _v20, 2.0);
-
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
+rte_lpm_delete_all(struct rte_lpm *lpm)
 {
 	/* Zero rule information. */
 	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
@@ -1989,6 +1064,3 @@ rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
 	/* Delete all rules form the rules table. */
 	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_delete_all, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_delete_all(struct rte_lpm *lpm),
-		rte_lpm_delete_all_v1604);
diff --git a/lib/librte_lpm/rte_lpm.h b/lib/librte_lpm/rte_lpm.h
index 906ec44830..ca9627a141 100644
--- a/lib/librte_lpm/rte_lpm.h
+++ b/lib/librte_lpm/rte_lpm.h
@@ -65,31 +65,6 @@ extern "C" {
 
 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
 /** @internal Tbl24 entry structure. */
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	/**
-	 * Stores Next hop (tbl8 or tbl24 when valid_group is not set) or
-	 * a group index pointing to a tbl8 structure (tbl24 only, when
-	 * valid_group is set)
-	 */
-	RTE_STD_C11
-	union {
-		uint8_t next_hop;
-		uint8_t group_idx;
-	};
-	/* Using single uint8_t to store 3 values. */
-	uint8_t valid     :1;   /**< Validation flag. */
-	/**
-	 * For tbl24:
-	 *  - valid_group == 0: entry stores a next hop
-	 *  - valid_group == 1: entry stores a group_index pointing to a tbl8
-	 * For tbl8:
-	 *  - valid_group indicates whether the current tbl8 is in use or not
-	 */
-	uint8_t valid_group :1;
-	uint8_t depth       :6; /**< Rule depth. */
-} __rte_aligned(sizeof(uint16_t));
-
 __extension__
 struct rte_lpm_tbl_entry {
 	/**
@@ -112,16 +87,6 @@ struct rte_lpm_tbl_entry {
 };
 
 #else
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	uint8_t depth       :6;
-	uint8_t valid_group :1;
-	uint8_t valid       :1;
-	union {
-		uint8_t group_idx;
-		uint8_t next_hop;
-	};
-} __rte_aligned(sizeof(uint16_t));
 
 __extension__
 struct rte_lpm_tbl_entry {
@@ -142,11 +107,6 @@ struct rte_lpm_config {
 };
 
 /** @internal Rule structure. */
-struct rte_lpm_rule_v20 {
-	uint32_t ip; /**< Rule IP address. */
-	uint8_t  next_hop; /**< Rule next hop. */
-};
-
 struct rte_lpm_rule {
 	uint32_t ip; /**< Rule IP address. */
 	uint32_t next_hop; /**< Rule next hop. */
@@ -159,21 +119,6 @@ struct rte_lpm_rule_info {
 };
 
 /** @internal LPM structure. */
-struct rte_lpm_v20 {
-	/* LPM metadata. */
-	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
-	uint32_t max_rules; /**< Max. balanced rules per lpm. */
-	struct rte_lpm_rule_info rule_info[RTE_LPM_MAX_DEPTH]; /**< Rule info table. */
-
-	/* LPM Tables. */
-	struct rte_lpm_tbl_entry_v20 tbl24[RTE_LPM_TBL24_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl24 table. */
-	struct rte_lpm_tbl_entry_v20 tbl8[RTE_LPM_TBL8_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl8 table. */
-	struct rte_lpm_rule_v20 rules_tbl[]
-			__rte_cache_aligned; /**< LPM rules. */
-};
-
 struct rte_lpm {
 	/* LPM metadata. */
 	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
@@ -210,11 +155,6 @@ struct rte_lpm {
 struct rte_lpm *
 rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config);
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules, int flags);
-struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
-		const struct rte_lpm_config *config);
 
 /**
  * Find an existing LPM object and return a pointer to it.
@@ -228,10 +168,6 @@ rte_lpm_create_v1604(const char *name, int socket_id,
  */
 struct rte_lpm *
 rte_lpm_find_existing(const char *name);
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name);
-struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name);
 
 /**
  * Free an LPM object.
@@ -243,10 +179,6 @@ rte_lpm_find_existing_v1604(const char *name);
  */
 void
 rte_lpm_free(struct rte_lpm *lpm);
-void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm);
 
 /**
  * Add a rule to the LPM table.
@@ -264,12 +196,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm);
  */
 int
 rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth, uint32_t next_hop);
-int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -289,12 +215,6 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 int
 rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop);
-int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop);
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -310,10 +230,6 @@ uint32_t *next_hop);
  */
 int
 rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
 
 /**
  * Delete all rules from the LPM table.
@@ -323,10 +239,6 @@ rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
  */
 void
 rte_lpm_delete_all(struct rte_lpm *lpm);
-void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm);
 
 /**
  * Lookup an IP into the LPM table.
diff --git a/lib/librte_lpm/rte_lpm6.c b/lib/librte_lpm/rte_lpm6.c
index 9b8aeb9721..b981e40714 100644
--- a/lib/librte_lpm/rte_lpm6.c
+++ b/lib/librte_lpm/rte_lpm6.c
@@ -808,18 +808,6 @@ add_step(struct rte_lpm6 *lpm, struct rte_lpm6_tbl_entry *tbl,
 	return 1;
 }
 
-/*
- * Add a route
- */
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	return rte_lpm6_add_v1705(lpm, ip, depth, next_hop);
-}
-VERSION_SYMBOL(rte_lpm6_add, _v20, 2.0);
-
-
 /*
  * Simulate adding a route to LPM
  *
@@ -841,7 +829,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	ret = simulate_add_step(lpm, lpm->tbl24, &tbl_next, masked_ip,
-			ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
+		ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
 	total_need_tbl_nb = need_tbl_nb;
 	/*
 	 * Inspect one by one the rest of the bytes until
@@ -850,7 +838,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && ret == 1; i++) {
 		tbl = tbl_next;
 		ret = simulate_add_step(lpm, tbl, &tbl_next, masked_ip, 1,
-				(uint8_t)(i+1), depth, &need_tbl_nb);
+			(uint8_t)(i + 1), depth, &need_tbl_nb);
 		total_need_tbl_nb += need_tbl_nb;
 	}
 
@@ -861,9 +849,12 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	return 0;
 }
 
+/*
+ * Add a route
+ */
 int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop)
+rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+	uint32_t next_hop)
 {
 	struct rte_lpm6_tbl_entry *tbl;
 	struct rte_lpm6_tbl_entry *tbl_next = NULL;
@@ -895,8 +886,8 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	tbl = lpm->tbl24;
 	status = add_step(lpm, tbl, TBL24_IND, &tbl_next, &tbl_next_num,
-			masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
-			is_new_rule);
+		masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
+		is_new_rule);
 	assert(status >= 0);
 
 	/*
@@ -906,17 +897,13 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && status == 1; i++) {
 		tbl = tbl_next;
 		status = add_step(lpm, tbl, tbl_next_num, &tbl_next,
-				&tbl_next_num, masked_ip, 1, (uint8_t)(i+1),
-				depth, next_hop, is_new_rule);
+			&tbl_next_num, masked_ip, 1, (uint8_t)(i + 1),
+			depth, next_hop, is_new_rule);
 		assert(status >= 0);
 	}
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_add, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip,
-				uint8_t depth, uint32_t next_hop),
-		rte_lpm6_add_v1705);
 
 /*
  * Takes a pointer to a table entry and inspect one level.
@@ -955,25 +942,7 @@ lookup_step(const struct rte_lpm6 *lpm, const struct rte_lpm6_tbl_entry *tbl,
  * Looks up an IP
  */
 int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_lookup_v1705(lpm, ip, &next_hop32);
-	if (status == 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-}
-VERSION_SYMBOL(rte_lpm6_lookup, _v20, 2.0);
-
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
+rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
 		uint32_t *next_hop)
 {
 	const struct rte_lpm6_tbl_entry *tbl;
@@ -1000,56 +969,12 @@ rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
-				uint32_t *next_hop), rte_lpm6_lookup_v1705);
 
 /*
  * Looks up a group of IP addresses
  */
 int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t * next_hops, unsigned n)
-{
-	unsigned i;
-	const struct rte_lpm6_tbl_entry *tbl;
-	const struct rte_lpm6_tbl_entry *tbl_next = NULL;
-	uint32_t tbl24_index, next_hop;
-	uint8_t first_byte;
-	int status;
-
-	/* DEBUG: Check user input arguments. */
-	if ((lpm == NULL) || (ips == NULL) || (next_hops == NULL))
-		return -EINVAL;
-
-	for (i = 0; i < n; i++) {
-		first_byte = LOOKUP_FIRST_BYTE;
-		tbl24_index = (ips[i][0] << BYTES2_SIZE) |
-				(ips[i][1] << BYTE_SIZE) | ips[i][2];
-
-		/* Calculate pointer to the first entry to be inspected */
-		tbl = &lpm->tbl24[tbl24_index];
-
-		do {
-			/* Continue inspecting following levels until success or failure */
-			status = lookup_step(lpm, tbl, &tbl_next, ips[i], first_byte++,
-					&next_hop);
-			tbl = tbl_next;
-		} while (status == 1);
-
-		if (status < 0)
-			next_hops[i] = -1;
-		else
-			next_hops[i] = (int16_t)next_hop;
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm6_lookup_bulk_func, _v20, 2.0);
-
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
+rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n)
 {
@@ -1089,37 +1014,12 @@ rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup_bulk_func, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
-				uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-				int32_t *next_hops, unsigned int n),
-		rte_lpm6_lookup_bulk_func_v1705);
 
 /*
  * Look for a rule in the high-level rules table
  */
 int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_is_rule_present_v1705(lpm, ip, depth, &next_hop32);
-	if (status > 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-
-}
-VERSION_SYMBOL(rte_lpm6_is_rule_present, _v20, 2.0);
-
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop)
 {
 	uint8_t masked_ip[RTE_LPM6_IPV6_ADDR_SIZE];
@@ -1135,10 +1035,6 @@ rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 
 	return rule_find(lpm, masked_ip, depth, next_hop);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_is_rule_present, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_is_rule_present(struct rte_lpm6 *lpm,
-				uint8_t *ip, uint8_t depth, uint32_t *next_hop),
-		rte_lpm6_is_rule_present_v1705);
 
 /*
  * Delete a rule from the rule table.
diff --git a/lib/librte_lpm/rte_lpm6.h b/lib/librte_lpm/rte_lpm6.h
index 5d59ccb1fe..37dfb20249 100644
--- a/lib/librte_lpm/rte_lpm6.h
+++ b/lib/librte_lpm/rte_lpm6.h
@@ -96,12 +96,6 @@ rte_lpm6_free(struct rte_lpm6 *lpm);
 int
 rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t next_hop);
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -121,12 +115,6 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 int
 rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop);
-int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop);
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -184,11 +172,6 @@ rte_lpm6_delete_all(struct rte_lpm6 *lpm);
  */
 int
 rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip, uint32_t *next_hop);
-int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop);
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
-		uint32_t *next_hop);
 
 /**
  * Lookup multiple IP addresses in an LPM table.
@@ -210,14 +193,6 @@ int
 rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int32_t *next_hops, unsigned int n);
 
 #ifdef __cplusplus
 }
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v5 06/10] distributor: remove deprecated code
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
                         ` (5 preceding siblings ...)
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 05/10] lpm: " Anatoly Burakov
@ 2019-10-24  9:46       ` Anatoly Burakov
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
                         ` (3 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-24  9:46 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, David Hunt, john.mcnamara, ray.kinsella,
	bruce.richardson, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
---

Notes:
    v5:
    - Fixed shared library linking error due to versioning still enabled
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_distributor/rte_distributor.c      | 56 +++--------------
 .../rte_distributor_v1705.h                   | 61 -------------------
 lib/librte_distributor/rte_distributor_v20.c  |  9 ---
 3 files changed, 9 insertions(+), 117 deletions(-)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h

diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index 21eb1fb0a1..ca3f21b833 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -19,7 +19,6 @@
 #include "rte_distributor_private.h"
 #include "rte_distributor.h"
 #include "rte_distributor_v20.h"
-#include "rte_distributor_v1705.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
 
@@ -33,7 +32,7 @@ EAL_REGISTER_TAILQ(rte_dist_burst_tailq)
 /**** Burst Packet APIs called by workers ****/
 
 void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
+rte_distributor_request_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt,
 		unsigned int count)
 {
@@ -78,14 +77,9 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
 	 */
 	*retptr64 |= RTE_DISTRIB_GET_BUF;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_request_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_request_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count),
-		rte_distributor_request_pkt_v1705);
 
 int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
+rte_distributor_poll_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -119,13 +113,9 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
 
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_poll_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_poll_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts),
-		rte_distributor_poll_pkt_v1705);
 
 int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
+rte_distributor_get_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts,
 		struct rte_mbuf **oldpkt, unsigned int return_count)
 {
@@ -153,14 +143,9 @@ rte_distributor_get_pkt_v1705(struct rte_distributor *d,
 	}
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_get_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_get_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts,
-		struct rte_mbuf **oldpkt, unsigned int return_count),
-		rte_distributor_get_pkt_v1705);
 
 int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
+rte_distributor_return_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt, int num)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -187,10 +172,6 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_return_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_return_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt, int num),
-		rte_distributor_return_pkt_v1705);
 
 /**** APIs called on distributor core ***/
 
@@ -336,7 +317,7 @@ release(struct rte_distributor *d, unsigned int wkr)
 
 /* process a set of packets to distribute them to workers */
 int
-rte_distributor_process_v1705(struct rte_distributor *d,
+rte_distributor_process(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs)
 {
 	unsigned int next_idx = 0;
@@ -470,14 +451,10 @@ rte_distributor_process_v1705(struct rte_distributor *d,
 
 	return num_mbufs;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_process, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_process(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs),
-		rte_distributor_process_v1705);
 
 /* return to the caller, packets returned from workers */
 int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
+rte_distributor_returned_pkts(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -502,10 +479,6 @@ rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
 
 	return retval;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_returned_pkts, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_returned_pkts(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs),
-		rte_distributor_returned_pkts_v1705);
 
 /*
  * Return the number of packets in-flight in a distributor, i.e. packets
@@ -527,7 +500,7 @@ total_outstanding(const struct rte_distributor *d)
  * queued up.
  */
 int
-rte_distributor_flush_v1705(struct rte_distributor *d)
+rte_distributor_flush(struct rte_distributor *d)
 {
 	unsigned int flushed;
 	unsigned int wkr;
@@ -556,13 +529,10 @@ rte_distributor_flush_v1705(struct rte_distributor *d)
 
 	return flushed;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_flush, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_flush(struct rte_distributor *d),
-		rte_distributor_flush_v1705);
 
 /* clears the internal returns array in the distributor */
 void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d)
+rte_distributor_clear_returns(struct rte_distributor *d)
 {
 	unsigned int wkr;
 
@@ -576,13 +546,10 @@ rte_distributor_clear_returns_v1705(struct rte_distributor *d)
 	for (wkr = 0; wkr < d->num_workers; wkr++)
 		d->bufs[wkr].retptr64[0] = 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_clear_returns, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_clear_returns(struct rte_distributor *d),
-		rte_distributor_clear_returns_v1705);
 
 /* creates a distributor instance */
 struct rte_distributor *
-rte_distributor_create_v1705(const char *name,
+rte_distributor_create(const char *name,
 		unsigned int socket_id,
 		unsigned int num_workers,
 		unsigned int alg_type)
@@ -656,8 +623,3 @@ rte_distributor_create_v1705(const char *name,
 
 	return d;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_create, _v1705, 17.05);
-MAP_STATIC_SYMBOL(struct rte_distributor *rte_distributor_create(
-		const char *name, unsigned int socket_id,
-		unsigned int num_workers, unsigned int alg_type),
-		rte_distributor_create_v1705);
diff --git a/lib/librte_distributor/rte_distributor_v1705.h b/lib/librte_distributor/rte_distributor_v1705.h
deleted file mode 100644
index df4d9e8150..0000000000
--- a/lib/librte_distributor/rte_distributor_v1705.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2017 Intel Corporation
- */
-
-#ifndef _RTE_DISTRIB_V1705_H_
-#define _RTE_DISTRIB_V1705_H_
-
-/**
- * @file
- * RTE distributor
- *
- * The distributor is a component which is designed to pass packets
- * one-at-a-time to workers, with dynamic load balancing.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rte_distributor *
-rte_distributor_create_v1705(const char *name, unsigned int socket_id,
-		unsigned int num_workers,
-		unsigned int alg_type);
-
-int
-rte_distributor_process_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs);
-
-int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs);
-
-int
-rte_distributor_flush_v1705(struct rte_distributor *d);
-
-void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d);
-
-int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **pkts,
-	struct rte_mbuf **oldpkt, unsigned int retcount);
-
-int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **oldpkt, int num);
-
-void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count);
-
-int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **mbufs);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_v20.c
index cdc0969a89..14ee0360ec 100644
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ b/lib/librte_distributor/rte_distributor_v20.c
@@ -38,7 +38,6 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
 		rte_pause();
 	buf->bufptr64 = req;
 }
-VERSION_SYMBOL(rte_distributor_request_pkt, _v20, 2.0);
 
 struct rte_mbuf *
 rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
@@ -52,7 +51,6 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
 	int64_t ret = buf->bufptr64 >> RTE_DISTRIB_FLAG_BITS;
 	return (struct rte_mbuf *)((uintptr_t)ret);
 }
-VERSION_SYMBOL(rte_distributor_poll_pkt, _v20, 2.0);
 
 struct rte_mbuf *
 rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
@@ -64,7 +62,6 @@ rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
 		rte_pause();
 	return ret;
 }
-VERSION_SYMBOL(rte_distributor_get_pkt, _v20, 2.0);
 
 int
 rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
@@ -76,7 +73,6 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
 	buf->bufptr64 = req;
 	return 0;
 }
-VERSION_SYMBOL(rte_distributor_return_pkt, _v20, 2.0);
 
 /**** APIs called on distributor core ***/
 
@@ -293,7 +289,6 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 	d->returns.count = ret_count;
 	return num_mbufs;
 }
-VERSION_SYMBOL(rte_distributor_process, _v20, 2.0);
 
 /* return to the caller, packets returned from workers */
 int
@@ -314,7 +309,6 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
 
 	return retval;
 }
-VERSION_SYMBOL(rte_distributor_returned_pkts, _v20, 2.0);
 
 /* return the number of packets in-flight in a distributor, i.e. packets
  * being worked on or queued up in a backlog.
@@ -344,7 +338,6 @@ rte_distributor_flush_v20(struct rte_distributor_v20 *d)
 
 	return flushed;
 }
-VERSION_SYMBOL(rte_distributor_flush, _v20, 2.0);
 
 /* clears the internal returns array in the distributor */
 void
@@ -355,7 +348,6 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
 	memset(d->returns.mbufs, 0, sizeof(d->returns.mbufs));
 #endif
 }
-VERSION_SYMBOL(rte_distributor_clear_returns, _v20, 2.0);
 
 /* creates a distributor instance */
 struct rte_distributor_v20 *
@@ -399,4 +391,3 @@ rte_distributor_create_v20(const char *name,
 
 	return d;
 }
-VERSION_SYMBOL(rte_distributor_create, _v20, 2.0);
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v5 07/10] distributor: rename v2.0 ABI to _single suffix
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
                         ` (6 preceding siblings ...)
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 06/10] distributor: " Anatoly Burakov
@ 2019-10-24  9:46       ` Anatoly Burakov
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
                         ` (2 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-24  9:46 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, David Hunt, john.mcnamara, ray.kinsella,
	bruce.richardson, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

The original ABI versioning was slightly misleading in that the
DPDK 2.0 ABI was really a single mode for the distributor, and is
used as such throughout the distributor code.

Fix this by renaming all _v20 API's to _single API's, and remove
symbol versioning.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
---

Notes:
    v4:
    - Changed it back to how it was with v2
    - Removed remaining v2.0 symbols
    
    v3:
    - Removed single mode from distributor as per Dave's comments
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_distributor/Makefile               |  2 +-
 lib/librte_distributor/meson.build            |  2 +-
 lib/librte_distributor/rte_distributor.c      | 24 +++++-----
 .../rte_distributor_private.h                 | 10 ++--
 ...ributor_v20.c => rte_distributor_single.c} | 48 +++++++++----------
 ...ributor_v20.h => rte_distributor_single.h} | 26 +++++-----
 .../rte_distributor_version.map               | 18 +------
 7 files changed, 58 insertions(+), 72 deletions(-)
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (87%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)

diff --git a/lib/librte_distributor/Makefile b/lib/librte_distributor/Makefile
index 0ef80dcff4..d9d0089166 100644
--- a/lib/librte_distributor/Makefile
+++ b/lib/librte_distributor/Makefile
@@ -15,7 +15,7 @@ EXPORT_MAP := rte_distributor_version.map
 LIBABIVER := 1
 
 # all source are stored in SRCS-y
-SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_v20.c
+SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_single.c
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor.c
 ifeq ($(CONFIG_RTE_ARCH_X86),y)
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor_match_sse.c
diff --git a/lib/librte_distributor/meson.build b/lib/librte_distributor/meson.build
index dba7e3b2aa..bd12ddb2f1 100644
--- a/lib/librte_distributor/meson.build
+++ b/lib/librte_distributor/meson.build
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-sources = files('rte_distributor.c', 'rte_distributor_v20.c')
+sources = files('rte_distributor.c', 'rte_distributor_single.c')
 if arch_subdir == 'x86'
 	sources += files('rte_distributor_match_sse.c')
 else
diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index ca3f21b833..b4fc0bfead 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -18,7 +18,7 @@
 
 #include "rte_distributor_private.h"
 #include "rte_distributor.h"
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
 
@@ -42,7 +42,7 @@ rte_distributor_request_pkt(struct rte_distributor *d,
 	volatile int64_t *retptr64;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		rte_distributor_request_pkt_v20(d->d_v20,
+		rte_distributor_request_pkt_single(d->d_single,
 			worker_id, oldpkt[0]);
 		return;
 	}
@@ -88,7 +88,8 @@ rte_distributor_poll_pkt(struct rte_distributor *d,
 	unsigned int i;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		pkts[0] = rte_distributor_poll_pkt_v20(d->d_v20, worker_id);
+		pkts[0] = rte_distributor_poll_pkt_single(d->d_single,
+			worker_id);
 		return (pkts[0]) ? 1 : 0;
 	}
 
@@ -123,7 +124,7 @@ rte_distributor_get_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (return_count <= 1) {
-			pkts[0] = rte_distributor_get_pkt_v20(d->d_v20,
+			pkts[0] = rte_distributor_get_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 			return (pkts[0]) ? 1 : 0;
 		} else
@@ -153,7 +154,7 @@ rte_distributor_return_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (num == 1)
-			return rte_distributor_return_pkt_v20(d->d_v20,
+			return rte_distributor_return_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 		else
 			return -EINVAL;
@@ -330,7 +331,8 @@ rte_distributor_process(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_process_v20(d->d_v20, mbufs, num_mbufs);
+		return rte_distributor_process_single(d->d_single,
+			mbufs, num_mbufs);
 	}
 
 	if (unlikely(num_mbufs == 0)) {
@@ -464,7 +466,7 @@ rte_distributor_returned_pkts(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_returned_pkts_v20(d->d_v20,
+		return rte_distributor_returned_pkts_single(d->d_single,
 				mbufs, max_mbufs);
 	}
 
@@ -507,7 +509,7 @@ rte_distributor_flush(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_flush_v20(d->d_v20);
+		return rte_distributor_flush_single(d->d_single);
 	}
 
 	flushed = total_outstanding(d);
@@ -538,7 +540,7 @@ rte_distributor_clear_returns(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		rte_distributor_clear_returns_v20(d->d_v20);
+		rte_distributor_clear_returns_single(d->d_single);
 		return;
 	}
 
@@ -578,9 +580,9 @@ rte_distributor_create(const char *name,
 			rte_errno = ENOMEM;
 			return NULL;
 		}
-		d->d_v20 = rte_distributor_create_v20(name,
+		d->d_single = rte_distributor_create_single(name,
 				socket_id, num_workers);
-		if (d->d_v20 == NULL) {
+		if (d->d_single == NULL) {
 			free(d);
 			/* rte_errno will have been set */
 			return NULL;
diff --git a/lib/librte_distributor/rte_distributor_private.h b/lib/librte_distributor/rte_distributor_private.h
index 33cd89410c..bdb62b6e92 100644
--- a/lib/librte_distributor/rte_distributor_private.h
+++ b/lib/librte_distributor/rte_distributor_private.h
@@ -55,7 +55,7 @@ extern "C" {
  * the next cache line to worker 0, we pad this out to three cache lines.
  * Only 64-bits of the memory is actually used though.
  */
-union rte_distributor_buffer_v20 {
+union rte_distributor_buffer_single {
 	volatile int64_t bufptr64;
 	char pad[RTE_CACHE_LINE_SIZE*3];
 } __rte_cache_aligned;
@@ -80,8 +80,8 @@ struct rte_distributor_returned_pkts {
 	struct rte_mbuf *mbufs[RTE_DISTRIB_MAX_RETURNS];
 };
 
-struct rte_distributor_v20 {
-	TAILQ_ENTRY(rte_distributor_v20) next;    /**< Next in list. */
+struct rte_distributor_single {
+	TAILQ_ENTRY(rte_distributor_single) next;    /**< Next in list. */
 
 	char name[RTE_DISTRIBUTOR_NAMESIZE];  /**< Name of the ring. */
 	unsigned int num_workers;             /**< Number of workers polling */
@@ -96,7 +96,7 @@ struct rte_distributor_v20 {
 
 	struct rte_distributor_backlog backlog[RTE_DISTRIB_MAX_WORKERS];
 
-	union rte_distributor_buffer_v20 bufs[RTE_DISTRIB_MAX_WORKERS];
+	union rte_distributor_buffer_single bufs[RTE_DISTRIB_MAX_WORKERS];
 
 	struct rte_distributor_returned_pkts returns;
 };
@@ -154,7 +154,7 @@ struct rte_distributor {
 
 	enum rte_distributor_match_function dist_match_fn;
 
-	struct rte_distributor_v20 *d_v20;
+	struct rte_distributor_single *d_single;
 };
 
 void
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_single.c
similarity index 87%
rename from lib/librte_distributor/rte_distributor_v20.c
rename to lib/librte_distributor/rte_distributor_single.c
index 14ee0360ec..9a6ef826c9 100644
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ b/lib/librte_distributor/rte_distributor_single.c
@@ -15,10 +15,10 @@
 #include <rte_pause.h>
 #include <rte_tailq.h>
 
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 #include "rte_distributor_private.h"
 
-TAILQ_HEAD(rte_distributor_list, rte_distributor_v20);
+TAILQ_HEAD(rte_distributor_list, rte_distributor_single);
 
 static struct rte_tailq_elem rte_distributor_tailq = {
 	.name = "RTE_DISTRIBUTOR",
@@ -28,10 +28,10 @@ EAL_REGISTER_TAILQ(rte_distributor_tailq)
 /**** APIs called by workers ****/
 
 void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	int64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_GET_BUF;
 	while (unlikely(buf->bufptr64 & RTE_DISTRIB_FLAGS_MASK))
@@ -40,10 +40,10 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
 }
 
 struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	if (buf->bufptr64 & RTE_DISTRIB_GET_BUF)
 		return NULL;
 
@@ -53,21 +53,21 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
 }
 
 struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
 	struct rte_mbuf *ret;
-	rte_distributor_request_pkt_v20(d, worker_id, oldpkt);
-	while ((ret = rte_distributor_poll_pkt_v20(d, worker_id)) == NULL)
+	rte_distributor_request_pkt_single(d, worker_id, oldpkt);
+	while ((ret = rte_distributor_poll_pkt_single(d, worker_id)) == NULL)
 		rte_pause();
 	return ret;
 }
 
 int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	uint64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_RETURN_BUF;
 	buf->bufptr64 = req;
@@ -98,7 +98,7 @@ backlog_pop(struct rte_distributor_backlog *bl)
 
 /* stores a packet returned from a worker inside the returns array */
 static inline void
-store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
+store_return(uintptr_t oldbuf, struct rte_distributor_single *d,
 		unsigned *ret_start, unsigned *ret_count)
 {
 	/* store returns in a circular buffer - code is branch-free */
@@ -109,7 +109,7 @@ store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
 }
 
 static inline void
-handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
+handle_worker_shutdown(struct rte_distributor_single *d, unsigned int wkr)
 {
 	d->in_flight_tags[wkr] = 0;
 	d->in_flight_bitmask &= ~(1UL << wkr);
@@ -139,7 +139,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
 		 * Note that the tags were set before first level call
 		 * to rte_distributor_process.
 		 */
-		rte_distributor_process_v20(d, pkts, i);
+		rte_distributor_process_single(d, pkts, i);
 		bl->count = bl->start = 0;
 	}
 }
@@ -149,7 +149,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
  * to do a partial flush.
  */
 static int
-process_returns(struct rte_distributor_v20 *d)
+process_returns(struct rte_distributor_single *d)
 {
 	unsigned wkr;
 	unsigned flushed = 0;
@@ -188,7 +188,7 @@ process_returns(struct rte_distributor_v20 *d)
 
 /* process a set of packets to distribute them to workers */
 int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned num_mbufs)
 {
 	unsigned next_idx = 0;
@@ -292,7 +292,7 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 
 /* return to the caller, packets returned from workers */
 int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -314,7 +314,7 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
  * being worked on or queued up in a backlog.
  */
 static inline unsigned
-total_outstanding(const struct rte_distributor_v20 *d)
+total_outstanding(const struct rte_distributor_single *d)
 {
 	unsigned wkr, total_outstanding;
 
@@ -329,19 +329,19 @@ total_outstanding(const struct rte_distributor_v20 *d)
 /* flush the distributor, so that there are no outstanding packets in flight or
  * queued up. */
 int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d)
+rte_distributor_flush_single(struct rte_distributor_single *d)
 {
 	const unsigned flushed = total_outstanding(d);
 
 	while (total_outstanding(d) > 0)
-		rte_distributor_process_v20(d, NULL, 0);
+		rte_distributor_process_single(d, NULL, 0);
 
 	return flushed;
 }
 
 /* clears the internal returns array in the distributor */
 void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
+rte_distributor_clear_returns_single(struct rte_distributor_single *d)
 {
 	d->returns.start = d->returns.count = 0;
 #ifndef __OPTIMIZE__
@@ -350,12 +350,12 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
 }
 
 /* creates a distributor instance */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name,
 		unsigned socket_id,
 		unsigned num_workers)
 {
-	struct rte_distributor_v20 *d;
+	struct rte_distributor_single *d;
 	struct rte_distributor_list *distributor_list;
 	char mz_name[RTE_MEMZONE_NAMESIZE];
 	const struct rte_memzone *mz;
diff --git a/lib/librte_distributor/rte_distributor_v20.h b/lib/librte_distributor/rte_distributor_single.h
similarity index 89%
rename from lib/librte_distributor/rte_distributor_v20.h
rename to lib/librte_distributor/rte_distributor_single.h
index 12865658ba..2f80aa43d1 100644
--- a/lib/librte_distributor/rte_distributor_v20.h
+++ b/lib/librte_distributor/rte_distributor_single.h
@@ -2,8 +2,8 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
-#ifndef _RTE_DISTRIB_V20_H_
-#define _RTE_DISTRIB_V20_H_
+#ifndef _RTE_DISTRIB_SINGLE_H_
+#define _RTE_DISTRIB_SINGLE_H_
 
 /**
  * @file
@@ -19,7 +19,7 @@ extern "C" {
 
 #define RTE_DISTRIBUTOR_NAMESIZE 32 /**< Length of name for instance */
 
-struct rte_distributor_v20;
+struct rte_distributor_single;
 struct rte_mbuf;
 
 /**
@@ -38,8 +38,8 @@ struct rte_mbuf;
  * @return
  *   The newly created distributor instance
  */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name, unsigned int socket_id,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name, unsigned int socket_id,
 		unsigned int num_workers);
 
 /*  *** APIS to be called on the distributor lcore ***  */
@@ -74,7 +74,7 @@ rte_distributor_create_v20(const char *name, unsigned int socket_id,
  *   The number of mbufs processed.
  */
 int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs);
 
 /**
@@ -92,7 +92,7 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
  *   The number of mbufs returned in the mbufs array.
  */
 int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs);
 
 /**
@@ -107,7 +107,7 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
  *   The number of queued/in-flight packets that were completed by this call.
  */
 int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d);
+rte_distributor_flush_single(struct rte_distributor_single *d);
 
 /**
  * Clears the array of returned packets used as the source for the
@@ -119,7 +119,7 @@ rte_distributor_flush_v20(struct rte_distributor_v20 *d);
  *   The distributor instance to be used
  */
 void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
+rte_distributor_clear_returns_single(struct rte_distributor_single *d);
 
 /*  *** APIS to be called on the worker lcores ***  */
 /*
@@ -148,7 +148,7 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
  *   A new packet to be processed by the worker thread.
  */
 struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -164,7 +164,7 @@ rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet being processed by the worker
  */
 int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *mbuf);
 
 /**
@@ -188,7 +188,7 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet, if any, being processed by the worker
  */
 void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -208,7 +208,7 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
  *   packet is yet available.
  */
 struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id);
 
 #ifdef __cplusplus
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 3a285b394e..00e26b4804 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,19 +1,3 @@
-DPDK_2.0 {
-	global:
-
-	rte_distributor_clear_returns;
-	rte_distributor_create;
-	rte_distributor_flush;
-	rte_distributor_get_pkt;
-	rte_distributor_poll_pkt;
-	rte_distributor_process;
-	rte_distributor_request_pkt;
-	rte_distributor_return_pkt;
-	rte_distributor_returned_pkts;
-
-	local: *;
-};
-
 DPDK_17.05 {
 	global:
 
@@ -26,4 +10,4 @@ DPDK_17.05 {
 	rte_distributor_request_pkt;
 	rte_distributor_return_pkt;
 	rte_distributor_returned_pkts;
-} DPDK_2.0;
+};
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v5 08/10] drivers/octeontx: add missing public symbol
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
                         ` (7 preceding siblings ...)
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
@ 2019-10-24  9:46       ` Anatoly Burakov
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 09/10] build: change ABI version to 20.0 Anatoly Burakov
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 10/10] buildtools: add ABI versioning check script Anatoly Burakov
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-24  9:46 UTC (permalink / raw)
  To: dev
  Cc: Jerin Jacob, john.mcnamara, ray.kinsella, bruce.richardson,
	thomas, david.marchand, pbhagavatula, stable

The logtype symbol was missing from the .map file. Add it.

Fixes: d8dd31652cf4 ("common/octeontx: move mbox to common folder")
Cc: pbhagavatula@caviumnetworks.com
Cc: stable@dpdk.org

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - add this patch to avoid compile breakage when bumping ABI

 drivers/common/octeontx/rte_common_octeontx_version.map | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index f04b3b7f8a..a9b3cff9bc 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,6 +1,7 @@
 DPDK_18.05 {
 	global:
 
+	octeontx_logtype_mbox;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
 	octeontx_mbox_send;
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v5 09/10] build: change ABI version to 20.0
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
                         ` (8 preceding siblings ...)
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
@ 2019-10-24  9:46       ` Anatoly Burakov
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 10/10] buildtools: add ABI versioning check script Anatoly Burakov
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-24  9:46 UTC (permalink / raw)
  To: dev
  Cc: Pawel Modrak, Nicolas Chautru, Hemant Agrawal, Sachin Saxena,
	Rosen Xu, Stephen Hemminger, Anoob Joseph, Tomasz Duszynski,
	Liron Himi, Jerin Jacob, Nithin Dabilpuram, Vamsi Attunuru,
	Lee Daly, Fiona Trahe, Ashish Gupta, Sunila Sahu, Declan Doherty,
	Pablo de Lara, Gagandeep Singh, Ravi Kumar, Akhil Goyal,
	Michael Shamis, Nagadheeraj Rottela, Srikanth Jampala, Fan Zhang,
	Jay Zhou, Nipun Gupta, Mattias Rönnblom, Pavan Nikhilesh,
	Liang Ma, Peter Mccarthy, Harry van Haaren, Artem V. Andreev,
	Andrew Rybchenko, Olivier Matz, Gage Eads, John W. Linville,
	Xiaolong Ye, Qi Zhang, Shepard Siegel, Ed Czeck, John Miller,
	Igor Russkikh, Pavel Belous, Allain Legacy, Matt Peters,
	Rasesh Mody, Shahed Shaikh, Ajit Khaparde, Somnath Kotur,
	Chas Williams, Rahul Lakkireddy, Wenzhuo Lu, Marcin Wojtas,
	Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Igor Chauskin,
	John Daley, Hyong Youb Kim, Gaetan Rivet, Xiao Wang, Ziyang Xuan,
	Xiaoyun Wang, Guoyang Zhou, Wei Hu (Xavier), Min Hu (Connor),
	Yisen Zhuang, Beilei Xing, Jingjing Wu, Qiming Yang,
	Konstantin Ananyev, Ferruh Yigit, Shijith Thotton,
	Srisivasubramanian Srinivasan, Jakub Grajciar, Matan Azrad,
	Shahaf Shuler, Viacheslav Ovsiienko, Zyta Szpak,
	K. Y. Srinivasan, Haiyang Zhang, Rastislav Cernay, Jan Remes,
	Alejandro Lucero, Tetsuya Mukawa, Kiran Kumar K,
	Bruce Richardson, Jasvinder Singh, Cristian Dumitrescu,
	Keith Wiles, Maciej Czekaj, Maxime Coquelin, Tiwei Bie,
	Zhihong Wang, Yong Wang, Tianfei zhang, Xiaoyun Li, Satha Rao,
	Shreyansh Jain, David Hunt, Byron Marohn, Yipeng Wang,
	Thomas Monjalon, Bernard Iremonger, Jiayu Hu, Sameh Gobriel,
	Reshma Pattan, Vladimir Medvedkin, Honnappa Nagarahalli,
	Kevin Laatz, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, ray.kinsella, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Merge all vesions in linker version script files to DPDK_20.0.

This commit was generated by running the following command:

:~/DPDK$ buildtools/update-abi.sh 20.0

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |   8 +-
 .../null/rte_pmd_bbdev_null_version.map       |   2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |   2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     | 115 +++----
 drivers/bus/fslmc/rte_bus_fslmc_version.map   | 154 ++++-----
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |  14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |   2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |  12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |  12 +-
 drivers/common/cpt/rte_common_cpt_version.map |   4 +-
 .../common/dpaax/rte_common_dpaax_version.map |   4 +-
 .../common/mvep/rte_common_mvep_version.map   |   6 +-
 .../octeontx/rte_common_octeontx_version.map  |   6 +-
 .../rte_common_octeontx2_version.map          |  16 +-
 .../compress/isal/rte_pmd_isal_version.map    |   2 +-
 .../rte_pmd_octeontx_compress_version.map     |   2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |   2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |   2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |   2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |   2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |   2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |   3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |   3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |  10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |  10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |   2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |   2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |   2 +-
 .../null/rte_pmd_null_crypto_version.map      |   2 +-
 .../rte_pmd_octeontx_crypto_version.map       |   3 +-
 .../openssl/rte_pmd_openssl_version.map       |   2 +-
 .../rte_pmd_crypto_scheduler_version.map      |  19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |   2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |   2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |   2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |   3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |   2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |   2 +-
 .../rte_pmd_octeontx_event_version.map        |   2 +-
 .../rte_pmd_octeontx2_event_version.map       |   3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |   2 +-
 .../rte_pmd_skeleton_event_version.map        |   3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |   2 +-
 .../bucket/rte_mempool_bucket_version.map     |   3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |   2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |  12 +-
 .../octeontx/rte_mempool_octeontx_version.map |   2 +-
 .../rte_mempool_octeontx2_version.map         |   4 +-
 .../mempool/ring/rte_mempool_ring_version.map |   3 +-
 .../stack/rte_mempool_stack_version.map       |   3 +-
 .../af_packet/rte_pmd_af_packet_version.map   |   3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |   2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |   5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |   4 +-
 drivers/net/avp/rte_pmd_avp_version.map       |   2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |   2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |   3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |   4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |  47 +--
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |   3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |  11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |  12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |   3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |   3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |   3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |   3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |   3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |   3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |   3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |   4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |  65 ++--
 drivers/net/iavf/rte_pmd_iavf_version.map     |   3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |   3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |   3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |   3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |  62 ++--
 drivers/net/kni/rte_pmd_kni_version.map       |   3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |   3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |   5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |   3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |   2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |   2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |   2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |   4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |   3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |   2 +-
 drivers/net/null/rte_pmd_null_version.map     |   3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |  10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |   3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |   3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |   3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |  10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |   3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |   2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |   2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |   3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |   3 +-
 .../rte_pmd_vdev_netvsc_version.map           |   3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |  11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |   3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |   3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |   3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |   4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |   3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |   3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |   5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |   3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |   3 +-
 lib/librte_acl/rte_acl_version.map            |   2 +-
 lib/librte_bbdev/rte_bbdev_version.map        |   4 +
 .../rte_bitratestats_version.map              |   2 +-
 lib/librte_bpf/rte_bpf_version.map            |   4 +
 lib/librte_cfgfile/rte_cfgfile_version.map    |  34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |  10 +-
 .../rte_compressdev_version.map               |   4 +
 .../rte_cryptodev_version.map                 | 102 ++----
 .../rte_distributor_version.map               |   4 +-
 lib/librte_eal/rte_eal_version.map            | 310 +++++++-----------
 lib/librte_efd/rte_efd_version.map            |   2 +-
 lib/librte_ethdev/rte_ethdev_version.map      | 160 +++------
 lib/librte_eventdev/rte_eventdev_version.map  | 130 +++-----
 .../rte_flow_classify_version.map             |   4 +
 lib/librte_gro/rte_gro_version.map            |   2 +-
 lib/librte_gso/rte_gso_version.map            |   2 +-
 lib/librte_hash/rte_hash_version.map          |  43 +--
 lib/librte_ip_frag/rte_ip_frag_version.map    |  10 +-
 lib/librte_ipsec/rte_ipsec_version.map        |   4 +
 lib/librte_jobstats/rte_jobstats_version.map  |  10 +-
 lib/librte_kni/rte_kni_version.map            |   2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |   4 +-
 .../rte_latencystats_version.map              |   2 +-
 lib/librte_lpm/rte_lpm_version.map            |  39 +--
 lib/librte_mbuf/rte_mbuf_version.map          |  49 +--
 lib/librte_member/rte_member_version.map      |   2 +-
 lib/librte_mempool/rte_mempool_version.map    |  44 +--
 lib/librte_meter/rte_meter_version.map        |  13 +-
 lib/librte_metrics/rte_metrics_version.map    |   2 +-
 lib/librte_net/rte_net_version.map            |  23 +-
 lib/librte_pci/rte_pci_version.map            |   2 +-
 lib/librte_pdump/rte_pdump_version.map        |   2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |  36 +-
 lib/librte_port/rte_port_version.map          |  64 +---
 lib/librte_power/rte_power_version.map        |  24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |   4 +-
 lib/librte_rcu/rte_rcu_version.map            |   4 +
 lib/librte_reorder/rte_reorder_version.map    |   8 +-
 lib/librte_ring/rte_ring_version.map          |  10 +-
 lib/librte_sched/rte_sched_version.map        |  14 +-
 lib/librte_security/rte_security_version.map  |   2 +-
 lib/librte_stack/rte_stack_version.map        |   4 +
 lib/librte_table/rte_table_version.map        |   2 +-
 .../rte_telemetry_version.map                 |   4 +
 lib/librte_timer/rte_timer_version.map        |  12 +-
 lib/librte_vhost/rte_vhost_version.map        |  52 +--
 154 files changed, 724 insertions(+), 1406 deletions(-)

diff --git a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
index f64b0f9c27..6bcea2cc7f 100644
--- a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
+++ b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
@@ -1,10 +1,10 @@
-DPDK_19.08 {
-    local: *;
+DPDK_20.0 {
+	local: *;
 };
 
 EXPERIMENTAL {
-    global:
+	global:
 
-    fpga_lte_fec_configure;
+	fpga_lte_fec_configure;
 
 };
diff --git a/drivers/baseband/null/rte_pmd_bbdev_null_version.map b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/null/rte_pmd_bbdev_null_version.map
+++ b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
+++ b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map
index a221522c23..9ab8c76eef 100644
--- a/drivers/bus/dpaa/rte_bus_dpaa_version.map
+++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	bman_acquire;
@@ -8,127 +8,94 @@ DPDK_17.11 {
 	bman_new_pool;
 	bman_query_free_buffers;
 	bman_release;
+	bman_thread_irq;
+	dpaa_logtype_eventdev;
 	dpaa_logtype_mempool;
 	dpaa_logtype_pmd;
 	dpaa_netcfg;
+	dpaa_svr_family;
 	fman_ccsr_map_fd;
 	fman_dealloc_bufs_mask_hi;
 	fman_dealloc_bufs_mask_lo;
 	fman_if_add_mac_addr;
 	fman_if_clear_mac_addr;
 	fman_if_disable_rx;
-	fman_if_enable_rx;
 	fman_if_discard_rx_errors;
-	fman_if_get_fc_threshold;
+	fman_if_enable_rx;
 	fman_if_get_fc_quanta;
+	fman_if_get_fc_threshold;
 	fman_if_get_fdoff;
+	fman_if_get_sg_enable;
 	fman_if_loopback_disable;
 	fman_if_loopback_enable;
 	fman_if_promiscuous_disable;
 	fman_if_promiscuous_enable;
 	fman_if_reset_mcast_filter_table;
 	fman_if_set_bp;
-	fman_if_set_fc_threshold;
 	fman_if_set_fc_quanta;
+	fman_if_set_fc_threshold;
 	fman_if_set_fdoff;
 	fman_if_set_ic_params;
 	fman_if_set_maxfrm;
 	fman_if_set_mcast_filter_table;
+	fman_if_set_sg;
 	fman_if_stats_get;
 	fman_if_stats_get_all;
 	fman_if_stats_reset;
 	fman_ip_rev;
+	fsl_qman_fq_portal_create;
 	netcfg_acquire;
 	netcfg_release;
 	of_find_compatible_node;
+	of_get_mac_address;
 	of_get_property;
+	per_lcore_dpaa_io;
+	per_lcore_held_bufs;
 	qm_channel_caam;
+	qm_channel_pool1;
+	qman_alloc_cgrid_range;
+	qman_alloc_pool_range;
+	qman_clear_irq;
+	qman_create_cgr;
 	qman_create_fq;
+	qman_dca_index;
+	qman_delete_cgr;
 	qman_dequeue;
 	qman_dqrr_consume;
 	qman_enqueue;
 	qman_enqueue_multi;
+	qman_enqueue_multi_fq;
 	qman_fq_fqid;
+	qman_fq_portal_irqsource_add;
+	qman_fq_portal_irqsource_remove;
+	qman_fq_portal_thread_irq;
 	qman_fq_state;
 	qman_global_init;
 	qman_init_fq;
-	qman_poll_dqrr;
-	qman_query_fq_np;
-	qman_set_vdq;
-	qman_reserve_fqid_range;
-	qman_volatile_dequeue;
-	rte_dpaa_driver_register;
-	rte_dpaa_driver_unregister;
-	rte_dpaa_mem_ptov;
-	rte_dpaa_portal_init;
-
-	local: *;
-};
-
-DPDK_18.02 {
-	global:
-
-	dpaa_logtype_eventdev;
-	dpaa_svr_family;
-	per_lcore_dpaa_io;
-	per_lcore_held_bufs;
-	qm_channel_pool1;
-	qman_alloc_cgrid_range;
-	qman_alloc_pool_range;
-	qman_create_cgr;
-	qman_dca_index;
-	qman_delete_cgr;
-	qman_enqueue_multi_fq;
+	qman_irqsource_add;
+	qman_irqsource_remove;
 	qman_modify_cgr;
 	qman_oos_fq;
+	qman_poll_dqrr;
 	qman_portal_dequeue;
 	qman_portal_poll_rx;
 	qman_query_fq_frm_cnt;
+	qman_query_fq_np;
 	qman_release_cgrid_range;
+	qman_reserve_fqid_range;
 	qman_retire_fq;
+	qman_set_fq_lookup_table;
+	qman_set_vdq;
 	qman_static_dequeue_add;
-	rte_dpaa_portal_fq_close;
-	rte_dpaa_portal_fq_init;
-
-} DPDK_17.11;
-
-DPDK_18.08 {
-	global:
-
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-	of_get_mac_address;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-
-	bman_thread_irq;
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-	qman_clear_irq;
-
-	qman_irqsource_add;
-	qman_irqsource_remove;
 	qman_thread_fd;
 	qman_thread_irq;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	qman_set_fq_lookup_table;
-
-} DPDK_18.11;
-
-DPDK_19.11 {
-	global:
-
-	fsl_qman_fq_portal_create;
-	qman_fq_portal_irqsource_add;
-	qman_fq_portal_irqsource_remove;
-	qman_fq_portal_thread_irq;
-
-} DPDK_19.05;
+	qman_volatile_dequeue;
+	rte_dpaa_driver_register;
+	rte_dpaa_driver_unregister;
+	rte_dpaa_mem_ptov;
+	rte_dpaa_portal_fq_close;
+	rte_dpaa_portal_fq_init;
+	rte_dpaa_portal_init;
+
+	local: *;
+};
diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map
index 4da787236b..fe45575046 100644
--- a/drivers/bus/fslmc/rte_bus_fslmc_version.map
+++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map
@@ -1,32 +1,67 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
+	dpaa2_affine_qbman_ethrx_swp;
 	dpaa2_affine_qbman_swp;
 	dpaa2_alloc_dpbp_dev;
 	dpaa2_alloc_dq_storage;
+	dpaa2_dpbp_supported;
+	dpaa2_dqrr_size;
+	dpaa2_eqcr_size;
 	dpaa2_free_dpbp_dev;
 	dpaa2_free_dq_storage;
+	dpaa2_free_eq_descriptors;
+	dpaa2_get_qbman_swp;
+	dpaa2_io_portal;
+	dpaa2_svr_family;
+	dpaa2_virt_mode;
 	dpbp_disable;
 	dpbp_enable;
 	dpbp_get_attributes;
 	dpbp_get_num_free_bufs;
 	dpbp_open;
 	dpbp_reset;
+	dpci_get_opr;
+	dpci_set_opr;
+	dpci_set_rx_queue;
+	dpcon_get_attributes;
+	dpcon_open;
+	dpdmai_close;
+	dpdmai_disable;
+	dpdmai_enable;
+	dpdmai_get_attributes;
+	dpdmai_get_rx_queue;
+	dpdmai_get_tx_queue;
+	dpdmai_open;
+	dpdmai_set_rx_queue;
+	dpio_add_static_dequeue_channel;
 	dpio_close;
 	dpio_disable;
 	dpio_enable;
 	dpio_get_attributes;
 	dpio_open;
+	dpio_remove_static_dequeue_channel;
 	dpio_reset;
 	dpio_set_stashing_destination;
+	mc_get_soc_version;
+	mc_get_version;
 	mc_send_command;
 	per_lcore__dpaa2_io;
+	per_lcore_dpaa2_held_bufs;
 	qbman_check_command_complete;
+	qbman_check_new_result;
 	qbman_eq_desc_clear;
+	qbman_eq_desc_set_dca;
 	qbman_eq_desc_set_fq;
 	qbman_eq_desc_set_no_orp;
+	qbman_eq_desc_set_orp;
 	qbman_eq_desc_set_qd;
 	qbman_eq_desc_set_response;
+	qbman_eq_desc_set_token;
+	qbman_fq_query_state;
+	qbman_fq_state_frame_count;
+	qbman_get_dqrr_from_idx;
+	qbman_get_dqrr_idx;
 	qbman_pull_desc_clear;
 	qbman_pull_desc_set_fq;
 	qbman_pull_desc_set_numframes;
@@ -35,112 +70,43 @@ DPDK_17.05 {
 	qbman_release_desc_set_bpid;
 	qbman_result_DQ_fd;
 	qbman_result_DQ_flags;
-	qbman_result_has_new_result;
-	qbman_swp_acquire;
-	qbman_swp_pull;
-	qbman_swp_release;
-	rte_fslmc_driver_register;
-	rte_fslmc_driver_unregister;
-	rte_fslmc_vfio_dmamap;
-	rte_mcp_ptr_list;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	dpaa2_io_portal;
-	dpaa2_get_qbman_swp;
-	dpci_set_rx_queue;
-	dpcon_open;
-	dpcon_get_attributes;
-	dpio_add_static_dequeue_channel;
-	dpio_remove_static_dequeue_channel;
-	mc_get_soc_version;
-	mc_get_version;
-	qbman_check_new_result;
-	qbman_eq_desc_set_dca;
-	qbman_get_dqrr_from_idx;
-	qbman_get_dqrr_idx;
 	qbman_result_DQ_fqd_ctx;
+	qbman_result_DQ_odpid;
+	qbman_result_DQ_seqnum;
 	qbman_result_SCN_state;
+	qbman_result_eqresp_fd;
+	qbman_result_eqresp_rc;
+	qbman_result_eqresp_rspid;
+	qbman_result_eqresp_set_rspid;
+	qbman_result_has_new_result;
+	qbman_swp_acquire;
 	qbman_swp_dqrr_consume;
+	qbman_swp_dqrr_idx_consume;
 	qbman_swp_dqrr_next;
 	qbman_swp_enqueue_multiple;
 	qbman_swp_enqueue_multiple_desc;
+	qbman_swp_enqueue_multiple_fd;
 	qbman_swp_interrupt_clear_status;
+	qbman_swp_prefetch_dqrr_next;
+	qbman_swp_pull;
 	qbman_swp_push_set;
+	qbman_swp_release;
 	rte_dpaa2_alloc_dpci_dev;
-	rte_fslmc_object_register;
-	rte_global_active_dqs_list;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	dpaa2_dpbp_supported;
 	rte_dpaa2_dev_type;
+	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_intr_disable;
 	rte_dpaa2_intr_enable;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	dpaa2_svr_family;
-	dpaa2_virt_mode;
-	per_lcore_dpaa2_held_bufs;
-	qbman_fq_query_state;
-	qbman_fq_state_frame_count;
-	qbman_swp_dqrr_idx_consume;
-	qbman_swp_prefetch_dqrr_next;
-	rte_fslmc_get_device_count;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	dpaa2_affine_qbman_ethrx_swp;
-	dpdmai_close;
-	dpdmai_disable;
-	dpdmai_enable;
-	dpdmai_get_attributes;
-	dpdmai_get_rx_queue;
-	dpdmai_get_tx_queue;
-	dpdmai_open;
-	dpdmai_set_rx_queue;
-	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_memsegs;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-	dpaa2_dqrr_size;
-	dpaa2_eqcr_size;
-	dpci_get_opr;
-	dpci_set_opr;
-
-} DPDK_18.05;
-
-DPDK_19.05 {
-	global:
-	dpaa2_free_eq_descriptors;
-
-	qbman_eq_desc_set_orp;
-	qbman_eq_desc_set_token;
-	qbman_result_DQ_odpid;
-	qbman_result_DQ_seqnum;
-	qbman_result_eqresp_fd;
-	qbman_result_eqresp_rc;
-	qbman_result_eqresp_rspid;
-	qbman_result_eqresp_set_rspid;
-	qbman_swp_enqueue_multiple_fd;
-} DPDK_18.11;
+	rte_fslmc_driver_register;
+	rte_fslmc_driver_unregister;
+	rte_fslmc_get_device_count;
+	rte_fslmc_object_register;
+	rte_fslmc_vfio_dmamap;
+	rte_global_active_dqs_list;
+	rte_mcp_ptr_list;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/bus/ifpga/rte_bus_ifpga_version.map b/drivers/bus/ifpga/rte_bus_ifpga_version.map
index 964c9a9c45..05b4a28c1b 100644
--- a/drivers/bus/ifpga/rte_bus_ifpga_version.map
+++ b/drivers/bus/ifpga/rte_bus_ifpga_version.map
@@ -1,17 +1,11 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
-	rte_ifpga_get_integer32_arg;
-	rte_ifpga_get_string_arg;
 	rte_ifpga_driver_register;
 	rte_ifpga_driver_unregister;
+	rte_ifpga_find_afu_by_name;
+	rte_ifpga_get_integer32_arg;
+	rte_ifpga_get_string_arg;
 
 	local: *;
 };
-
-DPDK_19.05 {
-	global:
-
-	rte_ifpga_find_afu_by_name;
-
-} DPDK_18.05;
diff --git a/drivers/bus/pci/rte_bus_pci_version.map b/drivers/bus/pci/rte_bus_pci_version.map
index 27e9c4f101..012d817e14 100644
--- a/drivers/bus/pci/rte_bus_pci_version.map
+++ b/drivers/bus/pci/rte_bus_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pci_dump;
diff --git a/drivers/bus/vdev/rte_bus_vdev_version.map b/drivers/bus/vdev/rte_bus_vdev_version.map
index 590cf9b437..5abb10ecb0 100644
--- a/drivers/bus/vdev/rte_bus_vdev_version.map
+++ b/drivers/bus/vdev/rte_bus_vdev_version.map
@@ -1,18 +1,12 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
+	rte_vdev_add_custom_scan;
 	rte_vdev_init;
 	rte_vdev_register;
+	rte_vdev_remove_custom_scan;
 	rte_vdev_uninit;
 	rte_vdev_unregister;
 
 	local: *;
 };
-
-DPDK_18.02 {
-	global:
-
-	rte_vdev_add_custom_scan;
-	rte_vdev_remove_custom_scan;
-
-} DPDK_17.11;
diff --git a/drivers/bus/vmbus/rte_bus_vmbus_version.map b/drivers/bus/vmbus/rte_bus_vmbus_version.map
index ae231ad329..cbaaebc06c 100644
--- a/drivers/bus/vmbus/rte_bus_vmbus_version.map
+++ b/drivers/bus/vmbus/rte_bus_vmbus_version.map
@@ -1,6 +1,4 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_vmbus_chan_close;
@@ -20,6 +18,7 @@ DPDK_18.08 {
 	rte_vmbus_probe;
 	rte_vmbus_register;
 	rte_vmbus_scan;
+	rte_vmbus_set_latency;
 	rte_vmbus_sub_channel_index;
 	rte_vmbus_subchan_open;
 	rte_vmbus_unmap_device;
@@ -27,10 +26,3 @@ DPDK_18.08 {
 
 	local: *;
 };
-
-DPDK_18.11 {
-	global:
-
-	rte_vmbus_set_latency;
-
-} DPDK_18.08;
diff --git a/drivers/common/cpt/rte_common_cpt_version.map b/drivers/common/cpt/rte_common_cpt_version.map
index dec614f0de..79fa5751bc 100644
--- a/drivers/common/cpt/rte_common_cpt_version.map
+++ b/drivers/common/cpt/rte_common_cpt_version.map
@@ -1,6 +1,8 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	cpt_pmd_ops_helper_get_mlen_direct_mode;
 	cpt_pmd_ops_helper_get_mlen_sg_mode;
+
+	local: *;
 };
diff --git a/drivers/common/dpaax/rte_common_dpaax_version.map b/drivers/common/dpaax/rte_common_dpaax_version.map
index 8131c9e305..45d62aea9d 100644
--- a/drivers/common/dpaax/rte_common_dpaax_version.map
+++ b/drivers/common/dpaax/rte_common_dpaax_version.map
@@ -1,11 +1,11 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	dpaax_iova_table_update;
 	dpaax_iova_table_depopulate;
 	dpaax_iova_table_dump;
 	dpaax_iova_table_p;
 	dpaax_iova_table_populate;
+	dpaax_iova_table_update;
 
 	local: *;
 };
diff --git a/drivers/common/mvep/rte_common_mvep_version.map b/drivers/common/mvep/rte_common_mvep_version.map
index c71722d79f..030928439d 100644
--- a/drivers/common/mvep/rte_common_mvep_version.map
+++ b/drivers/common/mvep/rte_common_mvep_version.map
@@ -1,6 +1,8 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	rte_mvep_init;
 	rte_mvep_deinit;
+	rte_mvep_init;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index a9b3cff9bc..c15fb89112 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,8 +1,10 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
 	octeontx_logtype_mbox;
+	octeontx_mbox_send;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
-	octeontx_mbox_send;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx2/rte_common_octeontx2_version.map b/drivers/common/octeontx2/rte_common_octeontx2_version.map
index 4400120da0..adad21a2d6 100644
--- a/drivers/common/octeontx2/rte_common_octeontx2_version.map
+++ b/drivers/common/octeontx2/rte_common_octeontx2_version.map
@@ -1,39 +1,35 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	otx2_dev_active_vfs;
 	otx2_dev_fini;
 	otx2_dev_priv_init;
-
+	otx2_disable_irqs;
+	otx2_intra_dev_get_cfg;
 	otx2_logtype_base;
 	otx2_logtype_dpi;
 	otx2_logtype_mbox;
+	otx2_logtype_nix;
 	otx2_logtype_npa;
 	otx2_logtype_npc;
-	otx2_logtype_nix;
 	otx2_logtype_sso;
-	otx2_logtype_tm;
 	otx2_logtype_tim;
-
+	otx2_logtype_tm;
 	otx2_mbox_alloc_msg_rsp;
 	otx2_mbox_get_rsp;
 	otx2_mbox_get_rsp_tmo;
 	otx2_mbox_id2name;
 	otx2_mbox_msg_send;
 	otx2_mbox_wait_for_rsp;
-
-	otx2_intra_dev_get_cfg;
 	otx2_npa_lf_active;
 	otx2_npa_lf_obj_get;
 	otx2_npa_lf_obj_ref;
 	otx2_npa_pf_func_get;
 	otx2_npa_set_defaults;
+	otx2_register_irq;
 	otx2_sso_pf_func_get;
 	otx2_sso_pf_func_set;
-
-	otx2_disable_irqs;
 	otx2_unregister_irq;
-	otx2_register_irq;
 
 	local: *;
 };
diff --git a/drivers/compress/isal/rte_pmd_isal_version.map b/drivers/compress/isal/rte_pmd_isal_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/compress/isal/rte_pmd_isal_version.map
+++ b/drivers/compress/isal/rte_pmd_isal_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
+++ b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/qat/rte_pmd_qat_version.map b/drivers/compress/qat/rte_pmd_qat_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/qat/rte_pmd_qat_version.map
+++ b/drivers/compress/qat/rte_pmd_qat_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/zlib/rte_pmd_zlib_version.map b/drivers/compress/zlib/rte_pmd_zlib_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/zlib/rte_pmd_zlib_version.map
+++ b/drivers/compress/zlib/rte_pmd_zlib_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
+++ b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
+++ b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/armv8/rte_pmd_armv8_version.map b/drivers/crypto/armv8/rte_pmd_armv8_version.map
index 1f84b68a83..f9f17e4f6e 100644
--- a/drivers/crypto/armv8/rte_pmd_armv8_version.map
+++ b/drivers/crypto/armv8/rte_pmd_armv8_version.map
@@ -1,3 +1,3 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
+++ b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/ccp/rte_pmd_ccp_version.map b/drivers/crypto/ccp/rte_pmd_ccp_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/crypto/ccp/rte_pmd_ccp_version.map
+++ b/drivers/crypto/ccp/rte_pmd_ccp_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
index 0bfb986d0b..5952d645fd 100644
--- a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
+++ b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_sec_eventq_attach;
 	dpaa2_sec_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
index cc7f2162e0..8580fa13db 100644
--- a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
+++ b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_19.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa_sec_eventq_attach;
 	dpaa_sec_eventq_detach;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
index 8ffeca934e..f9f17e4f6e 100644
--- a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
+++ b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
@@ -1,3 +1,3 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
+++ b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
index 406964d1fc..f9f17e4f6e 100644
--- a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
+++ b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/null/rte_pmd_null_crypto_version.map b/drivers/crypto/null/rte_pmd_null_crypto_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/null/rte_pmd_null_crypto_version.map
+++ b/drivers/crypto/null/rte_pmd_null_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
+++ b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/openssl/rte_pmd_openssl_version.map b/drivers/crypto/openssl/rte_pmd_openssl_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/openssl/rte_pmd_openssl_version.map
+++ b/drivers/crypto/openssl/rte_pmd_openssl_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
index 5c43127cf2..077afedce7 100644
--- a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
+++ b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
@@ -1,21 +1,16 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_cryptodev_scheduler_load_user_scheduler;
-	rte_cryptodev_scheduler_slave_attach;
-	rte_cryptodev_scheduler_slave_detach;
-	rte_cryptodev_scheduler_ordering_set;
-	rte_cryptodev_scheduler_ordering_get;
-
-};
-
-DPDK_17.05 {
-	global:
-
 	rte_cryptodev_scheduler_mode_get;
 	rte_cryptodev_scheduler_mode_set;
 	rte_cryptodev_scheduler_option_get;
 	rte_cryptodev_scheduler_option_set;
+	rte_cryptodev_scheduler_ordering_get;
+	rte_cryptodev_scheduler_ordering_set;
+	rte_cryptodev_scheduler_slave_attach;
+	rte_cryptodev_scheduler_slave_detach;
 	rte_cryptodev_scheduler_slaves_get;
 
-} DPDK_17.02;
+	local: *;
+};
diff --git a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
+++ b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
+++ b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/zuc/rte_pmd_zuc_version.map b/drivers/crypto/zuc/rte_pmd_zuc_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/zuc/rte_pmd_zuc_version.map
+++ b/drivers/crypto/zuc/rte_pmd_zuc_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
+++ b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
index 1c0b7559dc..f9f17e4f6e 100644
--- a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
+++ b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dsw/rte_pmd_dsw_event_version.map b/drivers/event/dsw/rte_pmd_dsw_event_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/event/dsw/rte_pmd_dsw_event_version.map
+++ b/drivers/event/dsw/rte_pmd_dsw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
+++ b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
index 41c65c8c9c..f9f17e4f6e 100644
--- a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
+++ b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	local: *;
 };
-
diff --git a/drivers/event/opdl/rte_pmd_opdl_event_version.map b/drivers/event/opdl/rte_pmd_opdl_event_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/event/opdl/rte_pmd_opdl_event_version.map
+++ b/drivers/event/opdl/rte_pmd_opdl_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
+++ b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/sw/rte_pmd_sw_event_version.map b/drivers/event/sw/rte_pmd_sw_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/sw/rte_pmd_sw_event_version.map
+++ b/drivers/event/sw/rte_pmd_sw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/bucket/rte_mempool_bucket_version.map b/drivers/mempool/bucket/rte_mempool_bucket_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/mempool/bucket/rte_mempool_bucket_version.map
+++ b/drivers/mempool/bucket/rte_mempool_bucket_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
index 60bf50b2d1..9eebaf7ffd 100644
--- a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
+++ b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa_bpid_info;
diff --git a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
index b45e7a9ac1..cd4bc88273 100644
--- a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
+++ b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
@@ -1,16 +1,10 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa2_bpid_info;
 	rte_dpaa2_mbuf_alloc_bulk;
-
-	local: *;
-};
-
-DPDK_18.05 {
-	global:
-
 	rte_dpaa2_mbuf_from_buf_addr;
 	rte_dpaa2_mbuf_pool_bpid;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
+++ b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
index d703368c31..d4f81aed8e 100644
--- a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
+++ b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
@@ -1,8 +1,8 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
-	otx2_npa_lf_init;
 	otx2_npa_lf_fini;
+	otx2_npa_lf_init;
 
 	local: *;
 };
diff --git a/drivers/mempool/ring/rte_mempool_ring_version.map b/drivers/mempool/ring/rte_mempool_ring_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/ring/rte_mempool_ring_version.map
+++ b/drivers/mempool/ring/rte_mempool_ring_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/stack/rte_mempool_stack_version.map b/drivers/mempool/stack/rte_mempool_stack_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/stack/rte_mempool_stack_version.map
+++ b/drivers/mempool/stack/rte_mempool_stack_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_packet/rte_pmd_af_packet_version.map b/drivers/net/af_packet/rte_pmd_af_packet_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/af_packet/rte_pmd_af_packet_version.map
+++ b/drivers/net/af_packet/rte_pmd_af_packet_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
index c6db030fe6..f9f17e4f6e 100644
--- a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
+++ b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
@@ -1,3 +1,3 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ark/rte_pmd_ark_version.map b/drivers/net/ark/rte_pmd_ark_version.map
index 1062e0429f..f9f17e4f6e 100644
--- a/drivers/net/ark/rte_pmd_ark_version.map
+++ b/drivers/net/ark/rte_pmd_ark_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-	 local: *;
-
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/atlantic/rte_pmd_atlantic_version.map b/drivers/net/atlantic/rte_pmd_atlantic_version.map
index b16faa999f..9b04838d84 100644
--- a/drivers/net/atlantic/rte_pmd_atlantic_version.map
+++ b/drivers/net/atlantic/rte_pmd_atlantic_version.map
@@ -1,5 +1,4 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
 
@@ -13,4 +12,3 @@ EXPERIMENTAL {
 	rte_pmd_atl_macsec_select_txsa;
 	rte_pmd_atl_macsec_select_rxsa;
 };
-
diff --git a/drivers/net/avp/rte_pmd_avp_version.map b/drivers/net/avp/rte_pmd_avp_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/net/avp/rte_pmd_avp_version.map
+++ b/drivers/net/avp/rte_pmd_avp_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/axgbe/rte_pmd_axgbe_version.map b/drivers/net/axgbe/rte_pmd_axgbe_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/net/axgbe/rte_pmd_axgbe_version.map
+++ b/drivers/net/axgbe/rte_pmd_axgbe_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
+++ b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnxt/rte_pmd_bnxt_version.map b/drivers/net/bnxt/rte_pmd_bnxt_version.map
index 4750d40ad6..bb52562347 100644
--- a/drivers/net/bnxt/rte_pmd_bnxt_version.map
+++ b/drivers/net/bnxt/rte_pmd_bnxt_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_bnxt_get_vf_rx_status;
@@ -10,13 +10,13 @@ DPDK_17.08 {
 	rte_pmd_bnxt_set_tx_loopback;
 	rte_pmd_bnxt_set_vf_mac_addr;
 	rte_pmd_bnxt_set_vf_mac_anti_spoof;
+	rte_pmd_bnxt_set_vf_persist_stats;
 	rte_pmd_bnxt_set_vf_rate_limit;
 	rte_pmd_bnxt_set_vf_rxmode;
 	rte_pmd_bnxt_set_vf_vlan_anti_spoof;
 	rte_pmd_bnxt_set_vf_vlan_filter;
 	rte_pmd_bnxt_set_vf_vlan_insert;
 	rte_pmd_bnxt_set_vf_vlan_stripq;
-	rte_pmd_bnxt_set_vf_persist_stats;
 
 	local: *;
 };
diff --git a/drivers/net/bonding/rte_pmd_bond_version.map b/drivers/net/bonding/rte_pmd_bond_version.map
index 00d955c481..270c7d5d55 100644
--- a/drivers/net/bonding/rte_pmd_bond_version.map
+++ b/drivers/net/bonding/rte_pmd_bond_version.map
@@ -1,9 +1,21 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_bond_8023ad_agg_selection_get;
+	rte_eth_bond_8023ad_agg_selection_set;
+	rte_eth_bond_8023ad_conf_get;
+	rte_eth_bond_8023ad_dedicated_queues_disable;
+	rte_eth_bond_8023ad_dedicated_queues_enable;
+	rte_eth_bond_8023ad_ext_collect;
+	rte_eth_bond_8023ad_ext_collect_get;
+	rte_eth_bond_8023ad_ext_distrib;
+	rte_eth_bond_8023ad_ext_distrib_get;
+	rte_eth_bond_8023ad_ext_slowtx;
+	rte_eth_bond_8023ad_setup;
 	rte_eth_bond_8023ad_slave_info;
 	rte_eth_bond_active_slaves_get;
 	rte_eth_bond_create;
+	rte_eth_bond_free;
 	rte_eth_bond_link_monitoring_set;
 	rte_eth_bond_mac_address_reset;
 	rte_eth_bond_mac_address_set;
@@ -19,36 +31,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	rte_eth_bond_free;
-
-} DPDK_2.0;
-
-DPDK_16.04 {
-};
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_bond_8023ad_ext_collect;
-	rte_eth_bond_8023ad_ext_collect_get;
-	rte_eth_bond_8023ad_ext_distrib;
-	rte_eth_bond_8023ad_ext_distrib_get;
-	rte_eth_bond_8023ad_ext_slowtx;
-
-} DPDK_16.04;
-
-DPDK_17.08 {
-	global:
-
-	rte_eth_bond_8023ad_dedicated_queues_enable;
-	rte_eth_bond_8023ad_dedicated_queues_disable;
-	rte_eth_bond_8023ad_agg_selection_get;
-	rte_eth_bond_8023ad_agg_selection_set;
-	rte_eth_bond_8023ad_conf_get;
-	rte_eth_bond_8023ad_setup;
-
-} DPDK_16.07;
diff --git a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
+++ b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/dpaa/rte_pmd_dpaa_version.map b/drivers/net/dpaa/rte_pmd_dpaa_version.map
index 8cb4500b51..f403a1526d 100644
--- a/drivers/net/dpaa/rte_pmd_dpaa_version.map
+++ b/drivers/net/dpaa/rte_pmd_dpaa_version.map
@@ -1,12 +1,9 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	dpaa_eth_eventq_attach;
 	dpaa_eth_eventq_detach;
 	rte_pmd_dpaa_set_tx_loopback;
-} DPDK_17.11;
+
+	local: *;
+};
diff --git a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
index d1b4cdb232..f2bb793319 100644
--- a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
+++ b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
@@ -1,15 +1,11 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_eth_eventq_attach;
 	dpaa2_eth_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
@@ -17,4 +13,4 @@ EXPERIMENTAL {
 	rte_pmd_dpaa2_mux_flow_create;
 	rte_pmd_dpaa2_set_custom_hash;
 	rte_pmd_dpaa2_set_timestamp;
-} DPDK_17.11;
+};
diff --git a/drivers/net/e1000/rte_pmd_e1000_version.map b/drivers/net/e1000/rte_pmd_e1000_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/e1000/rte_pmd_e1000_version.map
+++ b/drivers/net/e1000/rte_pmd_e1000_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ena/rte_pmd_ena_version.map b/drivers/net/ena/rte_pmd_ena_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/ena/rte_pmd_ena_version.map
+++ b/drivers/net/ena/rte_pmd_ena_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enetc/rte_pmd_enetc_version.map b/drivers/net/enetc/rte_pmd_enetc_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/net/enetc/rte_pmd_enetc_version.map
+++ b/drivers/net/enetc/rte_pmd_enetc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enic/rte_pmd_enic_version.map b/drivers/net/enic/rte_pmd_enic_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/enic/rte_pmd_enic_version.map
+++ b/drivers/net/enic/rte_pmd_enic_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/failsafe/rte_pmd_failsafe_version.map b/drivers/net/failsafe/rte_pmd_failsafe_version.map
index b6d2840be4..f9f17e4f6e 100644
--- a/drivers/net/failsafe/rte_pmd_failsafe_version.map
+++ b/drivers/net/failsafe/rte_pmd_failsafe_version.map
@@ -1,4 +1,3 @@
-DPDK_17.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/fm10k/rte_pmd_fm10k_version.map b/drivers/net/fm10k/rte_pmd_fm10k_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/fm10k/rte_pmd_fm10k_version.map
+++ b/drivers/net/fm10k/rte_pmd_fm10k_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hinic/rte_pmd_hinic_version.map b/drivers/net/hinic/rte_pmd_hinic_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/hinic/rte_pmd_hinic_version.map
+++ b/drivers/net/hinic/rte_pmd_hinic_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map b/drivers/net/hns3/rte_pmd_hns3_version.map
index 35e5f2debb..f9f17e4f6e 100644
--- a/drivers/net/hns3/rte_pmd_hns3_version.map
+++ b/drivers/net/hns3/rte_pmd_hns3_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
-	 local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/i40e/rte_pmd_i40e_version.map b/drivers/net/i40e/rte_pmd_i40e_version.map
index cccd5768c2..a80e69b93e 100644
--- a/drivers/net/i40e/rte_pmd_i40e_version.map
+++ b/drivers/net/i40e/rte_pmd_i40e_version.map
@@ -1,23 +1,34 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_i40e_add_vf_mac_addr;
+	rte_pmd_i40e_flow_add_del_packet_template;
+	rte_pmd_i40e_flow_type_mapping_get;
+	rte_pmd_i40e_flow_type_mapping_reset;
+	rte_pmd_i40e_flow_type_mapping_update;
+	rte_pmd_i40e_get_ddp_info;
+	rte_pmd_i40e_get_ddp_list;
 	rte_pmd_i40e_get_vf_stats;
+	rte_pmd_i40e_inset_get;
+	rte_pmd_i40e_inset_set;
 	rte_pmd_i40e_ping_vfs;
+	rte_pmd_i40e_process_ddp_package;
 	rte_pmd_i40e_ptype_mapping_get;
 	rte_pmd_i40e_ptype_mapping_replace;
 	rte_pmd_i40e_ptype_mapping_reset;
 	rte_pmd_i40e_ptype_mapping_update;
+	rte_pmd_i40e_query_vfid_by_mac;
 	rte_pmd_i40e_reset_vf_stats;
+	rte_pmd_i40e_rss_queue_region_conf;
+	rte_pmd_i40e_set_tc_strict_prio;
 	rte_pmd_i40e_set_tx_loopback;
 	rte_pmd_i40e_set_vf_broadcast;
 	rte_pmd_i40e_set_vf_mac_addr;
 	rte_pmd_i40e_set_vf_mac_anti_spoof;
+	rte_pmd_i40e_set_vf_max_bw;
 	rte_pmd_i40e_set_vf_multicast_promisc;
+	rte_pmd_i40e_set_vf_tc_bw_alloc;
+	rte_pmd_i40e_set_vf_tc_max_bw;
 	rte_pmd_i40e_set_vf_unicast_promisc;
 	rte_pmd_i40e_set_vf_vlan_anti_spoof;
 	rte_pmd_i40e_set_vf_vlan_filter;
@@ -25,43 +36,5 @@ DPDK_17.02 {
 	rte_pmd_i40e_set_vf_vlan_stripq;
 	rte_pmd_i40e_set_vf_vlan_tag;
 
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_pmd_i40e_set_tc_strict_prio;
-	rte_pmd_i40e_set_vf_max_bw;
-	rte_pmd_i40e_set_vf_tc_bw_alloc;
-	rte_pmd_i40e_set_vf_tc_max_bw;
-	rte_pmd_i40e_process_ddp_package;
-	rte_pmd_i40e_get_ddp_list;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_i40e_get_ddp_info;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_pmd_i40e_add_vf_mac_addr;
-	rte_pmd_i40e_flow_add_del_packet_template;
-	rte_pmd_i40e_flow_type_mapping_update;
-	rte_pmd_i40e_flow_type_mapping_get;
-	rte_pmd_i40e_flow_type_mapping_reset;
-	rte_pmd_i40e_query_vfid_by_mac;
-	rte_pmd_i40e_rss_queue_region_conf;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_pmd_i40e_inset_get;
-	rte_pmd_i40e_inset_set;
-} DPDK_17.11;
\ No newline at end of file
+	local: *;
+};
diff --git a/drivers/net/iavf/rte_pmd_iavf_version.map b/drivers/net/iavf/rte_pmd_iavf_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/iavf/rte_pmd_iavf_version.map
+++ b/drivers/net/iavf/rte_pmd_iavf_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ice/rte_pmd_ice_version.map b/drivers/net/ice/rte_pmd_ice_version.map
index 7b23b609da..f9f17e4f6e 100644
--- a/drivers/net/ice/rte_pmd_ice_version.map
+++ b/drivers/net/ice/rte_pmd_ice_version.map
@@ -1,4 +1,3 @@
-DPDK_19.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ifc/rte_pmd_ifc_version.map b/drivers/net/ifc/rte_pmd_ifc_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/net/ifc/rte_pmd_ifc_version.map
+++ b/drivers/net/ifc/rte_pmd_ifc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
+++ b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
index c814f96d72..21534dbc3d 100644
--- a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
+++ b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
-	rte_pmd_ixgbe_set_all_queues_drop_en;
-	rte_pmd_ixgbe_set_tx_loopback;
-	rte_pmd_ixgbe_set_vf_mac_addr;
-	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
-	rte_pmd_ixgbe_set_vf_split_drop_en;
-	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
-	rte_pmd_ixgbe_set_vf_vlan_insert;
-	rte_pmd_ixgbe_set_vf_vlan_stripq;
-} DPDK_2.0;
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_ixgbe_bypass_event_show;
+	rte_pmd_ixgbe_bypass_event_store;
+	rte_pmd_ixgbe_bypass_init;
+	rte_pmd_ixgbe_bypass_state_set;
+	rte_pmd_ixgbe_bypass_state_show;
+	rte_pmd_ixgbe_bypass_ver_show;
+	rte_pmd_ixgbe_bypass_wd_reset;
+	rte_pmd_ixgbe_bypass_wd_timeout_show;
+	rte_pmd_ixgbe_bypass_wd_timeout_store;
 	rte_pmd_ixgbe_macsec_config_rxsc;
 	rte_pmd_ixgbe_macsec_config_txsc;
 	rte_pmd_ixgbe_macsec_disable;
 	rte_pmd_ixgbe_macsec_enable;
 	rte_pmd_ixgbe_macsec_select_rxsa;
 	rte_pmd_ixgbe_macsec_select_txsa;
+	rte_pmd_ixgbe_ping_vf;
+	rte_pmd_ixgbe_set_all_queues_drop_en;
+	rte_pmd_ixgbe_set_tc_bw_alloc;
+	rte_pmd_ixgbe_set_tx_loopback;
+	rte_pmd_ixgbe_set_vf_mac_addr;
+	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
 	rte_pmd_ixgbe_set_vf_rate_limit;
 	rte_pmd_ixgbe_set_vf_rx;
 	rte_pmd_ixgbe_set_vf_rxmode;
+	rte_pmd_ixgbe_set_vf_split_drop_en;
 	rte_pmd_ixgbe_set_vf_tx;
+	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
 	rte_pmd_ixgbe_set_vf_vlan_filter;
-} DPDK_16.11;
+	rte_pmd_ixgbe_set_vf_vlan_insert;
+	rte_pmd_ixgbe_set_vf_vlan_stripq;
 
-DPDK_17.05 {
-	global:
-
-	rte_pmd_ixgbe_ping_vf;
-	rte_pmd_ixgbe_set_tc_bw_alloc;
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_ixgbe_bypass_event_show;
-	rte_pmd_ixgbe_bypass_event_store;
-	rte_pmd_ixgbe_bypass_init;
-	rte_pmd_ixgbe_bypass_state_set;
-	rte_pmd_ixgbe_bypass_state_show;
-	rte_pmd_ixgbe_bypass_ver_show;
-	rte_pmd_ixgbe_bypass_wd_reset;
-	rte_pmd_ixgbe_bypass_wd_timeout_show;
-	rte_pmd_ixgbe_bypass_wd_timeout_store;
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/net/kni/rte_pmd_kni_version.map b/drivers/net/kni/rte_pmd_kni_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/kni/rte_pmd_kni_version.map
+++ b/drivers/net/kni/rte_pmd_kni_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/liquidio/rte_pmd_liquidio_version.map b/drivers/net/liquidio/rte_pmd_liquidio_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/liquidio/rte_pmd_liquidio_version.map
+++ b/drivers/net/liquidio/rte_pmd_liquidio_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/memif/rte_pmd_memif_version.map b/drivers/net/memif/rte_pmd_memif_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/net/memif/rte_pmd_memif_version.map
+++ b/drivers/net/memif/rte_pmd_memif_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/mlx4/rte_pmd_mlx4_version.map b/drivers/net/mlx4/rte_pmd_mlx4_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/mlx4/rte_pmd_mlx4_version.map
+++ b/drivers/net/mlx4/rte_pmd_mlx4_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mlx5/rte_pmd_mlx5_version.map b/drivers/net/mlx5/rte_pmd_mlx5_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/mlx5/rte_pmd_mlx5_version.map
+++ b/drivers/net/mlx5/rte_pmd_mlx5_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvneta/rte_pmd_mvneta_version.map b/drivers/net/mvneta/rte_pmd_mvneta_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/net/mvneta/rte_pmd_mvneta_version.map
+++ b/drivers/net/mvneta/rte_pmd_mvneta_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
+++ b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/netvsc/rte_pmd_netvsc_version.map b/drivers/net/netvsc/rte_pmd_netvsc_version.map
index d534019a6b..f9f17e4f6e 100644
--- a/drivers/net/netvsc/rte_pmd_netvsc_version.map
+++ b/drivers/net/netvsc/rte_pmd_netvsc_version.map
@@ -1,5 +1,3 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfb/rte_pmd_nfb_version.map b/drivers/net/nfb/rte_pmd_nfb_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/nfb/rte_pmd_nfb_version.map
+++ b/drivers/net/nfb/rte_pmd_nfb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfp/rte_pmd_nfp_version.map b/drivers/net/nfp/rte_pmd_nfp_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/nfp/rte_pmd_nfp_version.map
+++ b/drivers/net/nfp/rte_pmd_nfp_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/null/rte_pmd_null_version.map b/drivers/net/null/rte_pmd_null_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/null/rte_pmd_null_version.map
+++ b/drivers/net/null/rte_pmd_null_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/octeontx/rte_pmd_octeontx_version.map b/drivers/net/octeontx/rte_pmd_octeontx_version.map
index a3161b14d0..f7cae02fac 100644
--- a/drivers/net/octeontx/rte_pmd_octeontx_version.map
+++ b/drivers/net/octeontx/rte_pmd_octeontx_version.map
@@ -1,11 +1,7 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.02 {
+DPDK_20.0 {
 	global:
 
 	rte_octeontx_pchan_map;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
+++ b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/pcap/rte_pmd_pcap_version.map b/drivers/net/pcap/rte_pmd_pcap_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/pcap/rte_pmd_pcap_version.map
+++ b/drivers/net/pcap/rte_pmd_pcap_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/qede/rte_pmd_qede_version.map b/drivers/net/qede/rte_pmd_qede_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/qede/rte_pmd_qede_version.map
+++ b/drivers/net/qede/rte_pmd_qede_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ring/rte_pmd_ring_version.map b/drivers/net/ring/rte_pmd_ring_version.map
index 1f785d9409..ebb6be2733 100644
--- a/drivers/net/ring/rte_pmd_ring_version.map
+++ b/drivers/net/ring/rte_pmd_ring_version.map
@@ -1,14 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_from_ring;
 	rte_eth_from_rings;
 
 	local: *;
 };
-
-DPDK_2.2 {
-	global:
-
-	rte_eth_from_ring;
-
-} DPDK_2.0;
diff --git a/drivers/net/sfc/rte_pmd_sfc_version.map b/drivers/net/sfc/rte_pmd_sfc_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/sfc/rte_pmd_sfc_version.map
+++ b/drivers/net/sfc/rte_pmd_sfc_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/softnic/rte_pmd_softnic_version.map b/drivers/net/softnic/rte_pmd_softnic_version.map
index bc44b06f98..50f113d5a2 100644
--- a/drivers/net/softnic/rte_pmd_softnic_version.map
+++ b/drivers/net/softnic/rte_pmd_softnic_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_softnic_run;
diff --git a/drivers/net/szedata2/rte_pmd_szedata2_version.map b/drivers/net/szedata2/rte_pmd_szedata2_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/szedata2/rte_pmd_szedata2_version.map
+++ b/drivers/net/szedata2/rte_pmd_szedata2_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/tap/rte_pmd_tap_version.map b/drivers/net/tap/rte_pmd_tap_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/tap/rte_pmd_tap_version.map
+++ b/drivers/net/tap/rte_pmd_tap_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/thunderx/rte_pmd_thunderx_version.map b/drivers/net/thunderx/rte_pmd_thunderx_version.map
index 1901bcb3b3..f9f17e4f6e 100644
--- a/drivers/net/thunderx/rte_pmd_thunderx_version.map
+++ b/drivers/net/thunderx/rte_pmd_thunderx_version.map
@@ -1,4 +1,3 @@
-DPDK_16.07 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
+++ b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vhost/rte_pmd_vhost_version.map b/drivers/net/vhost/rte_pmd_vhost_version.map
index 695db85749..16b591ccc4 100644
--- a/drivers/net/vhost/rte_pmd_vhost_version.map
+++ b/drivers/net/vhost/rte_pmd_vhost_version.map
@@ -1,13 +1,8 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_vhost_get_queue_event;
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
 	rte_eth_vhost_get_vid_from_port_id;
+
+	local: *;
 };
diff --git a/drivers/net/virtio/rte_pmd_virtio_version.map b/drivers/net/virtio/rte_pmd_virtio_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/virtio/rte_pmd_virtio_version.map
+++ b/drivers/net/virtio/rte_pmd_virtio_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
+++ b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
+++ b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
index d16a136fc8..ca6a0d7626 100644
--- a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
+++ b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
@@ -1,4 +1,4 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	global:
 
 	rte_qdma_attr_get;
@@ -9,9 +9,9 @@ DPDK_19.05 {
 	rte_qdma_start;
 	rte_qdma_stop;
 	rte_qdma_vq_create;
-	rte_qdma_vq_destroy;
 	rte_qdma_vq_dequeue;
 	rte_qdma_vq_dequeue_multi;
+	rte_qdma_vq_destroy;
 	rte_qdma_vq_enqueue;
 	rte_qdma_vq_enqueue_multi;
 	rte_qdma_vq_stats;
diff --git a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
+++ b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ioat/rte_rawdev_ioat_version.map b/drivers/raw/ioat/rte_rawdev_ioat_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/ioat/rte_rawdev_ioat_version.map
+++ b/drivers/raw/ioat/rte_rawdev_ioat_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ntb/rte_rawdev_ntb_version.map b/drivers/raw/ntb/rte_rawdev_ntb_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/raw/ntb/rte_rawdev_ntb_version.map
+++ b/drivers/raw/ntb/rte_rawdev_ntb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
+++ b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
+++ b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/lib/librte_acl/rte_acl_version.map b/lib/librte_acl/rte_acl_version.map
index b09370a104..c3daca8115 100644
--- a/lib/librte_acl/rte_acl_version.map
+++ b/lib/librte_acl/rte_acl_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_acl_add_rules;
diff --git a/lib/librte_bbdev/rte_bbdev_version.map b/lib/librte_bbdev/rte_bbdev_version.map
index 3624eb1cb4..45b560dbe7 100644
--- a/lib/librte_bbdev/rte_bbdev_version.map
+++ b/lib/librte_bbdev/rte_bbdev_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_bitratestats/rte_bitratestats_version.map b/lib/librte_bitratestats/rte_bitratestats_version.map
index fe7454452d..88fc2912db 100644
--- a/lib/librte_bitratestats/rte_bitratestats_version.map
+++ b/lib/librte_bitratestats/rte_bitratestats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_stats_bitrate_calc;
diff --git a/lib/librte_bpf/rte_bpf_version.map b/lib/librte_bpf/rte_bpf_version.map
index a203e088ea..e1ec43faa0 100644
--- a/lib/librte_bpf/rte_bpf_version.map
+++ b/lib/librte_bpf/rte_bpf_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_cfgfile/rte_cfgfile_version.map b/lib/librte_cfgfile/rte_cfgfile_version.map
index a0a11cea8d..906eee96bf 100644
--- a/lib/librte_cfgfile/rte_cfgfile_version.map
+++ b/lib/librte_cfgfile/rte_cfgfile_version.map
@@ -1,40 +1,22 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_cfgfile_add_entry;
+	rte_cfgfile_add_section;
 	rte_cfgfile_close;
+	rte_cfgfile_create;
 	rte_cfgfile_get_entry;
 	rte_cfgfile_has_entry;
 	rte_cfgfile_has_section;
 	rte_cfgfile_load;
+	rte_cfgfile_load_with_params;
 	rte_cfgfile_num_sections;
+	rte_cfgfile_save;
 	rte_cfgfile_section_entries;
+	rte_cfgfile_section_entries_by_index;
 	rte_cfgfile_section_num_entries;
 	rte_cfgfile_sections;
+	rte_cfgfile_set_entry;
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_cfgfile_section_entries_by_index;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_cfgfile_load_with_params;
-
-} DPDK_16.04;
-
-DPDK_17.11 {
-	global:
-
-	rte_cfgfile_add_entry;
-	rte_cfgfile_add_section;
-	rte_cfgfile_create;
-	rte_cfgfile_save;
-	rte_cfgfile_set_entry;
-
-} DPDK_17.05;
diff --git a/lib/librte_cmdline/rte_cmdline_version.map b/lib/librte_cmdline/rte_cmdline_version.map
index 04bcb387f2..95fce812ff 100644
--- a/lib/librte_cmdline/rte_cmdline_version.map
+++ b/lib/librte_cmdline/rte_cmdline_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	cirbuf_add_buf_head;
@@ -40,6 +40,7 @@ DPDK_2.0 {
 	cmdline_parse_num;
 	cmdline_parse_portlist;
 	cmdline_parse_string;
+	cmdline_poll;
 	cmdline_printf;
 	cmdline_quit;
 	cmdline_set_prompt;
@@ -68,10 +69,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	cmdline_poll;
-
-} DPDK_2.0;
diff --git a/lib/librte_compressdev/rte_compressdev_version.map b/lib/librte_compressdev/rte_compressdev_version.map
index e2a108b650..cfcd50ac1c 100644
--- a/lib/librte_compressdev/rte_compressdev_version.map
+++ b/lib/librte_compressdev/rte_compressdev_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map
index 3deb265ac2..1dd1e259a0 100644
--- a/lib/librte_cryptodev/rte_cryptodev_version.map
+++ b/lib/librte_cryptodev/rte_cryptodev_version.map
@@ -1,92 +1,62 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
-	rte_cryptodevs;
+	rte_crypto_aead_algorithm_strings;
+	rte_crypto_aead_operation_strings;
+	rte_crypto_auth_algorithm_strings;
+	rte_crypto_auth_operation_strings;
+	rte_crypto_cipher_algorithm_strings;
+	rte_crypto_cipher_operation_strings;
+	rte_crypto_op_pool_create;
+	rte_cryptodev_allocate_driver;
 	rte_cryptodev_callback_register;
 	rte_cryptodev_callback_unregister;
 	rte_cryptodev_close;
-	rte_cryptodev_count;
 	rte_cryptodev_configure;
+	rte_cryptodev_count;
+	rte_cryptodev_device_count_by_driver;
+	rte_cryptodev_devices_get;
+	rte_cryptodev_driver_id_get;
+	rte_cryptodev_driver_name_get;
+	rte_cryptodev_get_aead_algo_enum;
+	rte_cryptodev_get_auth_algo_enum;
+	rte_cryptodev_get_cipher_algo_enum;
 	rte_cryptodev_get_dev_id;
 	rte_cryptodev_get_feature_name;
+	rte_cryptodev_get_sec_ctx;
 	rte_cryptodev_info_get;
+	rte_cryptodev_name_get;
 	rte_cryptodev_pmd_allocate;
 	rte_cryptodev_pmd_callback_process;
+	rte_cryptodev_pmd_create;
+	rte_cryptodev_pmd_create_dev_name;
+	rte_cryptodev_pmd_destroy;
+	rte_cryptodev_pmd_get_dev;
+	rte_cryptodev_pmd_get_named_dev;
+	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_pmd_parse_input_args;
 	rte_cryptodev_pmd_release_device;
-	rte_cryptodev_sym_session_create;
-	rte_cryptodev_sym_session_free;
+	rte_cryptodev_queue_pair_count;
+	rte_cryptodev_queue_pair_setup;
 	rte_cryptodev_socket_id;
 	rte_cryptodev_start;
 	rte_cryptodev_stats_get;
 	rte_cryptodev_stats_reset;
 	rte_cryptodev_stop;
-	rte_cryptodev_queue_pair_count;
-	rte_cryptodev_queue_pair_setup;
-	rte_crypto_op_pool_create;
-
-	local: *;
-};
-
-DPDK_17.02 {
-	global:
-
-	rte_cryptodev_devices_get;
-	rte_cryptodev_pmd_create_dev_name;
-	rte_cryptodev_pmd_get_dev;
-	rte_cryptodev_pmd_get_named_dev;
-	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_sym_capability_check_aead;
 	rte_cryptodev_sym_capability_check_auth;
 	rte_cryptodev_sym_capability_check_cipher;
 	rte_cryptodev_sym_capability_get;
-	rte_crypto_auth_algorithm_strings;
-	rte_crypto_auth_operation_strings;
-	rte_crypto_cipher_algorithm_strings;
-	rte_crypto_cipher_operation_strings;
-
-} DPDK_16.04;
-
-DPDK_17.05 {
-	global:
-
-	rte_cryptodev_get_auth_algo_enum;
-	rte_cryptodev_get_cipher_algo_enum;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_cryptodev_allocate_driver;
-	rte_cryptodev_device_count_by_driver;
-	rte_cryptodev_driver_id_get;
-	rte_cryptodev_driver_name_get;
-	rte_cryptodev_get_aead_algo_enum;
-	rte_cryptodev_sym_capability_check_aead;
-	rte_cryptodev_sym_session_init;
-	rte_cryptodev_sym_session_clear;
-	rte_crypto_aead_algorithm_strings;
-	rte_crypto_aead_operation_strings;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_cryptodev_get_sec_ctx;
-	rte_cryptodev_name_get;
-	rte_cryptodev_pmd_create;
-	rte_cryptodev_pmd_destroy;
-	rte_cryptodev_pmd_parse_input_args;
-
-} DPDK_17.08;
-
-DPDK_18.05 {
-	global:
-
 	rte_cryptodev_sym_get_header_session_size;
 	rte_cryptodev_sym_get_private_session_size;
+	rte_cryptodev_sym_session_clear;
+	rte_cryptodev_sym_session_create;
+	rte_cryptodev_sym_session_free;
+	rte_cryptodev_sym_session_init;
+	rte_cryptodevs;
 
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 00e26b4804..1b7c643005 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_distributor_clear_returns;
@@ -10,4 +10,6 @@ DPDK_17.05 {
 	rte_distributor_request_pkt;
 	rte_distributor_return_pkt;
 	rte_distributor_returned_pkts;
+
+	local: *;
 };
diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map
index 7cbf82d37b..8c41999317 100644
--- a/lib/librte_eal/rte_eal_version.map
+++ b/lib/librte_eal/rte_eal_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	__rte_panic;
@@ -7,46 +7,111 @@ DPDK_2.0 {
 	lcore_config;
 	per_lcore__lcore_id;
 	per_lcore__rte_errno;
+	rte_bus_dump;
+	rte_bus_find;
+	rte_bus_find_by_device;
+	rte_bus_find_by_name;
+	rte_bus_get_iommu_class;
+	rte_bus_probe;
+	rte_bus_register;
+	rte_bus_scan;
+	rte_bus_unregister;
 	rte_calloc;
 	rte_calloc_socket;
 	rte_cpu_check_supported;
 	rte_cpu_get_flag_enabled;
+	rte_cpu_get_flag_name;
+	rte_cpu_is_supported;
+	rte_ctrl_thread_create;
 	rte_cycles_vmware_tsc_map;
 	rte_delay_us;
+	rte_delay_us_block;
+	rte_delay_us_callback_register;
+	rte_dev_is_probed;
+	rte_dev_probe;
+	rte_dev_remove;
+	rte_devargs_add;
+	rte_devargs_dump;
+	rte_devargs_insert;
+	rte_devargs_next;
+	rte_devargs_parse;
+	rte_devargs_parsef;
+	rte_devargs_remove;
+	rte_devargs_type_count;
 	rte_dump_physmem_layout;
 	rte_dump_registers;
 	rte_dump_stack;
 	rte_dump_tailq;
 	rte_eal_alarm_cancel;
 	rte_eal_alarm_set;
+	rte_eal_cleanup;
+	rte_eal_create_uio_dev;
 	rte_eal_get_configuration;
 	rte_eal_get_lcore_state;
 	rte_eal_get_physmem_size;
+	rte_eal_get_runtime_dir;
 	rte_eal_has_hugepages;
+	rte_eal_has_pci;
+	rte_eal_hotplug_add;
+	rte_eal_hotplug_remove;
 	rte_eal_hpet_init;
 	rte_eal_init;
 	rte_eal_iopl_init;
+	rte_eal_iova_mode;
 	rte_eal_lcore_role;
+	rte_eal_mbuf_user_pool_ops;
 	rte_eal_mp_remote_launch;
 	rte_eal_mp_wait_lcore;
+	rte_eal_primary_proc_alive;
 	rte_eal_process_type;
 	rte_eal_remote_launch;
 	rte_eal_tailq_lookup;
 	rte_eal_tailq_register;
+	rte_eal_using_phys_addrs;
+	rte_eal_vfio_intr_mode;
 	rte_eal_wait_lcore;
+	rte_epoll_ctl;
+	rte_epoll_wait;
 	rte_exit;
 	rte_free;
 	rte_get_hpet_cycles;
 	rte_get_hpet_hz;
 	rte_get_tsc_hz;
 	rte_hexdump;
+	rte_hypervisor_get;
+	rte_hypervisor_get_name;
+	rte_intr_allow_others;
 	rte_intr_callback_register;
 	rte_intr_callback_unregister;
+	rte_intr_cap_multiple;
 	rte_intr_disable;
+	rte_intr_dp_is_en;
+	rte_intr_efd_disable;
+	rte_intr_efd_enable;
 	rte_intr_enable;
+	rte_intr_free_epoll_fd;
+	rte_intr_rx_ctl;
+	rte_intr_tls_epfd;
+	rte_keepalive_create;
+	rte_keepalive_dispatch_pings;
+	rte_keepalive_mark_alive;
+	rte_keepalive_mark_sleep;
+	rte_keepalive_register_core;
+	rte_keepalive_register_relay_callback;
+	rte_lcore_has_role;
+	rte_lcore_index;
+	rte_lcore_to_socket_id;
 	rte_log;
 	rte_log_cur_msg_loglevel;
 	rte_log_cur_msg_logtype;
+	rte_log_dump;
+	rte_log_get_global_level;
+	rte_log_get_level;
+	rte_log_register;
+	rte_log_set_global_level;
+	rte_log_set_level;
+	rte_log_set_level_pattern;
+	rte_log_set_level_regexp;
 	rte_logs;
 	rte_malloc;
 	rte_malloc_dump_stats;
@@ -54,155 +119,38 @@ DPDK_2.0 {
 	rte_malloc_set_limit;
 	rte_malloc_socket;
 	rte_malloc_validate;
+	rte_malloc_virt2iova;
+	rte_mcfg_mem_read_lock;
+	rte_mcfg_mem_read_unlock;
+	rte_mcfg_mem_write_lock;
+	rte_mcfg_mem_write_unlock;
+	rte_mcfg_mempool_read_lock;
+	rte_mcfg_mempool_read_unlock;
+	rte_mcfg_mempool_write_lock;
+	rte_mcfg_mempool_write_unlock;
+	rte_mcfg_tailq_read_lock;
+	rte_mcfg_tailq_read_unlock;
+	rte_mcfg_tailq_write_lock;
+	rte_mcfg_tailq_write_unlock;
 	rte_mem_lock_page;
+	rte_mem_virt2iova;
 	rte_mem_virt2phy;
 	rte_memdump;
 	rte_memory_get_nchannel;
 	rte_memory_get_nrank;
 	rte_memzone_dump;
+	rte_memzone_free;
 	rte_memzone_lookup;
 	rte_memzone_reserve;
 	rte_memzone_reserve_aligned;
 	rte_memzone_reserve_bounded;
 	rte_memzone_walk;
 	rte_openlog_stream;
+	rte_rand;
 	rte_realloc;
-	rte_set_application_usage_hook;
-	rte_socket_id;
-	rte_strerror;
-	rte_strsplit;
-	rte_sys_gettid;
-	rte_thread_get_affinity;
-	rte_thread_set_affinity;
-	rte_vlog;
-	rte_zmalloc;
-	rte_zmalloc_socket;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_epoll_ctl;
-	rte_epoll_wait;
-	rte_intr_allow_others;
-	rte_intr_dp_is_en;
-	rte_intr_efd_disable;
-	rte_intr_efd_enable;
-	rte_intr_rx_ctl;
-	rte_intr_tls_epfd;
-	rte_memzone_free;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_intr_cap_multiple;
-	rte_keepalive_create;
-	rte_keepalive_dispatch_pings;
-	rte_keepalive_mark_alive;
-	rte_keepalive_register_core;
-
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_cpu_get_flag_name;
-	rte_eal_primary_proc_alive;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_keepalive_mark_sleep;
-	rte_keepalive_register_relay_callback;
-	rte_rtm_supported;
-	rte_thread_setname;
-
-} DPDK_16.04;
-
-DPDK_16.11 {
-	global:
-
-	rte_delay_us_block;
-	rte_delay_us_callback_register;
-
-} DPDK_16.07;
-
-DPDK_17.02 {
-	global:
-
-	rte_bus_dump;
-	rte_bus_probe;
-	rte_bus_register;
-	rte_bus_scan;
-	rte_bus_unregister;
-
-} DPDK_16.11;
-
-DPDK_17.05 {
-	global:
-
-	rte_cpu_is_supported;
-	rte_intr_free_epoll_fd;
-	rte_log_dump;
-	rte_log_get_global_level;
-	rte_log_register;
-	rte_log_set_global_level;
-	rte_log_set_level;
-	rte_log_set_level_regexp;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_bus_find;
-	rte_bus_find_by_device;
-	rte_bus_find_by_name;
-	rte_log_get_level;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eal_create_uio_dev;
-	rte_bus_get_iommu_class;
-	rte_eal_has_pci;
-	rte_eal_iova_mode;
-	rte_eal_using_phys_addrs;
-	rte_eal_vfio_intr_mode;
-	rte_lcore_has_role;
-	rte_malloc_virt2iova;
-	rte_mem_virt2iova;
-	rte_vfio_enable;
-	rte_vfio_is_enabled;
-	rte_vfio_noiommu_is_enabled;
-	rte_vfio_release_device;
-	rte_vfio_setup_device;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_hypervisor_get;
-	rte_hypervisor_get_name;
-	rte_vfio_clear_group;
 	rte_reciprocal_value;
 	rte_reciprocal_value_u64;
-
-}  DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_log_set_level_pattern;
+	rte_rtm_supported;
 	rte_service_attr_get;
 	rte_service_attr_reset_all;
 	rte_service_component_register;
@@ -215,6 +163,8 @@ DPDK_18.05 {
 	rte_service_get_count;
 	rte_service_get_name;
 	rte_service_lcore_add;
+	rte_service_lcore_attr_get;
+	rte_service_lcore_attr_reset_all;
 	rte_service_lcore_count;
 	rte_service_lcore_count_services;
 	rte_service_lcore_del;
@@ -224,6 +174,7 @@ DPDK_18.05 {
 	rte_service_lcore_stop;
 	rte_service_map_lcore_get;
 	rte_service_map_lcore_set;
+	rte_service_may_be_active;
 	rte_service_probe_capability;
 	rte_service_run_iter_on_app_lcore;
 	rte_service_runstate_get;
@@ -231,17 +182,23 @@ DPDK_18.05 {
 	rte_service_set_runstate_mapped_check;
 	rte_service_set_stats_enable;
 	rte_service_start_with_defaults;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eal_mbuf_user_pool_ops;
+	rte_set_application_usage_hook;
+	rte_socket_count;
+	rte_socket_id;
+	rte_socket_id_by_idx;
+	rte_srand;
+	rte_strerror;
+	rte_strscpy;
+	rte_strsplit;
+	rte_sys_gettid;
+	rte_thread_get_affinity;
+	rte_thread_set_affinity;
+	rte_thread_setname;
 	rte_uuid_compare;
 	rte_uuid_is_null;
 	rte_uuid_parse;
 	rte_uuid_unparse;
+	rte_vfio_clear_group;
 	rte_vfio_container_create;
 	rte_vfio_container_destroy;
 	rte_vfio_container_dma_map;
@@ -250,67 +207,20 @@ DPDK_18.08 {
 	rte_vfio_container_group_unbind;
 	rte_vfio_dma_map;
 	rte_vfio_dma_unmap;
+	rte_vfio_enable;
 	rte_vfio_get_container_fd;
 	rte_vfio_get_group_fd;
 	rte_vfio_get_group_num;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_dev_probe;
-	rte_dev_remove;
-	rte_eal_get_runtime_dir;
-	rte_eal_hotplug_add;
-	rte_eal_hotplug_remove;
-	rte_strscpy;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_ctrl_thread_create;
-	rte_dev_is_probed;
-	rte_devargs_add;
-	rte_devargs_dump;
-	rte_devargs_insert;
-	rte_devargs_next;
-	rte_devargs_parse;
-	rte_devargs_parsef;
-	rte_devargs_remove;
-	rte_devargs_type_count;
-	rte_eal_cleanup;
-	rte_socket_count;
-	rte_socket_id_by_idx;
-
-} DPDK_18.11;
-
-DPDK_19.08 {
-	global:
-
-	rte_lcore_index;
-	rte_lcore_to_socket_id;
-	rte_mcfg_mem_read_lock;
-	rte_mcfg_mem_read_unlock;
-	rte_mcfg_mem_write_lock;
-	rte_mcfg_mem_write_unlock;
-	rte_mcfg_mempool_read_lock;
-	rte_mcfg_mempool_read_unlock;
-	rte_mcfg_mempool_write_lock;
-	rte_mcfg_mempool_write_unlock;
-	rte_mcfg_tailq_read_lock;
-	rte_mcfg_tailq_read_unlock;
-	rte_mcfg_tailq_write_lock;
-	rte_mcfg_tailq_write_unlock;
-	rte_rand;
-	rte_service_lcore_attr_get;
-	rte_service_lcore_attr_reset_all;
-	rte_service_may_be_active;
-	rte_srand;
-
-} DPDK_19.05;
+	rte_vfio_is_enabled;
+	rte_vfio_noiommu_is_enabled;
+	rte_vfio_release_device;
+	rte_vfio_setup_device;
+	rte_vlog;
+	rte_zmalloc;
+	rte_zmalloc_socket;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_efd/rte_efd_version.map b/lib/librte_efd/rte_efd_version.map
index ae60a64178..e010eecfe4 100644
--- a/lib/librte_efd/rte_efd_version.map
+++ b/lib/librte_efd/rte_efd_version.map
@@ -1,4 +1,4 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_efd_create;
diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map
index 6df42a47b8..9e1dbdebb4 100644
--- a/lib/librte_ethdev/rte_ethdev_version.map
+++ b/lib/librte_ethdev/rte_ethdev_version.map
@@ -1,35 +1,53 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	global:
 
+	_rte_eth_dev_callback_process;
+	_rte_eth_dev_reset;
+	rte_eth_add_first_rx_callback;
 	rte_eth_add_rx_callback;
 	rte_eth_add_tx_callback;
 	rte_eth_allmulticast_disable;
 	rte_eth_allmulticast_enable;
 	rte_eth_allmulticast_get;
+	rte_eth_dev_adjust_nb_rx_tx_desc;
 	rte_eth_dev_allocate;
 	rte_eth_dev_allocated;
+	rte_eth_dev_attach_secondary;
 	rte_eth_dev_callback_register;
 	rte_eth_dev_callback_unregister;
 	rte_eth_dev_close;
 	rte_eth_dev_configure;
 	rte_eth_dev_count;
+	rte_eth_dev_count_avail;
+	rte_eth_dev_count_total;
 	rte_eth_dev_default_mac_addr_set;
+	rte_eth_dev_filter_ctrl;
 	rte_eth_dev_filter_supported;
 	rte_eth_dev_flow_ctrl_get;
 	rte_eth_dev_flow_ctrl_set;
+	rte_eth_dev_fw_version_get;
 	rte_eth_dev_get_dcb_info;
 	rte_eth_dev_get_eeprom;
 	rte_eth_dev_get_eeprom_length;
 	rte_eth_dev_get_mtu;
+	rte_eth_dev_get_name_by_port;
+	rte_eth_dev_get_port_by_name;
 	rte_eth_dev_get_reg_info;
+	rte_eth_dev_get_sec_ctx;
+	rte_eth_dev_get_supported_ptypes;
 	rte_eth_dev_get_vlan_offload;
-	rte_eth_devices;
 	rte_eth_dev_info_get;
 	rte_eth_dev_is_valid_port;
+	rte_eth_dev_l2_tunnel_eth_type_conf;
+	rte_eth_dev_l2_tunnel_offload_set;
+	rte_eth_dev_logtype;
 	rte_eth_dev_mac_addr_add;
 	rte_eth_dev_mac_addr_remove;
+	rte_eth_dev_pool_ops_supported;
 	rte_eth_dev_priority_flow_ctrl_set;
+	rte_eth_dev_probing_finish;
 	rte_eth_dev_release_port;
+	rte_eth_dev_reset;
 	rte_eth_dev_rss_hash_conf_get;
 	rte_eth_dev_rss_hash_update;
 	rte_eth_dev_rss_reta_query;
@@ -38,6 +56,7 @@ DPDK_2.2 {
 	rte_eth_dev_rx_intr_ctl_q;
 	rte_eth_dev_rx_intr_disable;
 	rte_eth_dev_rx_intr_enable;
+	rte_eth_dev_rx_offload_name;
 	rte_eth_dev_rx_queue_start;
 	rte_eth_dev_rx_queue_stop;
 	rte_eth_dev_set_eeprom;
@@ -47,18 +66,28 @@ DPDK_2.2 {
 	rte_eth_dev_set_mtu;
 	rte_eth_dev_set_rx_queue_stats_mapping;
 	rte_eth_dev_set_tx_queue_stats_mapping;
+	rte_eth_dev_set_vlan_ether_type;
 	rte_eth_dev_set_vlan_offload;
 	rte_eth_dev_set_vlan_pvid;
 	rte_eth_dev_set_vlan_strip_on_queue;
 	rte_eth_dev_socket_id;
 	rte_eth_dev_start;
 	rte_eth_dev_stop;
+	rte_eth_dev_tx_offload_name;
 	rte_eth_dev_tx_queue_start;
 	rte_eth_dev_tx_queue_stop;
 	rte_eth_dev_uc_all_hash_table_set;
 	rte_eth_dev_uc_hash_table_set;
+	rte_eth_dev_udp_tunnel_port_add;
+	rte_eth_dev_udp_tunnel_port_delete;
 	rte_eth_dev_vlan_filter;
+	rte_eth_devices;
 	rte_eth_dma_zone_reserve;
+	rte_eth_find_next;
+	rte_eth_find_next_owned_by;
+	rte_eth_iterator_cleanup;
+	rte_eth_iterator_init;
+	rte_eth_iterator_next;
 	rte_eth_led_off;
 	rte_eth_led_on;
 	rte_eth_link;
@@ -75,6 +104,7 @@ DPDK_2.2 {
 	rte_eth_rx_queue_info_get;
 	rte_eth_rx_queue_setup;
 	rte_eth_set_queue_rate_limit;
+	rte_eth_speed_bitflag;
 	rte_eth_stats;
 	rte_eth_stats_get;
 	rte_eth_stats_reset;
@@ -85,66 +115,27 @@ DPDK_2.2 {
 	rte_eth_timesync_read_time;
 	rte_eth_timesync_read_tx_timestamp;
 	rte_eth_timesync_write_time;
-	rte_eth_tx_queue_info_get;
-	rte_eth_tx_queue_setup;
-	rte_eth_xstats_get;
-	rte_eth_xstats_reset;
-
-	local: *;
-};
-
-DPDK_16.04 {
-	global:
-
-	rte_eth_dev_get_supported_ptypes;
-	rte_eth_dev_l2_tunnel_eth_type_conf;
-	rte_eth_dev_l2_tunnel_offload_set;
-	rte_eth_dev_set_vlan_ether_type;
-	rte_eth_dev_udp_tunnel_port_add;
-	rte_eth_dev_udp_tunnel_port_delete;
-	rte_eth_speed_bitflag;
 	rte_eth_tx_buffer_count_callback;
 	rte_eth_tx_buffer_drop_callback;
 	rte_eth_tx_buffer_init;
 	rte_eth_tx_buffer_set_err_callback;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_add_first_rx_callback;
-	rte_eth_dev_get_name_by_port;
-	rte_eth_dev_get_port_by_name;
-	rte_eth_xstats_get_names;
-
-} DPDK_16.04;
-
-DPDK_17.02 {
-	global:
-
-	_rte_eth_dev_reset;
-	rte_eth_dev_fw_version_get;
-
-} DPDK_16.07;
-
-DPDK_17.05 {
-	global:
-
-	rte_eth_dev_attach_secondary;
-	rte_eth_find_next;
 	rte_eth_tx_done_cleanup;
+	rte_eth_tx_queue_info_get;
+	rte_eth_tx_queue_setup;
+	rte_eth_xstats_get;
 	rte_eth_xstats_get_by_id;
 	rte_eth_xstats_get_id_by_name;
+	rte_eth_xstats_get_names;
 	rte_eth_xstats_get_names_by_id;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	_rte_eth_dev_callback_process;
-	rte_eth_dev_adjust_nb_rx_tx_desc;
+	rte_eth_xstats_reset;
+	rte_flow_copy;
+	rte_flow_create;
+	rte_flow_destroy;
+	rte_flow_error_set;
+	rte_flow_flush;
+	rte_flow_isolate;
+	rte_flow_query;
+	rte_flow_validate;
 	rte_tm_capabilities_get;
 	rte_tm_get_number_of_leaf_nodes;
 	rte_tm_hierarchy_commit;
@@ -176,65 +167,8 @@ DPDK_17.08 {
 	rte_tm_wred_profile_add;
 	rte_tm_wred_profile_delete;
 
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eth_dev_get_sec_ctx;
-	rte_eth_dev_pool_ops_supported;
-	rte_eth_dev_reset;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_eth_dev_filter_ctrl;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_eth_dev_count_avail;
-	rte_eth_dev_probing_finish;
-	rte_eth_find_next_owned_by;
-	rte_flow_copy;
-	rte_flow_create;
-	rte_flow_destroy;
-	rte_flow_error_set;
-	rte_flow_flush;
-	rte_flow_isolate;
-	rte_flow_query;
-	rte_flow_validate;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eth_dev_logtype;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_eth_dev_rx_offload_name;
-	rte_eth_dev_tx_offload_name;
-	rte_eth_iterator_cleanup;
-	rte_eth_iterator_init;
-	rte_eth_iterator_next;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_eth_dev_count_total;
-
-} DPDK_18.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_eventdev/rte_eventdev_version.map b/lib/librte_eventdev/rte_eventdev_version.map
index 76b3021d3a..edfc15282d 100644
--- a/lib/librte_eventdev/rte_eventdev_version.map
+++ b/lib/librte_eventdev/rte_eventdev_version.map
@@ -1,61 +1,38 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
-	rte_eventdevs;
-
+	rte_event_crypto_adapter_caps_get;
+	rte_event_crypto_adapter_create;
+	rte_event_crypto_adapter_create_ext;
+	rte_event_crypto_adapter_event_port_get;
+	rte_event_crypto_adapter_free;
+	rte_event_crypto_adapter_queue_pair_add;
+	rte_event_crypto_adapter_queue_pair_del;
+	rte_event_crypto_adapter_service_id_get;
+	rte_event_crypto_adapter_start;
+	rte_event_crypto_adapter_stats_get;
+	rte_event_crypto_adapter_stats_reset;
+	rte_event_crypto_adapter_stop;
+	rte_event_dequeue_timeout_ticks;
+	rte_event_dev_attr_get;
+	rte_event_dev_close;
+	rte_event_dev_configure;
 	rte_event_dev_count;
+	rte_event_dev_dump;
 	rte_event_dev_get_dev_id;
-	rte_event_dev_socket_id;
 	rte_event_dev_info_get;
-	rte_event_dev_configure;
+	rte_event_dev_selftest;
+	rte_event_dev_service_id_get;
+	rte_event_dev_socket_id;
 	rte_event_dev_start;
 	rte_event_dev_stop;
-	rte_event_dev_close;
-	rte_event_dev_dump;
+	rte_event_dev_stop_flush_callback_register;
 	rte_event_dev_xstats_by_name_get;
 	rte_event_dev_xstats_get;
 	rte_event_dev_xstats_names_get;
 	rte_event_dev_xstats_reset;
-
-	rte_event_port_default_conf_get;
-	rte_event_port_setup;
-	rte_event_port_link;
-	rte_event_port_unlink;
-	rte_event_port_links_get;
-
-	rte_event_queue_default_conf_get;
-	rte_event_queue_setup;
-
-	rte_event_dequeue_timeout_ticks;
-
-	rte_event_pmd_allocate;
-	rte_event_pmd_release;
-	rte_event_pmd_vdev_init;
-	rte_event_pmd_vdev_uninit;
-	rte_event_pmd_pci_probe;
-	rte_event_pmd_pci_remove;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	rte_event_ring_create;
-	rte_event_ring_free;
-	rte_event_ring_init;
-	rte_event_ring_lookup;
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_event_dev_attr_get;
-	rte_event_dev_service_id_get;
-	rte_event_port_attr_get;
-	rte_event_queue_attr_get;
-
 	rte_event_eth_rx_adapter_caps_get;
+	rte_event_eth_rx_adapter_cb_register;
 	rte_event_eth_rx_adapter_create;
 	rte_event_eth_rx_adapter_create_ext;
 	rte_event_eth_rx_adapter_free;
@@ -63,38 +40,9 @@ DPDK_17.11 {
 	rte_event_eth_rx_adapter_queue_del;
 	rte_event_eth_rx_adapter_service_id_get;
 	rte_event_eth_rx_adapter_start;
+	rte_event_eth_rx_adapter_stats_get;
 	rte_event_eth_rx_adapter_stats_reset;
 	rte_event_eth_rx_adapter_stop;
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_event_dev_selftest;
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_event_dev_stop_flush_callback_register;
-} DPDK_18.02;
-
-DPDK_19.05 {
-	global:
-
-	rte_event_crypto_adapter_caps_get;
-	rte_event_crypto_adapter_create;
-	rte_event_crypto_adapter_create_ext;
-	rte_event_crypto_adapter_event_port_get;
-	rte_event_crypto_adapter_free;
-	rte_event_crypto_adapter_queue_pair_add;
-	rte_event_crypto_adapter_queue_pair_del;
-	rte_event_crypto_adapter_service_id_get;
-	rte_event_crypto_adapter_start;
-	rte_event_crypto_adapter_stats_get;
-	rte_event_crypto_adapter_stats_reset;
-	rte_event_crypto_adapter_stop;
-	rte_event_port_unlinks_in_progress;
 	rte_event_eth_tx_adapter_caps_get;
 	rte_event_eth_tx_adapter_create;
 	rte_event_eth_tx_adapter_create_ext;
@@ -107,6 +55,26 @@ DPDK_19.05 {
 	rte_event_eth_tx_adapter_stats_get;
 	rte_event_eth_tx_adapter_stats_reset;
 	rte_event_eth_tx_adapter_stop;
+	rte_event_pmd_allocate;
+	rte_event_pmd_pci_probe;
+	rte_event_pmd_pci_remove;
+	rte_event_pmd_release;
+	rte_event_pmd_vdev_init;
+	rte_event_pmd_vdev_uninit;
+	rte_event_port_attr_get;
+	rte_event_port_default_conf_get;
+	rte_event_port_link;
+	rte_event_port_links_get;
+	rte_event_port_setup;
+	rte_event_port_unlink;
+	rte_event_port_unlinks_in_progress;
+	rte_event_queue_attr_get;
+	rte_event_queue_default_conf_get;
+	rte_event_queue_setup;
+	rte_event_ring_create;
+	rte_event_ring_free;
+	rte_event_ring_init;
+	rte_event_ring_lookup;
 	rte_event_timer_adapter_caps_get;
 	rte_event_timer_adapter_create;
 	rte_event_timer_adapter_create_ext;
@@ -121,11 +89,7 @@ DPDK_19.05 {
 	rte_event_timer_arm_burst;
 	rte_event_timer_arm_tmo_tick_burst;
 	rte_event_timer_cancel_burst;
-} DPDK_18.05;
+	rte_eventdevs;
 
-DPDK_19.08 {
-	global:
-
-	rte_event_eth_rx_adapter_cb_register;
-	rte_event_eth_rx_adapter_stats_get;
-} DPDK_19.05;
+	local: *;
+};
diff --git a/lib/librte_flow_classify/rte_flow_classify_version.map b/lib/librte_flow_classify/rte_flow_classify_version.map
index 49bc25c6a0..001ff660e3 100644
--- a/lib/librte_flow_classify/rte_flow_classify_version.map
+++ b/lib/librte_flow_classify/rte_flow_classify_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_gro/rte_gro_version.map b/lib/librte_gro/rte_gro_version.map
index 1606b6dc72..9f6fe79e57 100644
--- a/lib/librte_gro/rte_gro_version.map
+++ b/lib/librte_gro/rte_gro_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_gro_ctx_create;
diff --git a/lib/librte_gso/rte_gso_version.map b/lib/librte_gso/rte_gso_version.map
index e1fd453edb..8505a59c27 100644
--- a/lib/librte_gso/rte_gso_version.map
+++ b/lib/librte_gso/rte_gso_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_gso_segment;
diff --git a/lib/librte_hash/rte_hash_version.map b/lib/librte_hash/rte_hash_version.map
index 734ae28b04..138c130c1b 100644
--- a/lib/librte_hash/rte_hash_version.map
+++ b/lib/librte_hash/rte_hash_version.map
@@ -1,58 +1,33 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_fbk_hash_create;
 	rte_fbk_hash_find_existing;
 	rte_fbk_hash_free;
 	rte_hash_add_key;
+	rte_hash_add_key_data;
 	rte_hash_add_key_with_hash;
+	rte_hash_add_key_with_hash_data;
+	rte_hash_count;
 	rte_hash_create;
 	rte_hash_del_key;
 	rte_hash_del_key_with_hash;
 	rte_hash_find_existing;
 	rte_hash_free;
+	rte_hash_get_key_with_position;
 	rte_hash_hash;
+	rte_hash_iterate;
 	rte_hash_lookup;
 	rte_hash_lookup_bulk;
-	rte_hash_lookup_with_hash;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_hash_add_key_data;
-	rte_hash_add_key_with_hash_data;
-	rte_hash_iterate;
 	rte_hash_lookup_bulk_data;
 	rte_hash_lookup_data;
+	rte_hash_lookup_with_hash;
 	rte_hash_lookup_with_hash_data;
 	rte_hash_reset;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_hash_set_cmp_func;
 
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_hash_get_key_with_position;
-
-} DPDK_2.2;
-
-
-DPDK_18.08 {
-	global:
-
-	rte_hash_count;
-
-} DPDK_16.07;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_ip_frag/rte_ip_frag_version.map b/lib/librte_ip_frag/rte_ip_frag_version.map
index a193007c61..5dd34f828c 100644
--- a/lib/librte_ip_frag/rte_ip_frag_version.map
+++ b/lib/librte_ip_frag/rte_ip_frag_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
 	rte_ipv4_fragment_packet;
@@ -12,13 +13,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_17.08 {
-	global:
-
-	rte_ip_frag_table_destroy;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_ipsec/rte_ipsec_version.map b/lib/librte_ipsec/rte_ipsec_version.map
index ee9f1961b0..3723b812fc 100644
--- a/lib/librte_ipsec/rte_ipsec_version.map
+++ b/lib/librte_ipsec/rte_ipsec_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_jobstats/rte_jobstats_version.map b/lib/librte_jobstats/rte_jobstats_version.map
index f89441438e..dbd2664ae2 100644
--- a/lib/librte_jobstats/rte_jobstats_version.map
+++ b/lib/librte_jobstats/rte_jobstats_version.map
@@ -1,6 +1,7 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_jobstats_abort;
 	rte_jobstats_context_finish;
 	rte_jobstats_context_init;
 	rte_jobstats_context_reset;
@@ -17,10 +18,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_jobstats_abort;
-
-} DPDK_2.0;
diff --git a/lib/librte_kni/rte_kni_version.map b/lib/librte_kni/rte_kni_version.map
index c877dc6aaa..9cd3cedc54 100644
--- a/lib/librte_kni/rte_kni_version.map
+++ b/lib/librte_kni/rte_kni_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kni_alloc;
diff --git a/lib/librte_kvargs/rte_kvargs_version.map b/lib/librte_kvargs/rte_kvargs_version.map
index 8f4b4e3f8f..3ba0f4b59c 100644
--- a/lib/librte_kvargs/rte_kvargs_version.map
+++ b/lib/librte_kvargs/rte_kvargs_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kvargs_count;
@@ -15,4 +15,4 @@ EXPERIMENTAL {
 	rte_kvargs_parse_delim;
 	rte_kvargs_strcmp;
 
-} DPDK_2.0;
+};
diff --git a/lib/librte_latencystats/rte_latencystats_version.map b/lib/librte_latencystats/rte_latencystats_version.map
index ac8403e821..e04e63463f 100644
--- a/lib/librte_latencystats/rte_latencystats_version.map
+++ b/lib/librte_latencystats/rte_latencystats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_latencystats_get;
diff --git a/lib/librte_lpm/rte_lpm_version.map b/lib/librte_lpm/rte_lpm_version.map
index 90beac853d..500f58b806 100644
--- a/lib/librte_lpm/rte_lpm_version.map
+++ b/lib/librte_lpm/rte_lpm_version.map
@@ -1,13 +1,6 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
-	rte_lpm_add;
-	rte_lpm_create;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-	rte_lpm_find_existing;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
 	rte_lpm6_add;
 	rte_lpm6_create;
 	rte_lpm6_delete;
@@ -18,29 +11,13 @@ DPDK_2.0 {
 	rte_lpm6_is_rule_present;
 	rte_lpm6_lookup;
 	rte_lpm6_lookup_bulk_func;
+	rte_lpm_add;
+	rte_lpm_create;
+	rte_lpm_delete;
+	rte_lpm_delete_all;
+	rte_lpm_find_existing;
+	rte_lpm_free;
+	rte_lpm_is_rule_present;
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_lpm_add;
-	rte_lpm_find_existing;
-	rte_lpm_create;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_lpm6_add;
-	rte_lpm6_is_rule_present;
-	rte_lpm6_lookup;
-	rte_lpm6_lookup_bulk_func;
-
-} DPDK_16.04;
diff --git a/lib/librte_mbuf/rte_mbuf_version.map b/lib/librte_mbuf/rte_mbuf_version.map
index a4f41d7fd3..12c5e2d519 100644
--- a/lib/librte_mbuf/rte_mbuf_version.map
+++ b/lib/librte_mbuf/rte_mbuf_version.map
@@ -1,26 +1,7 @@
-DPDK_2.0 {
-	global:
-
-	rte_get_rx_ol_flag_name;
-	rte_get_tx_ol_flag_name;
-	rte_mbuf_sanity_check;
-	rte_pktmbuf_dump;
-	rte_pktmbuf_init;
-	rte_pktmbuf_pool_init;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pktmbuf_pool_create;
-
-} DPDK_2.0;
-
-DPDK_16.11 {
+DPDK_20.0 {
 	global:
 
+	__rte_pktmbuf_linearize;
 	__rte_pktmbuf_read;
 	rte_get_ptype_inner_l2_name;
 	rte_get_ptype_inner_l3_name;
@@ -31,28 +12,24 @@ DPDK_16.11 {
 	rte_get_ptype_name;
 	rte_get_ptype_tunnel_name;
 	rte_get_rx_ol_flag_list;
+	rte_get_rx_ol_flag_name;
 	rte_get_tx_ol_flag_list;
-
-} DPDK_2.1;
-
-DPDK_18.08 {
-	global:
-
+	rte_get_tx_ol_flag_name;
 	rte_mbuf_best_mempool_ops;
 	rte_mbuf_platform_mempool_ops;
+	rte_mbuf_sanity_check;
 	rte_mbuf_set_platform_mempool_ops;
 	rte_mbuf_set_user_mempool_ops;
 	rte_mbuf_user_mempool_ops;
-	rte_pktmbuf_pool_create_by_ops;
-} DPDK_16.11;
-
-DPDK_19.11 {
-	global:
-
-	__rte_pktmbuf_linearize;
 	rte_pktmbuf_clone;
+	rte_pktmbuf_dump;
+	rte_pktmbuf_init;
+	rte_pktmbuf_pool_create;
+	rte_pktmbuf_pool_create_by_ops;
+	rte_pktmbuf_pool_init;
 
-} DPDK_18.08;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
@@ -61,4 +38,4 @@ EXPERIMENTAL {
 	rte_pktmbuf_copy;
 	rte_pktmbuf_free_bulk;
 
-} DPDK_18.08;
+};
diff --git a/lib/librte_member/rte_member_version.map b/lib/librte_member/rte_member_version.map
index 019e4cd962..87780ae611 100644
--- a/lib/librte_member/rte_member_version.map
+++ b/lib/librte_member/rte_member_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_member_add;
diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map
index 17cbca4607..6a425d203a 100644
--- a/lib/librte_mempool/rte_mempool_version.map
+++ b/lib/librte_mempool/rte_mempool_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_mempool_audit;
-	rte_mempool_calc_obj_size;
-	rte_mempool_create;
-	rte_mempool_dump;
-	rte_mempool_list_dump;
-	rte_mempool_lookup;
-	rte_mempool_walk;
-
-	local: *;
-};
-
-DPDK_16.07 {
-	global:
-
 	rte_mempool_avail_count;
 	rte_mempool_cache_create;
 	rte_mempool_cache_flush;
 	rte_mempool_cache_free;
+	rte_mempool_calc_obj_size;
 	rte_mempool_check_cookies;
+	rte_mempool_contig_blocks_check_cookies;
+	rte_mempool_create;
 	rte_mempool_create_empty;
 	rte_mempool_default_cache;
+	rte_mempool_dump;
 	rte_mempool_free;
 	rte_mempool_generic_get;
 	rte_mempool_generic_put;
 	rte_mempool_in_use_count;
+	rte_mempool_list_dump;
+	rte_mempool_lookup;
 	rte_mempool_mem_iter;
 	rte_mempool_obj_iter;
+	rte_mempool_op_calc_mem_size_default;
+	rte_mempool_op_populate_default;
 	rte_mempool_ops_table;
 	rte_mempool_populate_anon;
 	rte_mempool_populate_default;
+	rte_mempool_populate_iova;
 	rte_mempool_populate_virt;
 	rte_mempool_register_ops;
 	rte_mempool_set_ops_byname;
+	rte_mempool_walk;
 
-} DPDK_2.0;
-
-DPDK_17.11 {
-	global:
-
-	rte_mempool_populate_iova;
-
-} DPDK_16.07;
-
-DPDK_18.05 {
-	global:
-
-	rte_mempool_contig_blocks_check_cookies;
-	rte_mempool_op_calc_mem_size_default;
-	rte_mempool_op_populate_default;
-
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_meter/rte_meter_version.map b/lib/librte_meter/rte_meter_version.map
index 4b460d5803..46410b0369 100644
--- a/lib/librte_meter/rte_meter_version.map
+++ b/lib/librte_meter/rte_meter_version.map
@@ -1,21 +1,16 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_meter_srtcm_color_aware_check;
 	rte_meter_srtcm_color_blind_check;
 	rte_meter_srtcm_config;
+	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_color_aware_check;
 	rte_meter_trtcm_color_blind_check;
 	rte_meter_trtcm_config;
-
-	local: *;
-};
-
-DPDK_18.08 {
-	global:
-
-	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_profile_config;
+
+	local: *;
 };
 
 EXPERIMENTAL {
diff --git a/lib/librte_metrics/rte_metrics_version.map b/lib/librte_metrics/rte_metrics_version.map
index 6ac99a44a1..85663f356e 100644
--- a/lib/librte_metrics/rte_metrics_version.map
+++ b/lib/librte_metrics/rte_metrics_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_metrics_get_names;
diff --git a/lib/librte_net/rte_net_version.map b/lib/librte_net/rte_net_version.map
index fffc4a3723..8a4e75a3a0 100644
--- a/lib/librte_net/rte_net_version.map
+++ b/lib/librte_net/rte_net_version.map
@@ -1,25 +1,14 @@
-DPDK_16.11 {
-	global:
-	rte_net_get_ptype;
-
-	local: *;
-};
-
-DPDK_17.05 {
-	global:
-
-	rte_net_crc_calc;
-	rte_net_crc_set_alg;
-
-} DPDK_16.11;
-
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_random_addr;
 	rte_ether_format_addr;
+	rte_net_crc_calc;
+	rte_net_crc_set_alg;
+	rte_net_get_ptype;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_pci/rte_pci_version.map b/lib/librte_pci/rte_pci_version.map
index c0280277bb..539785f5f4 100644
--- a/lib/librte_pci/rte_pci_version.map
+++ b/lib/librte_pci/rte_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	eal_parse_pci_BDF;
diff --git a/lib/librte_pdump/rte_pdump_version.map b/lib/librte_pdump/rte_pdump_version.map
index 3e744f3012..6d02ccce6d 100644
--- a/lib/librte_pdump/rte_pdump_version.map
+++ b/lib/librte_pdump/rte_pdump_version.map
@@ -1,4 +1,4 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	global:
 
 	rte_pdump_disable;
diff --git a/lib/librte_pipeline/rte_pipeline_version.map b/lib/librte_pipeline/rte_pipeline_version.map
index 420f065d6e..64d38afecd 100644
--- a/lib/librte_pipeline/rte_pipeline_version.map
+++ b/lib/librte_pipeline/rte_pipeline_version.map
@@ -1,6 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_pipeline_ah_packet_drop;
+	rte_pipeline_ah_packet_hijack;
 	rte_pipeline_check;
 	rte_pipeline_create;
 	rte_pipeline_flush;
@@ -9,42 +11,22 @@ DPDK_2.0 {
 	rte_pipeline_port_in_create;
 	rte_pipeline_port_in_disable;
 	rte_pipeline_port_in_enable;
+	rte_pipeline_port_in_stats_read;
 	rte_pipeline_port_out_create;
 	rte_pipeline_port_out_packet_insert;
+	rte_pipeline_port_out_stats_read;
 	rte_pipeline_run;
 	rte_pipeline_table_create;
 	rte_pipeline_table_default_entry_add;
 	rte_pipeline_table_default_entry_delete;
 	rte_pipeline_table_entry_add;
-	rte_pipeline_table_entry_delete;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pipeline_port_in_stats_read;
-	rte_pipeline_port_out_stats_read;
-	rte_pipeline_table_stats_read;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_pipeline_table_entry_add_bulk;
+	rte_pipeline_table_entry_delete;
 	rte_pipeline_table_entry_delete_bulk;
+	rte_pipeline_table_stats_read;
 
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_pipeline_ah_packet_hijack;
-	rte_pipeline_ah_packet_drop;
-
-} DPDK_2.2;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_port/rte_port_version.map b/lib/librte_port/rte_port_version.map
index 609bcec3ff..db1b8681d9 100644
--- a/lib/librte_port/rte_port_version.map
+++ b/lib/librte_port/rte_port_version.map
@@ -1,62 +1,32 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_port_ethdev_reader_ops;
+	rte_port_ethdev_writer_nodrop_ops;
 	rte_port_ethdev_writer_ops;
+	rte_port_fd_reader_ops;
+	rte_port_fd_writer_nodrop_ops;
+	rte_port_fd_writer_ops;
+	rte_port_kni_reader_ops;
+	rte_port_kni_writer_nodrop_ops;
+	rte_port_kni_writer_ops;
+	rte_port_ring_multi_reader_ops;
+	rte_port_ring_multi_writer_nodrop_ops;
+	rte_port_ring_multi_writer_ops;
 	rte_port_ring_reader_ipv4_frag_ops;
+	rte_port_ring_reader_ipv6_frag_ops;
 	rte_port_ring_reader_ops;
 	rte_port_ring_writer_ipv4_ras_ops;
+	rte_port_ring_writer_ipv6_ras_ops;
+	rte_port_ring_writer_nodrop_ops;
 	rte_port_ring_writer_ops;
 	rte_port_sched_reader_ops;
 	rte_port_sched_writer_ops;
 	rte_port_sink_ops;
 	rte_port_source_ops;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_port_ethdev_writer_nodrop_ops;
-	rte_port_ring_reader_ipv6_frag_ops;
-	rte_port_ring_writer_ipv6_ras_ops;
-	rte_port_ring_writer_nodrop_ops;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_port_ring_multi_reader_ops;
-	rte_port_ring_multi_writer_ops;
-	rte_port_ring_multi_writer_nodrop_ops;
-
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_port_kni_reader_ops;
-	rte_port_kni_writer_ops;
-	rte_port_kni_writer_nodrop_ops;
-
-} DPDK_2.2;
-
-DPDK_16.11 {
-	global:
-
-	rte_port_fd_reader_ops;
-	rte_port_fd_writer_ops;
-	rte_port_fd_writer_nodrop_ops;
-
-} DPDK_16.07;
-
-DPDK_18.11 {
-	global:
-
 	rte_port_sym_crypto_reader_ops;
-	rte_port_sym_crypto_writer_ops;
 	rte_port_sym_crypto_writer_nodrop_ops;
+	rte_port_sym_crypto_writer_ops;
 
-} DPDK_16.11;
+	local: *;
+};
diff --git a/lib/librte_power/rte_power_version.map b/lib/librte_power/rte_power_version.map
index 042917360e..a94ab30c3d 100644
--- a/lib/librte_power/rte_power_version.map
+++ b/lib/librte_power/rte_power_version.map
@@ -1,39 +1,27 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_power_exit;
+	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
+	rte_power_freq_enable_turbo;
 	rte_power_freq_max;
 	rte_power_freq_min;
 	rte_power_freq_up;
 	rte_power_freqs;
+	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_guest_channel_send_msg;
 	rte_power_init;
 	rte_power_set_env;
 	rte_power_set_freq;
+	rte_power_turbo_status;
 	rte_power_unset_env;
 
 	local: *;
 };
 
-DPDK_17.11 {
-	global:
-
-	rte_power_guest_channel_send_msg;
-	rte_power_freq_disable_turbo;
-	rte_power_freq_enable_turbo;
-	rte_power_turbo_status;
-
-} DPDK_2.0;
-
-DPDK_18.08 {
-	global:
-
-	rte_power_get_capabilities;
-
-} DPDK_17.11;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_rawdev/rte_rawdev_version.map b/lib/librte_rawdev/rte_rawdev_version.map
index b61dbff11c..d847c9e0d3 100644
--- a/lib/librte_rawdev/rte_rawdev_version.map
+++ b/lib/librte_rawdev/rte_rawdev_version.map
@@ -1,4 +1,4 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_rawdev_close;
@@ -17,8 +17,8 @@ DPDK_18.08 {
 	rte_rawdev_pmd_release;
 	rte_rawdev_queue_conf_get;
 	rte_rawdev_queue_count;
-	rte_rawdev_queue_setup;
 	rte_rawdev_queue_release;
+	rte_rawdev_queue_setup;
 	rte_rawdev_reset;
 	rte_rawdev_selftest;
 	rte_rawdev_set_attr;
diff --git a/lib/librte_rcu/rte_rcu_version.map b/lib/librte_rcu/rte_rcu_version.map
index f8b9ef2abb..787e51ef27 100644
--- a/lib/librte_rcu/rte_rcu_version.map
+++ b/lib/librte_rcu/rte_rcu_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_reorder/rte_reorder_version.map b/lib/librte_reorder/rte_reorder_version.map
index 0a8a54de83..cf444062df 100644
--- a/lib/librte_reorder/rte_reorder_version.map
+++ b/lib/librte_reorder/rte_reorder_version.map
@@ -1,13 +1,13 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_reorder_create;
-	rte_reorder_init;
+	rte_reorder_drain;
 	rte_reorder_find_existing;
-	rte_reorder_reset;
 	rte_reorder_free;
+	rte_reorder_init;
 	rte_reorder_insert;
-	rte_reorder_drain;
+	rte_reorder_reset;
 
 	local: *;
 };
diff --git a/lib/librte_ring/rte_ring_version.map b/lib/librte_ring/rte_ring_version.map
index 510c1386e0..89d84bcf48 100644
--- a/lib/librte_ring/rte_ring_version.map
+++ b/lib/librte_ring/rte_ring_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ring_create;
 	rte_ring_dump;
+	rte_ring_free;
 	rte_ring_get_memsize;
 	rte_ring_init;
 	rte_ring_list_dump;
@@ -11,13 +12,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.2 {
-	global:
-
-	rte_ring_free;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_sched/rte_sched_version.map b/lib/librte_sched/rte_sched_version.map
index 729588794e..1b48bfbf36 100644
--- a/lib/librte_sched/rte_sched_version.map
+++ b/lib/librte_sched/rte_sched_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_approx;
@@ -14,6 +14,9 @@ DPDK_2.0 {
 	rte_sched_port_enqueue;
 	rte_sched_port_free;
 	rte_sched_port_get_memory_footprint;
+	rte_sched_port_pkt_read_color;
+	rte_sched_port_pkt_read_tree_path;
+	rte_sched_port_pkt_write;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_read_stats;
@@ -21,15 +24,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.1 {
-	global:
-
-	rte_sched_port_pkt_write;
-	rte_sched_port_pkt_read_tree_path;
-	rte_sched_port_pkt_read_color;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_security/rte_security_version.map b/lib/librte_security/rte_security_version.map
index 53267bf3cc..b07314bbf4 100644
--- a/lib/librte_security/rte_security_version.map
+++ b/lib/librte_security/rte_security_version.map
@@ -1,4 +1,4 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	rte_security_attach_session;
diff --git a/lib/librte_stack/rte_stack_version.map b/lib/librte_stack/rte_stack_version.map
index 6662679c36..adbb7be9d9 100644
--- a/lib/librte_stack/rte_stack_version.map
+++ b/lib/librte_stack/rte_stack_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_table/rte_table_version.map b/lib/librte_table/rte_table_version.map
index 6237252bec..40f72b1fe8 100644
--- a/lib/librte_table/rte_table_version.map
+++ b/lib/librte_table/rte_table_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_table_acl_ops;
diff --git a/lib/librte_telemetry/rte_telemetry_version.map b/lib/librte_telemetry/rte_telemetry_version.map
index fa62d7718c..c1f4613af5 100644
--- a/lib/librte_telemetry/rte_telemetry_version.map
+++ b/lib/librte_telemetry/rte_telemetry_version.map
@@ -1,3 +1,7 @@
+DPDK_20.0 {
+	local: *;
+};
+
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_timer/rte_timer_version.map b/lib/librte_timer/rte_timer_version.map
index 72f75c8181..2a59d3f081 100644
--- a/lib/librte_timer/rte_timer_version.map
+++ b/lib/librte_timer/rte_timer_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_timer_dump_stats;
@@ -14,16 +14,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_19.05 {
-	global:
-
-	rte_timer_dump_stats;
-	rte_timer_manage;
-	rte_timer_reset;
-	rte_timer_stop;
-	rte_timer_subsystem_init;
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_vhost/rte_vhost_version.map b/lib/librte_vhost/rte_vhost_version.map
index 5f1d4a75c2..8e9ffac2c2 100644
--- a/lib/librte_vhost/rte_vhost_version.map
+++ b/lib/librte_vhost/rte_vhost_version.map
@@ -1,64 +1,34 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_vhost_avail_entries;
 	rte_vhost_dequeue_burst;
 	rte_vhost_driver_callback_register;
-	rte_vhost_driver_register;
-	rte_vhost_enable_guest_notification;
-	rte_vhost_enqueue_burst;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_vhost_driver_unregister;
-
-} DPDK_2.0;
-
-DPDK_16.07 {
-	global:
-
-	rte_vhost_avail_entries;
-	rte_vhost_get_ifname;
-	rte_vhost_get_numa_node;
-	rte_vhost_get_queue_num;
-
-} DPDK_2.1;
-
-DPDK_17.05 {
-	global:
-
 	rte_vhost_driver_disable_features;
 	rte_vhost_driver_enable_features;
 	rte_vhost_driver_get_features;
+	rte_vhost_driver_register;
 	rte_vhost_driver_set_features;
 	rte_vhost_driver_start;
+	rte_vhost_driver_unregister;
+	rte_vhost_enable_guest_notification;
+	rte_vhost_enqueue_burst;
+	rte_vhost_get_ifname;
 	rte_vhost_get_mem_table;
 	rte_vhost_get_mtu;
 	rte_vhost_get_negotiated_features;
+	rte_vhost_get_numa_node;
+	rte_vhost_get_queue_num;
 	rte_vhost_get_vhost_vring;
 	rte_vhost_get_vring_num;
 	rte_vhost_gpa_to_vva;
 	rte_vhost_log_used_vring;
 	rte_vhost_log_write;
-
-} DPDK_16.07;
-
-DPDK_17.08 {
-	global:
-
 	rte_vhost_rx_queue_count;
-
-} DPDK_17.05;
-
-DPDK_18.02 {
-	global:
-
 	rte_vhost_vring_call;
 
-} DPDK_17.08;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v5 10/10] buildtools: add ABI versioning check script
  2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
                         ` (9 preceding siblings ...)
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 09/10] build: change ABI version to 20.0 Anatoly Burakov
@ 2019-10-24  9:46       ` Anatoly Burakov
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-10-24  9:46 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, john.mcnamara, ray.kinsella, bruce.richardson,
	thomas, david.marchand, Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

Add a shell script that checks whether built libraries are
versioned with expected ABI (current ABI, current ABI + 1,
or EXPERIMENTAL).

The following command was used to verify current source tree
(assuming build directory is in ./build):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - Moved this to the end of the patchset
    - Fixed bug when ABI symbols were not found because the .so
      did not declare any public symbols

 buildtools/check-abi-version.sh | 54 +++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100755 buildtools/check-abi-version.sh

diff --git a/buildtools/check-abi-version.sh b/buildtools/check-abi-version.sh
new file mode 100755
index 0000000000..29aea97735
--- /dev/null
+++ b/buildtools/check-abi-version.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+# Check whether library symbols have correct
+# version (provided ABI number or provided ABI
+# number + 1 or EXPERIMENTAL).
+# Args:
+#   $1: path of the library .so file
+#   $2: ABI major version number to check
+#       (defaults to ABI_VERSION file value)
+
+if [ -z "$1" ]; then
+    echo "Script checks whether library symbols have"
+    echo "correct version (ABI_VER/ABI_VER+1/EXPERIMENTAL)"
+    echo "Usage:"
+    echo "  $0 SO_FILE_PATH [ABI_VER]"
+    exit 1
+fi
+
+LIB="$1"
+DEFAULT_ABI=$(cat "$(dirname \
+            $(readlink -f $0))/../config/ABI_VERSION" | \
+            cut -d'.' -f 1)
+ABIVER="DPDK_${2-$DEFAULT_ABI}"
+NEXT_ABIVER="DPDK_$((${2-$DEFAULT_ABI}+1))"
+
+ret=0
+
+# get output of objdump
+OBJ_DUMP_OUTPUT=`objdump -TC --section=.text ${LIB} 2>&1 | grep ".text"`
+
+# there may not be any .text sections in the .so file, in which case exit early
+echo "${OBJ_DUMP_OUTPUT}" | grep "not found in any input file" -q
+if [ "$?" -eq 0 ]; then
+    exit 0
+fi
+
+# we have symbols, so let's see if the versions are correct
+for SYM in `echo "${OBJ_DUMP_OUTPUT}" | awk '{print $(NF-1) "-" $NF}'`
+do
+    version=$(echo $SYM | cut -d'-' -f 1)
+    symbol=$(echo $SYM | cut -d'-' -f 2)
+    case $version in (*"$ABIVER"*|*"$NEXT_ABIVER"*|"EXPERIMENTAL")
+        ;;
+    (*)
+        echo "Warning: symbol $symbol ($version) should be annotated " \
+             "as ABI version $ABIVER / $NEXT_ABIVER, or EXPERIMENTAL."
+        ret=1
+    ;;
+    esac
+done
+
+exit $ret
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v5 01/10] config: change ABI versioning to global
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 01/10] config: change ABI versioning to global Anatoly Burakov
@ 2019-11-05 11:05         ` David Marchand
  2019-11-05 13:50           ` Bruce Richardson
  0 siblings, 1 reply; 131+ messages in thread
From: David Marchand @ 2019-11-05 11:05 UTC (permalink / raw)
  To: Anatoly Burakov
  Cc: dev, Marcin Baran, Thomas Monjalon, Bruce Richardson, Mcnamara,
	John, Kinsella, Ray, Pawel Modrak

On Thu, Oct 24, 2019 at 11:46 AM Anatoly Burakov
<anatoly.burakov@intel.com> wrote:
>
> From: Marcin Baran <marcinx.baran@intel.com>
>
> As per new ABI policy, all of the libraries are now versioned using
> one global ABI version. Changes in this patch implement the
> necessary steps to enable that.
>
> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
>
> Notes:
>     v3:
>     - Removed Windows support from Makefile changes
>     - Removed unneeded path conversions from meson files
>
>  buildtools/meson.build |  2 ++
>  config/ABI_VERSION     |  1 +
>  config/meson.build     |  4 +++-
>  drivers/meson.build    | 20 ++++++++++++--------
>  lib/meson.build        | 18 +++++++++++-------
>  meson_options.txt      |  2 --
>  mk/rte.lib.mk          | 13 ++++---------
>  7 files changed, 33 insertions(+), 27 deletions(-)
>  create mode 100644 config/ABI_VERSION
>
> diff --git a/buildtools/meson.build b/buildtools/meson.build
> index 32c79c1308..78ce69977d 100644
> --- a/buildtools/meson.build
> +++ b/buildtools/meson.build
> @@ -12,3 +12,5 @@ if python3.found()
>  else
>         map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
>  endif
> +
> +is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']

Traces from the windows stuff?


> diff --git a/config/ABI_VERSION b/config/ABI_VERSION
> new file mode 100644
> index 0000000000..9a7c1e503f
> --- /dev/null
> +++ b/config/ABI_VERSION
> @@ -0,0 +1 @@
> +20.0
> diff --git a/config/meson.build b/config/meson.build
> index acacba704a..40ad34345f 100644
> --- a/config/meson.build
> +++ b/config/meson.build
> @@ -18,6 +18,8 @@ endforeach
>  # depending on the configuration options
>  pver = meson.project_version().split('.')
>  major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
> +abi_version = run_command(find_program('cat', 'more'),

Idem.


> +       files('ABI_VERSION')).stdout().strip()
>
>  # extract all version information into the build configuration
>  dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
> @@ -37,7 +39,7 @@ endif
>
>  pmd_subdir_opt = get_option('drivers_install_subdir')
>  if pmd_subdir_opt.contains('<VERSION>')
> -       pmd_subdir_opt = major_version.join(pmd_subdir_opt.split('<VERSION>'))
> +       pmd_subdir_opt = abi_version.join(pmd_subdir_opt.split('<VERSION>'))
>  endif
>  driver_install_path = join_paths(get_option('libdir'), pmd_subdir_opt)
>  eal_pmd_path = join_paths(get_option('prefix'), driver_install_path)
> diff --git a/drivers/meson.build b/drivers/meson.build
> index 4a1cb8b5be..1c1190053e 100644
> --- a/drivers/meson.build
> +++ b/drivers/meson.build
> @@ -119,12 +119,19 @@ foreach class:dpdk_driver_classes
>                                         output: out_filename,
>                                         depends: [pmdinfogen, tmp_lib])
>
> -                       if get_option('per_library_versions')
> -                               lib_version = '@0@.1'.format(version)
> -                               so_version = '@0@'.format(version)
> +                       version_map = '@0@/@1@/@2@_version.map'.format(
> +                                       meson.current_source_dir(),
> +                                       drv_path, lib_name)
> +
> +                       is_experimental = run_command(is_experimental_cmd,
> +                               files(version_map)).returncode()
> +
> +                       if is_experimental != 0
> +                               lib_version = '0.1'
> +                               so_version = '0'
>                         else
> -                               lib_version = major_version
> -                               so_version = major_version
> +                               lib_version = abi_version
> +                               so_version = abi_version
>                         endif
>
>                         # now build the static driver
> @@ -137,9 +144,6 @@ foreach class:dpdk_driver_classes
>                                 install: true)
>
>                         # now build the shared driver
> -                       version_map = '@0@/@1@/@2@_version.map'.format(
> -                                       meson.current_source_dir(),
> -                                       drv_path, lib_name)
>                         shared_lib = shared_library(lib_name,
>                                 sources,
>                                 objects: objs,
> diff --git a/lib/meson.build b/lib/meson.build
> index 8ea3671c04..6302c0b680 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -100,12 +100,18 @@ foreach l:libraries
>                                 cflags += '-DALLOW_EXPERIMENTAL_API'
>                         endif
>
> -                       if get_option('per_library_versions')
> -                               lib_version = '@0@.1'.format(version)
> -                               so_version = '@0@'.format(version)
> +                       version_map = '@0@/@1@/rte_@2@_version.map'.format(
> +                                       meson.current_source_dir(), dir_name, name)
> +
> +                       is_experimental = run_command(is_experimental_cmd,
> +                                       files(version_map)).returncode()
> +
> +                       if is_experimental != 0
> +                               lib_version = '0.1'
> +                               so_version = '0'
>                         else
> -                               lib_version = major_version
> -                               so_version = major_version
> +                               lib_version = abi_version
> +                               so_version = abi_version
>                         endif
>
>                         # first build static lib
> @@ -123,8 +129,6 @@ foreach l:libraries
>                         # then use pre-build objects to build shared lib
>                         sources = []
>                         objs += static_lib.extract_all_objects(recursive: false)
> -                       version_map = '@0@/@1@/rte_@2@_version.map'.format(
> -                                       meson.current_source_dir(), dir_name, name)
>                         implib = dir_name + '.dll.a'
>
>                         def_file = custom_target(name + '_def',
> diff --git a/meson_options.txt b/meson_options.txt
> index 89650b0e9c..da6a7f0302 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -30,8 +30,6 @@ option('max_lcores', type: 'integer', value: 128,
>         description: 'maximum number of cores/threads supported by EAL')
>  option('max_numa_nodes', type: 'integer', value: 4,
>         description: 'maximum number of NUMA nodes supported by EAL')
> -option('per_library_versions', type: 'boolean', value: true,
> -       description: 'true: each lib gets its own version number, false: DPDK version used for each lib')
>  option('tests', type: 'boolean', value: true,
>         description: 'build unit tests')
>  option('use_hpet', type: 'boolean', value: false,
> diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
> index 4df8849a08..e1ea292b6e 100644
> --- a/mk/rte.lib.mk
> +++ b/mk/rte.lib.mk
> @@ -11,20 +11,15 @@ EXTLIB_BUILD ?= n
>  # VPATH contains at least SRCDIR
>  VPATH += $(SRCDIR)
>
> -ifneq ($(CONFIG_RTE_MAJOR_ABI),)
> -ifneq ($(LIBABIVER),)
> -LIBABIVER := $(CONFIG_RTE_MAJOR_ABI)
> -endif
> +ifneq ($(shell grep "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)

This generates noise for the ethtool lib in the associated example:

== ethtool
== lib
grep: /home/dmarchan/dpdk/examples/ethtool/lib/: Is a directory
  LD librte_ethtool.so.0
  INSTALL-LIB librte_ethtool.so.0
== ethtool-app

So either we add a map file for this example lib (a bit odd), or we
silence this warning.


> +LIBABIVER := $(shell cat $(RTE_SRCDIR)/config/ABI_VERSION)
> +else
> +LIBABIVER := 0
>  endif
>
>  ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
>  LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))
>  ifeq ($(EXTLIB_BUILD),n)
> -ifeq ($(CONFIG_RTE_MAJOR_ABI),)
> -ifeq ($(CONFIG_RTE_NEXT_ABI),y)
> -LIB := $(LIB).1
> -endif
> -endif
>  CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
>  endif
>  endif
> --
> 2.17.1


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v5 01/10] config: change ABI versioning to global
  2019-11-05 11:05         ` David Marchand
@ 2019-11-05 13:50           ` Bruce Richardson
  0 siblings, 0 replies; 131+ messages in thread
From: Bruce Richardson @ 2019-11-05 13:50 UTC (permalink / raw)
  To: David Marchand
  Cc: Anatoly Burakov, dev, Marcin Baran, Thomas Monjalon, Mcnamara,
	John, Kinsella, Ray, Pawel Modrak

On Tue, Nov 05, 2019 at 12:05:15PM +0100, David Marchand wrote:
> On Thu, Oct 24, 2019 at 11:46 AM Anatoly Burakov
> <anatoly.burakov@intel.com> wrote:
> >
> > From: Marcin Baran <marcinx.baran@intel.com>
> >
> > As per new ABI policy, all of the libraries are now versioned using
> > one global ABI version. Changes in this patch implement the
> > necessary steps to enable that.
> >
> > Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> > Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
> > Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> > Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> > ---
> >
> > Notes:
> >     v3:
> >     - Removed Windows support from Makefile changes
> >     - Removed unneeded path conversions from meson files
> >
> >  buildtools/meson.build |  2 ++
> >  config/ABI_VERSION     |  1 +
> >  config/meson.build     |  4 +++-
> >  drivers/meson.build    | 20 ++++++++++++--------
> >  lib/meson.build        | 18 +++++++++++-------
> >  meson_options.txt      |  2 --
> >  mk/rte.lib.mk          | 13 ++++---------
> >  7 files changed, 33 insertions(+), 27 deletions(-)
> >  create mode 100644 config/ABI_VERSION
> >
> > diff --git a/buildtools/meson.build b/buildtools/meson.build
> > index 32c79c1308..78ce69977d 100644
> > --- a/buildtools/meson.build
> > +++ b/buildtools/meson.build
> > @@ -12,3 +12,5 @@ if python3.found()
> >  else
> >         map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
> >  endif
> > +
> > +is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
> 
> Traces from the windows stuff?
> 
Yes, it's needed to ensure this doesn't error out on windows.


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v5 02/10] buildtools: add script for updating symbols abi version
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
@ 2019-11-06 15:38         ` David Marchand
  0 siblings, 0 replies; 131+ messages in thread
From: David Marchand @ 2019-11-06 15:38 UTC (permalink / raw)
  To: Anatoly Burakov
  Cc: dev, Pawel Modrak, Mcnamara, John, Kinsella, Ray,
	Bruce Richardson, Thomas Monjalon

On Thu, Oct 24, 2019 at 11:46 AM Anatoly Burakov
<anatoly.burakov@intel.com> wrote:
>
> From: Pawel Modrak <pawelx.modrak@intel.com>
>
> Add a script that automatically merges all stable ABI's under one
> ABI section with the new version, while leaving experimental
> section exactly as it is.
>
> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
>
> Notes:
>     v3:
>     - Add comments to regex patterns
>
>     v2:
>     - Reworked script to be pep8-compliant and more reliable
>
>  buildtools/update_version_map_abi.py | 170 +++++++++++++++++++++++++++
>  1 file changed, 170 insertions(+)
>  create mode 100755 buildtools/update_version_map_abi.py
>
> diff --git a/buildtools/update_version_map_abi.py b/buildtools/update_version_map_abi.py
> new file mode 100755
> index 0000000000..50283e6a3d
> --- /dev/null
> +++ b/buildtools/update_version_map_abi.py
> @@ -0,0 +1,170 @@
> +#!/usr/bin/env python
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2019 Intel Corporation
> +
> +"""
> +A Python program to update the ABI version and function names in a DPDK
> +lib_*_version.map file. Called from the buildtools/update_abi.sh utility.
> +"""
> +
> +from __future__ import print_function
> +import argparse
> +import sys
> +import re
> +
> +
> +def __parse_map_file(f_in):
> +    # match function name, followed by semicolon, followed by EOL, optionally
> +    # with whitespace inbetween each item
> +    func_line_regex = re.compile(r"\s*"
> +                                 r"(?P<func>[a-zA-Z_0-9]+)"
> +                                 r"\s*"
> +                                 r";"
> +                                 r"\s*"
> +                                 r"$")
> +    # match section name, followed by opening bracked, followed by EOL,
> +    # optionally with whitespace inbetween each item
> +    section_begin_regex = re.compile(r"\s*"
> +                                     r"(?P<version>[a-zA-Z0-9_\.]+)"
> +                                     r"\s*"
> +                                     r"{"
> +                                     r"\s*"
> +                                     r"$")
> +    # match closing bracket, optionally followed by section name (for when we
> +    # inherit from another ABI version), followed by semicolon, followed by
> +    # EOL, optionally with whitespace inbetween each item
> +    section_end_regex = re.compile(r"\s*"
> +                                   r"}"
> +                                   r"\s*"
> +                                   r"(?P<parent>[a-zA-Z0-9_\.]+)?"
> +                                   r"\s*"
> +                                   r";"
> +                                   r"\s*"
> +                                   r"$")
> +
> +    # for stable ABI, we don't care about which version introduced which
> +    # function, we just flatten the list. there are dupes in certain files, so
> +    # use a set instead of a list
> +    stable_lines = set()
> +    # copy experimental section as is
> +    experimental_lines = []
> +    is_experimental = False
> +
> +    # gather all functions
> +    for line in f_in:
> +        # clean up the line
> +        line = line.strip('\n').strip()
> +
> +        # is this an end of section?
> +        match = section_end_regex.match(line)
> +        if match:
> +            # whatever section this was, it's not active any more
> +            is_experimental = False
> +            continue
> +
> +        # if we're in the middle of experimental section, we need to copy
> +        # the section verbatim, so just add the line
> +        if is_experimental:
> +            experimental_lines += [line]
> +            continue
> +
> +        # skip empty lines
> +        if not line:
> +            continue
> +
> +        # is this a beginning of a new section?
> +        match = section_begin_regex.match(line)
> +        if match:
> +            cur_section = match.group("version")
> +            # is it experimental?
> +            is_experimental = cur_section == "EXPERIMENTAL"
> +            continue
> +
> +        # is this a function?
> +        match = func_line_regex.match(line)
> +        if match:
> +            stable_lines.add(match.group("func"))
> +
> +    return stable_lines, experimental_lines
> +
> +
> +def __regenerate_map_file(f_out, abi_version, stable_lines,
> +                          experimental_lines):
> +    # print ABI version header
> +    print("DPDK_{} {{".format(abi_version), file=f_out)

Some libraries are entirely experimental (librte_bpf for example).

https://patchwork.dpdk.org/patch/62018/
+Libraries marked as ``experimental`` are entirely not considered part of an ABI
+version, and may change without warning at any time. Experimental libraries
+always have a major version of ``0`` to indicate they exist outside of
+:ref:`abi_versioning` , with the minor version incremented with each ABI change
+to library.

So you must create a DPDK_XX "stable" block only if the map file
contained a non empty "stable" block before.


--
David Marchand


^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v6 00/10] Implement the new ABI policy and add helper scripts
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
@ 2019-11-06 16:54         ` Anatoly Burakov
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
                             ` (10 more replies)
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 01/10] config: change ABI versioning to global Anatoly Burakov
                           ` (9 subsequent siblings)
  10 siblings, 11 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-06 16:54 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, ray.kinsella, bruce.richardson, thomas, david.marchand

This patchset prepares the codebase for the new ABI policy and
adds a few helper scripts.

There are two new scripts for managing ABI versions added. The
first one is a Python script that will read in a .map file,
flatten it and update the ABI version to the ABI version
specified on the command-line.

The second one is a shell script that will run the above mentioned
Python script recursively over the source tree and set the ABI
version to either that which is defined in config/ABI_VERSION, or
a user-specified one.

Example of its usage: buildtools/update-abi.sh 20.0

This will recurse into lib/ and drivers/ directory and update
whatever .map files it can find.

The other shell script that's added is one that can take in a .so
file and ensure that its declared public ABI matches either
current ABI, next ABI, or EXPERIMENTAL. This was moved to the
last commit because it made no sense to have it beforehand.

The source tree was verified to follow the new ABI policy using
the following command (assuming built binaries are in build/):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

This returns 0.

Changes since v5:
- Addressed David's comments regarding libtool error messages
- Fixed map file generation to not generate empty stable ABI if
  it wasn't there before

Changes since v4:
- Fixed shared library build issue for distributor

Changes since v3:
- Put distributor code back and cleaned it up
- Rebased on latest master and regenerated commit 9

Changes since v2:
- Addressed Bruce's review comments
- Removed single distributor mode as per Dave's suggestion

Changes since v1:
- Reordered patchset to have removal of old ABI's before introducing
  the new one to avoid compile breakages between patches
- Added a new patch fixing missing symbol in octeontx common
- Split script commits into multiple commits and reordered them
- Re-generated the ABI bump commit
- Verified all scripts to work

Anatoly Burakov (2):
  buildtools: add ABI update shell script
  drivers/octeontx: add missing public symbol

Marcin Baran (6):
  config: change ABI versioning to global
  timer: remove deprecated code
  lpm: remove deprecated code
  distributor: remove deprecated code
  distributor: rename v2.0 ABI to _single suffix
  buildtools: add ABI versioning check script

Pawel Modrak (2):
  buildtools: add script for updating symbols abi version
  build: change ABI version to 20.0

 buildtools/check-abi-version.sh               |  54 +
 buildtools/meson.build                        |   2 +
 buildtools/update-abi.sh                      |  42 +
 buildtools/update_version_map_abi.py          | 171 +++
 config/ABI_VERSION                            |   1 +
 config/meson.build                            |   4 +-
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |   8 +-
 .../null/rte_pmd_bbdev_null_version.map       |   2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |   2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     | 113 +-
 drivers/bus/fslmc/rte_bus_fslmc_version.map   | 154 ++-
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |  14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |   2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |  12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |  12 +-
 drivers/common/cpt/rte_common_cpt_version.map |   9 +-
 .../common/dpaax/rte_common_dpaax_version.map |  14 +-
 .../common/mvep/rte_common_mvep_version.map   |   6 +-
 .../octeontx/rte_common_octeontx_version.map  |   7 +-
 .../rte_common_octeontx2_version.map          |  16 +-
 .../compress/isal/rte_pmd_isal_version.map    |   2 +-
 .../rte_pmd_octeontx_compress_version.map     |   2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |   2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |   2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |   2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |   2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |   2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |   3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |   3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |  10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |  10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |   2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |   2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |   2 +-
 .../null/rte_pmd_null_crypto_version.map      |   2 +-
 .../rte_pmd_octeontx_crypto_version.map       |   3 +-
 .../rte_pmd_octeontx2_crypto_version.map      |   3 +-
 .../openssl/rte_pmd_openssl_version.map       |   2 +-
 .../rte_pmd_crypto_scheduler_version.map      |  19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |   2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |   2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |   2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |   3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |   2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |   2 +-
 .../rte_pmd_octeontx_event_version.map        |   2 +-
 .../rte_pmd_octeontx2_event_version.map       |   3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |   2 +-
 .../rte_pmd_skeleton_event_version.map        |   3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |   2 +-
 .../bucket/rte_mempool_bucket_version.map     |   3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |   2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |  12 +-
 .../octeontx/rte_mempool_octeontx_version.map |   2 +-
 .../rte_mempool_octeontx2_version.map         |   4 +-
 .../mempool/ring/rte_mempool_ring_version.map |   3 +-
 .../stack/rte_mempool_stack_version.map       |   3 +-
 drivers/meson.build                           |  20 +-
 .../af_packet/rte_pmd_af_packet_version.map   |   3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |   2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |   5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |   6 -
 drivers/net/avp/rte_pmd_avp_version.map       |   2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |   2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |   3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |   4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |  47 +-
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |   3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |  11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |  12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |   3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |   3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |   3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |   3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |   3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |   3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |   3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |   4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |  65 +-
 drivers/net/iavf/rte_pmd_iavf_version.map     |   3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |   3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |   3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |   3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |  62 +-
 drivers/net/kni/rte_pmd_kni_version.map       |   3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |   3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |   5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |   3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |   2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |   2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |   2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |   4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |   3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |   2 +-
 drivers/net/null/rte_pmd_null_version.map     |   3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |  10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |   3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |   3 +-
 drivers/net/pfe/rte_pmd_pfe_version.map       |   3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |   3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |  10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |   3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |   2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |   2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |   3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |   3 +-
 .../rte_pmd_vdev_netvsc_version.map           |   3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |  11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |   3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |   3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |   3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |   4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |   3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |   3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |   5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |   3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |   3 +-
 lib/librte_acl/rte_acl_version.map            |   2 +-
 .../rte_bitratestats_version.map              |   2 +-
 lib/librte_cfgfile/rte_cfgfile_version.map    |  34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |  10 +-
 .../rte_cryptodev_version.map                 | 102 +-
 lib/librte_distributor/Makefile               |   2 +-
 lib/librte_distributor/distributor_private.h  |  10 +-
 lib/librte_distributor/meson.build            |   2 +-
 lib/librte_distributor/rte_distributor.c      |  80 +-
 ...ributor_v20.c => rte_distributor_single.c} |  57 +-
 ...ributor_v20.h => rte_distributor_single.h} |  26 +-
 .../rte_distributor_v1705.h                   |  61 --
 .../rte_distributor_version.map               |  16 +-
 lib/librte_eal/rte_eal_version.map            | 324 ++----
 lib/librte_efd/rte_efd_version.map            |   2 +-
 lib/librte_ethdev/rte_ethdev_version.map      | 160 +--
 lib/librte_eventdev/rte_eventdev_version.map  | 130 +--
 lib/librte_gro/rte_gro_version.map            |   2 +-
 lib/librte_gso/rte_gso_version.map            |   2 +-
 lib/librte_hash/rte_hash_version.map          |  43 +-
 lib/librte_ip_frag/rte_ip_frag_version.map    |  10 +-
 lib/librte_jobstats/rte_jobstats_version.map  |  10 +-
 lib/librte_kni/rte_kni_version.map            |   2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |   4 +-
 .../rte_latencystats_version.map              |   2 +-
 lib/librte_lpm/rte_lpm.c                      | 996 +-----------------
 lib/librte_lpm/rte_lpm.h                      |  88 --
 lib/librte_lpm/rte_lpm6.c                     | 132 +--
 lib/librte_lpm/rte_lpm6.h                     |  25 -
 lib/librte_lpm/rte_lpm_version.map            |  39 +-
 lib/librte_mbuf/rte_mbuf_version.map          |  49 +-
 lib/librte_member/rte_member_version.map      |   2 +-
 lib/librte_mempool/rte_mempool_version.map    |  44 +-
 lib/librte_meter/rte_meter_version.map        |  13 +-
 lib/librte_metrics/rte_metrics_version.map    |   2 +-
 lib/librte_net/rte_net_version.map            |  23 +-
 lib/librte_pci/rte_pci_version.map            |   2 +-
 lib/librte_pdump/rte_pdump_version.map        |   2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |  36 +-
 lib/librte_port/rte_port_version.map          |  64 +-
 lib/librte_power/rte_power_version.map        |  24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |   4 +-
 lib/librte_reorder/rte_reorder_version.map    |   8 +-
 lib/librte_ring/rte_ring_version.map          |  10 +-
 lib/librte_sched/rte_sched_version.map        |  14 +-
 lib/librte_security/rte_security_version.map  |   2 +-
 lib/librte_table/rte_table_version.map        |   2 +-
 lib/librte_timer/rte_timer.c                  |  90 +-
 lib/librte_timer/rte_timer.h                  |  15 -
 lib/librte_timer/rte_timer_version.map        |  12 +-
 lib/librte_vhost/rte_vhost_version.map        |  52 +-
 lib/meson.build                               |  18 +-
 meson_options.txt                             |   2 -
 mk/rte.lib.mk                                 |  13 +-
 171 files changed, 1114 insertions(+), 2943 deletions(-)
 create mode 100755 buildtools/check-abi-version.sh
 create mode 100755 buildtools/update-abi.sh
 create mode 100755 buildtools/update_version_map_abi.py
 create mode 100644 config/ABI_VERSION
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (85%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h

-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v6 01/10] config: change ABI versioning to global
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
@ 2019-11-06 16:54         ` Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
                           ` (8 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-06 16:54 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Thomas Monjalon, Bruce Richardson, john.mcnamara,
	ray.kinsella, david.marchand, Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

As per new ABI policy, all of the libraries are now versioned using
one global ABI version. Changes in this patch implement the
necessary steps to enable that.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v6:
    - Silenced grep error message on trying to grep a directory
    
    v3:
    - Removed Windows support from Makefile changes
    - Removed unneeded path conversions from meson files

 buildtools/meson.build |  2 ++
 config/ABI_VERSION     |  1 +
 config/meson.build     |  4 +++-
 drivers/meson.build    | 20 ++++++++++++--------
 lib/meson.build        | 18 ++++++++++++------
 meson_options.txt      |  2 --
 mk/rte.lib.mk          | 13 ++++---------
 7 files changed, 34 insertions(+), 26 deletions(-)
 create mode 100644 config/ABI_VERSION

diff --git a/buildtools/meson.build b/buildtools/meson.build
index 32c79c1308..78ce69977d 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -12,3 +12,5 @@ if python3.found()
 else
 	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
 endif
+
+is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
diff --git a/config/ABI_VERSION b/config/ABI_VERSION
new file mode 100644
index 0000000000..9a7c1e503f
--- /dev/null
+++ b/config/ABI_VERSION
@@ -0,0 +1 @@
+20.0
diff --git a/config/meson.build b/config/meson.build
index e1ebdad261..2278b12261 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -18,6 +18,8 @@ endforeach
 # depending on the configuration options
 pver = meson.project_version().split('.')
 major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
+abi_version = run_command(find_program('cat', 'more'),
+	files('ABI_VERSION')).stdout().strip()
 
 # extract all version information into the build configuration
 dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
@@ -37,7 +39,7 @@ endif
 
 pmd_subdir_opt = get_option('drivers_install_subdir')
 if pmd_subdir_opt.contains('<VERSION>')
-	pmd_subdir_opt = major_version.join(pmd_subdir_opt.split('<VERSION>'))
+	pmd_subdir_opt = abi_version.join(pmd_subdir_opt.split('<VERSION>'))
 endif
 driver_install_path = join_paths(get_option('libdir'), pmd_subdir_opt)
 eal_pmd_path = join_paths(get_option('prefix'), driver_install_path)
diff --git a/drivers/meson.build b/drivers/meson.build
index 156d2dc717..b03e0c3159 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -124,12 +124,19 @@ foreach class:dpdk_driver_classes
 					output: out_filename,
 					depends: [pmdinfogen, tmp_lib])
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/@2@_version.map'.format(
+					meson.current_source_dir(),
+					drv_path, lib_name)
+
+			is_experimental = run_command(is_experimental_cmd,
+				files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
-				lib_version = major_version
-				so_version = major_version
+				lib_version = abi_version
+				so_version = abi_version
 			endif
 
 			# now build the static driver
@@ -142,9 +149,6 @@ foreach class:dpdk_driver_classes
 				install: true)
 
 			# now build the shared driver
-			version_map = '@0@/@1@/@2@_version.map'.format(
-					meson.current_source_dir(),
-					drv_path, lib_name)
 			shared_lib = shared_library(lib_name,
 				sources,
 				objects: objs,
diff --git a/lib/meson.build b/lib/meson.build
index b2ec9c09a9..3cff2482b1 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -106,12 +106,18 @@ foreach l:libraries
 				cflags += '-DRTE_USE_FUNCTION_VERSIONING'
 			endif
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/rte_@2@_version.map'.format(
+					meson.current_source_dir(), dir_name, name)
+
+			is_experimental = run_command(is_experimental_cmd,
+					files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
-				lib_version = major_version
-				so_version = major_version
+				lib_version = abi_version
+				so_version = abi_version
 			endif
 
 			# first build static lib
@@ -127,7 +133,7 @@ foreach l:libraries
 					dependencies: static_deps)
 
 			if not use_function_versioning
-				# use pre-build objects to build shared lib
+				# then use pre-build objects to build shared lib
 				sources = []
 				objs += static_lib.extract_all_objects(recursive: false)
 			else
diff --git a/meson_options.txt b/meson_options.txt
index 89650b0e9c..da6a7f0302 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -30,8 +30,6 @@ option('max_lcores', type: 'integer', value: 128,
 	description: 'maximum number of cores/threads supported by EAL')
 option('max_numa_nodes', type: 'integer', value: 4,
 	description: 'maximum number of NUMA nodes supported by EAL')
-option('per_library_versions', type: 'boolean', value: true,
-	description: 'true: each lib gets its own version number, false: DPDK version used for each lib')
 option('tests', type: 'boolean', value: true,
 	description: 'build unit tests')
 option('use_hpet', type: 'boolean', value: false,
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index 4df8849a08..b49af9192b 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -11,20 +11,15 @@ EXTLIB_BUILD ?= n
 # VPATH contains at least SRCDIR
 VPATH += $(SRCDIR)
 
-ifneq ($(CONFIG_RTE_MAJOR_ABI),)
-ifneq ($(LIBABIVER),)
-LIBABIVER := $(CONFIG_RTE_MAJOR_ABI)
-endif
+ifneq ($(shell grep -s "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)
+LIBABIVER := $(shell cat $(RTE_SRCDIR)/config/ABI_VERSION)
+else
+LIBABIVER := 0
 endif
 
 ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
 LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))
 ifeq ($(EXTLIB_BUILD),n)
-ifeq ($(CONFIG_RTE_MAJOR_ABI),)
-ifeq ($(CONFIG_RTE_NEXT_ABI),y)
-LIB := $(LIB).1
-endif
-endif
 CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
 endif
 endif
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v6 02/10] buildtools: add script for updating symbols abi version
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 01/10] config: change ABI versioning to global Anatoly Burakov
@ 2019-11-06 16:54         ` Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 03/10] buildtools: add ABI update shell script Anatoly Burakov
                           ` (7 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-06 16:54 UTC (permalink / raw)
  To: dev
  Cc: Pawel Modrak, john.mcnamara, ray.kinsella, bruce.richardson,
	thomas, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Add a script that automatically merges all stable ABI's under one
ABI section with the new version, while leaving experimental
section exactly as it is.

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v6:
    - Split map file generation function in two
    - Do not print stable ABI if it wasn't present
    
    v3:
    - Add comments to regex patterns
    
    v2:
    - Reworked script to be pep8-compliant and more reliable

 buildtools/update_version_map_abi.py | 171 +++++++++++++++++++++++++++
 1 file changed, 171 insertions(+)
 create mode 100755 buildtools/update_version_map_abi.py

diff --git a/buildtools/update_version_map_abi.py b/buildtools/update_version_map_abi.py
new file mode 100755
index 0000000000..6dfc856ed3
--- /dev/null
+++ b/buildtools/update_version_map_abi.py
@@ -0,0 +1,171 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+"""
+A Python program to update the ABI version and function names in a DPDK
+lib_*_version.map file. Called from the buildtools/update_abi.sh utility.
+"""
+
+from __future__ import print_function
+import argparse
+import sys
+import re
+
+
+def __parse_map_file(f_in):
+    # match function name, followed by semicolon, followed by EOL, optionally
+    # with whitespace inbetween each item
+    func_line_regex = re.compile(r"\s*"
+                                 r"(?P<func>[a-zA-Z_0-9]+)"
+                                 r"\s*"
+                                 r";"
+                                 r"\s*"
+                                 r"$")
+    # match section name, followed by opening bracked, followed by EOL,
+    # optionally with whitespace inbetween each item
+    section_begin_regex = re.compile(r"\s*"
+                                     r"(?P<version>[a-zA-Z0-9_\.]+)"
+                                     r"\s*"
+                                     r"{"
+                                     r"\s*"
+                                     r"$")
+    # match closing bracket, optionally followed by section name (for when we
+    # inherit from another ABI version), followed by semicolon, followed by
+    # EOL, optionally with whitespace inbetween each item
+    section_end_regex = re.compile(r"\s*"
+                                   r"}"
+                                   r"\s*"
+                                   r"(?P<parent>[a-zA-Z0-9_\.]+)?"
+                                   r"\s*"
+                                   r";"
+                                   r"\s*"
+                                   r"$")
+
+    # for stable ABI, we don't care about which version introduced which
+    # function, we just flatten the list. there are dupes in certain files, so
+    # use a set instead of a list
+    stable_lines = set()
+    # copy experimental section as is
+    experimental_lines = []
+    is_experimental = False
+
+    # gather all functions
+    for line in f_in:
+        # clean up the line
+        line = line.strip('\n').strip()
+
+        # is this an end of section?
+        match = section_end_regex.match(line)
+        if match:
+            # whatever section this was, it's not active any more
+            is_experimental = False
+            continue
+
+        # if we're in the middle of experimental section, we need to copy
+        # the section verbatim, so just add the line
+        if is_experimental:
+            experimental_lines += [line]
+            continue
+
+        # skip empty lines
+        if not line:
+            continue
+
+        # is this a beginning of a new section?
+        match = section_begin_regex.match(line)
+        if match:
+            cur_section = match.group("version")
+            # is it experimental?
+            is_experimental = cur_section == "EXPERIMENTAL"
+            continue
+
+        # is this a function?
+        match = func_line_regex.match(line)
+        if match:
+            stable_lines.add(match.group("func"))
+
+    return stable_lines, experimental_lines
+
+
+def __generate_stable_abi(f_out, abi_version, lines):
+    # print ABI version header
+    print("DPDK_{} {{".format(abi_version), file=f_out)
+
+    # print global section if it exists
+    if lines:
+        print("\tglobal:", file=f_out)
+        # blank line
+        print(file=f_out)
+
+        # print all stable lines, alphabetically sorted
+        for line in sorted(lines):
+            print("\t{};".format(line), file=f_out)
+
+        # another blank line
+        print(file=f_out)
+
+    # print local section
+    print("\tlocal: *;", file=f_out)
+
+    # end stable version
+    print("};", file=f_out)
+
+
+def __generate_experimental_abi(f_out, lines, need_newline):
+    if need_newline:
+        # another blank line
+        print(file=f_out)
+
+    # start experimental section
+    print("EXPERIMENTAL {", file=f_out)
+
+    # print all experimental lines as they were
+    for line in lines:
+        # don't print empty whitespace
+        if not line:
+            print("", file=f_out)
+        else:
+            print("\t{}".format(line), file=f_out)
+
+    # end section
+    print("};", file=f_out)
+
+
+def __main():
+    arg_parser = argparse.ArgumentParser(
+        description='Merge versions in linker version script.')
+
+    arg_parser.add_argument("map_file", type=str,
+                            help='path to linker version script file '
+                                 '(pattern: *version.map)')
+    arg_parser.add_argument("abi_version", type=str,
+                            help='target ABI version (pattern: MAJOR.MINOR)')
+
+    parsed = arg_parser.parse_args()
+
+    if not parsed.map_file.endswith('version.map'):
+        print("Invalid input file: {}".format(parsed.map_file),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    if not re.match(r"\d{1,2}\.\d{1,2}", parsed.abi_version):
+        print("Invalid ABI version: {}".format(parsed.abi_version),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    with open(parsed.map_file) as f_in:
+        stable_lines, experimental_lines = __parse_map_file(f_in)
+
+    with open(parsed.map_file, 'w') as f_out:
+        if stable_lines or not experimental_lines:
+            __generate_stable_abi(f_out, parsed.abi_version, stable_lines)
+        if experimental_lines:
+            __generate_experimental_abi(f_out, experimental_lines,
+                                        bool(stable_lines))
+
+
+if __name__ == "__main__":
+    __main()
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v6 03/10] buildtools: add ABI update shell script
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
                           ` (2 preceding siblings ...)
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
@ 2019-11-06 16:54         ` Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 04/10] timer: remove deprecated code Anatoly Burakov
                           ` (6 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-06 16:54 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, ray.kinsella, bruce.richardson, thomas, david.marchand

In order to facilitate mass updating of version files, add a shell
script that recurses into lib/ and drivers/ directories and calls
the ABI version update script.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v3:
    - Switch to sh rather than bash, and remove bash-isms
    - Address review comments
    
    v2:
    - Add this patch to split the shell script from previous commit
    - Fixup miscellaneous bugs

 buildtools/update-abi.sh | 42 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100755 buildtools/update-abi.sh

diff --git a/buildtools/update-abi.sh b/buildtools/update-abi.sh
new file mode 100755
index 0000000000..89ba5804a6
--- /dev/null
+++ b/buildtools/update-abi.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+abi_version=$1
+abi_version_file="./config/ABI_VERSION"
+update_path="lib drivers"
+
+if [ -z "$1" ]; then
+      # output to stderr
+      >&2 echo "Please provide ABI version"
+      exit 1
+fi
+
+# check version string format
+echo $abi_version | grep -q -e "^[[:digit:]]\{1,2\}\.[[:digit:]]\{1,2\}$"
+if [ "$?" -ne 0 ]; then
+      # output to stderr
+      >&2 echo "ABI version must be formatted as MAJOR.MINOR version"
+      exit 1
+fi
+
+if [ -n "$2" ]; then
+      abi_version_file=$2
+fi
+
+if [ -n "$3" ]; then
+      # drop $1 and $2
+      shift 2
+      # assign all other arguments as update paths
+      update_path=$@
+fi
+
+echo "New ABI version:" $abi_version
+echo "ABI_VERSION path:" $abi_version_file
+echo "Path to update:" $update_path
+
+echo $abi_version > $abi_version_file
+
+find $update_path -name  \*version.map -exec \
+      ./buildtools/update_version_map_abi.py {} \
+      $abi_version \; -print
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v6 04/10] timer: remove deprecated code
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
                           ` (3 preceding siblings ...)
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 03/10] buildtools: add ABI update shell script Anatoly Burakov
@ 2019-11-06 16:54         ` Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 05/10] lpm: " Anatoly Burakov
                           ` (5 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-06 16:54 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, ray.kinsella, bruce.richardson, thomas,
	david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_timer/rte_timer.c | 90 ++----------------------------------
 lib/librte_timer/rte_timer.h | 15 ------
 2 files changed, 5 insertions(+), 100 deletions(-)

diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c
index 3834c94732..ca88454ff6 100644
--- a/lib/librte_timer/rte_timer.c
+++ b/lib/librte_timer/rte_timer.c
@@ -68,9 +68,6 @@ static struct rte_timer_data *rte_timer_data_arr;
 static const uint32_t default_data_id;
 static uint32_t rte_timer_subsystem_initialized;
 
-/* For maintaining older interfaces for a period */
-static struct rte_timer_data default_timer_data;
-
 /* when debug is enabled, store some statistics */
 #ifdef RTE_LIBRTE_TIMER_DEBUG
 #define __TIMER_STAT_ADD(priv_timer, name, n) do {			\
@@ -131,22 +128,6 @@ rte_timer_data_dealloc(uint32_t id)
 	return 0;
 }
 
-void
-rte_timer_subsystem_init_v20(void)
-{
-	unsigned lcore_id;
-	struct priv_timer *priv_timer = default_timer_data.priv_timer;
-
-	/* since priv_timer is static, it's zeroed by default, so only init some
-	 * fields.
-	 */
-	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id ++) {
-		rte_spinlock_init(&priv_timer[lcore_id].list_lock);
-		priv_timer[lcore_id].prev_lcore = lcore_id;
-	}
-}
-VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
-
 /* Init the timer library. Allocate an array of timer data structs in shared
  * memory, and allocate the zeroth entry for use with original timer
  * APIs. Since the intersection of the sets of lcore ids in primary and
@@ -154,7 +135,7 @@ VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
  * multiple processes.
  */
 int
-rte_timer_subsystem_init_v1905(void)
+rte_timer_subsystem_init(void)
 {
 	const struct rte_memzone *mz;
 	struct rte_timer_data *data;
@@ -209,9 +190,6 @@ rte_timer_subsystem_init_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_subsystem_init(void),
-		  rte_timer_subsystem_init_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_subsystem_init, _v1905, 19.05);
 
 void
 rte_timer_subsystem_finalize(void)
@@ -552,42 +530,13 @@ __rte_timer_reset(struct rte_timer *tim, uint64_t expire,
 
 /* Reset and start the timer associated with the timer handle tim */
 int
-rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-		    enum rte_timer_type type, unsigned int tim_lcore,
-		    rte_timer_cb_t fct, void *arg)
-{
-	uint64_t cur_time = rte_get_timer_cycles();
-	uint64_t period;
-
-	if (unlikely((tim_lcore != (unsigned)LCORE_ID_ANY) &&
-			!(rte_lcore_is_enabled(tim_lcore) ||
-			  rte_lcore_has_role(tim_lcore, ROLE_SERVICE))))
-		return -1;
-
-	if (type == PERIODICAL)
-		period = ticks;
-	else
-		period = 0;
-
-	return __rte_timer_reset(tim,  cur_time + ticks, period, tim_lcore,
-			  fct, arg, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_reset, _v20, 2.0);
-
-int
-rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
+rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		      enum rte_timer_type type, unsigned int tim_lcore,
 		      rte_timer_cb_t fct, void *arg)
 {
 	return rte_timer_alt_reset(default_data_id, tim, ticks, type,
 				   tim_lcore, fct, arg);
 }
-MAP_STATIC_SYMBOL(int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
-				      enum rte_timer_type type,
-				      unsigned int tim_lcore,
-				      rte_timer_cb_t fct, void *arg),
-		  rte_timer_reset_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_reset, _v1905, 19.05);
 
 int
 rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim,
@@ -658,20 +607,10 @@ __rte_timer_stop(struct rte_timer *tim, int local_is_locked,
 
 /* Stop the timer associated with the timer handle tim */
 int
-rte_timer_stop_v20(struct rte_timer *tim)
-{
-	return __rte_timer_stop(tim, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_stop, _v20, 2.0);
-
-int
-rte_timer_stop_v1905(struct rte_timer *tim)
+rte_timer_stop(struct rte_timer *tim)
 {
 	return rte_timer_alt_stop(default_data_id, tim);
 }
-MAP_STATIC_SYMBOL(int rte_timer_stop(struct rte_timer *tim),
-		  rte_timer_stop_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_stop, _v1905, 19.05);
 
 int
 rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim)
@@ -817,15 +756,8 @@ __rte_timer_manage(struct rte_timer_data *timer_data)
 	priv_timer[lcore_id].running_tim = NULL;
 }
 
-void
-rte_timer_manage_v20(void)
-{
-	__rte_timer_manage(&default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_manage, _v20, 2.0);
-
 int
-rte_timer_manage_v1905(void)
+rte_timer_manage(void)
 {
 	struct rte_timer_data *timer_data;
 
@@ -835,8 +767,6 @@ rte_timer_manage_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_manage(void), rte_timer_manage_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_manage, _v1905, 19.05);
 
 int
 rte_timer_alt_manage(uint32_t timer_data_id,
@@ -1074,21 +1004,11 @@ __rte_timer_dump_stats(struct rte_timer_data *timer_data __rte_unused, FILE *f)
 #endif
 }
 
-void
-rte_timer_dump_stats_v20(FILE *f)
-{
-	__rte_timer_dump_stats(&default_timer_data, f);
-}
-VERSION_SYMBOL(rte_timer_dump_stats, _v20, 2.0);
-
 int
-rte_timer_dump_stats_v1905(FILE *f)
+rte_timer_dump_stats(FILE *f)
 {
 	return rte_timer_alt_dump_stats(default_data_id, f);
 }
-MAP_STATIC_SYMBOL(int rte_timer_dump_stats(FILE *f),
-		  rte_timer_dump_stats_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_dump_stats, _v1905, 19.05);
 
 int
 rte_timer_alt_dump_stats(uint32_t timer_data_id __rte_unused, FILE *f)
diff --git a/lib/librte_timer/rte_timer.h b/lib/librte_timer/rte_timer.h
index 05d287d8f2..9dc5fc3092 100644
--- a/lib/librte_timer/rte_timer.h
+++ b/lib/librte_timer/rte_timer.h
@@ -181,8 +181,6 @@ int rte_timer_data_dealloc(uint32_t id);
  *      subsystem
  */
 int rte_timer_subsystem_init(void);
-int rte_timer_subsystem_init_v1905(void);
-void rte_timer_subsystem_init_v20(void);
 
 /**
  * @warning
@@ -250,13 +248,6 @@ void rte_timer_init(struct rte_timer *tim);
 int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		    enum rte_timer_type type, unsigned tim_lcore,
 		    rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
-			  enum rte_timer_type type, unsigned int tim_lcore,
-			  rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-			enum rte_timer_type type, unsigned int tim_lcore,
-			rte_timer_cb_t fct, void *arg);
-
 
 /**
  * Loop until rte_timer_reset() succeeds.
@@ -313,8 +304,6 @@ rte_timer_reset_sync(struct rte_timer *tim, uint64_t ticks,
  *   - (-1): The timer is in the RUNNING or CONFIG state.
  */
 int rte_timer_stop(struct rte_timer *tim);
-int rte_timer_stop_v1905(struct rte_timer *tim);
-int rte_timer_stop_v20(struct rte_timer *tim);
 
 /**
  * Loop until rte_timer_stop() succeeds.
@@ -358,8 +347,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_manage(void);
-int rte_timer_manage_v1905(void);
-void rte_timer_manage_v20(void);
 
 /**
  * Dump statistics about timers.
@@ -371,8 +358,6 @@ void rte_timer_manage_v20(void);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_dump_stats(FILE *f);
-int rte_timer_dump_stats_v1905(FILE *f);
-void rte_timer_dump_stats_v20(FILE *f);
 
 /**
  * @warning
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v6 05/10] lpm: remove deprecated code
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
                           ` (4 preceding siblings ...)
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 04/10] timer: remove deprecated code Anatoly Burakov
@ 2019-11-06 16:54         ` Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 06/10] distributor: " Anatoly Burakov
                           ` (4 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-06 16:54 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Bruce Richardson, Vladimir Medvedkin,
	john.mcnamara, ray.kinsella, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_lpm/rte_lpm.c  | 996 ++------------------------------------
 lib/librte_lpm/rte_lpm.h  |  88 ----
 lib/librte_lpm/rte_lpm6.c | 132 +----
 lib/librte_lpm/rte_lpm6.h |  25 -
 4 files changed, 48 insertions(+), 1193 deletions(-)

diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c
index c96395e269..b78c487447 100644
--- a/lib/librte_lpm/rte_lpm.c
+++ b/lib/librte_lpm/rte_lpm.c
@@ -90,34 +90,8 @@ depth_to_range(uint8_t depth)
 /*
  * Find an existing lpm table and return a pointer to it.
  */
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name)
-{
-	struct rte_lpm_v20 *l = NULL;
-	struct rte_tailq_entry *te;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_read_lock();
-	TAILQ_FOREACH(te, lpm_list, next) {
-		l = te->data;
-		if (strncmp(name, l->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-	rte_mcfg_tailq_read_unlock();
-
-	if (te == NULL) {
-		rte_errno = ENOENT;
-		return NULL;
-	}
-
-	return l;
-}
-VERSION_SYMBOL(rte_lpm_find_existing, _v20, 2.0);
-
 struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name)
+rte_lpm_find_existing(const char *name)
 {
 	struct rte_lpm *l = NULL;
 	struct rte_tailq_entry *te;
@@ -140,88 +114,12 @@ rte_lpm_find_existing_v1604(const char *name)
 
 	return l;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_find_existing, _v1604, 16.04);
-MAP_STATIC_SYMBOL(struct rte_lpm *rte_lpm_find_existing(const char *name),
-		rte_lpm_find_existing_v1604);
 
 /*
  * Allocates memory for LPM object
  */
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules,
-		__rte_unused int flags)
-{
-	char mem_name[RTE_LPM_NAMESIZE];
-	struct rte_lpm_v20 *lpm = NULL;
-	struct rte_tailq_entry *te;
-	uint32_t mem_size;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	RTE_BUILD_BUG_ON(sizeof(struct rte_lpm_tbl_entry_v20) != 2);
-
-	/* Check user arguments. */
-	if ((name == NULL) || (socket_id < -1) || (max_rules == 0)) {
-		rte_errno = EINVAL;
-		return NULL;
-	}
-
-	snprintf(mem_name, sizeof(mem_name), "LPM_%s", name);
-
-	/* Determine the amount of memory to allocate. */
-	mem_size = sizeof(*lpm) + (sizeof(lpm->rules_tbl[0]) * max_rules);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* guarantee there's no existing */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		lpm = te->data;
-		if (strncmp(name, lpm->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-
-	if (te != NULL) {
-		lpm = NULL;
-		rte_errno = EEXIST;
-		goto exit;
-	}
-
-	/* allocate tailq entry */
-	te = rte_zmalloc("LPM_TAILQ_ENTRY", sizeof(*te), 0);
-	if (te == NULL) {
-		RTE_LOG(ERR, LPM, "Failed to allocate tailq entry\n");
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Allocate memory to store the LPM data structures. */
-	lpm = rte_zmalloc_socket(mem_name, mem_size,
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (lpm == NULL) {
-		RTE_LOG(ERR, LPM, "LPM memory allocation failed\n");
-		rte_free(te);
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Save user arguments. */
-	lpm->max_rules = max_rules;
-	strlcpy(lpm->name, name, sizeof(lpm->name));
-
-	te->data = lpm;
-
-	TAILQ_INSERT_TAIL(lpm_list, te, next);
-
-exit:
-	rte_mcfg_tailq_write_unlock();
-
-	return lpm;
-}
-VERSION_SYMBOL(rte_lpm_create, _v20, 2.0);
-
 struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
+rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config)
 {
 	char mem_name[RTE_LPM_NAMESIZE];
@@ -321,45 +219,12 @@ rte_lpm_create_v1604(const char *name, int socket_id,
 
 	return lpm;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_create, _v1604, 16.04);
-MAP_STATIC_SYMBOL(
-	struct rte_lpm *rte_lpm_create(const char *name, int socket_id,
-			const struct rte_lpm_config *config), rte_lpm_create_v1604);
 
 /*
  * Deallocates memory for given LPM table.
  */
 void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm)
-{
-	struct rte_lpm_list *lpm_list;
-	struct rte_tailq_entry *te;
-
-	/* Check user arguments. */
-	if (lpm == NULL)
-		return;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* find our tailq entry */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		if (te->data == (void *) lpm)
-			break;
-	}
-	if (te != NULL)
-		TAILQ_REMOVE(lpm_list, te, next);
-
-	rte_mcfg_tailq_write_unlock();
-
-	rte_free(lpm);
-	rte_free(te);
-}
-VERSION_SYMBOL(rte_lpm_free, _v20, 2.0);
-
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm)
+rte_lpm_free(struct rte_lpm *lpm)
 {
 	struct rte_lpm_list *lpm_list;
 	struct rte_tailq_entry *te;
@@ -387,9 +252,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm)
 	rte_free(lpm);
 	rte_free(te);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_free, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
-		rte_lpm_free_v1604);
 
 /*
  * Adds a rule to the rule table.
@@ -402,79 +264,7 @@ MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-	uint8_t next_hop)
-{
-	uint32_t rule_gindex, rule_index, last_rule;
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	/* Scan through rule group to see if rule already exists. */
-	if (lpm->rule_info[depth - 1].used_rules > 0) {
-
-		/* rule_gindex stands for rule group index. */
-		rule_gindex = lpm->rule_info[depth - 1].first_rule;
-		/* Initialise rule_index to point to start of rule group. */
-		rule_index = rule_gindex;
-		/* Last rule = Last used rule in this rule group. */
-		last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-		for (; rule_index < last_rule; rule_index++) {
-
-			/* If rule already exists update its next_hop and return. */
-			if (lpm->rules_tbl[rule_index].ip == ip_masked) {
-				lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-				return rule_index;
-			}
-		}
-
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-	} else {
-		/* Calculate the position in which the rule will be stored. */
-		rule_index = 0;
-
-		for (i = depth - 1; i > 0; i--) {
-			if (lpm->rule_info[i - 1].used_rules > 0) {
-				rule_index = lpm->rule_info[i - 1].first_rule
-						+ lpm->rule_info[i - 1].used_rules;
-				break;
-			}
-		}
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-
-		lpm->rule_info[depth - 1].first_rule = rule_index;
-	}
-
-	/* Make room for the new rule in the array. */
-	for (i = RTE_LPM_MAX_DEPTH; i > depth; i--) {
-		if (lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules == lpm->max_rules)
-			return -ENOSPC;
-
-		if (lpm->rule_info[i - 1].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules]
-					= lpm->rules_tbl[lpm->rule_info[i - 1].first_rule];
-			lpm->rule_info[i - 1].first_rule++;
-		}
-	}
-
-	/* Add the new rule. */
-	lpm->rules_tbl[rule_index].ip = ip_masked;
-	lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-	/* Increment the used rules counter for this rule group. */
-	lpm->rule_info[depth - 1].used_rules++;
-
-	return rule_index;
-}
-
-static int32_t
-rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+rule_add(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	uint32_t next_hop)
 {
 	uint32_t rule_gindex, rule_index, last_rule;
@@ -550,30 +340,7 @@ rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static void
-rule_delete_v20(struct rte_lpm_v20 *lpm, int32_t rule_index, uint8_t depth)
-{
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	lpm->rules_tbl[rule_index] =
-			lpm->rules_tbl[lpm->rule_info[depth - 1].first_rule
-				+ lpm->rule_info[depth - 1].used_rules - 1];
-
-	for (i = depth; i < RTE_LPM_MAX_DEPTH; i++) {
-		if (lpm->rule_info[i].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i].first_rule - 1] =
-				lpm->rules_tbl[lpm->rule_info[i].first_rule
-					+ lpm->rule_info[i].used_rules - 1];
-			lpm->rule_info[i].first_rule--;
-		}
-	}
-
-	lpm->rule_info[depth - 1].used_rules--;
-}
-
-static void
-rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
+rule_delete(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
 {
 	int i;
 
@@ -600,28 +367,7 @@ rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_find_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth)
-{
-	uint32_t rule_gindex, last_rule, rule_index;
-
-	VERIFY_DEPTH(depth);
-
-	rule_gindex = lpm->rule_info[depth - 1].first_rule;
-	last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-	/* Scan used rules at given depth to find rule. */
-	for (rule_index = rule_gindex; rule_index < last_rule; rule_index++) {
-		/* If rule is found return the rule index. */
-		if (lpm->rules_tbl[rule_index].ip == ip_masked)
-			return rule_index;
-	}
-
-	/* If rule is not found return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
+rule_find(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
 {
 	uint32_t rule_gindex, last_rule, rule_index;
 
@@ -645,42 +391,7 @@ rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
  * Find, clean and allocate a tbl8.
  */
 static int32_t
-tbl8_alloc_v20(struct rte_lpm_tbl_entry_v20 *tbl8)
-{
-	uint32_t group_idx; /* tbl8 group index. */
-	struct rte_lpm_tbl_entry_v20 *tbl8_entry;
-
-	/* Scan through tbl8 to find a free (i.e. INVALID) tbl8 group. */
-	for (group_idx = 0; group_idx < RTE_LPM_TBL8_NUM_GROUPS;
-			group_idx++) {
-		tbl8_entry = &tbl8[group_idx * RTE_LPM_TBL8_GROUP_NUM_ENTRIES];
-		/* If a free tbl8 group is found clean it and set as VALID. */
-		if (!tbl8_entry->valid_group) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = INVALID,
-				.depth = 0,
-				.valid_group = VALID,
-			};
-			new_tbl8_entry.next_hop = 0;
-
-			memset(&tbl8_entry[0], 0,
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES *
-					sizeof(tbl8_entry[0]));
-
-			__atomic_store(tbl8_entry, &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-
-			/* Return group index for allocated tbl8 group. */
-			return group_idx;
-		}
-	}
-
-	/* If there are no tbl8 groups free then return error. */
-	return -ENOSPC;
-}
-
-static int32_t
-tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
+tbl8_alloc(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 {
 	uint32_t group_idx; /* tbl8 group index. */
 	struct rte_lpm_tbl_entry *tbl8_entry;
@@ -714,22 +425,7 @@ tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 }
 
 static void
-tbl8_free_v20(struct rte_lpm_tbl_entry_v20 *tbl8, uint32_t tbl8_group_start)
-{
-	/* Set tbl8 group invalid*/
-	struct rte_lpm_tbl_entry_v20 zero_tbl8_entry = {
-		.valid = INVALID,
-		.depth = 0,
-		.valid_group = INVALID,
-	};
-	zero_tbl8_entry.next_hop = 0;
-
-	__atomic_store(&tbl8[tbl8_group_start], &zero_tbl8_entry,
-			__ATOMIC_RELAXED);
-}
-
-static void
-tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
+tbl8_free(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 {
 	/* Set tbl8 group invalid*/
 	struct rte_lpm_tbl_entry zero_tbl8_entry = {0};
@@ -739,78 +435,7 @@ tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 }
 
 static __rte_noinline int32_t
-add_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index, tbl24_range, tbl8_index, tbl8_group_end, i, j;
-
-	/* Calculate the index into Table24. */
-	tbl24_index = ip >> 8;
-	tbl24_range = depth_to_range(depth);
-
-	for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-		/*
-		 * For invalid OR valid and non-extended tbl 24 entries set
-		 * entry.
-		 */
-		if (!lpm->tbl24[i].valid || (lpm->tbl24[i].valid_group == 0 &&
-				lpm->tbl24[i].depth <= depth)) {
-
-			struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.valid = VALID,
-				.valid_group = 0,
-				.depth = depth,
-			};
-			new_tbl24_entry.next_hop = next_hop;
-
-			/* Setting tbl24 entry in one go to avoid race
-			 * conditions
-			 */
-			__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-					__ATOMIC_RELEASE);
-
-			continue;
-		}
-
-		if (lpm->tbl24[i].valid_group == 1) {
-			/* If tbl24 entry is valid and extended calculate the
-			 *  index into tbl8.
-			 */
-			tbl8_index = lpm->tbl24[i].group_idx *
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-			tbl8_group_end = tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-			for (j = tbl8_index; j < tbl8_group_end; j++) {
-				if (!lpm->tbl8[j].valid ||
-						lpm->tbl8[j].depth <= depth) {
-					struct rte_lpm_tbl_entry_v20
-						new_tbl8_entry = {
-						.valid = VALID,
-						.valid_group = VALID,
-						.depth = depth,
-					};
-					new_tbl8_entry.next_hop = next_hop;
-
-					/*
-					 * Setting tbl8 entry in one go to avoid
-					 * race conditions
-					 */
-					__atomic_store(&lpm->tbl8[j],
-						&new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-					continue;
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+add_depth_small(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -882,150 +507,7 @@ add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 }
 
 static __rte_noinline int32_t
-add_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index;
-	int32_t tbl8_group_index, tbl8_group_start, tbl8_group_end, tbl8_index,
-		tbl8_range, i;
-
-	tbl24_index = (ip_masked >> 8);
-	tbl8_range = depth_to_range(depth);
-
-	if (!lpm->tbl24[tbl24_index].valid) {
-		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		/* Check tbl8 allocation was successful. */
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		/* Find index into tbl8 and range. */
-		tbl8_index = (tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES) +
-				(ip_masked & 0xFF);
-
-		/* Set tbl8 entry. */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.group_idx = (uint8_t)tbl8_group_index,
-			.valid = VALID,
-			.valid_group = 1,
-			.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} /* If valid entry but not extended calculate the index into Table8. */
-	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
-		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_group_end = tbl8_group_start +
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-		/* Populate new tbl8 with tbl24 value. */
-		for (i = tbl8_group_start; i < tbl8_group_end; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = lpm->tbl24[tbl24_index].depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop =
-				lpm->tbl24[tbl24_index].next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		/* Insert new rule into the tbl8 entry. */
-		for (i = tbl8_index; i < tbl8_index + tbl8_range; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.group_idx = (uint8_t)tbl8_group_index,
-				.valid = VALID,
-				.valid_group = 1,
-				.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} else { /*
-		* If it is valid, extended entry calculate the index into tbl8.
-		*/
-		tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-
-			if (!lpm->tbl8[i].valid ||
-					lpm->tbl8[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-					.valid = VALID,
-					.depth = depth,
-					.valid_group = lpm->tbl8[i].valid_group,
-				};
-				new_tbl8_entry.next_hop = next_hop;
-				/*
-				 * Setting tbl8 entry in one go to avoid race
-				 * condition
-				 */
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-				continue;
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+add_depth_big(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -1038,7 +520,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 
 	if (!lpm->tbl24[tbl24_index].valid) {
 		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		/* Check tbl8 allocation was successful. */
 		if (tbl8_group_index < 0) {
@@ -1084,7 +566,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	} /* If valid entry but not extended calculate the index into Table8. */
 	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
 		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		if (tbl8_group_index < 0) {
 			return tbl8_group_index;
@@ -1178,48 +660,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * Add a route
  */
 int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	int32_t rule_index, status = 0;
-	uint32_t ip_masked;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/* Add the rule to the rule table. */
-	rule_index = rule_add_v20(lpm, ip_masked, depth, next_hop);
-
-	/* If the is no space available for new rule return error. */
-	if (rule_index < 0) {
-		return rule_index;
-	}
-
-	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v20(lpm, ip_masked, depth, next_hop);
-	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v20(lpm, ip_masked, depth, next_hop);
-
-		/*
-		 * If add fails due to exhaustion of tbl8 extensions delete
-		 * rule that was added to rule table.
-		 */
-		if (status < 0) {
-			rule_delete_v20(lpm, rule_index, depth);
-
-			return status;
-		}
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_add, _v20, 2.0);
-
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 	int32_t rule_index, status = 0;
@@ -1232,7 +673,7 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	ip_masked = ip & depth_to_mask(depth);
 
 	/* Add the rule to the rule table. */
-	rule_index = rule_add_v1604(lpm, ip_masked, depth, next_hop);
+	rule_index = rule_add(lpm, ip_masked, depth, next_hop);
 
 	/* If the is no space available for new rule return error. */
 	if (rule_index < 0) {
@@ -1240,16 +681,16 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	}
 
 	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_small(lpm, ip_masked, depth, next_hop);
 	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_big(lpm, ip_masked, depth, next_hop);
 
 		/*
 		 * If add fails due to exhaustion of tbl8 extensions delete
 		 * rule that was added to rule table.
 		 */
 		if (status < 0) {
-			rule_delete_v1604(lpm, rule_index, depth);
+			rule_delete(lpm, rule_index, depth);
 
 			return status;
 		}
@@ -1257,42 +698,12 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_add, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_add(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t next_hop), rte_lpm_add_v1604);
 
 /*
  * Look for a rule in the high-level rules table
  */
 int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop)
-{
-	uint32_t ip_masked;
-	int32_t rule_index;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) ||
-		(next_hop == NULL) ||
-		(depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	/* Look for the rule using rule_find. */
-	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v20(lpm, ip_masked, depth);
-
-	if (rule_index >= 0) {
-		*next_hop = lpm->rules_tbl[rule_index].next_hop;
-		return 1;
-	}
-
-	/* If rule is not found return 0. */
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_is_rule_present, _v20, 2.0);
-
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop)
 {
 	uint32_t ip_masked;
@@ -1306,7 +717,7 @@ uint32_t *next_hop)
 
 	/* Look for the rule using rule_find. */
 	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v1604(lpm, ip_masked, depth);
+	rule_index = rule_find(lpm, ip_masked, depth);
 
 	if (rule_index >= 0) {
 		*next_hop = lpm->rules_tbl[rule_index].next_hop;
@@ -1316,12 +727,9 @@ uint32_t *next_hop)
 	/* If rule is not found return 0. */
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_is_rule_present, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t *next_hop), rte_lpm_is_rule_present_v1604);
 
 static int32_t
-find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
+find_previous_rule(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint8_t *sub_rule_depth)
 {
 	int32_t rule_index;
@@ -1331,7 +739,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
 		ip_masked = ip & depth_to_mask(prev_depth);
 
-		rule_index = rule_find_v20(lpm, ip_masked, prev_depth);
+		rule_index = rule_find(lpm, ip_masked, prev_depth);
 
 		if (rule_index >= 0) {
 			*sub_rule_depth = prev_depth;
@@ -1343,133 +751,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 }
 
 static int32_t
-find_previous_rule_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint8_t *sub_rule_depth)
-{
-	int32_t rule_index;
-	uint32_t ip_masked;
-	uint8_t prev_depth;
-
-	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
-		ip_masked = ip & depth_to_mask(prev_depth);
-
-		rule_index = rule_find_v1604(lpm, ip_masked, prev_depth);
-
-		if (rule_index >= 0) {
-			*sub_rule_depth = prev_depth;
-			return rule_index;
-		}
-	}
-
-	return -1;
-}
-
-static int32_t
-delete_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_range, tbl24_index, tbl8_group_index, tbl8_index, i, j;
-
-	/* Calculate the range and index into Table24. */
-	tbl24_range = depth_to_range(depth);
-	tbl24_index = (ip_masked >> 8);
-
-	/*
-	 * Firstly check the sub_rule_index. A -1 indicates no replacement rule
-	 * and a positive number indicates a sub_rule_index.
-	 */
-	if (sub_rule_index < 0) {
-		/*
-		 * If no replacement rule exists then invalidate entries
-		 * associated with this rule.
-		 */
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20
-					zero_tbl24_entry = {
-						.valid = INVALID,
-						.depth = 0,
-						.valid_group = 0,
-					};
-					zero_tbl24_entry.next_hop = 0;
-				__atomic_store(&lpm->tbl24[i],
-					&zero_tbl24_entry, __ATOMIC_RELEASE);
-			} else if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						lpm->tbl8[j].valid = INVALID;
-				}
-			}
-		}
-	} else {
-		/*
-		 * If a replacement rule exists then modify entries
-		 * associated with this rule.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->rules_tbl[sub_rule_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = sub_rule_depth,
-		};
-
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.valid_group = VALID,
-			.depth = sub_rule_depth,
-		};
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-						__ATOMIC_RELEASE);
-			} else  if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						__atomic_store(&lpm->tbl8[j],
-							&new_tbl8_entry,
-							__ATOMIC_RELAXED);
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_small(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1576,7 +858,7 @@ delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * thus can be recycled
  */
 static int32_t
-tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
+tbl8_recycle_check(struct rte_lpm_tbl_entry *tbl8,
 		uint32_t tbl8_group_start)
 {
 	uint32_t tbl8_group_end, i;
@@ -1623,140 +905,7 @@ tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
 }
 
 static int32_t
-tbl8_recycle_check_v1604(struct rte_lpm_tbl_entry *tbl8,
-		uint32_t tbl8_group_start)
-{
-	uint32_t tbl8_group_end, i;
-	tbl8_group_end = tbl8_group_start + RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-	/*
-	 * Check the first entry of the given tbl8. If it is invalid we know
-	 * this tbl8 does not contain any rule with a depth < RTE_LPM_MAX_DEPTH
-	 *  (As they would affect all entries in a tbl8) and thus this table
-	 *  can not be recycled.
-	 */
-	if (tbl8[tbl8_group_start].valid) {
-		/*
-		 * If first entry is valid check if the depth is less than 24
-		 * and if so check the rest of the entries to verify that they
-		 * are all of this depth.
-		 */
-		if (tbl8[tbl8_group_start].depth <= MAX_DEPTH_TBL24) {
-			for (i = (tbl8_group_start + 1); i < tbl8_group_end;
-					i++) {
-
-				if (tbl8[i].depth !=
-						tbl8[tbl8_group_start].depth) {
-
-					return -EEXIST;
-				}
-			}
-			/* If all entries are the same return the tb8 index */
-			return tbl8_group_start;
-		}
-
-		return -EEXIST;
-	}
-	/*
-	 * If the first entry is invalid check if the rest of the entries in
-	 * the tbl8 are invalid.
-	 */
-	for (i = (tbl8_group_start + 1); i < tbl8_group_end; i++) {
-		if (tbl8[i].valid)
-			return -EEXIST;
-	}
-	/* If no valid entries are found then return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-delete_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_index, tbl8_group_index, tbl8_group_start, tbl8_index,
-			tbl8_range, i;
-	int32_t tbl8_recycle_index;
-
-	/*
-	 * Calculate the index into tbl24 and range. Note: All depths larger
-	 * than MAX_DEPTH_TBL24 are associated with only one tbl24 entry.
-	 */
-	tbl24_index = ip_masked >> 8;
-
-	/* Calculate the index into tbl8 and range. */
-	tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-	tbl8_group_start = tbl8_group_index * RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-	tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-	tbl8_range = depth_to_range(depth);
-
-	if (sub_rule_index < 0) {
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be removed or modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				lpm->tbl8[i].valid = INVALID;
-		}
-	} else {
-		/* Set new tbl8 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.depth = sub_rule_depth,
-			.valid_group = lpm->tbl8[tbl8_group_start].valid_group,
-		};
-
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-		}
-	}
-
-	/*
-	 * Check if there are any valid entries in this tbl8 group. If all
-	 * tbl8 entries are invalid we can free the tbl8 and invalidate the
-	 * associated tbl24 entry.
-	 */
-
-	tbl8_recycle_index = tbl8_recycle_check_v20(lpm->tbl8, tbl8_group_start);
-
-	if (tbl8_recycle_index == -EINVAL) {
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		lpm->tbl24[tbl24_index].valid = 0;
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	} else if (tbl8_recycle_index > -1) {
-		/* Update tbl24 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->tbl8[tbl8_recycle_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = lpm->tbl8[tbl8_recycle_index].depth,
-		};
-
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELAXED);
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_big(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1811,7 +960,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 	 * associated tbl24 entry.
 	 */
 
-	tbl8_recycle_index = tbl8_recycle_check_v1604(lpm->tbl8, tbl8_group_start);
+	tbl8_recycle_index = tbl8_recycle_check(lpm->tbl8, tbl8_group_start);
 
 	if (tbl8_recycle_index == -EINVAL) {
 		/* Set tbl24 before freeing tbl8 to avoid race condition.
@@ -1819,7 +968,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		 */
 		lpm->tbl24[tbl24_index].valid = 0;
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	} else if (tbl8_recycle_index > -1) {
 		/* Update tbl24 entry. */
 		struct rte_lpm_tbl_entry new_tbl24_entry = {
@@ -1835,7 +984,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
 				__ATOMIC_RELAXED);
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	}
 #undef group_idx
 	return 0;
@@ -1845,7 +994,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * Deletes a rule
  */
 int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
+rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
 {
 	int32_t rule_to_delete_index, sub_rule_index;
 	uint32_t ip_masked;
@@ -1864,7 +1013,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * Find the index of the input rule, that needs to be deleted, in the
 	 * rule table.
 	 */
-	rule_to_delete_index = rule_find_v20(lpm, ip_masked, depth);
+	rule_to_delete_index = rule_find(lpm, ip_masked, depth);
 
 	/*
 	 * Check if rule_to_delete_index was found. If no rule was found the
@@ -1874,7 +1023,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 		return -EINVAL;
 
 	/* Delete the rule from the rule table. */
-	rule_delete_v20(lpm, rule_to_delete_index, depth);
+	rule_delete(lpm, rule_to_delete_index, depth);
 
 	/*
 	 * Find rule to replace the rule_to_delete. If there is no rule to
@@ -1882,100 +1031,26 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * entries associated with this rule.
 	 */
 	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v20(lpm, ip, depth, &sub_rule_depth);
+	sub_rule_index = find_previous_rule(lpm, ip, depth, &sub_rule_depth);
 
 	/*
 	 * If the input depth value is less than 25 use function
 	 * delete_depth_small otherwise use delete_depth_big.
 	 */
 	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v20(lpm, ip_masked, depth,
+		return delete_depth_small(lpm, ip_masked, depth,
 				sub_rule_index, sub_rule_depth);
 	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v20(lpm, ip_masked, depth, sub_rule_index,
+		return delete_depth_big(lpm, ip_masked, depth, sub_rule_index,
 				sub_rule_depth);
 	}
 }
-VERSION_SYMBOL(rte_lpm_delete, _v20, 2.0);
-
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
-{
-	int32_t rule_to_delete_index, sub_rule_index;
-	uint32_t ip_masked;
-	uint8_t sub_rule_depth;
-	/*
-	 * Check input arguments. Note: IP must be a positive integer of 32
-	 * bits in length therefore it need not be checked.
-	 */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH)) {
-		return -EINVAL;
-	}
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/*
-	 * Find the index of the input rule, that needs to be deleted, in the
-	 * rule table.
-	 */
-	rule_to_delete_index = rule_find_v1604(lpm, ip_masked, depth);
-
-	/*
-	 * Check if rule_to_delete_index was found. If no rule was found the
-	 * function rule_find returns -EINVAL.
-	 */
-	if (rule_to_delete_index < 0)
-		return -EINVAL;
-
-	/* Delete the rule from the rule table. */
-	rule_delete_v1604(lpm, rule_to_delete_index, depth);
-
-	/*
-	 * Find rule to replace the rule_to_delete. If there is no rule to
-	 * replace the rule_to_delete we return -1 and invalidate the table
-	 * entries associated with this rule.
-	 */
-	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v1604(lpm, ip, depth, &sub_rule_depth);
-
-	/*
-	 * If the input depth value is less than 25 use function
-	 * delete_depth_small otherwise use delete_depth_big.
-	 */
-	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v1604(lpm, ip_masked, depth,
-				sub_rule_index, sub_rule_depth);
-	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v1604(lpm, ip_masked, depth, sub_rule_index,
-				sub_rule_depth);
-	}
-}
-BIND_DEFAULT_SYMBOL(rte_lpm_delete, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth), rte_lpm_delete_v1604);
 
 /*
  * Delete all rules from the LPM table.
  */
 void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm)
-{
-	/* Zero rule information. */
-	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
-
-	/* Zero tbl24. */
-	memset(lpm->tbl24, 0, sizeof(lpm->tbl24));
-
-	/* Zero tbl8. */
-	memset(lpm->tbl8, 0, sizeof(lpm->tbl8));
-
-	/* Delete all rules form the rules table. */
-	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
-}
-VERSION_SYMBOL(rte_lpm_delete_all, _v20, 2.0);
-
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
+rte_lpm_delete_all(struct rte_lpm *lpm)
 {
 	/* Zero rule information. */
 	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
@@ -1990,6 +1065,3 @@ rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
 	/* Delete all rules form the rules table. */
 	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_delete_all, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_delete_all(struct rte_lpm *lpm),
-		rte_lpm_delete_all_v1604);
diff --git a/lib/librte_lpm/rte_lpm.h b/lib/librte_lpm/rte_lpm.h
index 26303e6288..b9d49ac879 100644
--- a/lib/librte_lpm/rte_lpm.h
+++ b/lib/librte_lpm/rte_lpm.h
@@ -64,31 +64,6 @@ extern "C" {
 
 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
 /** @internal Tbl24 entry structure. */
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	/**
-	 * Stores Next hop (tbl8 or tbl24 when valid_group is not set) or
-	 * a group index pointing to a tbl8 structure (tbl24 only, when
-	 * valid_group is set)
-	 */
-	RTE_STD_C11
-	union {
-		uint8_t next_hop;
-		uint8_t group_idx;
-	};
-	/* Using single uint8_t to store 3 values. */
-	uint8_t valid     :1;   /**< Validation flag. */
-	/**
-	 * For tbl24:
-	 *  - valid_group == 0: entry stores a next hop
-	 *  - valid_group == 1: entry stores a group_index pointing to a tbl8
-	 * For tbl8:
-	 *  - valid_group indicates whether the current tbl8 is in use or not
-	 */
-	uint8_t valid_group :1;
-	uint8_t depth       :6; /**< Rule depth. */
-} __rte_aligned(sizeof(uint16_t));
-
 __extension__
 struct rte_lpm_tbl_entry {
 	/**
@@ -111,16 +86,6 @@ struct rte_lpm_tbl_entry {
 };
 
 #else
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	uint8_t depth       :6;
-	uint8_t valid_group :1;
-	uint8_t valid       :1;
-	union {
-		uint8_t group_idx;
-		uint8_t next_hop;
-	};
-} __rte_aligned(sizeof(uint16_t));
 
 __extension__
 struct rte_lpm_tbl_entry {
@@ -141,11 +106,6 @@ struct rte_lpm_config {
 };
 
 /** @internal Rule structure. */
-struct rte_lpm_rule_v20 {
-	uint32_t ip; /**< Rule IP address. */
-	uint8_t  next_hop; /**< Rule next hop. */
-};
-
 struct rte_lpm_rule {
 	uint32_t ip; /**< Rule IP address. */
 	uint32_t next_hop; /**< Rule next hop. */
@@ -158,21 +118,6 @@ struct rte_lpm_rule_info {
 };
 
 /** @internal LPM structure. */
-struct rte_lpm_v20 {
-	/* LPM metadata. */
-	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
-	uint32_t max_rules; /**< Max. balanced rules per lpm. */
-	struct rte_lpm_rule_info rule_info[RTE_LPM_MAX_DEPTH]; /**< Rule info table. */
-
-	/* LPM Tables. */
-	struct rte_lpm_tbl_entry_v20 tbl24[RTE_LPM_TBL24_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl24 table. */
-	struct rte_lpm_tbl_entry_v20 tbl8[RTE_LPM_TBL8_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl8 table. */
-	struct rte_lpm_rule_v20 rules_tbl[]
-			__rte_cache_aligned; /**< LPM rules. */
-};
-
 struct rte_lpm {
 	/* LPM metadata. */
 	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
@@ -209,11 +154,6 @@ struct rte_lpm {
 struct rte_lpm *
 rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config);
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules, int flags);
-struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
-		const struct rte_lpm_config *config);
 
 /**
  * Find an existing LPM object and return a pointer to it.
@@ -227,10 +167,6 @@ rte_lpm_create_v1604(const char *name, int socket_id,
  */
 struct rte_lpm *
 rte_lpm_find_existing(const char *name);
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name);
-struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name);
 
 /**
  * Free an LPM object.
@@ -242,10 +178,6 @@ rte_lpm_find_existing_v1604(const char *name);
  */
 void
 rte_lpm_free(struct rte_lpm *lpm);
-void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm);
 
 /**
  * Add a rule to the LPM table.
@@ -263,12 +195,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm);
  */
 int
 rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth, uint32_t next_hop);
-int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -288,12 +214,6 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 int
 rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop);
-int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop);
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -309,10 +229,6 @@ uint32_t *next_hop);
  */
 int
 rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
 
 /**
  * Delete all rules from the LPM table.
@@ -322,10 +238,6 @@ rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
  */
 void
 rte_lpm_delete_all(struct rte_lpm *lpm);
-void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm);
 
 /**
  * Lookup an IP into the LPM table.
diff --git a/lib/librte_lpm/rte_lpm6.c b/lib/librte_lpm/rte_lpm6.c
index e20f824602..c46e557e23 100644
--- a/lib/librte_lpm/rte_lpm6.c
+++ b/lib/librte_lpm/rte_lpm6.c
@@ -809,18 +809,6 @@ add_step(struct rte_lpm6 *lpm, struct rte_lpm6_tbl_entry *tbl,
 	return 1;
 }
 
-/*
- * Add a route
- */
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	return rte_lpm6_add_v1705(lpm, ip, depth, next_hop);
-}
-VERSION_SYMBOL(rte_lpm6_add, _v20, 2.0);
-
-
 /*
  * Simulate adding a route to LPM
  *
@@ -842,7 +830,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	ret = simulate_add_step(lpm, lpm->tbl24, &tbl_next, masked_ip,
-			ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
+		ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
 	total_need_tbl_nb = need_tbl_nb;
 	/*
 	 * Inspect one by one the rest of the bytes until
@@ -851,7 +839,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && ret == 1; i++) {
 		tbl = tbl_next;
 		ret = simulate_add_step(lpm, tbl, &tbl_next, masked_ip, 1,
-				(uint8_t)(i+1), depth, &need_tbl_nb);
+			(uint8_t)(i + 1), depth, &need_tbl_nb);
 		total_need_tbl_nb += need_tbl_nb;
 	}
 
@@ -862,9 +850,12 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	return 0;
 }
 
+/*
+ * Add a route
+ */
 int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop)
+rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+	uint32_t next_hop)
 {
 	struct rte_lpm6_tbl_entry *tbl;
 	struct rte_lpm6_tbl_entry *tbl_next = NULL;
@@ -896,8 +887,8 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	tbl = lpm->tbl24;
 	status = add_step(lpm, tbl, TBL24_IND, &tbl_next, &tbl_next_num,
-			masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
-			is_new_rule);
+		masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
+		is_new_rule);
 	assert(status >= 0);
 
 	/*
@@ -907,17 +898,13 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && status == 1; i++) {
 		tbl = tbl_next;
 		status = add_step(lpm, tbl, tbl_next_num, &tbl_next,
-				&tbl_next_num, masked_ip, 1, (uint8_t)(i+1),
-				depth, next_hop, is_new_rule);
+			&tbl_next_num, masked_ip, 1, (uint8_t)(i + 1),
+			depth, next_hop, is_new_rule);
 		assert(status >= 0);
 	}
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_add, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip,
-				uint8_t depth, uint32_t next_hop),
-		rte_lpm6_add_v1705);
 
 /*
  * Takes a pointer to a table entry and inspect one level.
@@ -956,25 +943,7 @@ lookup_step(const struct rte_lpm6 *lpm, const struct rte_lpm6_tbl_entry *tbl,
  * Looks up an IP
  */
 int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_lookup_v1705(lpm, ip, &next_hop32);
-	if (status == 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-}
-VERSION_SYMBOL(rte_lpm6_lookup, _v20, 2.0);
-
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
+rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
 		uint32_t *next_hop)
 {
 	const struct rte_lpm6_tbl_entry *tbl;
@@ -1001,56 +970,12 @@ rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
-				uint32_t *next_hop), rte_lpm6_lookup_v1705);
 
 /*
  * Looks up a group of IP addresses
  */
 int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t * next_hops, unsigned n)
-{
-	unsigned i;
-	const struct rte_lpm6_tbl_entry *tbl;
-	const struct rte_lpm6_tbl_entry *tbl_next = NULL;
-	uint32_t tbl24_index, next_hop;
-	uint8_t first_byte;
-	int status;
-
-	/* DEBUG: Check user input arguments. */
-	if ((lpm == NULL) || (ips == NULL) || (next_hops == NULL))
-		return -EINVAL;
-
-	for (i = 0; i < n; i++) {
-		first_byte = LOOKUP_FIRST_BYTE;
-		tbl24_index = (ips[i][0] << BYTES2_SIZE) |
-				(ips[i][1] << BYTE_SIZE) | ips[i][2];
-
-		/* Calculate pointer to the first entry to be inspected */
-		tbl = &lpm->tbl24[tbl24_index];
-
-		do {
-			/* Continue inspecting following levels until success or failure */
-			status = lookup_step(lpm, tbl, &tbl_next, ips[i], first_byte++,
-					&next_hop);
-			tbl = tbl_next;
-		} while (status == 1);
-
-		if (status < 0)
-			next_hops[i] = -1;
-		else
-			next_hops[i] = (int16_t)next_hop;
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm6_lookup_bulk_func, _v20, 2.0);
-
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
+rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n)
 {
@@ -1090,37 +1015,12 @@ rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup_bulk_func, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
-				uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-				int32_t *next_hops, unsigned int n),
-		rte_lpm6_lookup_bulk_func_v1705);
 
 /*
  * Look for a rule in the high-level rules table
  */
 int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_is_rule_present_v1705(lpm, ip, depth, &next_hop32);
-	if (status > 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-
-}
-VERSION_SYMBOL(rte_lpm6_is_rule_present, _v20, 2.0);
-
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop)
 {
 	uint8_t masked_ip[RTE_LPM6_IPV6_ADDR_SIZE];
@@ -1136,10 +1036,6 @@ rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 
 	return rule_find(lpm, masked_ip, depth, next_hop);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_is_rule_present, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_is_rule_present(struct rte_lpm6 *lpm,
-				uint8_t *ip, uint8_t depth, uint32_t *next_hop),
-		rte_lpm6_is_rule_present_v1705);
 
 /*
  * Delete a rule from the rule table.
diff --git a/lib/librte_lpm/rte_lpm6.h b/lib/librte_lpm/rte_lpm6.h
index 5d59ccb1fe..37dfb20249 100644
--- a/lib/librte_lpm/rte_lpm6.h
+++ b/lib/librte_lpm/rte_lpm6.h
@@ -96,12 +96,6 @@ rte_lpm6_free(struct rte_lpm6 *lpm);
 int
 rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t next_hop);
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -121,12 +115,6 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 int
 rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop);
-int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop);
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -184,11 +172,6 @@ rte_lpm6_delete_all(struct rte_lpm6 *lpm);
  */
 int
 rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip, uint32_t *next_hop);
-int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop);
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
-		uint32_t *next_hop);
 
 /**
  * Lookup multiple IP addresses in an LPM table.
@@ -210,14 +193,6 @@ int
 rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int32_t *next_hops, unsigned int n);
 
 #ifdef __cplusplus
 }
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v6 06/10] distributor: remove deprecated code
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
                           ` (5 preceding siblings ...)
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 05/10] lpm: " Anatoly Burakov
@ 2019-11-06 16:54         ` Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
                           ` (3 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-06 16:54 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, David Hunt, john.mcnamara, ray.kinsella,
	bruce.richardson, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
---

Notes:
    v5:
    - Fixed shared library linking error due to versioning still enabled
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_distributor/rte_distributor.c      | 56 +++--------------
 .../rte_distributor_v1705.h                   | 61 -------------------
 lib/librte_distributor/rte_distributor_v20.c  |  9 ---
 3 files changed, 9 insertions(+), 117 deletions(-)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h

diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index 7df97df92d..a4c8ff6a96 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -18,7 +18,6 @@
 
 #include "rte_distributor.h"
 #include "rte_distributor_v20.h"
-#include "rte_distributor_v1705.h"
 #include "distributor_private.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
@@ -33,7 +32,7 @@ EAL_REGISTER_TAILQ(rte_dist_burst_tailq)
 /**** Burst Packet APIs called by workers ****/
 
 void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
+rte_distributor_request_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt,
 		unsigned int count)
 {
@@ -83,14 +82,9 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
 	__atomic_store_n(retptr64, *retptr64 | RTE_DISTRIB_GET_BUF,
 			__ATOMIC_RELEASE);
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_request_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_request_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count),
-		rte_distributor_request_pkt_v1705);
 
 int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
+rte_distributor_poll_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -129,13 +123,9 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
 
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_poll_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_poll_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts),
-		rte_distributor_poll_pkt_v1705);
 
 int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
+rte_distributor_get_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts,
 		struct rte_mbuf **oldpkt, unsigned int return_count)
 {
@@ -163,14 +153,9 @@ rte_distributor_get_pkt_v1705(struct rte_distributor *d,
 	}
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_get_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_get_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts,
-		struct rte_mbuf **oldpkt, unsigned int return_count),
-		rte_distributor_get_pkt_v1705);
 
 int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
+rte_distributor_return_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt, int num)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -202,10 +187,6 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_return_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_return_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt, int num),
-		rte_distributor_return_pkt_v1705);
 
 /**** APIs called on distributor core ***/
 
@@ -360,7 +341,7 @@ release(struct rte_distributor *d, unsigned int wkr)
 
 /* process a set of packets to distribute them to workers */
 int
-rte_distributor_process_v1705(struct rte_distributor *d,
+rte_distributor_process(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs)
 {
 	unsigned int next_idx = 0;
@@ -500,14 +481,10 @@ rte_distributor_process_v1705(struct rte_distributor *d,
 
 	return num_mbufs;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_process, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_process(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs),
-		rte_distributor_process_v1705);
 
 /* return to the caller, packets returned from workers */
 int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
+rte_distributor_returned_pkts(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -532,10 +509,6 @@ rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
 
 	return retval;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_returned_pkts, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_returned_pkts(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs),
-		rte_distributor_returned_pkts_v1705);
 
 /*
  * Return the number of packets in-flight in a distributor, i.e. packets
@@ -557,7 +530,7 @@ total_outstanding(const struct rte_distributor *d)
  * queued up.
  */
 int
-rte_distributor_flush_v1705(struct rte_distributor *d)
+rte_distributor_flush(struct rte_distributor *d)
 {
 	unsigned int flushed;
 	unsigned int wkr;
@@ -586,13 +559,10 @@ rte_distributor_flush_v1705(struct rte_distributor *d)
 
 	return flushed;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_flush, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_flush(struct rte_distributor *d),
-		rte_distributor_flush_v1705);
 
 /* clears the internal returns array in the distributor */
 void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d)
+rte_distributor_clear_returns(struct rte_distributor *d)
 {
 	unsigned int wkr;
 
@@ -608,13 +578,10 @@ rte_distributor_clear_returns_v1705(struct rte_distributor *d)
 		__atomic_store_n(&(d->bufs[wkr].retptr64[0]), 0,
 				__ATOMIC_RELEASE);
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_clear_returns, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_clear_returns(struct rte_distributor *d),
-		rte_distributor_clear_returns_v1705);
 
 /* creates a distributor instance */
 struct rte_distributor *
-rte_distributor_create_v1705(const char *name,
+rte_distributor_create(const char *name,
 		unsigned int socket_id,
 		unsigned int num_workers,
 		unsigned int alg_type)
@@ -688,8 +655,3 @@ rte_distributor_create_v1705(const char *name,
 
 	return d;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_create, _v1705, 17.05);
-MAP_STATIC_SYMBOL(struct rte_distributor *rte_distributor_create(
-		const char *name, unsigned int socket_id,
-		unsigned int num_workers, unsigned int alg_type),
-		rte_distributor_create_v1705);
diff --git a/lib/librte_distributor/rte_distributor_v1705.h b/lib/librte_distributor/rte_distributor_v1705.h
deleted file mode 100644
index df4d9e8150..0000000000
--- a/lib/librte_distributor/rte_distributor_v1705.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2017 Intel Corporation
- */
-
-#ifndef _RTE_DISTRIB_V1705_H_
-#define _RTE_DISTRIB_V1705_H_
-
-/**
- * @file
- * RTE distributor
- *
- * The distributor is a component which is designed to pass packets
- * one-at-a-time to workers, with dynamic load balancing.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rte_distributor *
-rte_distributor_create_v1705(const char *name, unsigned int socket_id,
-		unsigned int num_workers,
-		unsigned int alg_type);
-
-int
-rte_distributor_process_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs);
-
-int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs);
-
-int
-rte_distributor_flush_v1705(struct rte_distributor *d);
-
-void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d);
-
-int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **pkts,
-	struct rte_mbuf **oldpkt, unsigned int retcount);
-
-int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **oldpkt, int num);
-
-void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count);
-
-int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **mbufs);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_v20.c
index db6c49258a..53fa16d27d 100644
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ b/lib/librte_distributor/rte_distributor_v20.c
@@ -41,7 +41,6 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
 	/* Sync with distributor on GET_BUF flag. */
 	__atomic_store_n(&(buf->bufptr64), req, __ATOMIC_RELEASE);
 }
-VERSION_SYMBOL(rte_distributor_request_pkt, _v20, 2.0);
 
 struct rte_mbuf *
 rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
@@ -57,7 +56,6 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
 	int64_t ret = buf->bufptr64 >> RTE_DISTRIB_FLAG_BITS;
 	return (struct rte_mbuf *)((uintptr_t)ret);
 }
-VERSION_SYMBOL(rte_distributor_poll_pkt, _v20, 2.0);
 
 struct rte_mbuf *
 rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
@@ -69,7 +67,6 @@ rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
 		rte_pause();
 	return ret;
 }
-VERSION_SYMBOL(rte_distributor_get_pkt, _v20, 2.0);
 
 int
 rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
@@ -82,7 +79,6 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
 	__atomic_store_n(&(buf->bufptr64), req, __ATOMIC_RELEASE);
 	return 0;
 }
-VERSION_SYMBOL(rte_distributor_return_pkt, _v20, 2.0);
 
 /**** APIs called on distributor core ***/
 
@@ -318,7 +314,6 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 	d->returns.count = ret_count;
 	return num_mbufs;
 }
-VERSION_SYMBOL(rte_distributor_process, _v20, 2.0);
 
 /* return to the caller, packets returned from workers */
 int
@@ -339,7 +334,6 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
 
 	return retval;
 }
-VERSION_SYMBOL(rte_distributor_returned_pkts, _v20, 2.0);
 
 /* return the number of packets in-flight in a distributor, i.e. packets
  * being worked on or queued up in a backlog.
@@ -369,7 +363,6 @@ rte_distributor_flush_v20(struct rte_distributor_v20 *d)
 
 	return flushed;
 }
-VERSION_SYMBOL(rte_distributor_flush, _v20, 2.0);
 
 /* clears the internal returns array in the distributor */
 void
@@ -380,7 +373,6 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
 	memset(d->returns.mbufs, 0, sizeof(d->returns.mbufs));
 #endif
 }
-VERSION_SYMBOL(rte_distributor_clear_returns, _v20, 2.0);
 
 /* creates a distributor instance */
 struct rte_distributor_v20 *
@@ -424,4 +416,3 @@ rte_distributor_create_v20(const char *name,
 
 	return d;
 }
-VERSION_SYMBOL(rte_distributor_create, _v20, 2.0);
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v6 07/10] distributor: rename v2.0 ABI to _single suffix
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
                           ` (6 preceding siblings ...)
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 06/10] distributor: " Anatoly Burakov
@ 2019-11-06 16:54         ` Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
                           ` (2 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-06 16:54 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, David Hunt, john.mcnamara, ray.kinsella,
	bruce.richardson, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

The original ABI versioning was slightly misleading in that the
DPDK 2.0 ABI was really a single mode for the distributor, and is
used as such throughout the distributor code.

Fix this by renaming all _v20 API's to _single API's, and remove
symbol versioning.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
---

Notes:
    v4:
    - Changed it back to how it was with v2
    - Removed remaining v2.0 symbols
    
    v3:
    - Removed single mode from distributor as per Dave's comments
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_distributor/Makefile               |  2 +-
 lib/librte_distributor/distributor_private.h  | 10 ++--
 lib/librte_distributor/meson.build            |  2 +-
 lib/librte_distributor/rte_distributor.c      | 24 +++++-----
 ...ributor_v20.c => rte_distributor_single.c} | 48 +++++++++----------
 ...ributor_v20.h => rte_distributor_single.h} | 26 +++++-----
 .../rte_distributor_version.map               | 18 +------
 7 files changed, 58 insertions(+), 72 deletions(-)
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (88%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)

diff --git a/lib/librte_distributor/Makefile b/lib/librte_distributor/Makefile
index 0ef80dcff4..d9d0089166 100644
--- a/lib/librte_distributor/Makefile
+++ b/lib/librte_distributor/Makefile
@@ -15,7 +15,7 @@ EXPORT_MAP := rte_distributor_version.map
 LIBABIVER := 1
 
 # all source are stored in SRCS-y
-SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_v20.c
+SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_single.c
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor.c
 ifeq ($(CONFIG_RTE_ARCH_X86),y)
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor_match_sse.c
diff --git a/lib/librte_distributor/distributor_private.h b/lib/librte_distributor/distributor_private.h
index c89371123e..489aef2acb 100644
--- a/lib/librte_distributor/distributor_private.h
+++ b/lib/librte_distributor/distributor_private.h
@@ -55,7 +55,7 @@ extern "C" {
  * the next cache line to worker 0, we pad this out to three cache lines.
  * Only 64-bits of the memory is actually used though.
  */
-union rte_distributor_buffer_v20 {
+union rte_distributor_buffer_single {
 	volatile int64_t bufptr64;
 	char pad[RTE_CACHE_LINE_SIZE*3];
 } __rte_cache_aligned;
@@ -80,8 +80,8 @@ struct rte_distributor_returned_pkts {
 	struct rte_mbuf *mbufs[RTE_DISTRIB_MAX_RETURNS];
 };
 
-struct rte_distributor_v20 {
-	TAILQ_ENTRY(rte_distributor_v20) next;    /**< Next in list. */
+struct rte_distributor_single {
+	TAILQ_ENTRY(rte_distributor_single) next;    /**< Next in list. */
 
 	char name[RTE_DISTRIBUTOR_NAMESIZE];  /**< Name of the ring. */
 	unsigned int num_workers;             /**< Number of workers polling */
@@ -96,7 +96,7 @@ struct rte_distributor_v20 {
 
 	struct rte_distributor_backlog backlog[RTE_DISTRIB_MAX_WORKERS];
 
-	union rte_distributor_buffer_v20 bufs[RTE_DISTRIB_MAX_WORKERS];
+	union rte_distributor_buffer_single bufs[RTE_DISTRIB_MAX_WORKERS];
 
 	struct rte_distributor_returned_pkts returns;
 };
@@ -154,7 +154,7 @@ struct rte_distributor {
 
 	enum rte_distributor_match_function dist_match_fn;
 
-	struct rte_distributor_v20 *d_v20;
+	struct rte_distributor_single *d_single;
 };
 
 void
diff --git a/lib/librte_distributor/meson.build b/lib/librte_distributor/meson.build
index c9617d7b14..50b91887b5 100644
--- a/lib/librte_distributor/meson.build
+++ b/lib/librte_distributor/meson.build
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-sources = files('rte_distributor.c', 'rte_distributor_v20.c')
+sources = files('rte_distributor.c', 'rte_distributor_single.c')
 if arch_subdir == 'x86'
 	sources += files('rte_distributor_match_sse.c')
 else
diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index a4c8ff6a96..6c5b0c86e8 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -17,7 +17,7 @@
 #include <rte_tailq.h>
 
 #include "rte_distributor.h"
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 #include "distributor_private.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
@@ -42,7 +42,7 @@ rte_distributor_request_pkt(struct rte_distributor *d,
 	volatile int64_t *retptr64;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		rte_distributor_request_pkt_v20(d->d_v20,
+		rte_distributor_request_pkt_single(d->d_single,
 			worker_id, oldpkt[0]);
 		return;
 	}
@@ -93,7 +93,8 @@ rte_distributor_poll_pkt(struct rte_distributor *d,
 	unsigned int i;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		pkts[0] = rte_distributor_poll_pkt_v20(d->d_v20, worker_id);
+		pkts[0] = rte_distributor_poll_pkt_single(d->d_single,
+			worker_id);
 		return (pkts[0]) ? 1 : 0;
 	}
 
@@ -133,7 +134,7 @@ rte_distributor_get_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (return_count <= 1) {
-			pkts[0] = rte_distributor_get_pkt_v20(d->d_v20,
+			pkts[0] = rte_distributor_get_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 			return (pkts[0]) ? 1 : 0;
 		} else
@@ -163,7 +164,7 @@ rte_distributor_return_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (num == 1)
-			return rte_distributor_return_pkt_v20(d->d_v20,
+			return rte_distributor_return_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 		else
 			return -EINVAL;
@@ -354,7 +355,8 @@ rte_distributor_process(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_process_v20(d->d_v20, mbufs, num_mbufs);
+		return rte_distributor_process_single(d->d_single,
+			mbufs, num_mbufs);
 	}
 
 	if (unlikely(num_mbufs == 0)) {
@@ -494,7 +496,7 @@ rte_distributor_returned_pkts(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_returned_pkts_v20(d->d_v20,
+		return rte_distributor_returned_pkts_single(d->d_single,
 				mbufs, max_mbufs);
 	}
 
@@ -537,7 +539,7 @@ rte_distributor_flush(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_flush_v20(d->d_v20);
+		return rte_distributor_flush_single(d->d_single);
 	}
 
 	flushed = total_outstanding(d);
@@ -568,7 +570,7 @@ rte_distributor_clear_returns(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		rte_distributor_clear_returns_v20(d->d_v20);
+		rte_distributor_clear_returns_single(d->d_single);
 		return;
 	}
 
@@ -610,9 +612,9 @@ rte_distributor_create(const char *name,
 			rte_errno = ENOMEM;
 			return NULL;
 		}
-		d->d_v20 = rte_distributor_create_v20(name,
+		d->d_single = rte_distributor_create_single(name,
 				socket_id, num_workers);
-		if (d->d_v20 == NULL) {
+		if (d->d_single == NULL) {
 			free(d);
 			/* rte_errno will have been set */
 			return NULL;
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_single.c
similarity index 88%
rename from lib/librte_distributor/rte_distributor_v20.c
rename to lib/librte_distributor/rte_distributor_single.c
index 53fa16d27d..91d8824c64 100644
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ b/lib/librte_distributor/rte_distributor_single.c
@@ -15,10 +15,10 @@
 #include <rte_pause.h>
 #include <rte_tailq.h>
 
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 #include "distributor_private.h"
 
-TAILQ_HEAD(rte_distributor_list, rte_distributor_v20);
+TAILQ_HEAD(rte_distributor_list, rte_distributor_single);
 
 static struct rte_tailq_elem rte_distributor_tailq = {
 	.name = "RTE_DISTRIBUTOR",
@@ -28,10 +28,10 @@ EAL_REGISTER_TAILQ(rte_distributor_tailq)
 /**** APIs called by workers ****/
 
 void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	int64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_GET_BUF;
 	while (unlikely(__atomic_load_n(&buf->bufptr64, __ATOMIC_RELAXED)
@@ -43,10 +43,10 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
 }
 
 struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	/* Sync with distributor. Acquire bufptr64. */
 	if (__atomic_load_n(&buf->bufptr64, __ATOMIC_ACQUIRE)
 		& RTE_DISTRIB_GET_BUF)
@@ -58,21 +58,21 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
 }
 
 struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
 	struct rte_mbuf *ret;
-	rte_distributor_request_pkt_v20(d, worker_id, oldpkt);
-	while ((ret = rte_distributor_poll_pkt_v20(d, worker_id)) == NULL)
+	rte_distributor_request_pkt_single(d, worker_id, oldpkt);
+	while ((ret = rte_distributor_poll_pkt_single(d, worker_id)) == NULL)
 		rte_pause();
 	return ret;
 }
 
 int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	uint64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_RETURN_BUF;
 	/* Sync with distributor on RETURN_BUF flag. */
@@ -104,7 +104,7 @@ backlog_pop(struct rte_distributor_backlog *bl)
 
 /* stores a packet returned from a worker inside the returns array */
 static inline void
-store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
+store_return(uintptr_t oldbuf, struct rte_distributor_single *d,
 		unsigned *ret_start, unsigned *ret_count)
 {
 	/* store returns in a circular buffer - code is branch-free */
@@ -115,7 +115,7 @@ store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
 }
 
 static inline void
-handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
+handle_worker_shutdown(struct rte_distributor_single *d, unsigned int wkr)
 {
 	d->in_flight_tags[wkr] = 0;
 	d->in_flight_bitmask &= ~(1UL << wkr);
@@ -146,7 +146,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
 		 * Note that the tags were set before first level call
 		 * to rte_distributor_process.
 		 */
-		rte_distributor_process_v20(d, pkts, i);
+		rte_distributor_process_single(d, pkts, i);
 		bl->count = bl->start = 0;
 	}
 }
@@ -156,7 +156,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
  * to do a partial flush.
  */
 static int
-process_returns(struct rte_distributor_v20 *d)
+process_returns(struct rte_distributor_single *d)
 {
 	unsigned wkr;
 	unsigned flushed = 0;
@@ -201,7 +201,7 @@ process_returns(struct rte_distributor_v20 *d)
 
 /* process a set of packets to distribute them to workers */
 int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned num_mbufs)
 {
 	unsigned next_idx = 0;
@@ -317,7 +317,7 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 
 /* return to the caller, packets returned from workers */
 int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -339,7 +339,7 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
  * being worked on or queued up in a backlog.
  */
 static inline unsigned
-total_outstanding(const struct rte_distributor_v20 *d)
+total_outstanding(const struct rte_distributor_single *d)
 {
 	unsigned wkr, total_outstanding;
 
@@ -354,19 +354,19 @@ total_outstanding(const struct rte_distributor_v20 *d)
 /* flush the distributor, so that there are no outstanding packets in flight or
  * queued up. */
 int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d)
+rte_distributor_flush_single(struct rte_distributor_single *d)
 {
 	const unsigned flushed = total_outstanding(d);
 
 	while (total_outstanding(d) > 0)
-		rte_distributor_process_v20(d, NULL, 0);
+		rte_distributor_process_single(d, NULL, 0);
 
 	return flushed;
 }
 
 /* clears the internal returns array in the distributor */
 void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
+rte_distributor_clear_returns_single(struct rte_distributor_single *d)
 {
 	d->returns.start = d->returns.count = 0;
 #ifndef __OPTIMIZE__
@@ -375,12 +375,12 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
 }
 
 /* creates a distributor instance */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name,
 		unsigned socket_id,
 		unsigned num_workers)
 {
-	struct rte_distributor_v20 *d;
+	struct rte_distributor_single *d;
 	struct rte_distributor_list *distributor_list;
 	char mz_name[RTE_MEMZONE_NAMESIZE];
 	const struct rte_memzone *mz;
diff --git a/lib/librte_distributor/rte_distributor_v20.h b/lib/librte_distributor/rte_distributor_single.h
similarity index 89%
rename from lib/librte_distributor/rte_distributor_v20.h
rename to lib/librte_distributor/rte_distributor_single.h
index 12865658ba..2f80aa43d1 100644
--- a/lib/librte_distributor/rte_distributor_v20.h
+++ b/lib/librte_distributor/rte_distributor_single.h
@@ -2,8 +2,8 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
-#ifndef _RTE_DISTRIB_V20_H_
-#define _RTE_DISTRIB_V20_H_
+#ifndef _RTE_DISTRIB_SINGLE_H_
+#define _RTE_DISTRIB_SINGLE_H_
 
 /**
  * @file
@@ -19,7 +19,7 @@ extern "C" {
 
 #define RTE_DISTRIBUTOR_NAMESIZE 32 /**< Length of name for instance */
 
-struct rte_distributor_v20;
+struct rte_distributor_single;
 struct rte_mbuf;
 
 /**
@@ -38,8 +38,8 @@ struct rte_mbuf;
  * @return
  *   The newly created distributor instance
  */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name, unsigned int socket_id,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name, unsigned int socket_id,
 		unsigned int num_workers);
 
 /*  *** APIS to be called on the distributor lcore ***  */
@@ -74,7 +74,7 @@ rte_distributor_create_v20(const char *name, unsigned int socket_id,
  *   The number of mbufs processed.
  */
 int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs);
 
 /**
@@ -92,7 +92,7 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
  *   The number of mbufs returned in the mbufs array.
  */
 int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs);
 
 /**
@@ -107,7 +107,7 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
  *   The number of queued/in-flight packets that were completed by this call.
  */
 int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d);
+rte_distributor_flush_single(struct rte_distributor_single *d);
 
 /**
  * Clears the array of returned packets used as the source for the
@@ -119,7 +119,7 @@ rte_distributor_flush_v20(struct rte_distributor_v20 *d);
  *   The distributor instance to be used
  */
 void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
+rte_distributor_clear_returns_single(struct rte_distributor_single *d);
 
 /*  *** APIS to be called on the worker lcores ***  */
 /*
@@ -148,7 +148,7 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
  *   A new packet to be processed by the worker thread.
  */
 struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -164,7 +164,7 @@ rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet being processed by the worker
  */
 int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *mbuf);
 
 /**
@@ -188,7 +188,7 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet, if any, being processed by the worker
  */
 void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -208,7 +208,7 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
  *   packet is yet available.
  */
 struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id);
 
 #ifdef __cplusplus
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 3a285b394e..00e26b4804 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,19 +1,3 @@
-DPDK_2.0 {
-	global:
-
-	rte_distributor_clear_returns;
-	rte_distributor_create;
-	rte_distributor_flush;
-	rte_distributor_get_pkt;
-	rte_distributor_poll_pkt;
-	rte_distributor_process;
-	rte_distributor_request_pkt;
-	rte_distributor_return_pkt;
-	rte_distributor_returned_pkts;
-
-	local: *;
-};
-
 DPDK_17.05 {
 	global:
 
@@ -26,4 +10,4 @@ DPDK_17.05 {
 	rte_distributor_request_pkt;
 	rte_distributor_return_pkt;
 	rte_distributor_returned_pkts;
-} DPDK_2.0;
+};
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v6 08/10] drivers/octeontx: add missing public symbol
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
                           ` (7 preceding siblings ...)
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
@ 2019-11-06 16:54         ` Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 09/10] build: change ABI version to 20.0 Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 10/10] buildtools: add ABI versioning check script Anatoly Burakov
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-06 16:54 UTC (permalink / raw)
  To: dev
  Cc: Jerin Jacob, john.mcnamara, ray.kinsella, bruce.richardson,
	thomas, david.marchand, pbhagavatula, stable

The logtype symbol was missing from the .map file. Add it.

Fixes: d8dd31652cf4 ("common/octeontx: move mbox to common folder")
Cc: pbhagavatula@caviumnetworks.com
Cc: stable@dpdk.org

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - add this patch to avoid compile breakage when bumping ABI

 drivers/common/octeontx/rte_common_octeontx_version.map | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index f04b3b7f8a..a9b3cff9bc 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,6 +1,7 @@
 DPDK_18.05 {
 	global:
 
+	octeontx_logtype_mbox;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
 	octeontx_mbox_send;
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v6 09/10] build: change ABI version to 20.0
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
                           ` (8 preceding siblings ...)
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
@ 2019-11-06 16:54         ` Anatoly Burakov
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 10/10] buildtools: add ABI versioning check script Anatoly Burakov
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-06 16:54 UTC (permalink / raw)
  To: dev
  Cc: Pawel Modrak, Nicolas Chautru, Hemant Agrawal, Sachin Saxena,
	Rosen Xu, Stephen Hemminger, Anoob Joseph, Tomasz Duszynski,
	Liron Himi, Jerin Jacob, Nithin Dabilpuram, Vamsi Attunuru,
	Lee Daly, Fiona Trahe, Ashish Gupta, Sunila Sahu, Declan Doherty,
	Pablo de Lara, Gagandeep Singh, Ravi Kumar, Akhil Goyal,
	Michael Shamis, Nagadheeraj Rottela, Srikanth Jampala,
	Ankur Dwivedi, Fan Zhang, Jay Zhou, Nipun Gupta,
	Mattias Rönnblom, Pavan Nikhilesh, Liang Ma, Peter Mccarthy,
	Harry van Haaren, Artem V. Andreev, Andrew Rybchenko,
	Olivier Matz, Gage Eads, John W. Linville, Xiaolong Ye, Qi Zhang,
	Shepard Siegel, Ed Czeck, John Miller, Igor Russkikh,
	Pavel Belous, Allain Legacy, Matt Peters, Rasesh Mody,
	Shahed Shaikh, Ajit Khaparde, Somnath Kotur, Chas Williams,
	Rahul Lakkireddy, Wenzhuo Lu, Marcin Wojtas, Michal Krawczyk,
	Guy Tzalik, Evgeny Schemeilin, Igor Chauskin, John Daley,
	Hyong Youb Kim, Gaetan Rivet, Xiao Wang, Ziyang Xuan,
	Xiaoyun Wang, Guoyang Zhou, Wei Hu (Xavier), Min Hu (Connor),
	Yisen Zhuang, Beilei Xing, Jingjing Wu, Qiming Yang,
	Konstantin Ananyev, Ferruh Yigit, Shijith Thotton,
	Srisivasubramanian Srinivasan, Jakub Grajciar, Matan Azrad,
	Shahaf Shuler, Viacheslav Ovsiienko, Zyta Szpak,
	K. Y. Srinivasan, Haiyang Zhang, Rastislav Cernay, Jan Remes,
	Alejandro Lucero, Tetsuya Mukawa, Kiran Kumar K,
	Bruce Richardson, Jasvinder Singh, Cristian Dumitrescu,
	Keith Wiles, Maciej Czekaj, Maxime Coquelin, Tiwei Bie,
	Zhihong Wang, Yong Wang, Tianfei zhang, Xiaoyun Li, Satha Rao,
	Shreyansh Jain, David Hunt, Byron Marohn, Yipeng Wang,
	Thomas Monjalon, Jiayu Hu, Sameh Gobriel, Reshma Pattan,
	Vladimir Medvedkin, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, ray.kinsella, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Merge all vesions in linker version script files to DPDK_20.0.

This commit was generated by running the following command:

:~/DPDK$ buildtools/update-abi.sh 20.0

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |   8 +-
 .../null/rte_pmd_bbdev_null_version.map       |   2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |   2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     | 113 +++---
 drivers/bus/fslmc/rte_bus_fslmc_version.map   | 154 ++++-----
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |  14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |   2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |  12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |  12 +-
 drivers/common/cpt/rte_common_cpt_version.map |   9 +-
 .../common/dpaax/rte_common_dpaax_version.map |  14 +-
 .../common/mvep/rte_common_mvep_version.map   |   6 +-
 .../octeontx/rte_common_octeontx_version.map  |   6 +-
 .../rte_common_octeontx2_version.map          |  16 +-
 .../compress/isal/rte_pmd_isal_version.map    |   2 +-
 .../rte_pmd_octeontx_compress_version.map     |   2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |   2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |   2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |   2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |   2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |   2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |   3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |   3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |  10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |  10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |   2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |   2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |   2 +-
 .../null/rte_pmd_null_crypto_version.map      |   2 +-
 .../rte_pmd_octeontx_crypto_version.map       |   3 +-
 .../rte_pmd_octeontx2_crypto_version.map      |   3 +-
 .../openssl/rte_pmd_openssl_version.map       |   2 +-
 .../rte_pmd_crypto_scheduler_version.map      |  19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |   2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |   2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |   2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |   3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |   2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |   2 +-
 .../rte_pmd_octeontx_event_version.map        |   2 +-
 .../rte_pmd_octeontx2_event_version.map       |   3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |   2 +-
 .../rte_pmd_skeleton_event_version.map        |   3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |   2 +-
 .../bucket/rte_mempool_bucket_version.map     |   3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |   2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |  12 +-
 .../octeontx/rte_mempool_octeontx_version.map |   2 +-
 .../rte_mempool_octeontx2_version.map         |   4 +-
 .../mempool/ring/rte_mempool_ring_version.map |   3 +-
 .../stack/rte_mempool_stack_version.map       |   3 +-
 .../af_packet/rte_pmd_af_packet_version.map   |   3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |   2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |   5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |   6 -
 drivers/net/avp/rte_pmd_avp_version.map       |   2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |   2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |   3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |   4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |  47 +--
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |   3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |  11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |  12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |   3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |   3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |   3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |   3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |   3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |   3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |   3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |   4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |  65 +---
 drivers/net/iavf/rte_pmd_iavf_version.map     |   3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |   3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |   3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |   3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |  62 ++--
 drivers/net/kni/rte_pmd_kni_version.map       |   3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |   3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |   5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |   3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |   2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |   2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |   2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |   4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |   3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |   2 +-
 drivers/net/null/rte_pmd_null_version.map     |   3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |  10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |   3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |   3 +-
 drivers/net/pfe/rte_pmd_pfe_version.map       |   3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |   3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |  10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |   3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |   2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |   2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |   3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |   3 +-
 .../rte_pmd_vdev_netvsc_version.map           |   3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |  11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |   3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |   3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |   3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |   4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |   3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |   3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |   5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |   3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |   3 +-
 lib/librte_acl/rte_acl_version.map            |   2 +-
 .../rte_bitratestats_version.map              |   2 +-
 lib/librte_cfgfile/rte_cfgfile_version.map    |  34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |  10 +-
 .../rte_cryptodev_version.map                 | 102 ++----
 .../rte_distributor_version.map               |   4 +-
 lib/librte_eal/rte_eal_version.map            | 324 ++++++------------
 lib/librte_efd/rte_efd_version.map            |   2 +-
 lib/librte_ethdev/rte_ethdev_version.map      | 160 +++------
 lib/librte_eventdev/rte_eventdev_version.map  | 130 +++----
 lib/librte_gro/rte_gro_version.map            |   2 +-
 lib/librte_gso/rte_gso_version.map            |   2 +-
 lib/librte_hash/rte_hash_version.map          |  43 +--
 lib/librte_ip_frag/rte_ip_frag_version.map    |  10 +-
 lib/librte_jobstats/rte_jobstats_version.map  |  10 +-
 lib/librte_kni/rte_kni_version.map            |   2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |   4 +-
 .../rte_latencystats_version.map              |   2 +-
 lib/librte_lpm/rte_lpm_version.map            |  39 +--
 lib/librte_mbuf/rte_mbuf_version.map          |  49 +--
 lib/librte_member/rte_member_version.map      |   2 +-
 lib/librte_mempool/rte_mempool_version.map    |  44 +--
 lib/librte_meter/rte_meter_version.map        |  13 +-
 lib/librte_metrics/rte_metrics_version.map    |   2 +-
 lib/librte_net/rte_net_version.map            |  23 +-
 lib/librte_pci/rte_pci_version.map            |   2 +-
 lib/librte_pdump/rte_pdump_version.map        |   2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |  36 +-
 lib/librte_port/rte_port_version.map          |  64 +---
 lib/librte_power/rte_power_version.map        |  24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |   4 +-
 lib/librte_reorder/rte_reorder_version.map    |   8 +-
 lib/librte_ring/rte_ring_version.map          |  10 +-
 lib/librte_sched/rte_sched_version.map        |  14 +-
 lib/librte_security/rte_security_version.map  |   2 +-
 lib/librte_table/rte_table_version.map        |   2 +-
 lib/librte_timer/rte_timer_version.map        |  12 +-
 lib/librte_vhost/rte_vhost_version.map        |  52 +--
 148 files changed, 695 insertions(+), 1438 deletions(-)

diff --git a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
index f64b0f9c27..d9de5102db 100644
--- a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
+++ b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
@@ -1,10 +1,6 @@
-DPDK_19.08 {
-    local: *;
-};
-
 EXPERIMENTAL {
-    global:
+	global:
 
-    fpga_lte_fec_configure;
+	fpga_lte_fec_configure;
 
 };
diff --git a/drivers/baseband/null/rte_pmd_bbdev_null_version.map b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/null/rte_pmd_bbdev_null_version.map
+++ b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
+++ b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map
index cf428a54dc..e6ca4361e0 100644
--- a/drivers/bus/dpaa/rte_bus_dpaa_version.map
+++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	bman_acquire;
@@ -7,123 +7,90 @@ DPDK_17.11 {
 	bman_new_pool;
 	bman_query_free_buffers;
 	bman_release;
+	bman_thread_irq;
+	dpaa_logtype_eventdev;
 	dpaa_logtype_mempool;
 	dpaa_logtype_pmd;
 	dpaa_netcfg;
+	dpaa_svr_family;
 	fman_ccsr_map_fd;
 	fman_dealloc_bufs_mask_hi;
 	fman_dealloc_bufs_mask_lo;
 	fman_if_add_mac_addr;
 	fman_if_clear_mac_addr;
 	fman_if_disable_rx;
-	fman_if_enable_rx;
 	fman_if_discard_rx_errors;
-	fman_if_get_fc_threshold;
+	fman_if_enable_rx;
 	fman_if_get_fc_quanta;
+	fman_if_get_fc_threshold;
 	fman_if_get_fdoff;
+	fman_if_get_sg_enable;
 	fman_if_loopback_disable;
 	fman_if_loopback_enable;
 	fman_if_promiscuous_disable;
 	fman_if_promiscuous_enable;
 	fman_if_reset_mcast_filter_table;
 	fman_if_set_bp;
-	fman_if_set_fc_threshold;
 	fman_if_set_fc_quanta;
+	fman_if_set_fc_threshold;
 	fman_if_set_fdoff;
 	fman_if_set_ic_params;
 	fman_if_set_maxfrm;
 	fman_if_set_mcast_filter_table;
+	fman_if_set_sg;
 	fman_if_stats_get;
 	fman_if_stats_get_all;
 	fman_if_stats_reset;
 	fman_ip_rev;
+	fsl_qman_fq_portal_create;
 	netcfg_acquire;
 	netcfg_release;
-	qm_channel_caam;
-	qman_create_fq;
-	qman_dequeue;
-	qman_dqrr_consume;
-	qman_enqueue;
-	qman_enqueue_multi;
-	qman_fq_fqid;
-	qman_fq_state;
-	qman_init_fq;
-	qman_poll_dqrr;
-	qman_query_fq_np;
-	qman_set_vdq;
-	qman_reserve_fqid_range;
-	qman_volatile_dequeue;
-	rte_dpaa_driver_register;
-	rte_dpaa_driver_unregister;
-	rte_dpaa_mem_ptov;
-	rte_dpaa_portal_init;
-
-	local: *;
-};
-
-DPDK_18.02 {
-	global:
-
-	dpaa_logtype_eventdev;
-	dpaa_svr_family;
 	per_lcore_dpaa_io;
 	per_lcore_held_bufs;
+	qm_channel_caam;
 	qm_channel_pool1;
 	qman_alloc_cgrid_range;
 	qman_alloc_pool_range;
+	qman_clear_irq;
 	qman_create_cgr;
+	qman_create_fq;
 	qman_dca_index;
 	qman_delete_cgr;
+	qman_dequeue;
+	qman_dqrr_consume;
+	qman_enqueue;
+	qman_enqueue_multi;
 	qman_enqueue_multi_fq;
+	qman_fq_fqid;
+	qman_fq_portal_irqsource_add;
+	qman_fq_portal_irqsource_remove;
+	qman_fq_portal_thread_irq;
+	qman_fq_state;
+	qman_init_fq;
+	qman_irqsource_add;
+	qman_irqsource_remove;
 	qman_modify_cgr;
 	qman_oos_fq;
+	qman_poll_dqrr;
 	qman_portal_dequeue;
 	qman_portal_poll_rx;
 	qman_query_fq_frm_cnt;
+	qman_query_fq_np;
 	qman_release_cgrid_range;
+	qman_reserve_fqid_range;
 	qman_retire_fq;
+	qman_set_fq_lookup_table;
+	qman_set_vdq;
 	qman_static_dequeue_add;
-	rte_dpaa_portal_fq_close;
-	rte_dpaa_portal_fq_init;
-
-} DPDK_17.11;
-
-DPDK_18.08 {
-	global:
-
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-
-	bman_thread_irq;
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-	qman_clear_irq;
-
-	qman_irqsource_add;
-	qman_irqsource_remove;
 	qman_thread_fd;
 	qman_thread_irq;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	qman_set_fq_lookup_table;
-
-} DPDK_18.11;
-
-DPDK_19.11 {
-	global:
-
-	fsl_qman_fq_portal_create;
-	qman_fq_portal_irqsource_add;
-	qman_fq_portal_irqsource_remove;
-	qman_fq_portal_thread_irq;
-
-} DPDK_19.05;
+	qman_volatile_dequeue;
+	rte_dpaa_driver_register;
+	rte_dpaa_driver_unregister;
+	rte_dpaa_mem_ptov;
+	rte_dpaa_portal_fq_close;
+	rte_dpaa_portal_fq_init;
+	rte_dpaa_portal_init;
+
+	local: *;
+};
diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map
index 4da787236b..fe45575046 100644
--- a/drivers/bus/fslmc/rte_bus_fslmc_version.map
+++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map
@@ -1,32 +1,67 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
+	dpaa2_affine_qbman_ethrx_swp;
 	dpaa2_affine_qbman_swp;
 	dpaa2_alloc_dpbp_dev;
 	dpaa2_alloc_dq_storage;
+	dpaa2_dpbp_supported;
+	dpaa2_dqrr_size;
+	dpaa2_eqcr_size;
 	dpaa2_free_dpbp_dev;
 	dpaa2_free_dq_storage;
+	dpaa2_free_eq_descriptors;
+	dpaa2_get_qbman_swp;
+	dpaa2_io_portal;
+	dpaa2_svr_family;
+	dpaa2_virt_mode;
 	dpbp_disable;
 	dpbp_enable;
 	dpbp_get_attributes;
 	dpbp_get_num_free_bufs;
 	dpbp_open;
 	dpbp_reset;
+	dpci_get_opr;
+	dpci_set_opr;
+	dpci_set_rx_queue;
+	dpcon_get_attributes;
+	dpcon_open;
+	dpdmai_close;
+	dpdmai_disable;
+	dpdmai_enable;
+	dpdmai_get_attributes;
+	dpdmai_get_rx_queue;
+	dpdmai_get_tx_queue;
+	dpdmai_open;
+	dpdmai_set_rx_queue;
+	dpio_add_static_dequeue_channel;
 	dpio_close;
 	dpio_disable;
 	dpio_enable;
 	dpio_get_attributes;
 	dpio_open;
+	dpio_remove_static_dequeue_channel;
 	dpio_reset;
 	dpio_set_stashing_destination;
+	mc_get_soc_version;
+	mc_get_version;
 	mc_send_command;
 	per_lcore__dpaa2_io;
+	per_lcore_dpaa2_held_bufs;
 	qbman_check_command_complete;
+	qbman_check_new_result;
 	qbman_eq_desc_clear;
+	qbman_eq_desc_set_dca;
 	qbman_eq_desc_set_fq;
 	qbman_eq_desc_set_no_orp;
+	qbman_eq_desc_set_orp;
 	qbman_eq_desc_set_qd;
 	qbman_eq_desc_set_response;
+	qbman_eq_desc_set_token;
+	qbman_fq_query_state;
+	qbman_fq_state_frame_count;
+	qbman_get_dqrr_from_idx;
+	qbman_get_dqrr_idx;
 	qbman_pull_desc_clear;
 	qbman_pull_desc_set_fq;
 	qbman_pull_desc_set_numframes;
@@ -35,112 +70,43 @@ DPDK_17.05 {
 	qbman_release_desc_set_bpid;
 	qbman_result_DQ_fd;
 	qbman_result_DQ_flags;
-	qbman_result_has_new_result;
-	qbman_swp_acquire;
-	qbman_swp_pull;
-	qbman_swp_release;
-	rte_fslmc_driver_register;
-	rte_fslmc_driver_unregister;
-	rte_fslmc_vfio_dmamap;
-	rte_mcp_ptr_list;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	dpaa2_io_portal;
-	dpaa2_get_qbman_swp;
-	dpci_set_rx_queue;
-	dpcon_open;
-	dpcon_get_attributes;
-	dpio_add_static_dequeue_channel;
-	dpio_remove_static_dequeue_channel;
-	mc_get_soc_version;
-	mc_get_version;
-	qbman_check_new_result;
-	qbman_eq_desc_set_dca;
-	qbman_get_dqrr_from_idx;
-	qbman_get_dqrr_idx;
 	qbman_result_DQ_fqd_ctx;
+	qbman_result_DQ_odpid;
+	qbman_result_DQ_seqnum;
 	qbman_result_SCN_state;
+	qbman_result_eqresp_fd;
+	qbman_result_eqresp_rc;
+	qbman_result_eqresp_rspid;
+	qbman_result_eqresp_set_rspid;
+	qbman_result_has_new_result;
+	qbman_swp_acquire;
 	qbman_swp_dqrr_consume;
+	qbman_swp_dqrr_idx_consume;
 	qbman_swp_dqrr_next;
 	qbman_swp_enqueue_multiple;
 	qbman_swp_enqueue_multiple_desc;
+	qbman_swp_enqueue_multiple_fd;
 	qbman_swp_interrupt_clear_status;
+	qbman_swp_prefetch_dqrr_next;
+	qbman_swp_pull;
 	qbman_swp_push_set;
+	qbman_swp_release;
 	rte_dpaa2_alloc_dpci_dev;
-	rte_fslmc_object_register;
-	rte_global_active_dqs_list;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	dpaa2_dpbp_supported;
 	rte_dpaa2_dev_type;
+	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_intr_disable;
 	rte_dpaa2_intr_enable;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	dpaa2_svr_family;
-	dpaa2_virt_mode;
-	per_lcore_dpaa2_held_bufs;
-	qbman_fq_query_state;
-	qbman_fq_state_frame_count;
-	qbman_swp_dqrr_idx_consume;
-	qbman_swp_prefetch_dqrr_next;
-	rte_fslmc_get_device_count;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	dpaa2_affine_qbman_ethrx_swp;
-	dpdmai_close;
-	dpdmai_disable;
-	dpdmai_enable;
-	dpdmai_get_attributes;
-	dpdmai_get_rx_queue;
-	dpdmai_get_tx_queue;
-	dpdmai_open;
-	dpdmai_set_rx_queue;
-	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_memsegs;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-	dpaa2_dqrr_size;
-	dpaa2_eqcr_size;
-	dpci_get_opr;
-	dpci_set_opr;
-
-} DPDK_18.05;
-
-DPDK_19.05 {
-	global:
-	dpaa2_free_eq_descriptors;
-
-	qbman_eq_desc_set_orp;
-	qbman_eq_desc_set_token;
-	qbman_result_DQ_odpid;
-	qbman_result_DQ_seqnum;
-	qbman_result_eqresp_fd;
-	qbman_result_eqresp_rc;
-	qbman_result_eqresp_rspid;
-	qbman_result_eqresp_set_rspid;
-	qbman_swp_enqueue_multiple_fd;
-} DPDK_18.11;
+	rte_fslmc_driver_register;
+	rte_fslmc_driver_unregister;
+	rte_fslmc_get_device_count;
+	rte_fslmc_object_register;
+	rte_fslmc_vfio_dmamap;
+	rte_global_active_dqs_list;
+	rte_mcp_ptr_list;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/bus/ifpga/rte_bus_ifpga_version.map b/drivers/bus/ifpga/rte_bus_ifpga_version.map
index 964c9a9c45..05b4a28c1b 100644
--- a/drivers/bus/ifpga/rte_bus_ifpga_version.map
+++ b/drivers/bus/ifpga/rte_bus_ifpga_version.map
@@ -1,17 +1,11 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
-	rte_ifpga_get_integer32_arg;
-	rte_ifpga_get_string_arg;
 	rte_ifpga_driver_register;
 	rte_ifpga_driver_unregister;
+	rte_ifpga_find_afu_by_name;
+	rte_ifpga_get_integer32_arg;
+	rte_ifpga_get_string_arg;
 
 	local: *;
 };
-
-DPDK_19.05 {
-	global:
-
-	rte_ifpga_find_afu_by_name;
-
-} DPDK_18.05;
diff --git a/drivers/bus/pci/rte_bus_pci_version.map b/drivers/bus/pci/rte_bus_pci_version.map
index 27e9c4f101..012d817e14 100644
--- a/drivers/bus/pci/rte_bus_pci_version.map
+++ b/drivers/bus/pci/rte_bus_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pci_dump;
diff --git a/drivers/bus/vdev/rte_bus_vdev_version.map b/drivers/bus/vdev/rte_bus_vdev_version.map
index 590cf9b437..5abb10ecb0 100644
--- a/drivers/bus/vdev/rte_bus_vdev_version.map
+++ b/drivers/bus/vdev/rte_bus_vdev_version.map
@@ -1,18 +1,12 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
+	rte_vdev_add_custom_scan;
 	rte_vdev_init;
 	rte_vdev_register;
+	rte_vdev_remove_custom_scan;
 	rte_vdev_uninit;
 	rte_vdev_unregister;
 
 	local: *;
 };
-
-DPDK_18.02 {
-	global:
-
-	rte_vdev_add_custom_scan;
-	rte_vdev_remove_custom_scan;
-
-} DPDK_17.11;
diff --git a/drivers/bus/vmbus/rte_bus_vmbus_version.map b/drivers/bus/vmbus/rte_bus_vmbus_version.map
index ae231ad329..cbaaebc06c 100644
--- a/drivers/bus/vmbus/rte_bus_vmbus_version.map
+++ b/drivers/bus/vmbus/rte_bus_vmbus_version.map
@@ -1,6 +1,4 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_vmbus_chan_close;
@@ -20,6 +18,7 @@ DPDK_18.08 {
 	rte_vmbus_probe;
 	rte_vmbus_register;
 	rte_vmbus_scan;
+	rte_vmbus_set_latency;
 	rte_vmbus_sub_channel_index;
 	rte_vmbus_subchan_open;
 	rte_vmbus_unmap_device;
@@ -27,10 +26,3 @@ DPDK_18.08 {
 
 	local: *;
 };
-
-DPDK_18.11 {
-	global:
-
-	rte_vmbus_set_latency;
-
-} DPDK_18.08;
diff --git a/drivers/common/cpt/rte_common_cpt_version.map b/drivers/common/cpt/rte_common_cpt_version.map
index 382ec4bd44..7f1929d58e 100644
--- a/drivers/common/cpt/rte_common_cpt_version.map
+++ b/drivers/common/cpt/rte_common_cpt_version.map
@@ -1,14 +1,9 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
+	cpt_pmd_ops_helper_asym_get_mlen;
 	cpt_pmd_ops_helper_get_mlen_direct_mode;
 	cpt_pmd_ops_helper_get_mlen_sg_mode;
-};
-
-DPDK_19.11 {
-	global:
-
-	cpt_pmd_ops_helper_asym_get_mlen;
 
 	local: *;
 };
diff --git a/drivers/common/dpaax/rte_common_dpaax_version.map b/drivers/common/dpaax/rte_common_dpaax_version.map
index a7699ae4dd..f72eba761d 100644
--- a/drivers/common/dpaax/rte_common_dpaax_version.map
+++ b/drivers/common/dpaax/rte_common_dpaax_version.map
@@ -1,29 +1,23 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	dpaax_iova_table_update;
 	dpaax_iova_table_depopulate;
 	dpaax_iova_table_dump;
 	dpaax_iova_table_p;
 	dpaax_iova_table_populate;
-
-	local: *;
-};
-
-DPDK_19.11 {
-	global:
+	dpaax_iova_table_update;
 	of_device_is_available;
 	of_device_is_compatible;
 	of_find_compatible_node;
 	of_find_node_by_phandle;
 	of_get_address;
 	of_get_mac_address;
+	of_get_next_child;
 	of_get_parent;
 	of_get_property;
 	of_init_path;
 	of_n_addr_cells;
 	of_translate_address;
-	of_get_next_child;
 
 	local: *;
-} DPDK_18.11;
+};
diff --git a/drivers/common/mvep/rte_common_mvep_version.map b/drivers/common/mvep/rte_common_mvep_version.map
index c71722d79f..030928439d 100644
--- a/drivers/common/mvep/rte_common_mvep_version.map
+++ b/drivers/common/mvep/rte_common_mvep_version.map
@@ -1,6 +1,8 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	rte_mvep_init;
 	rte_mvep_deinit;
+	rte_mvep_init;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index a9b3cff9bc..c15fb89112 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,8 +1,10 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
 	octeontx_logtype_mbox;
+	octeontx_mbox_send;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
-	octeontx_mbox_send;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx2/rte_common_octeontx2_version.map b/drivers/common/octeontx2/rte_common_octeontx2_version.map
index 4400120da0..adad21a2d6 100644
--- a/drivers/common/octeontx2/rte_common_octeontx2_version.map
+++ b/drivers/common/octeontx2/rte_common_octeontx2_version.map
@@ -1,39 +1,35 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	otx2_dev_active_vfs;
 	otx2_dev_fini;
 	otx2_dev_priv_init;
-
+	otx2_disable_irqs;
+	otx2_intra_dev_get_cfg;
 	otx2_logtype_base;
 	otx2_logtype_dpi;
 	otx2_logtype_mbox;
+	otx2_logtype_nix;
 	otx2_logtype_npa;
 	otx2_logtype_npc;
-	otx2_logtype_nix;
 	otx2_logtype_sso;
-	otx2_logtype_tm;
 	otx2_logtype_tim;
-
+	otx2_logtype_tm;
 	otx2_mbox_alloc_msg_rsp;
 	otx2_mbox_get_rsp;
 	otx2_mbox_get_rsp_tmo;
 	otx2_mbox_id2name;
 	otx2_mbox_msg_send;
 	otx2_mbox_wait_for_rsp;
-
-	otx2_intra_dev_get_cfg;
 	otx2_npa_lf_active;
 	otx2_npa_lf_obj_get;
 	otx2_npa_lf_obj_ref;
 	otx2_npa_pf_func_get;
 	otx2_npa_set_defaults;
+	otx2_register_irq;
 	otx2_sso_pf_func_get;
 	otx2_sso_pf_func_set;
-
-	otx2_disable_irqs;
 	otx2_unregister_irq;
-	otx2_register_irq;
 
 	local: *;
 };
diff --git a/drivers/compress/isal/rte_pmd_isal_version.map b/drivers/compress/isal/rte_pmd_isal_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/compress/isal/rte_pmd_isal_version.map
+++ b/drivers/compress/isal/rte_pmd_isal_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
+++ b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/qat/rte_pmd_qat_version.map b/drivers/compress/qat/rte_pmd_qat_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/qat/rte_pmd_qat_version.map
+++ b/drivers/compress/qat/rte_pmd_qat_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/zlib/rte_pmd_zlib_version.map b/drivers/compress/zlib/rte_pmd_zlib_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/zlib/rte_pmd_zlib_version.map
+++ b/drivers/compress/zlib/rte_pmd_zlib_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
+++ b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
+++ b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/armv8/rte_pmd_armv8_version.map b/drivers/crypto/armv8/rte_pmd_armv8_version.map
index 1f84b68a83..f9f17e4f6e 100644
--- a/drivers/crypto/armv8/rte_pmd_armv8_version.map
+++ b/drivers/crypto/armv8/rte_pmd_armv8_version.map
@@ -1,3 +1,3 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
+++ b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/ccp/rte_pmd_ccp_version.map b/drivers/crypto/ccp/rte_pmd_ccp_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/crypto/ccp/rte_pmd_ccp_version.map
+++ b/drivers/crypto/ccp/rte_pmd_ccp_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
index 0bfb986d0b..5952d645fd 100644
--- a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
+++ b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_sec_eventq_attach;
 	dpaa2_sec_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
index cc7f2162e0..8580fa13db 100644
--- a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
+++ b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_19.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa_sec_eventq_attach;
 	dpaa_sec_eventq_detach;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
index 8ffeca934e..f9f17e4f6e 100644
--- a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
+++ b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
@@ -1,3 +1,3 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
+++ b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
index 406964d1fc..f9f17e4f6e 100644
--- a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
+++ b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/null/rte_pmd_null_crypto_version.map b/drivers/crypto/null/rte_pmd_null_crypto_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/null/rte_pmd_null_crypto_version.map
+++ b/drivers/crypto/null/rte_pmd_null_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
+++ b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/octeontx2/rte_pmd_octeontx2_crypto_version.map b/drivers/crypto/octeontx2/rte_pmd_octeontx2_crypto_version.map
index b7b7c91683..f9f17e4f6e 100644
--- a/drivers/crypto/octeontx2/rte_pmd_octeontx2_crypto_version.map
+++ b/drivers/crypto/octeontx2/rte_pmd_octeontx2_crypto_version.map
@@ -1,4 +1,3 @@
-DPDK_19.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/openssl/rte_pmd_openssl_version.map b/drivers/crypto/openssl/rte_pmd_openssl_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/openssl/rte_pmd_openssl_version.map
+++ b/drivers/crypto/openssl/rte_pmd_openssl_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
index 5c43127cf2..077afedce7 100644
--- a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
+++ b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
@@ -1,21 +1,16 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_cryptodev_scheduler_load_user_scheduler;
-	rte_cryptodev_scheduler_slave_attach;
-	rte_cryptodev_scheduler_slave_detach;
-	rte_cryptodev_scheduler_ordering_set;
-	rte_cryptodev_scheduler_ordering_get;
-
-};
-
-DPDK_17.05 {
-	global:
-
 	rte_cryptodev_scheduler_mode_get;
 	rte_cryptodev_scheduler_mode_set;
 	rte_cryptodev_scheduler_option_get;
 	rte_cryptodev_scheduler_option_set;
+	rte_cryptodev_scheduler_ordering_get;
+	rte_cryptodev_scheduler_ordering_set;
+	rte_cryptodev_scheduler_slave_attach;
+	rte_cryptodev_scheduler_slave_detach;
 	rte_cryptodev_scheduler_slaves_get;
 
-} DPDK_17.02;
+	local: *;
+};
diff --git a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
+++ b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
+++ b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/zuc/rte_pmd_zuc_version.map b/drivers/crypto/zuc/rte_pmd_zuc_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/zuc/rte_pmd_zuc_version.map
+++ b/drivers/crypto/zuc/rte_pmd_zuc_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
+++ b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
index 1c0b7559dc..f9f17e4f6e 100644
--- a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
+++ b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dsw/rte_pmd_dsw_event_version.map b/drivers/event/dsw/rte_pmd_dsw_event_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/event/dsw/rte_pmd_dsw_event_version.map
+++ b/drivers/event/dsw/rte_pmd_dsw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
+++ b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
index 41c65c8c9c..f9f17e4f6e 100644
--- a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
+++ b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	local: *;
 };
-
diff --git a/drivers/event/opdl/rte_pmd_opdl_event_version.map b/drivers/event/opdl/rte_pmd_opdl_event_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/event/opdl/rte_pmd_opdl_event_version.map
+++ b/drivers/event/opdl/rte_pmd_opdl_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
+++ b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/sw/rte_pmd_sw_event_version.map b/drivers/event/sw/rte_pmd_sw_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/sw/rte_pmd_sw_event_version.map
+++ b/drivers/event/sw/rte_pmd_sw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/bucket/rte_mempool_bucket_version.map b/drivers/mempool/bucket/rte_mempool_bucket_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/mempool/bucket/rte_mempool_bucket_version.map
+++ b/drivers/mempool/bucket/rte_mempool_bucket_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
index 60bf50b2d1..9eebaf7ffd 100644
--- a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
+++ b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa_bpid_info;
diff --git a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
index b45e7a9ac1..cd4bc88273 100644
--- a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
+++ b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
@@ -1,16 +1,10 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa2_bpid_info;
 	rte_dpaa2_mbuf_alloc_bulk;
-
-	local: *;
-};
-
-DPDK_18.05 {
-	global:
-
 	rte_dpaa2_mbuf_from_buf_addr;
 	rte_dpaa2_mbuf_pool_bpid;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
+++ b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
index d703368c31..d4f81aed8e 100644
--- a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
+++ b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
@@ -1,8 +1,8 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
-	otx2_npa_lf_init;
 	otx2_npa_lf_fini;
+	otx2_npa_lf_init;
 
 	local: *;
 };
diff --git a/drivers/mempool/ring/rte_mempool_ring_version.map b/drivers/mempool/ring/rte_mempool_ring_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/ring/rte_mempool_ring_version.map
+++ b/drivers/mempool/ring/rte_mempool_ring_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/stack/rte_mempool_stack_version.map b/drivers/mempool/stack/rte_mempool_stack_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/stack/rte_mempool_stack_version.map
+++ b/drivers/mempool/stack/rte_mempool_stack_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_packet/rte_pmd_af_packet_version.map b/drivers/net/af_packet/rte_pmd_af_packet_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/af_packet/rte_pmd_af_packet_version.map
+++ b/drivers/net/af_packet/rte_pmd_af_packet_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
index c6db030fe6..f9f17e4f6e 100644
--- a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
+++ b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
@@ -1,3 +1,3 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ark/rte_pmd_ark_version.map b/drivers/net/ark/rte_pmd_ark_version.map
index 1062e0429f..f9f17e4f6e 100644
--- a/drivers/net/ark/rte_pmd_ark_version.map
+++ b/drivers/net/ark/rte_pmd_ark_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-	 local: *;
-
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/atlantic/rte_pmd_atlantic_version.map b/drivers/net/atlantic/rte_pmd_atlantic_version.map
index b16faa999f..74146e9c09 100644
--- a/drivers/net/atlantic/rte_pmd_atlantic_version.map
+++ b/drivers/net/atlantic/rte_pmd_atlantic_version.map
@@ -1,8 +1,3 @@
-DPDK_18.11 {
-
-	local: *;
-};
-
 EXPERIMENTAL {
 	global:
 
@@ -13,4 +8,3 @@ EXPERIMENTAL {
 	rte_pmd_atl_macsec_select_txsa;
 	rte_pmd_atl_macsec_select_rxsa;
 };
-
diff --git a/drivers/net/avp/rte_pmd_avp_version.map b/drivers/net/avp/rte_pmd_avp_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/net/avp/rte_pmd_avp_version.map
+++ b/drivers/net/avp/rte_pmd_avp_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/axgbe/rte_pmd_axgbe_version.map b/drivers/net/axgbe/rte_pmd_axgbe_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/net/axgbe/rte_pmd_axgbe_version.map
+++ b/drivers/net/axgbe/rte_pmd_axgbe_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
+++ b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnxt/rte_pmd_bnxt_version.map b/drivers/net/bnxt/rte_pmd_bnxt_version.map
index 4750d40ad6..bb52562347 100644
--- a/drivers/net/bnxt/rte_pmd_bnxt_version.map
+++ b/drivers/net/bnxt/rte_pmd_bnxt_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_bnxt_get_vf_rx_status;
@@ -10,13 +10,13 @@ DPDK_17.08 {
 	rte_pmd_bnxt_set_tx_loopback;
 	rte_pmd_bnxt_set_vf_mac_addr;
 	rte_pmd_bnxt_set_vf_mac_anti_spoof;
+	rte_pmd_bnxt_set_vf_persist_stats;
 	rte_pmd_bnxt_set_vf_rate_limit;
 	rte_pmd_bnxt_set_vf_rxmode;
 	rte_pmd_bnxt_set_vf_vlan_anti_spoof;
 	rte_pmd_bnxt_set_vf_vlan_filter;
 	rte_pmd_bnxt_set_vf_vlan_insert;
 	rte_pmd_bnxt_set_vf_vlan_stripq;
-	rte_pmd_bnxt_set_vf_persist_stats;
 
 	local: *;
 };
diff --git a/drivers/net/bonding/rte_pmd_bond_version.map b/drivers/net/bonding/rte_pmd_bond_version.map
index 00d955c481..270c7d5d55 100644
--- a/drivers/net/bonding/rte_pmd_bond_version.map
+++ b/drivers/net/bonding/rte_pmd_bond_version.map
@@ -1,9 +1,21 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_bond_8023ad_agg_selection_get;
+	rte_eth_bond_8023ad_agg_selection_set;
+	rte_eth_bond_8023ad_conf_get;
+	rte_eth_bond_8023ad_dedicated_queues_disable;
+	rte_eth_bond_8023ad_dedicated_queues_enable;
+	rte_eth_bond_8023ad_ext_collect;
+	rte_eth_bond_8023ad_ext_collect_get;
+	rte_eth_bond_8023ad_ext_distrib;
+	rte_eth_bond_8023ad_ext_distrib_get;
+	rte_eth_bond_8023ad_ext_slowtx;
+	rte_eth_bond_8023ad_setup;
 	rte_eth_bond_8023ad_slave_info;
 	rte_eth_bond_active_slaves_get;
 	rte_eth_bond_create;
+	rte_eth_bond_free;
 	rte_eth_bond_link_monitoring_set;
 	rte_eth_bond_mac_address_reset;
 	rte_eth_bond_mac_address_set;
@@ -19,36 +31,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	rte_eth_bond_free;
-
-} DPDK_2.0;
-
-DPDK_16.04 {
-};
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_bond_8023ad_ext_collect;
-	rte_eth_bond_8023ad_ext_collect_get;
-	rte_eth_bond_8023ad_ext_distrib;
-	rte_eth_bond_8023ad_ext_distrib_get;
-	rte_eth_bond_8023ad_ext_slowtx;
-
-} DPDK_16.04;
-
-DPDK_17.08 {
-	global:
-
-	rte_eth_bond_8023ad_dedicated_queues_enable;
-	rte_eth_bond_8023ad_dedicated_queues_disable;
-	rte_eth_bond_8023ad_agg_selection_get;
-	rte_eth_bond_8023ad_agg_selection_set;
-	rte_eth_bond_8023ad_conf_get;
-	rte_eth_bond_8023ad_setup;
-
-} DPDK_16.07;
diff --git a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
+++ b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/dpaa/rte_pmd_dpaa_version.map b/drivers/net/dpaa/rte_pmd_dpaa_version.map
index 8cb4500b51..f403a1526d 100644
--- a/drivers/net/dpaa/rte_pmd_dpaa_version.map
+++ b/drivers/net/dpaa/rte_pmd_dpaa_version.map
@@ -1,12 +1,9 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	dpaa_eth_eventq_attach;
 	dpaa_eth_eventq_detach;
 	rte_pmd_dpaa_set_tx_loopback;
-} DPDK_17.11;
+
+	local: *;
+};
diff --git a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
index d1b4cdb232..f2bb793319 100644
--- a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
+++ b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
@@ -1,15 +1,11 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_eth_eventq_attach;
 	dpaa2_eth_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
@@ -17,4 +13,4 @@ EXPERIMENTAL {
 	rte_pmd_dpaa2_mux_flow_create;
 	rte_pmd_dpaa2_set_custom_hash;
 	rte_pmd_dpaa2_set_timestamp;
-} DPDK_17.11;
+};
diff --git a/drivers/net/e1000/rte_pmd_e1000_version.map b/drivers/net/e1000/rte_pmd_e1000_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/e1000/rte_pmd_e1000_version.map
+++ b/drivers/net/e1000/rte_pmd_e1000_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ena/rte_pmd_ena_version.map b/drivers/net/ena/rte_pmd_ena_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/ena/rte_pmd_ena_version.map
+++ b/drivers/net/ena/rte_pmd_ena_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enetc/rte_pmd_enetc_version.map b/drivers/net/enetc/rte_pmd_enetc_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/net/enetc/rte_pmd_enetc_version.map
+++ b/drivers/net/enetc/rte_pmd_enetc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enic/rte_pmd_enic_version.map b/drivers/net/enic/rte_pmd_enic_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/enic/rte_pmd_enic_version.map
+++ b/drivers/net/enic/rte_pmd_enic_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/failsafe/rte_pmd_failsafe_version.map b/drivers/net/failsafe/rte_pmd_failsafe_version.map
index b6d2840be4..f9f17e4f6e 100644
--- a/drivers/net/failsafe/rte_pmd_failsafe_version.map
+++ b/drivers/net/failsafe/rte_pmd_failsafe_version.map
@@ -1,4 +1,3 @@
-DPDK_17.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/fm10k/rte_pmd_fm10k_version.map b/drivers/net/fm10k/rte_pmd_fm10k_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/fm10k/rte_pmd_fm10k_version.map
+++ b/drivers/net/fm10k/rte_pmd_fm10k_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hinic/rte_pmd_hinic_version.map b/drivers/net/hinic/rte_pmd_hinic_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/hinic/rte_pmd_hinic_version.map
+++ b/drivers/net/hinic/rte_pmd_hinic_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map b/drivers/net/hns3/rte_pmd_hns3_version.map
index 35e5f2debb..f9f17e4f6e 100644
--- a/drivers/net/hns3/rte_pmd_hns3_version.map
+++ b/drivers/net/hns3/rte_pmd_hns3_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
-	 local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/i40e/rte_pmd_i40e_version.map b/drivers/net/i40e/rte_pmd_i40e_version.map
index cccd5768c2..a80e69b93e 100644
--- a/drivers/net/i40e/rte_pmd_i40e_version.map
+++ b/drivers/net/i40e/rte_pmd_i40e_version.map
@@ -1,23 +1,34 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_i40e_add_vf_mac_addr;
+	rte_pmd_i40e_flow_add_del_packet_template;
+	rte_pmd_i40e_flow_type_mapping_get;
+	rte_pmd_i40e_flow_type_mapping_reset;
+	rte_pmd_i40e_flow_type_mapping_update;
+	rte_pmd_i40e_get_ddp_info;
+	rte_pmd_i40e_get_ddp_list;
 	rte_pmd_i40e_get_vf_stats;
+	rte_pmd_i40e_inset_get;
+	rte_pmd_i40e_inset_set;
 	rte_pmd_i40e_ping_vfs;
+	rte_pmd_i40e_process_ddp_package;
 	rte_pmd_i40e_ptype_mapping_get;
 	rte_pmd_i40e_ptype_mapping_replace;
 	rte_pmd_i40e_ptype_mapping_reset;
 	rte_pmd_i40e_ptype_mapping_update;
+	rte_pmd_i40e_query_vfid_by_mac;
 	rte_pmd_i40e_reset_vf_stats;
+	rte_pmd_i40e_rss_queue_region_conf;
+	rte_pmd_i40e_set_tc_strict_prio;
 	rte_pmd_i40e_set_tx_loopback;
 	rte_pmd_i40e_set_vf_broadcast;
 	rte_pmd_i40e_set_vf_mac_addr;
 	rte_pmd_i40e_set_vf_mac_anti_spoof;
+	rte_pmd_i40e_set_vf_max_bw;
 	rte_pmd_i40e_set_vf_multicast_promisc;
+	rte_pmd_i40e_set_vf_tc_bw_alloc;
+	rte_pmd_i40e_set_vf_tc_max_bw;
 	rte_pmd_i40e_set_vf_unicast_promisc;
 	rte_pmd_i40e_set_vf_vlan_anti_spoof;
 	rte_pmd_i40e_set_vf_vlan_filter;
@@ -25,43 +36,5 @@ DPDK_17.02 {
 	rte_pmd_i40e_set_vf_vlan_stripq;
 	rte_pmd_i40e_set_vf_vlan_tag;
 
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_pmd_i40e_set_tc_strict_prio;
-	rte_pmd_i40e_set_vf_max_bw;
-	rte_pmd_i40e_set_vf_tc_bw_alloc;
-	rte_pmd_i40e_set_vf_tc_max_bw;
-	rte_pmd_i40e_process_ddp_package;
-	rte_pmd_i40e_get_ddp_list;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_i40e_get_ddp_info;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_pmd_i40e_add_vf_mac_addr;
-	rte_pmd_i40e_flow_add_del_packet_template;
-	rte_pmd_i40e_flow_type_mapping_update;
-	rte_pmd_i40e_flow_type_mapping_get;
-	rte_pmd_i40e_flow_type_mapping_reset;
-	rte_pmd_i40e_query_vfid_by_mac;
-	rte_pmd_i40e_rss_queue_region_conf;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_pmd_i40e_inset_get;
-	rte_pmd_i40e_inset_set;
-} DPDK_17.11;
\ No newline at end of file
+	local: *;
+};
diff --git a/drivers/net/iavf/rte_pmd_iavf_version.map b/drivers/net/iavf/rte_pmd_iavf_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/iavf/rte_pmd_iavf_version.map
+++ b/drivers/net/iavf/rte_pmd_iavf_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ice/rte_pmd_ice_version.map b/drivers/net/ice/rte_pmd_ice_version.map
index 7b23b609da..f9f17e4f6e 100644
--- a/drivers/net/ice/rte_pmd_ice_version.map
+++ b/drivers/net/ice/rte_pmd_ice_version.map
@@ -1,4 +1,3 @@
-DPDK_19.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ifc/rte_pmd_ifc_version.map b/drivers/net/ifc/rte_pmd_ifc_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/net/ifc/rte_pmd_ifc_version.map
+++ b/drivers/net/ifc/rte_pmd_ifc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
+++ b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
index c814f96d72..21534dbc3d 100644
--- a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
+++ b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
-	rte_pmd_ixgbe_set_all_queues_drop_en;
-	rte_pmd_ixgbe_set_tx_loopback;
-	rte_pmd_ixgbe_set_vf_mac_addr;
-	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
-	rte_pmd_ixgbe_set_vf_split_drop_en;
-	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
-	rte_pmd_ixgbe_set_vf_vlan_insert;
-	rte_pmd_ixgbe_set_vf_vlan_stripq;
-} DPDK_2.0;
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_ixgbe_bypass_event_show;
+	rte_pmd_ixgbe_bypass_event_store;
+	rte_pmd_ixgbe_bypass_init;
+	rte_pmd_ixgbe_bypass_state_set;
+	rte_pmd_ixgbe_bypass_state_show;
+	rte_pmd_ixgbe_bypass_ver_show;
+	rte_pmd_ixgbe_bypass_wd_reset;
+	rte_pmd_ixgbe_bypass_wd_timeout_show;
+	rte_pmd_ixgbe_bypass_wd_timeout_store;
 	rte_pmd_ixgbe_macsec_config_rxsc;
 	rte_pmd_ixgbe_macsec_config_txsc;
 	rte_pmd_ixgbe_macsec_disable;
 	rte_pmd_ixgbe_macsec_enable;
 	rte_pmd_ixgbe_macsec_select_rxsa;
 	rte_pmd_ixgbe_macsec_select_txsa;
+	rte_pmd_ixgbe_ping_vf;
+	rte_pmd_ixgbe_set_all_queues_drop_en;
+	rte_pmd_ixgbe_set_tc_bw_alloc;
+	rte_pmd_ixgbe_set_tx_loopback;
+	rte_pmd_ixgbe_set_vf_mac_addr;
+	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
 	rte_pmd_ixgbe_set_vf_rate_limit;
 	rte_pmd_ixgbe_set_vf_rx;
 	rte_pmd_ixgbe_set_vf_rxmode;
+	rte_pmd_ixgbe_set_vf_split_drop_en;
 	rte_pmd_ixgbe_set_vf_tx;
+	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
 	rte_pmd_ixgbe_set_vf_vlan_filter;
-} DPDK_16.11;
+	rte_pmd_ixgbe_set_vf_vlan_insert;
+	rte_pmd_ixgbe_set_vf_vlan_stripq;
 
-DPDK_17.05 {
-	global:
-
-	rte_pmd_ixgbe_ping_vf;
-	rte_pmd_ixgbe_set_tc_bw_alloc;
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_ixgbe_bypass_event_show;
-	rte_pmd_ixgbe_bypass_event_store;
-	rte_pmd_ixgbe_bypass_init;
-	rte_pmd_ixgbe_bypass_state_set;
-	rte_pmd_ixgbe_bypass_state_show;
-	rte_pmd_ixgbe_bypass_ver_show;
-	rte_pmd_ixgbe_bypass_wd_reset;
-	rte_pmd_ixgbe_bypass_wd_timeout_show;
-	rte_pmd_ixgbe_bypass_wd_timeout_store;
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/net/kni/rte_pmd_kni_version.map b/drivers/net/kni/rte_pmd_kni_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/kni/rte_pmd_kni_version.map
+++ b/drivers/net/kni/rte_pmd_kni_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/liquidio/rte_pmd_liquidio_version.map b/drivers/net/liquidio/rte_pmd_liquidio_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/liquidio/rte_pmd_liquidio_version.map
+++ b/drivers/net/liquidio/rte_pmd_liquidio_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/memif/rte_pmd_memif_version.map b/drivers/net/memif/rte_pmd_memif_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/net/memif/rte_pmd_memif_version.map
+++ b/drivers/net/memif/rte_pmd_memif_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/mlx4/rte_pmd_mlx4_version.map b/drivers/net/mlx4/rte_pmd_mlx4_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/mlx4/rte_pmd_mlx4_version.map
+++ b/drivers/net/mlx4/rte_pmd_mlx4_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mlx5/rte_pmd_mlx5_version.map b/drivers/net/mlx5/rte_pmd_mlx5_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/mlx5/rte_pmd_mlx5_version.map
+++ b/drivers/net/mlx5/rte_pmd_mlx5_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvneta/rte_pmd_mvneta_version.map b/drivers/net/mvneta/rte_pmd_mvneta_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/net/mvneta/rte_pmd_mvneta_version.map
+++ b/drivers/net/mvneta/rte_pmd_mvneta_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
+++ b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/netvsc/rte_pmd_netvsc_version.map b/drivers/net/netvsc/rte_pmd_netvsc_version.map
index d534019a6b..f9f17e4f6e 100644
--- a/drivers/net/netvsc/rte_pmd_netvsc_version.map
+++ b/drivers/net/netvsc/rte_pmd_netvsc_version.map
@@ -1,5 +1,3 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfb/rte_pmd_nfb_version.map b/drivers/net/nfb/rte_pmd_nfb_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/nfb/rte_pmd_nfb_version.map
+++ b/drivers/net/nfb/rte_pmd_nfb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfp/rte_pmd_nfp_version.map b/drivers/net/nfp/rte_pmd_nfp_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/nfp/rte_pmd_nfp_version.map
+++ b/drivers/net/nfp/rte_pmd_nfp_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/null/rte_pmd_null_version.map b/drivers/net/null/rte_pmd_null_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/null/rte_pmd_null_version.map
+++ b/drivers/net/null/rte_pmd_null_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/octeontx/rte_pmd_octeontx_version.map b/drivers/net/octeontx/rte_pmd_octeontx_version.map
index a3161b14d0..f7cae02fac 100644
--- a/drivers/net/octeontx/rte_pmd_octeontx_version.map
+++ b/drivers/net/octeontx/rte_pmd_octeontx_version.map
@@ -1,11 +1,7 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.02 {
+DPDK_20.0 {
 	global:
 
 	rte_octeontx_pchan_map;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
+++ b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/pcap/rte_pmd_pcap_version.map b/drivers/net/pcap/rte_pmd_pcap_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/pcap/rte_pmd_pcap_version.map
+++ b/drivers/net/pcap/rte_pmd_pcap_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/pfe/rte_pmd_pfe_version.map b/drivers/net/pfe/rte_pmd_pfe_version.map
index b7b7c91683..f9f17e4f6e 100644
--- a/drivers/net/pfe/rte_pmd_pfe_version.map
+++ b/drivers/net/pfe/rte_pmd_pfe_version.map
@@ -1,4 +1,3 @@
-DPDK_19.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/qede/rte_pmd_qede_version.map b/drivers/net/qede/rte_pmd_qede_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/qede/rte_pmd_qede_version.map
+++ b/drivers/net/qede/rte_pmd_qede_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ring/rte_pmd_ring_version.map b/drivers/net/ring/rte_pmd_ring_version.map
index 1f785d9409..ebb6be2733 100644
--- a/drivers/net/ring/rte_pmd_ring_version.map
+++ b/drivers/net/ring/rte_pmd_ring_version.map
@@ -1,14 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_from_ring;
 	rte_eth_from_rings;
 
 	local: *;
 };
-
-DPDK_2.2 {
-	global:
-
-	rte_eth_from_ring;
-
-} DPDK_2.0;
diff --git a/drivers/net/sfc/rte_pmd_sfc_version.map b/drivers/net/sfc/rte_pmd_sfc_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/sfc/rte_pmd_sfc_version.map
+++ b/drivers/net/sfc/rte_pmd_sfc_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/softnic/rte_pmd_softnic_version.map b/drivers/net/softnic/rte_pmd_softnic_version.map
index bc44b06f98..50f113d5a2 100644
--- a/drivers/net/softnic/rte_pmd_softnic_version.map
+++ b/drivers/net/softnic/rte_pmd_softnic_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_softnic_run;
diff --git a/drivers/net/szedata2/rte_pmd_szedata2_version.map b/drivers/net/szedata2/rte_pmd_szedata2_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/szedata2/rte_pmd_szedata2_version.map
+++ b/drivers/net/szedata2/rte_pmd_szedata2_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/tap/rte_pmd_tap_version.map b/drivers/net/tap/rte_pmd_tap_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/tap/rte_pmd_tap_version.map
+++ b/drivers/net/tap/rte_pmd_tap_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/thunderx/rte_pmd_thunderx_version.map b/drivers/net/thunderx/rte_pmd_thunderx_version.map
index 1901bcb3b3..f9f17e4f6e 100644
--- a/drivers/net/thunderx/rte_pmd_thunderx_version.map
+++ b/drivers/net/thunderx/rte_pmd_thunderx_version.map
@@ -1,4 +1,3 @@
-DPDK_16.07 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
+++ b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vhost/rte_pmd_vhost_version.map b/drivers/net/vhost/rte_pmd_vhost_version.map
index 695db85749..16b591ccc4 100644
--- a/drivers/net/vhost/rte_pmd_vhost_version.map
+++ b/drivers/net/vhost/rte_pmd_vhost_version.map
@@ -1,13 +1,8 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_vhost_get_queue_event;
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
 	rte_eth_vhost_get_vid_from_port_id;
+
+	local: *;
 };
diff --git a/drivers/net/virtio/rte_pmd_virtio_version.map b/drivers/net/virtio/rte_pmd_virtio_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/virtio/rte_pmd_virtio_version.map
+++ b/drivers/net/virtio/rte_pmd_virtio_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
+++ b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
+++ b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
index d16a136fc8..ca6a0d7626 100644
--- a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
+++ b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
@@ -1,4 +1,4 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	global:
 
 	rte_qdma_attr_get;
@@ -9,9 +9,9 @@ DPDK_19.05 {
 	rte_qdma_start;
 	rte_qdma_stop;
 	rte_qdma_vq_create;
-	rte_qdma_vq_destroy;
 	rte_qdma_vq_dequeue;
 	rte_qdma_vq_dequeue_multi;
+	rte_qdma_vq_destroy;
 	rte_qdma_vq_enqueue;
 	rte_qdma_vq_enqueue_multi;
 	rte_qdma_vq_stats;
diff --git a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
+++ b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ioat/rte_rawdev_ioat_version.map b/drivers/raw/ioat/rte_rawdev_ioat_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/ioat/rte_rawdev_ioat_version.map
+++ b/drivers/raw/ioat/rte_rawdev_ioat_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ntb/rte_rawdev_ntb_version.map b/drivers/raw/ntb/rte_rawdev_ntb_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/raw/ntb/rte_rawdev_ntb_version.map
+++ b/drivers/raw/ntb/rte_rawdev_ntb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
+++ b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
+++ b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/lib/librte_acl/rte_acl_version.map b/lib/librte_acl/rte_acl_version.map
index b09370a104..c3daca8115 100644
--- a/lib/librte_acl/rte_acl_version.map
+++ b/lib/librte_acl/rte_acl_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_acl_add_rules;
diff --git a/lib/librte_bitratestats/rte_bitratestats_version.map b/lib/librte_bitratestats/rte_bitratestats_version.map
index fe7454452d..88fc2912db 100644
--- a/lib/librte_bitratestats/rte_bitratestats_version.map
+++ b/lib/librte_bitratestats/rte_bitratestats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_stats_bitrate_calc;
diff --git a/lib/librte_cfgfile/rte_cfgfile_version.map b/lib/librte_cfgfile/rte_cfgfile_version.map
index a0a11cea8d..906eee96bf 100644
--- a/lib/librte_cfgfile/rte_cfgfile_version.map
+++ b/lib/librte_cfgfile/rte_cfgfile_version.map
@@ -1,40 +1,22 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_cfgfile_add_entry;
+	rte_cfgfile_add_section;
 	rte_cfgfile_close;
+	rte_cfgfile_create;
 	rte_cfgfile_get_entry;
 	rte_cfgfile_has_entry;
 	rte_cfgfile_has_section;
 	rte_cfgfile_load;
+	rte_cfgfile_load_with_params;
 	rte_cfgfile_num_sections;
+	rte_cfgfile_save;
 	rte_cfgfile_section_entries;
+	rte_cfgfile_section_entries_by_index;
 	rte_cfgfile_section_num_entries;
 	rte_cfgfile_sections;
+	rte_cfgfile_set_entry;
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_cfgfile_section_entries_by_index;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_cfgfile_load_with_params;
-
-} DPDK_16.04;
-
-DPDK_17.11 {
-	global:
-
-	rte_cfgfile_add_entry;
-	rte_cfgfile_add_section;
-	rte_cfgfile_create;
-	rte_cfgfile_save;
-	rte_cfgfile_set_entry;
-
-} DPDK_17.05;
diff --git a/lib/librte_cmdline/rte_cmdline_version.map b/lib/librte_cmdline/rte_cmdline_version.map
index 04bcb387f2..95fce812ff 100644
--- a/lib/librte_cmdline/rte_cmdline_version.map
+++ b/lib/librte_cmdline/rte_cmdline_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	cirbuf_add_buf_head;
@@ -40,6 +40,7 @@ DPDK_2.0 {
 	cmdline_parse_num;
 	cmdline_parse_portlist;
 	cmdline_parse_string;
+	cmdline_poll;
 	cmdline_printf;
 	cmdline_quit;
 	cmdline_set_prompt;
@@ -68,10 +69,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	cmdline_poll;
-
-} DPDK_2.0;
diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map
index 3deb265ac2..1dd1e259a0 100644
--- a/lib/librte_cryptodev/rte_cryptodev_version.map
+++ b/lib/librte_cryptodev/rte_cryptodev_version.map
@@ -1,92 +1,62 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
-	rte_cryptodevs;
+	rte_crypto_aead_algorithm_strings;
+	rte_crypto_aead_operation_strings;
+	rte_crypto_auth_algorithm_strings;
+	rte_crypto_auth_operation_strings;
+	rte_crypto_cipher_algorithm_strings;
+	rte_crypto_cipher_operation_strings;
+	rte_crypto_op_pool_create;
+	rte_cryptodev_allocate_driver;
 	rte_cryptodev_callback_register;
 	rte_cryptodev_callback_unregister;
 	rte_cryptodev_close;
-	rte_cryptodev_count;
 	rte_cryptodev_configure;
+	rte_cryptodev_count;
+	rte_cryptodev_device_count_by_driver;
+	rte_cryptodev_devices_get;
+	rte_cryptodev_driver_id_get;
+	rte_cryptodev_driver_name_get;
+	rte_cryptodev_get_aead_algo_enum;
+	rte_cryptodev_get_auth_algo_enum;
+	rte_cryptodev_get_cipher_algo_enum;
 	rte_cryptodev_get_dev_id;
 	rte_cryptodev_get_feature_name;
+	rte_cryptodev_get_sec_ctx;
 	rte_cryptodev_info_get;
+	rte_cryptodev_name_get;
 	rte_cryptodev_pmd_allocate;
 	rte_cryptodev_pmd_callback_process;
+	rte_cryptodev_pmd_create;
+	rte_cryptodev_pmd_create_dev_name;
+	rte_cryptodev_pmd_destroy;
+	rte_cryptodev_pmd_get_dev;
+	rte_cryptodev_pmd_get_named_dev;
+	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_pmd_parse_input_args;
 	rte_cryptodev_pmd_release_device;
-	rte_cryptodev_sym_session_create;
-	rte_cryptodev_sym_session_free;
+	rte_cryptodev_queue_pair_count;
+	rte_cryptodev_queue_pair_setup;
 	rte_cryptodev_socket_id;
 	rte_cryptodev_start;
 	rte_cryptodev_stats_get;
 	rte_cryptodev_stats_reset;
 	rte_cryptodev_stop;
-	rte_cryptodev_queue_pair_count;
-	rte_cryptodev_queue_pair_setup;
-	rte_crypto_op_pool_create;
-
-	local: *;
-};
-
-DPDK_17.02 {
-	global:
-
-	rte_cryptodev_devices_get;
-	rte_cryptodev_pmd_create_dev_name;
-	rte_cryptodev_pmd_get_dev;
-	rte_cryptodev_pmd_get_named_dev;
-	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_sym_capability_check_aead;
 	rte_cryptodev_sym_capability_check_auth;
 	rte_cryptodev_sym_capability_check_cipher;
 	rte_cryptodev_sym_capability_get;
-	rte_crypto_auth_algorithm_strings;
-	rte_crypto_auth_operation_strings;
-	rte_crypto_cipher_algorithm_strings;
-	rte_crypto_cipher_operation_strings;
-
-} DPDK_16.04;
-
-DPDK_17.05 {
-	global:
-
-	rte_cryptodev_get_auth_algo_enum;
-	rte_cryptodev_get_cipher_algo_enum;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_cryptodev_allocate_driver;
-	rte_cryptodev_device_count_by_driver;
-	rte_cryptodev_driver_id_get;
-	rte_cryptodev_driver_name_get;
-	rte_cryptodev_get_aead_algo_enum;
-	rte_cryptodev_sym_capability_check_aead;
-	rte_cryptodev_sym_session_init;
-	rte_cryptodev_sym_session_clear;
-	rte_crypto_aead_algorithm_strings;
-	rte_crypto_aead_operation_strings;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_cryptodev_get_sec_ctx;
-	rte_cryptodev_name_get;
-	rte_cryptodev_pmd_create;
-	rte_cryptodev_pmd_destroy;
-	rte_cryptodev_pmd_parse_input_args;
-
-} DPDK_17.08;
-
-DPDK_18.05 {
-	global:
-
 	rte_cryptodev_sym_get_header_session_size;
 	rte_cryptodev_sym_get_private_session_size;
+	rte_cryptodev_sym_session_clear;
+	rte_cryptodev_sym_session_create;
+	rte_cryptodev_sym_session_free;
+	rte_cryptodev_sym_session_init;
+	rte_cryptodevs;
 
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 00e26b4804..1b7c643005 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_distributor_clear_returns;
@@ -10,4 +10,6 @@ DPDK_17.05 {
 	rte_distributor_request_pkt;
 	rte_distributor_return_pkt;
 	rte_distributor_returned_pkts;
+
+	local: *;
 };
diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map
index 3478d3b852..8cfe6ca07e 100644
--- a/lib/librte_eal/rte_eal_version.map
+++ b/lib/librte_eal/rte_eal_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	__rte_panic;
@@ -6,44 +6,113 @@ DPDK_2.0 {
 	eal_timer_source;
 	per_lcore__lcore_id;
 	per_lcore__rte_errno;
+	rte_bus_dump;
+	rte_bus_find;
+	rte_bus_find_by_device;
+	rte_bus_find_by_name;
+	rte_bus_get_iommu_class;
+	rte_bus_probe;
+	rte_bus_register;
+	rte_bus_scan;
+	rte_bus_unregister;
 	rte_calloc;
 	rte_calloc_socket;
 	rte_cpu_get_flag_enabled;
+	rte_cpu_get_flag_name;
+	rte_cpu_is_supported;
+	rte_ctrl_thread_create;
 	rte_cycles_vmware_tsc_map;
 	rte_delay_us;
+	rte_delay_us_block;
+	rte_delay_us_callback_register;
+	rte_dev_is_probed;
+	rte_dev_probe;
+	rte_dev_remove;
+	rte_devargs_add;
+	rte_devargs_dump;
+	rte_devargs_insert;
+	rte_devargs_next;
+	rte_devargs_parse;
+	rte_devargs_parsef;
+	rte_devargs_remove;
+	rte_devargs_type_count;
 	rte_dump_physmem_layout;
 	rte_dump_registers;
 	rte_dump_stack;
 	rte_dump_tailq;
 	rte_eal_alarm_cancel;
 	rte_eal_alarm_set;
+	rte_eal_cleanup;
+	rte_eal_create_uio_dev;
 	rte_eal_get_lcore_state;
 	rte_eal_get_physmem_size;
+	rte_eal_get_runtime_dir;
 	rte_eal_has_hugepages;
+	rte_eal_has_pci;
+	rte_eal_hotplug_add;
+	rte_eal_hotplug_remove;
 	rte_eal_hpet_init;
 	rte_eal_init;
 	rte_eal_iopl_init;
+	rte_eal_iova_mode;
 	rte_eal_lcore_role;
+	rte_eal_mbuf_user_pool_ops;
 	rte_eal_mp_remote_launch;
 	rte_eal_mp_wait_lcore;
+	rte_eal_primary_proc_alive;
 	rte_eal_process_type;
 	rte_eal_remote_launch;
 	rte_eal_tailq_lookup;
 	rte_eal_tailq_register;
+	rte_eal_using_phys_addrs;
+	rte_eal_vfio_intr_mode;
 	rte_eal_wait_lcore;
+	rte_epoll_ctl;
+	rte_epoll_wait;
 	rte_exit;
 	rte_free;
 	rte_get_hpet_cycles;
 	rte_get_hpet_hz;
+	rte_get_master_lcore;
+	rte_get_next_lcore;
 	rte_get_tsc_hz;
 	rte_hexdump;
+	rte_hypervisor_get;
+	rte_hypervisor_get_name;
+	rte_intr_allow_others;
 	rte_intr_callback_register;
 	rte_intr_callback_unregister;
+	rte_intr_cap_multiple;
 	rte_intr_disable;
+	rte_intr_dp_is_en;
+	rte_intr_efd_disable;
+	rte_intr_efd_enable;
 	rte_intr_enable;
+	rte_intr_free_epoll_fd;
+	rte_intr_rx_ctl;
+	rte_intr_tls_epfd;
+	rte_keepalive_create;
+	rte_keepalive_dispatch_pings;
+	rte_keepalive_mark_alive;
+	rte_keepalive_mark_sleep;
+	rte_keepalive_register_core;
+	rte_keepalive_register_relay_callback;
+	rte_lcore_count;
+	rte_lcore_has_role;
+	rte_lcore_index;
+	rte_lcore_is_enabled;
+	rte_lcore_to_socket_id;
 	rte_log;
 	rte_log_cur_msg_loglevel;
 	rte_log_cur_msg_logtype;
+	rte_log_dump;
+	rte_log_get_global_level;
+	rte_log_get_level;
+	rte_log_register;
+	rte_log_set_global_level;
+	rte_log_set_level;
+	rte_log_set_level_pattern;
+	rte_log_set_level_regexp;
 	rte_logs;
 	rte_malloc;
 	rte_malloc_dump_stats;
@@ -51,155 +120,38 @@ DPDK_2.0 {
 	rte_malloc_set_limit;
 	rte_malloc_socket;
 	rte_malloc_validate;
+	rte_malloc_virt2iova;
+	rte_mcfg_mem_read_lock;
+	rte_mcfg_mem_read_unlock;
+	rte_mcfg_mem_write_lock;
+	rte_mcfg_mem_write_unlock;
+	rte_mcfg_mempool_read_lock;
+	rte_mcfg_mempool_read_unlock;
+	rte_mcfg_mempool_write_lock;
+	rte_mcfg_mempool_write_unlock;
+	rte_mcfg_tailq_read_lock;
+	rte_mcfg_tailq_read_unlock;
+	rte_mcfg_tailq_write_lock;
+	rte_mcfg_tailq_write_unlock;
 	rte_mem_lock_page;
+	rte_mem_virt2iova;
 	rte_mem_virt2phy;
 	rte_memdump;
 	rte_memory_get_nchannel;
 	rte_memory_get_nrank;
 	rte_memzone_dump;
+	rte_memzone_free;
 	rte_memzone_lookup;
 	rte_memzone_reserve;
 	rte_memzone_reserve_aligned;
 	rte_memzone_reserve_bounded;
 	rte_memzone_walk;
 	rte_openlog_stream;
+	rte_rand;
 	rte_realloc;
-	rte_set_application_usage_hook;
-	rte_socket_id;
-	rte_strerror;
-	rte_strsplit;
-	rte_sys_gettid;
-	rte_thread_get_affinity;
-	rte_thread_set_affinity;
-	rte_vlog;
-	rte_zmalloc;
-	rte_zmalloc_socket;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_epoll_ctl;
-	rte_epoll_wait;
-	rte_intr_allow_others;
-	rte_intr_dp_is_en;
-	rte_intr_efd_disable;
-	rte_intr_efd_enable;
-	rte_intr_rx_ctl;
-	rte_intr_tls_epfd;
-	rte_memzone_free;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_intr_cap_multiple;
-	rte_keepalive_create;
-	rte_keepalive_dispatch_pings;
-	rte_keepalive_mark_alive;
-	rte_keepalive_register_core;
-
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_cpu_get_flag_name;
-	rte_eal_primary_proc_alive;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_keepalive_mark_sleep;
-	rte_keepalive_register_relay_callback;
-	rte_rtm_supported;
-	rte_thread_setname;
-
-} DPDK_16.04;
-
-DPDK_16.11 {
-	global:
-
-	rte_delay_us_block;
-	rte_delay_us_callback_register;
-
-} DPDK_16.07;
-
-DPDK_17.02 {
-	global:
-
-	rte_bus_dump;
-	rte_bus_probe;
-	rte_bus_register;
-	rte_bus_scan;
-	rte_bus_unregister;
-
-} DPDK_16.11;
-
-DPDK_17.05 {
-	global:
-
-	rte_cpu_is_supported;
-	rte_intr_free_epoll_fd;
-	rte_log_dump;
-	rte_log_get_global_level;
-	rte_log_register;
-	rte_log_set_global_level;
-	rte_log_set_level;
-	rte_log_set_level_regexp;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_bus_find;
-	rte_bus_find_by_device;
-	rte_bus_find_by_name;
-	rte_log_get_level;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eal_create_uio_dev;
-	rte_bus_get_iommu_class;
-	rte_eal_has_pci;
-	rte_eal_iova_mode;
-	rte_eal_using_phys_addrs;
-	rte_eal_vfio_intr_mode;
-	rte_lcore_has_role;
-	rte_malloc_virt2iova;
-	rte_mem_virt2iova;
-	rte_vfio_enable;
-	rte_vfio_is_enabled;
-	rte_vfio_noiommu_is_enabled;
-	rte_vfio_release_device;
-	rte_vfio_setup_device;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_hypervisor_get;
-	rte_hypervisor_get_name;
-	rte_vfio_clear_group;
 	rte_reciprocal_value;
 	rte_reciprocal_value_u64;
-
-}  DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_log_set_level_pattern;
+	rte_rtm_supported;
 	rte_service_attr_get;
 	rte_service_attr_reset_all;
 	rte_service_component_register;
@@ -212,6 +164,8 @@ DPDK_18.05 {
 	rte_service_get_count;
 	rte_service_get_name;
 	rte_service_lcore_add;
+	rte_service_lcore_attr_get;
+	rte_service_lcore_attr_reset_all;
 	rte_service_lcore_count;
 	rte_service_lcore_count_services;
 	rte_service_lcore_del;
@@ -221,6 +175,7 @@ DPDK_18.05 {
 	rte_service_lcore_stop;
 	rte_service_map_lcore_get;
 	rte_service_map_lcore_set;
+	rte_service_may_be_active;
 	rte_service_probe_capability;
 	rte_service_run_iter_on_app_lcore;
 	rte_service_runstate_get;
@@ -228,17 +183,23 @@ DPDK_18.05 {
 	rte_service_set_runstate_mapped_check;
 	rte_service_set_stats_enable;
 	rte_service_start_with_defaults;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eal_mbuf_user_pool_ops;
+	rte_set_application_usage_hook;
+	rte_socket_count;
+	rte_socket_id;
+	rte_socket_id_by_idx;
+	rte_srand;
+	rte_strerror;
+	rte_strscpy;
+	rte_strsplit;
+	rte_sys_gettid;
+	rte_thread_get_affinity;
+	rte_thread_set_affinity;
+	rte_thread_setname;
 	rte_uuid_compare;
 	rte_uuid_is_null;
 	rte_uuid_parse;
 	rte_uuid_unparse;
+	rte_vfio_clear_group;
 	rte_vfio_container_create;
 	rte_vfio_container_destroy;
 	rte_vfio_container_dma_map;
@@ -247,77 +208,20 @@ DPDK_18.08 {
 	rte_vfio_container_group_unbind;
 	rte_vfio_dma_map;
 	rte_vfio_dma_unmap;
+	rte_vfio_enable;
 	rte_vfio_get_container_fd;
 	rte_vfio_get_group_fd;
 	rte_vfio_get_group_num;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_dev_probe;
-	rte_dev_remove;
-	rte_eal_get_runtime_dir;
-	rte_eal_hotplug_add;
-	rte_eal_hotplug_remove;
-	rte_strscpy;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_ctrl_thread_create;
-	rte_dev_is_probed;
-	rte_devargs_add;
-	rte_devargs_dump;
-	rte_devargs_insert;
-	rte_devargs_next;
-	rte_devargs_parse;
-	rte_devargs_parsef;
-	rte_devargs_remove;
-	rte_devargs_type_count;
-	rte_eal_cleanup;
-	rte_socket_count;
-	rte_socket_id_by_idx;
-
-} DPDK_18.11;
-
-DPDK_19.08 {
-	global:
-
-	rte_lcore_index;
-	rte_lcore_to_socket_id;
-	rte_mcfg_mem_read_lock;
-	rte_mcfg_mem_read_unlock;
-	rte_mcfg_mem_write_lock;
-	rte_mcfg_mem_write_unlock;
-	rte_mcfg_mempool_read_lock;
-	rte_mcfg_mempool_read_unlock;
-	rte_mcfg_mempool_write_lock;
-	rte_mcfg_mempool_write_unlock;
-	rte_mcfg_tailq_read_lock;
-	rte_mcfg_tailq_read_unlock;
-	rte_mcfg_tailq_write_lock;
-	rte_mcfg_tailq_write_unlock;
-	rte_rand;
-	rte_service_lcore_attr_get;
-	rte_service_lcore_attr_reset_all;
-	rte_service_may_be_active;
-	rte_srand;
-
-} DPDK_19.05;
-
-DPDK_19.11 {
-	global:
-
-	rte_get_master_lcore;
-	rte_get_next_lcore;
-	rte_lcore_count;
-	rte_lcore_is_enabled;
-
-} DPDK_19.08;
+	rte_vfio_is_enabled;
+	rte_vfio_noiommu_is_enabled;
+	rte_vfio_release_device;
+	rte_vfio_setup_device;
+	rte_vlog;
+	rte_zmalloc;
+	rte_zmalloc_socket;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_efd/rte_efd_version.map b/lib/librte_efd/rte_efd_version.map
index ae60a64178..e010eecfe4 100644
--- a/lib/librte_efd/rte_efd_version.map
+++ b/lib/librte_efd/rte_efd_version.map
@@ -1,4 +1,4 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_efd_create;
diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map
index e59d51648f..28819c1bb7 100644
--- a/lib/librte_ethdev/rte_ethdev_version.map
+++ b/lib/librte_ethdev/rte_ethdev_version.map
@@ -1,35 +1,53 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	global:
 
+	_rte_eth_dev_callback_process;
+	_rte_eth_dev_reset;
+	rte_eth_add_first_rx_callback;
 	rte_eth_add_rx_callback;
 	rte_eth_add_tx_callback;
 	rte_eth_allmulticast_disable;
 	rte_eth_allmulticast_enable;
 	rte_eth_allmulticast_get;
+	rte_eth_dev_adjust_nb_rx_tx_desc;
 	rte_eth_dev_allocate;
 	rte_eth_dev_allocated;
+	rte_eth_dev_attach_secondary;
 	rte_eth_dev_callback_register;
 	rte_eth_dev_callback_unregister;
 	rte_eth_dev_close;
 	rte_eth_dev_configure;
 	rte_eth_dev_count;
+	rte_eth_dev_count_avail;
+	rte_eth_dev_count_total;
 	rte_eth_dev_default_mac_addr_set;
+	rte_eth_dev_filter_ctrl;
 	rte_eth_dev_filter_supported;
 	rte_eth_dev_flow_ctrl_get;
 	rte_eth_dev_flow_ctrl_set;
+	rte_eth_dev_fw_version_get;
 	rte_eth_dev_get_dcb_info;
 	rte_eth_dev_get_eeprom;
 	rte_eth_dev_get_eeprom_length;
 	rte_eth_dev_get_mtu;
+	rte_eth_dev_get_name_by_port;
+	rte_eth_dev_get_port_by_name;
 	rte_eth_dev_get_reg_info;
+	rte_eth_dev_get_sec_ctx;
+	rte_eth_dev_get_supported_ptypes;
 	rte_eth_dev_get_vlan_offload;
-	rte_eth_devices;
 	rte_eth_dev_info_get;
 	rte_eth_dev_is_valid_port;
+	rte_eth_dev_l2_tunnel_eth_type_conf;
+	rte_eth_dev_l2_tunnel_offload_set;
+	rte_eth_dev_logtype;
 	rte_eth_dev_mac_addr_add;
 	rte_eth_dev_mac_addr_remove;
+	rte_eth_dev_pool_ops_supported;
 	rte_eth_dev_priority_flow_ctrl_set;
+	rte_eth_dev_probing_finish;
 	rte_eth_dev_release_port;
+	rte_eth_dev_reset;
 	rte_eth_dev_rss_hash_conf_get;
 	rte_eth_dev_rss_hash_update;
 	rte_eth_dev_rss_reta_query;
@@ -38,6 +56,7 @@ DPDK_2.2 {
 	rte_eth_dev_rx_intr_ctl_q;
 	rte_eth_dev_rx_intr_disable;
 	rte_eth_dev_rx_intr_enable;
+	rte_eth_dev_rx_offload_name;
 	rte_eth_dev_rx_queue_start;
 	rte_eth_dev_rx_queue_stop;
 	rte_eth_dev_set_eeprom;
@@ -47,18 +66,28 @@ DPDK_2.2 {
 	rte_eth_dev_set_mtu;
 	rte_eth_dev_set_rx_queue_stats_mapping;
 	rte_eth_dev_set_tx_queue_stats_mapping;
+	rte_eth_dev_set_vlan_ether_type;
 	rte_eth_dev_set_vlan_offload;
 	rte_eth_dev_set_vlan_pvid;
 	rte_eth_dev_set_vlan_strip_on_queue;
 	rte_eth_dev_socket_id;
 	rte_eth_dev_start;
 	rte_eth_dev_stop;
+	rte_eth_dev_tx_offload_name;
 	rte_eth_dev_tx_queue_start;
 	rte_eth_dev_tx_queue_stop;
 	rte_eth_dev_uc_all_hash_table_set;
 	rte_eth_dev_uc_hash_table_set;
+	rte_eth_dev_udp_tunnel_port_add;
+	rte_eth_dev_udp_tunnel_port_delete;
 	rte_eth_dev_vlan_filter;
+	rte_eth_devices;
 	rte_eth_dma_zone_reserve;
+	rte_eth_find_next;
+	rte_eth_find_next_owned_by;
+	rte_eth_iterator_cleanup;
+	rte_eth_iterator_init;
+	rte_eth_iterator_next;
 	rte_eth_led_off;
 	rte_eth_led_on;
 	rte_eth_link;
@@ -75,6 +104,7 @@ DPDK_2.2 {
 	rte_eth_rx_queue_info_get;
 	rte_eth_rx_queue_setup;
 	rte_eth_set_queue_rate_limit;
+	rte_eth_speed_bitflag;
 	rte_eth_stats;
 	rte_eth_stats_get;
 	rte_eth_stats_reset;
@@ -85,66 +115,27 @@ DPDK_2.2 {
 	rte_eth_timesync_read_time;
 	rte_eth_timesync_read_tx_timestamp;
 	rte_eth_timesync_write_time;
-	rte_eth_tx_queue_info_get;
-	rte_eth_tx_queue_setup;
-	rte_eth_xstats_get;
-	rte_eth_xstats_reset;
-
-	local: *;
-};
-
-DPDK_16.04 {
-	global:
-
-	rte_eth_dev_get_supported_ptypes;
-	rte_eth_dev_l2_tunnel_eth_type_conf;
-	rte_eth_dev_l2_tunnel_offload_set;
-	rte_eth_dev_set_vlan_ether_type;
-	rte_eth_dev_udp_tunnel_port_add;
-	rte_eth_dev_udp_tunnel_port_delete;
-	rte_eth_speed_bitflag;
 	rte_eth_tx_buffer_count_callback;
 	rte_eth_tx_buffer_drop_callback;
 	rte_eth_tx_buffer_init;
 	rte_eth_tx_buffer_set_err_callback;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_add_first_rx_callback;
-	rte_eth_dev_get_name_by_port;
-	rte_eth_dev_get_port_by_name;
-	rte_eth_xstats_get_names;
-
-} DPDK_16.04;
-
-DPDK_17.02 {
-	global:
-
-	_rte_eth_dev_reset;
-	rte_eth_dev_fw_version_get;
-
-} DPDK_16.07;
-
-DPDK_17.05 {
-	global:
-
-	rte_eth_dev_attach_secondary;
-	rte_eth_find_next;
 	rte_eth_tx_done_cleanup;
+	rte_eth_tx_queue_info_get;
+	rte_eth_tx_queue_setup;
+	rte_eth_xstats_get;
 	rte_eth_xstats_get_by_id;
 	rte_eth_xstats_get_id_by_name;
+	rte_eth_xstats_get_names;
 	rte_eth_xstats_get_names_by_id;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	_rte_eth_dev_callback_process;
-	rte_eth_dev_adjust_nb_rx_tx_desc;
+	rte_eth_xstats_reset;
+	rte_flow_copy;
+	rte_flow_create;
+	rte_flow_destroy;
+	rte_flow_error_set;
+	rte_flow_flush;
+	rte_flow_isolate;
+	rte_flow_query;
+	rte_flow_validate;
 	rte_tm_capabilities_get;
 	rte_tm_get_number_of_leaf_nodes;
 	rte_tm_hierarchy_commit;
@@ -176,65 +167,8 @@ DPDK_17.08 {
 	rte_tm_wred_profile_add;
 	rte_tm_wred_profile_delete;
 
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eth_dev_get_sec_ctx;
-	rte_eth_dev_pool_ops_supported;
-	rte_eth_dev_reset;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_eth_dev_filter_ctrl;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_eth_dev_count_avail;
-	rte_eth_dev_probing_finish;
-	rte_eth_find_next_owned_by;
-	rte_flow_copy;
-	rte_flow_create;
-	rte_flow_destroy;
-	rte_flow_error_set;
-	rte_flow_flush;
-	rte_flow_isolate;
-	rte_flow_query;
-	rte_flow_validate;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eth_dev_logtype;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_eth_dev_rx_offload_name;
-	rte_eth_dev_tx_offload_name;
-	rte_eth_iterator_cleanup;
-	rte_eth_iterator_init;
-	rte_eth_iterator_next;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_eth_dev_count_total;
-
-} DPDK_18.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_eventdev/rte_eventdev_version.map b/lib/librte_eventdev/rte_eventdev_version.map
index 76b3021d3a..edfc15282d 100644
--- a/lib/librte_eventdev/rte_eventdev_version.map
+++ b/lib/librte_eventdev/rte_eventdev_version.map
@@ -1,61 +1,38 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
-	rte_eventdevs;
-
+	rte_event_crypto_adapter_caps_get;
+	rte_event_crypto_adapter_create;
+	rte_event_crypto_adapter_create_ext;
+	rte_event_crypto_adapter_event_port_get;
+	rte_event_crypto_adapter_free;
+	rte_event_crypto_adapter_queue_pair_add;
+	rte_event_crypto_adapter_queue_pair_del;
+	rte_event_crypto_adapter_service_id_get;
+	rte_event_crypto_adapter_start;
+	rte_event_crypto_adapter_stats_get;
+	rte_event_crypto_adapter_stats_reset;
+	rte_event_crypto_adapter_stop;
+	rte_event_dequeue_timeout_ticks;
+	rte_event_dev_attr_get;
+	rte_event_dev_close;
+	rte_event_dev_configure;
 	rte_event_dev_count;
+	rte_event_dev_dump;
 	rte_event_dev_get_dev_id;
-	rte_event_dev_socket_id;
 	rte_event_dev_info_get;
-	rte_event_dev_configure;
+	rte_event_dev_selftest;
+	rte_event_dev_service_id_get;
+	rte_event_dev_socket_id;
 	rte_event_dev_start;
 	rte_event_dev_stop;
-	rte_event_dev_close;
-	rte_event_dev_dump;
+	rte_event_dev_stop_flush_callback_register;
 	rte_event_dev_xstats_by_name_get;
 	rte_event_dev_xstats_get;
 	rte_event_dev_xstats_names_get;
 	rte_event_dev_xstats_reset;
-
-	rte_event_port_default_conf_get;
-	rte_event_port_setup;
-	rte_event_port_link;
-	rte_event_port_unlink;
-	rte_event_port_links_get;
-
-	rte_event_queue_default_conf_get;
-	rte_event_queue_setup;
-
-	rte_event_dequeue_timeout_ticks;
-
-	rte_event_pmd_allocate;
-	rte_event_pmd_release;
-	rte_event_pmd_vdev_init;
-	rte_event_pmd_vdev_uninit;
-	rte_event_pmd_pci_probe;
-	rte_event_pmd_pci_remove;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	rte_event_ring_create;
-	rte_event_ring_free;
-	rte_event_ring_init;
-	rte_event_ring_lookup;
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_event_dev_attr_get;
-	rte_event_dev_service_id_get;
-	rte_event_port_attr_get;
-	rte_event_queue_attr_get;
-
 	rte_event_eth_rx_adapter_caps_get;
+	rte_event_eth_rx_adapter_cb_register;
 	rte_event_eth_rx_adapter_create;
 	rte_event_eth_rx_adapter_create_ext;
 	rte_event_eth_rx_adapter_free;
@@ -63,38 +40,9 @@ DPDK_17.11 {
 	rte_event_eth_rx_adapter_queue_del;
 	rte_event_eth_rx_adapter_service_id_get;
 	rte_event_eth_rx_adapter_start;
+	rte_event_eth_rx_adapter_stats_get;
 	rte_event_eth_rx_adapter_stats_reset;
 	rte_event_eth_rx_adapter_stop;
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_event_dev_selftest;
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_event_dev_stop_flush_callback_register;
-} DPDK_18.02;
-
-DPDK_19.05 {
-	global:
-
-	rte_event_crypto_adapter_caps_get;
-	rte_event_crypto_adapter_create;
-	rte_event_crypto_adapter_create_ext;
-	rte_event_crypto_adapter_event_port_get;
-	rte_event_crypto_adapter_free;
-	rte_event_crypto_adapter_queue_pair_add;
-	rte_event_crypto_adapter_queue_pair_del;
-	rte_event_crypto_adapter_service_id_get;
-	rte_event_crypto_adapter_start;
-	rte_event_crypto_adapter_stats_get;
-	rte_event_crypto_adapter_stats_reset;
-	rte_event_crypto_adapter_stop;
-	rte_event_port_unlinks_in_progress;
 	rte_event_eth_tx_adapter_caps_get;
 	rte_event_eth_tx_adapter_create;
 	rte_event_eth_tx_adapter_create_ext;
@@ -107,6 +55,26 @@ DPDK_19.05 {
 	rte_event_eth_tx_adapter_stats_get;
 	rte_event_eth_tx_adapter_stats_reset;
 	rte_event_eth_tx_adapter_stop;
+	rte_event_pmd_allocate;
+	rte_event_pmd_pci_probe;
+	rte_event_pmd_pci_remove;
+	rte_event_pmd_release;
+	rte_event_pmd_vdev_init;
+	rte_event_pmd_vdev_uninit;
+	rte_event_port_attr_get;
+	rte_event_port_default_conf_get;
+	rte_event_port_link;
+	rte_event_port_links_get;
+	rte_event_port_setup;
+	rte_event_port_unlink;
+	rte_event_port_unlinks_in_progress;
+	rte_event_queue_attr_get;
+	rte_event_queue_default_conf_get;
+	rte_event_queue_setup;
+	rte_event_ring_create;
+	rte_event_ring_free;
+	rte_event_ring_init;
+	rte_event_ring_lookup;
 	rte_event_timer_adapter_caps_get;
 	rte_event_timer_adapter_create;
 	rte_event_timer_adapter_create_ext;
@@ -121,11 +89,7 @@ DPDK_19.05 {
 	rte_event_timer_arm_burst;
 	rte_event_timer_arm_tmo_tick_burst;
 	rte_event_timer_cancel_burst;
-} DPDK_18.05;
+	rte_eventdevs;
 
-DPDK_19.08 {
-	global:
-
-	rte_event_eth_rx_adapter_cb_register;
-	rte_event_eth_rx_adapter_stats_get;
-} DPDK_19.05;
+	local: *;
+};
diff --git a/lib/librte_gro/rte_gro_version.map b/lib/librte_gro/rte_gro_version.map
index 1606b6dc72..9f6fe79e57 100644
--- a/lib/librte_gro/rte_gro_version.map
+++ b/lib/librte_gro/rte_gro_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_gro_ctx_create;
diff --git a/lib/librte_gso/rte_gso_version.map b/lib/librte_gso/rte_gso_version.map
index e1fd453edb..8505a59c27 100644
--- a/lib/librte_gso/rte_gso_version.map
+++ b/lib/librte_gso/rte_gso_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_gso_segment;
diff --git a/lib/librte_hash/rte_hash_version.map b/lib/librte_hash/rte_hash_version.map
index 734ae28b04..138c130c1b 100644
--- a/lib/librte_hash/rte_hash_version.map
+++ b/lib/librte_hash/rte_hash_version.map
@@ -1,58 +1,33 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_fbk_hash_create;
 	rte_fbk_hash_find_existing;
 	rte_fbk_hash_free;
 	rte_hash_add_key;
+	rte_hash_add_key_data;
 	rte_hash_add_key_with_hash;
+	rte_hash_add_key_with_hash_data;
+	rte_hash_count;
 	rte_hash_create;
 	rte_hash_del_key;
 	rte_hash_del_key_with_hash;
 	rte_hash_find_existing;
 	rte_hash_free;
+	rte_hash_get_key_with_position;
 	rte_hash_hash;
+	rte_hash_iterate;
 	rte_hash_lookup;
 	rte_hash_lookup_bulk;
-	rte_hash_lookup_with_hash;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_hash_add_key_data;
-	rte_hash_add_key_with_hash_data;
-	rte_hash_iterate;
 	rte_hash_lookup_bulk_data;
 	rte_hash_lookup_data;
+	rte_hash_lookup_with_hash;
 	rte_hash_lookup_with_hash_data;
 	rte_hash_reset;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_hash_set_cmp_func;
 
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_hash_get_key_with_position;
-
-} DPDK_2.2;
-
-
-DPDK_18.08 {
-	global:
-
-	rte_hash_count;
-
-} DPDK_16.07;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_ip_frag/rte_ip_frag_version.map b/lib/librte_ip_frag/rte_ip_frag_version.map
index a193007c61..5dd34f828c 100644
--- a/lib/librte_ip_frag/rte_ip_frag_version.map
+++ b/lib/librte_ip_frag/rte_ip_frag_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
 	rte_ipv4_fragment_packet;
@@ -12,13 +13,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_17.08 {
-	global:
-
-	rte_ip_frag_table_destroy;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_jobstats/rte_jobstats_version.map b/lib/librte_jobstats/rte_jobstats_version.map
index f89441438e..dbd2664ae2 100644
--- a/lib/librte_jobstats/rte_jobstats_version.map
+++ b/lib/librte_jobstats/rte_jobstats_version.map
@@ -1,6 +1,7 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_jobstats_abort;
 	rte_jobstats_context_finish;
 	rte_jobstats_context_init;
 	rte_jobstats_context_reset;
@@ -17,10 +18,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_jobstats_abort;
-
-} DPDK_2.0;
diff --git a/lib/librte_kni/rte_kni_version.map b/lib/librte_kni/rte_kni_version.map
index c877dc6aaa..9cd3cedc54 100644
--- a/lib/librte_kni/rte_kni_version.map
+++ b/lib/librte_kni/rte_kni_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kni_alloc;
diff --git a/lib/librte_kvargs/rte_kvargs_version.map b/lib/librte_kvargs/rte_kvargs_version.map
index 8f4b4e3f8f..3ba0f4b59c 100644
--- a/lib/librte_kvargs/rte_kvargs_version.map
+++ b/lib/librte_kvargs/rte_kvargs_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kvargs_count;
@@ -15,4 +15,4 @@ EXPERIMENTAL {
 	rte_kvargs_parse_delim;
 	rte_kvargs_strcmp;
 
-} DPDK_2.0;
+};
diff --git a/lib/librte_latencystats/rte_latencystats_version.map b/lib/librte_latencystats/rte_latencystats_version.map
index ac8403e821..e04e63463f 100644
--- a/lib/librte_latencystats/rte_latencystats_version.map
+++ b/lib/librte_latencystats/rte_latencystats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_latencystats_get;
diff --git a/lib/librte_lpm/rte_lpm_version.map b/lib/librte_lpm/rte_lpm_version.map
index 90beac853d..500f58b806 100644
--- a/lib/librte_lpm/rte_lpm_version.map
+++ b/lib/librte_lpm/rte_lpm_version.map
@@ -1,13 +1,6 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
-	rte_lpm_add;
-	rte_lpm_create;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-	rte_lpm_find_existing;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
 	rte_lpm6_add;
 	rte_lpm6_create;
 	rte_lpm6_delete;
@@ -18,29 +11,13 @@ DPDK_2.0 {
 	rte_lpm6_is_rule_present;
 	rte_lpm6_lookup;
 	rte_lpm6_lookup_bulk_func;
+	rte_lpm_add;
+	rte_lpm_create;
+	rte_lpm_delete;
+	rte_lpm_delete_all;
+	rte_lpm_find_existing;
+	rte_lpm_free;
+	rte_lpm_is_rule_present;
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_lpm_add;
-	rte_lpm_find_existing;
-	rte_lpm_create;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_lpm6_add;
-	rte_lpm6_is_rule_present;
-	rte_lpm6_lookup;
-	rte_lpm6_lookup_bulk_func;
-
-} DPDK_16.04;
diff --git a/lib/librte_mbuf/rte_mbuf_version.map b/lib/librte_mbuf/rte_mbuf_version.map
index 263dc0a21e..3bbb476975 100644
--- a/lib/librte_mbuf/rte_mbuf_version.map
+++ b/lib/librte_mbuf/rte_mbuf_version.map
@@ -1,26 +1,7 @@
-DPDK_2.0 {
-	global:
-
-	rte_get_rx_ol_flag_name;
-	rte_get_tx_ol_flag_name;
-	rte_mbuf_sanity_check;
-	rte_pktmbuf_dump;
-	rte_pktmbuf_init;
-	rte_pktmbuf_pool_init;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pktmbuf_pool_create;
-
-} DPDK_2.0;
-
-DPDK_16.11 {
+DPDK_20.0 {
 	global:
 
+	__rte_pktmbuf_linearize;
 	__rte_pktmbuf_read;
 	rte_get_ptype_inner_l2_name;
 	rte_get_ptype_inner_l3_name;
@@ -31,28 +12,24 @@ DPDK_16.11 {
 	rte_get_ptype_name;
 	rte_get_ptype_tunnel_name;
 	rte_get_rx_ol_flag_list;
+	rte_get_rx_ol_flag_name;
 	rte_get_tx_ol_flag_list;
-
-} DPDK_2.1;
-
-DPDK_18.08 {
-	global:
-
+	rte_get_tx_ol_flag_name;
 	rte_mbuf_best_mempool_ops;
 	rte_mbuf_platform_mempool_ops;
+	rte_mbuf_sanity_check;
 	rte_mbuf_set_platform_mempool_ops;
 	rte_mbuf_set_user_mempool_ops;
 	rte_mbuf_user_mempool_ops;
-	rte_pktmbuf_pool_create_by_ops;
-} DPDK_16.11;
-
-DPDK_19.11 {
-	global:
-
-	__rte_pktmbuf_linearize;
 	rte_pktmbuf_clone;
+	rte_pktmbuf_dump;
+	rte_pktmbuf_init;
+	rte_pktmbuf_pool_create;
+	rte_pktmbuf_pool_create_by_ops;
+	rte_pktmbuf_pool_init;
 
-} DPDK_18.08;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
@@ -68,4 +45,4 @@ EXPERIMENTAL {
 	rte_pktmbuf_copy;
 	rte_pktmbuf_free_bulk;
 
-} DPDK_18.08;
+};
diff --git a/lib/librte_member/rte_member_version.map b/lib/librte_member/rte_member_version.map
index 019e4cd962..87780ae611 100644
--- a/lib/librte_member/rte_member_version.map
+++ b/lib/librte_member/rte_member_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_member_add;
diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map
index ce9e791e78..d002dfc46f 100644
--- a/lib/librte_mempool/rte_mempool_version.map
+++ b/lib/librte_mempool/rte_mempool_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_mempool_audit;
-	rte_mempool_calc_obj_size;
-	rte_mempool_create;
-	rte_mempool_dump;
-	rte_mempool_list_dump;
-	rte_mempool_lookup;
-	rte_mempool_walk;
-
-	local: *;
-};
-
-DPDK_16.07 {
-	global:
-
 	rte_mempool_avail_count;
 	rte_mempool_cache_create;
 	rte_mempool_cache_flush;
 	rte_mempool_cache_free;
+	rte_mempool_calc_obj_size;
 	rte_mempool_check_cookies;
+	rte_mempool_contig_blocks_check_cookies;
+	rte_mempool_create;
 	rte_mempool_create_empty;
 	rte_mempool_default_cache;
+	rte_mempool_dump;
 	rte_mempool_free;
 	rte_mempool_generic_get;
 	rte_mempool_generic_put;
 	rte_mempool_in_use_count;
+	rte_mempool_list_dump;
+	rte_mempool_lookup;
 	rte_mempool_mem_iter;
 	rte_mempool_obj_iter;
+	rte_mempool_op_calc_mem_size_default;
+	rte_mempool_op_populate_default;
 	rte_mempool_ops_table;
 	rte_mempool_populate_anon;
 	rte_mempool_populate_default;
+	rte_mempool_populate_iova;
 	rte_mempool_populate_virt;
 	rte_mempool_register_ops;
 	rte_mempool_set_ops_byname;
+	rte_mempool_walk;
 
-} DPDK_2.0;
-
-DPDK_17.11 {
-	global:
-
-	rte_mempool_populate_iova;
-
-} DPDK_16.07;
-
-DPDK_18.05 {
-	global:
-
-	rte_mempool_contig_blocks_check_cookies;
-	rte_mempool_op_calc_mem_size_default;
-	rte_mempool_op_populate_default;
-
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_meter/rte_meter_version.map b/lib/librte_meter/rte_meter_version.map
index 4b460d5803..46410b0369 100644
--- a/lib/librte_meter/rte_meter_version.map
+++ b/lib/librte_meter/rte_meter_version.map
@@ -1,21 +1,16 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_meter_srtcm_color_aware_check;
 	rte_meter_srtcm_color_blind_check;
 	rte_meter_srtcm_config;
+	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_color_aware_check;
 	rte_meter_trtcm_color_blind_check;
 	rte_meter_trtcm_config;
-
-	local: *;
-};
-
-DPDK_18.08 {
-	global:
-
-	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_profile_config;
+
+	local: *;
 };
 
 EXPERIMENTAL {
diff --git a/lib/librte_metrics/rte_metrics_version.map b/lib/librte_metrics/rte_metrics_version.map
index 6ac99a44a1..85663f356e 100644
--- a/lib/librte_metrics/rte_metrics_version.map
+++ b/lib/librte_metrics/rte_metrics_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_metrics_get_names;
diff --git a/lib/librte_net/rte_net_version.map b/lib/librte_net/rte_net_version.map
index fffc4a3723..8a4e75a3a0 100644
--- a/lib/librte_net/rte_net_version.map
+++ b/lib/librte_net/rte_net_version.map
@@ -1,25 +1,14 @@
-DPDK_16.11 {
-	global:
-	rte_net_get_ptype;
-
-	local: *;
-};
-
-DPDK_17.05 {
-	global:
-
-	rte_net_crc_calc;
-	rte_net_crc_set_alg;
-
-} DPDK_16.11;
-
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_random_addr;
 	rte_ether_format_addr;
+	rte_net_crc_calc;
+	rte_net_crc_set_alg;
+	rte_net_get_ptype;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_pci/rte_pci_version.map b/lib/librte_pci/rte_pci_version.map
index 03790cb0f0..67eb845796 100644
--- a/lib/librte_pci/rte_pci_version.map
+++ b/lib/librte_pci/rte_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	pci_map_resource;
diff --git a/lib/librte_pdump/rte_pdump_version.map b/lib/librte_pdump/rte_pdump_version.map
index 3e744f3012..6d02ccce6d 100644
--- a/lib/librte_pdump/rte_pdump_version.map
+++ b/lib/librte_pdump/rte_pdump_version.map
@@ -1,4 +1,4 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	global:
 
 	rte_pdump_disable;
diff --git a/lib/librte_pipeline/rte_pipeline_version.map b/lib/librte_pipeline/rte_pipeline_version.map
index 420f065d6e..64d38afecd 100644
--- a/lib/librte_pipeline/rte_pipeline_version.map
+++ b/lib/librte_pipeline/rte_pipeline_version.map
@@ -1,6 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_pipeline_ah_packet_drop;
+	rte_pipeline_ah_packet_hijack;
 	rte_pipeline_check;
 	rte_pipeline_create;
 	rte_pipeline_flush;
@@ -9,42 +11,22 @@ DPDK_2.0 {
 	rte_pipeline_port_in_create;
 	rte_pipeline_port_in_disable;
 	rte_pipeline_port_in_enable;
+	rte_pipeline_port_in_stats_read;
 	rte_pipeline_port_out_create;
 	rte_pipeline_port_out_packet_insert;
+	rte_pipeline_port_out_stats_read;
 	rte_pipeline_run;
 	rte_pipeline_table_create;
 	rte_pipeline_table_default_entry_add;
 	rte_pipeline_table_default_entry_delete;
 	rte_pipeline_table_entry_add;
-	rte_pipeline_table_entry_delete;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pipeline_port_in_stats_read;
-	rte_pipeline_port_out_stats_read;
-	rte_pipeline_table_stats_read;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_pipeline_table_entry_add_bulk;
+	rte_pipeline_table_entry_delete;
 	rte_pipeline_table_entry_delete_bulk;
+	rte_pipeline_table_stats_read;
 
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_pipeline_ah_packet_hijack;
-	rte_pipeline_ah_packet_drop;
-
-} DPDK_2.2;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_port/rte_port_version.map b/lib/librte_port/rte_port_version.map
index d5989721d7..18c6154672 100644
--- a/lib/librte_port/rte_port_version.map
+++ b/lib/librte_port/rte_port_version.map
@@ -1,65 +1,35 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_port_ethdev_reader_ops;
+	rte_port_ethdev_writer_nodrop_ops;
 	rte_port_ethdev_writer_ops;
+	rte_port_fd_reader_ops;
+	rte_port_fd_writer_nodrop_ops;
+	rte_port_fd_writer_ops;
+	rte_port_kni_reader_ops;
+	rte_port_kni_writer_nodrop_ops;
+	rte_port_kni_writer_ops;
+	rte_port_ring_multi_reader_ops;
+	rte_port_ring_multi_writer_nodrop_ops;
+	rte_port_ring_multi_writer_ops;
 	rte_port_ring_reader_ipv4_frag_ops;
+	rte_port_ring_reader_ipv6_frag_ops;
 	rte_port_ring_reader_ops;
 	rte_port_ring_writer_ipv4_ras_ops;
+	rte_port_ring_writer_ipv6_ras_ops;
+	rte_port_ring_writer_nodrop_ops;
 	rte_port_ring_writer_ops;
 	rte_port_sched_reader_ops;
 	rte_port_sched_writer_ops;
 	rte_port_sink_ops;
 	rte_port_source_ops;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_port_ethdev_writer_nodrop_ops;
-	rte_port_ring_reader_ipv6_frag_ops;
-	rte_port_ring_writer_ipv6_ras_ops;
-	rte_port_ring_writer_nodrop_ops;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_port_ring_multi_reader_ops;
-	rte_port_ring_multi_writer_ops;
-	rte_port_ring_multi_writer_nodrop_ops;
-
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_port_kni_reader_ops;
-	rte_port_kni_writer_ops;
-	rte_port_kni_writer_nodrop_ops;
-
-} DPDK_2.2;
-
-DPDK_16.11 {
-	global:
-
-	rte_port_fd_reader_ops;
-	rte_port_fd_writer_ops;
-	rte_port_fd_writer_nodrop_ops;
-
-} DPDK_16.07;
-
-DPDK_18.11 {
-	global:
-
 	rte_port_sym_crypto_reader_ops;
-	rte_port_sym_crypto_writer_ops;
 	rte_port_sym_crypto_writer_nodrop_ops;
+	rte_port_sym_crypto_writer_ops;
 
-} DPDK_16.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_power/rte_power_version.map b/lib/librte_power/rte_power_version.map
index 7729838137..55a168f56e 100644
--- a/lib/librte_power/rte_power_version.map
+++ b/lib/librte_power/rte_power_version.map
@@ -1,39 +1,27 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_power_exit;
+	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
+	rte_power_freq_enable_turbo;
 	rte_power_freq_max;
 	rte_power_freq_min;
 	rte_power_freq_up;
 	rte_power_freqs;
+	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_guest_channel_send_msg;
 	rte_power_init;
 	rte_power_set_env;
 	rte_power_set_freq;
+	rte_power_turbo_status;
 	rte_power_unset_env;
 
 	local: *;
 };
 
-DPDK_17.11 {
-	global:
-
-	rte_power_guest_channel_send_msg;
-	rte_power_freq_disable_turbo;
-	rte_power_freq_enable_turbo;
-	rte_power_turbo_status;
-
-} DPDK_2.0;
-
-DPDK_18.08 {
-	global:
-
-	rte_power_get_capabilities;
-
-} DPDK_17.11;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_rawdev/rte_rawdev_version.map b/lib/librte_rawdev/rte_rawdev_version.map
index b61dbff11c..d847c9e0d3 100644
--- a/lib/librte_rawdev/rte_rawdev_version.map
+++ b/lib/librte_rawdev/rte_rawdev_version.map
@@ -1,4 +1,4 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_rawdev_close;
@@ -17,8 +17,8 @@ DPDK_18.08 {
 	rte_rawdev_pmd_release;
 	rte_rawdev_queue_conf_get;
 	rte_rawdev_queue_count;
-	rte_rawdev_queue_setup;
 	rte_rawdev_queue_release;
+	rte_rawdev_queue_setup;
 	rte_rawdev_reset;
 	rte_rawdev_selftest;
 	rte_rawdev_set_attr;
diff --git a/lib/librte_reorder/rte_reorder_version.map b/lib/librte_reorder/rte_reorder_version.map
index 0a8a54de83..cf444062df 100644
--- a/lib/librte_reorder/rte_reorder_version.map
+++ b/lib/librte_reorder/rte_reorder_version.map
@@ -1,13 +1,13 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_reorder_create;
-	rte_reorder_init;
+	rte_reorder_drain;
 	rte_reorder_find_existing;
-	rte_reorder_reset;
 	rte_reorder_free;
+	rte_reorder_init;
 	rte_reorder_insert;
-	rte_reorder_drain;
+	rte_reorder_reset;
 
 	local: *;
 };
diff --git a/lib/librte_ring/rte_ring_version.map b/lib/librte_ring/rte_ring_version.map
index 510c1386e0..89d84bcf48 100644
--- a/lib/librte_ring/rte_ring_version.map
+++ b/lib/librte_ring/rte_ring_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ring_create;
 	rte_ring_dump;
+	rte_ring_free;
 	rte_ring_get_memsize;
 	rte_ring_init;
 	rte_ring_list_dump;
@@ -11,13 +12,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.2 {
-	global:
-
-	rte_ring_free;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_sched/rte_sched_version.map b/lib/librte_sched/rte_sched_version.map
index f33761e63e..cefd990367 100644
--- a/lib/librte_sched/rte_sched_version.map
+++ b/lib/librte_sched/rte_sched_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_approx;
@@ -14,6 +14,9 @@ DPDK_2.0 {
 	rte_sched_port_enqueue;
 	rte_sched_port_free;
 	rte_sched_port_get_memory_footprint;
+	rte_sched_port_pkt_read_color;
+	rte_sched_port_pkt_read_tree_path;
+	rte_sched_port_pkt_write;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_read_stats;
@@ -21,15 +24,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.1 {
-	global:
-
-	rte_sched_port_pkt_write;
-	rte_sched_port_pkt_read_tree_path;
-	rte_sched_port_pkt_read_color;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_security/rte_security_version.map b/lib/librte_security/rte_security_version.map
index 53267bf3cc..b07314bbf4 100644
--- a/lib/librte_security/rte_security_version.map
+++ b/lib/librte_security/rte_security_version.map
@@ -1,4 +1,4 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	rte_security_attach_session;
diff --git a/lib/librte_table/rte_table_version.map b/lib/librte_table/rte_table_version.map
index 6237252bec..40f72b1fe8 100644
--- a/lib/librte_table/rte_table_version.map
+++ b/lib/librte_table/rte_table_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_table_acl_ops;
diff --git a/lib/librte_timer/rte_timer_version.map b/lib/librte_timer/rte_timer_version.map
index 72f75c8181..2a59d3f081 100644
--- a/lib/librte_timer/rte_timer_version.map
+++ b/lib/librte_timer/rte_timer_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_timer_dump_stats;
@@ -14,16 +14,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_19.05 {
-	global:
-
-	rte_timer_dump_stats;
-	rte_timer_manage;
-	rte_timer_reset;
-	rte_timer_stop;
-	rte_timer_subsystem_init;
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_vhost/rte_vhost_version.map b/lib/librte_vhost/rte_vhost_version.map
index ce517b1271..c512377fe6 100644
--- a/lib/librte_vhost/rte_vhost_version.map
+++ b/lib/librte_vhost/rte_vhost_version.map
@@ -1,64 +1,34 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_vhost_avail_entries;
 	rte_vhost_dequeue_burst;
 	rte_vhost_driver_callback_register;
-	rte_vhost_driver_register;
-	rte_vhost_enable_guest_notification;
-	rte_vhost_enqueue_burst;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_vhost_driver_unregister;
-
-} DPDK_2.0;
-
-DPDK_16.07 {
-	global:
-
-	rte_vhost_avail_entries;
-	rte_vhost_get_ifname;
-	rte_vhost_get_numa_node;
-	rte_vhost_get_queue_num;
-
-} DPDK_2.1;
-
-DPDK_17.05 {
-	global:
-
 	rte_vhost_driver_disable_features;
 	rte_vhost_driver_enable_features;
 	rte_vhost_driver_get_features;
+	rte_vhost_driver_register;
 	rte_vhost_driver_set_features;
 	rte_vhost_driver_start;
+	rte_vhost_driver_unregister;
+	rte_vhost_enable_guest_notification;
+	rte_vhost_enqueue_burst;
+	rte_vhost_get_ifname;
 	rte_vhost_get_mem_table;
 	rte_vhost_get_mtu;
 	rte_vhost_get_negotiated_features;
+	rte_vhost_get_numa_node;
+	rte_vhost_get_queue_num;
 	rte_vhost_get_vhost_vring;
 	rte_vhost_get_vring_num;
 	rte_vhost_gpa_to_vva;
 	rte_vhost_log_used_vring;
 	rte_vhost_log_write;
-
-} DPDK_16.07;
-
-DPDK_17.08 {
-	global:
-
 	rte_vhost_rx_queue_count;
-
-} DPDK_17.05;
-
-DPDK_18.02 {
-	global:
-
 	rte_vhost_vring_call;
 
-} DPDK_17.08;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v6 10/10] buildtools: add ABI versioning check script
  2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
                           ` (9 preceding siblings ...)
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 09/10] build: change ABI version to 20.0 Anatoly Burakov
@ 2019-11-06 16:54         ` Anatoly Burakov
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-06 16:54 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, john.mcnamara, ray.kinsella, bruce.richardson,
	thomas, david.marchand, Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

Add a shell script that checks whether built libraries are
versioned with expected ABI (current ABI, current ABI + 1,
or EXPERIMENTAL).

The following command was used to verify current source tree
(assuming build directory is in ./build):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - Moved this to the end of the patchset
    - Fixed bug when ABI symbols were not found because the .so
      did not declare any public symbols

 buildtools/check-abi-version.sh | 54 +++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100755 buildtools/check-abi-version.sh

diff --git a/buildtools/check-abi-version.sh b/buildtools/check-abi-version.sh
new file mode 100755
index 0000000000..29aea97735
--- /dev/null
+++ b/buildtools/check-abi-version.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+# Check whether library symbols have correct
+# version (provided ABI number or provided ABI
+# number + 1 or EXPERIMENTAL).
+# Args:
+#   $1: path of the library .so file
+#   $2: ABI major version number to check
+#       (defaults to ABI_VERSION file value)
+
+if [ -z "$1" ]; then
+    echo "Script checks whether library symbols have"
+    echo "correct version (ABI_VER/ABI_VER+1/EXPERIMENTAL)"
+    echo "Usage:"
+    echo "  $0 SO_FILE_PATH [ABI_VER]"
+    exit 1
+fi
+
+LIB="$1"
+DEFAULT_ABI=$(cat "$(dirname \
+            $(readlink -f $0))/../config/ABI_VERSION" | \
+            cut -d'.' -f 1)
+ABIVER="DPDK_${2-$DEFAULT_ABI}"
+NEXT_ABIVER="DPDK_$((${2-$DEFAULT_ABI}+1))"
+
+ret=0
+
+# get output of objdump
+OBJ_DUMP_OUTPUT=`objdump -TC --section=.text ${LIB} 2>&1 | grep ".text"`
+
+# there may not be any .text sections in the .so file, in which case exit early
+echo "${OBJ_DUMP_OUTPUT}" | grep "not found in any input file" -q
+if [ "$?" -eq 0 ]; then
+    exit 0
+fi
+
+# we have symbols, so let's see if the versions are correct
+for SYM in `echo "${OBJ_DUMP_OUTPUT}" | awk '{print $(NF-1) "-" $NF}'`
+do
+    version=$(echo $SYM | cut -d'-' -f 1)
+    symbol=$(echo $SYM | cut -d'-' -f 2)
+    case $version in (*"$ABIVER"*|*"$NEXT_ABIVER"*|"EXPERIMENTAL")
+        ;;
+    (*)
+        echo "Warning: symbol $symbol ($version) should be annotated " \
+             "as ABI version $ABIVER / $NEXT_ABIVER, or EXPERIMENTAL."
+        ret=1
+    ;;
+    esac
+done
+
+exit $ret
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v7 00/10] Implement the new ABI policy and add helper scripts
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
@ 2019-11-08 16:25           ` Anatoly Burakov
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 00/12] " Anatoly Burakov
                               ` (12 more replies)
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global Anatoly Burakov
                             ` (9 subsequent siblings)
  10 siblings, 13 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-08 16:25 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, ray.kinsella, bruce.richardson, thomas, david.marchand

This patchset prepares the codebase for the new ABI policy and
adds a few helper scripts.

There are two new scripts for managing ABI versions added. The
first one is a Python script that will read in a .map file,
flatten it and update the ABI version to the ABI version
specified on the command-line.

The second one is a shell script that will run the above mentioned
Python script recursively over the source tree and set the ABI
version to either that which is defined in config/ABI_VERSION, or
a user-specified one.

Example of its usage: buildtools/update-abi.sh 20.0

This will recurse into lib/ and drivers/ directory and update
whatever .map files it can find.

The other shell script that's added is one that can take in a .so
file and ensure that its declared public ABI matches either
current ABI, next ABI, or EXPERIMENTAL. This was moved to the
last commit because it made no sense to have it beforehand.

The source tree was verified to follow the new ABI policy using
the following command (assuming built binaries are in build/):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

This returns 0.

Changes since v6:
- Rebase on top of latest master
- Fixed map file generation to generate stable ABI if it was there,
  even if it was empty

Changes since v5:
- Addressed David's comments regarding libtool error messages
- Fixed map file generation to not generate empty stable ABI if
  it wasn't there before

Changes since v4:
- Fixed shared library build issue for distributor

Changes since v3:
- Put distributor code back and cleaned it up
- Rebased on latest master and regenerated commit 9

Changes since v2:
- Addressed Bruce's review comments
- Removed single distributor mode as per Dave's suggestion

Changes since v1:
- Reordered patchset to have removal of old ABI's before introducing
  the new one to avoid compile breakages between patches
- Added a new patch fixing missing symbol in octeontx common
- Split script commits into multiple commits and reordered them
- Re-generated the ABI bump commit
- Verified all scripts to work

Anatoly Burakov (2):
  buildtools: add ABI update shell script
  drivers/octeontx: add missing public symbol

Marcin Baran (6):
  config: change ABI versioning to global
  timer: remove deprecated code
  lpm: remove deprecated code
  distributor: remove deprecated code
  distributor: rename v2.0 ABI to _single suffix
  buildtools: add ABI versioning check script

Pawel Modrak (2):
  buildtools: add script for updating symbols abi version
  build: change ABI version to 20.0

 buildtools/check-abi-version.sh               |   54 +
 buildtools/meson.build                        |    2 +
 buildtools/update-abi.sh                      |   42 +
 buildtools/update_version_map_abi.py          |  173 +++
 config/ABI_VERSION                            |    1 +
 config/meson.build                            |    4 +-
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |    8 +-
 .../null/rte_pmd_bbdev_null_version.map       |    2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |    2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     |  113 +-
 drivers/bus/fslmc/rte_bus_fslmc_version.map   |  154 +--
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |   14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |    2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |   12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |   12 +-
 drivers/common/cpt/rte_common_cpt_version.map |    9 +-
 .../common/dpaax/rte_common_dpaax_version.map |   14 +-
 .../common/mvep/rte_common_mvep_version.map   |    6 +-
 .../octeontx/rte_common_octeontx_version.map  |    7 +-
 .../rte_common_octeontx2_version.map          |   16 +-
 .../compress/isal/rte_pmd_isal_version.map    |    2 +-
 .../rte_pmd_octeontx_compress_version.map     |    2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |    2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |    2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |    2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |    2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |    2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |    3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |    3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |   10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |   10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |    2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |    2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |    2 +-
 .../null/rte_pmd_null_crypto_version.map      |    2 +-
 .../rte_pmd_octeontx_crypto_version.map       |    3 +-
 .../rte_pmd_octeontx2_crypto_version.map      |    3 +-
 .../openssl/rte_pmd_openssl_version.map       |    2 +-
 .../rte_pmd_crypto_scheduler_version.map      |   19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |    2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |    2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |    2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |    3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |    2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |    2 +-
 .../rte_pmd_octeontx_event_version.map        |    2 +-
 .../rte_pmd_octeontx2_event_version.map       |    3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |    2 +-
 .../rte_pmd_skeleton_event_version.map        |    3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |    2 +-
 .../bucket/rte_mempool_bucket_version.map     |    3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |    2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |   12 +-
 .../octeontx/rte_mempool_octeontx_version.map |    2 +-
 .../rte_mempool_octeontx2_version.map         |    4 +-
 .../mempool/ring/rte_mempool_ring_version.map |    3 +-
 .../stack/rte_mempool_stack_version.map       |    3 +-
 drivers/meson.build                           |   20 +-
 .../af_packet/rte_pmd_af_packet_version.map   |    3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |    2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |    5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |    4 +-
 drivers/net/avp/rte_pmd_avp_version.map       |    2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |    2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |    3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |    4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |   47 +-
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |    3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |   11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |   12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |    3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |    3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |    3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |    3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |    3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |    3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |    3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |    4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |   65 +-
 drivers/net/iavf/rte_pmd_iavf_version.map     |    3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |    3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |    3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |    3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |   62 +-
 drivers/net/kni/rte_pmd_kni_version.map       |    3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |    3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |    5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |    3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |    2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |    2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |    2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |    4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |    3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |    2 +-
 drivers/net/null/rte_pmd_null_version.map     |    3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |   10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |    3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |    3 +-
 drivers/net/pfe/rte_pmd_pfe_version.map       |    3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |    3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |   10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |    3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |    2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |    2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |    3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |    3 +-
 .../rte_pmd_vdev_netvsc_version.map           |    3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |   11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |    3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |    3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |    3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |    4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |    3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |    3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |    5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |    3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |    3 +-
 lib/librte_acl/rte_acl_version.map            |    2 +-
 .../rte_bitratestats_version.map              |    2 +-
 lib/librte_cfgfile/rte_cfgfile_version.map    |   34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |   10 +-
 .../rte_cryptodev_version.map                 |  102 +-
 lib/librte_distributor/Makefile               |    2 +-
 lib/librte_distributor/distributor_private.h  |   10 +-
 lib/librte_distributor/meson.build            |    2 +-
 lib/librte_distributor/rte_distributor.c      |   98 +-
 ...ributor_v20.c => rte_distributor_single.c} |   73 +-
 ...ributor_v20.h => rte_distributor_single.h} |   26 +-
 .../rte_distributor_v1705.h                   |   61 -
 .../rte_distributor_version.map               |   16 +-
 lib/librte_eal/rte_eal_version.map            |  324 ++----
 lib/librte_efd/rte_efd_version.map            |    2 +-
 lib/librte_ethdev/rte_ethdev_version.map      |  160 +--
 lib/librte_eventdev/rte_eventdev_version.map  |  130 +--
 lib/librte_gro/rte_gro_version.map            |    2 +-
 lib/librte_gso/rte_gso_version.map            |    2 +-
 lib/librte_hash/rte_hash_version.map          |   43 +-
 lib/librte_ip_frag/rte_ip_frag_version.map    |   10 +-
 lib/librte_jobstats/rte_jobstats_version.map  |   10 +-
 lib/librte_kni/rte_kni_version.map            |    2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |    4 +-
 .../rte_latencystats_version.map              |    2 +-
 lib/librte_lpm/rte_lpm.c                      | 1010 +----------------
 lib/librte_lpm/rte_lpm.h                      |   88 --
 lib/librte_lpm/rte_lpm6.c                     |  140 +--
 lib/librte_lpm/rte_lpm6.h                     |   25 -
 lib/librte_lpm/rte_lpm_version.map            |   39 +-
 lib/librte_mbuf/rte_mbuf_version.map          |   49 +-
 lib/librte_member/rte_member_version.map      |    2 +-
 lib/librte_mempool/rte_mempool_version.map    |   44 +-
 lib/librte_meter/rte_meter_version.map        |   13 +-
 lib/librte_metrics/rte_metrics_version.map    |    2 +-
 lib/librte_net/rte_net_version.map            |   23 +-
 lib/librte_pci/rte_pci_version.map            |    2 +-
 lib/librte_pdump/rte_pdump_version.map        |    2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |   36 +-
 lib/librte_port/rte_port_version.map          |   64 +-
 lib/librte_power/rte_power_version.map        |   24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |    4 +-
 lib/librte_reorder/rte_reorder_version.map    |    8 +-
 lib/librte_ring/rte_ring_version.map          |   10 +-
 lib/librte_sched/rte_sched_version.map        |   14 +-
 lib/librte_security/rte_security_version.map  |    2 +-
 lib/librte_table/rte_table_version.map        |    2 +-
 lib/librte_timer/rte_timer.c                  |  100 +-
 lib/librte_timer/rte_timer.h                  |   15 -
 lib/librte_timer/rte_timer_version.map        |   12 +-
 lib/librte_vhost/rte_vhost_version.map        |   52 +-
 lib/meson.build                               |   18 +-
 meson_options.txt                             |    2 -
 mk/rte.lib.mk                                 |   13 +-
 171 files changed, 1152 insertions(+), 2971 deletions(-)
 create mode 100755 buildtools/check-abi-version.sh
 create mode 100755 buildtools/update-abi.sh
 create mode 100755 buildtools/update_version_map_abi.py
 create mode 100644 config/ABI_VERSION
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (84%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h

-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
@ 2019-11-08 16:25           ` Anatoly Burakov
  2019-11-19 13:53             ` Thomas Monjalon
  2019-11-20 12:10             ` Kinsella, Ray
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
                             ` (8 subsequent siblings)
  10 siblings, 2 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-08 16:25 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Thomas Monjalon, Bruce Richardson, john.mcnamara,
	ray.kinsella, david.marchand, Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

As per new ABI policy, all of the libraries are now versioned using
one global ABI version. Changes in this patch implement the
necessary steps to enable that.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v6:
    - Silenced grep error message on trying to grep a directory
    
    v3:
    - Removed Windows support from Makefile changes
    - Removed unneeded path conversions from meson files

 buildtools/meson.build |  2 ++
 config/ABI_VERSION     |  1 +
 config/meson.build     |  4 +++-
 drivers/meson.build    | 20 ++++++++++++--------
 lib/meson.build        | 18 ++++++++++++------
 meson_options.txt      |  2 --
 mk/rte.lib.mk          | 13 ++++---------
 7 files changed, 34 insertions(+), 26 deletions(-)
 create mode 100644 config/ABI_VERSION

diff --git a/buildtools/meson.build b/buildtools/meson.build
index 32c79c1308..78ce69977d 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -12,3 +12,5 @@ if python3.found()
 else
 	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
 endif
+
+is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
diff --git a/config/ABI_VERSION b/config/ABI_VERSION
new file mode 100644
index 0000000000..9a7c1e503f
--- /dev/null
+++ b/config/ABI_VERSION
@@ -0,0 +1 @@
+20.0
diff --git a/config/meson.build b/config/meson.build
index 2b1cb92e7e..30aa2a5313 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -18,6 +18,8 @@ endforeach
 # depending on the configuration options
 pver = meson.project_version().split('.')
 major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
+abi_version = run_command(find_program('cat', 'more'),
+	files('ABI_VERSION')).stdout().strip()
 
 # extract all version information into the build configuration
 dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
@@ -37,7 +39,7 @@ endif
 
 pmd_subdir_opt = get_option('drivers_install_subdir')
 if pmd_subdir_opt.contains('<VERSION>')
-	pmd_subdir_opt = major_version.join(pmd_subdir_opt.split('<VERSION>'))
+	pmd_subdir_opt = abi_version.join(pmd_subdir_opt.split('<VERSION>'))
 endif
 driver_install_path = join_paths(get_option('libdir'), pmd_subdir_opt)
 eal_pmd_path = join_paths(get_option('prefix'), driver_install_path)
diff --git a/drivers/meson.build b/drivers/meson.build
index 156d2dc717..b03e0c3159 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -124,12 +124,19 @@ foreach class:dpdk_driver_classes
 					output: out_filename,
 					depends: [pmdinfogen, tmp_lib])
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/@2@_version.map'.format(
+					meson.current_source_dir(),
+					drv_path, lib_name)
+
+			is_experimental = run_command(is_experimental_cmd,
+				files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
-				lib_version = major_version
-				so_version = major_version
+				lib_version = abi_version
+				so_version = abi_version
 			endif
 
 			# now build the static driver
@@ -142,9 +149,6 @@ foreach class:dpdk_driver_classes
 				install: true)
 
 			# now build the shared driver
-			version_map = '@0@/@1@/@2@_version.map'.format(
-					meson.current_source_dir(),
-					drv_path, lib_name)
 			shared_lib = shared_library(lib_name,
 				sources,
 				objects: objs,
diff --git a/lib/meson.build b/lib/meson.build
index b2ec9c09a9..3cff2482b1 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -106,12 +106,18 @@ foreach l:libraries
 				cflags += '-DRTE_USE_FUNCTION_VERSIONING'
 			endif
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/rte_@2@_version.map'.format(
+					meson.current_source_dir(), dir_name, name)
+
+			is_experimental = run_command(is_experimental_cmd,
+					files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = '0.1'
+				so_version = '0'
 			else
-				lib_version = major_version
-				so_version = major_version
+				lib_version = abi_version
+				so_version = abi_version
 			endif
 
 			# first build static lib
@@ -127,7 +133,7 @@ foreach l:libraries
 					dependencies: static_deps)
 
 			if not use_function_versioning
-				# use pre-build objects to build shared lib
+				# then use pre-build objects to build shared lib
 				sources = []
 				objs += static_lib.extract_all_objects(recursive: false)
 			else
diff --git a/meson_options.txt b/meson_options.txt
index 89650b0e9c..da6a7f0302 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -30,8 +30,6 @@ option('max_lcores', type: 'integer', value: 128,
 	description: 'maximum number of cores/threads supported by EAL')
 option('max_numa_nodes', type: 'integer', value: 4,
 	description: 'maximum number of NUMA nodes supported by EAL')
-option('per_library_versions', type: 'boolean', value: true,
-	description: 'true: each lib gets its own version number, false: DPDK version used for each lib')
 option('tests', type: 'boolean', value: true,
 	description: 'build unit tests')
 option('use_hpet', type: 'boolean', value: false,
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index 4df8849a08..b49af9192b 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -11,20 +11,15 @@ EXTLIB_BUILD ?= n
 # VPATH contains at least SRCDIR
 VPATH += $(SRCDIR)
 
-ifneq ($(CONFIG_RTE_MAJOR_ABI),)
-ifneq ($(LIBABIVER),)
-LIBABIVER := $(CONFIG_RTE_MAJOR_ABI)
-endif
+ifneq ($(shell grep -s "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)
+LIBABIVER := $(shell cat $(RTE_SRCDIR)/config/ABI_VERSION)
+else
+LIBABIVER := 0
 endif
 
 ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
 LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))
 ifeq ($(EXTLIB_BUILD),n)
-ifeq ($(CONFIG_RTE_MAJOR_ABI),)
-ifeq ($(CONFIG_RTE_NEXT_ABI),y)
-LIB := $(LIB).1
-endif
-endif
 CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
 endif
 endif
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v7 02/10] buildtools: add script for updating symbols abi version
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global Anatoly Burakov
@ 2019-11-08 16:25           ` Anatoly Burakov
  2019-11-19 14:01             ` Thomas Monjalon
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 03/10] buildtools: add ABI update shell script Anatoly Burakov
                             ` (7 subsequent siblings)
  10 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-08 16:25 UTC (permalink / raw)
  To: dev
  Cc: Pawel Modrak, john.mcnamara, ray.kinsella, bruce.richardson,
	thomas, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Add a script that automatically merges all stable ABI's under one
ABI section with the new version, while leaving experimental
section exactly as it is.

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v7:
    - Do not remove stable ABI if it was empty
    
    v6:
    - Split map file generation function in two
    - Do not print stable ABI if it wasn't present
    
    v3:
    - Add comments to regex patterns
    
    v2:
    - Reworked script to be pep8-compliant and more reliable

 buildtools/update_version_map_abi.py | 173 +++++++++++++++++++++++++++
 1 file changed, 173 insertions(+)
 create mode 100755 buildtools/update_version_map_abi.py

diff --git a/buildtools/update_version_map_abi.py b/buildtools/update_version_map_abi.py
new file mode 100755
index 0000000000..0f6196140e
--- /dev/null
+++ b/buildtools/update_version_map_abi.py
@@ -0,0 +1,173 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+"""
+A Python program to update the ABI version and function names in a DPDK
+lib_*_version.map file. Called from the buildtools/update_abi.sh utility.
+"""
+
+from __future__ import print_function
+import argparse
+import sys
+import re
+
+
+def __parse_map_file(f_in):
+    # match function name, followed by semicolon, followed by EOL, optionally
+    # with whitespace inbetween each item
+    func_line_regex = re.compile(r"\s*"
+                                 r"(?P<func>[a-zA-Z_0-9]+)"
+                                 r"\s*"
+                                 r";"
+                                 r"\s*"
+                                 r"$")
+    # match section name, followed by opening bracked, followed by EOL,
+    # optionally with whitespace inbetween each item
+    section_begin_regex = re.compile(r"\s*"
+                                     r"(?P<version>[a-zA-Z0-9_\.]+)"
+                                     r"\s*"
+                                     r"{"
+                                     r"\s*"
+                                     r"$")
+    # match closing bracket, optionally followed by section name (for when we
+    # inherit from another ABI version), followed by semicolon, followed by
+    # EOL, optionally with whitespace inbetween each item
+    section_end_regex = re.compile(r"\s*"
+                                   r"}"
+                                   r"\s*"
+                                   r"(?P<parent>[a-zA-Z0-9_\.]+)?"
+                                   r"\s*"
+                                   r";"
+                                   r"\s*"
+                                   r"$")
+
+    # for stable ABI, we don't care about which version introduced which
+    # function, we just flatten the list. there are dupes in certain files, so
+    # use a set instead of a list
+    stable_lines = set()
+    # copy experimental section as is
+    experimental_lines = []
+    in_experimental = False
+    has_stable = False
+
+    # gather all functions
+    for line in f_in:
+        # clean up the line
+        line = line.strip('\n').strip()
+
+        # is this an end of section?
+        match = section_end_regex.match(line)
+        if match:
+            # whatever section this was, it's not active any more
+            in_experimental = False
+            continue
+
+        # if we're in the middle of experimental section, we need to copy
+        # the section verbatim, so just add the line
+        if in_experimental:
+            experimental_lines += [line]
+            continue
+
+        # skip empty lines
+        if not line:
+            continue
+
+        # is this a beginning of a new section?
+        match = section_begin_regex.match(line)
+        if match:
+            cur_section = match.group("version")
+            # is it experimental?
+            in_experimental = cur_section == "EXPERIMENTAL"
+            if not in_experimental:
+                has_stable = True
+            continue
+
+        # is this a function?
+        match = func_line_regex.match(line)
+        if match:
+            stable_lines.add(match.group("func"))
+
+    return has_stable, stable_lines, experimental_lines
+
+
+def __generate_stable_abi(f_out, abi_version, lines):
+    # print ABI version header
+    print("DPDK_{} {{".format(abi_version), file=f_out)
+
+    # print global section if it exists
+    if lines:
+        print("\tglobal:", file=f_out)
+        # blank line
+        print(file=f_out)
+
+        # print all stable lines, alphabetically sorted
+        for line in sorted(lines):
+            print("\t{};".format(line), file=f_out)
+
+        # another blank line
+        print(file=f_out)
+
+    # print local section
+    print("\tlocal: *;", file=f_out)
+
+    # end stable version
+    print("};", file=f_out)
+
+
+def __generate_experimental_abi(f_out, lines):
+    # start experimental section
+    print("EXPERIMENTAL {", file=f_out)
+
+    # print all experimental lines as they were
+    for line in lines:
+        # don't print empty whitespace
+        if not line:
+            print("", file=f_out)
+        else:
+            print("\t{}".format(line), file=f_out)
+
+    # end section
+    print("};", file=f_out)
+
+
+def __main():
+    arg_parser = argparse.ArgumentParser(
+        description='Merge versions in linker version script.')
+
+    arg_parser.add_argument("map_file", type=str,
+                            help='path to linker version script file '
+                                 '(pattern: *version.map)')
+    arg_parser.add_argument("abi_version", type=str,
+                            help='target ABI version (pattern: MAJOR.MINOR)')
+
+    parsed = arg_parser.parse_args()
+
+    if not parsed.map_file.endswith('version.map'):
+        print("Invalid input file: {}".format(parsed.map_file),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    if not re.match(r"\d{1,2}\.\d{1,2}", parsed.abi_version):
+        print("Invalid ABI version: {}".format(parsed.abi_version),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    with open(parsed.map_file) as f_in:
+        has_stable, stable_lines, experimental_lines = __parse_map_file(f_in)
+
+    with open(parsed.map_file, 'w') as f_out:
+        need_newline = has_stable and experimental_lines
+        if has_stable:
+            __generate_stable_abi(f_out, parsed.abi_version, stable_lines)
+        if need_newline:
+            # separate sections with a newline
+            print(file=f_out)
+        if experimental_lines:
+            __generate_experimental_abi(f_out, experimental_lines)
+
+
+if __name__ == "__main__":
+    __main()
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v7 03/10] buildtools: add ABI update shell script
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
                             ` (2 preceding siblings ...)
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
@ 2019-11-08 16:25           ` Anatoly Burakov
  2019-11-19 17:38             ` Thomas Monjalon
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 04/10] timer: remove deprecated code Anatoly Burakov
                             ` (6 subsequent siblings)
  10 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-08 16:25 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, ray.kinsella, bruce.richardson, thomas, david.marchand

In order to facilitate mass updating of version files, add a shell
script that recurses into lib/ and drivers/ directories and calls
the ABI version update script.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v3:
    - Switch to sh rather than bash, and remove bash-isms
    - Address review comments
    
    v2:
    - Add this patch to split the shell script from previous commit
    - Fixup miscellaneous bugs

 buildtools/update-abi.sh | 42 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100755 buildtools/update-abi.sh

diff --git a/buildtools/update-abi.sh b/buildtools/update-abi.sh
new file mode 100755
index 0000000000..89ba5804a6
--- /dev/null
+++ b/buildtools/update-abi.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+abi_version=$1
+abi_version_file="./config/ABI_VERSION"
+update_path="lib drivers"
+
+if [ -z "$1" ]; then
+      # output to stderr
+      >&2 echo "Please provide ABI version"
+      exit 1
+fi
+
+# check version string format
+echo $abi_version | grep -q -e "^[[:digit:]]\{1,2\}\.[[:digit:]]\{1,2\}$"
+if [ "$?" -ne 0 ]; then
+      # output to stderr
+      >&2 echo "ABI version must be formatted as MAJOR.MINOR version"
+      exit 1
+fi
+
+if [ -n "$2" ]; then
+      abi_version_file=$2
+fi
+
+if [ -n "$3" ]; then
+      # drop $1 and $2
+      shift 2
+      # assign all other arguments as update paths
+      update_path=$@
+fi
+
+echo "New ABI version:" $abi_version
+echo "ABI_VERSION path:" $abi_version_file
+echo "Path to update:" $update_path
+
+echo $abi_version > $abi_version_file
+
+find $update_path -name  \*version.map -exec \
+      ./buildtools/update_version_map_abi.py {} \
+      $abi_version \; -print
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v7 04/10] timer: remove deprecated code
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
                             ` (3 preceding siblings ...)
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 03/10] buildtools: add ABI update shell script Anatoly Burakov
@ 2019-11-08 16:25           ` Anatoly Burakov
  2019-11-19 21:42             ` David Marchand
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 05/10] lpm: " Anatoly Burakov
                             ` (5 subsequent siblings)
  10 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-08 16:25 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, ray.kinsella, bruce.richardson, thomas,
	david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_timer/rte_timer.c | 100 ++++-------------------------------
 lib/librte_timer/rte_timer.h |  15 ------
 2 files changed, 10 insertions(+), 105 deletions(-)

diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c
index 381a9f43f8..ca88454ff6 100644
--- a/lib/librte_timer/rte_timer.c
+++ b/lib/librte_timer/rte_timer.c
@@ -68,9 +68,6 @@ static struct rte_timer_data *rte_timer_data_arr;
 static const uint32_t default_data_id;
 static uint32_t rte_timer_subsystem_initialized;
 
-/* For maintaining older interfaces for a period */
-static struct rte_timer_data default_timer_data;
-
 /* when debug is enabled, store some statistics */
 #ifdef RTE_LIBRTE_TIMER_DEBUG
 #define __TIMER_STAT_ADD(priv_timer, name, n) do {			\
@@ -131,30 +128,14 @@ rte_timer_data_dealloc(uint32_t id)
 	return 0;
 }
 
-void __vsym
-rte_timer_subsystem_init_v20(void)
-{
-	unsigned lcore_id;
-	struct priv_timer *priv_timer = default_timer_data.priv_timer;
-
-	/* since priv_timer is static, it's zeroed by default, so only init some
-	 * fields.
-	 */
-	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id ++) {
-		rte_spinlock_init(&priv_timer[lcore_id].list_lock);
-		priv_timer[lcore_id].prev_lcore = lcore_id;
-	}
-}
-VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
-
 /* Init the timer library. Allocate an array of timer data structs in shared
  * memory, and allocate the zeroth entry for use with original timer
  * APIs. Since the intersection of the sets of lcore ids in primary and
  * secondary processes should be empty, the zeroth entry can be shared by
  * multiple processes.
  */
-int __vsym
-rte_timer_subsystem_init_v1905(void)
+int
+rte_timer_subsystem_init(void)
 {
 	const struct rte_memzone *mz;
 	struct rte_timer_data *data;
@@ -209,9 +190,6 @@ rte_timer_subsystem_init_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_subsystem_init(void),
-		  rte_timer_subsystem_init_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_subsystem_init, _v1905, 19.05);
 
 void
 rte_timer_subsystem_finalize(void)
@@ -551,43 +529,14 @@ __rte_timer_reset(struct rte_timer *tim, uint64_t expire,
 }
 
 /* Reset and start the timer associated with the timer handle tim */
-int __vsym
-rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-		    enum rte_timer_type type, unsigned int tim_lcore,
-		    rte_timer_cb_t fct, void *arg)
-{
-	uint64_t cur_time = rte_get_timer_cycles();
-	uint64_t period;
-
-	if (unlikely((tim_lcore != (unsigned)LCORE_ID_ANY) &&
-			!(rte_lcore_is_enabled(tim_lcore) ||
-			  rte_lcore_has_role(tim_lcore, ROLE_SERVICE))))
-		return -1;
-
-	if (type == PERIODICAL)
-		period = ticks;
-	else
-		period = 0;
-
-	return __rte_timer_reset(tim,  cur_time + ticks, period, tim_lcore,
-			  fct, arg, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_reset, _v20, 2.0);
-
-int __vsym
-rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
+int
+rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		      enum rte_timer_type type, unsigned int tim_lcore,
 		      rte_timer_cb_t fct, void *arg)
 {
 	return rte_timer_alt_reset(default_data_id, tim, ticks, type,
 				   tim_lcore, fct, arg);
 }
-MAP_STATIC_SYMBOL(int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
-				      enum rte_timer_type type,
-				      unsigned int tim_lcore,
-				      rte_timer_cb_t fct, void *arg),
-		  rte_timer_reset_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_reset, _v1905, 19.05);
 
 int
 rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim,
@@ -657,21 +606,11 @@ __rte_timer_stop(struct rte_timer *tim, int local_is_locked,
 }
 
 /* Stop the timer associated with the timer handle tim */
-int __vsym
-rte_timer_stop_v20(struct rte_timer *tim)
-{
-	return __rte_timer_stop(tim, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_stop, _v20, 2.0);
-
-int __vsym
-rte_timer_stop_v1905(struct rte_timer *tim)
+int
+rte_timer_stop(struct rte_timer *tim)
 {
 	return rte_timer_alt_stop(default_data_id, tim);
 }
-MAP_STATIC_SYMBOL(int rte_timer_stop(struct rte_timer *tim),
-		  rte_timer_stop_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_stop, _v1905, 19.05);
 
 int
 rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim)
@@ -817,15 +756,8 @@ __rte_timer_manage(struct rte_timer_data *timer_data)
 	priv_timer[lcore_id].running_tim = NULL;
 }
 
-void __vsym
-rte_timer_manage_v20(void)
-{
-	__rte_timer_manage(&default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_manage, _v20, 2.0);
-
-int __vsym
-rte_timer_manage_v1905(void)
+int
+rte_timer_manage(void)
 {
 	struct rte_timer_data *timer_data;
 
@@ -835,8 +767,6 @@ rte_timer_manage_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_manage(void), rte_timer_manage_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_manage, _v1905, 19.05);
 
 int
 rte_timer_alt_manage(uint32_t timer_data_id,
@@ -1074,21 +1004,11 @@ __rte_timer_dump_stats(struct rte_timer_data *timer_data __rte_unused, FILE *f)
 #endif
 }
 
-void __vsym
-rte_timer_dump_stats_v20(FILE *f)
-{
-	__rte_timer_dump_stats(&default_timer_data, f);
-}
-VERSION_SYMBOL(rte_timer_dump_stats, _v20, 2.0);
-
-int __vsym
-rte_timer_dump_stats_v1905(FILE *f)
+int
+rte_timer_dump_stats(FILE *f)
 {
 	return rte_timer_alt_dump_stats(default_data_id, f);
 }
-MAP_STATIC_SYMBOL(int rte_timer_dump_stats(FILE *f),
-		  rte_timer_dump_stats_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_dump_stats, _v1905, 19.05);
 
 int
 rte_timer_alt_dump_stats(uint32_t timer_data_id __rte_unused, FILE *f)
diff --git a/lib/librte_timer/rte_timer.h b/lib/librte_timer/rte_timer.h
index 05d287d8f2..9dc5fc3092 100644
--- a/lib/librte_timer/rte_timer.h
+++ b/lib/librte_timer/rte_timer.h
@@ -181,8 +181,6 @@ int rte_timer_data_dealloc(uint32_t id);
  *      subsystem
  */
 int rte_timer_subsystem_init(void);
-int rte_timer_subsystem_init_v1905(void);
-void rte_timer_subsystem_init_v20(void);
 
 /**
  * @warning
@@ -250,13 +248,6 @@ void rte_timer_init(struct rte_timer *tim);
 int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		    enum rte_timer_type type, unsigned tim_lcore,
 		    rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
-			  enum rte_timer_type type, unsigned int tim_lcore,
-			  rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-			enum rte_timer_type type, unsigned int tim_lcore,
-			rte_timer_cb_t fct, void *arg);
-
 
 /**
  * Loop until rte_timer_reset() succeeds.
@@ -313,8 +304,6 @@ rte_timer_reset_sync(struct rte_timer *tim, uint64_t ticks,
  *   - (-1): The timer is in the RUNNING or CONFIG state.
  */
 int rte_timer_stop(struct rte_timer *tim);
-int rte_timer_stop_v1905(struct rte_timer *tim);
-int rte_timer_stop_v20(struct rte_timer *tim);
 
 /**
  * Loop until rte_timer_stop() succeeds.
@@ -358,8 +347,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_manage(void);
-int rte_timer_manage_v1905(void);
-void rte_timer_manage_v20(void);
 
 /**
  * Dump statistics about timers.
@@ -371,8 +358,6 @@ void rte_timer_manage_v20(void);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_dump_stats(FILE *f);
-int rte_timer_dump_stats_v1905(FILE *f);
-void rte_timer_dump_stats_v20(FILE *f);
 
 /**
  * @warning
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v7 05/10] lpm: remove deprecated code
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
                             ` (4 preceding siblings ...)
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 04/10] timer: remove deprecated code Anatoly Burakov
@ 2019-11-08 16:25           ` Anatoly Burakov
  2019-11-19 21:43             ` David Marchand
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 06/10] distributor: " Anatoly Burakov
                             ` (4 subsequent siblings)
  10 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-08 16:25 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Bruce Richardson, Vladimir Medvedkin,
	john.mcnamara, ray.kinsella, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_lpm/rte_lpm.c  | 1010 ++-----------------------------------
 lib/librte_lpm/rte_lpm.h  |   88 ----
 lib/librte_lpm/rte_lpm6.c |  140 +----
 lib/librte_lpm/rte_lpm6.h |   25 -
 4 files changed, 59 insertions(+), 1204 deletions(-)

diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c
index 106916dc82..b78c487447 100644
--- a/lib/librte_lpm/rte_lpm.c
+++ b/lib/librte_lpm/rte_lpm.c
@@ -90,34 +90,8 @@ depth_to_range(uint8_t depth)
 /*
  * Find an existing lpm table and return a pointer to it.
  */
-struct rte_lpm_v20 * __vsym
-rte_lpm_find_existing_v20(const char *name)
-{
-	struct rte_lpm_v20 *l = NULL;
-	struct rte_tailq_entry *te;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_read_lock();
-	TAILQ_FOREACH(te, lpm_list, next) {
-		l = te->data;
-		if (strncmp(name, l->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-	rte_mcfg_tailq_read_unlock();
-
-	if (te == NULL) {
-		rte_errno = ENOENT;
-		return NULL;
-	}
-
-	return l;
-}
-VERSION_SYMBOL(rte_lpm_find_existing, _v20, 2.0);
-
-struct rte_lpm * __vsym
-rte_lpm_find_existing_v1604(const char *name)
+struct rte_lpm *
+rte_lpm_find_existing(const char *name)
 {
 	struct rte_lpm *l = NULL;
 	struct rte_tailq_entry *te;
@@ -140,88 +114,12 @@ rte_lpm_find_existing_v1604(const char *name)
 
 	return l;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_find_existing, _v1604, 16.04);
-MAP_STATIC_SYMBOL(struct rte_lpm *rte_lpm_find_existing(const char *name),
-		rte_lpm_find_existing_v1604);
 
 /*
  * Allocates memory for LPM object
  */
-struct rte_lpm_v20 * __vsym
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules,
-		__rte_unused int flags)
-{
-	char mem_name[RTE_LPM_NAMESIZE];
-	struct rte_lpm_v20 *lpm = NULL;
-	struct rte_tailq_entry *te;
-	uint32_t mem_size;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	RTE_BUILD_BUG_ON(sizeof(struct rte_lpm_tbl_entry_v20) != 2);
-
-	/* Check user arguments. */
-	if ((name == NULL) || (socket_id < -1) || (max_rules == 0)) {
-		rte_errno = EINVAL;
-		return NULL;
-	}
-
-	snprintf(mem_name, sizeof(mem_name), "LPM_%s", name);
-
-	/* Determine the amount of memory to allocate. */
-	mem_size = sizeof(*lpm) + (sizeof(lpm->rules_tbl[0]) * max_rules);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* guarantee there's no existing */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		lpm = te->data;
-		if (strncmp(name, lpm->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-
-	if (te != NULL) {
-		lpm = NULL;
-		rte_errno = EEXIST;
-		goto exit;
-	}
-
-	/* allocate tailq entry */
-	te = rte_zmalloc("LPM_TAILQ_ENTRY", sizeof(*te), 0);
-	if (te == NULL) {
-		RTE_LOG(ERR, LPM, "Failed to allocate tailq entry\n");
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Allocate memory to store the LPM data structures. */
-	lpm = rte_zmalloc_socket(mem_name, mem_size,
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (lpm == NULL) {
-		RTE_LOG(ERR, LPM, "LPM memory allocation failed\n");
-		rte_free(te);
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Save user arguments. */
-	lpm->max_rules = max_rules;
-	strlcpy(lpm->name, name, sizeof(lpm->name));
-
-	te->data = lpm;
-
-	TAILQ_INSERT_TAIL(lpm_list, te, next);
-
-exit:
-	rte_mcfg_tailq_write_unlock();
-
-	return lpm;
-}
-VERSION_SYMBOL(rte_lpm_create, _v20, 2.0);
-
-struct rte_lpm * __vsym
-rte_lpm_create_v1604(const char *name, int socket_id,
+struct rte_lpm *
+rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config)
 {
 	char mem_name[RTE_LPM_NAMESIZE];
@@ -321,45 +219,12 @@ rte_lpm_create_v1604(const char *name, int socket_id,
 
 	return lpm;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_create, _v1604, 16.04);
-MAP_STATIC_SYMBOL(
-	struct rte_lpm *rte_lpm_create(const char *name, int socket_id,
-			const struct rte_lpm_config *config), rte_lpm_create_v1604);
 
 /*
  * Deallocates memory for given LPM table.
  */
-void __vsym
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm)
-{
-	struct rte_lpm_list *lpm_list;
-	struct rte_tailq_entry *te;
-
-	/* Check user arguments. */
-	if (lpm == NULL)
-		return;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* find our tailq entry */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		if (te->data == (void *) lpm)
-			break;
-	}
-	if (te != NULL)
-		TAILQ_REMOVE(lpm_list, te, next);
-
-	rte_mcfg_tailq_write_unlock();
-
-	rte_free(lpm);
-	rte_free(te);
-}
-VERSION_SYMBOL(rte_lpm_free, _v20, 2.0);
-
-void __vsym
-rte_lpm_free_v1604(struct rte_lpm *lpm)
+void
+rte_lpm_free(struct rte_lpm *lpm)
 {
 	struct rte_lpm_list *lpm_list;
 	struct rte_tailq_entry *te;
@@ -387,9 +252,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm)
 	rte_free(lpm);
 	rte_free(te);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_free, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
-		rte_lpm_free_v1604);
 
 /*
  * Adds a rule to the rule table.
@@ -402,79 +264,7 @@ MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-	uint8_t next_hop)
-{
-	uint32_t rule_gindex, rule_index, last_rule;
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	/* Scan through rule group to see if rule already exists. */
-	if (lpm->rule_info[depth - 1].used_rules > 0) {
-
-		/* rule_gindex stands for rule group index. */
-		rule_gindex = lpm->rule_info[depth - 1].first_rule;
-		/* Initialise rule_index to point to start of rule group. */
-		rule_index = rule_gindex;
-		/* Last rule = Last used rule in this rule group. */
-		last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-		for (; rule_index < last_rule; rule_index++) {
-
-			/* If rule already exists update its next_hop and return. */
-			if (lpm->rules_tbl[rule_index].ip == ip_masked) {
-				lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-				return rule_index;
-			}
-		}
-
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-	} else {
-		/* Calculate the position in which the rule will be stored. */
-		rule_index = 0;
-
-		for (i = depth - 1; i > 0; i--) {
-			if (lpm->rule_info[i - 1].used_rules > 0) {
-				rule_index = lpm->rule_info[i - 1].first_rule
-						+ lpm->rule_info[i - 1].used_rules;
-				break;
-			}
-		}
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-
-		lpm->rule_info[depth - 1].first_rule = rule_index;
-	}
-
-	/* Make room for the new rule in the array. */
-	for (i = RTE_LPM_MAX_DEPTH; i > depth; i--) {
-		if (lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules == lpm->max_rules)
-			return -ENOSPC;
-
-		if (lpm->rule_info[i - 1].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules]
-					= lpm->rules_tbl[lpm->rule_info[i - 1].first_rule];
-			lpm->rule_info[i - 1].first_rule++;
-		}
-	}
-
-	/* Add the new rule. */
-	lpm->rules_tbl[rule_index].ip = ip_masked;
-	lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-	/* Increment the used rules counter for this rule group. */
-	lpm->rule_info[depth - 1].used_rules++;
-
-	return rule_index;
-}
-
-static int32_t
-rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+rule_add(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	uint32_t next_hop)
 {
 	uint32_t rule_gindex, rule_index, last_rule;
@@ -550,30 +340,7 @@ rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static void
-rule_delete_v20(struct rte_lpm_v20 *lpm, int32_t rule_index, uint8_t depth)
-{
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	lpm->rules_tbl[rule_index] =
-			lpm->rules_tbl[lpm->rule_info[depth - 1].first_rule
-				+ lpm->rule_info[depth - 1].used_rules - 1];
-
-	for (i = depth; i < RTE_LPM_MAX_DEPTH; i++) {
-		if (lpm->rule_info[i].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i].first_rule - 1] =
-				lpm->rules_tbl[lpm->rule_info[i].first_rule
-					+ lpm->rule_info[i].used_rules - 1];
-			lpm->rule_info[i].first_rule--;
-		}
-	}
-
-	lpm->rule_info[depth - 1].used_rules--;
-}
-
-static void
-rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
+rule_delete(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
 {
 	int i;
 
@@ -600,28 +367,7 @@ rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_find_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth)
-{
-	uint32_t rule_gindex, last_rule, rule_index;
-
-	VERIFY_DEPTH(depth);
-
-	rule_gindex = lpm->rule_info[depth - 1].first_rule;
-	last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-	/* Scan used rules at given depth to find rule. */
-	for (rule_index = rule_gindex; rule_index < last_rule; rule_index++) {
-		/* If rule is found return the rule index. */
-		if (lpm->rules_tbl[rule_index].ip == ip_masked)
-			return rule_index;
-	}
-
-	/* If rule is not found return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
+rule_find(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
 {
 	uint32_t rule_gindex, last_rule, rule_index;
 
@@ -645,42 +391,7 @@ rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
  * Find, clean and allocate a tbl8.
  */
 static int32_t
-tbl8_alloc_v20(struct rte_lpm_tbl_entry_v20 *tbl8)
-{
-	uint32_t group_idx; /* tbl8 group index. */
-	struct rte_lpm_tbl_entry_v20 *tbl8_entry;
-
-	/* Scan through tbl8 to find a free (i.e. INVALID) tbl8 group. */
-	for (group_idx = 0; group_idx < RTE_LPM_TBL8_NUM_GROUPS;
-			group_idx++) {
-		tbl8_entry = &tbl8[group_idx * RTE_LPM_TBL8_GROUP_NUM_ENTRIES];
-		/* If a free tbl8 group is found clean it and set as VALID. */
-		if (!tbl8_entry->valid_group) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = INVALID,
-				.depth = 0,
-				.valid_group = VALID,
-			};
-			new_tbl8_entry.next_hop = 0;
-
-			memset(&tbl8_entry[0], 0,
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES *
-					sizeof(tbl8_entry[0]));
-
-			__atomic_store(tbl8_entry, &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-
-			/* Return group index for allocated tbl8 group. */
-			return group_idx;
-		}
-	}
-
-	/* If there are no tbl8 groups free then return error. */
-	return -ENOSPC;
-}
-
-static int32_t
-tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
+tbl8_alloc(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 {
 	uint32_t group_idx; /* tbl8 group index. */
 	struct rte_lpm_tbl_entry *tbl8_entry;
@@ -714,22 +425,7 @@ tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 }
 
 static void
-tbl8_free_v20(struct rte_lpm_tbl_entry_v20 *tbl8, uint32_t tbl8_group_start)
-{
-	/* Set tbl8 group invalid*/
-	struct rte_lpm_tbl_entry_v20 zero_tbl8_entry = {
-		.valid = INVALID,
-		.depth = 0,
-		.valid_group = INVALID,
-	};
-	zero_tbl8_entry.next_hop = 0;
-
-	__atomic_store(&tbl8[tbl8_group_start], &zero_tbl8_entry,
-			__ATOMIC_RELAXED);
-}
-
-static void
-tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
+tbl8_free(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 {
 	/* Set tbl8 group invalid*/
 	struct rte_lpm_tbl_entry zero_tbl8_entry = {0};
@@ -739,78 +435,7 @@ tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 }
 
 static __rte_noinline int32_t
-add_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index, tbl24_range, tbl8_index, tbl8_group_end, i, j;
-
-	/* Calculate the index into Table24. */
-	tbl24_index = ip >> 8;
-	tbl24_range = depth_to_range(depth);
-
-	for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-		/*
-		 * For invalid OR valid and non-extended tbl 24 entries set
-		 * entry.
-		 */
-		if (!lpm->tbl24[i].valid || (lpm->tbl24[i].valid_group == 0 &&
-				lpm->tbl24[i].depth <= depth)) {
-
-			struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.valid = VALID,
-				.valid_group = 0,
-				.depth = depth,
-			};
-			new_tbl24_entry.next_hop = next_hop;
-
-			/* Setting tbl24 entry in one go to avoid race
-			 * conditions
-			 */
-			__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-					__ATOMIC_RELEASE);
-
-			continue;
-		}
-
-		if (lpm->tbl24[i].valid_group == 1) {
-			/* If tbl24 entry is valid and extended calculate the
-			 *  index into tbl8.
-			 */
-			tbl8_index = lpm->tbl24[i].group_idx *
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-			tbl8_group_end = tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-			for (j = tbl8_index; j < tbl8_group_end; j++) {
-				if (!lpm->tbl8[j].valid ||
-						lpm->tbl8[j].depth <= depth) {
-					struct rte_lpm_tbl_entry_v20
-						new_tbl8_entry = {
-						.valid = VALID,
-						.valid_group = VALID,
-						.depth = depth,
-					};
-					new_tbl8_entry.next_hop = next_hop;
-
-					/*
-					 * Setting tbl8 entry in one go to avoid
-					 * race conditions
-					 */
-					__atomic_store(&lpm->tbl8[j],
-						&new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-					continue;
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+add_depth_small(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -882,150 +507,7 @@ add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 }
 
 static __rte_noinline int32_t
-add_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index;
-	int32_t tbl8_group_index, tbl8_group_start, tbl8_group_end, tbl8_index,
-		tbl8_range, i;
-
-	tbl24_index = (ip_masked >> 8);
-	tbl8_range = depth_to_range(depth);
-
-	if (!lpm->tbl24[tbl24_index].valid) {
-		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		/* Check tbl8 allocation was successful. */
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		/* Find index into tbl8 and range. */
-		tbl8_index = (tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES) +
-				(ip_masked & 0xFF);
-
-		/* Set tbl8 entry. */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.group_idx = (uint8_t)tbl8_group_index,
-			.valid = VALID,
-			.valid_group = 1,
-			.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} /* If valid entry but not extended calculate the index into Table8. */
-	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
-		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_group_end = tbl8_group_start +
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-		/* Populate new tbl8 with tbl24 value. */
-		for (i = tbl8_group_start; i < tbl8_group_end; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = lpm->tbl24[tbl24_index].depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop =
-				lpm->tbl24[tbl24_index].next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		/* Insert new rule into the tbl8 entry. */
-		for (i = tbl8_index; i < tbl8_index + tbl8_range; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.group_idx = (uint8_t)tbl8_group_index,
-				.valid = VALID,
-				.valid_group = 1,
-				.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} else { /*
-		* If it is valid, extended entry calculate the index into tbl8.
-		*/
-		tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-
-			if (!lpm->tbl8[i].valid ||
-					lpm->tbl8[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-					.valid = VALID,
-					.depth = depth,
-					.valid_group = lpm->tbl8[i].valid_group,
-				};
-				new_tbl8_entry.next_hop = next_hop;
-				/*
-				 * Setting tbl8 entry in one go to avoid race
-				 * condition
-				 */
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-				continue;
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+add_depth_big(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -1038,7 +520,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 
 	if (!lpm->tbl24[tbl24_index].valid) {
 		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		/* Check tbl8 allocation was successful. */
 		if (tbl8_group_index < 0) {
@@ -1084,7 +566,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	} /* If valid entry but not extended calculate the index into Table8. */
 	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
 		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		if (tbl8_group_index < 0) {
 			return tbl8_group_index;
@@ -1177,49 +659,8 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 /*
  * Add a route
  */
-int __vsym
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	int32_t rule_index, status = 0;
-	uint32_t ip_masked;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/* Add the rule to the rule table. */
-	rule_index = rule_add_v20(lpm, ip_masked, depth, next_hop);
-
-	/* If the is no space available for new rule return error. */
-	if (rule_index < 0) {
-		return rule_index;
-	}
-
-	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v20(lpm, ip_masked, depth, next_hop);
-	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v20(lpm, ip_masked, depth, next_hop);
-
-		/*
-		 * If add fails due to exhaustion of tbl8 extensions delete
-		 * rule that was added to rule table.
-		 */
-		if (status < 0) {
-			rule_delete_v20(lpm, rule_index, depth);
-
-			return status;
-		}
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_add, _v20, 2.0);
-
-int __vsym
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+int
+rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 	int32_t rule_index, status = 0;
@@ -1232,7 +673,7 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	ip_masked = ip & depth_to_mask(depth);
 
 	/* Add the rule to the rule table. */
-	rule_index = rule_add_v1604(lpm, ip_masked, depth, next_hop);
+	rule_index = rule_add(lpm, ip_masked, depth, next_hop);
 
 	/* If the is no space available for new rule return error. */
 	if (rule_index < 0) {
@@ -1240,16 +681,16 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	}
 
 	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_small(lpm, ip_masked, depth, next_hop);
 	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_big(lpm, ip_masked, depth, next_hop);
 
 		/*
 		 * If add fails due to exhaustion of tbl8 extensions delete
 		 * rule that was added to rule table.
 		 */
 		if (status < 0) {
-			rule_delete_v1604(lpm, rule_index, depth);
+			rule_delete(lpm, rule_index, depth);
 
 			return status;
 		}
@@ -1257,42 +698,12 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_add, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_add(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t next_hop), rte_lpm_add_v1604);
 
 /*
  * Look for a rule in the high-level rules table
  */
-int __vsym
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop)
-{
-	uint32_t ip_masked;
-	int32_t rule_index;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) ||
-		(next_hop == NULL) ||
-		(depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	/* Look for the rule using rule_find. */
-	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v20(lpm, ip_masked, depth);
-
-	if (rule_index >= 0) {
-		*next_hop = lpm->rules_tbl[rule_index].next_hop;
-		return 1;
-	}
-
-	/* If rule is not found return 0. */
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_is_rule_present, _v20, 2.0);
-
-int __vsym
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+int
+rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop)
 {
 	uint32_t ip_masked;
@@ -1306,7 +717,7 @@ uint32_t *next_hop)
 
 	/* Look for the rule using rule_find. */
 	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v1604(lpm, ip_masked, depth);
+	rule_index = rule_find(lpm, ip_masked, depth);
 
 	if (rule_index >= 0) {
 		*next_hop = lpm->rules_tbl[rule_index].next_hop;
@@ -1316,12 +727,9 @@ uint32_t *next_hop)
 	/* If rule is not found return 0. */
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_is_rule_present, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t *next_hop), rte_lpm_is_rule_present_v1604);
 
 static int32_t
-find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
+find_previous_rule(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint8_t *sub_rule_depth)
 {
 	int32_t rule_index;
@@ -1331,7 +739,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
 		ip_masked = ip & depth_to_mask(prev_depth);
 
-		rule_index = rule_find_v20(lpm, ip_masked, prev_depth);
+		rule_index = rule_find(lpm, ip_masked, prev_depth);
 
 		if (rule_index >= 0) {
 			*sub_rule_depth = prev_depth;
@@ -1343,133 +751,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 }
 
 static int32_t
-find_previous_rule_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint8_t *sub_rule_depth)
-{
-	int32_t rule_index;
-	uint32_t ip_masked;
-	uint8_t prev_depth;
-
-	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
-		ip_masked = ip & depth_to_mask(prev_depth);
-
-		rule_index = rule_find_v1604(lpm, ip_masked, prev_depth);
-
-		if (rule_index >= 0) {
-			*sub_rule_depth = prev_depth;
-			return rule_index;
-		}
-	}
-
-	return -1;
-}
-
-static int32_t
-delete_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_range, tbl24_index, tbl8_group_index, tbl8_index, i, j;
-
-	/* Calculate the range and index into Table24. */
-	tbl24_range = depth_to_range(depth);
-	tbl24_index = (ip_masked >> 8);
-
-	/*
-	 * Firstly check the sub_rule_index. A -1 indicates no replacement rule
-	 * and a positive number indicates a sub_rule_index.
-	 */
-	if (sub_rule_index < 0) {
-		/*
-		 * If no replacement rule exists then invalidate entries
-		 * associated with this rule.
-		 */
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20
-					zero_tbl24_entry = {
-						.valid = INVALID,
-						.depth = 0,
-						.valid_group = 0,
-					};
-					zero_tbl24_entry.next_hop = 0;
-				__atomic_store(&lpm->tbl24[i],
-					&zero_tbl24_entry, __ATOMIC_RELEASE);
-			} else if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						lpm->tbl8[j].valid = INVALID;
-				}
-			}
-		}
-	} else {
-		/*
-		 * If a replacement rule exists then modify entries
-		 * associated with this rule.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->rules_tbl[sub_rule_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = sub_rule_depth,
-		};
-
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.valid_group = VALID,
-			.depth = sub_rule_depth,
-		};
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-						__ATOMIC_RELEASE);
-			} else  if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						__atomic_store(&lpm->tbl8[j],
-							&new_tbl8_entry,
-							__ATOMIC_RELAXED);
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_small(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1576,7 +858,7 @@ delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * thus can be recycled
  */
 static int32_t
-tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
+tbl8_recycle_check(struct rte_lpm_tbl_entry *tbl8,
 		uint32_t tbl8_group_start)
 {
 	uint32_t tbl8_group_end, i;
@@ -1623,140 +905,7 @@ tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
 }
 
 static int32_t
-tbl8_recycle_check_v1604(struct rte_lpm_tbl_entry *tbl8,
-		uint32_t tbl8_group_start)
-{
-	uint32_t tbl8_group_end, i;
-	tbl8_group_end = tbl8_group_start + RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-	/*
-	 * Check the first entry of the given tbl8. If it is invalid we know
-	 * this tbl8 does not contain any rule with a depth < RTE_LPM_MAX_DEPTH
-	 *  (As they would affect all entries in a tbl8) and thus this table
-	 *  can not be recycled.
-	 */
-	if (tbl8[tbl8_group_start].valid) {
-		/*
-		 * If first entry is valid check if the depth is less than 24
-		 * and if so check the rest of the entries to verify that they
-		 * are all of this depth.
-		 */
-		if (tbl8[tbl8_group_start].depth <= MAX_DEPTH_TBL24) {
-			for (i = (tbl8_group_start + 1); i < tbl8_group_end;
-					i++) {
-
-				if (tbl8[i].depth !=
-						tbl8[tbl8_group_start].depth) {
-
-					return -EEXIST;
-				}
-			}
-			/* If all entries are the same return the tb8 index */
-			return tbl8_group_start;
-		}
-
-		return -EEXIST;
-	}
-	/*
-	 * If the first entry is invalid check if the rest of the entries in
-	 * the tbl8 are invalid.
-	 */
-	for (i = (tbl8_group_start + 1); i < tbl8_group_end; i++) {
-		if (tbl8[i].valid)
-			return -EEXIST;
-	}
-	/* If no valid entries are found then return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-delete_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_index, tbl8_group_index, tbl8_group_start, tbl8_index,
-			tbl8_range, i;
-	int32_t tbl8_recycle_index;
-
-	/*
-	 * Calculate the index into tbl24 and range. Note: All depths larger
-	 * than MAX_DEPTH_TBL24 are associated with only one tbl24 entry.
-	 */
-	tbl24_index = ip_masked >> 8;
-
-	/* Calculate the index into tbl8 and range. */
-	tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-	tbl8_group_start = tbl8_group_index * RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-	tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-	tbl8_range = depth_to_range(depth);
-
-	if (sub_rule_index < 0) {
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be removed or modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				lpm->tbl8[i].valid = INVALID;
-		}
-	} else {
-		/* Set new tbl8 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.depth = sub_rule_depth,
-			.valid_group = lpm->tbl8[tbl8_group_start].valid_group,
-		};
-
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-		}
-	}
-
-	/*
-	 * Check if there are any valid entries in this tbl8 group. If all
-	 * tbl8 entries are invalid we can free the tbl8 and invalidate the
-	 * associated tbl24 entry.
-	 */
-
-	tbl8_recycle_index = tbl8_recycle_check_v20(lpm->tbl8, tbl8_group_start);
-
-	if (tbl8_recycle_index == -EINVAL) {
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		lpm->tbl24[tbl24_index].valid = 0;
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	} else if (tbl8_recycle_index > -1) {
-		/* Update tbl24 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->tbl8[tbl8_recycle_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = lpm->tbl8[tbl8_recycle_index].depth,
-		};
-
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELAXED);
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_big(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1811,7 +960,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 	 * associated tbl24 entry.
 	 */
 
-	tbl8_recycle_index = tbl8_recycle_check_v1604(lpm->tbl8, tbl8_group_start);
+	tbl8_recycle_index = tbl8_recycle_check(lpm->tbl8, tbl8_group_start);
 
 	if (tbl8_recycle_index == -EINVAL) {
 		/* Set tbl24 before freeing tbl8 to avoid race condition.
@@ -1819,7 +968,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		 */
 		lpm->tbl24[tbl24_index].valid = 0;
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	} else if (tbl8_recycle_index > -1) {
 		/* Update tbl24 entry. */
 		struct rte_lpm_tbl_entry new_tbl24_entry = {
@@ -1835,7 +984,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
 				__ATOMIC_RELAXED);
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	}
 #undef group_idx
 	return 0;
@@ -1844,8 +993,8 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 /*
  * Deletes a rule
  */
-int __vsym
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
+int
+rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
 {
 	int32_t rule_to_delete_index, sub_rule_index;
 	uint32_t ip_masked;
@@ -1864,7 +1013,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * Find the index of the input rule, that needs to be deleted, in the
 	 * rule table.
 	 */
-	rule_to_delete_index = rule_find_v20(lpm, ip_masked, depth);
+	rule_to_delete_index = rule_find(lpm, ip_masked, depth);
 
 	/*
 	 * Check if rule_to_delete_index was found. If no rule was found the
@@ -1874,7 +1023,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 		return -EINVAL;
 
 	/* Delete the rule from the rule table. */
-	rule_delete_v20(lpm, rule_to_delete_index, depth);
+	rule_delete(lpm, rule_to_delete_index, depth);
 
 	/*
 	 * Find rule to replace the rule_to_delete. If there is no rule to
@@ -1882,100 +1031,26 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * entries associated with this rule.
 	 */
 	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v20(lpm, ip, depth, &sub_rule_depth);
+	sub_rule_index = find_previous_rule(lpm, ip, depth, &sub_rule_depth);
 
 	/*
 	 * If the input depth value is less than 25 use function
 	 * delete_depth_small otherwise use delete_depth_big.
 	 */
 	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v20(lpm, ip_masked, depth,
+		return delete_depth_small(lpm, ip_masked, depth,
 				sub_rule_index, sub_rule_depth);
 	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v20(lpm, ip_masked, depth, sub_rule_index,
+		return delete_depth_big(lpm, ip_masked, depth, sub_rule_index,
 				sub_rule_depth);
 	}
 }
-VERSION_SYMBOL(rte_lpm_delete, _v20, 2.0);
-
-int __vsym
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
-{
-	int32_t rule_to_delete_index, sub_rule_index;
-	uint32_t ip_masked;
-	uint8_t sub_rule_depth;
-	/*
-	 * Check input arguments. Note: IP must be a positive integer of 32
-	 * bits in length therefore it need not be checked.
-	 */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH)) {
-		return -EINVAL;
-	}
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/*
-	 * Find the index of the input rule, that needs to be deleted, in the
-	 * rule table.
-	 */
-	rule_to_delete_index = rule_find_v1604(lpm, ip_masked, depth);
-
-	/*
-	 * Check if rule_to_delete_index was found. If no rule was found the
-	 * function rule_find returns -EINVAL.
-	 */
-	if (rule_to_delete_index < 0)
-		return -EINVAL;
-
-	/* Delete the rule from the rule table. */
-	rule_delete_v1604(lpm, rule_to_delete_index, depth);
-
-	/*
-	 * Find rule to replace the rule_to_delete. If there is no rule to
-	 * replace the rule_to_delete we return -1 and invalidate the table
-	 * entries associated with this rule.
-	 */
-	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v1604(lpm, ip, depth, &sub_rule_depth);
-
-	/*
-	 * If the input depth value is less than 25 use function
-	 * delete_depth_small otherwise use delete_depth_big.
-	 */
-	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v1604(lpm, ip_masked, depth,
-				sub_rule_index, sub_rule_depth);
-	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v1604(lpm, ip_masked, depth, sub_rule_index,
-				sub_rule_depth);
-	}
-}
-BIND_DEFAULT_SYMBOL(rte_lpm_delete, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth), rte_lpm_delete_v1604);
 
 /*
  * Delete all rules from the LPM table.
  */
-void __vsym
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm)
-{
-	/* Zero rule information. */
-	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
-
-	/* Zero tbl24. */
-	memset(lpm->tbl24, 0, sizeof(lpm->tbl24));
-
-	/* Zero tbl8. */
-	memset(lpm->tbl8, 0, sizeof(lpm->tbl8));
-
-	/* Delete all rules form the rules table. */
-	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
-}
-VERSION_SYMBOL(rte_lpm_delete_all, _v20, 2.0);
-
-void __vsym
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
+void
+rte_lpm_delete_all(struct rte_lpm *lpm)
 {
 	/* Zero rule information. */
 	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
@@ -1990,6 +1065,3 @@ rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
 	/* Delete all rules form the rules table. */
 	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_delete_all, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_delete_all(struct rte_lpm *lpm),
-		rte_lpm_delete_all_v1604);
diff --git a/lib/librte_lpm/rte_lpm.h b/lib/librte_lpm/rte_lpm.h
index 26303e6288..b9d49ac879 100644
--- a/lib/librte_lpm/rte_lpm.h
+++ b/lib/librte_lpm/rte_lpm.h
@@ -64,31 +64,6 @@ extern "C" {
 
 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
 /** @internal Tbl24 entry structure. */
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	/**
-	 * Stores Next hop (tbl8 or tbl24 when valid_group is not set) or
-	 * a group index pointing to a tbl8 structure (tbl24 only, when
-	 * valid_group is set)
-	 */
-	RTE_STD_C11
-	union {
-		uint8_t next_hop;
-		uint8_t group_idx;
-	};
-	/* Using single uint8_t to store 3 values. */
-	uint8_t valid     :1;   /**< Validation flag. */
-	/**
-	 * For tbl24:
-	 *  - valid_group == 0: entry stores a next hop
-	 *  - valid_group == 1: entry stores a group_index pointing to a tbl8
-	 * For tbl8:
-	 *  - valid_group indicates whether the current tbl8 is in use or not
-	 */
-	uint8_t valid_group :1;
-	uint8_t depth       :6; /**< Rule depth. */
-} __rte_aligned(sizeof(uint16_t));
-
 __extension__
 struct rte_lpm_tbl_entry {
 	/**
@@ -111,16 +86,6 @@ struct rte_lpm_tbl_entry {
 };
 
 #else
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	uint8_t depth       :6;
-	uint8_t valid_group :1;
-	uint8_t valid       :1;
-	union {
-		uint8_t group_idx;
-		uint8_t next_hop;
-	};
-} __rte_aligned(sizeof(uint16_t));
 
 __extension__
 struct rte_lpm_tbl_entry {
@@ -141,11 +106,6 @@ struct rte_lpm_config {
 };
 
 /** @internal Rule structure. */
-struct rte_lpm_rule_v20 {
-	uint32_t ip; /**< Rule IP address. */
-	uint8_t  next_hop; /**< Rule next hop. */
-};
-
 struct rte_lpm_rule {
 	uint32_t ip; /**< Rule IP address. */
 	uint32_t next_hop; /**< Rule next hop. */
@@ -158,21 +118,6 @@ struct rte_lpm_rule_info {
 };
 
 /** @internal LPM structure. */
-struct rte_lpm_v20 {
-	/* LPM metadata. */
-	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
-	uint32_t max_rules; /**< Max. balanced rules per lpm. */
-	struct rte_lpm_rule_info rule_info[RTE_LPM_MAX_DEPTH]; /**< Rule info table. */
-
-	/* LPM Tables. */
-	struct rte_lpm_tbl_entry_v20 tbl24[RTE_LPM_TBL24_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl24 table. */
-	struct rte_lpm_tbl_entry_v20 tbl8[RTE_LPM_TBL8_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl8 table. */
-	struct rte_lpm_rule_v20 rules_tbl[]
-			__rte_cache_aligned; /**< LPM rules. */
-};
-
 struct rte_lpm {
 	/* LPM metadata. */
 	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
@@ -209,11 +154,6 @@ struct rte_lpm {
 struct rte_lpm *
 rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config);
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules, int flags);
-struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
-		const struct rte_lpm_config *config);
 
 /**
  * Find an existing LPM object and return a pointer to it.
@@ -227,10 +167,6 @@ rte_lpm_create_v1604(const char *name, int socket_id,
  */
 struct rte_lpm *
 rte_lpm_find_existing(const char *name);
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name);
-struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name);
 
 /**
  * Free an LPM object.
@@ -242,10 +178,6 @@ rte_lpm_find_existing_v1604(const char *name);
  */
 void
 rte_lpm_free(struct rte_lpm *lpm);
-void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm);
 
 /**
  * Add a rule to the LPM table.
@@ -263,12 +195,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm);
  */
 int
 rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth, uint32_t next_hop);
-int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -288,12 +214,6 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 int
 rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop);
-int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop);
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -309,10 +229,6 @@ uint32_t *next_hop);
  */
 int
 rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
 
 /**
  * Delete all rules from the LPM table.
@@ -322,10 +238,6 @@ rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
  */
 void
 rte_lpm_delete_all(struct rte_lpm *lpm);
-void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm);
 
 /**
  * Lookup an IP into the LPM table.
diff --git a/lib/librte_lpm/rte_lpm6.c b/lib/librte_lpm/rte_lpm6.c
index 0d161dc327..c46e557e23 100644
--- a/lib/librte_lpm/rte_lpm6.c
+++ b/lib/librte_lpm/rte_lpm6.c
@@ -809,18 +809,6 @@ add_step(struct rte_lpm6 *lpm, struct rte_lpm6_tbl_entry *tbl,
 	return 1;
 }
 
-/*
- * Add a route
- */
-int __vsym
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	return rte_lpm6_add_v1705(lpm, ip, depth, next_hop);
-}
-VERSION_SYMBOL(rte_lpm6_add, _v20, 2.0);
-
-
 /*
  * Simulate adding a route to LPM
  *
@@ -842,7 +830,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	ret = simulate_add_step(lpm, lpm->tbl24, &tbl_next, masked_ip,
-			ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
+		ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
 	total_need_tbl_nb = need_tbl_nb;
 	/*
 	 * Inspect one by one the rest of the bytes until
@@ -851,7 +839,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && ret == 1; i++) {
 		tbl = tbl_next;
 		ret = simulate_add_step(lpm, tbl, &tbl_next, masked_ip, 1,
-				(uint8_t)(i+1), depth, &need_tbl_nb);
+			(uint8_t)(i + 1), depth, &need_tbl_nb);
 		total_need_tbl_nb += need_tbl_nb;
 	}
 
@@ -862,9 +850,12 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	return 0;
 }
 
-int __vsym
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop)
+/*
+ * Add a route
+ */
+int
+rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+	uint32_t next_hop)
 {
 	struct rte_lpm6_tbl_entry *tbl;
 	struct rte_lpm6_tbl_entry *tbl_next = NULL;
@@ -896,8 +887,8 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	tbl = lpm->tbl24;
 	status = add_step(lpm, tbl, TBL24_IND, &tbl_next, &tbl_next_num,
-			masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
-			is_new_rule);
+		masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
+		is_new_rule);
 	assert(status >= 0);
 
 	/*
@@ -907,17 +898,13 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && status == 1; i++) {
 		tbl = tbl_next;
 		status = add_step(lpm, tbl, tbl_next_num, &tbl_next,
-				&tbl_next_num, masked_ip, 1, (uint8_t)(i+1),
-				depth, next_hop, is_new_rule);
+			&tbl_next_num, masked_ip, 1, (uint8_t)(i + 1),
+			depth, next_hop, is_new_rule);
 		assert(status >= 0);
 	}
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_add, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip,
-				uint8_t depth, uint32_t next_hop),
-		rte_lpm6_add_v1705);
 
 /*
  * Takes a pointer to a table entry and inspect one level.
@@ -955,26 +942,8 @@ lookup_step(const struct rte_lpm6 *lpm, const struct rte_lpm6_tbl_entry *tbl,
 /*
  * Looks up an IP
  */
-int __vsym
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_lookup_v1705(lpm, ip, &next_hop32);
-	if (status == 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-}
-VERSION_SYMBOL(rte_lpm6_lookup, _v20, 2.0);
-
-int __vsym
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
+int
+rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
 		uint32_t *next_hop)
 {
 	const struct rte_lpm6_tbl_entry *tbl;
@@ -1001,56 +970,12 @@ rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
-				uint32_t *next_hop), rte_lpm6_lookup_v1705);
 
 /*
  * Looks up a group of IP addresses
  */
-int __vsym
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t * next_hops, unsigned n)
-{
-	unsigned i;
-	const struct rte_lpm6_tbl_entry *tbl;
-	const struct rte_lpm6_tbl_entry *tbl_next = NULL;
-	uint32_t tbl24_index, next_hop;
-	uint8_t first_byte;
-	int status;
-
-	/* DEBUG: Check user input arguments. */
-	if ((lpm == NULL) || (ips == NULL) || (next_hops == NULL))
-		return -EINVAL;
-
-	for (i = 0; i < n; i++) {
-		first_byte = LOOKUP_FIRST_BYTE;
-		tbl24_index = (ips[i][0] << BYTES2_SIZE) |
-				(ips[i][1] << BYTE_SIZE) | ips[i][2];
-
-		/* Calculate pointer to the first entry to be inspected */
-		tbl = &lpm->tbl24[tbl24_index];
-
-		do {
-			/* Continue inspecting following levels until success or failure */
-			status = lookup_step(lpm, tbl, &tbl_next, ips[i], first_byte++,
-					&next_hop);
-			tbl = tbl_next;
-		} while (status == 1);
-
-		if (status < 0)
-			next_hops[i] = -1;
-		else
-			next_hops[i] = (int16_t)next_hop;
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm6_lookup_bulk_func, _v20, 2.0);
-
-int __vsym
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
+int
+rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n)
 {
@@ -1090,37 +1015,12 @@ rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup_bulk_func, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
-				uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-				int32_t *next_hops, unsigned int n),
-		rte_lpm6_lookup_bulk_func_v1705);
 
 /*
  * Look for a rule in the high-level rules table
  */
-int __vsym
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_is_rule_present_v1705(lpm, ip, depth, &next_hop32);
-	if (status > 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-
-}
-VERSION_SYMBOL(rte_lpm6_is_rule_present, _v20, 2.0);
-
-int __vsym
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+int
+rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop)
 {
 	uint8_t masked_ip[RTE_LPM6_IPV6_ADDR_SIZE];
@@ -1136,10 +1036,6 @@ rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 
 	return rule_find(lpm, masked_ip, depth, next_hop);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_is_rule_present, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_is_rule_present(struct rte_lpm6 *lpm,
-				uint8_t *ip, uint8_t depth, uint32_t *next_hop),
-		rte_lpm6_is_rule_present_v1705);
 
 /*
  * Delete a rule from the rule table.
diff --git a/lib/librte_lpm/rte_lpm6.h b/lib/librte_lpm/rte_lpm6.h
index 5d59ccb1fe..37dfb20249 100644
--- a/lib/librte_lpm/rte_lpm6.h
+++ b/lib/librte_lpm/rte_lpm6.h
@@ -96,12 +96,6 @@ rte_lpm6_free(struct rte_lpm6 *lpm);
 int
 rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t next_hop);
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -121,12 +115,6 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 int
 rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop);
-int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop);
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -184,11 +172,6 @@ rte_lpm6_delete_all(struct rte_lpm6 *lpm);
  */
 int
 rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip, uint32_t *next_hop);
-int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop);
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
-		uint32_t *next_hop);
 
 /**
  * Lookup multiple IP addresses in an LPM table.
@@ -210,14 +193,6 @@ int
 rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int32_t *next_hops, unsigned int n);
 
 #ifdef __cplusplus
 }
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v7 06/10] distributor: remove deprecated code
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
                             ` (5 preceding siblings ...)
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 05/10] lpm: " Anatoly Burakov
@ 2019-11-08 16:25           ` Anatoly Burakov
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
                             ` (3 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-08 16:25 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, David Hunt, john.mcnamara, ray.kinsella,
	bruce.richardson, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
---

Notes:
    v5:
    - Fixed shared library linking error due to versioning still enabled
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_distributor/rte_distributor.c      | 74 +++++--------------
 .../rte_distributor_v1705.h                   | 61 ---------------
 lib/librte_distributor/rte_distributor_v20.c  |  9 ---
 3 files changed, 18 insertions(+), 126 deletions(-)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h

diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index 2cc32ddba2..a4c8ff6a96 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -18,7 +18,6 @@
 
 #include "rte_distributor.h"
 #include "rte_distributor_v20.h"
-#include "rte_distributor_v1705.h"
 #include "distributor_private.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
@@ -32,8 +31,8 @@ EAL_REGISTER_TAILQ(rte_dist_burst_tailq)
 
 /**** Burst Packet APIs called by workers ****/
 
-void __vsym
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
+void
+rte_distributor_request_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt,
 		unsigned int count)
 {
@@ -83,14 +82,9 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
 	__atomic_store_n(retptr64, *retptr64 | RTE_DISTRIB_GET_BUF,
 			__ATOMIC_RELEASE);
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_request_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_request_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count),
-		rte_distributor_request_pkt_v1705);
 
-int __vsym
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
+int
+rte_distributor_poll_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -129,13 +123,9 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
 
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_poll_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_poll_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts),
-		rte_distributor_poll_pkt_v1705);
 
-int __vsym
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
+int
+rte_distributor_get_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts,
 		struct rte_mbuf **oldpkt, unsigned int return_count)
 {
@@ -163,14 +153,9 @@ rte_distributor_get_pkt_v1705(struct rte_distributor *d,
 	}
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_get_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_get_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts,
-		struct rte_mbuf **oldpkt, unsigned int return_count),
-		rte_distributor_get_pkt_v1705);
 
-int __vsym
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
+int
+rte_distributor_return_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt, int num)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -202,10 +187,6 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_return_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_return_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt, int num),
-		rte_distributor_return_pkt_v1705);
 
 /**** APIs called on distributor core ***/
 
@@ -359,8 +340,8 @@ release(struct rte_distributor *d, unsigned int wkr)
 
 
 /* process a set of packets to distribute them to workers */
-int __vsym
-rte_distributor_process_v1705(struct rte_distributor *d,
+int
+rte_distributor_process(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs)
 {
 	unsigned int next_idx = 0;
@@ -500,14 +481,10 @@ rte_distributor_process_v1705(struct rte_distributor *d,
 
 	return num_mbufs;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_process, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_process(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs),
-		rte_distributor_process_v1705);
 
 /* return to the caller, packets returned from workers */
-int __vsym
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
+int
+rte_distributor_returned_pkts(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -532,10 +509,6 @@ rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
 
 	return retval;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_returned_pkts, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_returned_pkts(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs),
-		rte_distributor_returned_pkts_v1705);
 
 /*
  * Return the number of packets in-flight in a distributor, i.e. packets
@@ -556,8 +529,8 @@ total_outstanding(const struct rte_distributor *d)
  * Flush the distributor, so that there are no outstanding packets in flight or
  * queued up.
  */
-int __vsym
-rte_distributor_flush_v1705(struct rte_distributor *d)
+int
+rte_distributor_flush(struct rte_distributor *d)
 {
 	unsigned int flushed;
 	unsigned int wkr;
@@ -586,13 +559,10 @@ rte_distributor_flush_v1705(struct rte_distributor *d)
 
 	return flushed;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_flush, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_flush(struct rte_distributor *d),
-		rte_distributor_flush_v1705);
 
 /* clears the internal returns array in the distributor */
-void __vsym
-rte_distributor_clear_returns_v1705(struct rte_distributor *d)
+void
+rte_distributor_clear_returns(struct rte_distributor *d)
 {
 	unsigned int wkr;
 
@@ -608,13 +578,10 @@ rte_distributor_clear_returns_v1705(struct rte_distributor *d)
 		__atomic_store_n(&(d->bufs[wkr].retptr64[0]), 0,
 				__ATOMIC_RELEASE);
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_clear_returns, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_clear_returns(struct rte_distributor *d),
-		rte_distributor_clear_returns_v1705);
 
 /* creates a distributor instance */
-struct rte_distributor * __vsym
-rte_distributor_create_v1705(const char *name,
+struct rte_distributor *
+rte_distributor_create(const char *name,
 		unsigned int socket_id,
 		unsigned int num_workers,
 		unsigned int alg_type)
@@ -688,8 +655,3 @@ rte_distributor_create_v1705(const char *name,
 
 	return d;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_create, _v1705, 17.05);
-MAP_STATIC_SYMBOL(struct rte_distributor *rte_distributor_create(
-		const char *name, unsigned int socket_id,
-		unsigned int num_workers, unsigned int alg_type),
-		rte_distributor_create_v1705);
diff --git a/lib/librte_distributor/rte_distributor_v1705.h b/lib/librte_distributor/rte_distributor_v1705.h
deleted file mode 100644
index df4d9e8150..0000000000
--- a/lib/librte_distributor/rte_distributor_v1705.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2017 Intel Corporation
- */
-
-#ifndef _RTE_DISTRIB_V1705_H_
-#define _RTE_DISTRIB_V1705_H_
-
-/**
- * @file
- * RTE distributor
- *
- * The distributor is a component which is designed to pass packets
- * one-at-a-time to workers, with dynamic load balancing.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rte_distributor *
-rte_distributor_create_v1705(const char *name, unsigned int socket_id,
-		unsigned int num_workers,
-		unsigned int alg_type);
-
-int
-rte_distributor_process_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs);
-
-int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs);
-
-int
-rte_distributor_flush_v1705(struct rte_distributor *d);
-
-void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d);
-
-int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **pkts,
-	struct rte_mbuf **oldpkt, unsigned int retcount);
-
-int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **oldpkt, int num);
-
-void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count);
-
-int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **mbufs);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_v20.c
index 7a6fddf556..655944bdb3 100644
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ b/lib/librte_distributor/rte_distributor_v20.c
@@ -41,7 +41,6 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
 	/* Sync with distributor on GET_BUF flag. */
 	__atomic_store_n(&(buf->bufptr64), req, __ATOMIC_RELEASE);
 }
-VERSION_SYMBOL(rte_distributor_request_pkt, _v20, 2.0);
 
 struct rte_mbuf * __vsym
 rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
@@ -57,7 +56,6 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
 	int64_t ret = buf->bufptr64 >> RTE_DISTRIB_FLAG_BITS;
 	return (struct rte_mbuf *)((uintptr_t)ret);
 }
-VERSION_SYMBOL(rte_distributor_poll_pkt, _v20, 2.0);
 
 struct rte_mbuf * __vsym
 rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
@@ -69,7 +67,6 @@ rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
 		rte_pause();
 	return ret;
 }
-VERSION_SYMBOL(rte_distributor_get_pkt, _v20, 2.0);
 
 int __vsym
 rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
@@ -82,7 +79,6 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
 	__atomic_store_n(&(buf->bufptr64), req, __ATOMIC_RELEASE);
 	return 0;
 }
-VERSION_SYMBOL(rte_distributor_return_pkt, _v20, 2.0);
 
 /**** APIs called on distributor core ***/
 
@@ -318,7 +314,6 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 	d->returns.count = ret_count;
 	return num_mbufs;
 }
-VERSION_SYMBOL(rte_distributor_process, _v20, 2.0);
 
 /* return to the caller, packets returned from workers */
 int __vsym
@@ -339,7 +334,6 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
 
 	return retval;
 }
-VERSION_SYMBOL(rte_distributor_returned_pkts, _v20, 2.0);
 
 /* return the number of packets in-flight in a distributor, i.e. packets
  * being worked on or queued up in a backlog.
@@ -369,7 +363,6 @@ rte_distributor_flush_v20(struct rte_distributor_v20 *d)
 
 	return flushed;
 }
-VERSION_SYMBOL(rte_distributor_flush, _v20, 2.0);
 
 /* clears the internal returns array in the distributor */
 void __vsym
@@ -380,7 +373,6 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
 	memset(d->returns.mbufs, 0, sizeof(d->returns.mbufs));
 #endif
 }
-VERSION_SYMBOL(rte_distributor_clear_returns, _v20, 2.0);
 
 /* creates a distributor instance */
 struct rte_distributor_v20 * __vsym
@@ -424,4 +416,3 @@ rte_distributor_create_v20(const char *name,
 
 	return d;
 }
-VERSION_SYMBOL(rte_distributor_create, _v20, 2.0);
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v7 07/10] distributor: rename v2.0 ABI to _single suffix
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
                             ` (6 preceding siblings ...)
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 06/10] distributor: " Anatoly Burakov
@ 2019-11-08 16:25           ` Anatoly Burakov
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
                             ` (2 subsequent siblings)
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-08 16:25 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, David Hunt, john.mcnamara, ray.kinsella,
	bruce.richardson, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

The original ABI versioning was slightly misleading in that the
DPDK 2.0 ABI was really a single mode for the distributor, and is
used as such throughout the distributor code.

Fix this by renaming all _v20 API's to _single API's, and remove
symbol versioning.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
---

Notes:
    v4:
    - Changed it back to how it was with v2
    - Removed remaining v2.0 symbols
    
    v3:
    - Removed single mode from distributor as per Dave's comments
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_distributor/Makefile               |  2 +-
 lib/librte_distributor/distributor_private.h  | 10 +--
 lib/librte_distributor/meson.build            |  2 +-
 lib/librte_distributor/rte_distributor.c      | 24 +++----
 ...ributor_v20.c => rte_distributor_single.c} | 64 +++++++++----------
 ...ributor_v20.h => rte_distributor_single.h} | 26 ++++----
 .../rte_distributor_version.map               | 18 +-----
 7 files changed, 66 insertions(+), 80 deletions(-)
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (87%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)

diff --git a/lib/librte_distributor/Makefile b/lib/librte_distributor/Makefile
index 0ef80dcff4..d9d0089166 100644
--- a/lib/librte_distributor/Makefile
+++ b/lib/librte_distributor/Makefile
@@ -15,7 +15,7 @@ EXPORT_MAP := rte_distributor_version.map
 LIBABIVER := 1
 
 # all source are stored in SRCS-y
-SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_v20.c
+SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_single.c
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor.c
 ifeq ($(CONFIG_RTE_ARCH_X86),y)
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor_match_sse.c
diff --git a/lib/librte_distributor/distributor_private.h b/lib/librte_distributor/distributor_private.h
index c89371123e..489aef2acb 100644
--- a/lib/librte_distributor/distributor_private.h
+++ b/lib/librte_distributor/distributor_private.h
@@ -55,7 +55,7 @@ extern "C" {
  * the next cache line to worker 0, we pad this out to three cache lines.
  * Only 64-bits of the memory is actually used though.
  */
-union rte_distributor_buffer_v20 {
+union rte_distributor_buffer_single {
 	volatile int64_t bufptr64;
 	char pad[RTE_CACHE_LINE_SIZE*3];
 } __rte_cache_aligned;
@@ -80,8 +80,8 @@ struct rte_distributor_returned_pkts {
 	struct rte_mbuf *mbufs[RTE_DISTRIB_MAX_RETURNS];
 };
 
-struct rte_distributor_v20 {
-	TAILQ_ENTRY(rte_distributor_v20) next;    /**< Next in list. */
+struct rte_distributor_single {
+	TAILQ_ENTRY(rte_distributor_single) next;    /**< Next in list. */
 
 	char name[RTE_DISTRIBUTOR_NAMESIZE];  /**< Name of the ring. */
 	unsigned int num_workers;             /**< Number of workers polling */
@@ -96,7 +96,7 @@ struct rte_distributor_v20 {
 
 	struct rte_distributor_backlog backlog[RTE_DISTRIB_MAX_WORKERS];
 
-	union rte_distributor_buffer_v20 bufs[RTE_DISTRIB_MAX_WORKERS];
+	union rte_distributor_buffer_single bufs[RTE_DISTRIB_MAX_WORKERS];
 
 	struct rte_distributor_returned_pkts returns;
 };
@@ -154,7 +154,7 @@ struct rte_distributor {
 
 	enum rte_distributor_match_function dist_match_fn;
 
-	struct rte_distributor_v20 *d_v20;
+	struct rte_distributor_single *d_single;
 };
 
 void
diff --git a/lib/librte_distributor/meson.build b/lib/librte_distributor/meson.build
index c9617d7b14..50b91887b5 100644
--- a/lib/librte_distributor/meson.build
+++ b/lib/librte_distributor/meson.build
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-sources = files('rte_distributor.c', 'rte_distributor_v20.c')
+sources = files('rte_distributor.c', 'rte_distributor_single.c')
 if arch_subdir == 'x86'
 	sources += files('rte_distributor_match_sse.c')
 else
diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index a4c8ff6a96..6c5b0c86e8 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -17,7 +17,7 @@
 #include <rte_tailq.h>
 
 #include "rte_distributor.h"
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 #include "distributor_private.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
@@ -42,7 +42,7 @@ rte_distributor_request_pkt(struct rte_distributor *d,
 	volatile int64_t *retptr64;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		rte_distributor_request_pkt_v20(d->d_v20,
+		rte_distributor_request_pkt_single(d->d_single,
 			worker_id, oldpkt[0]);
 		return;
 	}
@@ -93,7 +93,8 @@ rte_distributor_poll_pkt(struct rte_distributor *d,
 	unsigned int i;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		pkts[0] = rte_distributor_poll_pkt_v20(d->d_v20, worker_id);
+		pkts[0] = rte_distributor_poll_pkt_single(d->d_single,
+			worker_id);
 		return (pkts[0]) ? 1 : 0;
 	}
 
@@ -133,7 +134,7 @@ rte_distributor_get_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (return_count <= 1) {
-			pkts[0] = rte_distributor_get_pkt_v20(d->d_v20,
+			pkts[0] = rte_distributor_get_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 			return (pkts[0]) ? 1 : 0;
 		} else
@@ -163,7 +164,7 @@ rte_distributor_return_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (num == 1)
-			return rte_distributor_return_pkt_v20(d->d_v20,
+			return rte_distributor_return_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 		else
 			return -EINVAL;
@@ -354,7 +355,8 @@ rte_distributor_process(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_process_v20(d->d_v20, mbufs, num_mbufs);
+		return rte_distributor_process_single(d->d_single,
+			mbufs, num_mbufs);
 	}
 
 	if (unlikely(num_mbufs == 0)) {
@@ -494,7 +496,7 @@ rte_distributor_returned_pkts(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_returned_pkts_v20(d->d_v20,
+		return rte_distributor_returned_pkts_single(d->d_single,
 				mbufs, max_mbufs);
 	}
 
@@ -537,7 +539,7 @@ rte_distributor_flush(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_flush_v20(d->d_v20);
+		return rte_distributor_flush_single(d->d_single);
 	}
 
 	flushed = total_outstanding(d);
@@ -568,7 +570,7 @@ rte_distributor_clear_returns(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		rte_distributor_clear_returns_v20(d->d_v20);
+		rte_distributor_clear_returns_single(d->d_single);
 		return;
 	}
 
@@ -610,9 +612,9 @@ rte_distributor_create(const char *name,
 			rte_errno = ENOMEM;
 			return NULL;
 		}
-		d->d_v20 = rte_distributor_create_v20(name,
+		d->d_single = rte_distributor_create_single(name,
 				socket_id, num_workers);
-		if (d->d_v20 == NULL) {
+		if (d->d_single == NULL) {
 			free(d);
 			/* rte_errno will have been set */
 			return NULL;
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_single.c
similarity index 87%
rename from lib/librte_distributor/rte_distributor_v20.c
rename to lib/librte_distributor/rte_distributor_single.c
index 655944bdb3..91d8824c64 100644
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ b/lib/librte_distributor/rte_distributor_single.c
@@ -15,10 +15,10 @@
 #include <rte_pause.h>
 #include <rte_tailq.h>
 
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 #include "distributor_private.h"
 
-TAILQ_HEAD(rte_distributor_list, rte_distributor_v20);
+TAILQ_HEAD(rte_distributor_list, rte_distributor_single);
 
 static struct rte_tailq_elem rte_distributor_tailq = {
 	.name = "RTE_DISTRIBUTOR",
@@ -27,11 +27,11 @@ EAL_REGISTER_TAILQ(rte_distributor_tailq)
 
 /**** APIs called by workers ****/
 
-void __vsym
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+void
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	int64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_GET_BUF;
 	while (unlikely(__atomic_load_n(&buf->bufptr64, __ATOMIC_RELAXED)
@@ -42,11 +42,11 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
 	__atomic_store_n(&(buf->bufptr64), req, __ATOMIC_RELEASE);
 }
 
-struct rte_mbuf * __vsym
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+struct rte_mbuf *
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	/* Sync with distributor. Acquire bufptr64. */
 	if (__atomic_load_n(&buf->bufptr64, __ATOMIC_ACQUIRE)
 		& RTE_DISTRIB_GET_BUF)
@@ -57,22 +57,22 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
 	return (struct rte_mbuf *)((uintptr_t)ret);
 }
 
-struct rte_mbuf * __vsym
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+struct rte_mbuf *
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
 	struct rte_mbuf *ret;
-	rte_distributor_request_pkt_v20(d, worker_id, oldpkt);
-	while ((ret = rte_distributor_poll_pkt_v20(d, worker_id)) == NULL)
+	rte_distributor_request_pkt_single(d, worker_id, oldpkt);
+	while ((ret = rte_distributor_poll_pkt_single(d, worker_id)) == NULL)
 		rte_pause();
 	return ret;
 }
 
-int __vsym
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+int
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	uint64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_RETURN_BUF;
 	/* Sync with distributor on RETURN_BUF flag. */
@@ -104,7 +104,7 @@ backlog_pop(struct rte_distributor_backlog *bl)
 
 /* stores a packet returned from a worker inside the returns array */
 static inline void
-store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
+store_return(uintptr_t oldbuf, struct rte_distributor_single *d,
 		unsigned *ret_start, unsigned *ret_count)
 {
 	/* store returns in a circular buffer - code is branch-free */
@@ -115,7 +115,7 @@ store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
 }
 
 static inline void
-handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
+handle_worker_shutdown(struct rte_distributor_single *d, unsigned int wkr)
 {
 	d->in_flight_tags[wkr] = 0;
 	d->in_flight_bitmask &= ~(1UL << wkr);
@@ -146,7 +146,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
 		 * Note that the tags were set before first level call
 		 * to rte_distributor_process.
 		 */
-		rte_distributor_process_v20(d, pkts, i);
+		rte_distributor_process_single(d, pkts, i);
 		bl->count = bl->start = 0;
 	}
 }
@@ -156,7 +156,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
  * to do a partial flush.
  */
 static int
-process_returns(struct rte_distributor_v20 *d)
+process_returns(struct rte_distributor_single *d)
 {
 	unsigned wkr;
 	unsigned flushed = 0;
@@ -200,8 +200,8 @@ process_returns(struct rte_distributor_v20 *d)
 }
 
 /* process a set of packets to distribute them to workers */
-int __vsym
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+int
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned num_mbufs)
 {
 	unsigned next_idx = 0;
@@ -316,8 +316,8 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 }
 
 /* return to the caller, packets returned from workers */
-int __vsym
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+int
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -339,7 +339,7 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
  * being worked on or queued up in a backlog.
  */
 static inline unsigned
-total_outstanding(const struct rte_distributor_v20 *d)
+total_outstanding(const struct rte_distributor_single *d)
 {
 	unsigned wkr, total_outstanding;
 
@@ -353,20 +353,20 @@ total_outstanding(const struct rte_distributor_v20 *d)
 
 /* flush the distributor, so that there are no outstanding packets in flight or
  * queued up. */
-int __vsym
-rte_distributor_flush_v20(struct rte_distributor_v20 *d)
+int
+rte_distributor_flush_single(struct rte_distributor_single *d)
 {
 	const unsigned flushed = total_outstanding(d);
 
 	while (total_outstanding(d) > 0)
-		rte_distributor_process_v20(d, NULL, 0);
+		rte_distributor_process_single(d, NULL, 0);
 
 	return flushed;
 }
 
 /* clears the internal returns array in the distributor */
-void __vsym
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
+void
+rte_distributor_clear_returns_single(struct rte_distributor_single *d)
 {
 	d->returns.start = d->returns.count = 0;
 #ifndef __OPTIMIZE__
@@ -375,12 +375,12 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
 }
 
 /* creates a distributor instance */
-struct rte_distributor_v20 * __vsym
-rte_distributor_create_v20(const char *name,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name,
 		unsigned socket_id,
 		unsigned num_workers)
 {
-	struct rte_distributor_v20 *d;
+	struct rte_distributor_single *d;
 	struct rte_distributor_list *distributor_list;
 	char mz_name[RTE_MEMZONE_NAMESIZE];
 	const struct rte_memzone *mz;
diff --git a/lib/librte_distributor/rte_distributor_v20.h b/lib/librte_distributor/rte_distributor_single.h
similarity index 89%
rename from lib/librte_distributor/rte_distributor_v20.h
rename to lib/librte_distributor/rte_distributor_single.h
index 12865658ba..2f80aa43d1 100644
--- a/lib/librte_distributor/rte_distributor_v20.h
+++ b/lib/librte_distributor/rte_distributor_single.h
@@ -2,8 +2,8 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
-#ifndef _RTE_DISTRIB_V20_H_
-#define _RTE_DISTRIB_V20_H_
+#ifndef _RTE_DISTRIB_SINGLE_H_
+#define _RTE_DISTRIB_SINGLE_H_
 
 /**
  * @file
@@ -19,7 +19,7 @@ extern "C" {
 
 #define RTE_DISTRIBUTOR_NAMESIZE 32 /**< Length of name for instance */
 
-struct rte_distributor_v20;
+struct rte_distributor_single;
 struct rte_mbuf;
 
 /**
@@ -38,8 +38,8 @@ struct rte_mbuf;
  * @return
  *   The newly created distributor instance
  */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name, unsigned int socket_id,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name, unsigned int socket_id,
 		unsigned int num_workers);
 
 /*  *** APIS to be called on the distributor lcore ***  */
@@ -74,7 +74,7 @@ rte_distributor_create_v20(const char *name, unsigned int socket_id,
  *   The number of mbufs processed.
  */
 int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs);
 
 /**
@@ -92,7 +92,7 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
  *   The number of mbufs returned in the mbufs array.
  */
 int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs);
 
 /**
@@ -107,7 +107,7 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
  *   The number of queued/in-flight packets that were completed by this call.
  */
 int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d);
+rte_distributor_flush_single(struct rte_distributor_single *d);
 
 /**
  * Clears the array of returned packets used as the source for the
@@ -119,7 +119,7 @@ rte_distributor_flush_v20(struct rte_distributor_v20 *d);
  *   The distributor instance to be used
  */
 void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
+rte_distributor_clear_returns_single(struct rte_distributor_single *d);
 
 /*  *** APIS to be called on the worker lcores ***  */
 /*
@@ -148,7 +148,7 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
  *   A new packet to be processed by the worker thread.
  */
 struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -164,7 +164,7 @@ rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet being processed by the worker
  */
 int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *mbuf);
 
 /**
@@ -188,7 +188,7 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet, if any, being processed by the worker
  */
 void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -208,7 +208,7 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
  *   packet is yet available.
  */
 struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id);
 
 #ifdef __cplusplus
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 3a285b394e..00e26b4804 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,19 +1,3 @@
-DPDK_2.0 {
-	global:
-
-	rte_distributor_clear_returns;
-	rte_distributor_create;
-	rte_distributor_flush;
-	rte_distributor_get_pkt;
-	rte_distributor_poll_pkt;
-	rte_distributor_process;
-	rte_distributor_request_pkt;
-	rte_distributor_return_pkt;
-	rte_distributor_returned_pkts;
-
-	local: *;
-};
-
 DPDK_17.05 {
 	global:
 
@@ -26,4 +10,4 @@ DPDK_17.05 {
 	rte_distributor_request_pkt;
 	rte_distributor_return_pkt;
 	rte_distributor_returned_pkts;
-} DPDK_2.0;
+};
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v7 08/10] drivers/octeontx: add missing public symbol
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
                             ` (7 preceding siblings ...)
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
@ 2019-11-08 16:25           ` Anatoly Burakov
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 09/10] build: change ABI version to 20.0 Anatoly Burakov
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 10/10] buildtools: add ABI versioning check script Anatoly Burakov
  10 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-08 16:25 UTC (permalink / raw)
  To: dev
  Cc: Jerin Jacob, john.mcnamara, ray.kinsella, bruce.richardson,
	thomas, david.marchand, pbhagavatula, stable

The logtype symbol was missing from the .map file. Add it.

Fixes: d8dd31652cf4 ("common/octeontx: move mbox to common folder")
Cc: pbhagavatula@caviumnetworks.com
Cc: stable@dpdk.org

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - add this patch to avoid compile breakage when bumping ABI

 drivers/common/octeontx/rte_common_octeontx_version.map | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index f04b3b7f8a..a9b3cff9bc 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,6 +1,7 @@
 DPDK_18.05 {
 	global:
 
+	octeontx_logtype_mbox;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
 	octeontx_mbox_send;
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v7 09/10] build: change ABI version to 20.0
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
                             ` (8 preceding siblings ...)
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
@ 2019-11-08 16:25           ` Anatoly Burakov
  2019-11-19 17:46             ` Thomas Monjalon
  2019-11-19 21:50             ` David Marchand
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 10/10] buildtools: add ABI versioning check script Anatoly Burakov
  10 siblings, 2 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-08 16:25 UTC (permalink / raw)
  To: dev
  Cc: Pawel Modrak, Nicolas Chautru, Hemant Agrawal, Sachin Saxena,
	Rosen Xu, Stephen Hemminger, Anoob Joseph, Tomasz Duszynski,
	Liron Himi, Jerin Jacob, Nithin Dabilpuram, Vamsi Attunuru,
	Lee Daly, Fiona Trahe, Ashish Gupta, Sunila Sahu, Declan Doherty,
	Pablo de Lara, Gagandeep Singh, Ravi Kumar, Akhil Goyal,
	Michael Shamis, Nagadheeraj Rottela, Srikanth Jampala,
	Ankur Dwivedi, Fan Zhang, Jay Zhou, Nipun Gupta,
	Mattias Rönnblom, Pavan Nikhilesh, Liang Ma, Peter Mccarthy,
	Harry van Haaren, Artem V. Andreev, Andrew Rybchenko,
	Olivier Matz, Gage Eads, John W. Linville, Xiaolong Ye, Qi Zhang,
	Shepard Siegel, Ed Czeck, John Miller, Igor Russkikh,
	Pavel Belous, Allain Legacy, Matt Peters, Rasesh Mody,
	Shahed Shaikh, Ajit Khaparde, Somnath Kotur, Chas Williams,
	Rahul Lakkireddy, Wenzhuo Lu, Marcin Wojtas, Michal Krawczyk,
	Guy Tzalik, Evgeny Schemeilin, Igor Chauskin, John Daley,
	Hyong Youb Kim, Gaetan Rivet, Xiao Wang, Ziyang Xuan,
	Xiaoyun Wang, Guoyang Zhou, Wei Hu (Xavier), Min Hu (Connor),
	Yisen Zhuang, Beilei Xing, Jingjing Wu, Qiming Yang,
	Konstantin Ananyev, Ferruh Yigit, Shijith Thotton,
	Srisivasubramanian Srinivasan, Jakub Grajciar, Matan Azrad,
	Shahaf Shuler, Viacheslav Ovsiienko, Zyta Szpak,
	K. Y. Srinivasan, Haiyang Zhang, Rastislav Cernay, Jan Remes,
	Alejandro Lucero, Tetsuya Mukawa, Kiran Kumar K,
	Bruce Richardson, Jasvinder Singh, Cristian Dumitrescu,
	Keith Wiles, Maciej Czekaj, Maxime Coquelin, Tiwei Bie,
	Zhihong Wang, Yong Wang, Tianfei zhang, Xiaoyun Li, Satha Rao,
	Shreyansh Jain, David Hunt, Byron Marohn, Yipeng Wang,
	Thomas Monjalon, Jiayu Hu, Sameh Gobriel, Reshma Pattan,
	Vladimir Medvedkin, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, ray.kinsella, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Merge all vesions in linker version script files to DPDK_20.0.

This commit was generated by running the following command:

:~/DPDK$ buildtools/update-abi.sh 20.0

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |   8 +-
 .../null/rte_pmd_bbdev_null_version.map       |   2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |   2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     | 113 +++---
 drivers/bus/fslmc/rte_bus_fslmc_version.map   | 154 ++++-----
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |  14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |   2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |  12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |  12 +-
 drivers/common/cpt/rte_common_cpt_version.map |   9 +-
 .../common/dpaax/rte_common_dpaax_version.map |  14 +-
 .../common/mvep/rte_common_mvep_version.map   |   6 +-
 .../octeontx/rte_common_octeontx_version.map  |   6 +-
 .../rte_common_octeontx2_version.map          |  16 +-
 .../compress/isal/rte_pmd_isal_version.map    |   2 +-
 .../rte_pmd_octeontx_compress_version.map     |   2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |   2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |   2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |   2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |   2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |   2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |   3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |   3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |  10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |  10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |   2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |   2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |   2 +-
 .../null/rte_pmd_null_crypto_version.map      |   2 +-
 .../rte_pmd_octeontx_crypto_version.map       |   3 +-
 .../rte_pmd_octeontx2_crypto_version.map      |   3 +-
 .../openssl/rte_pmd_openssl_version.map       |   2 +-
 .../rte_pmd_crypto_scheduler_version.map      |  19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |   2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |   2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |   2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |   3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |   2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |   2 +-
 .../rte_pmd_octeontx_event_version.map        |   2 +-
 .../rte_pmd_octeontx2_event_version.map       |   3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |   2 +-
 .../rte_pmd_skeleton_event_version.map        |   3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |   2 +-
 .../bucket/rte_mempool_bucket_version.map     |   3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |   2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |  12 +-
 .../octeontx/rte_mempool_octeontx_version.map |   2 +-
 .../rte_mempool_octeontx2_version.map         |   4 +-
 .../mempool/ring/rte_mempool_ring_version.map |   3 +-
 .../stack/rte_mempool_stack_version.map       |   3 +-
 .../af_packet/rte_pmd_af_packet_version.map   |   3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |   2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |   5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |   4 +-
 drivers/net/avp/rte_pmd_avp_version.map       |   2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |   2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |   3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |   4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |  47 +--
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |   3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |  11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |  12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |   3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |   3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |   3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |   3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |   3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |   3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |   3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |   4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |  65 +---
 drivers/net/iavf/rte_pmd_iavf_version.map     |   3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |   3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |   3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |   3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |  62 ++--
 drivers/net/kni/rte_pmd_kni_version.map       |   3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |   3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |   5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |   3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |   2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |   2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |   2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |   4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |   3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |   2 +-
 drivers/net/null/rte_pmd_null_version.map     |   3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |  10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |   3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |   3 +-
 drivers/net/pfe/rte_pmd_pfe_version.map       |   3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |   3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |  10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |   3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |   2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |   2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |   3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |   3 +-
 .../rte_pmd_vdev_netvsc_version.map           |   3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |  11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |   3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |   3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |   3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |   4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |   3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |   3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |   5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |   3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |   3 +-
 lib/librte_acl/rte_acl_version.map            |   2 +-
 .../rte_bitratestats_version.map              |   2 +-
 lib/librte_cfgfile/rte_cfgfile_version.map    |  34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |  10 +-
 .../rte_cryptodev_version.map                 | 102 ++----
 .../rte_distributor_version.map               |   4 +-
 lib/librte_eal/rte_eal_version.map            | 324 ++++++------------
 lib/librte_efd/rte_efd_version.map            |   2 +-
 lib/librte_ethdev/rte_ethdev_version.map      | 160 +++------
 lib/librte_eventdev/rte_eventdev_version.map  | 130 +++----
 lib/librte_gro/rte_gro_version.map            |   2 +-
 lib/librte_gso/rte_gso_version.map            |   2 +-
 lib/librte_hash/rte_hash_version.map          |  43 +--
 lib/librte_ip_frag/rte_ip_frag_version.map    |  10 +-
 lib/librte_jobstats/rte_jobstats_version.map  |  10 +-
 lib/librte_kni/rte_kni_version.map            |   2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |   4 +-
 .../rte_latencystats_version.map              |   2 +-
 lib/librte_lpm/rte_lpm_version.map            |  39 +--
 lib/librte_mbuf/rte_mbuf_version.map          |  49 +--
 lib/librte_member/rte_member_version.map      |   2 +-
 lib/librte_mempool/rte_mempool_version.map    |  44 +--
 lib/librte_meter/rte_meter_version.map        |  13 +-
 lib/librte_metrics/rte_metrics_version.map    |   2 +-
 lib/librte_net/rte_net_version.map            |  23 +-
 lib/librte_pci/rte_pci_version.map            |   2 +-
 lib/librte_pdump/rte_pdump_version.map        |   2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |  36 +-
 lib/librte_port/rte_port_version.map          |  64 +---
 lib/librte_power/rte_power_version.map        |  24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |   4 +-
 lib/librte_reorder/rte_reorder_version.map    |   8 +-
 lib/librte_ring/rte_ring_version.map          |  10 +-
 lib/librte_sched/rte_sched_version.map        |  14 +-
 lib/librte_security/rte_security_version.map  |   2 +-
 lib/librte_table/rte_table_version.map        |   2 +-
 lib/librte_timer/rte_timer_version.map        |  12 +-
 lib/librte_vhost/rte_vhost_version.map        |  52 +--
 148 files changed, 698 insertions(+), 1433 deletions(-)

diff --git a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
index f64b0f9c27..6bcea2cc7f 100644
--- a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
+++ b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
@@ -1,10 +1,10 @@
-DPDK_19.08 {
-    local: *;
+DPDK_20.0 {
+	local: *;
 };
 
 EXPERIMENTAL {
-    global:
+	global:
 
-    fpga_lte_fec_configure;
+	fpga_lte_fec_configure;
 
 };
diff --git a/drivers/baseband/null/rte_pmd_bbdev_null_version.map b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/null/rte_pmd_bbdev_null_version.map
+++ b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
+++ b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map
index cf428a54dc..e6ca4361e0 100644
--- a/drivers/bus/dpaa/rte_bus_dpaa_version.map
+++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	bman_acquire;
@@ -7,123 +7,90 @@ DPDK_17.11 {
 	bman_new_pool;
 	bman_query_free_buffers;
 	bman_release;
+	bman_thread_irq;
+	dpaa_logtype_eventdev;
 	dpaa_logtype_mempool;
 	dpaa_logtype_pmd;
 	dpaa_netcfg;
+	dpaa_svr_family;
 	fman_ccsr_map_fd;
 	fman_dealloc_bufs_mask_hi;
 	fman_dealloc_bufs_mask_lo;
 	fman_if_add_mac_addr;
 	fman_if_clear_mac_addr;
 	fman_if_disable_rx;
-	fman_if_enable_rx;
 	fman_if_discard_rx_errors;
-	fman_if_get_fc_threshold;
+	fman_if_enable_rx;
 	fman_if_get_fc_quanta;
+	fman_if_get_fc_threshold;
 	fman_if_get_fdoff;
+	fman_if_get_sg_enable;
 	fman_if_loopback_disable;
 	fman_if_loopback_enable;
 	fman_if_promiscuous_disable;
 	fman_if_promiscuous_enable;
 	fman_if_reset_mcast_filter_table;
 	fman_if_set_bp;
-	fman_if_set_fc_threshold;
 	fman_if_set_fc_quanta;
+	fman_if_set_fc_threshold;
 	fman_if_set_fdoff;
 	fman_if_set_ic_params;
 	fman_if_set_maxfrm;
 	fman_if_set_mcast_filter_table;
+	fman_if_set_sg;
 	fman_if_stats_get;
 	fman_if_stats_get_all;
 	fman_if_stats_reset;
 	fman_ip_rev;
+	fsl_qman_fq_portal_create;
 	netcfg_acquire;
 	netcfg_release;
-	qm_channel_caam;
-	qman_create_fq;
-	qman_dequeue;
-	qman_dqrr_consume;
-	qman_enqueue;
-	qman_enqueue_multi;
-	qman_fq_fqid;
-	qman_fq_state;
-	qman_init_fq;
-	qman_poll_dqrr;
-	qman_query_fq_np;
-	qman_set_vdq;
-	qman_reserve_fqid_range;
-	qman_volatile_dequeue;
-	rte_dpaa_driver_register;
-	rte_dpaa_driver_unregister;
-	rte_dpaa_mem_ptov;
-	rte_dpaa_portal_init;
-
-	local: *;
-};
-
-DPDK_18.02 {
-	global:
-
-	dpaa_logtype_eventdev;
-	dpaa_svr_family;
 	per_lcore_dpaa_io;
 	per_lcore_held_bufs;
+	qm_channel_caam;
 	qm_channel_pool1;
 	qman_alloc_cgrid_range;
 	qman_alloc_pool_range;
+	qman_clear_irq;
 	qman_create_cgr;
+	qman_create_fq;
 	qman_dca_index;
 	qman_delete_cgr;
+	qman_dequeue;
+	qman_dqrr_consume;
+	qman_enqueue;
+	qman_enqueue_multi;
 	qman_enqueue_multi_fq;
+	qman_fq_fqid;
+	qman_fq_portal_irqsource_add;
+	qman_fq_portal_irqsource_remove;
+	qman_fq_portal_thread_irq;
+	qman_fq_state;
+	qman_init_fq;
+	qman_irqsource_add;
+	qman_irqsource_remove;
 	qman_modify_cgr;
 	qman_oos_fq;
+	qman_poll_dqrr;
 	qman_portal_dequeue;
 	qman_portal_poll_rx;
 	qman_query_fq_frm_cnt;
+	qman_query_fq_np;
 	qman_release_cgrid_range;
+	qman_reserve_fqid_range;
 	qman_retire_fq;
+	qman_set_fq_lookup_table;
+	qman_set_vdq;
 	qman_static_dequeue_add;
-	rte_dpaa_portal_fq_close;
-	rte_dpaa_portal_fq_init;
-
-} DPDK_17.11;
-
-DPDK_18.08 {
-	global:
-
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-
-	bman_thread_irq;
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-	qman_clear_irq;
-
-	qman_irqsource_add;
-	qman_irqsource_remove;
 	qman_thread_fd;
 	qman_thread_irq;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	qman_set_fq_lookup_table;
-
-} DPDK_18.11;
-
-DPDK_19.11 {
-	global:
-
-	fsl_qman_fq_portal_create;
-	qman_fq_portal_irqsource_add;
-	qman_fq_portal_irqsource_remove;
-	qman_fq_portal_thread_irq;
-
-} DPDK_19.05;
+	qman_volatile_dequeue;
+	rte_dpaa_driver_register;
+	rte_dpaa_driver_unregister;
+	rte_dpaa_mem_ptov;
+	rte_dpaa_portal_fq_close;
+	rte_dpaa_portal_fq_init;
+	rte_dpaa_portal_init;
+
+	local: *;
+};
diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map
index 4da787236b..fe45575046 100644
--- a/drivers/bus/fslmc/rte_bus_fslmc_version.map
+++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map
@@ -1,32 +1,67 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
+	dpaa2_affine_qbman_ethrx_swp;
 	dpaa2_affine_qbman_swp;
 	dpaa2_alloc_dpbp_dev;
 	dpaa2_alloc_dq_storage;
+	dpaa2_dpbp_supported;
+	dpaa2_dqrr_size;
+	dpaa2_eqcr_size;
 	dpaa2_free_dpbp_dev;
 	dpaa2_free_dq_storage;
+	dpaa2_free_eq_descriptors;
+	dpaa2_get_qbman_swp;
+	dpaa2_io_portal;
+	dpaa2_svr_family;
+	dpaa2_virt_mode;
 	dpbp_disable;
 	dpbp_enable;
 	dpbp_get_attributes;
 	dpbp_get_num_free_bufs;
 	dpbp_open;
 	dpbp_reset;
+	dpci_get_opr;
+	dpci_set_opr;
+	dpci_set_rx_queue;
+	dpcon_get_attributes;
+	dpcon_open;
+	dpdmai_close;
+	dpdmai_disable;
+	dpdmai_enable;
+	dpdmai_get_attributes;
+	dpdmai_get_rx_queue;
+	dpdmai_get_tx_queue;
+	dpdmai_open;
+	dpdmai_set_rx_queue;
+	dpio_add_static_dequeue_channel;
 	dpio_close;
 	dpio_disable;
 	dpio_enable;
 	dpio_get_attributes;
 	dpio_open;
+	dpio_remove_static_dequeue_channel;
 	dpio_reset;
 	dpio_set_stashing_destination;
+	mc_get_soc_version;
+	mc_get_version;
 	mc_send_command;
 	per_lcore__dpaa2_io;
+	per_lcore_dpaa2_held_bufs;
 	qbman_check_command_complete;
+	qbman_check_new_result;
 	qbman_eq_desc_clear;
+	qbman_eq_desc_set_dca;
 	qbman_eq_desc_set_fq;
 	qbman_eq_desc_set_no_orp;
+	qbman_eq_desc_set_orp;
 	qbman_eq_desc_set_qd;
 	qbman_eq_desc_set_response;
+	qbman_eq_desc_set_token;
+	qbman_fq_query_state;
+	qbman_fq_state_frame_count;
+	qbman_get_dqrr_from_idx;
+	qbman_get_dqrr_idx;
 	qbman_pull_desc_clear;
 	qbman_pull_desc_set_fq;
 	qbman_pull_desc_set_numframes;
@@ -35,112 +70,43 @@ DPDK_17.05 {
 	qbman_release_desc_set_bpid;
 	qbman_result_DQ_fd;
 	qbman_result_DQ_flags;
-	qbman_result_has_new_result;
-	qbman_swp_acquire;
-	qbman_swp_pull;
-	qbman_swp_release;
-	rte_fslmc_driver_register;
-	rte_fslmc_driver_unregister;
-	rte_fslmc_vfio_dmamap;
-	rte_mcp_ptr_list;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	dpaa2_io_portal;
-	dpaa2_get_qbman_swp;
-	dpci_set_rx_queue;
-	dpcon_open;
-	dpcon_get_attributes;
-	dpio_add_static_dequeue_channel;
-	dpio_remove_static_dequeue_channel;
-	mc_get_soc_version;
-	mc_get_version;
-	qbman_check_new_result;
-	qbman_eq_desc_set_dca;
-	qbman_get_dqrr_from_idx;
-	qbman_get_dqrr_idx;
 	qbman_result_DQ_fqd_ctx;
+	qbman_result_DQ_odpid;
+	qbman_result_DQ_seqnum;
 	qbman_result_SCN_state;
+	qbman_result_eqresp_fd;
+	qbman_result_eqresp_rc;
+	qbman_result_eqresp_rspid;
+	qbman_result_eqresp_set_rspid;
+	qbman_result_has_new_result;
+	qbman_swp_acquire;
 	qbman_swp_dqrr_consume;
+	qbman_swp_dqrr_idx_consume;
 	qbman_swp_dqrr_next;
 	qbman_swp_enqueue_multiple;
 	qbman_swp_enqueue_multiple_desc;
+	qbman_swp_enqueue_multiple_fd;
 	qbman_swp_interrupt_clear_status;
+	qbman_swp_prefetch_dqrr_next;
+	qbman_swp_pull;
 	qbman_swp_push_set;
+	qbman_swp_release;
 	rte_dpaa2_alloc_dpci_dev;
-	rte_fslmc_object_register;
-	rte_global_active_dqs_list;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	dpaa2_dpbp_supported;
 	rte_dpaa2_dev_type;
+	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_intr_disable;
 	rte_dpaa2_intr_enable;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	dpaa2_svr_family;
-	dpaa2_virt_mode;
-	per_lcore_dpaa2_held_bufs;
-	qbman_fq_query_state;
-	qbman_fq_state_frame_count;
-	qbman_swp_dqrr_idx_consume;
-	qbman_swp_prefetch_dqrr_next;
-	rte_fslmc_get_device_count;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	dpaa2_affine_qbman_ethrx_swp;
-	dpdmai_close;
-	dpdmai_disable;
-	dpdmai_enable;
-	dpdmai_get_attributes;
-	dpdmai_get_rx_queue;
-	dpdmai_get_tx_queue;
-	dpdmai_open;
-	dpdmai_set_rx_queue;
-	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_memsegs;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-	dpaa2_dqrr_size;
-	dpaa2_eqcr_size;
-	dpci_get_opr;
-	dpci_set_opr;
-
-} DPDK_18.05;
-
-DPDK_19.05 {
-	global:
-	dpaa2_free_eq_descriptors;
-
-	qbman_eq_desc_set_orp;
-	qbman_eq_desc_set_token;
-	qbman_result_DQ_odpid;
-	qbman_result_DQ_seqnum;
-	qbman_result_eqresp_fd;
-	qbman_result_eqresp_rc;
-	qbman_result_eqresp_rspid;
-	qbman_result_eqresp_set_rspid;
-	qbman_swp_enqueue_multiple_fd;
-} DPDK_18.11;
+	rte_fslmc_driver_register;
+	rte_fslmc_driver_unregister;
+	rte_fslmc_get_device_count;
+	rte_fslmc_object_register;
+	rte_fslmc_vfio_dmamap;
+	rte_global_active_dqs_list;
+	rte_mcp_ptr_list;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/bus/ifpga/rte_bus_ifpga_version.map b/drivers/bus/ifpga/rte_bus_ifpga_version.map
index 964c9a9c45..05b4a28c1b 100644
--- a/drivers/bus/ifpga/rte_bus_ifpga_version.map
+++ b/drivers/bus/ifpga/rte_bus_ifpga_version.map
@@ -1,17 +1,11 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
-	rte_ifpga_get_integer32_arg;
-	rte_ifpga_get_string_arg;
 	rte_ifpga_driver_register;
 	rte_ifpga_driver_unregister;
+	rte_ifpga_find_afu_by_name;
+	rte_ifpga_get_integer32_arg;
+	rte_ifpga_get_string_arg;
 
 	local: *;
 };
-
-DPDK_19.05 {
-	global:
-
-	rte_ifpga_find_afu_by_name;
-
-} DPDK_18.05;
diff --git a/drivers/bus/pci/rte_bus_pci_version.map b/drivers/bus/pci/rte_bus_pci_version.map
index 27e9c4f101..012d817e14 100644
--- a/drivers/bus/pci/rte_bus_pci_version.map
+++ b/drivers/bus/pci/rte_bus_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pci_dump;
diff --git a/drivers/bus/vdev/rte_bus_vdev_version.map b/drivers/bus/vdev/rte_bus_vdev_version.map
index 590cf9b437..5abb10ecb0 100644
--- a/drivers/bus/vdev/rte_bus_vdev_version.map
+++ b/drivers/bus/vdev/rte_bus_vdev_version.map
@@ -1,18 +1,12 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
+	rte_vdev_add_custom_scan;
 	rte_vdev_init;
 	rte_vdev_register;
+	rte_vdev_remove_custom_scan;
 	rte_vdev_uninit;
 	rte_vdev_unregister;
 
 	local: *;
 };
-
-DPDK_18.02 {
-	global:
-
-	rte_vdev_add_custom_scan;
-	rte_vdev_remove_custom_scan;
-
-} DPDK_17.11;
diff --git a/drivers/bus/vmbus/rte_bus_vmbus_version.map b/drivers/bus/vmbus/rte_bus_vmbus_version.map
index ae231ad329..cbaaebc06c 100644
--- a/drivers/bus/vmbus/rte_bus_vmbus_version.map
+++ b/drivers/bus/vmbus/rte_bus_vmbus_version.map
@@ -1,6 +1,4 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_vmbus_chan_close;
@@ -20,6 +18,7 @@ DPDK_18.08 {
 	rte_vmbus_probe;
 	rte_vmbus_register;
 	rte_vmbus_scan;
+	rte_vmbus_set_latency;
 	rte_vmbus_sub_channel_index;
 	rte_vmbus_subchan_open;
 	rte_vmbus_unmap_device;
@@ -27,10 +26,3 @@ DPDK_18.08 {
 
 	local: *;
 };
-
-DPDK_18.11 {
-	global:
-
-	rte_vmbus_set_latency;
-
-} DPDK_18.08;
diff --git a/drivers/common/cpt/rte_common_cpt_version.map b/drivers/common/cpt/rte_common_cpt_version.map
index 382ec4bd44..7f1929d58e 100644
--- a/drivers/common/cpt/rte_common_cpt_version.map
+++ b/drivers/common/cpt/rte_common_cpt_version.map
@@ -1,14 +1,9 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
+	cpt_pmd_ops_helper_asym_get_mlen;
 	cpt_pmd_ops_helper_get_mlen_direct_mode;
 	cpt_pmd_ops_helper_get_mlen_sg_mode;
-};
-
-DPDK_19.11 {
-	global:
-
-	cpt_pmd_ops_helper_asym_get_mlen;
 
 	local: *;
 };
diff --git a/drivers/common/dpaax/rte_common_dpaax_version.map b/drivers/common/dpaax/rte_common_dpaax_version.map
index a7699ae4dd..f72eba761d 100644
--- a/drivers/common/dpaax/rte_common_dpaax_version.map
+++ b/drivers/common/dpaax/rte_common_dpaax_version.map
@@ -1,29 +1,23 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	dpaax_iova_table_update;
 	dpaax_iova_table_depopulate;
 	dpaax_iova_table_dump;
 	dpaax_iova_table_p;
 	dpaax_iova_table_populate;
-
-	local: *;
-};
-
-DPDK_19.11 {
-	global:
+	dpaax_iova_table_update;
 	of_device_is_available;
 	of_device_is_compatible;
 	of_find_compatible_node;
 	of_find_node_by_phandle;
 	of_get_address;
 	of_get_mac_address;
+	of_get_next_child;
 	of_get_parent;
 	of_get_property;
 	of_init_path;
 	of_n_addr_cells;
 	of_translate_address;
-	of_get_next_child;
 
 	local: *;
-} DPDK_18.11;
+};
diff --git a/drivers/common/mvep/rte_common_mvep_version.map b/drivers/common/mvep/rte_common_mvep_version.map
index c71722d79f..030928439d 100644
--- a/drivers/common/mvep/rte_common_mvep_version.map
+++ b/drivers/common/mvep/rte_common_mvep_version.map
@@ -1,6 +1,8 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	rte_mvep_init;
 	rte_mvep_deinit;
+	rte_mvep_init;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index a9b3cff9bc..c15fb89112 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,8 +1,10 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
 	octeontx_logtype_mbox;
+	octeontx_mbox_send;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
-	octeontx_mbox_send;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx2/rte_common_octeontx2_version.map b/drivers/common/octeontx2/rte_common_octeontx2_version.map
index 4400120da0..adad21a2d6 100644
--- a/drivers/common/octeontx2/rte_common_octeontx2_version.map
+++ b/drivers/common/octeontx2/rte_common_octeontx2_version.map
@@ -1,39 +1,35 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	otx2_dev_active_vfs;
 	otx2_dev_fini;
 	otx2_dev_priv_init;
-
+	otx2_disable_irqs;
+	otx2_intra_dev_get_cfg;
 	otx2_logtype_base;
 	otx2_logtype_dpi;
 	otx2_logtype_mbox;
+	otx2_logtype_nix;
 	otx2_logtype_npa;
 	otx2_logtype_npc;
-	otx2_logtype_nix;
 	otx2_logtype_sso;
-	otx2_logtype_tm;
 	otx2_logtype_tim;
-
+	otx2_logtype_tm;
 	otx2_mbox_alloc_msg_rsp;
 	otx2_mbox_get_rsp;
 	otx2_mbox_get_rsp_tmo;
 	otx2_mbox_id2name;
 	otx2_mbox_msg_send;
 	otx2_mbox_wait_for_rsp;
-
-	otx2_intra_dev_get_cfg;
 	otx2_npa_lf_active;
 	otx2_npa_lf_obj_get;
 	otx2_npa_lf_obj_ref;
 	otx2_npa_pf_func_get;
 	otx2_npa_set_defaults;
+	otx2_register_irq;
 	otx2_sso_pf_func_get;
 	otx2_sso_pf_func_set;
-
-	otx2_disable_irqs;
 	otx2_unregister_irq;
-	otx2_register_irq;
 
 	local: *;
 };
diff --git a/drivers/compress/isal/rte_pmd_isal_version.map b/drivers/compress/isal/rte_pmd_isal_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/compress/isal/rte_pmd_isal_version.map
+++ b/drivers/compress/isal/rte_pmd_isal_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
+++ b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/qat/rte_pmd_qat_version.map b/drivers/compress/qat/rte_pmd_qat_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/qat/rte_pmd_qat_version.map
+++ b/drivers/compress/qat/rte_pmd_qat_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/zlib/rte_pmd_zlib_version.map b/drivers/compress/zlib/rte_pmd_zlib_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/zlib/rte_pmd_zlib_version.map
+++ b/drivers/compress/zlib/rte_pmd_zlib_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
+++ b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
+++ b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/armv8/rte_pmd_armv8_version.map b/drivers/crypto/armv8/rte_pmd_armv8_version.map
index 1f84b68a83..f9f17e4f6e 100644
--- a/drivers/crypto/armv8/rte_pmd_armv8_version.map
+++ b/drivers/crypto/armv8/rte_pmd_armv8_version.map
@@ -1,3 +1,3 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
+++ b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/ccp/rte_pmd_ccp_version.map b/drivers/crypto/ccp/rte_pmd_ccp_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/crypto/ccp/rte_pmd_ccp_version.map
+++ b/drivers/crypto/ccp/rte_pmd_ccp_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
index 0bfb986d0b..5952d645fd 100644
--- a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
+++ b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_sec_eventq_attach;
 	dpaa2_sec_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
index cc7f2162e0..8580fa13db 100644
--- a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
+++ b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_19.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa_sec_eventq_attach;
 	dpaa_sec_eventq_detach;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
index 8ffeca934e..f9f17e4f6e 100644
--- a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
+++ b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
@@ -1,3 +1,3 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
+++ b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
index 406964d1fc..f9f17e4f6e 100644
--- a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
+++ b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/null/rte_pmd_null_crypto_version.map b/drivers/crypto/null/rte_pmd_null_crypto_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/null/rte_pmd_null_crypto_version.map
+++ b/drivers/crypto/null/rte_pmd_null_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
+++ b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/octeontx2/rte_pmd_octeontx2_crypto_version.map b/drivers/crypto/octeontx2/rte_pmd_octeontx2_crypto_version.map
index b7b7c91683..f9f17e4f6e 100644
--- a/drivers/crypto/octeontx2/rte_pmd_octeontx2_crypto_version.map
+++ b/drivers/crypto/octeontx2/rte_pmd_octeontx2_crypto_version.map
@@ -1,4 +1,3 @@
-DPDK_19.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/openssl/rte_pmd_openssl_version.map b/drivers/crypto/openssl/rte_pmd_openssl_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/openssl/rte_pmd_openssl_version.map
+++ b/drivers/crypto/openssl/rte_pmd_openssl_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
index 5c43127cf2..077afedce7 100644
--- a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
+++ b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
@@ -1,21 +1,16 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_cryptodev_scheduler_load_user_scheduler;
-	rte_cryptodev_scheduler_slave_attach;
-	rte_cryptodev_scheduler_slave_detach;
-	rte_cryptodev_scheduler_ordering_set;
-	rte_cryptodev_scheduler_ordering_get;
-
-};
-
-DPDK_17.05 {
-	global:
-
 	rte_cryptodev_scheduler_mode_get;
 	rte_cryptodev_scheduler_mode_set;
 	rte_cryptodev_scheduler_option_get;
 	rte_cryptodev_scheduler_option_set;
+	rte_cryptodev_scheduler_ordering_get;
+	rte_cryptodev_scheduler_ordering_set;
+	rte_cryptodev_scheduler_slave_attach;
+	rte_cryptodev_scheduler_slave_detach;
 	rte_cryptodev_scheduler_slaves_get;
 
-} DPDK_17.02;
+	local: *;
+};
diff --git a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
+++ b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
+++ b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/zuc/rte_pmd_zuc_version.map b/drivers/crypto/zuc/rte_pmd_zuc_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/zuc/rte_pmd_zuc_version.map
+++ b/drivers/crypto/zuc/rte_pmd_zuc_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
+++ b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
index 1c0b7559dc..f9f17e4f6e 100644
--- a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
+++ b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dsw/rte_pmd_dsw_event_version.map b/drivers/event/dsw/rte_pmd_dsw_event_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/event/dsw/rte_pmd_dsw_event_version.map
+++ b/drivers/event/dsw/rte_pmd_dsw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
+++ b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
index 41c65c8c9c..f9f17e4f6e 100644
--- a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
+++ b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	local: *;
 };
-
diff --git a/drivers/event/opdl/rte_pmd_opdl_event_version.map b/drivers/event/opdl/rte_pmd_opdl_event_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/event/opdl/rte_pmd_opdl_event_version.map
+++ b/drivers/event/opdl/rte_pmd_opdl_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
+++ b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/sw/rte_pmd_sw_event_version.map b/drivers/event/sw/rte_pmd_sw_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/sw/rte_pmd_sw_event_version.map
+++ b/drivers/event/sw/rte_pmd_sw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/bucket/rte_mempool_bucket_version.map b/drivers/mempool/bucket/rte_mempool_bucket_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/mempool/bucket/rte_mempool_bucket_version.map
+++ b/drivers/mempool/bucket/rte_mempool_bucket_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
index 60bf50b2d1..9eebaf7ffd 100644
--- a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
+++ b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa_bpid_info;
diff --git a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
index b45e7a9ac1..cd4bc88273 100644
--- a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
+++ b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
@@ -1,16 +1,10 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa2_bpid_info;
 	rte_dpaa2_mbuf_alloc_bulk;
-
-	local: *;
-};
-
-DPDK_18.05 {
-	global:
-
 	rte_dpaa2_mbuf_from_buf_addr;
 	rte_dpaa2_mbuf_pool_bpid;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
+++ b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
index d703368c31..d4f81aed8e 100644
--- a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
+++ b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
@@ -1,8 +1,8 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
-	otx2_npa_lf_init;
 	otx2_npa_lf_fini;
+	otx2_npa_lf_init;
 
 	local: *;
 };
diff --git a/drivers/mempool/ring/rte_mempool_ring_version.map b/drivers/mempool/ring/rte_mempool_ring_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/ring/rte_mempool_ring_version.map
+++ b/drivers/mempool/ring/rte_mempool_ring_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/stack/rte_mempool_stack_version.map b/drivers/mempool/stack/rte_mempool_stack_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/stack/rte_mempool_stack_version.map
+++ b/drivers/mempool/stack/rte_mempool_stack_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_packet/rte_pmd_af_packet_version.map b/drivers/net/af_packet/rte_pmd_af_packet_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/af_packet/rte_pmd_af_packet_version.map
+++ b/drivers/net/af_packet/rte_pmd_af_packet_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
index c6db030fe6..f9f17e4f6e 100644
--- a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
+++ b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
@@ -1,3 +1,3 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ark/rte_pmd_ark_version.map b/drivers/net/ark/rte_pmd_ark_version.map
index 1062e0429f..f9f17e4f6e 100644
--- a/drivers/net/ark/rte_pmd_ark_version.map
+++ b/drivers/net/ark/rte_pmd_ark_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-	 local: *;
-
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/atlantic/rte_pmd_atlantic_version.map b/drivers/net/atlantic/rte_pmd_atlantic_version.map
index b16faa999f..9b04838d84 100644
--- a/drivers/net/atlantic/rte_pmd_atlantic_version.map
+++ b/drivers/net/atlantic/rte_pmd_atlantic_version.map
@@ -1,5 +1,4 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
 
@@ -13,4 +12,3 @@ EXPERIMENTAL {
 	rte_pmd_atl_macsec_select_txsa;
 	rte_pmd_atl_macsec_select_rxsa;
 };
-
diff --git a/drivers/net/avp/rte_pmd_avp_version.map b/drivers/net/avp/rte_pmd_avp_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/net/avp/rte_pmd_avp_version.map
+++ b/drivers/net/avp/rte_pmd_avp_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/axgbe/rte_pmd_axgbe_version.map b/drivers/net/axgbe/rte_pmd_axgbe_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/net/axgbe/rte_pmd_axgbe_version.map
+++ b/drivers/net/axgbe/rte_pmd_axgbe_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
+++ b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnxt/rte_pmd_bnxt_version.map b/drivers/net/bnxt/rte_pmd_bnxt_version.map
index 4750d40ad6..bb52562347 100644
--- a/drivers/net/bnxt/rte_pmd_bnxt_version.map
+++ b/drivers/net/bnxt/rte_pmd_bnxt_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_bnxt_get_vf_rx_status;
@@ -10,13 +10,13 @@ DPDK_17.08 {
 	rte_pmd_bnxt_set_tx_loopback;
 	rte_pmd_bnxt_set_vf_mac_addr;
 	rte_pmd_bnxt_set_vf_mac_anti_spoof;
+	rte_pmd_bnxt_set_vf_persist_stats;
 	rte_pmd_bnxt_set_vf_rate_limit;
 	rte_pmd_bnxt_set_vf_rxmode;
 	rte_pmd_bnxt_set_vf_vlan_anti_spoof;
 	rte_pmd_bnxt_set_vf_vlan_filter;
 	rte_pmd_bnxt_set_vf_vlan_insert;
 	rte_pmd_bnxt_set_vf_vlan_stripq;
-	rte_pmd_bnxt_set_vf_persist_stats;
 
 	local: *;
 };
diff --git a/drivers/net/bonding/rte_pmd_bond_version.map b/drivers/net/bonding/rte_pmd_bond_version.map
index 00d955c481..270c7d5d55 100644
--- a/drivers/net/bonding/rte_pmd_bond_version.map
+++ b/drivers/net/bonding/rte_pmd_bond_version.map
@@ -1,9 +1,21 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_bond_8023ad_agg_selection_get;
+	rte_eth_bond_8023ad_agg_selection_set;
+	rte_eth_bond_8023ad_conf_get;
+	rte_eth_bond_8023ad_dedicated_queues_disable;
+	rte_eth_bond_8023ad_dedicated_queues_enable;
+	rte_eth_bond_8023ad_ext_collect;
+	rte_eth_bond_8023ad_ext_collect_get;
+	rte_eth_bond_8023ad_ext_distrib;
+	rte_eth_bond_8023ad_ext_distrib_get;
+	rte_eth_bond_8023ad_ext_slowtx;
+	rte_eth_bond_8023ad_setup;
 	rte_eth_bond_8023ad_slave_info;
 	rte_eth_bond_active_slaves_get;
 	rte_eth_bond_create;
+	rte_eth_bond_free;
 	rte_eth_bond_link_monitoring_set;
 	rte_eth_bond_mac_address_reset;
 	rte_eth_bond_mac_address_set;
@@ -19,36 +31,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	rte_eth_bond_free;
-
-} DPDK_2.0;
-
-DPDK_16.04 {
-};
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_bond_8023ad_ext_collect;
-	rte_eth_bond_8023ad_ext_collect_get;
-	rte_eth_bond_8023ad_ext_distrib;
-	rte_eth_bond_8023ad_ext_distrib_get;
-	rte_eth_bond_8023ad_ext_slowtx;
-
-} DPDK_16.04;
-
-DPDK_17.08 {
-	global:
-
-	rte_eth_bond_8023ad_dedicated_queues_enable;
-	rte_eth_bond_8023ad_dedicated_queues_disable;
-	rte_eth_bond_8023ad_agg_selection_get;
-	rte_eth_bond_8023ad_agg_selection_set;
-	rte_eth_bond_8023ad_conf_get;
-	rte_eth_bond_8023ad_setup;
-
-} DPDK_16.07;
diff --git a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
+++ b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/dpaa/rte_pmd_dpaa_version.map b/drivers/net/dpaa/rte_pmd_dpaa_version.map
index 8cb4500b51..f403a1526d 100644
--- a/drivers/net/dpaa/rte_pmd_dpaa_version.map
+++ b/drivers/net/dpaa/rte_pmd_dpaa_version.map
@@ -1,12 +1,9 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	dpaa_eth_eventq_attach;
 	dpaa_eth_eventq_detach;
 	rte_pmd_dpaa_set_tx_loopback;
-} DPDK_17.11;
+
+	local: *;
+};
diff --git a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
index d1b4cdb232..f2bb793319 100644
--- a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
+++ b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
@@ -1,15 +1,11 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_eth_eventq_attach;
 	dpaa2_eth_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
@@ -17,4 +13,4 @@ EXPERIMENTAL {
 	rte_pmd_dpaa2_mux_flow_create;
 	rte_pmd_dpaa2_set_custom_hash;
 	rte_pmd_dpaa2_set_timestamp;
-} DPDK_17.11;
+};
diff --git a/drivers/net/e1000/rte_pmd_e1000_version.map b/drivers/net/e1000/rte_pmd_e1000_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/e1000/rte_pmd_e1000_version.map
+++ b/drivers/net/e1000/rte_pmd_e1000_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ena/rte_pmd_ena_version.map b/drivers/net/ena/rte_pmd_ena_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/ena/rte_pmd_ena_version.map
+++ b/drivers/net/ena/rte_pmd_ena_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enetc/rte_pmd_enetc_version.map b/drivers/net/enetc/rte_pmd_enetc_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/net/enetc/rte_pmd_enetc_version.map
+++ b/drivers/net/enetc/rte_pmd_enetc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enic/rte_pmd_enic_version.map b/drivers/net/enic/rte_pmd_enic_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/enic/rte_pmd_enic_version.map
+++ b/drivers/net/enic/rte_pmd_enic_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/failsafe/rte_pmd_failsafe_version.map b/drivers/net/failsafe/rte_pmd_failsafe_version.map
index b6d2840be4..f9f17e4f6e 100644
--- a/drivers/net/failsafe/rte_pmd_failsafe_version.map
+++ b/drivers/net/failsafe/rte_pmd_failsafe_version.map
@@ -1,4 +1,3 @@
-DPDK_17.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/fm10k/rte_pmd_fm10k_version.map b/drivers/net/fm10k/rte_pmd_fm10k_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/fm10k/rte_pmd_fm10k_version.map
+++ b/drivers/net/fm10k/rte_pmd_fm10k_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hinic/rte_pmd_hinic_version.map b/drivers/net/hinic/rte_pmd_hinic_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/hinic/rte_pmd_hinic_version.map
+++ b/drivers/net/hinic/rte_pmd_hinic_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map b/drivers/net/hns3/rte_pmd_hns3_version.map
index 35e5f2debb..f9f17e4f6e 100644
--- a/drivers/net/hns3/rte_pmd_hns3_version.map
+++ b/drivers/net/hns3/rte_pmd_hns3_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
-	 local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/i40e/rte_pmd_i40e_version.map b/drivers/net/i40e/rte_pmd_i40e_version.map
index cccd5768c2..a80e69b93e 100644
--- a/drivers/net/i40e/rte_pmd_i40e_version.map
+++ b/drivers/net/i40e/rte_pmd_i40e_version.map
@@ -1,23 +1,34 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_i40e_add_vf_mac_addr;
+	rte_pmd_i40e_flow_add_del_packet_template;
+	rte_pmd_i40e_flow_type_mapping_get;
+	rte_pmd_i40e_flow_type_mapping_reset;
+	rte_pmd_i40e_flow_type_mapping_update;
+	rte_pmd_i40e_get_ddp_info;
+	rte_pmd_i40e_get_ddp_list;
 	rte_pmd_i40e_get_vf_stats;
+	rte_pmd_i40e_inset_get;
+	rte_pmd_i40e_inset_set;
 	rte_pmd_i40e_ping_vfs;
+	rte_pmd_i40e_process_ddp_package;
 	rte_pmd_i40e_ptype_mapping_get;
 	rte_pmd_i40e_ptype_mapping_replace;
 	rte_pmd_i40e_ptype_mapping_reset;
 	rte_pmd_i40e_ptype_mapping_update;
+	rte_pmd_i40e_query_vfid_by_mac;
 	rte_pmd_i40e_reset_vf_stats;
+	rte_pmd_i40e_rss_queue_region_conf;
+	rte_pmd_i40e_set_tc_strict_prio;
 	rte_pmd_i40e_set_tx_loopback;
 	rte_pmd_i40e_set_vf_broadcast;
 	rte_pmd_i40e_set_vf_mac_addr;
 	rte_pmd_i40e_set_vf_mac_anti_spoof;
+	rte_pmd_i40e_set_vf_max_bw;
 	rte_pmd_i40e_set_vf_multicast_promisc;
+	rte_pmd_i40e_set_vf_tc_bw_alloc;
+	rte_pmd_i40e_set_vf_tc_max_bw;
 	rte_pmd_i40e_set_vf_unicast_promisc;
 	rte_pmd_i40e_set_vf_vlan_anti_spoof;
 	rte_pmd_i40e_set_vf_vlan_filter;
@@ -25,43 +36,5 @@ DPDK_17.02 {
 	rte_pmd_i40e_set_vf_vlan_stripq;
 	rte_pmd_i40e_set_vf_vlan_tag;
 
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_pmd_i40e_set_tc_strict_prio;
-	rte_pmd_i40e_set_vf_max_bw;
-	rte_pmd_i40e_set_vf_tc_bw_alloc;
-	rte_pmd_i40e_set_vf_tc_max_bw;
-	rte_pmd_i40e_process_ddp_package;
-	rte_pmd_i40e_get_ddp_list;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_i40e_get_ddp_info;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_pmd_i40e_add_vf_mac_addr;
-	rte_pmd_i40e_flow_add_del_packet_template;
-	rte_pmd_i40e_flow_type_mapping_update;
-	rte_pmd_i40e_flow_type_mapping_get;
-	rte_pmd_i40e_flow_type_mapping_reset;
-	rte_pmd_i40e_query_vfid_by_mac;
-	rte_pmd_i40e_rss_queue_region_conf;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_pmd_i40e_inset_get;
-	rte_pmd_i40e_inset_set;
-} DPDK_17.11;
\ No newline at end of file
+	local: *;
+};
diff --git a/drivers/net/iavf/rte_pmd_iavf_version.map b/drivers/net/iavf/rte_pmd_iavf_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/iavf/rte_pmd_iavf_version.map
+++ b/drivers/net/iavf/rte_pmd_iavf_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ice/rte_pmd_ice_version.map b/drivers/net/ice/rte_pmd_ice_version.map
index 7b23b609da..f9f17e4f6e 100644
--- a/drivers/net/ice/rte_pmd_ice_version.map
+++ b/drivers/net/ice/rte_pmd_ice_version.map
@@ -1,4 +1,3 @@
-DPDK_19.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ifc/rte_pmd_ifc_version.map b/drivers/net/ifc/rte_pmd_ifc_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/net/ifc/rte_pmd_ifc_version.map
+++ b/drivers/net/ifc/rte_pmd_ifc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
+++ b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
index c814f96d72..21534dbc3d 100644
--- a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
+++ b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
-	rte_pmd_ixgbe_set_all_queues_drop_en;
-	rte_pmd_ixgbe_set_tx_loopback;
-	rte_pmd_ixgbe_set_vf_mac_addr;
-	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
-	rte_pmd_ixgbe_set_vf_split_drop_en;
-	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
-	rte_pmd_ixgbe_set_vf_vlan_insert;
-	rte_pmd_ixgbe_set_vf_vlan_stripq;
-} DPDK_2.0;
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_ixgbe_bypass_event_show;
+	rte_pmd_ixgbe_bypass_event_store;
+	rte_pmd_ixgbe_bypass_init;
+	rte_pmd_ixgbe_bypass_state_set;
+	rte_pmd_ixgbe_bypass_state_show;
+	rte_pmd_ixgbe_bypass_ver_show;
+	rte_pmd_ixgbe_bypass_wd_reset;
+	rte_pmd_ixgbe_bypass_wd_timeout_show;
+	rte_pmd_ixgbe_bypass_wd_timeout_store;
 	rte_pmd_ixgbe_macsec_config_rxsc;
 	rte_pmd_ixgbe_macsec_config_txsc;
 	rte_pmd_ixgbe_macsec_disable;
 	rte_pmd_ixgbe_macsec_enable;
 	rte_pmd_ixgbe_macsec_select_rxsa;
 	rte_pmd_ixgbe_macsec_select_txsa;
+	rte_pmd_ixgbe_ping_vf;
+	rte_pmd_ixgbe_set_all_queues_drop_en;
+	rte_pmd_ixgbe_set_tc_bw_alloc;
+	rte_pmd_ixgbe_set_tx_loopback;
+	rte_pmd_ixgbe_set_vf_mac_addr;
+	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
 	rte_pmd_ixgbe_set_vf_rate_limit;
 	rte_pmd_ixgbe_set_vf_rx;
 	rte_pmd_ixgbe_set_vf_rxmode;
+	rte_pmd_ixgbe_set_vf_split_drop_en;
 	rte_pmd_ixgbe_set_vf_tx;
+	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
 	rte_pmd_ixgbe_set_vf_vlan_filter;
-} DPDK_16.11;
+	rte_pmd_ixgbe_set_vf_vlan_insert;
+	rte_pmd_ixgbe_set_vf_vlan_stripq;
 
-DPDK_17.05 {
-	global:
-
-	rte_pmd_ixgbe_ping_vf;
-	rte_pmd_ixgbe_set_tc_bw_alloc;
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_ixgbe_bypass_event_show;
-	rte_pmd_ixgbe_bypass_event_store;
-	rte_pmd_ixgbe_bypass_init;
-	rte_pmd_ixgbe_bypass_state_set;
-	rte_pmd_ixgbe_bypass_state_show;
-	rte_pmd_ixgbe_bypass_ver_show;
-	rte_pmd_ixgbe_bypass_wd_reset;
-	rte_pmd_ixgbe_bypass_wd_timeout_show;
-	rte_pmd_ixgbe_bypass_wd_timeout_store;
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/net/kni/rte_pmd_kni_version.map b/drivers/net/kni/rte_pmd_kni_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/kni/rte_pmd_kni_version.map
+++ b/drivers/net/kni/rte_pmd_kni_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/liquidio/rte_pmd_liquidio_version.map b/drivers/net/liquidio/rte_pmd_liquidio_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/liquidio/rte_pmd_liquidio_version.map
+++ b/drivers/net/liquidio/rte_pmd_liquidio_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/memif/rte_pmd_memif_version.map b/drivers/net/memif/rte_pmd_memif_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/net/memif/rte_pmd_memif_version.map
+++ b/drivers/net/memif/rte_pmd_memif_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/mlx4/rte_pmd_mlx4_version.map b/drivers/net/mlx4/rte_pmd_mlx4_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/mlx4/rte_pmd_mlx4_version.map
+++ b/drivers/net/mlx4/rte_pmd_mlx4_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mlx5/rte_pmd_mlx5_version.map b/drivers/net/mlx5/rte_pmd_mlx5_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/mlx5/rte_pmd_mlx5_version.map
+++ b/drivers/net/mlx5/rte_pmd_mlx5_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvneta/rte_pmd_mvneta_version.map b/drivers/net/mvneta/rte_pmd_mvneta_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/net/mvneta/rte_pmd_mvneta_version.map
+++ b/drivers/net/mvneta/rte_pmd_mvneta_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
+++ b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/netvsc/rte_pmd_netvsc_version.map b/drivers/net/netvsc/rte_pmd_netvsc_version.map
index d534019a6b..f9f17e4f6e 100644
--- a/drivers/net/netvsc/rte_pmd_netvsc_version.map
+++ b/drivers/net/netvsc/rte_pmd_netvsc_version.map
@@ -1,5 +1,3 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfb/rte_pmd_nfb_version.map b/drivers/net/nfb/rte_pmd_nfb_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/nfb/rte_pmd_nfb_version.map
+++ b/drivers/net/nfb/rte_pmd_nfb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfp/rte_pmd_nfp_version.map b/drivers/net/nfp/rte_pmd_nfp_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/nfp/rte_pmd_nfp_version.map
+++ b/drivers/net/nfp/rte_pmd_nfp_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/null/rte_pmd_null_version.map b/drivers/net/null/rte_pmd_null_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/null/rte_pmd_null_version.map
+++ b/drivers/net/null/rte_pmd_null_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/octeontx/rte_pmd_octeontx_version.map b/drivers/net/octeontx/rte_pmd_octeontx_version.map
index a3161b14d0..f7cae02fac 100644
--- a/drivers/net/octeontx/rte_pmd_octeontx_version.map
+++ b/drivers/net/octeontx/rte_pmd_octeontx_version.map
@@ -1,11 +1,7 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.02 {
+DPDK_20.0 {
 	global:
 
 	rte_octeontx_pchan_map;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
+++ b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/pcap/rte_pmd_pcap_version.map b/drivers/net/pcap/rte_pmd_pcap_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/pcap/rte_pmd_pcap_version.map
+++ b/drivers/net/pcap/rte_pmd_pcap_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/pfe/rte_pmd_pfe_version.map b/drivers/net/pfe/rte_pmd_pfe_version.map
index b7b7c91683..f9f17e4f6e 100644
--- a/drivers/net/pfe/rte_pmd_pfe_version.map
+++ b/drivers/net/pfe/rte_pmd_pfe_version.map
@@ -1,4 +1,3 @@
-DPDK_19.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/qede/rte_pmd_qede_version.map b/drivers/net/qede/rte_pmd_qede_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/qede/rte_pmd_qede_version.map
+++ b/drivers/net/qede/rte_pmd_qede_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ring/rte_pmd_ring_version.map b/drivers/net/ring/rte_pmd_ring_version.map
index 1f785d9409..ebb6be2733 100644
--- a/drivers/net/ring/rte_pmd_ring_version.map
+++ b/drivers/net/ring/rte_pmd_ring_version.map
@@ -1,14 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_from_ring;
 	rte_eth_from_rings;
 
 	local: *;
 };
-
-DPDK_2.2 {
-	global:
-
-	rte_eth_from_ring;
-
-} DPDK_2.0;
diff --git a/drivers/net/sfc/rte_pmd_sfc_version.map b/drivers/net/sfc/rte_pmd_sfc_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/sfc/rte_pmd_sfc_version.map
+++ b/drivers/net/sfc/rte_pmd_sfc_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/softnic/rte_pmd_softnic_version.map b/drivers/net/softnic/rte_pmd_softnic_version.map
index bc44b06f98..50f113d5a2 100644
--- a/drivers/net/softnic/rte_pmd_softnic_version.map
+++ b/drivers/net/softnic/rte_pmd_softnic_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_softnic_run;
diff --git a/drivers/net/szedata2/rte_pmd_szedata2_version.map b/drivers/net/szedata2/rte_pmd_szedata2_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/szedata2/rte_pmd_szedata2_version.map
+++ b/drivers/net/szedata2/rte_pmd_szedata2_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/tap/rte_pmd_tap_version.map b/drivers/net/tap/rte_pmd_tap_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/tap/rte_pmd_tap_version.map
+++ b/drivers/net/tap/rte_pmd_tap_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/thunderx/rte_pmd_thunderx_version.map b/drivers/net/thunderx/rte_pmd_thunderx_version.map
index 1901bcb3b3..f9f17e4f6e 100644
--- a/drivers/net/thunderx/rte_pmd_thunderx_version.map
+++ b/drivers/net/thunderx/rte_pmd_thunderx_version.map
@@ -1,4 +1,3 @@
-DPDK_16.07 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
+++ b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vhost/rte_pmd_vhost_version.map b/drivers/net/vhost/rte_pmd_vhost_version.map
index 695db85749..16b591ccc4 100644
--- a/drivers/net/vhost/rte_pmd_vhost_version.map
+++ b/drivers/net/vhost/rte_pmd_vhost_version.map
@@ -1,13 +1,8 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_vhost_get_queue_event;
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
 	rte_eth_vhost_get_vid_from_port_id;
+
+	local: *;
 };
diff --git a/drivers/net/virtio/rte_pmd_virtio_version.map b/drivers/net/virtio/rte_pmd_virtio_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/virtio/rte_pmd_virtio_version.map
+++ b/drivers/net/virtio/rte_pmd_virtio_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
+++ b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
+++ b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
index d16a136fc8..ca6a0d7626 100644
--- a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
+++ b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
@@ -1,4 +1,4 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	global:
 
 	rte_qdma_attr_get;
@@ -9,9 +9,9 @@ DPDK_19.05 {
 	rte_qdma_start;
 	rte_qdma_stop;
 	rte_qdma_vq_create;
-	rte_qdma_vq_destroy;
 	rte_qdma_vq_dequeue;
 	rte_qdma_vq_dequeue_multi;
+	rte_qdma_vq_destroy;
 	rte_qdma_vq_enqueue;
 	rte_qdma_vq_enqueue_multi;
 	rte_qdma_vq_stats;
diff --git a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
+++ b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ioat/rte_rawdev_ioat_version.map b/drivers/raw/ioat/rte_rawdev_ioat_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/ioat/rte_rawdev_ioat_version.map
+++ b/drivers/raw/ioat/rte_rawdev_ioat_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ntb/rte_rawdev_ntb_version.map b/drivers/raw/ntb/rte_rawdev_ntb_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/raw/ntb/rte_rawdev_ntb_version.map
+++ b/drivers/raw/ntb/rte_rawdev_ntb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
+++ b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
+++ b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/lib/librte_acl/rte_acl_version.map b/lib/librte_acl/rte_acl_version.map
index b09370a104..c3daca8115 100644
--- a/lib/librte_acl/rte_acl_version.map
+++ b/lib/librte_acl/rte_acl_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_acl_add_rules;
diff --git a/lib/librte_bitratestats/rte_bitratestats_version.map b/lib/librte_bitratestats/rte_bitratestats_version.map
index fe7454452d..88fc2912db 100644
--- a/lib/librte_bitratestats/rte_bitratestats_version.map
+++ b/lib/librte_bitratestats/rte_bitratestats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_stats_bitrate_calc;
diff --git a/lib/librte_cfgfile/rte_cfgfile_version.map b/lib/librte_cfgfile/rte_cfgfile_version.map
index a0a11cea8d..906eee96bf 100644
--- a/lib/librte_cfgfile/rte_cfgfile_version.map
+++ b/lib/librte_cfgfile/rte_cfgfile_version.map
@@ -1,40 +1,22 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_cfgfile_add_entry;
+	rte_cfgfile_add_section;
 	rte_cfgfile_close;
+	rte_cfgfile_create;
 	rte_cfgfile_get_entry;
 	rte_cfgfile_has_entry;
 	rte_cfgfile_has_section;
 	rte_cfgfile_load;
+	rte_cfgfile_load_with_params;
 	rte_cfgfile_num_sections;
+	rte_cfgfile_save;
 	rte_cfgfile_section_entries;
+	rte_cfgfile_section_entries_by_index;
 	rte_cfgfile_section_num_entries;
 	rte_cfgfile_sections;
+	rte_cfgfile_set_entry;
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_cfgfile_section_entries_by_index;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_cfgfile_load_with_params;
-
-} DPDK_16.04;
-
-DPDK_17.11 {
-	global:
-
-	rte_cfgfile_add_entry;
-	rte_cfgfile_add_section;
-	rte_cfgfile_create;
-	rte_cfgfile_save;
-	rte_cfgfile_set_entry;
-
-} DPDK_17.05;
diff --git a/lib/librte_cmdline/rte_cmdline_version.map b/lib/librte_cmdline/rte_cmdline_version.map
index 04bcb387f2..95fce812ff 100644
--- a/lib/librte_cmdline/rte_cmdline_version.map
+++ b/lib/librte_cmdline/rte_cmdline_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	cirbuf_add_buf_head;
@@ -40,6 +40,7 @@ DPDK_2.0 {
 	cmdline_parse_num;
 	cmdline_parse_portlist;
 	cmdline_parse_string;
+	cmdline_poll;
 	cmdline_printf;
 	cmdline_quit;
 	cmdline_set_prompt;
@@ -68,10 +69,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	cmdline_poll;
-
-} DPDK_2.0;
diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map
index 3deb265ac2..1dd1e259a0 100644
--- a/lib/librte_cryptodev/rte_cryptodev_version.map
+++ b/lib/librte_cryptodev/rte_cryptodev_version.map
@@ -1,92 +1,62 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
-	rte_cryptodevs;
+	rte_crypto_aead_algorithm_strings;
+	rte_crypto_aead_operation_strings;
+	rte_crypto_auth_algorithm_strings;
+	rte_crypto_auth_operation_strings;
+	rte_crypto_cipher_algorithm_strings;
+	rte_crypto_cipher_operation_strings;
+	rte_crypto_op_pool_create;
+	rte_cryptodev_allocate_driver;
 	rte_cryptodev_callback_register;
 	rte_cryptodev_callback_unregister;
 	rte_cryptodev_close;
-	rte_cryptodev_count;
 	rte_cryptodev_configure;
+	rte_cryptodev_count;
+	rte_cryptodev_device_count_by_driver;
+	rte_cryptodev_devices_get;
+	rte_cryptodev_driver_id_get;
+	rte_cryptodev_driver_name_get;
+	rte_cryptodev_get_aead_algo_enum;
+	rte_cryptodev_get_auth_algo_enum;
+	rte_cryptodev_get_cipher_algo_enum;
 	rte_cryptodev_get_dev_id;
 	rte_cryptodev_get_feature_name;
+	rte_cryptodev_get_sec_ctx;
 	rte_cryptodev_info_get;
+	rte_cryptodev_name_get;
 	rte_cryptodev_pmd_allocate;
 	rte_cryptodev_pmd_callback_process;
+	rte_cryptodev_pmd_create;
+	rte_cryptodev_pmd_create_dev_name;
+	rte_cryptodev_pmd_destroy;
+	rte_cryptodev_pmd_get_dev;
+	rte_cryptodev_pmd_get_named_dev;
+	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_pmd_parse_input_args;
 	rte_cryptodev_pmd_release_device;
-	rte_cryptodev_sym_session_create;
-	rte_cryptodev_sym_session_free;
+	rte_cryptodev_queue_pair_count;
+	rte_cryptodev_queue_pair_setup;
 	rte_cryptodev_socket_id;
 	rte_cryptodev_start;
 	rte_cryptodev_stats_get;
 	rte_cryptodev_stats_reset;
 	rte_cryptodev_stop;
-	rte_cryptodev_queue_pair_count;
-	rte_cryptodev_queue_pair_setup;
-	rte_crypto_op_pool_create;
-
-	local: *;
-};
-
-DPDK_17.02 {
-	global:
-
-	rte_cryptodev_devices_get;
-	rte_cryptodev_pmd_create_dev_name;
-	rte_cryptodev_pmd_get_dev;
-	rte_cryptodev_pmd_get_named_dev;
-	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_sym_capability_check_aead;
 	rte_cryptodev_sym_capability_check_auth;
 	rte_cryptodev_sym_capability_check_cipher;
 	rte_cryptodev_sym_capability_get;
-	rte_crypto_auth_algorithm_strings;
-	rte_crypto_auth_operation_strings;
-	rte_crypto_cipher_algorithm_strings;
-	rte_crypto_cipher_operation_strings;
-
-} DPDK_16.04;
-
-DPDK_17.05 {
-	global:
-
-	rte_cryptodev_get_auth_algo_enum;
-	rte_cryptodev_get_cipher_algo_enum;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_cryptodev_allocate_driver;
-	rte_cryptodev_device_count_by_driver;
-	rte_cryptodev_driver_id_get;
-	rte_cryptodev_driver_name_get;
-	rte_cryptodev_get_aead_algo_enum;
-	rte_cryptodev_sym_capability_check_aead;
-	rte_cryptodev_sym_session_init;
-	rte_cryptodev_sym_session_clear;
-	rte_crypto_aead_algorithm_strings;
-	rte_crypto_aead_operation_strings;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_cryptodev_get_sec_ctx;
-	rte_cryptodev_name_get;
-	rte_cryptodev_pmd_create;
-	rte_cryptodev_pmd_destroy;
-	rte_cryptodev_pmd_parse_input_args;
-
-} DPDK_17.08;
-
-DPDK_18.05 {
-	global:
-
 	rte_cryptodev_sym_get_header_session_size;
 	rte_cryptodev_sym_get_private_session_size;
+	rte_cryptodev_sym_session_clear;
+	rte_cryptodev_sym_session_create;
+	rte_cryptodev_sym_session_free;
+	rte_cryptodev_sym_session_init;
+	rte_cryptodevs;
 
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 00e26b4804..1b7c643005 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_distributor_clear_returns;
@@ -10,4 +10,6 @@ DPDK_17.05 {
 	rte_distributor_request_pkt;
 	rte_distributor_return_pkt;
 	rte_distributor_returned_pkts;
+
+	local: *;
 };
diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map
index f1982f2f73..8663517df3 100644
--- a/lib/librte_eal/rte_eal_version.map
+++ b/lib/librte_eal/rte_eal_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	__rte_panic;
@@ -6,44 +6,113 @@ DPDK_2.0 {
 	eal_timer_source;
 	per_lcore__lcore_id;
 	per_lcore__rte_errno;
+	rte_bus_dump;
+	rte_bus_find;
+	rte_bus_find_by_device;
+	rte_bus_find_by_name;
+	rte_bus_get_iommu_class;
+	rte_bus_probe;
+	rte_bus_register;
+	rte_bus_scan;
+	rte_bus_unregister;
 	rte_calloc;
 	rte_calloc_socket;
 	rte_cpu_get_flag_enabled;
+	rte_cpu_get_flag_name;
+	rte_cpu_is_supported;
+	rte_ctrl_thread_create;
 	rte_cycles_vmware_tsc_map;
 	rte_delay_us;
+	rte_delay_us_block;
+	rte_delay_us_callback_register;
+	rte_dev_is_probed;
+	rte_dev_probe;
+	rte_dev_remove;
+	rte_devargs_add;
+	rte_devargs_dump;
+	rte_devargs_insert;
+	rte_devargs_next;
+	rte_devargs_parse;
+	rte_devargs_parsef;
+	rte_devargs_remove;
+	rte_devargs_type_count;
 	rte_dump_physmem_layout;
 	rte_dump_registers;
 	rte_dump_stack;
 	rte_dump_tailq;
 	rte_eal_alarm_cancel;
 	rte_eal_alarm_set;
+	rte_eal_cleanup;
+	rte_eal_create_uio_dev;
 	rte_eal_get_lcore_state;
 	rte_eal_get_physmem_size;
+	rte_eal_get_runtime_dir;
 	rte_eal_has_hugepages;
+	rte_eal_has_pci;
+	rte_eal_hotplug_add;
+	rte_eal_hotplug_remove;
 	rte_eal_hpet_init;
 	rte_eal_init;
 	rte_eal_iopl_init;
+	rte_eal_iova_mode;
 	rte_eal_lcore_role;
+	rte_eal_mbuf_user_pool_ops;
 	rte_eal_mp_remote_launch;
 	rte_eal_mp_wait_lcore;
+	rte_eal_primary_proc_alive;
 	rte_eal_process_type;
 	rte_eal_remote_launch;
 	rte_eal_tailq_lookup;
 	rte_eal_tailq_register;
+	rte_eal_using_phys_addrs;
+	rte_eal_vfio_intr_mode;
 	rte_eal_wait_lcore;
+	rte_epoll_ctl;
+	rte_epoll_wait;
 	rte_exit;
 	rte_free;
 	rte_get_hpet_cycles;
 	rte_get_hpet_hz;
+	rte_get_master_lcore;
+	rte_get_next_lcore;
 	rte_get_tsc_hz;
 	rte_hexdump;
+	rte_hypervisor_get;
+	rte_hypervisor_get_name;
+	rte_intr_allow_others;
 	rte_intr_callback_register;
 	rte_intr_callback_unregister;
+	rte_intr_cap_multiple;
 	rte_intr_disable;
+	rte_intr_dp_is_en;
+	rte_intr_efd_disable;
+	rte_intr_efd_enable;
 	rte_intr_enable;
+	rte_intr_free_epoll_fd;
+	rte_intr_rx_ctl;
+	rte_intr_tls_epfd;
+	rte_keepalive_create;
+	rte_keepalive_dispatch_pings;
+	rte_keepalive_mark_alive;
+	rte_keepalive_mark_sleep;
+	rte_keepalive_register_core;
+	rte_keepalive_register_relay_callback;
+	rte_lcore_count;
+	rte_lcore_has_role;
+	rte_lcore_index;
+	rte_lcore_is_enabled;
+	rte_lcore_to_socket_id;
 	rte_log;
 	rte_log_cur_msg_loglevel;
 	rte_log_cur_msg_logtype;
+	rte_log_dump;
+	rte_log_get_global_level;
+	rte_log_get_level;
+	rte_log_register;
+	rte_log_set_global_level;
+	rte_log_set_level;
+	rte_log_set_level_pattern;
+	rte_log_set_level_regexp;
 	rte_logs;
 	rte_malloc;
 	rte_malloc_dump_stats;
@@ -51,155 +120,38 @@ DPDK_2.0 {
 	rte_malloc_set_limit;
 	rte_malloc_socket;
 	rte_malloc_validate;
+	rte_malloc_virt2iova;
+	rte_mcfg_mem_read_lock;
+	rte_mcfg_mem_read_unlock;
+	rte_mcfg_mem_write_lock;
+	rte_mcfg_mem_write_unlock;
+	rte_mcfg_mempool_read_lock;
+	rte_mcfg_mempool_read_unlock;
+	rte_mcfg_mempool_write_lock;
+	rte_mcfg_mempool_write_unlock;
+	rte_mcfg_tailq_read_lock;
+	rte_mcfg_tailq_read_unlock;
+	rte_mcfg_tailq_write_lock;
+	rte_mcfg_tailq_write_unlock;
 	rte_mem_lock_page;
+	rte_mem_virt2iova;
 	rte_mem_virt2phy;
 	rte_memdump;
 	rte_memory_get_nchannel;
 	rte_memory_get_nrank;
 	rte_memzone_dump;
+	rte_memzone_free;
 	rte_memzone_lookup;
 	rte_memzone_reserve;
 	rte_memzone_reserve_aligned;
 	rte_memzone_reserve_bounded;
 	rte_memzone_walk;
 	rte_openlog_stream;
+	rte_rand;
 	rte_realloc;
-	rte_set_application_usage_hook;
-	rte_socket_id;
-	rte_strerror;
-	rte_strsplit;
-	rte_sys_gettid;
-	rte_thread_get_affinity;
-	rte_thread_set_affinity;
-	rte_vlog;
-	rte_zmalloc;
-	rte_zmalloc_socket;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_epoll_ctl;
-	rte_epoll_wait;
-	rte_intr_allow_others;
-	rte_intr_dp_is_en;
-	rte_intr_efd_disable;
-	rte_intr_efd_enable;
-	rte_intr_rx_ctl;
-	rte_intr_tls_epfd;
-	rte_memzone_free;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_intr_cap_multiple;
-	rte_keepalive_create;
-	rte_keepalive_dispatch_pings;
-	rte_keepalive_mark_alive;
-	rte_keepalive_register_core;
-
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_cpu_get_flag_name;
-	rte_eal_primary_proc_alive;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_keepalive_mark_sleep;
-	rte_keepalive_register_relay_callback;
-	rte_rtm_supported;
-	rte_thread_setname;
-
-} DPDK_16.04;
-
-DPDK_16.11 {
-	global:
-
-	rte_delay_us_block;
-	rte_delay_us_callback_register;
-
-} DPDK_16.07;
-
-DPDK_17.02 {
-	global:
-
-	rte_bus_dump;
-	rte_bus_probe;
-	rte_bus_register;
-	rte_bus_scan;
-	rte_bus_unregister;
-
-} DPDK_16.11;
-
-DPDK_17.05 {
-	global:
-
-	rte_cpu_is_supported;
-	rte_intr_free_epoll_fd;
-	rte_log_dump;
-	rte_log_get_global_level;
-	rte_log_register;
-	rte_log_set_global_level;
-	rte_log_set_level;
-	rte_log_set_level_regexp;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_bus_find;
-	rte_bus_find_by_device;
-	rte_bus_find_by_name;
-	rte_log_get_level;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eal_create_uio_dev;
-	rte_bus_get_iommu_class;
-	rte_eal_has_pci;
-	rte_eal_iova_mode;
-	rte_eal_using_phys_addrs;
-	rte_eal_vfio_intr_mode;
-	rte_lcore_has_role;
-	rte_malloc_virt2iova;
-	rte_mem_virt2iova;
-	rte_vfio_enable;
-	rte_vfio_is_enabled;
-	rte_vfio_noiommu_is_enabled;
-	rte_vfio_release_device;
-	rte_vfio_setup_device;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_hypervisor_get;
-	rte_hypervisor_get_name;
-	rte_vfio_clear_group;
 	rte_reciprocal_value;
 	rte_reciprocal_value_u64;
-
-}  DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_log_set_level_pattern;
+	rte_rtm_supported;
 	rte_service_attr_get;
 	rte_service_attr_reset_all;
 	rte_service_component_register;
@@ -212,6 +164,8 @@ DPDK_18.05 {
 	rte_service_get_count;
 	rte_service_get_name;
 	rte_service_lcore_add;
+	rte_service_lcore_attr_get;
+	rte_service_lcore_attr_reset_all;
 	rte_service_lcore_count;
 	rte_service_lcore_count_services;
 	rte_service_lcore_del;
@@ -221,6 +175,7 @@ DPDK_18.05 {
 	rte_service_lcore_stop;
 	rte_service_map_lcore_get;
 	rte_service_map_lcore_set;
+	rte_service_may_be_active;
 	rte_service_probe_capability;
 	rte_service_run_iter_on_app_lcore;
 	rte_service_runstate_get;
@@ -228,94 +183,43 @@ DPDK_18.05 {
 	rte_service_set_runstate_mapped_check;
 	rte_service_set_stats_enable;
 	rte_service_start_with_defaults;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eal_mbuf_user_pool_ops;
+	rte_set_application_usage_hook;
+	rte_socket_count;
+	rte_socket_id;
+	rte_socket_id_by_idx;
+	rte_srand;
+	rte_strerror;
+	rte_strscpy;
+	rte_strsplit;
+	rte_sys_gettid;
+	rte_thread_get_affinity;
+	rte_thread_set_affinity;
+	rte_thread_setname;
 	rte_uuid_compare;
 	rte_uuid_is_null;
 	rte_uuid_parse;
 	rte_uuid_unparse;
+	rte_vfio_clear_group;
 	rte_vfio_container_create;
 	rte_vfio_container_destroy;
 	rte_vfio_container_dma_map;
 	rte_vfio_container_dma_unmap;
 	rte_vfio_container_group_bind;
 	rte_vfio_container_group_unbind;
+	rte_vfio_enable;
 	rte_vfio_get_container_fd;
 	rte_vfio_get_group_fd;
 	rte_vfio_get_group_num;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_dev_probe;
-	rte_dev_remove;
-	rte_eal_get_runtime_dir;
-	rte_eal_hotplug_add;
-	rte_eal_hotplug_remove;
-	rte_strscpy;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_ctrl_thread_create;
-	rte_dev_is_probed;
-	rte_devargs_add;
-	rte_devargs_dump;
-	rte_devargs_insert;
-	rte_devargs_next;
-	rte_devargs_parse;
-	rte_devargs_parsef;
-	rte_devargs_remove;
-	rte_devargs_type_count;
-	rte_eal_cleanup;
-	rte_socket_count;
-	rte_socket_id_by_idx;
-
-} DPDK_18.11;
-
-DPDK_19.08 {
-	global:
-
-	rte_lcore_index;
-	rte_lcore_to_socket_id;
-	rte_mcfg_mem_read_lock;
-	rte_mcfg_mem_read_unlock;
-	rte_mcfg_mem_write_lock;
-	rte_mcfg_mem_write_unlock;
-	rte_mcfg_mempool_read_lock;
-	rte_mcfg_mempool_read_unlock;
-	rte_mcfg_mempool_write_lock;
-	rte_mcfg_mempool_write_unlock;
-	rte_mcfg_tailq_read_lock;
-	rte_mcfg_tailq_read_unlock;
-	rte_mcfg_tailq_write_lock;
-	rte_mcfg_tailq_write_unlock;
-	rte_rand;
-	rte_service_lcore_attr_get;
-	rte_service_lcore_attr_reset_all;
-	rte_service_may_be_active;
-	rte_srand;
-
-} DPDK_19.05;
-
-DPDK_19.11 {
-	global:
-
-	rte_get_master_lcore;
-	rte_get_next_lcore;
-	rte_lcore_count;
-	rte_lcore_is_enabled;
-
-} DPDK_19.08;
+	rte_vfio_is_enabled;
+	rte_vfio_noiommu_is_enabled;
+	rte_vfio_release_device;
+	rte_vfio_setup_device;
+	rte_vlog;
+	rte_zmalloc;
+	rte_zmalloc_socket;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_efd/rte_efd_version.map b/lib/librte_efd/rte_efd_version.map
index ae60a64178..e010eecfe4 100644
--- a/lib/librte_efd/rte_efd_version.map
+++ b/lib/librte_efd/rte_efd_version.map
@@ -1,4 +1,4 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_efd_create;
diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map
index e59d51648f..28819c1bb7 100644
--- a/lib/librte_ethdev/rte_ethdev_version.map
+++ b/lib/librte_ethdev/rte_ethdev_version.map
@@ -1,35 +1,53 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	global:
 
+	_rte_eth_dev_callback_process;
+	_rte_eth_dev_reset;
+	rte_eth_add_first_rx_callback;
 	rte_eth_add_rx_callback;
 	rte_eth_add_tx_callback;
 	rte_eth_allmulticast_disable;
 	rte_eth_allmulticast_enable;
 	rte_eth_allmulticast_get;
+	rte_eth_dev_adjust_nb_rx_tx_desc;
 	rte_eth_dev_allocate;
 	rte_eth_dev_allocated;
+	rte_eth_dev_attach_secondary;
 	rte_eth_dev_callback_register;
 	rte_eth_dev_callback_unregister;
 	rte_eth_dev_close;
 	rte_eth_dev_configure;
 	rte_eth_dev_count;
+	rte_eth_dev_count_avail;
+	rte_eth_dev_count_total;
 	rte_eth_dev_default_mac_addr_set;
+	rte_eth_dev_filter_ctrl;
 	rte_eth_dev_filter_supported;
 	rte_eth_dev_flow_ctrl_get;
 	rte_eth_dev_flow_ctrl_set;
+	rte_eth_dev_fw_version_get;
 	rte_eth_dev_get_dcb_info;
 	rte_eth_dev_get_eeprom;
 	rte_eth_dev_get_eeprom_length;
 	rte_eth_dev_get_mtu;
+	rte_eth_dev_get_name_by_port;
+	rte_eth_dev_get_port_by_name;
 	rte_eth_dev_get_reg_info;
+	rte_eth_dev_get_sec_ctx;
+	rte_eth_dev_get_supported_ptypes;
 	rte_eth_dev_get_vlan_offload;
-	rte_eth_devices;
 	rte_eth_dev_info_get;
 	rte_eth_dev_is_valid_port;
+	rte_eth_dev_l2_tunnel_eth_type_conf;
+	rte_eth_dev_l2_tunnel_offload_set;
+	rte_eth_dev_logtype;
 	rte_eth_dev_mac_addr_add;
 	rte_eth_dev_mac_addr_remove;
+	rte_eth_dev_pool_ops_supported;
 	rte_eth_dev_priority_flow_ctrl_set;
+	rte_eth_dev_probing_finish;
 	rte_eth_dev_release_port;
+	rte_eth_dev_reset;
 	rte_eth_dev_rss_hash_conf_get;
 	rte_eth_dev_rss_hash_update;
 	rte_eth_dev_rss_reta_query;
@@ -38,6 +56,7 @@ DPDK_2.2 {
 	rte_eth_dev_rx_intr_ctl_q;
 	rte_eth_dev_rx_intr_disable;
 	rte_eth_dev_rx_intr_enable;
+	rte_eth_dev_rx_offload_name;
 	rte_eth_dev_rx_queue_start;
 	rte_eth_dev_rx_queue_stop;
 	rte_eth_dev_set_eeprom;
@@ -47,18 +66,28 @@ DPDK_2.2 {
 	rte_eth_dev_set_mtu;
 	rte_eth_dev_set_rx_queue_stats_mapping;
 	rte_eth_dev_set_tx_queue_stats_mapping;
+	rte_eth_dev_set_vlan_ether_type;
 	rte_eth_dev_set_vlan_offload;
 	rte_eth_dev_set_vlan_pvid;
 	rte_eth_dev_set_vlan_strip_on_queue;
 	rte_eth_dev_socket_id;
 	rte_eth_dev_start;
 	rte_eth_dev_stop;
+	rte_eth_dev_tx_offload_name;
 	rte_eth_dev_tx_queue_start;
 	rte_eth_dev_tx_queue_stop;
 	rte_eth_dev_uc_all_hash_table_set;
 	rte_eth_dev_uc_hash_table_set;
+	rte_eth_dev_udp_tunnel_port_add;
+	rte_eth_dev_udp_tunnel_port_delete;
 	rte_eth_dev_vlan_filter;
+	rte_eth_devices;
 	rte_eth_dma_zone_reserve;
+	rte_eth_find_next;
+	rte_eth_find_next_owned_by;
+	rte_eth_iterator_cleanup;
+	rte_eth_iterator_init;
+	rte_eth_iterator_next;
 	rte_eth_led_off;
 	rte_eth_led_on;
 	rte_eth_link;
@@ -75,6 +104,7 @@ DPDK_2.2 {
 	rte_eth_rx_queue_info_get;
 	rte_eth_rx_queue_setup;
 	rte_eth_set_queue_rate_limit;
+	rte_eth_speed_bitflag;
 	rte_eth_stats;
 	rte_eth_stats_get;
 	rte_eth_stats_reset;
@@ -85,66 +115,27 @@ DPDK_2.2 {
 	rte_eth_timesync_read_time;
 	rte_eth_timesync_read_tx_timestamp;
 	rte_eth_timesync_write_time;
-	rte_eth_tx_queue_info_get;
-	rte_eth_tx_queue_setup;
-	rte_eth_xstats_get;
-	rte_eth_xstats_reset;
-
-	local: *;
-};
-
-DPDK_16.04 {
-	global:
-
-	rte_eth_dev_get_supported_ptypes;
-	rte_eth_dev_l2_tunnel_eth_type_conf;
-	rte_eth_dev_l2_tunnel_offload_set;
-	rte_eth_dev_set_vlan_ether_type;
-	rte_eth_dev_udp_tunnel_port_add;
-	rte_eth_dev_udp_tunnel_port_delete;
-	rte_eth_speed_bitflag;
 	rte_eth_tx_buffer_count_callback;
 	rte_eth_tx_buffer_drop_callback;
 	rte_eth_tx_buffer_init;
 	rte_eth_tx_buffer_set_err_callback;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_add_first_rx_callback;
-	rte_eth_dev_get_name_by_port;
-	rte_eth_dev_get_port_by_name;
-	rte_eth_xstats_get_names;
-
-} DPDK_16.04;
-
-DPDK_17.02 {
-	global:
-
-	_rte_eth_dev_reset;
-	rte_eth_dev_fw_version_get;
-
-} DPDK_16.07;
-
-DPDK_17.05 {
-	global:
-
-	rte_eth_dev_attach_secondary;
-	rte_eth_find_next;
 	rte_eth_tx_done_cleanup;
+	rte_eth_tx_queue_info_get;
+	rte_eth_tx_queue_setup;
+	rte_eth_xstats_get;
 	rte_eth_xstats_get_by_id;
 	rte_eth_xstats_get_id_by_name;
+	rte_eth_xstats_get_names;
 	rte_eth_xstats_get_names_by_id;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	_rte_eth_dev_callback_process;
-	rte_eth_dev_adjust_nb_rx_tx_desc;
+	rte_eth_xstats_reset;
+	rte_flow_copy;
+	rte_flow_create;
+	rte_flow_destroy;
+	rte_flow_error_set;
+	rte_flow_flush;
+	rte_flow_isolate;
+	rte_flow_query;
+	rte_flow_validate;
 	rte_tm_capabilities_get;
 	rte_tm_get_number_of_leaf_nodes;
 	rte_tm_hierarchy_commit;
@@ -176,65 +167,8 @@ DPDK_17.08 {
 	rte_tm_wred_profile_add;
 	rte_tm_wred_profile_delete;
 
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eth_dev_get_sec_ctx;
-	rte_eth_dev_pool_ops_supported;
-	rte_eth_dev_reset;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_eth_dev_filter_ctrl;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_eth_dev_count_avail;
-	rte_eth_dev_probing_finish;
-	rte_eth_find_next_owned_by;
-	rte_flow_copy;
-	rte_flow_create;
-	rte_flow_destroy;
-	rte_flow_error_set;
-	rte_flow_flush;
-	rte_flow_isolate;
-	rte_flow_query;
-	rte_flow_validate;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eth_dev_logtype;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_eth_dev_rx_offload_name;
-	rte_eth_dev_tx_offload_name;
-	rte_eth_iterator_cleanup;
-	rte_eth_iterator_init;
-	rte_eth_iterator_next;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_eth_dev_count_total;
-
-} DPDK_18.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_eventdev/rte_eventdev_version.map b/lib/librte_eventdev/rte_eventdev_version.map
index 76b3021d3a..edfc15282d 100644
--- a/lib/librte_eventdev/rte_eventdev_version.map
+++ b/lib/librte_eventdev/rte_eventdev_version.map
@@ -1,61 +1,38 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
-	rte_eventdevs;
-
+	rte_event_crypto_adapter_caps_get;
+	rte_event_crypto_adapter_create;
+	rte_event_crypto_adapter_create_ext;
+	rte_event_crypto_adapter_event_port_get;
+	rte_event_crypto_adapter_free;
+	rte_event_crypto_adapter_queue_pair_add;
+	rte_event_crypto_adapter_queue_pair_del;
+	rte_event_crypto_adapter_service_id_get;
+	rte_event_crypto_adapter_start;
+	rte_event_crypto_adapter_stats_get;
+	rte_event_crypto_adapter_stats_reset;
+	rte_event_crypto_adapter_stop;
+	rte_event_dequeue_timeout_ticks;
+	rte_event_dev_attr_get;
+	rte_event_dev_close;
+	rte_event_dev_configure;
 	rte_event_dev_count;
+	rte_event_dev_dump;
 	rte_event_dev_get_dev_id;
-	rte_event_dev_socket_id;
 	rte_event_dev_info_get;
-	rte_event_dev_configure;
+	rte_event_dev_selftest;
+	rte_event_dev_service_id_get;
+	rte_event_dev_socket_id;
 	rte_event_dev_start;
 	rte_event_dev_stop;
-	rte_event_dev_close;
-	rte_event_dev_dump;
+	rte_event_dev_stop_flush_callback_register;
 	rte_event_dev_xstats_by_name_get;
 	rte_event_dev_xstats_get;
 	rte_event_dev_xstats_names_get;
 	rte_event_dev_xstats_reset;
-
-	rte_event_port_default_conf_get;
-	rte_event_port_setup;
-	rte_event_port_link;
-	rte_event_port_unlink;
-	rte_event_port_links_get;
-
-	rte_event_queue_default_conf_get;
-	rte_event_queue_setup;
-
-	rte_event_dequeue_timeout_ticks;
-
-	rte_event_pmd_allocate;
-	rte_event_pmd_release;
-	rte_event_pmd_vdev_init;
-	rte_event_pmd_vdev_uninit;
-	rte_event_pmd_pci_probe;
-	rte_event_pmd_pci_remove;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	rte_event_ring_create;
-	rte_event_ring_free;
-	rte_event_ring_init;
-	rte_event_ring_lookup;
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_event_dev_attr_get;
-	rte_event_dev_service_id_get;
-	rte_event_port_attr_get;
-	rte_event_queue_attr_get;
-
 	rte_event_eth_rx_adapter_caps_get;
+	rte_event_eth_rx_adapter_cb_register;
 	rte_event_eth_rx_adapter_create;
 	rte_event_eth_rx_adapter_create_ext;
 	rte_event_eth_rx_adapter_free;
@@ -63,38 +40,9 @@ DPDK_17.11 {
 	rte_event_eth_rx_adapter_queue_del;
 	rte_event_eth_rx_adapter_service_id_get;
 	rte_event_eth_rx_adapter_start;
+	rte_event_eth_rx_adapter_stats_get;
 	rte_event_eth_rx_adapter_stats_reset;
 	rte_event_eth_rx_adapter_stop;
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_event_dev_selftest;
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_event_dev_stop_flush_callback_register;
-} DPDK_18.02;
-
-DPDK_19.05 {
-	global:
-
-	rte_event_crypto_adapter_caps_get;
-	rte_event_crypto_adapter_create;
-	rte_event_crypto_adapter_create_ext;
-	rte_event_crypto_adapter_event_port_get;
-	rte_event_crypto_adapter_free;
-	rte_event_crypto_adapter_queue_pair_add;
-	rte_event_crypto_adapter_queue_pair_del;
-	rte_event_crypto_adapter_service_id_get;
-	rte_event_crypto_adapter_start;
-	rte_event_crypto_adapter_stats_get;
-	rte_event_crypto_adapter_stats_reset;
-	rte_event_crypto_adapter_stop;
-	rte_event_port_unlinks_in_progress;
 	rte_event_eth_tx_adapter_caps_get;
 	rte_event_eth_tx_adapter_create;
 	rte_event_eth_tx_adapter_create_ext;
@@ -107,6 +55,26 @@ DPDK_19.05 {
 	rte_event_eth_tx_adapter_stats_get;
 	rte_event_eth_tx_adapter_stats_reset;
 	rte_event_eth_tx_adapter_stop;
+	rte_event_pmd_allocate;
+	rte_event_pmd_pci_probe;
+	rte_event_pmd_pci_remove;
+	rte_event_pmd_release;
+	rte_event_pmd_vdev_init;
+	rte_event_pmd_vdev_uninit;
+	rte_event_port_attr_get;
+	rte_event_port_default_conf_get;
+	rte_event_port_link;
+	rte_event_port_links_get;
+	rte_event_port_setup;
+	rte_event_port_unlink;
+	rte_event_port_unlinks_in_progress;
+	rte_event_queue_attr_get;
+	rte_event_queue_default_conf_get;
+	rte_event_queue_setup;
+	rte_event_ring_create;
+	rte_event_ring_free;
+	rte_event_ring_init;
+	rte_event_ring_lookup;
 	rte_event_timer_adapter_caps_get;
 	rte_event_timer_adapter_create;
 	rte_event_timer_adapter_create_ext;
@@ -121,11 +89,7 @@ DPDK_19.05 {
 	rte_event_timer_arm_burst;
 	rte_event_timer_arm_tmo_tick_burst;
 	rte_event_timer_cancel_burst;
-} DPDK_18.05;
+	rte_eventdevs;
 
-DPDK_19.08 {
-	global:
-
-	rte_event_eth_rx_adapter_cb_register;
-	rte_event_eth_rx_adapter_stats_get;
-} DPDK_19.05;
+	local: *;
+};
diff --git a/lib/librte_gro/rte_gro_version.map b/lib/librte_gro/rte_gro_version.map
index 1606b6dc72..9f6fe79e57 100644
--- a/lib/librte_gro/rte_gro_version.map
+++ b/lib/librte_gro/rte_gro_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_gro_ctx_create;
diff --git a/lib/librte_gso/rte_gso_version.map b/lib/librte_gso/rte_gso_version.map
index e1fd453edb..8505a59c27 100644
--- a/lib/librte_gso/rte_gso_version.map
+++ b/lib/librte_gso/rte_gso_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_gso_segment;
diff --git a/lib/librte_hash/rte_hash_version.map b/lib/librte_hash/rte_hash_version.map
index 734ae28b04..138c130c1b 100644
--- a/lib/librte_hash/rte_hash_version.map
+++ b/lib/librte_hash/rte_hash_version.map
@@ -1,58 +1,33 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_fbk_hash_create;
 	rte_fbk_hash_find_existing;
 	rte_fbk_hash_free;
 	rte_hash_add_key;
+	rte_hash_add_key_data;
 	rte_hash_add_key_with_hash;
+	rte_hash_add_key_with_hash_data;
+	rte_hash_count;
 	rte_hash_create;
 	rte_hash_del_key;
 	rte_hash_del_key_with_hash;
 	rte_hash_find_existing;
 	rte_hash_free;
+	rte_hash_get_key_with_position;
 	rte_hash_hash;
+	rte_hash_iterate;
 	rte_hash_lookup;
 	rte_hash_lookup_bulk;
-	rte_hash_lookup_with_hash;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_hash_add_key_data;
-	rte_hash_add_key_with_hash_data;
-	rte_hash_iterate;
 	rte_hash_lookup_bulk_data;
 	rte_hash_lookup_data;
+	rte_hash_lookup_with_hash;
 	rte_hash_lookup_with_hash_data;
 	rte_hash_reset;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_hash_set_cmp_func;
 
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_hash_get_key_with_position;
-
-} DPDK_2.2;
-
-
-DPDK_18.08 {
-	global:
-
-	rte_hash_count;
-
-} DPDK_16.07;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_ip_frag/rte_ip_frag_version.map b/lib/librte_ip_frag/rte_ip_frag_version.map
index a193007c61..5dd34f828c 100644
--- a/lib/librte_ip_frag/rte_ip_frag_version.map
+++ b/lib/librte_ip_frag/rte_ip_frag_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
 	rte_ipv4_fragment_packet;
@@ -12,13 +13,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_17.08 {
-	global:
-
-	rte_ip_frag_table_destroy;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_jobstats/rte_jobstats_version.map b/lib/librte_jobstats/rte_jobstats_version.map
index f89441438e..dbd2664ae2 100644
--- a/lib/librte_jobstats/rte_jobstats_version.map
+++ b/lib/librte_jobstats/rte_jobstats_version.map
@@ -1,6 +1,7 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_jobstats_abort;
 	rte_jobstats_context_finish;
 	rte_jobstats_context_init;
 	rte_jobstats_context_reset;
@@ -17,10 +18,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_jobstats_abort;
-
-} DPDK_2.0;
diff --git a/lib/librte_kni/rte_kni_version.map b/lib/librte_kni/rte_kni_version.map
index c877dc6aaa..9cd3cedc54 100644
--- a/lib/librte_kni/rte_kni_version.map
+++ b/lib/librte_kni/rte_kni_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kni_alloc;
diff --git a/lib/librte_kvargs/rte_kvargs_version.map b/lib/librte_kvargs/rte_kvargs_version.map
index 8f4b4e3f8f..3ba0f4b59c 100644
--- a/lib/librte_kvargs/rte_kvargs_version.map
+++ b/lib/librte_kvargs/rte_kvargs_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kvargs_count;
@@ -15,4 +15,4 @@ EXPERIMENTAL {
 	rte_kvargs_parse_delim;
 	rte_kvargs_strcmp;
 
-} DPDK_2.0;
+};
diff --git a/lib/librte_latencystats/rte_latencystats_version.map b/lib/librte_latencystats/rte_latencystats_version.map
index ac8403e821..e04e63463f 100644
--- a/lib/librte_latencystats/rte_latencystats_version.map
+++ b/lib/librte_latencystats/rte_latencystats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_latencystats_get;
diff --git a/lib/librte_lpm/rte_lpm_version.map b/lib/librte_lpm/rte_lpm_version.map
index 90beac853d..500f58b806 100644
--- a/lib/librte_lpm/rte_lpm_version.map
+++ b/lib/librte_lpm/rte_lpm_version.map
@@ -1,13 +1,6 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
-	rte_lpm_add;
-	rte_lpm_create;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-	rte_lpm_find_existing;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
 	rte_lpm6_add;
 	rte_lpm6_create;
 	rte_lpm6_delete;
@@ -18,29 +11,13 @@ DPDK_2.0 {
 	rte_lpm6_is_rule_present;
 	rte_lpm6_lookup;
 	rte_lpm6_lookup_bulk_func;
+	rte_lpm_add;
+	rte_lpm_create;
+	rte_lpm_delete;
+	rte_lpm_delete_all;
+	rte_lpm_find_existing;
+	rte_lpm_free;
+	rte_lpm_is_rule_present;
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_lpm_add;
-	rte_lpm_find_existing;
-	rte_lpm_create;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_lpm6_add;
-	rte_lpm6_is_rule_present;
-	rte_lpm6_lookup;
-	rte_lpm6_lookup_bulk_func;
-
-} DPDK_16.04;
diff --git a/lib/librte_mbuf/rte_mbuf_version.map b/lib/librte_mbuf/rte_mbuf_version.map
index 263dc0a21e..3bbb476975 100644
--- a/lib/librte_mbuf/rte_mbuf_version.map
+++ b/lib/librte_mbuf/rte_mbuf_version.map
@@ -1,26 +1,7 @@
-DPDK_2.0 {
-	global:
-
-	rte_get_rx_ol_flag_name;
-	rte_get_tx_ol_flag_name;
-	rte_mbuf_sanity_check;
-	rte_pktmbuf_dump;
-	rte_pktmbuf_init;
-	rte_pktmbuf_pool_init;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pktmbuf_pool_create;
-
-} DPDK_2.0;
-
-DPDK_16.11 {
+DPDK_20.0 {
 	global:
 
+	__rte_pktmbuf_linearize;
 	__rte_pktmbuf_read;
 	rte_get_ptype_inner_l2_name;
 	rte_get_ptype_inner_l3_name;
@@ -31,28 +12,24 @@ DPDK_16.11 {
 	rte_get_ptype_name;
 	rte_get_ptype_tunnel_name;
 	rte_get_rx_ol_flag_list;
+	rte_get_rx_ol_flag_name;
 	rte_get_tx_ol_flag_list;
-
-} DPDK_2.1;
-
-DPDK_18.08 {
-	global:
-
+	rte_get_tx_ol_flag_name;
 	rte_mbuf_best_mempool_ops;
 	rte_mbuf_platform_mempool_ops;
+	rte_mbuf_sanity_check;
 	rte_mbuf_set_platform_mempool_ops;
 	rte_mbuf_set_user_mempool_ops;
 	rte_mbuf_user_mempool_ops;
-	rte_pktmbuf_pool_create_by_ops;
-} DPDK_16.11;
-
-DPDK_19.11 {
-	global:
-
-	__rte_pktmbuf_linearize;
 	rte_pktmbuf_clone;
+	rte_pktmbuf_dump;
+	rte_pktmbuf_init;
+	rte_pktmbuf_pool_create;
+	rte_pktmbuf_pool_create_by_ops;
+	rte_pktmbuf_pool_init;
 
-} DPDK_18.08;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
@@ -68,4 +45,4 @@ EXPERIMENTAL {
 	rte_pktmbuf_copy;
 	rte_pktmbuf_free_bulk;
 
-} DPDK_18.08;
+};
diff --git a/lib/librte_member/rte_member_version.map b/lib/librte_member/rte_member_version.map
index 019e4cd962..87780ae611 100644
--- a/lib/librte_member/rte_member_version.map
+++ b/lib/librte_member/rte_member_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_member_add;
diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map
index ce9e791e78..d002dfc46f 100644
--- a/lib/librte_mempool/rte_mempool_version.map
+++ b/lib/librte_mempool/rte_mempool_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_mempool_audit;
-	rte_mempool_calc_obj_size;
-	rte_mempool_create;
-	rte_mempool_dump;
-	rte_mempool_list_dump;
-	rte_mempool_lookup;
-	rte_mempool_walk;
-
-	local: *;
-};
-
-DPDK_16.07 {
-	global:
-
 	rte_mempool_avail_count;
 	rte_mempool_cache_create;
 	rte_mempool_cache_flush;
 	rte_mempool_cache_free;
+	rte_mempool_calc_obj_size;
 	rte_mempool_check_cookies;
+	rte_mempool_contig_blocks_check_cookies;
+	rte_mempool_create;
 	rte_mempool_create_empty;
 	rte_mempool_default_cache;
+	rte_mempool_dump;
 	rte_mempool_free;
 	rte_mempool_generic_get;
 	rte_mempool_generic_put;
 	rte_mempool_in_use_count;
+	rte_mempool_list_dump;
+	rte_mempool_lookup;
 	rte_mempool_mem_iter;
 	rte_mempool_obj_iter;
+	rte_mempool_op_calc_mem_size_default;
+	rte_mempool_op_populate_default;
 	rte_mempool_ops_table;
 	rte_mempool_populate_anon;
 	rte_mempool_populate_default;
+	rte_mempool_populate_iova;
 	rte_mempool_populate_virt;
 	rte_mempool_register_ops;
 	rte_mempool_set_ops_byname;
+	rte_mempool_walk;
 
-} DPDK_2.0;
-
-DPDK_17.11 {
-	global:
-
-	rte_mempool_populate_iova;
-
-} DPDK_16.07;
-
-DPDK_18.05 {
-	global:
-
-	rte_mempool_contig_blocks_check_cookies;
-	rte_mempool_op_calc_mem_size_default;
-	rte_mempool_op_populate_default;
-
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_meter/rte_meter_version.map b/lib/librte_meter/rte_meter_version.map
index 4b460d5803..46410b0369 100644
--- a/lib/librte_meter/rte_meter_version.map
+++ b/lib/librte_meter/rte_meter_version.map
@@ -1,21 +1,16 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_meter_srtcm_color_aware_check;
 	rte_meter_srtcm_color_blind_check;
 	rte_meter_srtcm_config;
+	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_color_aware_check;
 	rte_meter_trtcm_color_blind_check;
 	rte_meter_trtcm_config;
-
-	local: *;
-};
-
-DPDK_18.08 {
-	global:
-
-	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_profile_config;
+
+	local: *;
 };
 
 EXPERIMENTAL {
diff --git a/lib/librte_metrics/rte_metrics_version.map b/lib/librte_metrics/rte_metrics_version.map
index 6ac99a44a1..85663f356e 100644
--- a/lib/librte_metrics/rte_metrics_version.map
+++ b/lib/librte_metrics/rte_metrics_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_metrics_get_names;
diff --git a/lib/librte_net/rte_net_version.map b/lib/librte_net/rte_net_version.map
index fffc4a3723..8a4e75a3a0 100644
--- a/lib/librte_net/rte_net_version.map
+++ b/lib/librte_net/rte_net_version.map
@@ -1,25 +1,14 @@
-DPDK_16.11 {
-	global:
-	rte_net_get_ptype;
-
-	local: *;
-};
-
-DPDK_17.05 {
-	global:
-
-	rte_net_crc_calc;
-	rte_net_crc_set_alg;
-
-} DPDK_16.11;
-
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_random_addr;
 	rte_ether_format_addr;
+	rte_net_crc_calc;
+	rte_net_crc_set_alg;
+	rte_net_get_ptype;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_pci/rte_pci_version.map b/lib/librte_pci/rte_pci_version.map
index 03790cb0f0..67eb845796 100644
--- a/lib/librte_pci/rte_pci_version.map
+++ b/lib/librte_pci/rte_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	pci_map_resource;
diff --git a/lib/librte_pdump/rte_pdump_version.map b/lib/librte_pdump/rte_pdump_version.map
index 3e744f3012..6d02ccce6d 100644
--- a/lib/librte_pdump/rte_pdump_version.map
+++ b/lib/librte_pdump/rte_pdump_version.map
@@ -1,4 +1,4 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	global:
 
 	rte_pdump_disable;
diff --git a/lib/librte_pipeline/rte_pipeline_version.map b/lib/librte_pipeline/rte_pipeline_version.map
index 420f065d6e..64d38afecd 100644
--- a/lib/librte_pipeline/rte_pipeline_version.map
+++ b/lib/librte_pipeline/rte_pipeline_version.map
@@ -1,6 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_pipeline_ah_packet_drop;
+	rte_pipeline_ah_packet_hijack;
 	rte_pipeline_check;
 	rte_pipeline_create;
 	rte_pipeline_flush;
@@ -9,42 +11,22 @@ DPDK_2.0 {
 	rte_pipeline_port_in_create;
 	rte_pipeline_port_in_disable;
 	rte_pipeline_port_in_enable;
+	rte_pipeline_port_in_stats_read;
 	rte_pipeline_port_out_create;
 	rte_pipeline_port_out_packet_insert;
+	rte_pipeline_port_out_stats_read;
 	rte_pipeline_run;
 	rte_pipeline_table_create;
 	rte_pipeline_table_default_entry_add;
 	rte_pipeline_table_default_entry_delete;
 	rte_pipeline_table_entry_add;
-	rte_pipeline_table_entry_delete;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pipeline_port_in_stats_read;
-	rte_pipeline_port_out_stats_read;
-	rte_pipeline_table_stats_read;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_pipeline_table_entry_add_bulk;
+	rte_pipeline_table_entry_delete;
 	rte_pipeline_table_entry_delete_bulk;
+	rte_pipeline_table_stats_read;
 
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_pipeline_ah_packet_hijack;
-	rte_pipeline_ah_packet_drop;
-
-} DPDK_2.2;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_port/rte_port_version.map b/lib/librte_port/rte_port_version.map
index d5989721d7..18c6154672 100644
--- a/lib/librte_port/rte_port_version.map
+++ b/lib/librte_port/rte_port_version.map
@@ -1,65 +1,35 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_port_ethdev_reader_ops;
+	rte_port_ethdev_writer_nodrop_ops;
 	rte_port_ethdev_writer_ops;
+	rte_port_fd_reader_ops;
+	rte_port_fd_writer_nodrop_ops;
+	rte_port_fd_writer_ops;
+	rte_port_kni_reader_ops;
+	rte_port_kni_writer_nodrop_ops;
+	rte_port_kni_writer_ops;
+	rte_port_ring_multi_reader_ops;
+	rte_port_ring_multi_writer_nodrop_ops;
+	rte_port_ring_multi_writer_ops;
 	rte_port_ring_reader_ipv4_frag_ops;
+	rte_port_ring_reader_ipv6_frag_ops;
 	rte_port_ring_reader_ops;
 	rte_port_ring_writer_ipv4_ras_ops;
+	rte_port_ring_writer_ipv6_ras_ops;
+	rte_port_ring_writer_nodrop_ops;
 	rte_port_ring_writer_ops;
 	rte_port_sched_reader_ops;
 	rte_port_sched_writer_ops;
 	rte_port_sink_ops;
 	rte_port_source_ops;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_port_ethdev_writer_nodrop_ops;
-	rte_port_ring_reader_ipv6_frag_ops;
-	rte_port_ring_writer_ipv6_ras_ops;
-	rte_port_ring_writer_nodrop_ops;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_port_ring_multi_reader_ops;
-	rte_port_ring_multi_writer_ops;
-	rte_port_ring_multi_writer_nodrop_ops;
-
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_port_kni_reader_ops;
-	rte_port_kni_writer_ops;
-	rte_port_kni_writer_nodrop_ops;
-
-} DPDK_2.2;
-
-DPDK_16.11 {
-	global:
-
-	rte_port_fd_reader_ops;
-	rte_port_fd_writer_ops;
-	rte_port_fd_writer_nodrop_ops;
-
-} DPDK_16.07;
-
-DPDK_18.11 {
-	global:
-
 	rte_port_sym_crypto_reader_ops;
-	rte_port_sym_crypto_writer_ops;
 	rte_port_sym_crypto_writer_nodrop_ops;
+	rte_port_sym_crypto_writer_ops;
 
-} DPDK_16.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_power/rte_power_version.map b/lib/librte_power/rte_power_version.map
index 7729838137..55a168f56e 100644
--- a/lib/librte_power/rte_power_version.map
+++ b/lib/librte_power/rte_power_version.map
@@ -1,39 +1,27 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_power_exit;
+	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
+	rte_power_freq_enable_turbo;
 	rte_power_freq_max;
 	rte_power_freq_min;
 	rte_power_freq_up;
 	rte_power_freqs;
+	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_guest_channel_send_msg;
 	rte_power_init;
 	rte_power_set_env;
 	rte_power_set_freq;
+	rte_power_turbo_status;
 	rte_power_unset_env;
 
 	local: *;
 };
 
-DPDK_17.11 {
-	global:
-
-	rte_power_guest_channel_send_msg;
-	rte_power_freq_disable_turbo;
-	rte_power_freq_enable_turbo;
-	rte_power_turbo_status;
-
-} DPDK_2.0;
-
-DPDK_18.08 {
-	global:
-
-	rte_power_get_capabilities;
-
-} DPDK_17.11;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_rawdev/rte_rawdev_version.map b/lib/librte_rawdev/rte_rawdev_version.map
index b61dbff11c..d847c9e0d3 100644
--- a/lib/librte_rawdev/rte_rawdev_version.map
+++ b/lib/librte_rawdev/rte_rawdev_version.map
@@ -1,4 +1,4 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_rawdev_close;
@@ -17,8 +17,8 @@ DPDK_18.08 {
 	rte_rawdev_pmd_release;
 	rte_rawdev_queue_conf_get;
 	rte_rawdev_queue_count;
-	rte_rawdev_queue_setup;
 	rte_rawdev_queue_release;
+	rte_rawdev_queue_setup;
 	rte_rawdev_reset;
 	rte_rawdev_selftest;
 	rte_rawdev_set_attr;
diff --git a/lib/librte_reorder/rte_reorder_version.map b/lib/librte_reorder/rte_reorder_version.map
index 0a8a54de83..cf444062df 100644
--- a/lib/librte_reorder/rte_reorder_version.map
+++ b/lib/librte_reorder/rte_reorder_version.map
@@ -1,13 +1,13 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_reorder_create;
-	rte_reorder_init;
+	rte_reorder_drain;
 	rte_reorder_find_existing;
-	rte_reorder_reset;
 	rte_reorder_free;
+	rte_reorder_init;
 	rte_reorder_insert;
-	rte_reorder_drain;
+	rte_reorder_reset;
 
 	local: *;
 };
diff --git a/lib/librte_ring/rte_ring_version.map b/lib/librte_ring/rte_ring_version.map
index 510c1386e0..89d84bcf48 100644
--- a/lib/librte_ring/rte_ring_version.map
+++ b/lib/librte_ring/rte_ring_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ring_create;
 	rte_ring_dump;
+	rte_ring_free;
 	rte_ring_get_memsize;
 	rte_ring_init;
 	rte_ring_list_dump;
@@ -11,13 +12,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.2 {
-	global:
-
-	rte_ring_free;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_sched/rte_sched_version.map b/lib/librte_sched/rte_sched_version.map
index f33761e63e..cefd990367 100644
--- a/lib/librte_sched/rte_sched_version.map
+++ b/lib/librte_sched/rte_sched_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_approx;
@@ -14,6 +14,9 @@ DPDK_2.0 {
 	rte_sched_port_enqueue;
 	rte_sched_port_free;
 	rte_sched_port_get_memory_footprint;
+	rte_sched_port_pkt_read_color;
+	rte_sched_port_pkt_read_tree_path;
+	rte_sched_port_pkt_write;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_read_stats;
@@ -21,15 +24,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.1 {
-	global:
-
-	rte_sched_port_pkt_write;
-	rte_sched_port_pkt_read_tree_path;
-	rte_sched_port_pkt_read_color;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_security/rte_security_version.map b/lib/librte_security/rte_security_version.map
index 53267bf3cc..b07314bbf4 100644
--- a/lib/librte_security/rte_security_version.map
+++ b/lib/librte_security/rte_security_version.map
@@ -1,4 +1,4 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	rte_security_attach_session;
diff --git a/lib/librte_table/rte_table_version.map b/lib/librte_table/rte_table_version.map
index 6237252bec..40f72b1fe8 100644
--- a/lib/librte_table/rte_table_version.map
+++ b/lib/librte_table/rte_table_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_table_acl_ops;
diff --git a/lib/librte_timer/rte_timer_version.map b/lib/librte_timer/rte_timer_version.map
index 72f75c8181..2a59d3f081 100644
--- a/lib/librte_timer/rte_timer_version.map
+++ b/lib/librte_timer/rte_timer_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_timer_dump_stats;
@@ -14,16 +14,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_19.05 {
-	global:
-
-	rte_timer_dump_stats;
-	rte_timer_manage;
-	rte_timer_reset;
-	rte_timer_stop;
-	rte_timer_subsystem_init;
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_vhost/rte_vhost_version.map b/lib/librte_vhost/rte_vhost_version.map
index ce517b1271..c512377fe6 100644
--- a/lib/librte_vhost/rte_vhost_version.map
+++ b/lib/librte_vhost/rte_vhost_version.map
@@ -1,64 +1,34 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_vhost_avail_entries;
 	rte_vhost_dequeue_burst;
 	rte_vhost_driver_callback_register;
-	rte_vhost_driver_register;
-	rte_vhost_enable_guest_notification;
-	rte_vhost_enqueue_burst;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_vhost_driver_unregister;
-
-} DPDK_2.0;
-
-DPDK_16.07 {
-	global:
-
-	rte_vhost_avail_entries;
-	rte_vhost_get_ifname;
-	rte_vhost_get_numa_node;
-	rte_vhost_get_queue_num;
-
-} DPDK_2.1;
-
-DPDK_17.05 {
-	global:
-
 	rte_vhost_driver_disable_features;
 	rte_vhost_driver_enable_features;
 	rte_vhost_driver_get_features;
+	rte_vhost_driver_register;
 	rte_vhost_driver_set_features;
 	rte_vhost_driver_start;
+	rte_vhost_driver_unregister;
+	rte_vhost_enable_guest_notification;
+	rte_vhost_enqueue_burst;
+	rte_vhost_get_ifname;
 	rte_vhost_get_mem_table;
 	rte_vhost_get_mtu;
 	rte_vhost_get_negotiated_features;
+	rte_vhost_get_numa_node;
+	rte_vhost_get_queue_num;
 	rte_vhost_get_vhost_vring;
 	rte_vhost_get_vring_num;
 	rte_vhost_gpa_to_vva;
 	rte_vhost_log_used_vring;
 	rte_vhost_log_write;
-
-} DPDK_16.07;
-
-DPDK_17.08 {
-	global:
-
 	rte_vhost_rx_queue_count;
-
-} DPDK_17.05;
-
-DPDK_18.02 {
-	global:
-
 	rte_vhost_vring_call;
 
-} DPDK_17.08;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v7 10/10] buildtools: add ABI versioning check script
  2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
                             ` (9 preceding siblings ...)
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 09/10] build: change ABI version to 20.0 Anatoly Burakov
@ 2019-11-08 16:25           ` Anatoly Burakov
  2019-11-19 18:16             ` Thomas Monjalon
  10 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-08 16:25 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, john.mcnamara, ray.kinsella, bruce.richardson,
	thomas, david.marchand, Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

Add a shell script that checks whether built libraries are
versioned with expected ABI (current ABI, current ABI + 1,
or EXPERIMENTAL).

The following command was used to verify current source tree
(assuming build directory is in ./build):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - Moved this to the end of the patchset
    - Fixed bug when ABI symbols were not found because the .so
      did not declare any public symbols

 buildtools/check-abi-version.sh | 54 +++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100755 buildtools/check-abi-version.sh

diff --git a/buildtools/check-abi-version.sh b/buildtools/check-abi-version.sh
new file mode 100755
index 0000000000..29aea97735
--- /dev/null
+++ b/buildtools/check-abi-version.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+# Check whether library symbols have correct
+# version (provided ABI number or provided ABI
+# number + 1 or EXPERIMENTAL).
+# Args:
+#   $1: path of the library .so file
+#   $2: ABI major version number to check
+#       (defaults to ABI_VERSION file value)
+
+if [ -z "$1" ]; then
+    echo "Script checks whether library symbols have"
+    echo "correct version (ABI_VER/ABI_VER+1/EXPERIMENTAL)"
+    echo "Usage:"
+    echo "  $0 SO_FILE_PATH [ABI_VER]"
+    exit 1
+fi
+
+LIB="$1"
+DEFAULT_ABI=$(cat "$(dirname \
+            $(readlink -f $0))/../config/ABI_VERSION" | \
+            cut -d'.' -f 1)
+ABIVER="DPDK_${2-$DEFAULT_ABI}"
+NEXT_ABIVER="DPDK_$((${2-$DEFAULT_ABI}+1))"
+
+ret=0
+
+# get output of objdump
+OBJ_DUMP_OUTPUT=`objdump -TC --section=.text ${LIB} 2>&1 | grep ".text"`
+
+# there may not be any .text sections in the .so file, in which case exit early
+echo "${OBJ_DUMP_OUTPUT}" | grep "not found in any input file" -q
+if [ "$?" -eq 0 ]; then
+    exit 0
+fi
+
+# we have symbols, so let's see if the versions are correct
+for SYM in `echo "${OBJ_DUMP_OUTPUT}" | awk '{print $(NF-1) "-" $NF}'`
+do
+    version=$(echo $SYM | cut -d'-' -f 1)
+    symbol=$(echo $SYM | cut -d'-' -f 2)
+    case $version in (*"$ABIVER"*|*"$NEXT_ABIVER"*|"EXPERIMENTAL")
+        ;;
+    (*)
+        echo "Warning: symbol $symbol ($version) should be annotated " \
+             "as ABI version $ABIVER / $NEXT_ABIVER, or EXPERIMENTAL."
+        ret=1
+    ;;
+    esac
+done
+
+exit $ret
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global Anatoly Burakov
@ 2019-11-19 13:53             ` Thomas Monjalon
  2019-11-19 15:48               ` Burakov, Anatoly
  2019-11-20 12:10             ` Kinsella, Ray
  1 sibling, 1 reply; 131+ messages in thread
From: Thomas Monjalon @ 2019-11-19 13:53 UTC (permalink / raw)
  To: Anatoly Burakov, Marcin Baran
  Cc: dev, Bruce Richardson, john.mcnamara, ray.kinsella,
	david.marchand, Pawel Modrak

08/11/2019 17:25, Anatoly Burakov:
> From: Marcin Baran <marcinx.baran@intel.com>
> 
> As per new ABI policy, all of the libraries are now versioned using
> one global ABI version. Changes in this patch implement the
> necessary steps to enable that.

For the history, would be nice to describe the "why" of each change here.
Please do not be lazy :)

> --- a/buildtools/meson.build
> +++ b/buildtools/meson.build
> +is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']

A comment is missing to explain the relationship between
"experimental" and "^DPDK_".


> --- /dev/null
> +++ b/config/ABI_VERSION
> +20.0

Why in config/ directory and not in root as for VERSION file?


> +			if is_experimental != 0
> +				lib_version = '0.1'

Why 0.1 and not 0.0?
How do we increment the minor version of experimental libs?

> +				so_version = '0'

How so_version is incremented?
It would deserve a comment here.

>  			if not use_function_versioning
> -				# use pre-build objects to build shared lib
> +				# then use pre-build objects to build shared lib

Is this change relevant?

> -option('per_library_versions', type: 'boolean', value: true,
> -	description: 'true: each lib gets its own version number, false: DPDK version used for each lib')

Good to see this option removed.




^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 02/10] buildtools: add script for updating symbols abi version
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
@ 2019-11-19 14:01             ` Thomas Monjalon
  2019-11-19 15:38               ` Burakov, Anatoly
  0 siblings, 1 reply; 131+ messages in thread
From: Thomas Monjalon @ 2019-11-19 14:01 UTC (permalink / raw)
  To: Anatoly Burakov, Pawel Modrak
  Cc: dev, john.mcnamara, ray.kinsella, bruce.richardson, david.marchand

08/11/2019 17:25, Anatoly Burakov:
> From: Pawel Modrak <pawelx.modrak@intel.com>
> 
> Add a script that automatically merges all stable ABI's under one
> ABI section with the new version, while leaving experimental
> section exactly as it is.
> 
> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> --- /dev/null
> +++ b/buildtools/update_version_map_abi.py
> +"""
> +A Python program to update the ABI version and function names in a DPDK
> +lib_*_version.map file. Called from the buildtools/update_abi.sh utility.
> +"""

Clearly this script is doing more than updating a version number and names.
I already see more in the commit log.
Please would you like to add something in this description?



^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 02/10] buildtools: add script for updating symbols abi version
  2019-11-19 14:01             ` Thomas Monjalon
@ 2019-11-19 15:38               ` Burakov, Anatoly
  2019-11-19 16:05                 ` Thomas Monjalon
  0 siblings, 1 reply; 131+ messages in thread
From: Burakov, Anatoly @ 2019-11-19 15:38 UTC (permalink / raw)
  To: Thomas Monjalon, Pawel Modrak
  Cc: dev, john.mcnamara, ray.kinsella, bruce.richardson, david.marchand

On 19-Nov-19 2:01 PM, Thomas Monjalon wrote:
> 08/11/2019 17:25, Anatoly Burakov:
>> From: Pawel Modrak <pawelx.modrak@intel.com>
>>
>> Add a script that automatically merges all stable ABI's under one
>> ABI section with the new version, while leaving experimental
>> section exactly as it is.
>>
>> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
>> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
>> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
>> ---
>> --- /dev/null
>> +++ b/buildtools/update_version_map_abi.py
>> +"""
>> +A Python program to update the ABI version and function names in a DPDK
>> +lib_*_version.map file. Called from the buildtools/update_abi.sh utility.
>> +"""
> 
> Clearly this script is doing more than updating a version number and names.
> I already see more in the commit log.
> Please would you like to add something in this description?
> 
> 

Not sure what you're referring to. That's exactly what it's doing. What 
else is there that i'm missing?

-- 
Thanks,
Anatoly

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global
  2019-11-19 13:53             ` Thomas Monjalon
@ 2019-11-19 15:48               ` Burakov, Anatoly
  0 siblings, 0 replies; 131+ messages in thread
From: Burakov, Anatoly @ 2019-11-19 15:48 UTC (permalink / raw)
  To: Thomas Monjalon, Marcin Baran
  Cc: dev, Bruce Richardson, john.mcnamara, ray.kinsella,
	david.marchand, Pawel Modrak

On 19-Nov-19 1:53 PM, Thomas Monjalon wrote:
> 08/11/2019 17:25, Anatoly Burakov:
>> From: Marcin Baran <marcinx.baran@intel.com>
>>
>> As per new ABI policy, all of the libraries are now versioned using
>> one global ABI version. Changes in this patch implement the
>> necessary steps to enable that.
> 
> For the history, would be nice to describe the "why" of each change here.

Here and other review comments:

I never really touched this script because my meson-foo and ABI-foo is 
non-existent. I would really appreciate some help here on what the 
changes are supposed to do (esp. with regards to ABI versioning 
mechanics), because i understand very little of what this patch does.

> Please do not be lazy :)

Says the guy who waited until last moment to review it!

-- 
Thanks,
Anatoly

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 02/10] buildtools: add script for updating symbols abi version
  2019-11-19 15:38               ` Burakov, Anatoly
@ 2019-11-19 16:05                 ` Thomas Monjalon
  0 siblings, 0 replies; 131+ messages in thread
From: Thomas Monjalon @ 2019-11-19 16:05 UTC (permalink / raw)
  To: Burakov, Anatoly
  Cc: dev, Pawel Modrak, john.mcnamara, ray.kinsella, bruce.richardson,
	david.marchand

19/11/2019 16:38, Burakov, Anatoly:
> On 19-Nov-19 2:01 PM, Thomas Monjalon wrote:
> > 08/11/2019 17:25, Anatoly Burakov:
> >> From: Pawel Modrak <pawelx.modrak@intel.com>
> >>
> >> Add a script that automatically merges all stable ABI's under one
> >> ABI section with the new version, while leaving experimental
> >> section exactly as it is.
> >>
> >> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
> >> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> >> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> >> ---
> >> --- /dev/null
> >> +++ b/buildtools/update_version_map_abi.py
> >> +"""
> >> +A Python program to update the ABI version and function names in a DPDK
> >> +lib_*_version.map file. Called from the buildtools/update_abi.sh utility.
> >> +"""
> > 
> > Clearly this script is doing more than updating a version number and names.
> > I already see more in the commit log.
> > Please would you like to add something in this description?
> 
> Not sure what you're referring to. That's exactly what it's doing. What 
> else is there that i'm missing?

"merges all stable ABI's under one ABI section"
"while leaving experimental section exactly as it is"

I think this needs to be in the comment at the top of the file,
so we have an introduction for the code in the rest of the file.



^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 03/10] buildtools: add ABI update shell script
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 03/10] buildtools: add ABI update shell script Anatoly Burakov
@ 2019-11-19 17:38             ` Thomas Monjalon
  2019-11-20 11:50               ` Burakov, Anatoly
  0 siblings, 1 reply; 131+ messages in thread
From: Thomas Monjalon @ 2019-11-19 17:38 UTC (permalink / raw)
  To: Anatoly Burakov
  Cc: dev, john.mcnamara, ray.kinsella, bruce.richardson, david.marchand

08/11/2019 17:25, Anatoly Burakov:
> In order to facilitate mass updating of version files, add a shell
> script that recurses into lib/ and drivers/ directories and calls
> the ABI version update script.
> 
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> --- /dev/null
> +++ b/buildtools/update-abi.sh
> @@ -0,0 +1,42 @@
> +#!/bin/sh

For such script, I think -e is mandatory, so we do not miss any error.
It would just require merge following check in the "if":

> +# check version string format
> +echo $abi_version | grep -q -e "^[[:digit:]]\{1,2\}\.[[:digit:]]\{1,2\}$"
> +if [ "$?" -ne 0 ]; then
> +      # output to stderr
> +      >&2 echo "ABI version must be formatted as MAJOR.MINOR version"
> +      exit 1
> +fi




^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 09/10] build: change ABI version to 20.0
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 09/10] build: change ABI version to 20.0 Anatoly Burakov
@ 2019-11-19 17:46             ` Thomas Monjalon
  2019-11-19 21:50             ` David Marchand
  1 sibling, 0 replies; 131+ messages in thread
From: Thomas Monjalon @ 2019-11-19 17:46 UTC (permalink / raw)
  To: Anatoly Burakov
  Cc: dev, Pawel Modrak, Nicolas Chautru, Hemant Agrawal,
	Sachin Saxena, Rosen Xu, Stephen Hemminger, Anoob Joseph,
	Tomasz Duszynski, Liron Himi, Jerin Jacob, Nithin Dabilpuram,
	Vamsi Attunuru, Lee Daly, Fiona Trahe, Ashish Gupta, Sunila Sahu,
	Declan Doherty, Pablo de Lara, Gagandeep Singh, Ravi Kumar,
	Akhil Goyal, Michael Shamis, Nagadheeraj Rottela,
	Srikanth Jampala, Ankur Dwivedi, Fan Zhang, Jay Zhou,
	Nipun Gupta, Mattias Rönnblom, Pavan Nikhilesh, Liang Ma,
	Peter Mccarthy, Harry van Haaren, Artem V. Andreev,
	Andrew Rybchenko, Olivier Matz, Gage Eads, John W. Linville,
	Xiaolong Ye, Qi Zhang, Shepard Siegel, Ed Czeck, John Miller,
	Igor Russkikh, Pavel Belous, Allain Legacy, Matt Peters,
	Rasesh Mody, Shahed Shaikh, Ajit Khaparde, Somnath Kotur,
	Chas Williams, Rahul Lakkireddy, Wenzhuo Lu, Marcin Wojtas,
	Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Igor Chauskin,
	John Daley, Hyong Youb Kim, Gaetan Rivet, Xiao Wang, Ziyang Xuan,
	Xiaoyun Wang, Guoyang Zhou, Wei Hu (Xavier), Min Hu (Connor),
	Yisen Zhuang, Beilei Xing, Jingjing Wu, Qiming Yang,
	Konstantin Ananyev, Ferruh Yigit, Shijith Thotton,
	Srisivasubramanian Srinivasan, Jakub Grajciar, Matan Azrad,
	Shahaf Shuler, Viacheslav Ovsiienko, Zyta Szpak,
	K. Y. Srinivasan, Haiyang Zhang, Rastislav Cernay, Jan Remes,
	Alejandro Lucero, Tetsuya Mukawa, Kiran Kumar K,
	Bruce Richardson, Jasvinder Singh, Cristian Dumitrescu,
	Keith Wiles, Maciej Czekaj, Maxime Coquelin, Tiwei Bie,
	Zhihong Wang, Yong Wang, Tianfei zhang, Xiaoyun Li, Satha Rao,
	Shreyansh Jain, David Hunt, Byron Marohn, Yipeng Wang, Jiayu Hu,
	Sameh Gobriel, Reshma Pattan, Vladimir Medvedkin, Robert Sanford,
	Erik Gabriel Carrillo, john.mcnamara, ray.kinsella,
	david.marchand

08/11/2019 17:25, Anatoly Burakov:
> From: Pawel Modrak <pawelx.modrak@intel.com>
> 
> Merge all vesions in linker version script files to DPDK_20.0.
> 
> This commit was generated by running the following command:
> 
> :~/DPDK$ buildtools/update-abi.sh 20.0
> 
> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
>  148 files changed, 698 insertions(+), 1433 deletions(-)

That's really fantastic to have a tool doing that job!
Hopefully the diff will be smaller in next versions.

Question: should we run this script at the beginning of each version,
while incrementing the version numbers?



^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 10/10] buildtools: add ABI versioning check script
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 10/10] buildtools: add ABI versioning check script Anatoly Burakov
@ 2019-11-19 18:16             ` Thomas Monjalon
  0 siblings, 0 replies; 131+ messages in thread
From: Thomas Monjalon @ 2019-11-19 18:16 UTC (permalink / raw)
  To: Anatoly Burakov, ray.kinsella
  Cc: dev, Marcin Baran, john.mcnamara, bruce.richardson,
	david.marchand, Pawel Modrak

08/11/2019 17:25, Anatoly Burakov:
> From: Marcin Baran <marcinx.baran@intel.com>
> +    echo "correct version (ABI_VER/ABI_VER+1/EXPERIMENTAL)"

I don't get why a symbol could be versioned for the next ABI?
Assuming we upgrade the ABI version at the beginning of the cycle,
every symbols should have the same version, right?

> +for SYM in `echo "${OBJ_DUMP_OUTPUT}" | awk '{print $(NF-1) "-" $NF}'`

Please, I really prefer we use the modern $() instead of backquotes.




^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 04/10] timer: remove deprecated code
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 04/10] timer: remove deprecated code Anatoly Burakov
@ 2019-11-19 21:42             ` David Marchand
  0 siblings, 0 replies; 131+ messages in thread
From: David Marchand @ 2019-11-19 21:42 UTC (permalink / raw)
  To: Anatoly Burakov, Thomas Monjalon
  Cc: dev, Marcin Baran, Robert Sanford, Erik Gabriel Carrillo,
	Mcnamara, John, Kinsella, Ray, Bruce Richardson

On Fri, Nov 8, 2019 at 5:25 PM Anatoly Burakov
<anatoly.burakov@intel.com> wrote:
>
> From: Marcin Baran <marcinx.baran@intel.com>
>
> Remove code for old ABI versions ahead of ABI version bump.
>
> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
> ---
>
> Notes:
>     v2:
>     - Moved this to before ABI version bump to avoid compile breakage

The .map should have been cleaned up at the same time those symbols are removed.

diff --git a/lib/librte_timer/rte_timer_version.map
b/lib/librte_timer/rte_timer_version.map
index 72f75c818..92c69b2e2 100644
--- a/lib/librte_timer/rte_timer_version.map
+++ b/lib/librte_timer/rte_timer_version.map
@@ -1,15 +1,10 @@
 DPDK_2.0 {
        global:

-       rte_timer_dump_stats;
        rte_timer_init;
-       rte_timer_manage;
        rte_timer_pending;
-       rte_timer_reset;
        rte_timer_reset_sync;
-       rte_timer_stop;
        rte_timer_stop_sync;
-       rte_timer_subsystem_init;

        local: *;
 };



--
David Marchand


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 05/10] lpm: remove deprecated code
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 05/10] lpm: " Anatoly Burakov
@ 2019-11-19 21:43             ` David Marchand
  0 siblings, 0 replies; 131+ messages in thread
From: David Marchand @ 2019-11-19 21:43 UTC (permalink / raw)
  To: Anatoly Burakov, Thomas Monjalon
  Cc: dev, Marcin Baran, Bruce Richardson, Vladimir Medvedkin,
	Mcnamara, John, Kinsella, Ray

On Fri, Nov 8, 2019 at 5:25 PM Anatoly Burakov
<anatoly.burakov@intel.com> wrote:
>
> From: Marcin Baran <marcinx.baran@intel.com>
>
> Remove code for old ABI versions ahead of ABI version bump.
>
> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
>
> Notes:
>     v2:
>     - Moved this to before ABI version bump to avoid compile breakage

Idem, those symbols must be removed from the lib .map.

--- a/lib/librte_lpm/rte_lpm_version.map
+++ b/lib/librte_lpm/rte_lpm_version.map
@@ -1,23 +1,12 @@
 DPDK_2.0 {
        global:

-       rte_lpm_add;
-       rte_lpm_create;
-       rte_lpm_delete;
-       rte_lpm_delete_all;
-       rte_lpm_find_existing;
-       rte_lpm_free;
-       rte_lpm_is_rule_present;
-       rte_lpm6_add;
        rte_lpm6_create;
        rte_lpm6_delete;
        rte_lpm6_delete_all;
        rte_lpm6_delete_bulk_func;
        rte_lpm6_find_existing;
        rte_lpm6_free;
-       rte_lpm6_is_rule_present;
-       rte_lpm6_lookup;
-       rte_lpm6_lookup_bulk_func;

        local: *;
 };




--
David Marchand


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 09/10] build: change ABI version to 20.0
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 09/10] build: change ABI version to 20.0 Anatoly Burakov
  2019-11-19 17:46             ` Thomas Monjalon
@ 2019-11-19 21:50             ` David Marchand
  2019-11-22  7:07               ` Sachin Saxena
  1 sibling, 1 reply; 131+ messages in thread
From: David Marchand @ 2019-11-19 21:50 UTC (permalink / raw)
  To: Anatoly Burakov, Thomas Monjalon
  Cc: dev, Hemant Agrawal, Sachin Saxena, Stephen Hemminger, Mcnamara,
	John, Kinsella, Ray, Bruce Richardson

Reduced the Cc: list.

On Fri, Nov 8, 2019 at 5:26 PM Anatoly Burakov
<anatoly.burakov@intel.com> wrote:
>
> From: Pawel Modrak <pawelx.modrak@intel.com>
>
> Merge all vesions in linker version script files to DPDK_20.0.
>
> This commit was generated by running the following command:
>
> :~/DPDK$ buildtools/update-abi.sh 20.0
>

I inspected the changes.
I caught just 3 oddities.
The first two were reported in the patches on timer and lpm.

The last one is in the dpaa bus driver:

> diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map
> index cf428a54dc..e6ca4361e0 100644
> --- a/drivers/bus/dpaa/rte_bus_dpaa_version.map
> +++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map
> -DPDK_18.08 {
> -       global:
> -
> -       fman_if_get_sg_enable;
> -       fman_if_set_sg;
> -
> -} DPDK_18.02;
> -
> -DPDK_18.11 {
> -       global:
> -
> -       bman_thread_irq;
> -       fman_if_get_sg_enable;
> -       fman_if_set_sg;
> -       qman_clear_irq;
> -
> -       qman_irqsource_add;
> -       qman_irqsource_remove;
>         qman_thread_fd;
>         qman_thread_irq;
> -

Here, we had fman_if_get_sg_enable and fman_if_set_sg in 18.08 and
18.11 sections, but no symbols for 18.08 were in the code.
I'd say this is fine, as there was no ABI change between 18.08 and
18.11 on them.


The rest of the series looks good to me.
Thanks Anatoly.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 03/10] buildtools: add ABI update shell script
  2019-11-19 17:38             ` Thomas Monjalon
@ 2019-11-20 11:50               ` Burakov, Anatoly
  0 siblings, 0 replies; 131+ messages in thread
From: Burakov, Anatoly @ 2019-11-20 11:50 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, john.mcnamara, ray.kinsella, bruce.richardson, david.marchand

On 19-Nov-19 5:38 PM, Thomas Monjalon wrote:
> 08/11/2019 17:25, Anatoly Burakov:
>> In order to facilitate mass updating of version files, add a shell
>> script that recurses into lib/ and drivers/ directories and calls
>> the ABI version update script.
>>
>> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
>> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
>> --- /dev/null
>> +++ b/buildtools/update-abi.sh
>> @@ -0,0 +1,42 @@
>> +#!/bin/sh
> 
> For such script, I think -e is mandatory, so we do not miss any error.
> It would just require merge following check in the "if":
> 

As was discussed on IRC, i'm fine with -e added to shebang, but i don't 
like if statements that take half of my monitor :) I would rather put it 
into a function. I just tested it:

```
#!/bin/sh -e

func() {
         false
}

if [ !func ]; then
         echo "Error"
fi
func
echo "This is never reached"
```

This outputs "Error". So i think i'll go ahead and make it into a 
function. This would still leave the code readable, *and* satisfy the 
"#!/bin/sh -e" shebang requirement :)

-- 
Thanks,
Anatoly

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global Anatoly Burakov
  2019-11-19 13:53             ` Thomas Monjalon
@ 2019-11-20 12:10             ` Kinsella, Ray
  2019-11-20 13:31               ` Thomas Monjalon
  1 sibling, 1 reply; 131+ messages in thread
From: Kinsella, Ray @ 2019-11-20 12:10 UTC (permalink / raw)
  To: Burakov, Anatoly, dev
  Cc: Baran, MarcinX, Thomas Monjalon, Richardson, Bruce, Mcnamara,
	John, david.marchand, Pawel Modrak, Yigit, Ferruh



> -----Original Message-----
> From: Burakov, Anatoly <anatoly.burakov@intel.com>
> Sent: Friday 8 November 2019 16:25
> To: dev@dpdk.org
> Cc: Baran, MarcinX <marcinx.baran@intel.com>; Thomas Monjalon
> <thomas@monjalon.net>; Richardson, Bruce <bruce.richardson@intel.com>;
> Mcnamara, John <john.mcnamara@intel.com>; Kinsella, Ray
> <ray.kinsella@intel.com>; david.marchand@redhat.com; Pawel Modrak
> <pawelx.modrak@intel.com>
> Subject: [PATCH v7 01/10] config: change ABI versioning to global
> 
> From: Marcin Baran <marcinx.baran@intel.com>
> 
> As per new ABI policy, all of the libraries are now versioned using one
> global ABI version. Changes in this patch implement the necessary steps
> to enable that.
> 
> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> ---
> 
> Notes:
>     v6:
>     - Silenced grep error message on trying to grep a directory
> 
>     v3:
>     - Removed Windows support from Makefile changes
>     - Removed unneeded path conversions from meson files
> 
>  buildtools/meson.build |  2 ++
>  config/ABI_VERSION     |  1 +
>  config/meson.build     |  4 +++-
>  drivers/meson.build    | 20 ++++++++++++--------
>  lib/meson.build        | 18 ++++++++++++------
>  meson_options.txt      |  2 --
>  mk/rte.lib.mk          | 13 ++++---------
>  7 files changed, 34 insertions(+), 26 deletions(-)  create mode 100644
> config/ABI_VERSION
> 
> diff --git a/buildtools/meson.build b/buildtools/meson.build index
> 32c79c1308..78ce69977d 100644
> --- a/buildtools/meson.build
> +++ b/buildtools/meson.build
> @@ -12,3 +12,5 @@ if python3.found()
>  else
>  	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
> endif
> +
> +is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
> diff --git a/config/ABI_VERSION b/config/ABI_VERSION new file mode
> 100644 index 0000000000..9a7c1e503f
> --- /dev/null
> +++ b/config/ABI_VERSION
> @@ -0,0 +1 @@
> +20.0
> diff --git a/config/meson.build b/config/meson.build index
> 2b1cb92e7e..30aa2a5313 100644
> --- a/config/meson.build
> +++ b/config/meson.build
> @@ -18,6 +18,8 @@ endforeach
>  # depending on the configuration options  pver =
> meson.project_version().split('.')
>  major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
> +abi_version = run_command(find_program('cat', 'more'),
> +	files('ABI_VERSION')).stdout().strip()
> 
>  # extract all version information into the build configuration
> dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int()) @@ -37,7 +39,7 @@
> endif
> 
>  pmd_subdir_opt = get_option('drivers_install_subdir')
>  if pmd_subdir_opt.contains('<VERSION>')
> -	pmd_subdir_opt =
> major_version.join(pmd_subdir_opt.split('<VERSION>'))
> +	pmd_subdir_opt =
> abi_version.join(pmd_subdir_opt.split('<VERSION>'))
>  endif
>  driver_install_path = join_paths(get_option('libdir'), pmd_subdir_opt)
> eal_pmd_path = join_paths(get_option('prefix'), driver_install_path)
> diff --git a/drivers/meson.build b/drivers/meson.build index
> 156d2dc717..b03e0c3159 100644
> --- a/drivers/meson.build
> +++ b/drivers/meson.build
> @@ -124,12 +124,19 @@ foreach class:dpdk_driver_classes
>  					output: out_filename,
>  					depends: [pmdinfogen, tmp_lib])
> 
> -			if get_option('per_library_versions')
> -				lib_version = '@0@.1'.format(version)
> -				so_version = '@0@'.format(version)
> +			version_map = '@0@/@1@/@2@_version.map'.format(
> +					meson.current_source_dir(),
> +					drv_path, lib_name)
> +
> +			is_experimental = run_command(is_experimental_cmd,
> +				files(version_map)).returncode()
> +
> +			if is_experimental != 0
> +				lib_version = '0.1'
[rk] This all makes sense - except this part.
[rk] I would expect the experimental major version to always be zero ...
[rk] However I would expect the minor version to increment with each new release or at the maintainers discretion. 

> +				so_version = '0'
>  			else
> -				lib_version = major_version
> -				so_version = major_version
> +				lib_version = abi_version
> +				so_version = abi_version
>  			endif
> 
>  			# now build the static driver
> @@ -142,9 +149,6 @@ foreach class:dpdk_driver_classes
>  				install: true)
> 
>  			# now build the shared driver
> -			version_map = '@0@/@1@/@2@_version.map'.format(
> -					meson.current_source_dir(),
> -					drv_path, lib_name)
>  			shared_lib = shared_library(lib_name,
>  				sources,
>  				objects: objs,
> diff --git a/lib/meson.build b/lib/meson.build index
> b2ec9c09a9..3cff2482b1 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -106,12 +106,18 @@ foreach l:libraries
>  				cflags += '-DRTE_USE_FUNCTION_VERSIONING'
>  			endif
> 
> -			if get_option('per_library_versions')
> -				lib_version = '@0@.1'.format(version)
> -				so_version = '@0@'.format(version)
> +			version_map = '@0@/@1@/rte_@2@_version.map'.format(
> +					meson.current_source_dir(), dir_name, name)
> +
> +			is_experimental = run_command(is_experimental_cmd,
> +					files(version_map)).returncode()
> +
> +			if is_experimental != 0
> +				lib_version = '0.1'
> +				so_version = '0'
>  			else
> -				lib_version = major_version
> -				so_version = major_version
> +				lib_version = abi_version
> +				so_version = abi_version
>  			endif
> 
>  			# first build static lib
> @@ -127,7 +133,7 @@ foreach l:libraries
>  					dependencies: static_deps)
> 
>  			if not use_function_versioning
> -				# use pre-build objects to build shared lib
> +				# then use pre-build objects to build shared lib
>  				sources = []
>  				objs += static_lib.extract_all_objects(recursive:
> false)
>  			else
> diff --git a/meson_options.txt b/meson_options.txt index
> 89650b0e9c..da6a7f0302 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -30,8 +30,6 @@ option('max_lcores', type: 'integer', value: 128,
>  	description: 'maximum number of cores/threads supported by EAL')
> option('max_numa_nodes', type: 'integer', value: 4,
>  	description: 'maximum number of NUMA nodes supported by EAL') -
> option('per_library_versions', type: 'boolean', value: true,
> -	description: 'true: each lib gets its own version number, false:
> DPDK version used for each lib')
>  option('tests', type: 'boolean', value: true,
>  	description: 'build unit tests')
>  option('use_hpet', type: 'boolean', value: false, diff --git
> a/mk/rte.lib.mk b/mk/rte.lib.mk index 4df8849a08..b49af9192b 100644
> --- a/mk/rte.lib.mk
> +++ b/mk/rte.lib.mk
> @@ -11,20 +11,15 @@ EXTLIB_BUILD ?= n
>  # VPATH contains at least SRCDIR
>  VPATH += $(SRCDIR)
> 
> -ifneq ($(CONFIG_RTE_MAJOR_ABI),)
> -ifneq ($(LIBABIVER),)
> -LIBABIVER := $(CONFIG_RTE_MAJOR_ABI)
> -endif
> +ifneq ($(shell grep -s "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),) LIBABIVER
> :=
> +$(shell cat $(RTE_SRCDIR)/config/ABI_VERSION) else LIBABIVER := 0
>  endif
> 
>  ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
>  LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))  ifeq
> ($(EXTLIB_BUILD),n) -ifeq ($(CONFIG_RTE_MAJOR_ABI),) -ifeq
> ($(CONFIG_RTE_NEXT_ABI),y) -LIB := $(LIB).1 -endif -endif  CPU_LDFLAGS
> += --version-script=$(SRCDIR)/$(EXPORT_MAP)
>  endif
>  endif
> --
> 2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global
  2019-11-20 12:10             ` Kinsella, Ray
@ 2019-11-20 13:31               ` Thomas Monjalon
  2019-11-20 14:10                 ` Kinsella, Ray
  0 siblings, 1 reply; 131+ messages in thread
From: Thomas Monjalon @ 2019-11-20 13:31 UTC (permalink / raw)
  To: Kinsella, Ray, Burakov, Anatoly
  Cc: dev, Baran, MarcinX, Richardson, Bruce, Mcnamara, John,
	david.marchand, Pawel Modrak, Yigit, Ferruh

20/11/2019 13:10, Kinsella, Ray:
> From: Burakov, Anatoly <anatoly.burakov@intel.com>
> > --- a/drivers/meson.build
> > +++ b/drivers/meson.build
> > +			if is_experimental != 0
> > +				lib_version = '0.1'
> [rk] This all makes sense - except this part.
> [rk] I would expect the experimental major version to always be zero ...
> [rk] However I would expect the minor version to increment with each new release or at the maintainers discretion. 

Yes, the minor must be incremented with each new release
if we want to allow 2 DPDK versions to be installed in the same system.

This policy must be changed:
"
Experimental libraries always have a major version of 0
to indicate they exist outside of ABI Versioning,
with the minor version incremented with each ABI change to library.
"

I propose to re-use the global ABI version for experimental
by prefixing with "0.".
So for ABI 20.0, it could be 0.20.0 or 0.200? Which one?



^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global
  2019-11-20 13:31               ` Thomas Monjalon
@ 2019-11-20 14:10                 ` Kinsella, Ray
  0 siblings, 0 replies; 131+ messages in thread
From: Kinsella, Ray @ 2019-11-20 14:10 UTC (permalink / raw)
  To: Thomas Monjalon, Burakov, Anatoly
  Cc: dev, Baran, MarcinX, Richardson, Bruce, Mcnamara, John,
	david.marchand, Pawel Modrak, Yigit, Ferruh

+1 - that's a plan.

Ray K

> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Wednesday 20 November 2019 13:32
> To: Kinsella, Ray <ray.kinsella@intel.com>; Burakov, Anatoly
> <anatoly.burakov@intel.com>
> Cc: dev@dpdk.org; Baran, MarcinX <marcinx.baran@intel.com>; Richardson,
> Bruce <bruce.richardson@intel.com>; Mcnamara, John
> <john.mcnamara@intel.com>; david.marchand@redhat.com; Pawel Modrak
> <pawelx.modrak@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>
> Subject: Re: [PATCH v7 01/10] config: change ABI versioning to global
> 
> 20/11/2019 13:10, Kinsella, Ray:
> > From: Burakov, Anatoly <anatoly.burakov@intel.com>
> > > --- a/drivers/meson.build
> > > +++ b/drivers/meson.build
> > > +			if is_experimental != 0
> > > +				lib_version = '0.1'
> > [rk] This all makes sense - except this part.
> > [rk] I would expect the experimental major version to always be zero
> ...
> > [rk] However I would expect the minor version to increment with each
> new release or at the maintainers discretion.
> 
> Yes, the minor must be incremented with each new release if we want to
> allow 2 DPDK versions to be installed in the same system.
> 
> This policy must be changed:
> "
> Experimental libraries always have a major version of 0 to indicate
> they exist outside of ABI Versioning, with the minor version
> incremented with each ABI change to library.
> "
> 
> I propose to re-use the global ABI version for experimental by
> prefixing with "0.".
> So for ABI 20.0, it could be 0.20.0 or 0.200? Which one?
> 


^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v8 00/12] Implement the new ABI policy and add helper scripts
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
@ 2019-11-20 17:23             ` Anatoly Burakov
  2019-11-20 20:17               ` Thomas Monjalon
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 01/12] config: change ABI versioning to global Anatoly Burakov
                               ` (11 subsequent siblings)
  12 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-20 17:23 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, ray.kinsella, bruce.richardson, thomas, david.marchand

This patchset prepares the codebase for the new ABI policy and
adds a few helper scripts.

There are two new scripts for managing ABI versions added. The
first one is a Python script that will read in a .map file,
flatten it and update the ABI version to the ABI version
specified on the command-line.

The second one is a shell script that will run the above mentioned
Python script recursively over the source tree and set the ABI
version to either that which is defined in ABI_VERSION, or a 
user-specified one.

Example of its usage: buildtools/update-abi.sh 20.0

This will recurse into lib/ and drivers/ directory and update
whatever .map files it can find.

The other shell script that's added is one that can take in a .so
file and ensure that its declared public ABI matches either
current ABI, next ABI, or EXPERIMENTAL. This was moved to the
last commit because it made no sense to have it beforehand.

The source tree was verified to follow the new ABI policy using
the following command (assuming built binaries are in build/):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

This returns 0.

Changes since v7:
- Addressed review feedback from Thomas regarding scripts
- Addressed David's suggestion to remove old ABI from timer/lpm
- Changed the way that experimental libraries are versioned (they are 
  now versioned using the same major/minor ABI versions, but are 
  constructed differently (e.g. 0.201 for 20.1 release)
- Removed CONFIG_RTE_MAJOR_ABI from base config
- Removed traces of individual library versioning
- Adjusted the ABI policy documentation to state that minor ABI version
  is bumped every release for both stable and experimental ABI

Changes since v6:
- Rebase on top of latest master
- Fixed map file generation to generate stable ABI if it was there,
  even if it was empty

Changes since v5:
- Addressed David's comments regarding libtool error messages
- Fixed map file generation to not generate empty stable ABI if
  it wasn't there before

Changes since v4:
- Fixed shared library build issue for distributor

Changes since v3:
- Put distributor code back and cleaned it up
- Rebased on latest master and regenerated commit 9

Changes since v2:
- Addressed Bruce's review comments
- Removed single distributor mode as per Dave's suggestion

Changes since v1:
- Reordered patchset to have removal of old ABI's before introducing
  the new one to avoid compile breakages between patches
- Added a new patch fixing missing symbol in octeontx common
- Split script commits into multiple commits and reordered them
- Re-generated the ABI bump commit
- Verified all scripts to work

Anatoly Burakov (4):
  config: remove CONFIG_RTE_MAJOR_ABI option
  build: remove individual library versions
  buildtools: add ABI update shell script
  drivers/octeontx: add missing public symbol

Marcin Baran (6):
  config: change ABI versioning to global
  timer: remove deprecated code
  lpm: remove deprecated code
  distributor: remove deprecated code
  distributor: rename v2.0 ABI to _single suffix
  buildtools: add ABI versioning check script

Pawel Modrak (2):
  buildtools: add script for updating symbols abi version
  build: change ABI version to 20.0

 ABI_VERSION                                   |    1 +
 buildtools/check-abi-version.sh               |   54 +
 buildtools/meson.build                        |    3 +
 buildtools/update-abi.sh                      |   46 +
 buildtools/update_version_map_abi.py          |  175 +++
 config/common_base                            |    5 -
 config/meson.build                            |    7 +-
 doc/guides/contributing/abi_versioning.rst    |   17 +-
 doc/guides/contributing/coding_style.rst      |    8 +-
 drivers/baseband/fpga_lte_fec/Makefile        |    3 -
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |    8 +-
 drivers/baseband/null/Makefile                |    3 -
 .../null/rte_pmd_bbdev_null_version.map       |    2 +-
 drivers/baseband/turbo_sw/Makefile            |    3 -
 .../rte_pmd_bbdev_turbo_sw_version.map        |    2 +-
 drivers/bus/dpaa/Makefile                     |    2 -
 drivers/bus/dpaa/meson.build                  |    2 -
 drivers/bus/dpaa/rte_bus_dpaa_version.map     |  113 +-
 drivers/bus/fslmc/Makefile                    |    3 -
 drivers/bus/fslmc/meson.build                 |    2 -
 drivers/bus/fslmc/rte_bus_fslmc_version.map   |  154 +--
 drivers/bus/ifpga/Makefile                    |    3 -
 drivers/bus/ifpga/meson.build                 |    2 -
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |   14 +-
 drivers/bus/pci/Makefile                      |    1 -
 drivers/bus/pci/meson.build                   |    2 -
 drivers/bus/pci/rte_bus_pci_version.map       |    2 +-
 drivers/bus/vdev/Makefile                     |    3 -
 drivers/bus/vdev/meson.build                  |    2 -
 drivers/bus/vdev/rte_bus_vdev_version.map     |   12 +-
 drivers/bus/vmbus/Makefile                    |    1 -
 drivers/bus/vmbus/meson.build                 |    2 -
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |   12 +-
 drivers/common/cpt/Makefile                   |    2 -
 drivers/common/cpt/rte_common_cpt_version.map |    9 +-
 drivers/common/dpaax/Makefile                 |    3 -
 .../common/dpaax/rte_common_dpaax_version.map |   14 +-
 drivers/common/mvep/Makefile                  |    3 -
 .../common/mvep/rte_common_mvep_version.map   |    6 +-
 drivers/common/octeontx/Makefile              |    2 -
 .../octeontx/rte_common_octeontx_version.map  |    7 +-
 drivers/common/octeontx2/Makefile             |    2 -
 .../rte_common_octeontx2_version.map          |   16 +-
 drivers/compress/isal/Makefile                |    3 -
 .../compress/isal/rte_pmd_isal_version.map    |    2 +-
 drivers/compress/octeontx/Makefile            |    3 -
 .../rte_pmd_octeontx_compress_version.map     |    2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |    2 +-
 drivers/compress/zlib/Makefile                |    3 -
 .../compress/zlib/rte_pmd_zlib_version.map    |    2 +-
 drivers/crypto/aesni_gcm/Makefile             |    3 -
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |    2 +-
 drivers/crypto/aesni_mb/Makefile              |    3 -
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |    2 +-
 drivers/crypto/armv8/Makefile                 |    3 -
 .../crypto/armv8/rte_pmd_armv8_version.map    |    2 +-
 drivers/crypto/caam_jr/Makefile               |    3 -
 .../caam_jr/rte_pmd_caam_jr_version.map       |    3 +-
 drivers/crypto/ccp/Makefile                   |    3 -
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |    3 +-
 drivers/crypto/dpaa2_sec/Makefile             |    3 -
 drivers/crypto/dpaa2_sec/meson.build          |    2 -
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |   10 +-
 drivers/crypto/dpaa_sec/Makefile              |    3 -
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |   10 +-
 drivers/crypto/kasumi/Makefile                |    3 -
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |    2 +-
 drivers/crypto/mvsam/Makefile                 |    3 -
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |    2 +-
 drivers/crypto/nitrox/Makefile                |    3 -
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |    2 +-
 drivers/crypto/null/Makefile                  |    3 -
 .../null/rte_pmd_null_crypto_version.map      |    2 +-
 drivers/crypto/octeontx/Makefile              |    3 -
 .../rte_pmd_octeontx_crypto_version.map       |    3 +-
 drivers/crypto/octeontx2/Makefile             |    3 -
 .../rte_pmd_octeontx2_crypto_version.map      |    3 +-
 drivers/crypto/openssl/Makefile               |    3 -
 .../openssl/rte_pmd_openssl_version.map       |    2 +-
 drivers/crypto/scheduler/Makefile             |    3 -
 .../rte_pmd_crypto_scheduler_version.map      |   19 +-
 drivers/crypto/snow3g/Makefile                |    3 -
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |    2 +-
 drivers/crypto/virtio/Makefile                |    2 -
 .../virtio/rte_pmd_virtio_crypto_version.map  |    2 +-
 drivers/crypto/zuc/Makefile                   |    3 -
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |    2 +-
 drivers/event/dpaa/Makefile                   |    2 -
 .../event/dpaa/rte_pmd_dpaa_event_version.map |    3 +-
 drivers/event/dpaa2/Makefile                  |    2 -
 drivers/event/dpaa2/meson.build               |    2 -
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |    2 +-
 drivers/event/dsw/Makefile                    |    2 -
 .../event/dsw/rte_pmd_dsw_event_version.map   |    2 +-
 drivers/event/octeontx/Makefile               |    2 -
 .../rte_pmd_octeontx_event_version.map        |    2 +-
 drivers/event/octeontx2/Makefile              |    2 -
 .../rte_pmd_octeontx2_event_version.map       |    3 +-
 drivers/event/opdl/Makefile                   |    3 -
 .../event/opdl/rte_pmd_opdl_event_version.map |    2 +-
 drivers/event/skeleton/Makefile               |    2 -
 .../rte_pmd_skeleton_event_version.map        |    3 +-
 drivers/event/sw/Makefile                     |    3 -
 drivers/event/sw/rte_pmd_sw_event_version.map |    2 +-
 drivers/mempool/bucket/Makefile               |    2 -
 .../bucket/rte_mempool_bucket_version.map     |    3 +-
 drivers/mempool/dpaa/Makefile                 |    3 -
 .../mempool/dpaa/rte_mempool_dpaa_version.map |    2 +-
 drivers/mempool/dpaa2/Makefile                |    3 -
 drivers/mempool/dpaa2/meson.build             |    2 -
 .../dpaa2/rte_mempool_dpaa2_version.map       |   12 +-
 drivers/mempool/octeontx/Makefile             |    2 -
 .../octeontx/rte_mempool_octeontx_version.map |    2 +-
 drivers/mempool/octeontx2/Makefile            |    2 -
 .../rte_mempool_octeontx2_version.map         |    4 +-
 drivers/mempool/ring/Makefile                 |    2 -
 .../mempool/ring/rte_mempool_ring_version.map |    3 +-
 drivers/mempool/stack/Makefile                |    2 -
 .../stack/rte_mempool_stack_version.map       |    3 +-
 drivers/meson.build                           |   18 +-
 drivers/net/af_packet/Makefile                |    2 -
 .../af_packet/rte_pmd_af_packet_version.map   |    3 +-
 drivers/net/af_xdp/Makefile                   |    2 -
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |    2 +-
 drivers/net/ark/Makefile                      |    2 -
 drivers/net/ark/rte_pmd_ark_version.map       |    5 +-
 drivers/net/atlantic/Makefile                 |    2 -
 .../net/atlantic/rte_pmd_atlantic_version.map |    4 +-
 drivers/net/avp/Makefile                      |    2 -
 drivers/net/avp/rte_pmd_avp_version.map       |    2 +-
 drivers/net/axgbe/Makefile                    |    2 -
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |    2 +-
 drivers/net/bnx2x/Makefile                    |    2 -
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |    3 +-
 drivers/net/bnxt/Makefile                     |    2 -
 drivers/net/bnxt/meson.build                  |    1 -
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |    4 +-
 drivers/net/bonding/Makefile                  |    2 -
 drivers/net/bonding/meson.build               |    1 -
 drivers/net/bonding/rte_pmd_bond_version.map  |   47 +-
 drivers/net/cxgbe/Makefile                    |    2 -
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |    3 +-
 drivers/net/dpaa/Makefile                     |    2 -
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |   11 +-
 drivers/net/dpaa2/Makefile                    |    3 -
 drivers/net/dpaa2/meson.build                 |    2 -
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |   12 +-
 drivers/net/e1000/Makefile                    |    2 -
 drivers/net/e1000/rte_pmd_e1000_version.map   |    3 +-
 drivers/net/ena/Makefile                      |    2 -
 drivers/net/ena/rte_pmd_ena_version.map       |    3 +-
 drivers/net/enetc/Makefile                    |    2 -
 drivers/net/enetc/rte_pmd_enetc_version.map   |    3 +-
 drivers/net/enic/Makefile                     |    2 -
 drivers/net/enic/rte_pmd_enic_version.map     |    3 +-
 drivers/net/failsafe/Makefile                 |    2 -
 .../net/failsafe/rte_pmd_failsafe_version.map |    3 +-
 drivers/net/fm10k/Makefile                    |    2 -
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |    3 +-
 drivers/net/hinic/Makefile                    |    2 -
 drivers/net/hinic/rte_pmd_hinic_version.map   |    3 +-
 drivers/net/hns3/Makefile                     |    2 -
 drivers/net/hns3/rte_pmd_hns3_version.map     |    4 +-
 drivers/net/i40e/Makefile                     |    2 -
 drivers/net/i40e/meson.build                  |    2 -
 drivers/net/i40e/rte_pmd_i40e_version.map     |   65 +-
 drivers/net/iavf/Makefile                     |    2 -
 drivers/net/iavf/rte_pmd_iavf_version.map     |    3 +-
 drivers/net/ice/Makefile                      |    2 -
 drivers/net/ice/rte_pmd_ice_version.map       |    3 +-
 drivers/net/ifc/Makefile                      |    2 -
 drivers/net/ifc/rte_pmd_ifc_version.map       |    3 +-
 drivers/net/ipn3ke/Makefile                   |    2 -
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |    3 +-
 drivers/net/ixgbe/Makefile                    |    2 -
 drivers/net/ixgbe/meson.build                 |    2 -
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |   62 +-
 drivers/net/kni/Makefile                      |    2 -
 drivers/net/kni/rte_pmd_kni_version.map       |    3 +-
 drivers/net/liquidio/Makefile                 |    2 -
 .../net/liquidio/rte_pmd_liquidio_version.map |    3 +-
 drivers/net/memif/Makefile                    |    2 -
 drivers/net/memif/rte_pmd_memif_version.map   |    5 +-
 drivers/net/mlx4/Makefile                     |    2 -
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |    3 +-
 drivers/net/mlx5/Makefile                     |    2 -
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |    2 +-
 drivers/net/mvneta/Makefile                   |    3 -
 drivers/net/mvneta/rte_pmd_mvneta_version.map |    2 +-
 drivers/net/mvpp2/Makefile                    |    3 -
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |    2 +-
 drivers/net/netvsc/Makefile                   |    2 -
 drivers/net/netvsc/meson.build                |    1 -
 drivers/net/netvsc/rte_pmd_netvsc_version.map |    4 +-
 drivers/net/nfb/Makefile                      |    2 -
 drivers/net/nfb/rte_pmd_nfb_version.map       |    3 +-
 drivers/net/nfp/Makefile                      |    2 -
 drivers/net/nfp/rte_pmd_nfp_version.map       |    2 +-
 drivers/net/null/Makefile                     |    2 -
 drivers/net/null/meson.build                  |    1 -
 drivers/net/null/rte_pmd_null_version.map     |    3 +-
 drivers/net/octeontx/Makefile                 |    2 -
 .../net/octeontx/rte_pmd_octeontx_version.map |   10 +-
 drivers/net/octeontx2/Makefile                |    2 -
 .../octeontx2/rte_pmd_octeontx2_version.map   |    3 +-
 drivers/net/pcap/Makefile                     |    2 -
 drivers/net/pcap/rte_pmd_pcap_version.map     |    3 +-
 drivers/net/pfe/Makefile                      |    2 -
 drivers/net/pfe/rte_pmd_pfe_version.map       |    3 +-
 drivers/net/qede/Makefile                     |    2 -
 drivers/net/qede/rte_pmd_qede_version.map     |    3 +-
 drivers/net/ring/Makefile                     |    2 -
 drivers/net/ring/meson.build                  |    1 -
 drivers/net/ring/rte_pmd_ring_version.map     |   10 +-
 drivers/net/sfc/Makefile                      |    2 -
 drivers/net/sfc/rte_pmd_sfc_version.map       |    3 +-
 drivers/net/softnic/Makefile                  |    2 -
 .../net/softnic/rte_pmd_softnic_version.map   |    2 +-
 drivers/net/szedata2/Makefile                 |    2 -
 .../net/szedata2/rte_pmd_szedata2_version.map |    2 +-
 drivers/net/tap/Makefile                      |    2 -
 drivers/net/tap/rte_pmd_tap_version.map       |    3 +-
 drivers/net/thunderx/Makefile                 |    2 -
 .../net/thunderx/rte_pmd_thunderx_version.map |    3 +-
 drivers/net/vdev_netvsc/Makefile              |    1 -
 .../rte_pmd_vdev_netvsc_version.map           |    3 +-
 drivers/net/vhost/Makefile                    |    2 -
 drivers/net/vhost/meson.build                 |    1 -
 drivers/net/vhost/rte_pmd_vhost_version.map   |   11 +-
 drivers/net/virtio/Makefile                   |    2 -
 drivers/net/virtio/rte_pmd_virtio_version.map |    3 +-
 drivers/net/vmxnet3/Makefile                  |    2 -
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |    3 +-
 drivers/raw/dpaa2_cmdif/Makefile              |    2 -
 drivers/raw/dpaa2_cmdif/meson.build           |    2 -
 .../rte_rawdev_dpaa2_cmdif_version.map        |    3 +-
 drivers/raw/dpaa2_qdma/Makefile               |    2 -
 drivers/raw/dpaa2_qdma/meson.build            |    2 -
 .../rte_rawdev_dpaa2_qdma_version.map         |    4 +-
 drivers/raw/ifpga/Makefile                    |    2 -
 drivers/raw/ifpga/meson.build                 |    2 -
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |    3 +-
 drivers/raw/ioat/Makefile                     |    3 -
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |    3 +-
 drivers/raw/ntb/Makefile                      |    2 -
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |    5 +-
 drivers/raw/octeontx2_dma/Makefile            |    2 -
 .../rte_rawdev_octeontx2_dma_version.map      |    3 +-
 drivers/raw/skeleton/Makefile                 |    2 -
 .../skeleton/rte_rawdev_skeleton_version.map  |    3 +-
 examples/ethtool/lib/Makefile                 |    2 -
 lib/librte_acl/Makefile                       |    2 -
 lib/librte_acl/meson.build                    |    1 -
 lib/librte_acl/rte_acl_version.map            |    2 +-
 lib/librte_bbdev/Makefile                     |    3 -
 lib/librte_bitratestats/Makefile              |    2 -
 lib/librte_bitratestats/meson.build           |    1 -
 .../rte_bitratestats_version.map              |    2 +-
 lib/librte_bpf/Makefile                       |    2 -
 lib/librte_cfgfile/Makefile                   |    2 -
 lib/librte_cfgfile/meson.build                |    1 -
 lib/librte_cfgfile/rte_cfgfile_version.map    |   34 +-
 lib/librte_cmdline/Makefile                   |    2 -
 lib/librte_cmdline/meson.build                |    1 -
 lib/librte_cmdline/rte_cmdline_version.map    |   10 +-
 lib/librte_compressdev/Makefile               |    3 -
 lib/librte_cryptodev/Makefile                 |    3 -
 lib/librte_cryptodev/meson.build              |    1 -
 .../rte_cryptodev_version.map                 |  102 +-
 lib/librte_distributor/Makefile               |    4 +-
 lib/librte_distributor/distributor_private.h  |   10 +-
 lib/librte_distributor/meson.build            |    2 +-
 lib/librte_distributor/rte_distributor.c      |   98 +-
 ...ributor_v20.c => rte_distributor_single.c} |   73 +-
 ...ributor_v20.h => rte_distributor_single.h} |   26 +-
 .../rte_distributor_v1705.h                   |   61 -
 .../rte_distributor_version.map               |   16 +-
 lib/librte_eal/freebsd/eal/Makefile           |    2 -
 lib/librte_eal/linux/eal/Makefile             |    2 -
 lib/librte_eal/rte_eal_version.map            |  324 ++----
 lib/librte_efd/Makefile                       |    2 -
 lib/librte_efd/rte_efd_version.map            |    2 +-
 lib/librte_ethdev/Makefile                    |    2 -
 lib/librte_ethdev/meson.build                 |    1 -
 lib/librte_ethdev/rte_ethdev_version.map      |  160 +--
 lib/librte_eventdev/Makefile                  |    3 -
 lib/librte_eventdev/meson.build               |    1 -
 lib/librte_eventdev/rte_eventdev_version.map  |  130 +--
 lib/librte_fib/Makefile                       |    2 -
 lib/librte_flow_classify/Makefile             |    2 -
 lib/librte_gro/Makefile                       |    2 -
 lib/librte_gro/rte_gro_version.map            |    2 +-
 lib/librte_gso/Makefile                       |    2 -
 lib/librte_gso/rte_gso_version.map            |    2 +-
 lib/librte_hash/Makefile                      |    2 -
 lib/librte_hash/meson.build                   |    1 -
 lib/librte_hash/rte_hash_version.map          |   43 +-
 lib/librte_ip_frag/Makefile                   |    2 -
 lib/librte_ip_frag/rte_ip_frag_version.map    |   10 +-
 lib/librte_ipsec/Makefile                     |    2 -
 lib/librte_ipsec/meson.build                  |    1 -
 lib/librte_jobstats/Makefile                  |    2 -
 lib/librte_jobstats/rte_jobstats_version.map  |   10 +-
 lib/librte_kni/Makefile                       |    2 -
 lib/librte_kni/meson.build                    |    1 -
 lib/librte_kni/rte_kni_version.map            |    2 +-
 lib/librte_kvargs/Makefile                    |    2 -
 lib/librte_kvargs/meson.build                 |    1 -
 lib/librte_kvargs/rte_kvargs_version.map      |    4 +-
 lib/librte_latencystats/Makefile              |    2 -
 .../rte_latencystats_version.map              |    2 +-
 lib/librte_lpm/Makefile                       |    2 -
 lib/librte_lpm/meson.build                    |    1 -
 lib/librte_lpm/rte_lpm.c                      | 1010 +----------------
 lib/librte_lpm/rte_lpm.h                      |   88 --
 lib/librte_lpm/rte_lpm6.c                     |  140 +--
 lib/librte_lpm/rte_lpm6.h                     |   25 -
 lib/librte_lpm/rte_lpm_version.map            |   39 +-
 lib/librte_mbuf/Makefile                      |    2 -
 lib/librte_mbuf/meson.build                   |    1 -
 lib/librte_mbuf/rte_mbuf_version.map          |   49 +-
 lib/librte_member/Makefile                    |    2 -
 lib/librte_member/rte_member_version.map      |    2 +-
 lib/librte_mempool/Makefile                   |    2 -
 lib/librte_mempool/meson.build                |    1 -
 lib/librte_mempool/rte_mempool_version.map    |   44 +-
 lib/librte_meter/Makefile                     |    2 -
 lib/librte_meter/meson.build                  |    1 -
 lib/librte_meter/rte_meter_version.map        |   13 +-
 lib/librte_metrics/Makefile                   |    2 -
 lib/librte_metrics/rte_metrics_version.map    |    2 +-
 lib/librte_net/Makefile                       |    2 -
 lib/librte_net/meson.build                    |    1 -
 lib/librte_net/rte_net_version.map            |   23 +-
 lib/librte_pci/Makefile                       |    2 -
 lib/librte_pci/meson.build                    |    2 -
 lib/librte_pci/rte_pci_version.map            |    2 +-
 lib/librte_pdump/Makefile                     |    2 -
 lib/librte_pdump/meson.build                  |    1 -
 lib/librte_pdump/rte_pdump_version.map        |    2 +-
 lib/librte_pipeline/Makefile                  |    2 -
 lib/librte_pipeline/meson.build               |    1 -
 lib/librte_pipeline/rte_pipeline_version.map  |   36 +-
 lib/librte_port/Makefile                      |    2 -
 lib/librte_port/meson.build                   |    1 -
 lib/librte_port/rte_port_version.map          |   64 +-
 lib/librte_power/Makefile                     |    2 -
 lib/librte_power/rte_power_version.map        |   24 +-
 lib/librte_rawdev/Makefile                    |    3 -
 lib/librte_rawdev/rte_rawdev_version.map      |    4 +-
 lib/librte_rcu/Makefile                       |    2 -
 lib/librte_reorder/Makefile                   |    2 -
 lib/librte_reorder/rte_reorder_version.map    |    8 +-
 lib/librte_rib/Makefile                       |    2 -
 lib/librte_ring/Makefile                      |    2 -
 lib/librte_ring/meson.build                   |    1 -
 lib/librte_ring/rte_ring_version.map          |   10 +-
 lib/librte_sched/Makefile                     |    2 -
 lib/librte_sched/meson.build                  |    1 -
 lib/librte_sched/rte_sched_version.map        |   14 +-
 lib/librte_security/Makefile                  |    3 -
 lib/librte_security/meson.build               |    1 -
 lib/librte_security/rte_security_version.map  |    2 +-
 lib/librte_stack/Makefile                     |    2 -
 lib/librte_stack/meson.build                  |    1 -
 lib/librte_table/Makefile                     |    2 -
 lib/librte_table/meson.build                  |    1 -
 lib/librte_table/rte_table_version.map        |    2 +-
 lib/librte_telemetry/Makefile                 |    2 -
 lib/librte_timer/Makefile                     |    2 -
 lib/librte_timer/rte_timer.c                  |  100 +-
 lib/librte_timer/rte_timer.h                  |   15 -
 lib/librte_timer/rte_timer_version.map        |   12 +-
 lib/librte_vhost/Makefile                     |    2 -
 lib/librte_vhost/meson.build                  |    1 -
 lib/librte_vhost/rte_vhost_version.map        |   52 +-
 lib/meson.build                               |   17 +-
 meson_options.txt                             |    2 -
 mk/rte.lib.mk                                 |   14 +-
 379 files changed, 1172 insertions(+), 3409 deletions(-)
 create mode 100644 ABI_VERSION
 create mode 100755 buildtools/check-abi-version.sh
 create mode 100755 buildtools/update-abi.sh
 create mode 100755 buildtools/update_version_map_abi.py
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (84%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h

-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v8 01/12] config: change ABI versioning to global
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 00/12] " Anatoly Burakov
@ 2019-11-20 17:23             ` Anatoly Burakov
  2019-11-20 19:51               ` David Marchand
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 02/12] config: remove CONFIG_RTE_MAJOR_ABI option Anatoly Burakov
                               ` (10 subsequent siblings)
  12 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-20 17:23 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Thomas Monjalon, Ray Kinsella, John McNamara,
	Marko Kovacevic, Bruce Richardson, ray.kinsella, david.marchand,
	Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

As per new ABI policy [1], all of the libraries are now versioned using
one global ABI version. Stable libraries use the MAJOR.MINOR ABI
version for their shared objects, while experimental libraries
use the 0.MAJORMINOR convention for their versioning.
Experimental library versioning is managed globally. Changes in this
patch implement the necessary steps to enable that.

[1] https://doc.dpdk.org/guides/contributing/abi_policy.html

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v6:
    - Silenced grep error message on trying to grep a directory
    
    v3:
    - Removed Windows support from Makefile changes
    - Removed unneeded path conversions from meson files
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 ABI_VERSION                                |  1 +
 buildtools/meson.build                     |  3 +++
 config/meson.build                         |  7 ++++++-
 doc/guides/contributing/abi_versioning.rst | 17 +++++++++--------
 doc/guides/contributing/coding_style.rst   |  8 +-------
 drivers/meson.build                        | 18 ++++++++++++------
 lib/meson.build                            | 17 +++++++++++------
 meson_options.txt                          |  2 --
 mk/rte.lib.mk                              | 14 +++++---------
 9 files changed, 48 insertions(+), 39 deletions(-)
 create mode 100644 ABI_VERSION

diff --git a/ABI_VERSION b/ABI_VERSION
new file mode 100644
index 0000000000..9a7c1e503f
--- /dev/null
+++ b/ABI_VERSION
@@ -0,0 +1 @@
+20.0
diff --git a/buildtools/meson.build b/buildtools/meson.build
index 8d0b9e0cd0..6ef2c5721c 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -14,3 +14,6 @@ if python3.found()
 else
 	map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')]
 endif
+
+# stable ABI always starts with "DPDK_"
+is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_']
diff --git a/config/meson.build b/config/meson.build
index 2b1cb92e7e..3ffb73ab9c 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -18,6 +18,11 @@ endforeach
 # depending on the configuration options
 pver = meson.project_version().split('.')
 major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
+abi_version = run_command(find_program('cat', 'more'),
+	files('../ABI_VERSION')).stdout().strip()
+# experimental libraries are versioned as 0.majorminor versions, e.g. 0.201
+ever = abi_version.split('.')
+experimental_abi_version = '0.@0@@1@'.format(ever.get(0), ever.get(1))
 
 # extract all version information into the build configuration
 dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
@@ -37,7 +42,7 @@ endif
 
 pmd_subdir_opt = get_option('drivers_install_subdir')
 if pmd_subdir_opt.contains('<VERSION>')
-	pmd_subdir_opt = major_version.join(pmd_subdir_opt.split('<VERSION>'))
+	pmd_subdir_opt = abi_version.join(pmd_subdir_opt.split('<VERSION>'))
 endif
 driver_install_path = join_paths(get_option('libdir'), pmd_subdir_opt)
 eal_pmd_path = join_paths(get_option('prefix'), driver_install_path)
diff --git a/doc/guides/contributing/abi_versioning.rst b/doc/guides/contributing/abi_versioning.rst
index 050c971dd8..a21f4e7a41 100644
--- a/doc/guides/contributing/abi_versioning.rst
+++ b/doc/guides/contributing/abi_versioning.rst
@@ -111,16 +111,17 @@ how this may be done.
  ...
 
 At the same time, the major ABI version is changed atomically across all
-libraries by incrementing the major version in individual library's soname, e.g.
-``libacl.so.21``. This is done by bumping the LIBABIVER number in the libraries
-Makefile to indicate to dynamic linking applications that this is a later, and
-possibly incompatible library version:
+libraries by incrementing the major version in the ABI_VERSION file. This is
+done globally for all libraries that declare a stable ABI. For libraries marked
+as EXPERIMENTAL, their major ABI version is always set to 0.
 
-.. code-block:: c
-
-   -LIBABIVER := 20
-   +LIBABIVER := 21
+Minor ABI versions
+~~~~~~~~~~~~~~~~~~
 
+Each non-LTS release will also increment minor ABI version, to permit multiple
+DPDK versions being installed alongside each other. Both stable and
+experimental ABI's are versioned using the global version file that is updated
+at the start of each release cycle, and are managed at the project level.
 
 Versioning Macros
 -----------------
diff --git a/doc/guides/contributing/coding_style.rst b/doc/guides/contributing/coding_style.rst
index a6843de5ad..841ef6d5c8 100644
--- a/doc/guides/contributing/coding_style.rst
+++ b/doc/guides/contributing/coding_style.rst
@@ -803,9 +803,8 @@ lpm, etc. For drivers, the same format of Makefile is used.
 	CFLAGS += -O3
 	CFLAGS += $(WERROR_FLAGS)
 
-	# the symbol version information for the library, and .so version
+	# the symbol version information for the library
 	EXPORT_MAP := rte_<name>_version.map
-	LIBABIVER := 1
 
 	# all source filenames are stored in SRCS-y
 	SRCS-$(CONFIG_RTE_LIBRTE_<NAME>) += rte_<name>.c
@@ -955,11 +954,6 @@ use_function_versioning
 	twice with suitable parameters for each of shared or static library
 	builds.
 
-version
-	**Default Value = 1**.
-	Specifies the ABI version of the library, and is used as the major
-	version number of the resulting ``.so`` library.
-
 Meson Build File Contents - Drivers
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
diff --git a/drivers/meson.build b/drivers/meson.build
index 823e3ef839..80cc7001fe 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -41,7 +41,6 @@ foreach class:dpdk_driver_classes
 		build = true # set to false to disable, e.g. missing deps
 		reason = '<unknown reason>' # set if build == false to explain
 		name = drv
-		version = 1
 		allow_experimental_apis = false
 		sources = []
 		objs = []
@@ -124,12 +123,19 @@ foreach class:dpdk_driver_classes
 					output: out_filename,
 					depends: [pmdinfogen, tmp_lib])
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/@2@_version.map'.format(
+					meson.current_source_dir(),
+					drv_path, lib_name)
+
+			is_experimental = run_command(is_experimental_cmd,
+				files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = experimental_abi_version
+				so_version = experimental_abi_version
 			else
-				lib_version = major_version
-				so_version = major_version
+				lib_version = abi_version
+				so_version = abi_version
 			endif
 
 			# now build the static driver
diff --git a/lib/meson.build b/lib/meson.build
index bc8eb1d218..6ceb5e756e 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -47,7 +47,6 @@ foreach l:libraries
 	build = true
 	reason = '<unknown reason>' # set if build == false to explain why
 	name = l
-	version = 1
 	allow_experimental_apis = false
 	use_function_versioning = false
 	sources = []
@@ -106,12 +105,18 @@ foreach l:libraries
 				cflags += '-DRTE_USE_FUNCTION_VERSIONING'
 			endif
 
-			if get_option('per_library_versions')
-				lib_version = '@0@.1'.format(version)
-				so_version = '@0@'.format(version)
+			version_map = '@0@/@1@/rte_@2@_version.map'.format(
+					meson.current_source_dir(), dir_name, name)
+
+			is_experimental = run_command(is_experimental_cmd,
+					files(version_map)).returncode()
+
+			if is_experimental != 0
+				lib_version = experimental_abi_version
+				so_version = experimental_abi_version
 			else
-				lib_version = major_version
-				so_version = major_version
+				lib_version = abi_version
+				so_version = abi_version
 			endif
 
 			# first build static lib
diff --git a/meson_options.txt b/meson_options.txt
index e6fcb884be..bc369d06c9 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -28,8 +28,6 @@ option('max_lcores', type: 'integer', value: 128,
 	description: 'maximum number of cores/threads supported by EAL')
 option('max_numa_nodes', type: 'integer', value: 4,
 	description: 'maximum number of NUMA nodes supported by EAL')
-option('per_library_versions', type: 'boolean', value: true,
-	description: 'true: each lib gets its own version number, false: DPDK version used for each lib')
 option('tests', type: 'boolean', value: true,
 	description: 'build unit tests')
 option('use_hpet', type: 'boolean', value: false,
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index 4df8849a08..3b318a5306 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -11,20 +11,16 @@ EXTLIB_BUILD ?= n
 # VPATH contains at least SRCDIR
 VPATH += $(SRCDIR)
 
-ifneq ($(CONFIG_RTE_MAJOR_ABI),)
-ifneq ($(LIBABIVER),)
-LIBABIVER := $(CONFIG_RTE_MAJOR_ABI)
-endif
+ifneq ($(shell grep -s "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)
+LIBABIVER := $(shell cat $(RTE_SRCDIR)/ABI_VERSION)
+else
+# EXPERIMENTAL ABI is versioned as 0.major+minor, e.g. 0.201 for 20.1 ABI
+LIBABIVER := 0.$(shell cat $(RTE_SRCDIR)/ABI_VERSION | td -d '.')
 endif
 
 ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
 LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB))
 ifeq ($(EXTLIB_BUILD),n)
-ifeq ($(CONFIG_RTE_MAJOR_ABI),)
-ifeq ($(CONFIG_RTE_NEXT_ABI),y)
-LIB := $(LIB).1
-endif
-endif
 CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
 endif
 endif
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v8 02/12] config: remove CONFIG_RTE_MAJOR_ABI option
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 00/12] " Anatoly Burakov
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 01/12] config: change ABI versioning to global Anatoly Burakov
@ 2019-11-20 17:23             ` Anatoly Burakov
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 03/12] build: remove individual library versions Anatoly Burakov
                               ` (9 subsequent siblings)
  12 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-20 17:23 UTC (permalink / raw)
  To: dev
  Cc: Thomas Monjalon, john.mcnamara, ray.kinsella, bruce.richardson,
	david.marchand

The CONFIG_RTE_MAJOR_ABI option was introduced to permit multiple
DPDK versions installed side by side. The problem is now addressed
through the new ABI policy, and thus can be removed.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 config/common_base | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/config/common_base b/config/common_base
index 914277856d..4948e1c572 100644
--- a/config/common_base
+++ b/config/common_base
@@ -64,11 +64,6 @@ CONFIG_RTE_BUILD_SHARED_LIB=n
 #
 CONFIG_RTE_NEXT_ABI=y
 
-#
-# Major ABI to overwrite library specific LIBABIVER
-#
-CONFIG_RTE_MAJOR_ABI=
-
 #
 # Machine's cache line size
 #
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v8 03/12] build: remove individual library versions
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
                               ` (2 preceding siblings ...)
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 02/12] config: remove CONFIG_RTE_MAJOR_ABI option Anatoly Burakov
@ 2019-11-20 17:23             ` Anatoly Burakov
  2019-11-20 19:35               ` David Marchand
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 04/12] buildtools: add script for updating symbols abi version Anatoly Burakov
                               ` (8 subsequent siblings)
  12 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-20 17:23 UTC (permalink / raw)
  To: dev
  Cc: Nicolas Chautru, Hemant Agrawal, Sachin Saxena, Rosen Xu,
	Stephen Hemminger, Anoob Joseph, Tomasz Duszynski, Liron Himi,
	Jerin Jacob, Nithin Dabilpuram, Vamsi Attunuru, Lee Daly,
	Fiona Trahe, Ashish Gupta, Sunila Sahu, Declan Doherty,
	Pablo de Lara, Gagandeep Singh, Ravi Kumar, Akhil Goyal,
	Michael Shamis, Nagadheeraj Rottela, Srikanth Jampala,
	Ankur Dwivedi, Fan Zhang, Jay Zhou, Nipun Gupta,
	Mattias Rönnblom, Pavan Nikhilesh, Liang Ma, Peter Mccarthy,
	Harry van Haaren, Artem V. Andreev, Andrew Rybchenko,
	Olivier Matz, Gage Eads, John W. Linville, Xiaolong Ye, Qi Zhang,
	Shepard Siegel, Ed Czeck, John Miller, Igor Russkikh,
	Pavel Belous, Allain Legacy, Matt Peters, Rasesh Mody,
	Shahed Shaikh, Ajit Khaparde, Somnath Kotur, Chas Williams,
	Rahul Lakkireddy, Wenzhuo Lu, Marcin Wojtas, Michal Krawczyk,
	Guy Tzalik, Evgeny Schemeilin, Igor Chauskin, John Daley,
	Hyong Youb Kim, Gaetan Rivet, Xiao Wang, Ziyang Xuan,
	Xiaoyun Wang, Guoyang Zhou, Wei Hu (Xavier), Min Hu (Connor),
	Yisen Zhuang, Beilei Xing, Jingjing Wu, Qiming Yang,
	Konstantin Ananyev, Ferruh Yigit, Shijith Thotton,
	Srisivasubramanian Srinivasan, Jakub Grajciar, Matan Azrad,
	Shahaf Shuler, Viacheslav Ovsiienko, Zyta Szpak,
	K. Y. Srinivasan, Haiyang Zhang, Rastislav Cernay, Jan Remes,
	Alejandro Lucero, Tetsuya Mukawa, Kiran Kumar K,
	Bruce Richardson, Jasvinder Singh, Cristian Dumitrescu,
	Keith Wiles, Maciej Czekaj, Maxime Coquelin, Tiwei Bie,
	Zhihong Wang, Yong Wang, Tianfei zhang, Xiaoyun Li, Satha Rao,
	Shreyansh Jain, Marko Kovacevic, Ori Kam, Radu Nicolau,
	Tomasz Kantecki, Sunil Kumar Kori, David Hunt, Byron Marohn,
	Yipeng Wang, Thomas Monjalon, Vladimir Medvedkin,
	Bernard Iremonger, Jiayu Hu, Sameh Gobriel, Reshma Pattan,
	Honnappa Nagarahalli, Kevin Laatz, Robert Sanford,
	Erik Gabriel Carrillo, john.mcnamara, ray.kinsella,
	david.marchand

Since the library versioning for both stable and experimental ABI's is
now managed globally, the LIBABIVER and version variables no longer
serve any useful purpose, and can be removed.

The replacement in Makefiles was done using the following regex:

	^(#.*\n)?LIBABIVER\s*:=\s*\d+\n(\s*\n)?

(LIBABIVER := numbers, optionally preceded by a comment and optionally
succeeded by an empty line)

The replacement for meson files was done using the following regex:

	^(#.*\n)?version\s*=\s*\d+\n(\s*\n)?

(version = numbers, optionally preceded by a comment and optionally
succeeded by an empty line)

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---

Notes:
    v6:
    - Silenced grep error message on trying to grep a directory
    
    v3:
    - Removed Windows support from Makefile changes
    - Removed unneeded path conversions from meson files
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 drivers/baseband/fpga_lte_fec/Makefile | 3 ---
 drivers/baseband/null/Makefile         | 3 ---
 drivers/baseband/turbo_sw/Makefile     | 3 ---
 drivers/bus/dpaa/Makefile              | 2 --
 drivers/bus/dpaa/meson.build           | 2 --
 drivers/bus/fslmc/Makefile             | 3 ---
 drivers/bus/fslmc/meson.build          | 2 --
 drivers/bus/ifpga/Makefile             | 3 ---
 drivers/bus/ifpga/meson.build          | 2 --
 drivers/bus/pci/Makefile               | 1 -
 drivers/bus/pci/meson.build            | 2 --
 drivers/bus/vdev/Makefile              | 3 ---
 drivers/bus/vdev/meson.build           | 2 --
 drivers/bus/vmbus/Makefile             | 1 -
 drivers/bus/vmbus/meson.build          | 2 --
 drivers/common/cpt/Makefile            | 2 --
 drivers/common/dpaax/Makefile          | 3 ---
 drivers/common/mvep/Makefile           | 3 ---
 drivers/common/octeontx/Makefile       | 2 --
 drivers/common/octeontx2/Makefile      | 2 --
 drivers/compress/isal/Makefile         | 3 ---
 drivers/compress/octeontx/Makefile     | 3 ---
 drivers/compress/zlib/Makefile         | 3 ---
 drivers/crypto/aesni_gcm/Makefile      | 3 ---
 drivers/crypto/aesni_mb/Makefile       | 3 ---
 drivers/crypto/armv8/Makefile          | 3 ---
 drivers/crypto/caam_jr/Makefile        | 3 ---
 drivers/crypto/ccp/Makefile            | 3 ---
 drivers/crypto/dpaa2_sec/Makefile      | 3 ---
 drivers/crypto/dpaa2_sec/meson.build   | 2 --
 drivers/crypto/dpaa_sec/Makefile       | 3 ---
 drivers/crypto/kasumi/Makefile         | 3 ---
 drivers/crypto/mvsam/Makefile          | 3 ---
 drivers/crypto/nitrox/Makefile         | 3 ---
 drivers/crypto/null/Makefile           | 3 ---
 drivers/crypto/octeontx/Makefile       | 3 ---
 drivers/crypto/octeontx2/Makefile      | 3 ---
 drivers/crypto/openssl/Makefile        | 3 ---
 drivers/crypto/scheduler/Makefile      | 3 ---
 drivers/crypto/snow3g/Makefile         | 3 ---
 drivers/crypto/virtio/Makefile         | 2 --
 drivers/crypto/zuc/Makefile            | 3 ---
 drivers/event/dpaa/Makefile            | 2 --
 drivers/event/dpaa2/Makefile           | 2 --
 drivers/event/dpaa2/meson.build        | 2 --
 drivers/event/dsw/Makefile             | 2 --
 drivers/event/octeontx/Makefile        | 2 --
 drivers/event/octeontx2/Makefile       | 2 --
 drivers/event/opdl/Makefile            | 3 ---
 drivers/event/skeleton/Makefile        | 2 --
 drivers/event/sw/Makefile              | 3 ---
 drivers/mempool/bucket/Makefile        | 2 --
 drivers/mempool/dpaa/Makefile          | 3 ---
 drivers/mempool/dpaa2/Makefile         | 3 ---
 drivers/mempool/dpaa2/meson.build      | 2 --
 drivers/mempool/octeontx/Makefile      | 2 --
 drivers/mempool/octeontx2/Makefile     | 2 --
 drivers/mempool/ring/Makefile          | 2 --
 drivers/mempool/stack/Makefile         | 2 --
 drivers/net/af_packet/Makefile         | 2 --
 drivers/net/af_xdp/Makefile            | 2 --
 drivers/net/ark/Makefile               | 2 --
 drivers/net/atlantic/Makefile          | 2 --
 drivers/net/avp/Makefile               | 2 --
 drivers/net/axgbe/Makefile             | 2 --
 drivers/net/bnx2x/Makefile             | 2 --
 drivers/net/bnxt/Makefile              | 2 --
 drivers/net/bnxt/meson.build           | 1 -
 drivers/net/bonding/Makefile           | 2 --
 drivers/net/bonding/meson.build        | 1 -
 drivers/net/cxgbe/Makefile             | 2 --
 drivers/net/dpaa/Makefile              | 2 --
 drivers/net/dpaa2/Makefile             | 3 ---
 drivers/net/dpaa2/meson.build          | 2 --
 drivers/net/e1000/Makefile             | 2 --
 drivers/net/ena/Makefile               | 2 --
 drivers/net/enetc/Makefile             | 2 --
 drivers/net/enic/Makefile              | 2 --
 drivers/net/failsafe/Makefile          | 2 --
 drivers/net/fm10k/Makefile             | 2 --
 drivers/net/hinic/Makefile             | 2 --
 drivers/net/hns3/Makefile              | 2 --
 drivers/net/i40e/Makefile              | 2 --
 drivers/net/i40e/meson.build           | 2 --
 drivers/net/iavf/Makefile              | 2 --
 drivers/net/ice/Makefile               | 2 --
 drivers/net/ifc/Makefile               | 2 --
 drivers/net/ipn3ke/Makefile            | 2 --
 drivers/net/ixgbe/Makefile             | 2 --
 drivers/net/ixgbe/meson.build          | 2 --
 drivers/net/kni/Makefile               | 2 --
 drivers/net/liquidio/Makefile          | 2 --
 drivers/net/memif/Makefile             | 2 --
 drivers/net/mlx4/Makefile              | 2 --
 drivers/net/mlx5/Makefile              | 2 --
 drivers/net/mvneta/Makefile            | 3 ---
 drivers/net/mvpp2/Makefile             | 3 ---
 drivers/net/netvsc/Makefile            | 2 --
 drivers/net/netvsc/meson.build         | 1 -
 drivers/net/nfb/Makefile               | 2 --
 drivers/net/nfp/Makefile               | 2 --
 drivers/net/null/Makefile              | 2 --
 drivers/net/null/meson.build           | 1 -
 drivers/net/octeontx/Makefile          | 2 --
 drivers/net/octeontx2/Makefile         | 2 --
 drivers/net/pcap/Makefile              | 2 --
 drivers/net/pfe/Makefile               | 2 --
 drivers/net/qede/Makefile              | 2 --
 drivers/net/ring/Makefile              | 2 --
 drivers/net/ring/meson.build           | 1 -
 drivers/net/sfc/Makefile               | 2 --
 drivers/net/softnic/Makefile           | 2 --
 drivers/net/szedata2/Makefile          | 2 --
 drivers/net/tap/Makefile               | 2 --
 drivers/net/thunderx/Makefile          | 2 --
 drivers/net/vdev_netvsc/Makefile       | 1 -
 drivers/net/vhost/Makefile             | 2 --
 drivers/net/vhost/meson.build          | 1 -
 drivers/net/virtio/Makefile            | 2 --
 drivers/net/vmxnet3/Makefile           | 2 --
 drivers/raw/dpaa2_cmdif/Makefile       | 2 --
 drivers/raw/dpaa2_cmdif/meson.build    | 2 --
 drivers/raw/dpaa2_qdma/Makefile        | 2 --
 drivers/raw/dpaa2_qdma/meson.build     | 2 --
 drivers/raw/ifpga/Makefile             | 2 --
 drivers/raw/ifpga/meson.build          | 2 --
 drivers/raw/ioat/Makefile              | 3 ---
 drivers/raw/ntb/Makefile               | 2 --
 drivers/raw/octeontx2_dma/Makefile     | 2 --
 drivers/raw/skeleton/Makefile          | 2 --
 examples/ethtool/lib/Makefile          | 2 --
 lib/librte_acl/Makefile                | 2 --
 lib/librte_acl/meson.build             | 1 -
 lib/librte_bbdev/Makefile              | 3 ---
 lib/librte_bitratestats/Makefile       | 2 --
 lib/librte_bitratestats/meson.build    | 1 -
 lib/librte_bpf/Makefile                | 2 --
 lib/librte_cfgfile/Makefile            | 2 --
 lib/librte_cfgfile/meson.build         | 1 -
 lib/librte_cmdline/Makefile            | 2 --
 lib/librte_cmdline/meson.build         | 1 -
 lib/librte_compressdev/Makefile        | 3 ---
 lib/librte_cryptodev/Makefile          | 3 ---
 lib/librte_cryptodev/meson.build       | 1 -
 lib/librte_distributor/Makefile        | 2 --
 lib/librte_eal/freebsd/eal/Makefile    | 2 --
 lib/librte_eal/linux/eal/Makefile      | 2 --
 lib/librte_efd/Makefile                | 2 --
 lib/librte_ethdev/Makefile             | 2 --
 lib/librte_ethdev/meson.build          | 1 -
 lib/librte_eventdev/Makefile           | 3 ---
 lib/librte_eventdev/meson.build        | 1 -
 lib/librte_fib/Makefile                | 2 --
 lib/librte_flow_classify/Makefile      | 2 --
 lib/librte_gro/Makefile                | 2 --
 lib/librte_gso/Makefile                | 2 --
 lib/librte_hash/Makefile               | 2 --
 lib/librte_hash/meson.build            | 1 -
 lib/librte_ip_frag/Makefile            | 2 --
 lib/librte_ipsec/Makefile              | 2 --
 lib/librte_ipsec/meson.build           | 1 -
 lib/librte_jobstats/Makefile           | 2 --
 lib/librte_kni/Makefile                | 2 --
 lib/librte_kni/meson.build             | 1 -
 lib/librte_kvargs/Makefile             | 2 --
 lib/librte_kvargs/meson.build          | 1 -
 lib/librte_latencystats/Makefile       | 2 --
 lib/librte_lpm/Makefile                | 2 --
 lib/librte_lpm/meson.build             | 1 -
 lib/librte_mbuf/Makefile               | 2 --
 lib/librte_mbuf/meson.build            | 1 -
 lib/librte_member/Makefile             | 2 --
 lib/librte_mempool/Makefile            | 2 --
 lib/librte_mempool/meson.build         | 1 -
 lib/librte_meter/Makefile              | 2 --
 lib/librte_meter/meson.build           | 1 -
 lib/librte_metrics/Makefile            | 2 --
 lib/librte_net/Makefile                | 2 --
 lib/librte_net/meson.build             | 1 -
 lib/librte_pci/Makefile                | 2 --
 lib/librte_pci/meson.build             | 2 --
 lib/librte_pdump/Makefile              | 2 --
 lib/librte_pdump/meson.build           | 1 -
 lib/librte_pipeline/Makefile           | 2 --
 lib/librte_pipeline/meson.build        | 1 -
 lib/librte_port/Makefile               | 2 --
 lib/librte_port/meson.build            | 1 -
 lib/librte_power/Makefile              | 2 --
 lib/librte_rawdev/Makefile             | 3 ---
 lib/librte_rcu/Makefile                | 2 --
 lib/librte_reorder/Makefile            | 2 --
 lib/librte_rib/Makefile                | 2 --
 lib/librte_ring/Makefile               | 2 --
 lib/librte_ring/meson.build            | 1 -
 lib/librte_sched/Makefile              | 2 --
 lib/librte_sched/meson.build           | 1 -
 lib/librte_security/Makefile           | 3 ---
 lib/librte_security/meson.build        | 1 -
 lib/librte_stack/Makefile              | 2 --
 lib/librte_stack/meson.build           | 1 -
 lib/librte_table/Makefile              | 2 --
 lib/librte_table/meson.build           | 1 -
 lib/librte_telemetry/Makefile          | 2 --
 lib/librte_timer/Makefile              | 2 --
 lib/librte_vhost/Makefile              | 2 --
 lib/librte_vhost/meson.build           | 1 -
 206 files changed, 420 deletions(-)

diff --git a/drivers/baseband/fpga_lte_fec/Makefile b/drivers/baseband/fpga_lte_fec/Makefile
index 2369bd27fa..b4a442ca54 100644
--- a/drivers/baseband/fpga_lte_fec/Makefile
+++ b/drivers/baseband/fpga_lte_fec/Makefile
@@ -17,9 +17,6 @@ LDLIBS += -lrte_pci -lrte_bus_pci
 # versioning export map
 EXPORT_MAP := rte_pmd_bbdev_fpga_lte_fec_version.map
 
-# library version
-LIBABIVER := 1
-
 # library source files
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC) += fpga_lte_fec.c
 
diff --git a/drivers/baseband/null/Makefile b/drivers/baseband/null/Makefile
index f885a97bb3..28751eeb79 100644
--- a/drivers/baseband/null/Makefile
+++ b/drivers/baseband/null/Makefile
@@ -16,9 +16,6 @@ LDLIBS += -lrte_bus_vdev
 # versioning export map
 EXPORT_MAP := rte_pmd_bbdev_null_version.map
 
-# library version
-LIBABIVER := 1
-
 # library source files
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_NULL) += bbdev_null.c
 
diff --git a/drivers/baseband/turbo_sw/Makefile b/drivers/baseband/turbo_sw/Makefile
index 4aa05d2db6..ec74d277e9 100644
--- a/drivers/baseband/turbo_sw/Makefile
+++ b/drivers/baseband/turbo_sw/Makefile
@@ -47,9 +47,6 @@ LDLIBS += -L$(FLEXRAN_SDK)/lib_LDPC_ratematch_5gnr -lLDPC_ratematch_5gnr
 LDLIBS += -L$(FLEXRAN_SDK)/lib_rate_dematching_5gnr -lrate_dematching_5gnr
 endif
 
-# library version
-LIBABIVER := 1
-
 # library source files
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW) += bbdev_turbo_software.c
 
diff --git a/drivers/bus/dpaa/Makefile b/drivers/bus/dpaa/Makefile
index 454ac12bf3..cd1093f744 100644
--- a/drivers/bus/dpaa/Makefile
+++ b/drivers/bus/dpaa/Makefile
@@ -23,8 +23,6 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common/include
 # versioning export map
 EXPORT_MAP := rte_bus_dpaa_version.map
 
-LIBABIVER := 2
-
 # all source are stored in SRCS-y
 #
 SRCS-$(CONFIG_RTE_LIBRTE_DPAA_BUS) += \
diff --git a/drivers/bus/dpaa/meson.build b/drivers/bus/dpaa/meson.build
index 0e561c2608..2b1cf19114 100644
--- a/drivers/bus/dpaa/meson.build
+++ b/drivers/bus/dpaa/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright 2018 NXP
 
-version = 2
-
 if not is_linux
 	build = false
 	reason = 'only supported on linux'
diff --git a/drivers/bus/fslmc/Makefile b/drivers/bus/fslmc/Makefile
index 16f0a2ca4a..6d22860885 100644
--- a/drivers/bus/fslmc/Makefile
+++ b/drivers/bus/fslmc/Makefile
@@ -25,9 +25,6 @@ LDLIBS += -lrte_common_dpaax
 # versioning export map
 EXPORT_MAP := rte_bus_fslmc_version.map
 
-# library version
-LIBABIVER := 2
-
 SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += \
         qbman/qbman_portal.c \
         qbman/qbman_debug.c
diff --git a/drivers/bus/fslmc/meson.build b/drivers/bus/fslmc/meson.build
index faebc4327f..6e709a8d5a 100644
--- a/drivers/bus/fslmc/meson.build
+++ b/drivers/bus/fslmc/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright 2018 NXP
 
-version = 2
-
 if not is_linux
 	build = false
 	reason = 'only supported on linux'
diff --git a/drivers/bus/ifpga/Makefile b/drivers/bus/ifpga/Makefile
index 514452b39d..290c1124ba 100644
--- a/drivers/bus/ifpga/Makefile
+++ b/drivers/bus/ifpga/Makefile
@@ -18,9 +18,6 @@ LDLIBS += -lrte_kvargs
 # versioning export map
 EXPORT_MAP := rte_bus_ifpga_version.map
 
-# library version
-LIBABIVER := 2
-
 SRCS-$(CONFIG_RTE_LIBRTE_IFPGA_BUS) += ifpga_bus.c
 SRCS-$(CONFIG_RTE_LIBRTE_IFPGA_BUS) += ifpga_common.c
 
diff --git a/drivers/bus/ifpga/meson.build b/drivers/bus/ifpga/meson.build
index 0b5c38d54c..c9b08c8627 100644
--- a/drivers/bus/ifpga/meson.build
+++ b/drivers/bus/ifpga/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2010-2018 Intel Corporation
 
-version = 2
-
 deps += ['pci', 'kvargs', 'rawdev']
 install_headers('rte_bus_ifpga.h')
 sources = files('ifpga_common.c', 'ifpga_bus.c')
diff --git a/drivers/bus/pci/Makefile b/drivers/bus/pci/Makefile
index 45d12427a1..975d796527 100644
--- a/drivers/bus/pci/Makefile
+++ b/drivers/bus/pci/Makefile
@@ -4,7 +4,6 @@
 include $(RTE_SDK)/mk/rte.vars.mk
 
 LIB = librte_bus_pci.a
-LIBABIVER := 2
 EXPORT_MAP := rte_bus_pci_version.map
 
 CFLAGS := -I$(SRCDIR) $(CFLAGS)
diff --git a/drivers/bus/pci/meson.build b/drivers/bus/pci/meson.build
index a312ecc034..a3feb86aea 100644
--- a/drivers/bus/pci/meson.build
+++ b/drivers/bus/pci/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
-
 deps += ['pci']
 install_headers('rte_bus_pci.h')
 sources = files('pci_common.c',
diff --git a/drivers/bus/vdev/Makefile b/drivers/bus/vdev/Makefile
index 803b8ea7b0..63c9b3f59b 100644
--- a/drivers/bus/vdev/Makefile
+++ b/drivers/bus/vdev/Makefile
@@ -15,9 +15,6 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API
 # versioning export map
 EXPORT_MAP := rte_bus_vdev_version.map
 
-# library version
-LIBABIVER := 2
-
 SRCS-y += vdev.c
 SRCS-y += vdev_params.c
 
diff --git a/drivers/bus/vdev/meson.build b/drivers/bus/vdev/meson.build
index 803785f10f..12605e5c74 100644
--- a/drivers/bus/vdev/meson.build
+++ b/drivers/bus/vdev/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
-
 sources = files('vdev.c',
 	'vdev_params.c')
 install_headers('rte_bus_vdev.h')
diff --git a/drivers/bus/vmbus/Makefile b/drivers/bus/vmbus/Makefile
index 8f3ec7af45..59e789db9b 100644
--- a/drivers/bus/vmbus/Makefile
+++ b/drivers/bus/vmbus/Makefile
@@ -3,7 +3,6 @@
 include $(RTE_SDK)/mk/rte.vars.mk
 
 LIB = librte_bus_vmbus.a
-LIBABIVER := 2
 EXPORT_MAP := rte_bus_vmbus_version.map
 
 CFLAGS += -I$(SRCDIR)
diff --git a/drivers/bus/vmbus/meson.build b/drivers/bus/vmbus/meson.build
index 79d4c685ec..251f21b662 100644
--- a/drivers/bus/vmbus/meson.build
+++ b/drivers/bus/vmbus/meson.build
@@ -1,7 +1,5 @@
 # SPDX-License-Identifier: BSD-3-Clause
 
-version = 2
-
 allow_experimental_apis = true
 
 install_headers('rte_bus_vmbus.h','rte_vmbus_reg.h')
diff --git a/drivers/common/cpt/Makefile b/drivers/common/cpt/Makefile
index 2340aa9616..859443218b 100644
--- a/drivers/common/cpt/Makefile
+++ b/drivers/common/cpt/Makefile
@@ -13,8 +13,6 @@ CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -I$(RTE_SDK)/drivers/bus/pci
 EXPORT_MAP := rte_common_cpt_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/common/dpaax/Makefile b/drivers/common/dpaax/Makefile
index a0a1de0283..59bd8ae15d 100644
--- a/drivers/common/dpaax/Makefile
+++ b/drivers/common/dpaax/Makefile
@@ -20,9 +20,6 @@ CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax
 # versioning export map
 EXPORT_MAP := rte_common_dpaax_version.map
 
-# library version
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/common/mvep/Makefile b/drivers/common/mvep/Makefile
index 1f5f005d91..f91d295e5c 100644
--- a/drivers/common/mvep/Makefile
+++ b/drivers/common/mvep/Makefile
@@ -15,9 +15,6 @@ endif
 # library name
 LIB = librte_common_mvep.a
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_common_mvep_version.map
 
diff --git a/drivers/common/octeontx/Makefile b/drivers/common/octeontx/Makefile
index dfdb9f196e..5e67df0583 100644
--- a/drivers/common/octeontx/Makefile
+++ b/drivers/common/octeontx/Makefile
@@ -12,8 +12,6 @@ LIB = librte_common_octeontx.a
 CFLAGS += $(WERROR_FLAGS)
 EXPORT_MAP := rte_common_octeontx_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/common/octeontx2/Makefile b/drivers/common/octeontx2/Makefile
index afe570817c..eaff29433a 100644
--- a/drivers/common/octeontx2/Makefile
+++ b/drivers/common/octeontx2/Makefile
@@ -24,8 +24,6 @@ endif
 
 EXPORT_MAP := rte_common_octeontx2_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/compress/isal/Makefile b/drivers/compress/isal/Makefile
index 95904f6418..6438b75ce8 100644
--- a/drivers/compress/isal/Makefile
+++ b/drivers/compress/isal/Makefile
@@ -17,9 +17,6 @@ LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
 LDLIBS += -lrte_compressdev
 LDLIBS += -lrte_bus_vdev
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_isal_version.map
 
diff --git a/drivers/compress/octeontx/Makefile b/drivers/compress/octeontx/Makefile
index f34424c87f..d6324b5302 100644
--- a/drivers/compress/octeontx/Makefile
+++ b/drivers/compress/octeontx/Makefile
@@ -6,9 +6,6 @@ include $(RTE_SDK)/mk/rte.vars.mk
 # library name
 LIB = librte_pmd_octeontx_zip.a
 
-# library version
-LIBABIVER := 1
-
 # build flags
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -O3
diff --git a/drivers/compress/zlib/Makefile b/drivers/compress/zlib/Makefile
index 5cf8de6f83..1eba3560fe 100644
--- a/drivers/compress/zlib/Makefile
+++ b/drivers/compress/zlib/Makefile
@@ -11,9 +11,6 @@ CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_zlib_version.map
 
diff --git a/drivers/crypto/aesni_gcm/Makefile b/drivers/crypto/aesni_gcm/Makefile
index 39eff3db00..d8190a2ff4 100644
--- a/drivers/crypto/aesni_gcm/Makefile
+++ b/drivers/crypto/aesni_gcm/Makefile
@@ -11,9 +11,6 @@ CFLAGS += -O3
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += $(WERROR_FLAGS)
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_aesni_gcm_version.map
 
diff --git a/drivers/crypto/aesni_mb/Makefile b/drivers/crypto/aesni_mb/Makefile
index f3035340ac..f1530e74c4 100644
--- a/drivers/crypto/aesni_mb/Makefile
+++ b/drivers/crypto/aesni_mb/Makefile
@@ -11,9 +11,6 @@ CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_aesni_mb_version.map
 
diff --git a/drivers/crypto/armv8/Makefile b/drivers/crypto/armv8/Makefile
index f71f6b14a4..1252836648 100644
--- a/drivers/crypto/armv8/Makefile
+++ b/drivers/crypto/armv8/Makefile
@@ -19,9 +19,6 @@ LIB = librte_pmd_armv8.a
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_armv8_version.map
 
diff --git a/drivers/crypto/caam_jr/Makefile b/drivers/crypto/caam_jr/Makefile
index fa35b79b85..1b1f25a2a2 100644
--- a/drivers/crypto/caam_jr/Makefile
+++ b/drivers/crypto/caam_jr/Makefile
@@ -25,9 +25,6 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common/include
 # versioning export map
 EXPORT_MAP := rte_pmd_caam_jr_version.map
 
-# library version
-LIBABIVER := 1
-
 # library source files
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_CAAM_JR) += caam_jr.c
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_CAAM_JR) += caam_jr_capabilities.c
diff --git a/drivers/crypto/ccp/Makefile b/drivers/crypto/ccp/Makefile
index f51d170f90..3f5da2adf3 100644
--- a/drivers/crypto/ccp/Makefile
+++ b/drivers/crypto/ccp/Makefile
@@ -11,9 +11,6 @@ CFLAGS += -O3
 CFLAGS += -I$(SRCDIR)
 CFLAGS += $(WERROR_FLAGS)
 
-# library version
-LIBABIVER := 1
-
 # external library include paths
 LDLIBS += -lcrypto
 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
diff --git a/drivers/crypto/dpaa2_sec/Makefile b/drivers/crypto/dpaa2_sec/Makefile
index ba30a955a9..96b9c78435 100644
--- a/drivers/crypto/dpaa2_sec/Makefile
+++ b/drivers/crypto/dpaa2_sec/Makefile
@@ -33,9 +33,6 @@ CFLAGS += -I$(RTE_SDK)/drivers/mempool/dpaa2/
 # versioning export map
 EXPORT_MAP := rte_pmd_dpaa2_sec_version.map
 
-# library version
-LIBABIVER := 2
-
 # library source files
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC) += dpaa2_sec_dpseci.c
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC) += mc/dpseci.c
diff --git a/drivers/crypto/dpaa2_sec/meson.build b/drivers/crypto/dpaa2_sec/meson.build
index 9d1b170be7..ab9c8c8bf9 100644
--- a/drivers/crypto/dpaa2_sec/meson.build
+++ b/drivers/crypto/dpaa2_sec/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright 2018 NXP
 
-version = 2
-
 if not is_linux
 	build = false
 	reason = 'only supported on linux'
diff --git a/drivers/crypto/dpaa_sec/Makefile b/drivers/crypto/dpaa_sec/Makefile
index 9acccaac4f..fbfd775855 100644
--- a/drivers/crypto/dpaa_sec/Makefile
+++ b/drivers/crypto/dpaa_sec/Makefile
@@ -27,9 +27,6 @@ LDLIBS += -lrte_cryptodev
 # versioning export map
 EXPORT_MAP := rte_pmd_dpaa_sec_version.map
 
-# library version
-LIBABIVER := 1
-
 # library source files
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_DPAA_SEC) += dpaa_sec.c
 
diff --git a/drivers/crypto/kasumi/Makefile b/drivers/crypto/kasumi/Makefile
index 3de2f97edf..26f51375da 100644
--- a/drivers/crypto/kasumi/Makefile
+++ b/drivers/crypto/kasumi/Makefile
@@ -17,9 +17,6 @@ CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_kasumi_version.map
 
diff --git a/drivers/crypto/mvsam/Makefile b/drivers/crypto/mvsam/Makefile
index 2b4d036c83..f0641ae7d9 100644
--- a/drivers/crypto/mvsam/Makefile
+++ b/drivers/crypto/mvsam/Makefile
@@ -24,9 +24,6 @@ CFLAGS += -I$(LIBMUSDK_PATH)/include
 CFLAGS += -DMVCONF_TYPES_PUBLIC
 CFLAGS += -DMVCONF_DMA_PHYS_ADDR_T_PUBLIC
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_mvsam_version.map
 
diff --git a/drivers/crypto/nitrox/Makefile b/drivers/crypto/nitrox/Makefile
index f569927704..fc42ac8088 100644
--- a/drivers/crypto/nitrox/Makefile
+++ b/drivers/crypto/nitrox/Makefile
@@ -11,9 +11,6 @@ CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_nitrox_version.map
 
diff --git a/drivers/crypto/null/Makefile b/drivers/crypto/null/Makefile
index 9e6400c1b4..4595055f01 100644
--- a/drivers/crypto/null/Makefile
+++ b/drivers/crypto/null/Makefile
@@ -14,9 +14,6 @@ LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
 LDLIBS += -lrte_cryptodev
 LDLIBS += -lrte_bus_vdev
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_null_crypto_version.map
 
diff --git a/drivers/crypto/octeontx/Makefile b/drivers/crypto/octeontx/Makefile
index 2752cbc364..08a99c8272 100644
--- a/drivers/crypto/octeontx/Makefile
+++ b/drivers/crypto/octeontx/Makefile
@@ -7,9 +7,6 @@ include $(RTE_SDK)/mk/rte.vars.mk
 # library name
 LIB = librte_pmd_octeontx_crypto.a
 
-# library version
-LIBABIVER := 1
-
 # build flags
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/drivers/crypto/octeontx2/Makefile b/drivers/crypto/octeontx2/Makefile
index ce116b87bc..f7d6c37527 100644
--- a/drivers/crypto/octeontx2/Makefile
+++ b/drivers/crypto/octeontx2/Makefile
@@ -7,9 +7,6 @@ include $(RTE_SDK)/mk/rte.vars.mk
 # library name
 LIB = librte_pmd_octeontx2_crypto.a
 
-# library version
-LIBABIVER := 1
-
 # build flags
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/drivers/crypto/openssl/Makefile b/drivers/crypto/openssl/Makefile
index ae6c3bcac1..58a26eced6 100644
--- a/drivers/crypto/openssl/Makefile
+++ b/drivers/crypto/openssl/Makefile
@@ -11,9 +11,6 @@ CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_openssl_version.map
 
diff --git a/drivers/crypto/scheduler/Makefile b/drivers/crypto/scheduler/Makefile
index a9514e3386..67aac024c4 100644
--- a/drivers/crypto/scheduler/Makefile
+++ b/drivers/crypto/scheduler/Makefile
@@ -13,9 +13,6 @@ LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
 LDLIBS += -lrte_cryptodev -lrte_kvargs -lrte_reorder
 LDLIBS += -lrte_bus_vdev
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_crypto_scheduler_version.map
 
diff --git a/drivers/crypto/snow3g/Makefile b/drivers/crypto/snow3g/Makefile
index 37f77dbf84..4086c571da 100644
--- a/drivers/crypto/snow3g/Makefile
+++ b/drivers/crypto/snow3g/Makefile
@@ -17,9 +17,6 @@ CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_snow3g_version.map
 
diff --git a/drivers/crypto/virtio/Makefile b/drivers/crypto/virtio/Makefile
index be7b828fe1..32e2e4d5e9 100644
--- a/drivers/crypto/virtio/Makefile
+++ b/drivers/crypto/virtio/Makefile
@@ -17,8 +17,6 @@ CFLAGS += $(WERROR_FLAGS)
 
 EXPORT_MAP := rte_pmd_virtio_crypto_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/crypto/zuc/Makefile b/drivers/crypto/zuc/Makefile
index 8d625aa01d..a01bb6ecbc 100644
--- a/drivers/crypto/zuc/Makefile
+++ b/drivers/crypto/zuc/Makefile
@@ -17,9 +17,6 @@ CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_zuc_version.map
 
diff --git a/drivers/event/dpaa/Makefile b/drivers/event/dpaa/Makefile
index befb21b1b6..2f53efdf9e 100644
--- a/drivers/event/dpaa/Makefile
+++ b/drivers/event/dpaa/Makefile
@@ -27,8 +27,6 @@ CFLAGS += -I$(RTE_SDK)/drivers/crypto/dpaa_sec
 
 EXPORT_MAP := rte_pmd_dpaa_event_version.map
 
-LIBABIVER := 1
-
 # Interfaces with DPDK
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_DPAA_EVENTDEV) += dpaa_eventdev.c
 
diff --git a/drivers/event/dpaa2/Makefile b/drivers/event/dpaa2/Makefile
index a29284f046..5a584c9d6b 100644
--- a/drivers/event/dpaa2/Makefile
+++ b/drivers/event/dpaa2/Makefile
@@ -31,8 +31,6 @@ CFLAGS += -I$(RTE_SDK)/drivers/crypto/dpaa2_sec
 # versioning export map
 EXPORT_MAP := rte_pmd_dpaa2_event_version.map
 
-LIBABIVER := 2
-
 # depends on fslmc bus which uses experimental API
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
diff --git a/drivers/event/dpaa2/meson.build b/drivers/event/dpaa2/meson.build
index 72f97d4c1e..ca914ccc4d 100644
--- a/drivers/event/dpaa2/meson.build
+++ b/drivers/event/dpaa2/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright 2018 NXP
 
-version = 2
-
 if not is_linux
 	build = false
 	reason = 'only supported on linux'
diff --git a/drivers/event/dsw/Makefile b/drivers/event/dsw/Makefile
index 922fe2e42b..f6e7dda1fd 100644
--- a/drivers/event/dsw/Makefile
+++ b/drivers/event/dsw/Makefile
@@ -18,8 +18,6 @@ LDLIBS += -lrte_ring
 LDLIBS += -lrte_eventdev
 LDLIBS += -lrte_bus_vdev
 
-LIBABIVER := 1
-
 EXPORT_MAP := rte_pmd_dsw_event_version.map
 
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_DSW_EVENTDEV) += \
diff --git a/drivers/event/octeontx/Makefile b/drivers/event/octeontx/Makefile
index 2c92ccb35d..c1233e098d 100644
--- a/drivers/event/octeontx/Makefile
+++ b/drivers/event/octeontx/Makefile
@@ -20,8 +20,6 @@ LDLIBS += -lrte_bus_vdev -lrte_ethdev
 
 EXPORT_MAP := rte_pmd_octeontx_event_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/event/octeontx2/Makefile b/drivers/event/octeontx2/Makefile
index 8289f617a4..6dab69c590 100644
--- a/drivers/event/octeontx2/Makefile
+++ b/drivers/event/octeontx2/Makefile
@@ -27,8 +27,6 @@ endif
 
 EXPORT_MAP := rte_pmd_octeontx2_event_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/event/opdl/Makefile b/drivers/event/opdl/Makefile
index bf50a60a0b..6aab556ad9 100644
--- a/drivers/event/opdl/Makefile
+++ b/drivers/event/opdl/Makefile
@@ -20,9 +20,6 @@ endif
 LDLIBS += -lrte_eal -lrte_eventdev -lrte_kvargs
 LDLIBS += -lrte_bus_vdev -lrte_mbuf -lrte_mempool
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_opdl_event_version.map
 
diff --git a/drivers/event/skeleton/Makefile b/drivers/event/skeleton/Makefile
index 0f7f07eaf1..dc85ad3c4b 100644
--- a/drivers/event/skeleton/Makefile
+++ b/drivers/event/skeleton/Makefile
@@ -16,8 +16,6 @@ LDLIBS += -lrte_bus_vdev
 
 EXPORT_MAP := rte_pmd_skeleton_event_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/event/sw/Makefile b/drivers/event/sw/Makefile
index c6600e8367..17937e295e 100644
--- a/drivers/event/sw/Makefile
+++ b/drivers/event/sw/Makefile
@@ -20,9 +20,6 @@ LDLIBS += -lrte_eal -lrte_eventdev -lrte_kvargs -lrte_ring
 LDLIBS += -lrte_mempool -lrte_mbuf
 LDLIBS += -lrte_bus_vdev
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_sw_event_version.map
 
diff --git a/drivers/mempool/bucket/Makefile b/drivers/mempool/bucket/Makefile
index d6660b09cd..1dc0079f8f 100644
--- a/drivers/mempool/bucket/Makefile
+++ b/drivers/mempool/bucket/Makefile
@@ -21,8 +21,6 @@ LDLIBS += -lrte_eal -lrte_mempool -lrte_ring
 
 EXPORT_MAP := rte_mempool_bucket_version.map
 
-LIBABIVER := 1
-
 SRCS-$(CONFIG_RTE_DRIVER_MEMPOOL_BUCKET) += rte_mempool_bucket.c
 
 include $(RTE_SDK)/mk/rte.lib.mk
diff --git a/drivers/mempool/dpaa/Makefile b/drivers/mempool/dpaa/Makefile
index 534e00733c..8c786ddbeb 100644
--- a/drivers/mempool/dpaa/Makefile
+++ b/drivers/mempool/dpaa/Makefile
@@ -19,9 +19,6 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_mempool
 # versioning export map
 EXPORT_MAP := rte_mempool_dpaa_version.map
 
-# Lbrary version
-LIBABIVER := 1
-
 # depends on dpaa bus which uses experimental API
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
diff --git a/drivers/mempool/dpaa2/Makefile b/drivers/mempool/dpaa2/Makefile
index bdb9410252..52565be9a9 100644
--- a/drivers/mempool/dpaa2/Makefile
+++ b/drivers/mempool/dpaa2/Makefile
@@ -18,9 +18,6 @@ CFLAGS += -I$(RTE_SDK)/drivers/bus/fslmc/qbman/include
 # versioning export map
 EXPORT_MAP := rte_mempool_dpaa2_version.map
 
-# Lbrary version
-LIBABIVER := 2
-
 # depends on fslmc bus which uses experimental API
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
diff --git a/drivers/mempool/dpaa2/meson.build b/drivers/mempool/dpaa2/meson.build
index 3d25ba06d9..d79fc31644 100644
--- a/drivers/mempool/dpaa2/meson.build
+++ b/drivers/mempool/dpaa2/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright 2018 NXP
 
-version = 2
-
 if not is_linux
 	build = false
 	reason = 'only supported on linux'
diff --git a/drivers/mempool/octeontx/Makefile b/drivers/mempool/octeontx/Makefile
index 25efc5cf26..ee54c66dc2 100644
--- a/drivers/mempool/octeontx/Makefile
+++ b/drivers/mempool/octeontx/Makefile
@@ -15,8 +15,6 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API
 
 EXPORT_MAP := rte_mempool_octeontx_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/mempool/octeontx2/Makefile b/drivers/mempool/octeontx2/Makefile
index 4961a4a35b..337babf66e 100644
--- a/drivers/mempool/octeontx2/Makefile
+++ b/drivers/mempool/octeontx2/Makefile
@@ -27,8 +27,6 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API
 
 EXPORT_MAP := rte_mempool_octeontx2_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/mempool/ring/Makefile b/drivers/mempool/ring/Makefile
index ddab522fec..8624502da9 100644
--- a/drivers/mempool/ring/Makefile
+++ b/drivers/mempool/ring/Makefile
@@ -14,8 +14,6 @@ LDLIBS += -lrte_eal -lrte_mempool -lrte_ring
 
 EXPORT_MAP := rte_mempool_ring_version.map
 
-LIBABIVER := 1
-
 SRCS-$(CONFIG_RTE_DRIVER_MEMPOOL_RING) += rte_mempool_ring.c
 
 include $(RTE_SDK)/mk/rte.lib.mk
diff --git a/drivers/mempool/stack/Makefile b/drivers/mempool/stack/Makefile
index 1681a62bcc..97c3dab071 100644
--- a/drivers/mempool/stack/Makefile
+++ b/drivers/mempool/stack/Makefile
@@ -18,8 +18,6 @@ LDLIBS += -lrte_eal -lrte_mempool -lrte_stack
 
 EXPORT_MAP := rte_mempool_stack_version.map
 
-LIBABIVER := 1
-
 SRCS-$(CONFIG_RTE_DRIVER_MEMPOOL_STACK) += rte_mempool_stack.c
 
 include $(RTE_SDK)/mk/rte.lib.mk
diff --git a/drivers/net/af_packet/Makefile b/drivers/net/af_packet/Makefile
index 39a1e0d24e..91dbf0a692 100644
--- a/drivers/net/af_packet/Makefile
+++ b/drivers/net/af_packet/Makefile
@@ -13,8 +13,6 @@ LIB = librte_pmd_af_packet.a
 
 EXPORT_MAP := rte_pmd_af_packet_version.map
 
-LIBABIVER := 1
-
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
diff --git a/drivers/net/af_xdp/Makefile b/drivers/net/af_xdp/Makefile
index eeba6b6933..55db6085ac 100644
--- a/drivers/net/af_xdp/Makefile
+++ b/drivers/net/af_xdp/Makefile
@@ -10,8 +10,6 @@ LIB = librte_pmd_af_xdp.a
 
 EXPORT_MAP := rte_pmd_af_xdp_version.map
 
-LIBABIVER := 1
-
 CFLAGS += -O3
 
 CFLAGS += $(WERROR_FLAGS)
diff --git a/drivers/net/ark/Makefile b/drivers/net/ark/Makefile
index 34d341c235..c02080bdd0 100644
--- a/drivers/net/ark/Makefile
+++ b/drivers/net/ark/Makefile
@@ -13,8 +13,6 @@ CFLAGS += $(WERROR_FLAGS) -Werror
 
 EXPORT_MAP := rte_pmd_ark_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/atlantic/Makefile b/drivers/net/atlantic/Makefile
index fc12e6a532..016e369283 100644
--- a/drivers/net/atlantic/Makefile
+++ b/drivers/net/atlantic/Makefile
@@ -14,8 +14,6 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API
 
 EXPORT_MAP := rte_pmd_atlantic_version.map
 
-LIBABIVER := 1
-
 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
 LDLIBS += -lrte_ethdev -lrte_net
 LDLIBS += -lrte_bus_pci
diff --git a/drivers/net/avp/Makefile b/drivers/net/avp/Makefile
index a7537656c9..8c12d3b7a0 100644
--- a/drivers/net/avp/Makefile
+++ b/drivers/net/avp/Makefile
@@ -17,8 +17,6 @@ LDLIBS += -lrte_bus_pci
 
 EXPORT_MAP := rte_pmd_avp_version.map
 
-LIBABIVER := 1
-
 # install public header files to enable compilation of the hypervisor level
 # dpdk application
 SYMLINK-$(CONFIG_RTE_LIBRTE_AVP_PMD)-include += rte_avp_common.h
diff --git a/drivers/net/axgbe/Makefile b/drivers/net/axgbe/Makefile
index bcdcd544cf..0097a93074 100644
--- a/drivers/net/axgbe/Makefile
+++ b/drivers/net/axgbe/Makefile
@@ -14,8 +14,6 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API
 
 EXPORT_MAP := rte_pmd_axgbe_version.map
 
-LIBABIVER := 1
-
 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool
 LDLIBS += -lrte_pci -lrte_bus_pci
 LDLIBS += -lrte_ethdev -lrte_net
diff --git a/drivers/net/bnx2x/Makefile b/drivers/net/bnx2x/Makefile
index adead9d002..5f6c39e4ee 100644
--- a/drivers/net/bnx2x/Makefile
+++ b/drivers/net/bnx2x/Makefile
@@ -20,8 +20,6 @@ LDLIBS += -lrte_bus_pci
 
 EXPORT_MAP := rte_pmd_bnx2x_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/bnxt/Makefile b/drivers/net/bnxt/Makefile
index 21a5650630..b77532b817 100644
--- a/drivers/net/bnxt/Makefile
+++ b/drivers/net/bnxt/Makefile
@@ -13,8 +13,6 @@ LIB = librte_pmd_bnxt.a
 
 EXPORT_MAP := rte_pmd_bnxt_version.map
 
-LIBABIVER := 2
-
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
diff --git a/drivers/net/bnxt/meson.build b/drivers/net/bnxt/meson.build
index 4dda28f5b0..0c311d235a 100644
--- a/drivers/net/bnxt/meson.build
+++ b/drivers/net/bnxt/meson.build
@@ -2,7 +2,6 @@
 # Copyright(c) 2018 Intel Corporation
 
 install_headers('rte_pmd_bnxt.h')
-version = 2
 sources = files('bnxt_cpr.c',
 	'bnxt_ethdev.c',
 	'bnxt_filter.c',
diff --git a/drivers/net/bonding/Makefile b/drivers/net/bonding/Makefile
index 26c1782554..a64296d8cf 100644
--- a/drivers/net/bonding/Makefile
+++ b/drivers/net/bonding/Makefile
@@ -18,8 +18,6 @@ LDLIBS += -lrte_bus_vdev
 
 EXPORT_MAP := rte_pmd_bond_version.map
 
-LIBABIVER := 2
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/bonding/meson.build b/drivers/net/bonding/meson.build
index 6267210adf..d133375d4a 100644
--- a/drivers/net/bonding/meson.build
+++ b/drivers/net/bonding/meson.build
@@ -2,7 +2,6 @@
 # Copyright(c) 2017 Intel Corporation
 
 name = 'bond' #, james bond :-)
-version = 2
 allow_experimental_apis = true
 sources = files('rte_eth_bond_api.c', 'rte_eth_bond_pmd.c', 'rte_eth_bond_flow.c',
 	'rte_eth_bond_args.c', 'rte_eth_bond_8023ad.c', 'rte_eth_bond_alb.c')
diff --git a/drivers/net/cxgbe/Makefile b/drivers/net/cxgbe/Makefile
index d809f47209..79c6e1d1fb 100644
--- a/drivers/net/cxgbe/Makefile
+++ b/drivers/net/cxgbe/Makefile
@@ -14,8 +14,6 @@ CFLAGS += $(WERROR_FLAGS)
 
 EXPORT_MAP := rte_pmd_cxgbe_version.map
 
-LIBABIVER := 1
-
 #
 # CFLAGS for gcc/clang
 #
diff --git a/drivers/net/dpaa/Makefile b/drivers/net/dpaa/Makefile
index 395e4d900f..8e049b2a0b 100644
--- a/drivers/net/dpaa/Makefile
+++ b/drivers/net/dpaa/Makefile
@@ -25,8 +25,6 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common/include
 
 EXPORT_MAP := rte_pmd_dpaa_version.map
 
-LIBABIVER := 1
-
 # depends on dpaa bus which uses experimental API
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
diff --git a/drivers/net/dpaa2/Makefile b/drivers/net/dpaa2/Makefile
index e5a2d3fdee..806c88ff0c 100644
--- a/drivers/net/dpaa2/Makefile
+++ b/drivers/net/dpaa2/Makefile
@@ -24,9 +24,6 @@ CFLAGS += -I$(RTE_SDK)/drivers/mempool/dpaa2
 # versioning export map
 EXPORT_MAP := rte_pmd_dpaa2_version.map
 
-# library version
-LIBABIVER := 2
-
 # depends on fslmc bus which uses experimental API
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
diff --git a/drivers/net/dpaa2/meson.build b/drivers/net/dpaa2/meson.build
index 1a4ab212c2..571cdb7d4b 100644
--- a/drivers/net/dpaa2/meson.build
+++ b/drivers/net/dpaa2/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright 2018 NXP
 
-version = 2
-
 if not is_linux
 	build = false
 	reason = 'only supported on linux'
diff --git a/drivers/net/e1000/Makefile b/drivers/net/e1000/Makefile
index 0ed6276568..d93a5225c3 100644
--- a/drivers/net/e1000/Makefile
+++ b/drivers/net/e1000/Makefile
@@ -17,8 +17,6 @@ LDLIBS += -lrte_bus_pci
 
 EXPORT_MAP := rte_pmd_e1000_version.map
 
-LIBABIVER := 1
-
 ifeq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
 #
 # CFLAGS for icc
diff --git a/drivers/net/ena/Makefile b/drivers/net/ena/Makefile
index 8336b7606a..b44daa896f 100644
--- a/drivers/net/ena/Makefile
+++ b/drivers/net/ena/Makefile
@@ -12,8 +12,6 @@ CFLAGS += $(WERROR_FLAGS) -O2
 INCLUDES :=-I$(SRCDIR) -I$(SRCDIR)/base/ena_defs -I$(SRCDIR)/base
 
 EXPORT_MAP := rte_pmd_ena_version.map
-LIBABIVER := 1
-
 # rte_fbarray is not yet part of stable API
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
diff --git a/drivers/net/enetc/Makefile b/drivers/net/enetc/Makefile
index 4498bc51f8..7276026e37 100644
--- a/drivers/net/enetc/Makefile
+++ b/drivers/net/enetc/Makefile
@@ -12,8 +12,6 @@ CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax
 EXPORT_MAP := rte_pmd_enetc_version.map
-LIBABIVER := 1
-
 SRCS-$(CONFIG_RTE_LIBRTE_ENETC_PMD) += enetc_ethdev.c
 SRCS-$(CONFIG_RTE_LIBRTE_ENETC_PMD) += enetc_rxtx.c
 
diff --git a/drivers/net/enic/Makefile b/drivers/net/enic/Makefile
index 4e0c83da56..316088a3c7 100644
--- a/drivers/net/enic/Makefile
+++ b/drivers/net/enic/Makefile
@@ -11,8 +11,6 @@ LIB = librte_pmd_enic.a
 
 EXPORT_MAP := rte_pmd_enic_version.map
 
-LIBABIVER := 1
-
 # Experimental APIs used: rte_intr_ack
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -I$(SRCDIR)/base/
diff --git a/drivers/net/failsafe/Makefile b/drivers/net/failsafe/Makefile
index 0d840a2721..bebc9056e0 100644
--- a/drivers/net/failsafe/Makefile
+++ b/drivers/net/failsafe/Makefile
@@ -9,8 +9,6 @@ LIB = librte_pmd_failsafe.a
 
 EXPORT_MAP := rte_pmd_failsafe_version.map
 
-LIBABIVER := 1
-
 # Sources are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_FAILSAFE) += failsafe.c
 SRCS-$(CONFIG_RTE_LIBRTE_PMD_FAILSAFE) += failsafe_args.c
diff --git a/drivers/net/fm10k/Makefile b/drivers/net/fm10k/Makefile
index 55e9cd5035..722bf1ee04 100644
--- a/drivers/net/fm10k/Makefile
+++ b/drivers/net/fm10k/Makefile
@@ -14,8 +14,6 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API
 
 EXPORT_MAP := rte_pmd_fm10k_version.map
 
-LIBABIVER := 1
-
 ifeq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
 #
 # CFLAGS for icc
diff --git a/drivers/net/hinic/Makefile b/drivers/net/hinic/Makefile
index b78fd8d535..87fd843e41 100644
--- a/drivers/net/hinic/Makefile
+++ b/drivers/net/hinic/Makefile
@@ -24,8 +24,6 @@ LDLIBS += -lpthread
 
 EXPORT_MAP := rte_pmd_hinic_version.map
 
-LIBABIVER := 1
-
 #
 # CFLAGS for 32-bits platforms
 #
diff --git a/drivers/net/hns3/Makefile b/drivers/net/hns3/Makefile
index cbbbe042e5..ae0ee7e931 100644
--- a/drivers/net/hns3/Makefile
+++ b/drivers/net/hns3/Makefile
@@ -23,8 +23,6 @@ LDLIBS += -lrte_bus_pci
 
 EXPORT_MAP := rte_pmd_hns3_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/i40e/Makefile b/drivers/net/i40e/Makefile
index 1c3bbe329f..435eb511ad 100644
--- a/drivers/net/i40e/Makefile
+++ b/drivers/net/i40e/Makefile
@@ -19,8 +19,6 @@ LDLIBS += -lrte_bus_pci
 
 EXPORT_MAP := rte_pmd_i40e_version.map
 
-LIBABIVER := 2
-
 #
 # Add extra flags for base driver files (also known as shared code)
 # to disable warnings
diff --git a/drivers/net/i40e/meson.build b/drivers/net/i40e/meson.build
index dcbca39bf7..b01babba1f 100644
--- a/drivers/net/i40e/meson.build
+++ b/drivers/net/i40e/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
-
 cflags += ['-DPF_DRIVER',
 	'-DVF_DRIVER',
 	'-DINTEGRATED_VF',
diff --git a/drivers/net/iavf/Makefile b/drivers/net/iavf/Makefile
index d3f9972f4f..81c9a0dbf2 100644
--- a/drivers/net/iavf/Makefile
+++ b/drivers/net/iavf/Makefile
@@ -15,8 +15,6 @@ LDLIBS += -lrte_bus_pci
 
 EXPORT_MAP := rte_pmd_iavf_version.map
 
-LIBABIVER := 1
-
 #
 # Add extra flags for base driver files (also known as shared code)
 # to disable warnings
diff --git a/drivers/net/ice/Makefile b/drivers/net/ice/Makefile
index 7c3b6a7ffc..6c4d155268 100644
--- a/drivers/net/ice/Makefile
+++ b/drivers/net/ice/Makefile
@@ -17,8 +17,6 @@ LDLIBS += -lrte_bus_pci -lrte_mempool -lrte_hash
 
 EXPORT_MAP := rte_pmd_ice_version.map
 
-LIBABIVER := 1
-
 #
 # Add extra flags for base driver files (also known as shared code)
 # to disable warnings
diff --git a/drivers/net/ifc/Makefile b/drivers/net/ifc/Makefile
index 7755a87ebb..fe227b8110 100644
--- a/drivers/net/ifc/Makefile
+++ b/drivers/net/ifc/Makefile
@@ -25,8 +25,6 @@ VPATH += $(SRCDIR)/base
 
 EXPORT_MAP := rte_pmd_ifc_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/ipn3ke/Makefile b/drivers/net/ipn3ke/Makefile
index 8c3ae3702d..100169ad4c 100644
--- a/drivers/net/ipn3ke/Makefile
+++ b/drivers/net/ipn3ke/Makefile
@@ -27,8 +27,6 @@ LDLIBS += -lpthread
 
 EXPORT_MAP := rte_pmd_ipn3ke_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/ixgbe/Makefile b/drivers/net/ixgbe/Makefile
index 7b6af35328..85762e2f2a 100644
--- a/drivers/net/ixgbe/Makefile
+++ b/drivers/net/ixgbe/Makefile
@@ -14,8 +14,6 @@ CFLAGS += $(WERROR_FLAGS)
 
 EXPORT_MAP := rte_pmd_ixgbe_version.map
 
-LIBABIVER := 2
-
 ifeq ($(CONFIG_RTE_TOOLCHAIN_ICC),y)
 #
 # CFLAGS for icc
diff --git a/drivers/net/ixgbe/meson.build b/drivers/net/ixgbe/meson.build
index 544a141484..1b0f6d1efe 100644
--- a/drivers/net/ixgbe/meson.build
+++ b/drivers/net/ixgbe/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
-
 cflags += ['-DRTE_LIBRTE_IXGBE_BYPASS']
 
 allow_experimental_apis = true
diff --git a/drivers/net/kni/Makefile b/drivers/net/kni/Makefile
index 01eaef0564..0694ffd021 100644
--- a/drivers/net/kni/Makefile
+++ b/drivers/net/kni/Makefile
@@ -17,8 +17,6 @@ LDLIBS += -lrte_bus_vdev
 
 EXPORT_MAP := rte_pmd_kni_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/liquidio/Makefile b/drivers/net/liquidio/Makefile
index f1092851a9..d7fda7f527 100644
--- a/drivers/net/liquidio/Makefile
+++ b/drivers/net/liquidio/Makefile
@@ -17,8 +17,6 @@ LDLIBS += -lrte_bus_pci
 
 EXPORT_MAP := rte_pmd_liquidio_version.map
 
-LIBABIVER := 1
-
 VPATH += $(RTE_SDK)/drivers/net/liquidio/base
 
 #
diff --git a/drivers/net/memif/Makefile b/drivers/net/memif/Makefile
index 3d92b08f25..00f2a4cfc1 100644
--- a/drivers/net/memif/Makefile
+++ b/drivers/net/memif/Makefile
@@ -10,8 +10,6 @@ LIB = librte_pmd_memif.a
 
 EXPORT_MAP := rte_pmd_memif_version.map
 
-LIBABIVER := 1
-
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 CFLAGS += -DALLOW_EXPERIMENTAL_API
diff --git a/drivers/net/mlx4/Makefile b/drivers/net/mlx4/Makefile
index 7ea6f74895..329569dc10 100644
--- a/drivers/net/mlx4/Makefile
+++ b/drivers/net/mlx4/Makefile
@@ -57,8 +57,6 @@ LDLIBS += -lrte_bus_pci
 CFLAGS += -Wno-error=cast-qual
 
 EXPORT_MAP := rte_pmd_mlx4_version.map
-LIBABIVER := 1
-
 # DEBUG which is usually provided on the command-line may enable
 # CONFIG_RTE_LIBRTE_MLX4_DEBUG.
 ifeq ($(DEBUG),1)
diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile
index 5b79631cf5..c5cf4397ac 100644
--- a/drivers/net/mlx5/Makefile
+++ b/drivers/net/mlx5/Makefile
@@ -73,8 +73,6 @@ LDLIBS += -lrte_bus_pci
 CFLAGS += -Wno-error=cast-qual
 
 EXPORT_MAP := rte_pmd_mlx5_version.map
-LIBABIVER := 1
-
 # memseg walk is not part of stable API
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
diff --git a/drivers/net/mvneta/Makefile b/drivers/net/mvneta/Makefile
index 05a0487cae..41e50479ff 100644
--- a/drivers/net/mvneta/Makefile
+++ b/drivers/net/mvneta/Makefile
@@ -16,9 +16,6 @@ endif
 # library name
 LIB = librte_pmd_mvneta.a
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_mvneta_version.map
 
diff --git a/drivers/net/mvpp2/Makefile b/drivers/net/mvpp2/Makefile
index 661d2cdac5..8a3ec93a60 100644
--- a/drivers/net/mvpp2/Makefile
+++ b/drivers/net/mvpp2/Makefile
@@ -16,9 +16,6 @@ endif
 # library name
 LIB = librte_pmd_mvpp2.a
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_pmd_mvpp2_version.map
 
diff --git a/drivers/net/netvsc/Makefile b/drivers/net/netvsc/Makefile
index 71482591a9..45526e2a8e 100644
--- a/drivers/net/netvsc/Makefile
+++ b/drivers/net/netvsc/Makefile
@@ -9,8 +9,6 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API
 
 EXPORT_MAP := rte_pmd_netvsc_version.map
 
-LIBABIVER := 1
-
 SRCS-$(CONFIG_RTE_LIBRTE_NETVSC_PMD) += hn_ethdev.c
 SRCS-$(CONFIG_RTE_LIBRTE_NETVSC_PMD) += hn_rxtx.c
 SRCS-$(CONFIG_RTE_LIBRTE_NETVSC_PMD) += hn_rndis.c
diff --git a/drivers/net/netvsc/meson.build b/drivers/net/netvsc/meson.build
index e9fe35344b..131dd2866e 100644
--- a/drivers/net/netvsc/meson.build
+++ b/drivers/net/netvsc/meson.build
@@ -3,7 +3,6 @@
 
 build = dpdk_conf.has('RTE_LIBRTE_VMBUS_BUS')
 reason = 'missing dependency, DPDK VMBus driver'
-version = 2
 sources = files('hn_ethdev.c', 'hn_rxtx.c', 'hn_rndis.c', 'hn_nvs.c', 'hn_vf.c')
 
 deps += ['bus_vmbus' ]
diff --git a/drivers/net/nfb/Makefile b/drivers/net/nfb/Makefile
index 8bba2ac046..e92d29dcd3 100644
--- a/drivers/net/nfb/Makefile
+++ b/drivers/net/nfb/Makefile
@@ -23,8 +23,6 @@ LDLIBS += $(shell command -v pkg-config > /dev/null 2>&1 && pkg-config --libs ne
 
 EXPORT_MAP := rte_pmd_nfb_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/nfp/Makefile b/drivers/net/nfp/Makefile
index d3fa5699b9..aa720d6698 100644
--- a/drivers/net/nfp/Makefile
+++ b/drivers/net/nfp/Makefile
@@ -19,8 +19,6 @@ LDLIBS += -lrte_bus_pci
 
 EXPORT_MAP := rte_pmd_nfp_version.map
 
-LIBABIVER := 1
-
 VPATH += $(SRCDIR)/nfpcore
 
 SRCS-$(CONFIG_RTE_LIBRTE_NFP_PMD) += nfp_cppcore.c
diff --git a/drivers/net/null/Makefile b/drivers/net/null/Makefile
index 6d44dfae8c..f51150c131 100644
--- a/drivers/net/null/Makefile
+++ b/drivers/net/null/Makefile
@@ -16,8 +16,6 @@ LDLIBS += -lrte_bus_vdev
 
 EXPORT_MAP := rte_pmd_null_version.map
 
-LIBABIVER := 2
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/null/meson.build b/drivers/net/null/meson.build
index 60e2ce6c59..68ac0d2ae5 100644
--- a/drivers/net/null/meson.build
+++ b/drivers/net/null/meson.build
@@ -1,5 +1,4 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
 sources = files('rte_eth_null.c')
diff --git a/drivers/net/octeontx/Makefile b/drivers/net/octeontx/Makefile
index 885f176845..8ddfc30894 100644
--- a/drivers/net/octeontx/Makefile
+++ b/drivers/net/octeontx/Makefile
@@ -15,8 +15,6 @@ CFLAGS += -I$(RTE_SDK)/drivers/mempool/octeontx/
 
 EXPORT_MAP := rte_pmd_octeontx_version.map
 
-LIBABIVER := 1
-
 OBJS_BASE_DRIVER=$(patsubst %.c,%.o,$(notdir $(wildcard $(SRCDIR)/base/*.c)))
 $(foreach obj, $(OBJS_BASE_DRIVER), $(eval CFLAGS_$(obj)+=$(CFLAGS_BASE_DRIVER)))
 
diff --git a/drivers/net/octeontx2/Makefile b/drivers/net/octeontx2/Makefile
index 0bfcecabfe..68f5765db6 100644
--- a/drivers/net/octeontx2/Makefile
+++ b/drivers/net/octeontx2/Makefile
@@ -28,8 +28,6 @@ endif
 
 EXPORT_MAP := rte_pmd_octeontx2_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/pcap/Makefile b/drivers/net/pcap/Makefile
index ef332162c3..f243d1a0fa 100644
--- a/drivers/net/pcap/Makefile
+++ b/drivers/net/pcap/Makefile
@@ -19,8 +19,6 @@ LDLIBS += -lrte_bus_vdev
 
 EXPORT_MAP := rte_pmd_pcap_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/pfe/Makefile b/drivers/net/pfe/Makefile
index 91815fc0c6..e5c60f536b 100644
--- a/drivers/net/pfe/Makefile
+++ b/drivers/net/pfe/Makefile
@@ -15,8 +15,6 @@ CFLAGS += -I$(RTE_SDK)/drivers/net/pfe/base/
 CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax
 
 EXPORT_MAP := rte_pmd_pfe_version.map
-LIBABIVER := 1
-
 # Driver uses below experimental APIs
 # rte_mem_iova2virt
 # rte_mem_virt2memseg
diff --git a/drivers/net/qede/Makefile b/drivers/net/qede/Makefile
index a11d5946a1..ada33800c4 100644
--- a/drivers/net/qede/Makefile
+++ b/drivers/net/qede/Makefile
@@ -19,8 +19,6 @@ LDLIBS += -lrte_bus_pci
 
 EXPORT_MAP := rte_pmd_qede_version.map
 
-LIBABIVER := 1
-
 #
 # OS
 #
diff --git a/drivers/net/ring/Makefile b/drivers/net/ring/Makefile
index 517312e0e0..d6a3dec350 100644
--- a/drivers/net/ring/Makefile
+++ b/drivers/net/ring/Makefile
@@ -16,8 +16,6 @@ LDLIBS += -lrte_bus_vdev
 
 EXPORT_MAP := rte_pmd_ring_version.map
 
-LIBABIVER := 2
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/ring/meson.build b/drivers/net/ring/meson.build
index 7659b04f87..e877a4b4bd 100644
--- a/drivers/net/ring/meson.build
+++ b/drivers/net/ring/meson.build
@@ -1,6 +1,5 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
 sources = files('rte_eth_ring.c')
 install_headers('rte_eth_ring.h')
diff --git a/drivers/net/sfc/Makefile b/drivers/net/sfc/Makefile
index 7dd660dadf..1f9c0bc3e0 100644
--- a/drivers/net/sfc/Makefile
+++ b/drivers/net/sfc/Makefile
@@ -62,8 +62,6 @@ $(foreach obj, $(BASE_DRIVER_OBJS), \
 
 EXPORT_MAP := rte_pmd_sfc_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/softnic/Makefile b/drivers/net/softnic/Makefile
index 71cfd45ad8..5068ffa18a 100644
--- a/drivers/net/softnic/Makefile
+++ b/drivers/net/softnic/Makefile
@@ -19,8 +19,6 @@ LDLIBS += -lrte_bus_vdev
 
 EXPORT_MAP := rte_pmd_softnic_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/szedata2/Makefile b/drivers/net/szedata2/Makefile
index b77fae16db..675d0938a2 100644
--- a/drivers/net/szedata2/Makefile
+++ b/drivers/net/szedata2/Makefile
@@ -17,8 +17,6 @@ LDLIBS += -lrte_bus_pci
 
 EXPORT_MAP := rte_pmd_szedata2_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/tap/Makefile b/drivers/net/tap/Makefile
index 774828386d..088fa8f9a9 100644
--- a/drivers/net/tap/Makefile
+++ b/drivers/net/tap/Makefile
@@ -10,8 +10,6 @@ LIB = librte_pmd_tap.a
 
 EXPORT_MAP := rte_pmd_tap_version.map
 
-LIBABIVER := 1
-
 #
 # TAP_MAX_QUEUES must be a power of 2
 #
diff --git a/drivers/net/thunderx/Makefile b/drivers/net/thunderx/Makefile
index e6bf497522..149638a499 100644
--- a/drivers/net/thunderx/Makefile
+++ b/drivers/net/thunderx/Makefile
@@ -18,8 +18,6 @@ LDLIBS += -lrte_bus_pci
 
 EXPORT_MAP := rte_pmd_thunderx_version.map
 
-LIBABIVER := 1
-
 OBJS_BASE_DRIVER=$(sort $(patsubst %.c,%.o,$(notdir $(wildcard $(SRCDIR)/base/*.c))))
 $(foreach obj, $(OBJS_BASE_DRIVER), $(eval CFLAGS_$(obj)+=$(CFLAGS_BASE_DRIVER)))
 
diff --git a/drivers/net/vdev_netvsc/Makefile b/drivers/net/vdev_netvsc/Makefile
index 690cb8f88d..9cd81225b3 100644
--- a/drivers/net/vdev_netvsc/Makefile
+++ b/drivers/net/vdev_netvsc/Makefile
@@ -6,7 +6,6 @@ include $(RTE_SDK)/mk/rte.vars.mk
 
 # Properties of the generated library.
 LIB = librte_pmd_vdev_netvsc.a
-LIBABIVER := 1
 EXPORT_MAP := rte_pmd_vdev_netvsc_version.map
 
 # Additional compilation flags.
diff --git a/drivers/net/vhost/Makefile b/drivers/net/vhost/Makefile
index 83b5a8b8e7..0461e29f2c 100644
--- a/drivers/net/vhost/Makefile
+++ b/drivers/net/vhost/Makefile
@@ -18,8 +18,6 @@ CFLAGS += $(WERROR_FLAGS)
 
 EXPORT_MAP := rte_pmd_vhost_version.map
 
-LIBABIVER := 2
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/vhost/meson.build b/drivers/net/vhost/meson.build
index 9532a76050..d7930862a7 100644
--- a/drivers/net/vhost/meson.build
+++ b/drivers/net/vhost/meson.build
@@ -3,7 +3,6 @@
 
 build = dpdk_conf.has('RTE_LIBRTE_VHOST')
 reason = 'missing dependency, DPDK vhost library'
-version = 2
 sources = files('rte_eth_vhost.c')
 install_headers('rte_eth_vhost.h')
 deps += 'vhost'
diff --git a/drivers/net/virtio/Makefile b/drivers/net/virtio/Makefile
index 5144e7cc4a..efdcb0d93f 100644
--- a/drivers/net/virtio/Makefile
+++ b/drivers/net/virtio/Makefile
@@ -20,8 +20,6 @@ endif
 
 EXPORT_MAP := rte_pmd_virtio_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/net/vmxnet3/Makefile b/drivers/net/vmxnet3/Makefile
index f1141da674..3a63cf2e91 100644
--- a/drivers/net/vmxnet3/Makefile
+++ b/drivers/net/vmxnet3/Makefile
@@ -45,8 +45,6 @@ VPATH += $(SRCDIR)/base
 
 EXPORT_MAP := rte_pmd_vmxnet3_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/raw/dpaa2_cmdif/Makefile b/drivers/raw/dpaa2_cmdif/Makefile
index a7c9802476..f671a30ccf 100644
--- a/drivers/raw/dpaa2_cmdif/Makefile
+++ b/drivers/raw/dpaa2_cmdif/Makefile
@@ -26,8 +26,6 @@ LDLIBS += -lrte_common_dpaax
 
 EXPORT_MAP := rte_rawdev_dpaa2_cmdif_version.map
 
-LIBABIVER := 2
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/raw/dpaa2_cmdif/meson.build b/drivers/raw/dpaa2_cmdif/meson.build
index 9ba1ae2dea..70247622bc 100644
--- a/drivers/raw/dpaa2_cmdif/meson.build
+++ b/drivers/raw/dpaa2_cmdif/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright 2018 NXP
 
-version = 2
-
 build = dpdk_conf.has('RTE_LIBRTE_DPAA2_MEMPOOL')
 reason = 'missing dependency, DPDK DPAA2 mempool driver'
 deps += ['rawdev', 'mempool_dpaa2', 'bus_vdev']
diff --git a/drivers/raw/dpaa2_qdma/Makefile b/drivers/raw/dpaa2_qdma/Makefile
index 057b2a81a2..fc5b3435b0 100644
--- a/drivers/raw/dpaa2_qdma/Makefile
+++ b/drivers/raw/dpaa2_qdma/Makefile
@@ -27,8 +27,6 @@ LDLIBS += -lrte_common_dpaax
 
 EXPORT_MAP := rte_rawdev_dpaa2_qdma_version.map
 
-LIBABIVER := 3
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/raw/dpaa2_qdma/meson.build b/drivers/raw/dpaa2_qdma/meson.build
index f70ade3b4d..fe166d9183 100644
--- a/drivers/raw/dpaa2_qdma/meson.build
+++ b/drivers/raw/dpaa2_qdma/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright 2018 NXP
 
-version = 2
-
 build = dpdk_conf.has('RTE_LIBRTE_DPAA2_MEMPOOL')
 reason = 'missing dependency, DPDK DPAA2 mempool driver'
 deps += ['rawdev', 'mempool_dpaa2', 'ring', 'kvargs']
diff --git a/drivers/raw/ifpga/Makefile b/drivers/raw/ifpga/Makefile
index 655b292883..b041a2bd70 100644
--- a/drivers/raw/ifpga/Makefile
+++ b/drivers/raw/ifpga/Makefile
@@ -23,8 +23,6 @@ LDLIBS += -lrte_bus_ifpga
 
 EXPORT_MAP := rte_rawdev_ifpga_version.map
 
-LIBABIVER := 1
-
 VPATH += $(SRCDIR)/base
 
 include $(RTE_SDK)/drivers/raw/ifpga/base/Makefile
diff --git a/drivers/raw/ifpga/meson.build b/drivers/raw/ifpga/meson.build
index 0ab6fd7110..5a221cd405 100644
--- a/drivers/raw/ifpga/meson.build
+++ b/drivers/raw/ifpga/meson.build
@@ -1,8 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
-version = 1
-
 subdir('base')
 objs = [base_objs]
 
diff --git a/drivers/raw/ioat/Makefile b/drivers/raw/ioat/Makefile
index e852afb57c..1609fe5e6c 100644
--- a/drivers/raw/ioat/Makefile
+++ b/drivers/raw/ioat/Makefile
@@ -14,9 +14,6 @@ LDLIBS += -lrte_eal -lrte_rawdev
 LDLIBS += -lrte_pci -lrte_bus_pci
 LDLIBS += -lrte_mbuf -lrte_mempool
 
-# library version
-LIBABIVER := 1
-
 # versioning export map
 EXPORT_MAP := rte_rawdev_ioat_version.map
 
diff --git a/drivers/raw/ntb/Makefile b/drivers/raw/ntb/Makefile
index 814cd05ca1..d69b4306bc 100644
--- a/drivers/raw/ntb/Makefile
+++ b/drivers/raw/ntb/Makefile
@@ -17,8 +17,6 @@ LDLIBS += -lrte_rawdev
 
 EXPORT_MAP := rte_rawdev_ntb_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/raw/octeontx2_dma/Makefile b/drivers/raw/octeontx2_dma/Makefile
index f101e4916e..c64ca3497a 100644
--- a/drivers/raw/octeontx2_dma/Makefile
+++ b/drivers/raw/octeontx2_dma/Makefile
@@ -24,8 +24,6 @@ endif
 
 EXPORT_MAP := rte_rawdev_octeontx2_dma_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/drivers/raw/skeleton/Makefile b/drivers/raw/skeleton/Makefile
index 783b1e9522..2ac66fbd45 100644
--- a/drivers/raw/skeleton/Makefile
+++ b/drivers/raw/skeleton/Makefile
@@ -17,8 +17,6 @@ LDLIBS += -lrte_kvargs
 
 EXPORT_MAP := rte_rawdev_skeleton_version.map
 
-LIBABIVER := 1
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/examples/ethtool/lib/Makefile b/examples/ethtool/lib/Makefile
index 9da7dc3ba2..47cad4a1bc 100644
--- a/examples/ethtool/lib/Makefile
+++ b/examples/ethtool/lib/Makefile
@@ -18,8 +18,6 @@ endif
 # library name
 LIB = librte_ethtool.a
 
-LIBABIVER := 1
-
 # all source are stored in SRC-Y
 SRCS-y := rte_ethtool.c
 
diff --git a/lib/librte_acl/Makefile b/lib/librte_acl/Makefile
index ea5edf00ab..f4332b0448 100644
--- a/lib/librte_acl/Makefile
+++ b/lib/librte_acl/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal
 
 EXPORT_MAP := rte_acl_version.map
 
-LIBABIVER := 2
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_ACL) += tb_mem.c
 
diff --git a/lib/librte_acl/meson.build b/lib/librte_acl/meson.build
index 98ece7d85f..d1e2c184cc 100644
--- a/lib/librte_acl/meson.build
+++ b/lib/librte_acl/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
 sources = files('acl_bld.c', 'acl_gen.c', 'acl_run_scalar.c',
 		'rte_acl.c', 'tb_mem.c')
 headers = files('rte_acl.h', 'rte_acl_osdep.h')
diff --git a/lib/librte_bbdev/Makefile b/lib/librte_bbdev/Makefile
index 1451adb25d..cdabf64f47 100644
--- a/lib/librte_bbdev/Makefile
+++ b/lib/librte_bbdev/Makefile
@@ -6,9 +6,6 @@ include $(RTE_SDK)/mk/rte.vars.mk
 # library name
 LIB = librte_bbdev.a
 
-# library version
-LIBABIVER := 1
-
 # build flags
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
diff --git a/lib/librte_bitratestats/Makefile b/lib/librte_bitratestats/Makefile
index 59318388dd..4862c44b83 100644
--- a/lib/librte_bitratestats/Makefile
+++ b/lib/librte_bitratestats/Makefile
@@ -11,8 +11,6 @@ LDLIBS += -lrte_eal -lrte_metrics -lrte_ethdev
 
 EXPORT_MAP := rte_bitratestats_version.map
 
-LIBABIVER := 2
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_BITRATE) := rte_bitrate.c
 
diff --git a/lib/librte_bitratestats/meson.build b/lib/librte_bitratestats/meson.build
index c35b62b3dc..ede7e0a579 100644
--- a/lib/librte_bitratestats/meson.build
+++ b/lib/librte_bitratestats/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
 sources = files('rte_bitrate.c')
 headers = files('rte_bitrate.h')
 deps += ['ethdev', 'metrics']
diff --git a/lib/librte_bpf/Makefile b/lib/librte_bpf/Makefile
index 419a5162e0..3a20f95e74 100644
--- a/lib/librte_bpf/Makefile
+++ b/lib/librte_bpf/Makefile
@@ -18,8 +18,6 @@ endif
 
 EXPORT_MAP := rte_bpf_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_BPF) += bpf.c
 SRCS-$(CONFIG_RTE_LIBRTE_BPF) += bpf_exec.c
diff --git a/lib/librte_cfgfile/Makefile b/lib/librte_cfgfile/Makefile
index 2c7115f417..d3b08420ff 100644
--- a/lib/librte_cfgfile/Makefile
+++ b/lib/librte_cfgfile/Makefile
@@ -15,8 +15,6 @@ LDLIBS += -lrte_eal
 
 EXPORT_MAP := rte_cfgfile_version.map
 
-LIBABIVER := 2
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/lib/librte_cfgfile/meson.build b/lib/librte_cfgfile/meson.build
index d97b38bc6f..88eb819856 100644
--- a/lib/librte_cfgfile/meson.build
+++ b/lib/librte_cfgfile/meson.build
@@ -1,6 +1,5 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
 sources = files('rte_cfgfile.c')
 headers = files('rte_cfgfile.h')
diff --git a/lib/librte_cmdline/Makefile b/lib/librte_cmdline/Makefile
index 04057d7c67..5bcaecc338 100644
--- a/lib/librte_cmdline/Makefile
+++ b/lib/librte_cmdline/Makefile
@@ -11,8 +11,6 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API
 
 EXPORT_MAP := rte_cmdline_version.map
 
-LIBABIVER := 2
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) := cmdline.c
 SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_cirbuf.c
diff --git a/lib/librte_cmdline/meson.build b/lib/librte_cmdline/meson.build
index 07334c1b09..a7dd319664 100644
--- a/lib/librte_cmdline/meson.build
+++ b/lib/librte_cmdline/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
 allow_experimental_apis = true
 sources = files('cmdline.c',
 	'cmdline_cirbuf.c',
diff --git a/lib/librte_compressdev/Makefile b/lib/librte_compressdev/Makefile
index 7ef89e6130..112cdc5b28 100644
--- a/lib/librte_compressdev/Makefile
+++ b/lib/librte_compressdev/Makefile
@@ -6,9 +6,6 @@ include $(RTE_SDK)/mk/rte.vars.mk
 # library name
 LIB = librte_compressdev.a
 
-# library version
-LIBABIVER := 1
-
 # build flags
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
diff --git a/lib/librte_cryptodev/Makefile b/lib/librte_cryptodev/Makefile
index 55d352a23a..7fac49afa3 100644
--- a/lib/librte_cryptodev/Makefile
+++ b/lib/librte_cryptodev/Makefile
@@ -6,9 +6,6 @@ include $(RTE_SDK)/mk/rte.vars.mk
 # library name
 LIB = librte_cryptodev.a
 
-# library version
-LIBABIVER := 8
-
 # build flags
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
diff --git a/lib/librte_cryptodev/meson.build b/lib/librte_cryptodev/meson.build
index 0a2275d75b..49bae03a88 100644
--- a/lib/librte_cryptodev/meson.build
+++ b/lib/librte_cryptodev/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017-2019 Intel Corporation
 
-version = 8
 allow_experimental_apis = true
 sources = files('rte_cryptodev.c', 'rte_cryptodev_pmd.c')
 headers = files('rte_cryptodev.h',
diff --git a/lib/librte_distributor/Makefile b/lib/librte_distributor/Makefile
index 0ef80dcff4..a687f4a0f0 100644
--- a/lib/librte_distributor/Makefile
+++ b/lib/librte_distributor/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal -lrte_mbuf -lrte_ethdev
 
 EXPORT_MAP := rte_distributor_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_v20.c
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor.c
diff --git a/lib/librte_eal/freebsd/eal/Makefile b/lib/librte_eal/freebsd/eal/Makefile
index f530f568b6..b160b57906 100644
--- a/lib/librte_eal/freebsd/eal/Makefile
+++ b/lib/librte_eal/freebsd/eal/Makefile
@@ -22,8 +22,6 @@ LDLIBS += -lrte_kvargs
 
 EXPORT_MAP := ../../rte_eal_version.map
 
-LIBABIVER := 12
-
 # specific to freebsd exec-env
 SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) := eal.c
 SRCS-$(CONFIG_RTE_EXEC_ENV_FREEBSD) += eal_cpuflags.c
diff --git a/lib/librte_eal/linux/eal/Makefile b/lib/librte_eal/linux/eal/Makefile
index 7628e57119..e70cf104a4 100644
--- a/lib/librte_eal/linux/eal/Makefile
+++ b/lib/librte_eal/linux/eal/Makefile
@@ -10,8 +10,6 @@ ARCH_DIR ?= $(RTE_ARCH)
 EXPORT_MAP := ../../rte_eal_version.map
 VPATH += $(RTE_SDK)/lib/librte_eal/common/arch/$(ARCH_DIR)
 
-LIBABIVER := 12
-
 VPATH += $(RTE_SDK)/lib/librte_eal/common
 
 CFLAGS += -DALLOW_EXPERIMENTAL_API
diff --git a/lib/librte_efd/Makefile b/lib/librte_efd/Makefile
index 5f5fcfcea2..2dc97132e0 100644
--- a/lib/librte_efd/Makefile
+++ b/lib/librte_efd/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal -lrte_ring -lrte_hash
 
 EXPORT_MAP := rte_efd_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_EFD) := rte_efd.c
 
diff --git a/lib/librte_ethdev/Makefile b/lib/librte_ethdev/Makefile
index 0efcdfa64d..b627e4e23b 100644
--- a/lib/librte_ethdev/Makefile
+++ b/lib/librte_ethdev/Makefile
@@ -16,8 +16,6 @@ LDLIBS += -lrte_mbuf -lrte_kvargs -lrte_meter
 
 EXPORT_MAP := rte_ethdev_version.map
 
-LIBABIVER := 13
-
 SRCS-y += ethdev_private.c
 SRCS-y += rte_ethdev.c
 SRCS-y += rte_class_eth.c
diff --git a/lib/librte_ethdev/meson.build b/lib/librte_ethdev/meson.build
index c22cf81401..3537f22f59 100644
--- a/lib/librte_ethdev/meson.build
+++ b/lib/librte_ethdev/meson.build
@@ -2,7 +2,6 @@
 # Copyright(c) 2017 Intel Corporation
 
 name = 'ethdev'
-version = 13
 allow_experimental_apis = true
 sources = files('ethdev_private.c',
 	'ethdev_profile.c',
diff --git a/lib/librte_eventdev/Makefile b/lib/librte_eventdev/Makefile
index 9e6a99aa15..1052ccdbb5 100644
--- a/lib/librte_eventdev/Makefile
+++ b/lib/librte_eventdev/Makefile
@@ -7,9 +7,6 @@ include $(RTE_SDK)/mk/rte.vars.mk
 # library name
 LIB = librte_eventdev.a
 
-# library version
-LIBABIVER := 8
-
 # build flags
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += -O3
diff --git a/lib/librte_eventdev/meson.build b/lib/librte_eventdev/meson.build
index 9ba6c0393b..02ac61ad2c 100644
--- a/lib/librte_eventdev/meson.build
+++ b/lib/librte_eventdev/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 8
 allow_experimental_apis = true
 
 if is_linux
diff --git a/lib/librte_fib/Makefile b/lib/librte_fib/Makefile
index 4abd80be68..7773427d19 100644
--- a/lib/librte_fib/Makefile
+++ b/lib/librte_fib/Makefile
@@ -14,8 +14,6 @@ LDLIBS += -lrte_eal -lrte_rib
 
 EXPORT_MAP := rte_fib_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_FIB) := rte_fib.c rte_fib6.c dir24_8.c trie.c
 
diff --git a/lib/librte_flow_classify/Makefile b/lib/librte_flow_classify/Makefile
index fe9fc47ab6..34298af1a4 100644
--- a/lib/librte_flow_classify/Makefile
+++ b/lib/librte_flow_classify/Makefile
@@ -12,8 +12,6 @@ CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)
 
 EXPORT_MAP := rte_flow_classify_version.map
 
-LIBABIVER := 1
-
 LDLIBS += -lrte_eal -lrte_ethdev -lrte_net -lrte_table -lrte_acl
 
 # all source are stored in SRCS-y
diff --git a/lib/librte_gro/Makefile b/lib/librte_gro/Makefile
index bec248f922..e848687acd 100644
--- a/lib/librte_gro/Makefile
+++ b/lib/librte_gro/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal -lrte_mbuf -lrte_ethdev -lrte_net
 
 EXPORT_MAP := rte_gro_version.map
 
-LIBABIVER := 1
-
 # source files
 SRCS-$(CONFIG_RTE_LIBRTE_GRO) += rte_gro.c
 SRCS-$(CONFIG_RTE_LIBRTE_GRO) += gro_tcp4.c
diff --git a/lib/librte_gso/Makefile b/lib/librte_gso/Makefile
index 1fac53a8f4..a34846e920 100644
--- a/lib/librte_gso/Makefile
+++ b/lib/librte_gso/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_mempool
 
 EXPORT_MAP := rte_gso_version.map
 
-LIBABIVER := 1
-
 #source files
 SRCS-$(CONFIG_RTE_LIBRTE_GSO) += rte_gso.c
 SRCS-$(CONFIG_RTE_LIBRTE_GSO) += gso_common.c
diff --git a/lib/librte_hash/Makefile b/lib/librte_hash/Makefile
index 5669d83f45..9b36097f47 100644
--- a/lib/librte_hash/Makefile
+++ b/lib/librte_hash/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal -lrte_ring
 
 EXPORT_MAP := rte_hash_version.map
 
-LIBABIVER := 2
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_HASH) := rte_cuckoo_hash.c
 SRCS-$(CONFIG_RTE_LIBRTE_HASH) += rte_fbk_hash.c
diff --git a/lib/librte_hash/meson.build b/lib/librte_hash/meson.build
index ebf70de890..5d02b3084f 100644
--- a/lib/librte_hash/meson.build
+++ b/lib/librte_hash/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
 headers = files('rte_cmp_arm64.h',
 	'rte_cmp_x86.h',
 	'rte_crc_arm64.h',
diff --git a/lib/librte_ip_frag/Makefile b/lib/librte_ip_frag/Makefile
index 4c3dc4d375..6b80d9f1f2 100644
--- a/lib/librte_ip_frag/Makefile
+++ b/lib/librte_ip_frag/Makefile
@@ -13,8 +13,6 @@ LDLIBS += -lrte_hash
 
 EXPORT_MAP := rte_ip_frag_version.map
 
-LIBABIVER := 1
-
 #source files
 SRCS-$(CONFIG_RTE_LIBRTE_IP_FRAG) += rte_ipv4_fragmentation.c
 SRCS-$(CONFIG_RTE_LIBRTE_IP_FRAG) += rte_ipv6_fragmentation.c
diff --git a/lib/librte_ipsec/Makefile b/lib/librte_ipsec/Makefile
index 161ea9e3d9..f74e8a9045 100644
--- a/lib/librte_ipsec/Makefile
+++ b/lib/librte_ipsec/Makefile
@@ -14,8 +14,6 @@ LDLIBS += -lrte_cryptodev -lrte_security -lrte_hash
 
 EXPORT_MAP := rte_ipsec_version.map
 
-LIBABIVER := 2
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_IPSEC) += esp_inb.c
 SRCS-$(CONFIG_RTE_LIBRTE_IPSEC) += esp_outb.c
diff --git a/lib/librte_ipsec/meson.build b/lib/librte_ipsec/meson.build
index e8604dadd9..70358526b0 100644
--- a/lib/librte_ipsec/meson.build
+++ b/lib/librte_ipsec/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2018 Intel Corporation
 
-version = 2
 allow_experimental_apis = true
 
 sources = files('esp_inb.c', 'esp_outb.c', 'sa.c', 'ses.c', 'ipsec_sad.c')
diff --git a/lib/librte_jobstats/Makefile b/lib/librte_jobstats/Makefile
index 35e788f7fc..b30d046829 100644
--- a/lib/librte_jobstats/Makefile
+++ b/lib/librte_jobstats/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal
 
 EXPORT_MAP := rte_jobstats_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_JOBSTATS) := rte_jobstats.c
 
diff --git a/lib/librte_kni/Makefile b/lib/librte_kni/Makefile
index cbd6599ec2..9d440aa135 100644
--- a/lib/librte_kni/Makefile
+++ b/lib/librte_kni/Makefile
@@ -11,8 +11,6 @@ LDLIBS += -lrte_eal -lrte_mempool -lrte_mbuf -lrte_ethdev
 
 EXPORT_MAP := rte_kni_version.map
 
-LIBABIVER := 2
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_KNI) := rte_kni.c
 
diff --git a/lib/librte_kni/meson.build b/lib/librte_kni/meson.build
index 41fa2e39bb..963eae6fe0 100644
--- a/lib/librte_kni/meson.build
+++ b/lib/librte_kni/meson.build
@@ -5,7 +5,6 @@ if not is_linux or not dpdk_conf.get('RTE_ARCH_64')
 	build = false
 	reason = 'only supported on 64-bit linux'
 endif
-version = 2
 sources = files('rte_kni.c')
 headers = files('rte_kni.h')
 deps += ['ethdev', 'pci']
diff --git a/lib/librte_kvargs/Makefile b/lib/librte_kvargs/Makefile
index 8759395478..419be8bd7c 100644
--- a/lib/librte_kvargs/Makefile
+++ b/lib/librte_kvargs/Makefile
@@ -11,8 +11,6 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_eal/common/include
 
 EXPORT_MAP := rte_kvargs_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_KVARGS) := rte_kvargs.c
 
diff --git a/lib/librte_kvargs/meson.build b/lib/librte_kvargs/meson.build
index ecaedf5a59..b746516965 100644
--- a/lib/librte_kvargs/meson.build
+++ b/lib/librte_kvargs/meson.build
@@ -3,6 +3,5 @@
 
 includes = [global_inc]
 
-version = 1
 sources = files('rte_kvargs.c')
 headers = files('rte_kvargs.h')
diff --git a/lib/librte_latencystats/Makefile b/lib/librte_latencystats/Makefile
index ae0dbd8f06..b19e0b1788 100644
--- a/lib/librte_latencystats/Makefile
+++ b/lib/librte_latencystats/Makefile
@@ -13,8 +13,6 @@ LDLIBS += -lrte_eal -lrte_metrics -lrte_ethdev -lrte_mbuf
 
 EXPORT_MAP := rte_latencystats_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_LATENCY_STATS) := rte_latencystats.c
 
diff --git a/lib/librte_lpm/Makefile b/lib/librte_lpm/Makefile
index a7946a1c52..d682785b63 100644
--- a/lib/librte_lpm/Makefile
+++ b/lib/librte_lpm/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal -lrte_hash
 
 EXPORT_MAP := rte_lpm_version.map
 
-LIBABIVER := 2
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_LPM) := rte_lpm.c rte_lpm6.c
 
diff --git a/lib/librte_lpm/meson.build b/lib/librte_lpm/meson.build
index 4e3920660b..27ce45b531 100644
--- a/lib/librte_lpm/meson.build
+++ b/lib/librte_lpm/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
 sources = files('rte_lpm.c', 'rte_lpm6.c')
 headers = files('rte_lpm.h', 'rte_lpm6.h')
 # since header files have different names, we can install all vector headers
diff --git a/lib/librte_mbuf/Makefile b/lib/librte_mbuf/Makefile
index 019c8dd8ff..9f6e6387f9 100644
--- a/lib/librte_mbuf/Makefile
+++ b/lib/librte_mbuf/Makefile
@@ -13,8 +13,6 @@ LDLIBS += -lrte_eal -lrte_mempool
 
 EXPORT_MAP := rte_mbuf_version.map
 
-LIBABIVER := 5
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_MBUF) := rte_mbuf.c rte_mbuf_ptype.c rte_mbuf_pool_ops.c
 SRCS-$(CONFIG_RTE_LIBRTE_MBUF) += rte_mbuf_dyn.c
diff --git a/lib/librte_mbuf/meson.build b/lib/librte_mbuf/meson.build
index 59fd07224d..d9b53b6ae3 100644
--- a/lib/librte_mbuf/meson.build
+++ b/lib/librte_mbuf/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 5
 sources = files('rte_mbuf.c', 'rte_mbuf_ptype.c', 'rte_mbuf_pool_ops.c',
 	'rte_mbuf_dyn.c')
 headers = files('rte_mbuf.h', 'rte_mbuf_core.h',
diff --git a/lib/librte_member/Makefile b/lib/librte_member/Makefile
index e9580c9679..ef9e2faeaf 100644
--- a/lib/librte_member/Makefile
+++ b/lib/librte_member/Makefile
@@ -14,8 +14,6 @@ LDLIBS += -lrte_eal -lrte_hash
 
 EXPORT_MAP := rte_member_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_MEMBER) +=  rte_member.c rte_member_ht.c rte_member_vbf.c
 # install includes
diff --git a/lib/librte_mempool/Makefile b/lib/librte_mempool/Makefile
index 20bf63fbca..a5649050b1 100644
--- a/lib/librte_mempool/Makefile
+++ b/lib/librte_mempool/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal -lrte_ring
 
 EXPORT_MAP := rte_mempool_version.map
 
-LIBABIVER := 5
-
 # memseg walk is not yet part of stable API
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 
diff --git a/lib/librte_mempool/meson.build b/lib/librte_mempool/meson.build
index 38d7ae8905..f8710b61bc 100644
--- a/lib/librte_mempool/meson.build
+++ b/lib/librte_mempool/meson.build
@@ -11,7 +11,6 @@ foreach flag: extra_flags
 	endif
 endforeach
 
-version = 5
 sources = files('rte_mempool.c', 'rte_mempool_ops.c',
 		'rte_mempool_ops_default.c')
 headers = files('rte_mempool.h')
diff --git a/lib/librte_meter/Makefile b/lib/librte_meter/Makefile
index 79ad79744f..48366e82b0 100644
--- a/lib/librte_meter/Makefile
+++ b/lib/librte_meter/Makefile
@@ -16,8 +16,6 @@ LDLIBS += -lrte_eal
 
 EXPORT_MAP := rte_meter_version.map
 
-LIBABIVER := 3
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/lib/librte_meter/meson.build b/lib/librte_meter/meson.build
index 422123e203..646fd4d43f 100644
--- a/lib/librte_meter/meson.build
+++ b/lib/librte_meter/meson.build
@@ -1,6 +1,5 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 3
 sources = files('rte_meter.c')
 headers = files('rte_meter.h')
diff --git a/lib/librte_metrics/Makefile b/lib/librte_metrics/Makefile
index 20e242f736..6b385f5cf1 100644
--- a/lib/librte_metrics/Makefile
+++ b/lib/librte_metrics/Makefile
@@ -11,8 +11,6 @@ LDLIBS += -lrte_eal
 
 EXPORT_MAP := rte_metrics_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_METRICS) := rte_metrics.c
 
diff --git a/lib/librte_net/Makefile b/lib/librte_net/Makefile
index c79f84d7c6..aabdf4879d 100644
--- a/lib/librte_net/Makefile
+++ b/lib/librte_net/Makefile
@@ -10,8 +10,6 @@ CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3
 LDLIBS += -lrte_mbuf -lrte_eal -lrte_mempool
 
 EXPORT_MAP := rte_net_version.map
-LIBABIVER := 1
-
 SRCS-$(CONFIG_RTE_LIBRTE_NET) := rte_net.c
 SRCS-$(CONFIG_RTE_LIBRTE_NET) += rte_net_crc.c
 SRCS-$(CONFIG_RTE_LIBRTE_NET) += rte_ether.c
diff --git a/lib/librte_net/meson.build b/lib/librte_net/meson.build
index 090284b688..208eee2dc2 100644
--- a/lib/librte_net/meson.build
+++ b/lib/librte_net/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 1
 allow_experimental_apis = true
 headers = files('rte_ip.h',
 	'rte_tcp.h',
diff --git a/lib/librte_pci/Makefile b/lib/librte_pci/Makefile
index 4c2682eadd..7943f30cab 100644
--- a/lib/librte_pci/Makefile
+++ b/lib/librte_pci/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal
 
 EXPORT_MAP := rte_pci_version.map
 
-LIBABIVER := 2
-
 SRCS-$(CONFIG_RTE_LIBRTE_PCI) += rte_pci.c
 
 SYMLINK-$(CONFIG_RTE_LIBRTE_PCI)-include += rte_pci.h
diff --git a/lib/librte_pci/meson.build b/lib/librte_pci/meson.build
index 376f04ac65..dd41cd5068 100644
--- a/lib/librte_pci/meson.build
+++ b/lib/librte_pci/meson.build
@@ -1,7 +1,5 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
-
 sources = files('rte_pci.c')
 headers = files('rte_pci.h')
diff --git a/lib/librte_pdump/Makefile b/lib/librte_pdump/Makefile
index 89593689a7..fde8ac92b8 100644
--- a/lib/librte_pdump/Makefile
+++ b/lib/librte_pdump/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal -lrte_mempool -lrte_mbuf -lrte_ethdev
 
 EXPORT_MAP := rte_pdump_version.map
 
-LIBABIVER := 3
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_PDUMP) := rte_pdump.c
 
diff --git a/lib/librte_pdump/meson.build b/lib/librte_pdump/meson.build
index b4b4f26c56..1173cdea34 100644
--- a/lib/librte_pdump/meson.build
+++ b/lib/librte_pdump/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 3
 sources = files('rte_pdump.c')
 headers = files('rte_pdump.h')
 allow_experimental_apis = true
diff --git a/lib/librte_pipeline/Makefile b/lib/librte_pipeline/Makefile
index cf265503f7..d2abb5f3ff 100644
--- a/lib/librte_pipeline/Makefile
+++ b/lib/librte_pipeline/Makefile
@@ -16,8 +16,6 @@ LDLIBS += -lrte_port -lrte_meter -lrte_sched -lrte_cryptodev
 
 EXPORT_MAP := rte_pipeline_version.map
 
-LIBABIVER := 3
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/lib/librte_pipeline/meson.build b/lib/librte_pipeline/meson.build
index 04e5f51798..be8a3536af 100644
--- a/lib/librte_pipeline/meson.build
+++ b/lib/librte_pipeline/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 3
 allow_experimental_apis = true
 sources = files('rte_pipeline.c', 'rte_port_in_action.c', 'rte_table_action.c')
 headers = files('rte_pipeline.h', 'rte_port_in_action.h', 'rte_table_action.h')
diff --git a/lib/librte_port/Makefile b/lib/librte_port/Makefile
index de6f0428a4..57d2aedbc5 100644
--- a/lib/librte_port/Makefile
+++ b/lib/librte_port/Makefile
@@ -21,8 +21,6 @@ CFLAGS += $(WERROR_FLAGS)
 
 EXPORT_MAP := rte_port_version.map
 
-LIBABIVER := 3
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/lib/librte_port/meson.build b/lib/librte_port/meson.build
index a232cb587b..0d5ede44a0 100644
--- a/lib/librte_port/meson.build
+++ b/lib/librte_port/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 3
 sources = files(
 	'rte_port_ethdev.c',
 	'rte_port_fd.c',
diff --git a/lib/librte_power/Makefile b/lib/librte_power/Makefile
index ab771528fe..9a6db07e5f 100644
--- a/lib/librte_power/Makefile
+++ b/lib/librte_power/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal -lrte_timer
 
 EXPORT_MAP := rte_power_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_POWER) := rte_power.c power_acpi_cpufreq.c
 SRCS-$(CONFIG_RTE_LIBRTE_POWER) += power_kvm_vm.c guest_channel.c
diff --git a/lib/librte_rawdev/Makefile b/lib/librte_rawdev/Makefile
index addb288d76..7dd1197dcd 100644
--- a/lib/librte_rawdev/Makefile
+++ b/lib/librte_rawdev/Makefile
@@ -6,9 +6,6 @@ include $(RTE_SDK)/mk/rte.vars.mk
 # library name
 LIB = librte_rawdev.a
 
-# library version
-LIBABIVER := 1
-
 # build flags
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
diff --git a/lib/librte_rcu/Makefile b/lib/librte_rcu/Makefile
index 6aa677bd12..c4bb28d779 100644
--- a/lib/librte_rcu/Makefile
+++ b/lib/librte_rcu/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal
 
 EXPORT_MAP := rte_rcu_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_RCU) := rte_rcu_qsbr.c
 
diff --git a/lib/librte_reorder/Makefile b/lib/librte_reorder/Makefile
index f19c624bd0..1914411d52 100644
--- a/lib/librte_reorder/Makefile
+++ b/lib/librte_reorder/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal -lrte_mempool -lrte_mbuf
 
 EXPORT_MAP := rte_reorder_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_REORDER) := rte_reorder.c
 
diff --git a/lib/librte_rib/Makefile b/lib/librte_rib/Makefile
index 6d861adb1c..4a1df4e06a 100644
--- a/lib/librte_rib/Makefile
+++ b/lib/librte_rib/Makefile
@@ -14,8 +14,6 @@ LDLIBS += -lrte_eal -lrte_mempool
 
 EXPORT_MAP := rte_rib_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_RIB) := rte_rib.c rte_rib6.c
 
diff --git a/lib/librte_ring/Makefile b/lib/librte_ring/Makefile
index 21a36770d4..22454b0848 100644
--- a/lib/librte_ring/Makefile
+++ b/lib/librte_ring/Makefile
@@ -11,8 +11,6 @@ LDLIBS += -lrte_eal
 
 EXPORT_MAP := rte_ring_version.map
 
-LIBABIVER := 2
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_RING) := rte_ring.c
 
diff --git a/lib/librte_ring/meson.build b/lib/librte_ring/meson.build
index ab8b0b469b..ca8a435e90 100644
--- a/lib/librte_ring/meson.build
+++ b/lib/librte_ring/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 2
 sources = files('rte_ring.c')
 headers = files('rte_ring.h',
 		'rte_ring_c11_mem.h',
diff --git a/lib/librte_sched/Makefile b/lib/librte_sched/Makefile
index 6e4a72d896..aee93a1205 100644
--- a/lib/librte_sched/Makefile
+++ b/lib/librte_sched/Makefile
@@ -18,8 +18,6 @@ LDLIBS += -lrte_timer
 
 EXPORT_MAP := rte_sched_version.map
 
-LIBABIVER := 4
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/lib/librte_sched/meson.build b/lib/librte_sched/meson.build
index 9f40a2368f..f85d64df81 100644
--- a/lib/librte_sched/meson.build
+++ b/lib/librte_sched/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 4
 sources = files('rte_sched.c', 'rte_red.c', 'rte_approx.c')
 headers = files('rte_sched.h', 'rte_sched_common.h',
 		'rte_red.h', 'rte_approx.h')
diff --git a/lib/librte_security/Makefile b/lib/librte_security/Makefile
index 6a268ee2a7..825eaeff8e 100644
--- a/lib/librte_security/Makefile
+++ b/lib/librte_security/Makefile
@@ -6,9 +6,6 @@ include $(RTE_SDK)/mk/rte.vars.mk
 # library name
 LIB = librte_security.a
 
-# library version
-LIBABIVER := 3
-
 # build flags
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
diff --git a/lib/librte_security/meson.build b/lib/librte_security/meson.build
index 6fed012731..5679c8b5c2 100644
--- a/lib/librte_security/meson.build
+++ b/lib/librte_security/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017-2019 Intel Corporation
 
-version = 3
 sources = files('rte_security.c')
 headers = files('rte_security.h', 'rte_security_driver.h')
 deps += ['mempool', 'cryptodev']
diff --git a/lib/librte_stack/Makefile b/lib/librte_stack/Makefile
index b5e5bed7cf..94ee48d4b3 100644
--- a/lib/librte_stack/Makefile
+++ b/lib/librte_stack/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal
 
 EXPORT_MAP := rte_stack_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_STACK) := rte_stack.c \
 				   rte_stack_std.c \
diff --git a/lib/librte_stack/meson.build b/lib/librte_stack/meson.build
index 46fce0c20f..f420a5c223 100644
--- a/lib/librte_stack/meson.build
+++ b/lib/librte_stack/meson.build
@@ -3,7 +3,6 @@
 
 allow_experimental_apis = true
 
-version = 1
 sources = files('rte_stack.c', 'rte_stack_std.c', 'rte_stack_lf.c')
 headers = files('rte_stack.h',
 		'rte_stack_std.h',
diff --git a/lib/librte_table/Makefile b/lib/librte_table/Makefile
index f935678a52..6ad8a6b17d 100644
--- a/lib/librte_table/Makefile
+++ b/lib/librte_table/Makefile
@@ -18,8 +18,6 @@ endif
 
 EXPORT_MAP := rte_table_version.map
 
-LIBABIVER := 3
-
 #
 # all source are stored in SRCS-y
 #
diff --git a/lib/librte_table/meson.build b/lib/librte_table/meson.build
index 6ae3cd6c03..71d1347687 100644
--- a/lib/librte_table/meson.build
+++ b/lib/librte_table/meson.build
@@ -1,7 +1,6 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-version = 3
 sources = files('rte_table_acl.c',
 		'rte_table_lpm.c',
 		'rte_table_lpm_ipv6.c',
diff --git a/lib/librte_telemetry/Makefile b/lib/librte_telemetry/Makefile
index 1b3fe05475..f364548556 100644
--- a/lib/librte_telemetry/Makefile
+++ b/lib/librte_telemetry/Makefile
@@ -17,8 +17,6 @@ LDLIBS += -ljansson
 
 EXPORT_MAP := rte_telemetry_version.map
 
-LIBABIVER := 1
-
 # library source files
 SRCS-$(CONFIG_RTE_LIBRTE_TELEMETRY) := rte_telemetry.c
 SRCS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += rte_telemetry_parser.c
diff --git a/lib/librte_timer/Makefile b/lib/librte_timer/Makefile
index 8ec63f455f..1c290b4c2d 100644
--- a/lib/librte_timer/Makefile
+++ b/lib/librte_timer/Makefile
@@ -12,8 +12,6 @@ LDLIBS += -lrte_eal
 
 EXPORT_MAP := rte_timer_version.map
 
-LIBABIVER := 1
-
 # all source are stored in SRCS-y
 SRCS-$(CONFIG_RTE_LIBRTE_TIMER) := rte_timer.c
 
diff --git a/lib/librte_vhost/Makefile b/lib/librte_vhost/Makefile
index 87ce1fb270..c5cf6632d7 100644
--- a/lib/librte_vhost/Makefile
+++ b/lib/librte_vhost/Makefile
@@ -8,8 +8,6 @@ LIB = librte_vhost.a
 
 EXPORT_MAP := rte_vhost_version.map
 
-LIBABIVER := 4
-
 CFLAGS += -DALLOW_EXPERIMENTAL_API
 CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) -O3
 CFLAGS += -I vhost_user
diff --git a/lib/librte_vhost/meson.build b/lib/librte_vhost/meson.build
index 00435777e2..ef7a5bced4 100644
--- a/lib/librte_vhost/meson.build
+++ b/lib/librte_vhost/meson.build
@@ -17,7 +17,6 @@ elif (toolchain == 'icc' and cc.version().version_compare('>=16.0.0'))
 endif
 dpdk_conf.set('RTE_LIBRTE_VHOST_POSTCOPY',
 	      cc.has_header('linux/userfaultfd.h'))
-version = 4
 allow_experimental_apis = true
 cflags += '-fno-strict-aliasing'
 sources = files('fd_man.c', 'iotlb.c', 'socket.c', 'vdpa.c',
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v8 04/12] buildtools: add script for updating symbols abi version
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
                               ` (3 preceding siblings ...)
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 03/12] build: remove individual library versions Anatoly Burakov
@ 2019-11-20 17:23             ` Anatoly Burakov
  2019-11-20 20:05               ` David Marchand
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 05/12] buildtools: add ABI update shell script Anatoly Burakov
                               ` (7 subsequent siblings)
  12 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-20 17:23 UTC (permalink / raw)
  To: dev
  Cc: Pawel Modrak, john.mcnamara, ray.kinsella, bruce.richardson,
	thomas, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Add a script that automatically merges all stable ABI's under one
ABI section with the new version, while leaving experimental
section exactly as it is.

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v7:
    - Do not remove stable ABI if it was empty
    
    v6:
    - Split map file generation function in two
    - Do not print stable ABI if it wasn't present
    
    v3:
    - Add comments to regex patterns
    
    v2:
    - Reworked script to be pep8-compliant and more reliable

 buildtools/update_version_map_abi.py | 175 +++++++++++++++++++++++++++
 1 file changed, 175 insertions(+)
 create mode 100755 buildtools/update_version_map_abi.py

diff --git a/buildtools/update_version_map_abi.py b/buildtools/update_version_map_abi.py
new file mode 100755
index 0000000000..87fed54653
--- /dev/null
+++ b/buildtools/update_version_map_abi.py
@@ -0,0 +1,175 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+"""
+A Python program that updates and merges all available stable ABI versions into
+one ABI version, while leaving experimental ABI exactly as it is. The intended
+ABI version is supplied via command-line parameter. This script is to be called
+from the buildtools/update_abi.sh utility.
+"""
+
+from __future__ import print_function
+import argparse
+import sys
+import re
+
+
+def __parse_map_file(f_in):
+    # match function name, followed by semicolon, followed by EOL, optionally
+    # with whitespace inbetween each item
+    func_line_regex = re.compile(r"\s*"
+                                 r"(?P<func>[a-zA-Z_0-9]+)"
+                                 r"\s*"
+                                 r";"
+                                 r"\s*"
+                                 r"$")
+    # match section name, followed by opening bracked, followed by EOL,
+    # optionally with whitespace inbetween each item
+    section_begin_regex = re.compile(r"\s*"
+                                     r"(?P<version>[a-zA-Z0-9_\.]+)"
+                                     r"\s*"
+                                     r"{"
+                                     r"\s*"
+                                     r"$")
+    # match closing bracket, optionally followed by section name (for when we
+    # inherit from another ABI version), followed by semicolon, followed by
+    # EOL, optionally with whitespace inbetween each item
+    section_end_regex = re.compile(r"\s*"
+                                   r"}"
+                                   r"\s*"
+                                   r"(?P<parent>[a-zA-Z0-9_\.]+)?"
+                                   r"\s*"
+                                   r";"
+                                   r"\s*"
+                                   r"$")
+
+    # for stable ABI, we don't care about which version introduced which
+    # function, we just flatten the list. there are dupes in certain files, so
+    # use a set instead of a list
+    stable_lines = set()
+    # copy experimental section as is
+    experimental_lines = []
+    in_experimental = False
+    has_stable = False
+
+    # gather all functions
+    for line in f_in:
+        # clean up the line
+        line = line.strip('\n').strip()
+
+        # is this an end of section?
+        match = section_end_regex.match(line)
+        if match:
+            # whatever section this was, it's not active any more
+            in_experimental = False
+            continue
+
+        # if we're in the middle of experimental section, we need to copy
+        # the section verbatim, so just add the line
+        if in_experimental:
+            experimental_lines += [line]
+            continue
+
+        # skip empty lines
+        if not line:
+            continue
+
+        # is this a beginning of a new section?
+        match = section_begin_regex.match(line)
+        if match:
+            cur_section = match.group("version")
+            # is it experimental?
+            in_experimental = cur_section == "EXPERIMENTAL"
+            if not in_experimental:
+                has_stable = True
+            continue
+
+        # is this a function?
+        match = func_line_regex.match(line)
+        if match:
+            stable_lines.add(match.group("func"))
+
+    return has_stable, stable_lines, experimental_lines
+
+
+def __generate_stable_abi(f_out, abi_version, lines):
+    # print ABI version header
+    print("DPDK_{} {{".format(abi_version), file=f_out)
+
+    # print global section if it exists
+    if lines:
+        print("\tglobal:", file=f_out)
+        # blank line
+        print(file=f_out)
+
+        # print all stable lines, alphabetically sorted
+        for line in sorted(lines):
+            print("\t{};".format(line), file=f_out)
+
+        # another blank line
+        print(file=f_out)
+
+    # print local section
+    print("\tlocal: *;", file=f_out)
+
+    # end stable version
+    print("};", file=f_out)
+
+
+def __generate_experimental_abi(f_out, lines):
+    # start experimental section
+    print("EXPERIMENTAL {", file=f_out)
+
+    # print all experimental lines as they were
+    for line in lines:
+        # don't print empty whitespace
+        if not line:
+            print("", file=f_out)
+        else:
+            print("\t{}".format(line), file=f_out)
+
+    # end section
+    print("};", file=f_out)
+
+
+def __main():
+    arg_parser = argparse.ArgumentParser(
+        description='Merge versions in linker version script.')
+
+    arg_parser.add_argument("map_file", type=str,
+                            help='path to linker version script file '
+                                 '(pattern: *version.map)')
+    arg_parser.add_argument("abi_version", type=str,
+                            help='target ABI version (pattern: MAJOR.MINOR)')
+
+    parsed = arg_parser.parse_args()
+
+    if not parsed.map_file.endswith('version.map'):
+        print("Invalid input file: {}".format(parsed.map_file),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    if not re.match(r"\d{1,2}\.\d{1,2}", parsed.abi_version):
+        print("Invalid ABI version: {}".format(parsed.abi_version),
+              file=sys.stderr)
+        arg_parser.print_help()
+        sys.exit(1)
+
+    with open(parsed.map_file) as f_in:
+        has_stable, stable_lines, experimental_lines = __parse_map_file(f_in)
+
+    with open(parsed.map_file, 'w') as f_out:
+        need_newline = has_stable and experimental_lines
+        if has_stable:
+            __generate_stable_abi(f_out, parsed.abi_version, stable_lines)
+        if need_newline:
+            # separate sections with a newline
+            print(file=f_out)
+        if experimental_lines:
+            __generate_experimental_abi(f_out, experimental_lines)
+
+
+if __name__ == "__main__":
+    __main()
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v8 05/12] buildtools: add ABI update shell script
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
                               ` (4 preceding siblings ...)
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 04/12] buildtools: add script for updating symbols abi version Anatoly Burakov
@ 2019-11-20 17:23             ` Anatoly Burakov
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 06/12] timer: remove deprecated code Anatoly Burakov
                               ` (6 subsequent siblings)
  12 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-20 17:23 UTC (permalink / raw)
  To: dev; +Cc: john.mcnamara, ray.kinsella, bruce.richardson, thomas, david.marchand

In order to facilitate mass updating of version files, add a shell
script that recurses into lib/ and drivers/ directories and calls
the ABI version update script.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v3:
    - Switch to sh rather than bash, and remove bash-isms
    - Address review comments
    
    v2:
    - Add this patch to split the shell script from previous commit
    - Fixup miscellaneous bugs

 buildtools/update-abi.sh | 46 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)
 create mode 100755 buildtools/update-abi.sh

diff --git a/buildtools/update-abi.sh b/buildtools/update-abi.sh
new file mode 100755
index 0000000000..15bc6feab1
--- /dev/null
+++ b/buildtools/update-abi.sh
@@ -0,0 +1,46 @@
+#!/bin/sh -e
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+abi_version=$1
+abi_version_file="./ABI_VERSION"
+update_path="lib drivers"
+
+# check ABI version format string
+check_abi_version() {
+      echo $1 | grep -q -e "^[[:digit:]]\{1,2\}\.[[:digit:]]\{1,2\}$"
+}
+
+if [ -z "$1" ]; then
+      # output to stderr
+      >&2 echo "Please provide ABI version"
+      exit 1
+fi
+
+# check version string format
+if ! check_abi_version $abi_version ; then
+      # output to stderr
+      >&2 echo "ABI version must be formatted as MAJOR.MINOR version"
+      exit 1
+fi
+
+if [ -n "$2" ]; then
+      abi_version_file=$2
+fi
+
+if [ -n "$3" ]; then
+      # drop $1 and $2
+      shift 2
+      # assign all other arguments as update paths
+      update_path=$@
+fi
+
+echo "New ABI version:" $abi_version
+echo "ABI_VERSION path:" $abi_version_file
+echo "Path to update:" $update_path
+
+echo $abi_version > $abi_version_file
+
+find $update_path -name  \*version.map -exec \
+      ./buildtools/update_version_map_abi.py {} \
+      $abi_version \; -print
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v8 06/12] timer: remove deprecated code
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
                               ` (5 preceding siblings ...)
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 05/12] buildtools: add ABI update shell script Anatoly Burakov
@ 2019-11-20 17:23             ` Anatoly Burakov
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 07/12] lpm: " Anatoly Burakov
                               ` (5 subsequent siblings)
  12 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-20 17:23 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, ray.kinsella, bruce.richardson, thomas,
	david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
---
 lib/librte_timer/rte_timer.c           | 100 +++----------------------
 lib/librte_timer/rte_timer.h           |  15 ----
 lib/librte_timer/rte_timer_version.map |   5 --
 3 files changed, 10 insertions(+), 110 deletions(-)

diff --git a/lib/librte_timer/rte_timer.c b/lib/librte_timer/rte_timer.c
index 381a9f43f8..ca88454ff6 100644
--- a/lib/librte_timer/rte_timer.c
+++ b/lib/librte_timer/rte_timer.c
@@ -68,9 +68,6 @@ static struct rte_timer_data *rte_timer_data_arr;
 static const uint32_t default_data_id;
 static uint32_t rte_timer_subsystem_initialized;
 
-/* For maintaining older interfaces for a period */
-static struct rte_timer_data default_timer_data;
-
 /* when debug is enabled, store some statistics */
 #ifdef RTE_LIBRTE_TIMER_DEBUG
 #define __TIMER_STAT_ADD(priv_timer, name, n) do {			\
@@ -131,30 +128,14 @@ rte_timer_data_dealloc(uint32_t id)
 	return 0;
 }
 
-void __vsym
-rte_timer_subsystem_init_v20(void)
-{
-	unsigned lcore_id;
-	struct priv_timer *priv_timer = default_timer_data.priv_timer;
-
-	/* since priv_timer is static, it's zeroed by default, so only init some
-	 * fields.
-	 */
-	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id ++) {
-		rte_spinlock_init(&priv_timer[lcore_id].list_lock);
-		priv_timer[lcore_id].prev_lcore = lcore_id;
-	}
-}
-VERSION_SYMBOL(rte_timer_subsystem_init, _v20, 2.0);
-
 /* Init the timer library. Allocate an array of timer data structs in shared
  * memory, and allocate the zeroth entry for use with original timer
  * APIs. Since the intersection of the sets of lcore ids in primary and
  * secondary processes should be empty, the zeroth entry can be shared by
  * multiple processes.
  */
-int __vsym
-rte_timer_subsystem_init_v1905(void)
+int
+rte_timer_subsystem_init(void)
 {
 	const struct rte_memzone *mz;
 	struct rte_timer_data *data;
@@ -209,9 +190,6 @@ rte_timer_subsystem_init_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_subsystem_init(void),
-		  rte_timer_subsystem_init_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_subsystem_init, _v1905, 19.05);
 
 void
 rte_timer_subsystem_finalize(void)
@@ -551,43 +529,14 @@ __rte_timer_reset(struct rte_timer *tim, uint64_t expire,
 }
 
 /* Reset and start the timer associated with the timer handle tim */
-int __vsym
-rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-		    enum rte_timer_type type, unsigned int tim_lcore,
-		    rte_timer_cb_t fct, void *arg)
-{
-	uint64_t cur_time = rte_get_timer_cycles();
-	uint64_t period;
-
-	if (unlikely((tim_lcore != (unsigned)LCORE_ID_ANY) &&
-			!(rte_lcore_is_enabled(tim_lcore) ||
-			  rte_lcore_has_role(tim_lcore, ROLE_SERVICE))))
-		return -1;
-
-	if (type == PERIODICAL)
-		period = ticks;
-	else
-		period = 0;
-
-	return __rte_timer_reset(tim,  cur_time + ticks, period, tim_lcore,
-			  fct, arg, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_reset, _v20, 2.0);
-
-int __vsym
-rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
+int
+rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		      enum rte_timer_type type, unsigned int tim_lcore,
 		      rte_timer_cb_t fct, void *arg)
 {
 	return rte_timer_alt_reset(default_data_id, tim, ticks, type,
 				   tim_lcore, fct, arg);
 }
-MAP_STATIC_SYMBOL(int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
-				      enum rte_timer_type type,
-				      unsigned int tim_lcore,
-				      rte_timer_cb_t fct, void *arg),
-		  rte_timer_reset_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_reset, _v1905, 19.05);
 
 int
 rte_timer_alt_reset(uint32_t timer_data_id, struct rte_timer *tim,
@@ -657,21 +606,11 @@ __rte_timer_stop(struct rte_timer *tim, int local_is_locked,
 }
 
 /* Stop the timer associated with the timer handle tim */
-int __vsym
-rte_timer_stop_v20(struct rte_timer *tim)
-{
-	return __rte_timer_stop(tim, 0, &default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_stop, _v20, 2.0);
-
-int __vsym
-rte_timer_stop_v1905(struct rte_timer *tim)
+int
+rte_timer_stop(struct rte_timer *tim)
 {
 	return rte_timer_alt_stop(default_data_id, tim);
 }
-MAP_STATIC_SYMBOL(int rte_timer_stop(struct rte_timer *tim),
-		  rte_timer_stop_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_stop, _v1905, 19.05);
 
 int
 rte_timer_alt_stop(uint32_t timer_data_id, struct rte_timer *tim)
@@ -817,15 +756,8 @@ __rte_timer_manage(struct rte_timer_data *timer_data)
 	priv_timer[lcore_id].running_tim = NULL;
 }
 
-void __vsym
-rte_timer_manage_v20(void)
-{
-	__rte_timer_manage(&default_timer_data);
-}
-VERSION_SYMBOL(rte_timer_manage, _v20, 2.0);
-
-int __vsym
-rte_timer_manage_v1905(void)
+int
+rte_timer_manage(void)
 {
 	struct rte_timer_data *timer_data;
 
@@ -835,8 +767,6 @@ rte_timer_manage_v1905(void)
 
 	return 0;
 }
-MAP_STATIC_SYMBOL(int rte_timer_manage(void), rte_timer_manage_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_manage, _v1905, 19.05);
 
 int
 rte_timer_alt_manage(uint32_t timer_data_id,
@@ -1074,21 +1004,11 @@ __rte_timer_dump_stats(struct rte_timer_data *timer_data __rte_unused, FILE *f)
 #endif
 }
 
-void __vsym
-rte_timer_dump_stats_v20(FILE *f)
-{
-	__rte_timer_dump_stats(&default_timer_data, f);
-}
-VERSION_SYMBOL(rte_timer_dump_stats, _v20, 2.0);
-
-int __vsym
-rte_timer_dump_stats_v1905(FILE *f)
+int
+rte_timer_dump_stats(FILE *f)
 {
 	return rte_timer_alt_dump_stats(default_data_id, f);
 }
-MAP_STATIC_SYMBOL(int rte_timer_dump_stats(FILE *f),
-		  rte_timer_dump_stats_v1905);
-BIND_DEFAULT_SYMBOL(rte_timer_dump_stats, _v1905, 19.05);
 
 int
 rte_timer_alt_dump_stats(uint32_t timer_data_id __rte_unused, FILE *f)
diff --git a/lib/librte_timer/rte_timer.h b/lib/librte_timer/rte_timer.h
index 05d287d8f2..9dc5fc3092 100644
--- a/lib/librte_timer/rte_timer.h
+++ b/lib/librte_timer/rte_timer.h
@@ -181,8 +181,6 @@ int rte_timer_data_dealloc(uint32_t id);
  *      subsystem
  */
 int rte_timer_subsystem_init(void);
-int rte_timer_subsystem_init_v1905(void);
-void rte_timer_subsystem_init_v20(void);
 
 /**
  * @warning
@@ -250,13 +248,6 @@ void rte_timer_init(struct rte_timer *tim);
 int rte_timer_reset(struct rte_timer *tim, uint64_t ticks,
 		    enum rte_timer_type type, unsigned tim_lcore,
 		    rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v1905(struct rte_timer *tim, uint64_t ticks,
-			  enum rte_timer_type type, unsigned int tim_lcore,
-			  rte_timer_cb_t fct, void *arg);
-int rte_timer_reset_v20(struct rte_timer *tim, uint64_t ticks,
-			enum rte_timer_type type, unsigned int tim_lcore,
-			rte_timer_cb_t fct, void *arg);
-
 
 /**
  * Loop until rte_timer_reset() succeeds.
@@ -313,8 +304,6 @@ rte_timer_reset_sync(struct rte_timer *tim, uint64_t ticks,
  *   - (-1): The timer is in the RUNNING or CONFIG state.
  */
 int rte_timer_stop(struct rte_timer *tim);
-int rte_timer_stop_v1905(struct rte_timer *tim);
-int rte_timer_stop_v20(struct rte_timer *tim);
 
 /**
  * Loop until rte_timer_stop() succeeds.
@@ -358,8 +347,6 @@ int rte_timer_pending(struct rte_timer *tim);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_manage(void);
-int rte_timer_manage_v1905(void);
-void rte_timer_manage_v20(void);
 
 /**
  * Dump statistics about timers.
@@ -371,8 +358,6 @@ void rte_timer_manage_v20(void);
  *   - -EINVAL: timer subsystem not yet initialized
  */
 int rte_timer_dump_stats(FILE *f);
-int rte_timer_dump_stats_v1905(FILE *f);
-void rte_timer_dump_stats_v20(FILE *f);
 
 /**
  * @warning
diff --git a/lib/librte_timer/rte_timer_version.map b/lib/librte_timer/rte_timer_version.map
index 72f75c8181..92c69b2e29 100644
--- a/lib/librte_timer/rte_timer_version.map
+++ b/lib/librte_timer/rte_timer_version.map
@@ -1,15 +1,10 @@
 DPDK_2.0 {
 	global:
 
-	rte_timer_dump_stats;
 	rte_timer_init;
-	rte_timer_manage;
 	rte_timer_pending;
-	rte_timer_reset;
 	rte_timer_reset_sync;
-	rte_timer_stop;
 	rte_timer_stop_sync;
-	rte_timer_subsystem_init;
 
 	local: *;
 };
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v8 07/12] lpm: remove deprecated code
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
                               ` (6 preceding siblings ...)
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 06/12] timer: remove deprecated code Anatoly Burakov
@ 2019-11-20 17:23             ` Anatoly Burakov
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 08/12] distributor: " Anatoly Burakov
                               ` (4 subsequent siblings)
  12 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-20 17:23 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, Bruce Richardson, Vladimir Medvedkin,
	john.mcnamara, ray.kinsella, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_lpm/rte_lpm.c           | 1010 ++--------------------------
 lib/librte_lpm/rte_lpm.h           |   88 ---
 lib/librte_lpm/rte_lpm6.c          |  140 +---
 lib/librte_lpm/rte_lpm6.h          |   25 -
 lib/librte_lpm/rte_lpm_version.map |   11 -
 5 files changed, 59 insertions(+), 1215 deletions(-)

diff --git a/lib/librte_lpm/rte_lpm.c b/lib/librte_lpm/rte_lpm.c
index 106916dc82..b78c487447 100644
--- a/lib/librte_lpm/rte_lpm.c
+++ b/lib/librte_lpm/rte_lpm.c
@@ -90,34 +90,8 @@ depth_to_range(uint8_t depth)
 /*
  * Find an existing lpm table and return a pointer to it.
  */
-struct rte_lpm_v20 * __vsym
-rte_lpm_find_existing_v20(const char *name)
-{
-	struct rte_lpm_v20 *l = NULL;
-	struct rte_tailq_entry *te;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_read_lock();
-	TAILQ_FOREACH(te, lpm_list, next) {
-		l = te->data;
-		if (strncmp(name, l->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-	rte_mcfg_tailq_read_unlock();
-
-	if (te == NULL) {
-		rte_errno = ENOENT;
-		return NULL;
-	}
-
-	return l;
-}
-VERSION_SYMBOL(rte_lpm_find_existing, _v20, 2.0);
-
-struct rte_lpm * __vsym
-rte_lpm_find_existing_v1604(const char *name)
+struct rte_lpm *
+rte_lpm_find_existing(const char *name)
 {
 	struct rte_lpm *l = NULL;
 	struct rte_tailq_entry *te;
@@ -140,88 +114,12 @@ rte_lpm_find_existing_v1604(const char *name)
 
 	return l;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_find_existing, _v1604, 16.04);
-MAP_STATIC_SYMBOL(struct rte_lpm *rte_lpm_find_existing(const char *name),
-		rte_lpm_find_existing_v1604);
 
 /*
  * Allocates memory for LPM object
  */
-struct rte_lpm_v20 * __vsym
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules,
-		__rte_unused int flags)
-{
-	char mem_name[RTE_LPM_NAMESIZE];
-	struct rte_lpm_v20 *lpm = NULL;
-	struct rte_tailq_entry *te;
-	uint32_t mem_size;
-	struct rte_lpm_list *lpm_list;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	RTE_BUILD_BUG_ON(sizeof(struct rte_lpm_tbl_entry_v20) != 2);
-
-	/* Check user arguments. */
-	if ((name == NULL) || (socket_id < -1) || (max_rules == 0)) {
-		rte_errno = EINVAL;
-		return NULL;
-	}
-
-	snprintf(mem_name, sizeof(mem_name), "LPM_%s", name);
-
-	/* Determine the amount of memory to allocate. */
-	mem_size = sizeof(*lpm) + (sizeof(lpm->rules_tbl[0]) * max_rules);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* guarantee there's no existing */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		lpm = te->data;
-		if (strncmp(name, lpm->name, RTE_LPM_NAMESIZE) == 0)
-			break;
-	}
-
-	if (te != NULL) {
-		lpm = NULL;
-		rte_errno = EEXIST;
-		goto exit;
-	}
-
-	/* allocate tailq entry */
-	te = rte_zmalloc("LPM_TAILQ_ENTRY", sizeof(*te), 0);
-	if (te == NULL) {
-		RTE_LOG(ERR, LPM, "Failed to allocate tailq entry\n");
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Allocate memory to store the LPM data structures. */
-	lpm = rte_zmalloc_socket(mem_name, mem_size,
-			RTE_CACHE_LINE_SIZE, socket_id);
-	if (lpm == NULL) {
-		RTE_LOG(ERR, LPM, "LPM memory allocation failed\n");
-		rte_free(te);
-		rte_errno = ENOMEM;
-		goto exit;
-	}
-
-	/* Save user arguments. */
-	lpm->max_rules = max_rules;
-	strlcpy(lpm->name, name, sizeof(lpm->name));
-
-	te->data = lpm;
-
-	TAILQ_INSERT_TAIL(lpm_list, te, next);
-
-exit:
-	rte_mcfg_tailq_write_unlock();
-
-	return lpm;
-}
-VERSION_SYMBOL(rte_lpm_create, _v20, 2.0);
-
-struct rte_lpm * __vsym
-rte_lpm_create_v1604(const char *name, int socket_id,
+struct rte_lpm *
+rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config)
 {
 	char mem_name[RTE_LPM_NAMESIZE];
@@ -321,45 +219,12 @@ rte_lpm_create_v1604(const char *name, int socket_id,
 
 	return lpm;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_create, _v1604, 16.04);
-MAP_STATIC_SYMBOL(
-	struct rte_lpm *rte_lpm_create(const char *name, int socket_id,
-			const struct rte_lpm_config *config), rte_lpm_create_v1604);
 
 /*
  * Deallocates memory for given LPM table.
  */
-void __vsym
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm)
-{
-	struct rte_lpm_list *lpm_list;
-	struct rte_tailq_entry *te;
-
-	/* Check user arguments. */
-	if (lpm == NULL)
-		return;
-
-	lpm_list = RTE_TAILQ_CAST(rte_lpm_tailq.head, rte_lpm_list);
-
-	rte_mcfg_tailq_write_lock();
-
-	/* find our tailq entry */
-	TAILQ_FOREACH(te, lpm_list, next) {
-		if (te->data == (void *) lpm)
-			break;
-	}
-	if (te != NULL)
-		TAILQ_REMOVE(lpm_list, te, next);
-
-	rte_mcfg_tailq_write_unlock();
-
-	rte_free(lpm);
-	rte_free(te);
-}
-VERSION_SYMBOL(rte_lpm_free, _v20, 2.0);
-
-void __vsym
-rte_lpm_free_v1604(struct rte_lpm *lpm)
+void
+rte_lpm_free(struct rte_lpm *lpm)
 {
 	struct rte_lpm_list *lpm_list;
 	struct rte_tailq_entry *te;
@@ -387,9 +252,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm)
 	rte_free(lpm);
 	rte_free(te);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_free, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
-		rte_lpm_free_v1604);
 
 /*
  * Adds a rule to the rule table.
@@ -402,79 +264,7 @@ MAP_STATIC_SYMBOL(void rte_lpm_free(struct rte_lpm *lpm),
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-	uint8_t next_hop)
-{
-	uint32_t rule_gindex, rule_index, last_rule;
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	/* Scan through rule group to see if rule already exists. */
-	if (lpm->rule_info[depth - 1].used_rules > 0) {
-
-		/* rule_gindex stands for rule group index. */
-		rule_gindex = lpm->rule_info[depth - 1].first_rule;
-		/* Initialise rule_index to point to start of rule group. */
-		rule_index = rule_gindex;
-		/* Last rule = Last used rule in this rule group. */
-		last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-		for (; rule_index < last_rule; rule_index++) {
-
-			/* If rule already exists update its next_hop and return. */
-			if (lpm->rules_tbl[rule_index].ip == ip_masked) {
-				lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-				return rule_index;
-			}
-		}
-
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-	} else {
-		/* Calculate the position in which the rule will be stored. */
-		rule_index = 0;
-
-		for (i = depth - 1; i > 0; i--) {
-			if (lpm->rule_info[i - 1].used_rules > 0) {
-				rule_index = lpm->rule_info[i - 1].first_rule
-						+ lpm->rule_info[i - 1].used_rules;
-				break;
-			}
-		}
-		if (rule_index == lpm->max_rules)
-			return -ENOSPC;
-
-		lpm->rule_info[depth - 1].first_rule = rule_index;
-	}
-
-	/* Make room for the new rule in the array. */
-	for (i = RTE_LPM_MAX_DEPTH; i > depth; i--) {
-		if (lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules == lpm->max_rules)
-			return -ENOSPC;
-
-		if (lpm->rule_info[i - 1].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i - 1].first_rule
-				+ lpm->rule_info[i - 1].used_rules]
-					= lpm->rules_tbl[lpm->rule_info[i - 1].first_rule];
-			lpm->rule_info[i - 1].first_rule++;
-		}
-	}
-
-	/* Add the new rule. */
-	lpm->rules_tbl[rule_index].ip = ip_masked;
-	lpm->rules_tbl[rule_index].next_hop = next_hop;
-
-	/* Increment the used rules counter for this rule group. */
-	lpm->rule_info[depth - 1].used_rules++;
-
-	return rule_index;
-}
-
-static int32_t
-rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+rule_add(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	uint32_t next_hop)
 {
 	uint32_t rule_gindex, rule_index, last_rule;
@@ -550,30 +340,7 @@ rule_add_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static void
-rule_delete_v20(struct rte_lpm_v20 *lpm, int32_t rule_index, uint8_t depth)
-{
-	int i;
-
-	VERIFY_DEPTH(depth);
-
-	lpm->rules_tbl[rule_index] =
-			lpm->rules_tbl[lpm->rule_info[depth - 1].first_rule
-				+ lpm->rule_info[depth - 1].used_rules - 1];
-
-	for (i = depth; i < RTE_LPM_MAX_DEPTH; i++) {
-		if (lpm->rule_info[i].used_rules > 0) {
-			lpm->rules_tbl[lpm->rule_info[i].first_rule - 1] =
-				lpm->rules_tbl[lpm->rule_info[i].first_rule
-					+ lpm->rule_info[i].used_rules - 1];
-			lpm->rule_info[i].first_rule--;
-		}
-	}
-
-	lpm->rule_info[depth - 1].used_rules--;
-}
-
-static void
-rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
+rule_delete(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
 {
 	int i;
 
@@ -600,28 +367,7 @@ rule_delete_v1604(struct rte_lpm *lpm, int32_t rule_index, uint8_t depth)
  * NOTE: Valid range for depth parameter is 1 .. 32 inclusive.
  */
 static int32_t
-rule_find_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth)
-{
-	uint32_t rule_gindex, last_rule, rule_index;
-
-	VERIFY_DEPTH(depth);
-
-	rule_gindex = lpm->rule_info[depth - 1].first_rule;
-	last_rule = rule_gindex + lpm->rule_info[depth - 1].used_rules;
-
-	/* Scan used rules at given depth to find rule. */
-	for (rule_index = rule_gindex; rule_index < last_rule; rule_index++) {
-		/* If rule is found return the rule index. */
-		if (lpm->rules_tbl[rule_index].ip == ip_masked)
-			return rule_index;
-	}
-
-	/* If rule is not found return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
+rule_find(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
 {
 	uint32_t rule_gindex, last_rule, rule_index;
 
@@ -645,42 +391,7 @@ rule_find_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth)
  * Find, clean and allocate a tbl8.
  */
 static int32_t
-tbl8_alloc_v20(struct rte_lpm_tbl_entry_v20 *tbl8)
-{
-	uint32_t group_idx; /* tbl8 group index. */
-	struct rte_lpm_tbl_entry_v20 *tbl8_entry;
-
-	/* Scan through tbl8 to find a free (i.e. INVALID) tbl8 group. */
-	for (group_idx = 0; group_idx < RTE_LPM_TBL8_NUM_GROUPS;
-			group_idx++) {
-		tbl8_entry = &tbl8[group_idx * RTE_LPM_TBL8_GROUP_NUM_ENTRIES];
-		/* If a free tbl8 group is found clean it and set as VALID. */
-		if (!tbl8_entry->valid_group) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = INVALID,
-				.depth = 0,
-				.valid_group = VALID,
-			};
-			new_tbl8_entry.next_hop = 0;
-
-			memset(&tbl8_entry[0], 0,
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES *
-					sizeof(tbl8_entry[0]));
-
-			__atomic_store(tbl8_entry, &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-
-			/* Return group index for allocated tbl8 group. */
-			return group_idx;
-		}
-	}
-
-	/* If there are no tbl8 groups free then return error. */
-	return -ENOSPC;
-}
-
-static int32_t
-tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
+tbl8_alloc(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 {
 	uint32_t group_idx; /* tbl8 group index. */
 	struct rte_lpm_tbl_entry *tbl8_entry;
@@ -714,22 +425,7 @@ tbl8_alloc_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t number_tbl8s)
 }
 
 static void
-tbl8_free_v20(struct rte_lpm_tbl_entry_v20 *tbl8, uint32_t tbl8_group_start)
-{
-	/* Set tbl8 group invalid*/
-	struct rte_lpm_tbl_entry_v20 zero_tbl8_entry = {
-		.valid = INVALID,
-		.depth = 0,
-		.valid_group = INVALID,
-	};
-	zero_tbl8_entry.next_hop = 0;
-
-	__atomic_store(&tbl8[tbl8_group_start], &zero_tbl8_entry,
-			__ATOMIC_RELAXED);
-}
-
-static void
-tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
+tbl8_free(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 {
 	/* Set tbl8 group invalid*/
 	struct rte_lpm_tbl_entry zero_tbl8_entry = {0};
@@ -739,78 +435,7 @@ tbl8_free_v1604(struct rte_lpm_tbl_entry *tbl8, uint32_t tbl8_group_start)
 }
 
 static __rte_noinline int32_t
-add_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index, tbl24_range, tbl8_index, tbl8_group_end, i, j;
-
-	/* Calculate the index into Table24. */
-	tbl24_index = ip >> 8;
-	tbl24_range = depth_to_range(depth);
-
-	for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-		/*
-		 * For invalid OR valid and non-extended tbl 24 entries set
-		 * entry.
-		 */
-		if (!lpm->tbl24[i].valid || (lpm->tbl24[i].valid_group == 0 &&
-				lpm->tbl24[i].depth <= depth)) {
-
-			struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.valid = VALID,
-				.valid_group = 0,
-				.depth = depth,
-			};
-			new_tbl24_entry.next_hop = next_hop;
-
-			/* Setting tbl24 entry in one go to avoid race
-			 * conditions
-			 */
-			__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-					__ATOMIC_RELEASE);
-
-			continue;
-		}
-
-		if (lpm->tbl24[i].valid_group == 1) {
-			/* If tbl24 entry is valid and extended calculate the
-			 *  index into tbl8.
-			 */
-			tbl8_index = lpm->tbl24[i].group_idx *
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-			tbl8_group_end = tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-			for (j = tbl8_index; j < tbl8_group_end; j++) {
-				if (!lpm->tbl8[j].valid ||
-						lpm->tbl8[j].depth <= depth) {
-					struct rte_lpm_tbl_entry_v20
-						new_tbl8_entry = {
-						.valid = VALID,
-						.valid_group = VALID,
-						.depth = depth,
-					};
-					new_tbl8_entry.next_hop = next_hop;
-
-					/*
-					 * Setting tbl8 entry in one go to avoid
-					 * race conditions
-					 */
-					__atomic_store(&lpm->tbl8[j],
-						&new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-					continue;
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+add_depth_small(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -882,150 +507,7 @@ add_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 }
 
 static __rte_noinline int32_t
-add_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked, uint8_t depth,
-		uint8_t next_hop)
-{
-	uint32_t tbl24_index;
-	int32_t tbl8_group_index, tbl8_group_start, tbl8_group_end, tbl8_index,
-		tbl8_range, i;
-
-	tbl24_index = (ip_masked >> 8);
-	tbl8_range = depth_to_range(depth);
-
-	if (!lpm->tbl24[tbl24_index].valid) {
-		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		/* Check tbl8 allocation was successful. */
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		/* Find index into tbl8 and range. */
-		tbl8_index = (tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES) +
-				(ip_masked & 0xFF);
-
-		/* Set tbl8 entry. */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.group_idx = (uint8_t)tbl8_group_index,
-			.valid = VALID,
-			.valid_group = 1,
-			.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} /* If valid entry but not extended calculate the index into Table8. */
-	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
-		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v20(lpm->tbl8);
-
-		if (tbl8_group_index < 0) {
-			return tbl8_group_index;
-		}
-
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_group_end = tbl8_group_start +
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-		/* Populate new tbl8 with tbl24 value. */
-		for (i = tbl8_group_start; i < tbl8_group_end; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = lpm->tbl24[tbl24_index].depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop =
-				lpm->tbl24[tbl24_index].next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		/* Insert new rule into the tbl8 entry. */
-		for (i = tbl8_index; i < tbl8_index + tbl8_range; i++) {
-			struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-				.valid = VALID,
-				.depth = depth,
-				.valid_group = lpm->tbl8[i].valid_group,
-			};
-			new_tbl8_entry.next_hop = next_hop;
-			__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-					__ATOMIC_RELAXED);
-		}
-
-		/*
-		 * Update tbl24 entry to point to new tbl8 entry. Note: The
-		 * ext_flag and tbl8_index need to be updated simultaneously,
-		 * so assign whole structure in one go.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-				.group_idx = (uint8_t)tbl8_group_index,
-				.valid = VALID,
-				.valid_group = 1,
-				.depth = 0,
-		};
-
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELEASE);
-
-	} else { /*
-		* If it is valid, extended entry calculate the index into tbl8.
-		*/
-		tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-		tbl8_group_start = tbl8_group_index *
-				RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-		tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-
-			if (!lpm->tbl8[i].valid ||
-					lpm->tbl8[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-					.valid = VALID,
-					.depth = depth,
-					.valid_group = lpm->tbl8[i].valid_group,
-				};
-				new_tbl8_entry.next_hop = next_hop;
-				/*
-				 * Setting tbl8 entry in one go to avoid race
-				 * condition
-				 */
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-
-				continue;
-			}
-		}
-	}
-
-	return 0;
-}
-
-static __rte_noinline int32_t
-add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
+add_depth_big(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 		uint32_t next_hop)
 {
 #define group_idx next_hop
@@ -1038,7 +520,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 
 	if (!lpm->tbl24[tbl24_index].valid) {
 		/* Search for a free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		/* Check tbl8 allocation was successful. */
 		if (tbl8_group_index < 0) {
@@ -1084,7 +566,7 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 	} /* If valid entry but not extended calculate the index into Table8. */
 	else if (lpm->tbl24[tbl24_index].valid_group == 0) {
 		/* Search for free tbl8 group. */
-		tbl8_group_index = tbl8_alloc_v1604(lpm->tbl8, lpm->number_tbl8s);
+		tbl8_group_index = tbl8_alloc(lpm->tbl8, lpm->number_tbl8s);
 
 		if (tbl8_group_index < 0) {
 			return tbl8_group_index;
@@ -1177,49 +659,8 @@ add_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked, uint8_t depth,
 /*
  * Add a route
  */
-int __vsym
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	int32_t rule_index, status = 0;
-	uint32_t ip_masked;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/* Add the rule to the rule table. */
-	rule_index = rule_add_v20(lpm, ip_masked, depth, next_hop);
-
-	/* If the is no space available for new rule return error. */
-	if (rule_index < 0) {
-		return rule_index;
-	}
-
-	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v20(lpm, ip_masked, depth, next_hop);
-	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v20(lpm, ip_masked, depth, next_hop);
-
-		/*
-		 * If add fails due to exhaustion of tbl8 extensions delete
-		 * rule that was added to rule table.
-		 */
-		if (status < 0) {
-			rule_delete_v20(lpm, rule_index, depth);
-
-			return status;
-		}
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_add, _v20, 2.0);
-
-int __vsym
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+int
+rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint32_t next_hop)
 {
 	int32_t rule_index, status = 0;
@@ -1232,7 +673,7 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	ip_masked = ip & depth_to_mask(depth);
 
 	/* Add the rule to the rule table. */
-	rule_index = rule_add_v1604(lpm, ip_masked, depth, next_hop);
+	rule_index = rule_add(lpm, ip_masked, depth, next_hop);
 
 	/* If the is no space available for new rule return error. */
 	if (rule_index < 0) {
@@ -1240,16 +681,16 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 	}
 
 	if (depth <= MAX_DEPTH_TBL24) {
-		status = add_depth_small_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_small(lpm, ip_masked, depth, next_hop);
 	} else { /* If depth > RTE_LPM_MAX_DEPTH_TBL24 */
-		status = add_depth_big_v1604(lpm, ip_masked, depth, next_hop);
+		status = add_depth_big(lpm, ip_masked, depth, next_hop);
 
 		/*
 		 * If add fails due to exhaustion of tbl8 extensions delete
 		 * rule that was added to rule table.
 		 */
 		if (status < 0) {
-			rule_delete_v1604(lpm, rule_index, depth);
+			rule_delete(lpm, rule_index, depth);
 
 			return status;
 		}
@@ -1257,42 +698,12 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_add, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_add(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t next_hop), rte_lpm_add_v1604);
 
 /*
  * Look for a rule in the high-level rules table
  */
-int __vsym
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop)
-{
-	uint32_t ip_masked;
-	int32_t rule_index;
-
-	/* Check user arguments. */
-	if ((lpm == NULL) ||
-		(next_hop == NULL) ||
-		(depth < 1) || (depth > RTE_LPM_MAX_DEPTH))
-		return -EINVAL;
-
-	/* Look for the rule using rule_find. */
-	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v20(lpm, ip_masked, depth);
-
-	if (rule_index >= 0) {
-		*next_hop = lpm->rules_tbl[rule_index].next_hop;
-		return 1;
-	}
-
-	/* If rule is not found return 0. */
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm_is_rule_present, _v20, 2.0);
-
-int __vsym
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
+int
+rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop)
 {
 	uint32_t ip_masked;
@@ -1306,7 +717,7 @@ uint32_t *next_hop)
 
 	/* Look for the rule using rule_find. */
 	ip_masked = ip & depth_to_mask(depth);
-	rule_index = rule_find_v1604(lpm, ip_masked, depth);
+	rule_index = rule_find(lpm, ip_masked, depth);
 
 	if (rule_index >= 0) {
 		*next_hop = lpm->rules_tbl[rule_index].next_hop;
@@ -1316,12 +727,9 @@ uint32_t *next_hop)
 	/* If rule is not found return 0. */
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_is_rule_present, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth, uint32_t *next_hop), rte_lpm_is_rule_present_v1604);
 
 static int32_t
-find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
+find_previous_rule(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 		uint8_t *sub_rule_depth)
 {
 	int32_t rule_index;
@@ -1331,7 +739,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
 		ip_masked = ip & depth_to_mask(prev_depth);
 
-		rule_index = rule_find_v20(lpm, ip_masked, prev_depth);
+		rule_index = rule_find(lpm, ip_masked, prev_depth);
 
 		if (rule_index >= 0) {
 			*sub_rule_depth = prev_depth;
@@ -1343,133 +751,7 @@ find_previous_rule_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
 }
 
 static int32_t
-find_previous_rule_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint8_t *sub_rule_depth)
-{
-	int32_t rule_index;
-	uint32_t ip_masked;
-	uint8_t prev_depth;
-
-	for (prev_depth = (uint8_t)(depth - 1); prev_depth > 0; prev_depth--) {
-		ip_masked = ip & depth_to_mask(prev_depth);
-
-		rule_index = rule_find_v1604(lpm, ip_masked, prev_depth);
-
-		if (rule_index >= 0) {
-			*sub_rule_depth = prev_depth;
-			return rule_index;
-		}
-	}
-
-	return -1;
-}
-
-static int32_t
-delete_depth_small_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_range, tbl24_index, tbl8_group_index, tbl8_index, i, j;
-
-	/* Calculate the range and index into Table24. */
-	tbl24_range = depth_to_range(depth);
-	tbl24_index = (ip_masked >> 8);
-
-	/*
-	 * Firstly check the sub_rule_index. A -1 indicates no replacement rule
-	 * and a positive number indicates a sub_rule_index.
-	 */
-	if (sub_rule_index < 0) {
-		/*
-		 * If no replacement rule exists then invalidate entries
-		 * associated with this rule.
-		 */
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				struct rte_lpm_tbl_entry_v20
-					zero_tbl24_entry = {
-						.valid = INVALID,
-						.depth = 0,
-						.valid_group = 0,
-					};
-					zero_tbl24_entry.next_hop = 0;
-				__atomic_store(&lpm->tbl24[i],
-					&zero_tbl24_entry, __ATOMIC_RELEASE);
-			} else if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						lpm->tbl8[j].valid = INVALID;
-				}
-			}
-		}
-	} else {
-		/*
-		 * If a replacement rule exists then modify entries
-		 * associated with this rule.
-		 */
-
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->rules_tbl[sub_rule_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = sub_rule_depth,
-		};
-
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.valid_group = VALID,
-			.depth = sub_rule_depth,
-		};
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-
-		for (i = tbl24_index; i < (tbl24_index + tbl24_range); i++) {
-
-			if (lpm->tbl24[i].valid_group == 0 &&
-					lpm->tbl24[i].depth <= depth) {
-				__atomic_store(&lpm->tbl24[i], &new_tbl24_entry,
-						__ATOMIC_RELEASE);
-			} else  if (lpm->tbl24[i].valid_group == 1) {
-				/*
-				 * If TBL24 entry is extended, then there has
-				 * to be a rule with depth >= 25 in the
-				 * associated TBL8 group.
-				 */
-
-				tbl8_group_index = lpm->tbl24[i].group_idx;
-				tbl8_index = tbl8_group_index *
-						RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-				for (j = tbl8_index; j < (tbl8_index +
-					RTE_LPM_TBL8_GROUP_NUM_ENTRIES); j++) {
-
-					if (lpm->tbl8[j].depth <= depth)
-						__atomic_store(&lpm->tbl8[j],
-							&new_tbl8_entry,
-							__ATOMIC_RELAXED);
-				}
-			}
-		}
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_small(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1576,7 +858,7 @@ delete_depth_small_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
  * thus can be recycled
  */
 static int32_t
-tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
+tbl8_recycle_check(struct rte_lpm_tbl_entry *tbl8,
 		uint32_t tbl8_group_start)
 {
 	uint32_t tbl8_group_end, i;
@@ -1623,140 +905,7 @@ tbl8_recycle_check_v20(struct rte_lpm_tbl_entry_v20 *tbl8,
 }
 
 static int32_t
-tbl8_recycle_check_v1604(struct rte_lpm_tbl_entry *tbl8,
-		uint32_t tbl8_group_start)
-{
-	uint32_t tbl8_group_end, i;
-	tbl8_group_end = tbl8_group_start + RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-
-	/*
-	 * Check the first entry of the given tbl8. If it is invalid we know
-	 * this tbl8 does not contain any rule with a depth < RTE_LPM_MAX_DEPTH
-	 *  (As they would affect all entries in a tbl8) and thus this table
-	 *  can not be recycled.
-	 */
-	if (tbl8[tbl8_group_start].valid) {
-		/*
-		 * If first entry is valid check if the depth is less than 24
-		 * and if so check the rest of the entries to verify that they
-		 * are all of this depth.
-		 */
-		if (tbl8[tbl8_group_start].depth <= MAX_DEPTH_TBL24) {
-			for (i = (tbl8_group_start + 1); i < tbl8_group_end;
-					i++) {
-
-				if (tbl8[i].depth !=
-						tbl8[tbl8_group_start].depth) {
-
-					return -EEXIST;
-				}
-			}
-			/* If all entries are the same return the tb8 index */
-			return tbl8_group_start;
-		}
-
-		return -EEXIST;
-	}
-	/*
-	 * If the first entry is invalid check if the rest of the entries in
-	 * the tbl8 are invalid.
-	 */
-	for (i = (tbl8_group_start + 1); i < tbl8_group_end; i++) {
-		if (tbl8[i].valid)
-			return -EEXIST;
-	}
-	/* If no valid entries are found then return -EINVAL. */
-	return -EINVAL;
-}
-
-static int32_t
-delete_depth_big_v20(struct rte_lpm_v20 *lpm, uint32_t ip_masked,
-	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
-{
-	uint32_t tbl24_index, tbl8_group_index, tbl8_group_start, tbl8_index,
-			tbl8_range, i;
-	int32_t tbl8_recycle_index;
-
-	/*
-	 * Calculate the index into tbl24 and range. Note: All depths larger
-	 * than MAX_DEPTH_TBL24 are associated with only one tbl24 entry.
-	 */
-	tbl24_index = ip_masked >> 8;
-
-	/* Calculate the index into tbl8 and range. */
-	tbl8_group_index = lpm->tbl24[tbl24_index].group_idx;
-	tbl8_group_start = tbl8_group_index * RTE_LPM_TBL8_GROUP_NUM_ENTRIES;
-	tbl8_index = tbl8_group_start + (ip_masked & 0xFF);
-	tbl8_range = depth_to_range(depth);
-
-	if (sub_rule_index < 0) {
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be removed or modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				lpm->tbl8[i].valid = INVALID;
-		}
-	} else {
-		/* Set new tbl8 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl8_entry = {
-			.valid = VALID,
-			.depth = sub_rule_depth,
-			.valid_group = lpm->tbl8[tbl8_group_start].valid_group,
-		};
-
-		new_tbl8_entry.next_hop =
-				lpm->rules_tbl[sub_rule_index].next_hop;
-		/*
-		 * Loop through the range of entries on tbl8 for which the
-		 * rule_to_delete must be modified.
-		 */
-		for (i = tbl8_index; i < (tbl8_index + tbl8_range); i++) {
-			if (lpm->tbl8[i].depth <= depth)
-				__atomic_store(&lpm->tbl8[i], &new_tbl8_entry,
-						__ATOMIC_RELAXED);
-		}
-	}
-
-	/*
-	 * Check if there are any valid entries in this tbl8 group. If all
-	 * tbl8 entries are invalid we can free the tbl8 and invalidate the
-	 * associated tbl24 entry.
-	 */
-
-	tbl8_recycle_index = tbl8_recycle_check_v20(lpm->tbl8, tbl8_group_start);
-
-	if (tbl8_recycle_index == -EINVAL) {
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		lpm->tbl24[tbl24_index].valid = 0;
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	} else if (tbl8_recycle_index > -1) {
-		/* Update tbl24 entry. */
-		struct rte_lpm_tbl_entry_v20 new_tbl24_entry = {
-			.next_hop = lpm->tbl8[tbl8_recycle_index].next_hop,
-			.valid = VALID,
-			.valid_group = 0,
-			.depth = lpm->tbl8[tbl8_recycle_index].depth,
-		};
-
-		/* Set tbl24 before freeing tbl8 to avoid race condition.
-		 * Prevent the free of the tbl8 group from hoisting.
-		 */
-		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
-				__ATOMIC_RELAXED);
-		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v20(lpm->tbl8, tbl8_group_start);
-	}
-
-	return 0;
-}
-
-static int32_t
-delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
+delete_depth_big(struct rte_lpm *lpm, uint32_t ip_masked,
 	uint8_t depth, int32_t sub_rule_index, uint8_t sub_rule_depth)
 {
 #define group_idx next_hop
@@ -1811,7 +960,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 	 * associated tbl24 entry.
 	 */
 
-	tbl8_recycle_index = tbl8_recycle_check_v1604(lpm->tbl8, tbl8_group_start);
+	tbl8_recycle_index = tbl8_recycle_check(lpm->tbl8, tbl8_group_start);
 
 	if (tbl8_recycle_index == -EINVAL) {
 		/* Set tbl24 before freeing tbl8 to avoid race condition.
@@ -1819,7 +968,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		 */
 		lpm->tbl24[tbl24_index].valid = 0;
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	} else if (tbl8_recycle_index > -1) {
 		/* Update tbl24 entry. */
 		struct rte_lpm_tbl_entry new_tbl24_entry = {
@@ -1835,7 +984,7 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 		__atomic_store(&lpm->tbl24[tbl24_index], &new_tbl24_entry,
 				__ATOMIC_RELAXED);
 		__atomic_thread_fence(__ATOMIC_RELEASE);
-		tbl8_free_v1604(lpm->tbl8, tbl8_group_start);
+		tbl8_free(lpm->tbl8, tbl8_group_start);
 	}
 #undef group_idx
 	return 0;
@@ -1844,8 +993,8 @@ delete_depth_big_v1604(struct rte_lpm *lpm, uint32_t ip_masked,
 /*
  * Deletes a rule
  */
-int __vsym
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
+int
+rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
 {
 	int32_t rule_to_delete_index, sub_rule_index;
 	uint32_t ip_masked;
@@ -1864,7 +1013,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * Find the index of the input rule, that needs to be deleted, in the
 	 * rule table.
 	 */
-	rule_to_delete_index = rule_find_v20(lpm, ip_masked, depth);
+	rule_to_delete_index = rule_find(lpm, ip_masked, depth);
 
 	/*
 	 * Check if rule_to_delete_index was found. If no rule was found the
@@ -1874,7 +1023,7 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 		return -EINVAL;
 
 	/* Delete the rule from the rule table. */
-	rule_delete_v20(lpm, rule_to_delete_index, depth);
+	rule_delete(lpm, rule_to_delete_index, depth);
 
 	/*
 	 * Find rule to replace the rule_to_delete. If there is no rule to
@@ -1882,100 +1031,26 @@ rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth)
 	 * entries associated with this rule.
 	 */
 	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v20(lpm, ip, depth, &sub_rule_depth);
+	sub_rule_index = find_previous_rule(lpm, ip, depth, &sub_rule_depth);
 
 	/*
 	 * If the input depth value is less than 25 use function
 	 * delete_depth_small otherwise use delete_depth_big.
 	 */
 	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v20(lpm, ip_masked, depth,
+		return delete_depth_small(lpm, ip_masked, depth,
 				sub_rule_index, sub_rule_depth);
 	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v20(lpm, ip_masked, depth, sub_rule_index,
+		return delete_depth_big(lpm, ip_masked, depth, sub_rule_index,
 				sub_rule_depth);
 	}
 }
-VERSION_SYMBOL(rte_lpm_delete, _v20, 2.0);
-
-int __vsym
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth)
-{
-	int32_t rule_to_delete_index, sub_rule_index;
-	uint32_t ip_masked;
-	uint8_t sub_rule_depth;
-	/*
-	 * Check input arguments. Note: IP must be a positive integer of 32
-	 * bits in length therefore it need not be checked.
-	 */
-	if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM_MAX_DEPTH)) {
-		return -EINVAL;
-	}
-
-	ip_masked = ip & depth_to_mask(depth);
-
-	/*
-	 * Find the index of the input rule, that needs to be deleted, in the
-	 * rule table.
-	 */
-	rule_to_delete_index = rule_find_v1604(lpm, ip_masked, depth);
-
-	/*
-	 * Check if rule_to_delete_index was found. If no rule was found the
-	 * function rule_find returns -EINVAL.
-	 */
-	if (rule_to_delete_index < 0)
-		return -EINVAL;
-
-	/* Delete the rule from the rule table. */
-	rule_delete_v1604(lpm, rule_to_delete_index, depth);
-
-	/*
-	 * Find rule to replace the rule_to_delete. If there is no rule to
-	 * replace the rule_to_delete we return -1 and invalidate the table
-	 * entries associated with this rule.
-	 */
-	sub_rule_depth = 0;
-	sub_rule_index = find_previous_rule_v1604(lpm, ip, depth, &sub_rule_depth);
-
-	/*
-	 * If the input depth value is less than 25 use function
-	 * delete_depth_small otherwise use delete_depth_big.
-	 */
-	if (depth <= MAX_DEPTH_TBL24) {
-		return delete_depth_small_v1604(lpm, ip_masked, depth,
-				sub_rule_index, sub_rule_depth);
-	} else { /* If depth > MAX_DEPTH_TBL24 */
-		return delete_depth_big_v1604(lpm, ip_masked, depth, sub_rule_index,
-				sub_rule_depth);
-	}
-}
-BIND_DEFAULT_SYMBOL(rte_lpm_delete, _v1604, 16.04);
-MAP_STATIC_SYMBOL(int rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip,
-		uint8_t depth), rte_lpm_delete_v1604);
 
 /*
  * Delete all rules from the LPM table.
  */
-void __vsym
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm)
-{
-	/* Zero rule information. */
-	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
-
-	/* Zero tbl24. */
-	memset(lpm->tbl24, 0, sizeof(lpm->tbl24));
-
-	/* Zero tbl8. */
-	memset(lpm->tbl8, 0, sizeof(lpm->tbl8));
-
-	/* Delete all rules form the rules table. */
-	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
-}
-VERSION_SYMBOL(rte_lpm_delete_all, _v20, 2.0);
-
-void __vsym
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
+void
+rte_lpm_delete_all(struct rte_lpm *lpm)
 {
 	/* Zero rule information. */
 	memset(lpm->rule_info, 0, sizeof(lpm->rule_info));
@@ -1990,6 +1065,3 @@ rte_lpm_delete_all_v1604(struct rte_lpm *lpm)
 	/* Delete all rules form the rules table. */
 	memset(lpm->rules_tbl, 0, sizeof(lpm->rules_tbl[0]) * lpm->max_rules);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm_delete_all, _v1604, 16.04);
-MAP_STATIC_SYMBOL(void rte_lpm_delete_all(struct rte_lpm *lpm),
-		rte_lpm_delete_all_v1604);
diff --git a/lib/librte_lpm/rte_lpm.h b/lib/librte_lpm/rte_lpm.h
index 26303e6288..b9d49ac879 100644
--- a/lib/librte_lpm/rte_lpm.h
+++ b/lib/librte_lpm/rte_lpm.h
@@ -64,31 +64,6 @@ extern "C" {
 
 #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
 /** @internal Tbl24 entry structure. */
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	/**
-	 * Stores Next hop (tbl8 or tbl24 when valid_group is not set) or
-	 * a group index pointing to a tbl8 structure (tbl24 only, when
-	 * valid_group is set)
-	 */
-	RTE_STD_C11
-	union {
-		uint8_t next_hop;
-		uint8_t group_idx;
-	};
-	/* Using single uint8_t to store 3 values. */
-	uint8_t valid     :1;   /**< Validation flag. */
-	/**
-	 * For tbl24:
-	 *  - valid_group == 0: entry stores a next hop
-	 *  - valid_group == 1: entry stores a group_index pointing to a tbl8
-	 * For tbl8:
-	 *  - valid_group indicates whether the current tbl8 is in use or not
-	 */
-	uint8_t valid_group :1;
-	uint8_t depth       :6; /**< Rule depth. */
-} __rte_aligned(sizeof(uint16_t));
-
 __extension__
 struct rte_lpm_tbl_entry {
 	/**
@@ -111,16 +86,6 @@ struct rte_lpm_tbl_entry {
 };
 
 #else
-__extension__
-struct rte_lpm_tbl_entry_v20 {
-	uint8_t depth       :6;
-	uint8_t valid_group :1;
-	uint8_t valid       :1;
-	union {
-		uint8_t group_idx;
-		uint8_t next_hop;
-	};
-} __rte_aligned(sizeof(uint16_t));
 
 __extension__
 struct rte_lpm_tbl_entry {
@@ -141,11 +106,6 @@ struct rte_lpm_config {
 };
 
 /** @internal Rule structure. */
-struct rte_lpm_rule_v20 {
-	uint32_t ip; /**< Rule IP address. */
-	uint8_t  next_hop; /**< Rule next hop. */
-};
-
 struct rte_lpm_rule {
 	uint32_t ip; /**< Rule IP address. */
 	uint32_t next_hop; /**< Rule next hop. */
@@ -158,21 +118,6 @@ struct rte_lpm_rule_info {
 };
 
 /** @internal LPM structure. */
-struct rte_lpm_v20 {
-	/* LPM metadata. */
-	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
-	uint32_t max_rules; /**< Max. balanced rules per lpm. */
-	struct rte_lpm_rule_info rule_info[RTE_LPM_MAX_DEPTH]; /**< Rule info table. */
-
-	/* LPM Tables. */
-	struct rte_lpm_tbl_entry_v20 tbl24[RTE_LPM_TBL24_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl24 table. */
-	struct rte_lpm_tbl_entry_v20 tbl8[RTE_LPM_TBL8_NUM_ENTRIES]
-			__rte_cache_aligned; /**< LPM tbl8 table. */
-	struct rte_lpm_rule_v20 rules_tbl[]
-			__rte_cache_aligned; /**< LPM rules. */
-};
-
 struct rte_lpm {
 	/* LPM metadata. */
 	char name[RTE_LPM_NAMESIZE];        /**< Name of the lpm. */
@@ -209,11 +154,6 @@ struct rte_lpm {
 struct rte_lpm *
 rte_lpm_create(const char *name, int socket_id,
 		const struct rte_lpm_config *config);
-struct rte_lpm_v20 *
-rte_lpm_create_v20(const char *name, int socket_id, int max_rules, int flags);
-struct rte_lpm *
-rte_lpm_create_v1604(const char *name, int socket_id,
-		const struct rte_lpm_config *config);
 
 /**
  * Find an existing LPM object and return a pointer to it.
@@ -227,10 +167,6 @@ rte_lpm_create_v1604(const char *name, int socket_id,
  */
 struct rte_lpm *
 rte_lpm_find_existing(const char *name);
-struct rte_lpm_v20 *
-rte_lpm_find_existing_v20(const char *name);
-struct rte_lpm *
-rte_lpm_find_existing_v1604(const char *name);
 
 /**
  * Free an LPM object.
@@ -242,10 +178,6 @@ rte_lpm_find_existing_v1604(const char *name);
  */
 void
 rte_lpm_free(struct rte_lpm *lpm);
-void
-rte_lpm_free_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_free_v1604(struct rte_lpm *lpm);
 
 /**
  * Add a rule to the LPM table.
@@ -263,12 +195,6 @@ rte_lpm_free_v1604(struct rte_lpm *lpm);
  */
 int
 rte_lpm_add(struct rte_lpm *lpm, uint32_t ip, uint8_t depth, uint32_t next_hop);
-int
-rte_lpm_add_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -288,12 +214,6 @@ rte_lpm_add_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 int
 rte_lpm_is_rule_present(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
 uint32_t *next_hop);
-int
-rte_lpm_is_rule_present_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth,
-uint8_t *next_hop);
-int
-rte_lpm_is_rule_present_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
-uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -309,10 +229,6 @@ uint32_t *next_hop);
  */
 int
 rte_lpm_delete(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v20(struct rte_lpm_v20 *lpm, uint32_t ip, uint8_t depth);
-int
-rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
 
 /**
  * Delete all rules from the LPM table.
@@ -322,10 +238,6 @@ rte_lpm_delete_v1604(struct rte_lpm *lpm, uint32_t ip, uint8_t depth);
  */
 void
 rte_lpm_delete_all(struct rte_lpm *lpm);
-void
-rte_lpm_delete_all_v20(struct rte_lpm_v20 *lpm);
-void
-rte_lpm_delete_all_v1604(struct rte_lpm *lpm);
 
 /**
  * Lookup an IP into the LPM table.
diff --git a/lib/librte_lpm/rte_lpm6.c b/lib/librte_lpm/rte_lpm6.c
index 0d161dc327..c46e557e23 100644
--- a/lib/librte_lpm/rte_lpm6.c
+++ b/lib/librte_lpm/rte_lpm6.c
@@ -809,18 +809,6 @@ add_step(struct rte_lpm6 *lpm, struct rte_lpm6_tbl_entry *tbl,
 	return 1;
 }
 
-/*
- * Add a route
- */
-int __vsym
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop)
-{
-	return rte_lpm6_add_v1705(lpm, ip, depth, next_hop);
-}
-VERSION_SYMBOL(rte_lpm6_add, _v20, 2.0);
-
-
 /*
  * Simulate adding a route to LPM
  *
@@ -842,7 +830,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	ret = simulate_add_step(lpm, lpm->tbl24, &tbl_next, masked_ip,
-			ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
+		ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
 	total_need_tbl_nb = need_tbl_nb;
 	/*
 	 * Inspect one by one the rest of the bytes until
@@ -851,7 +839,7 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && ret == 1; i++) {
 		tbl = tbl_next;
 		ret = simulate_add_step(lpm, tbl, &tbl_next, masked_ip, 1,
-				(uint8_t)(i+1), depth, &need_tbl_nb);
+			(uint8_t)(i + 1), depth, &need_tbl_nb);
 		total_need_tbl_nb += need_tbl_nb;
 	}
 
@@ -862,9 +850,12 @@ simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
 	return 0;
 }
 
-int __vsym
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop)
+/*
+ * Add a route
+ */
+int
+rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+	uint32_t next_hop)
 {
 	struct rte_lpm6_tbl_entry *tbl;
 	struct rte_lpm6_tbl_entry *tbl_next = NULL;
@@ -896,8 +887,8 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	/* Inspect the first three bytes through tbl24 on the first step. */
 	tbl = lpm->tbl24;
 	status = add_step(lpm, tbl, TBL24_IND, &tbl_next, &tbl_next_num,
-			masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
-			is_new_rule);
+		masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
+		is_new_rule);
 	assert(status >= 0);
 
 	/*
@@ -907,17 +898,13 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 	for (i = ADD_FIRST_BYTE; i < RTE_LPM6_IPV6_ADDR_SIZE && status == 1; i++) {
 		tbl = tbl_next;
 		status = add_step(lpm, tbl, tbl_next_num, &tbl_next,
-				&tbl_next_num, masked_ip, 1, (uint8_t)(i+1),
-				depth, next_hop, is_new_rule);
+			&tbl_next_num, masked_ip, 1, (uint8_t)(i + 1),
+			depth, next_hop, is_new_rule);
 		assert(status >= 0);
 	}
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_add, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip,
-				uint8_t depth, uint32_t next_hop),
-		rte_lpm6_add_v1705);
 
 /*
  * Takes a pointer to a table entry and inspect one level.
@@ -955,26 +942,8 @@ lookup_step(const struct rte_lpm6 *lpm, const struct rte_lpm6_tbl_entry *tbl,
 /*
  * Looks up an IP
  */
-int __vsym
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_lookup_v1705(lpm, ip, &next_hop32);
-	if (status == 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-}
-VERSION_SYMBOL(rte_lpm6_lookup, _v20, 2.0);
-
-int __vsym
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
+int
+rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
 		uint32_t *next_hop)
 {
 	const struct rte_lpm6_tbl_entry *tbl;
@@ -1001,56 +970,12 @@ rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
 
 	return status;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip,
-				uint32_t *next_hop), rte_lpm6_lookup_v1705);
 
 /*
  * Looks up a group of IP addresses
  */
-int __vsym
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t * next_hops, unsigned n)
-{
-	unsigned i;
-	const struct rte_lpm6_tbl_entry *tbl;
-	const struct rte_lpm6_tbl_entry *tbl_next = NULL;
-	uint32_t tbl24_index, next_hop;
-	uint8_t first_byte;
-	int status;
-
-	/* DEBUG: Check user input arguments. */
-	if ((lpm == NULL) || (ips == NULL) || (next_hops == NULL))
-		return -EINVAL;
-
-	for (i = 0; i < n; i++) {
-		first_byte = LOOKUP_FIRST_BYTE;
-		tbl24_index = (ips[i][0] << BYTES2_SIZE) |
-				(ips[i][1] << BYTE_SIZE) | ips[i][2];
-
-		/* Calculate pointer to the first entry to be inspected */
-		tbl = &lpm->tbl24[tbl24_index];
-
-		do {
-			/* Continue inspecting following levels until success or failure */
-			status = lookup_step(lpm, tbl, &tbl_next, ips[i], first_byte++,
-					&next_hop);
-			tbl = tbl_next;
-		} while (status == 1);
-
-		if (status < 0)
-			next_hops[i] = -1;
-		else
-			next_hops[i] = (int16_t)next_hop;
-	}
-
-	return 0;
-}
-VERSION_SYMBOL(rte_lpm6_lookup_bulk_func, _v20, 2.0);
-
-int __vsym
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
+int
+rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n)
 {
@@ -1090,37 +1015,12 @@ rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_lookup_bulk_func, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
-				uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-				int32_t *next_hops, unsigned int n),
-		rte_lpm6_lookup_bulk_func_v1705);
 
 /*
  * Look for a rule in the high-level rules table
  */
-int __vsym
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop)
-{
-	uint32_t next_hop32 = 0;
-	int32_t status;
-
-	/* DEBUG: Check user input arguments. */
-	if (next_hop == NULL)
-		return -EINVAL;
-
-	status = rte_lpm6_is_rule_present_v1705(lpm, ip, depth, &next_hop32);
-	if (status > 0)
-		*next_hop = (uint8_t)next_hop32;
-
-	return status;
-
-}
-VERSION_SYMBOL(rte_lpm6_is_rule_present, _v20, 2.0);
-
-int __vsym
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
+int
+rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop)
 {
 	uint8_t masked_ip[RTE_LPM6_IPV6_ADDR_SIZE];
@@ -1136,10 +1036,6 @@ rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 
 	return rule_find(lpm, masked_ip, depth, next_hop);
 }
-BIND_DEFAULT_SYMBOL(rte_lpm6_is_rule_present, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_lpm6_is_rule_present(struct rte_lpm6 *lpm,
-				uint8_t *ip, uint8_t depth, uint32_t *next_hop),
-		rte_lpm6_is_rule_present_v1705);
 
 /*
  * Delete a rule from the rule table.
diff --git a/lib/librte_lpm/rte_lpm6.h b/lib/librte_lpm/rte_lpm6.h
index 5d59ccb1fe..37dfb20249 100644
--- a/lib/librte_lpm/rte_lpm6.h
+++ b/lib/librte_lpm/rte_lpm6.h
@@ -96,12 +96,6 @@ rte_lpm6_free(struct rte_lpm6 *lpm);
 int
 rte_lpm6_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t next_hop);
-int
-rte_lpm6_add_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t next_hop);
-int
-rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t next_hop);
 
 /**
  * Check if a rule is present in the LPM table,
@@ -121,12 +115,6 @@ rte_lpm6_add_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 int
 rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
 		uint32_t *next_hop);
-int
-rte_lpm6_is_rule_present_v20(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint8_t *next_hop);
-int
-rte_lpm6_is_rule_present_v1705(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
-		uint32_t *next_hop);
 
 /**
  * Delete a rule from the LPM table.
@@ -184,11 +172,6 @@ rte_lpm6_delete_all(struct rte_lpm6 *lpm);
  */
 int
 rte_lpm6_lookup(const struct rte_lpm6 *lpm, uint8_t *ip, uint32_t *next_hop);
-int
-rte_lpm6_lookup_v20(const struct rte_lpm6 *lpm, uint8_t *ip, uint8_t *next_hop);
-int
-rte_lpm6_lookup_v1705(const struct rte_lpm6 *lpm, uint8_t *ip,
-		uint32_t *next_hop);
 
 /**
  * Lookup multiple IP addresses in an LPM table.
@@ -210,14 +193,6 @@ int
 rte_lpm6_lookup_bulk_func(const struct rte_lpm6 *lpm,
 		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
 		int32_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v20(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int16_t *next_hops, unsigned int n);
-int
-rte_lpm6_lookup_bulk_func_v1705(const struct rte_lpm6 *lpm,
-		uint8_t ips[][RTE_LPM6_IPV6_ADDR_SIZE],
-		int32_t *next_hops, unsigned int n);
 
 #ifdef __cplusplus
 }
diff --git a/lib/librte_lpm/rte_lpm_version.map b/lib/librte_lpm/rte_lpm_version.map
index 90beac853d..604ed416d1 100644
--- a/lib/librte_lpm/rte_lpm_version.map
+++ b/lib/librte_lpm/rte_lpm_version.map
@@ -1,23 +1,12 @@
 DPDK_2.0 {
 	global:
 
-	rte_lpm_add;
-	rte_lpm_create;
-	rte_lpm_delete;
-	rte_lpm_delete_all;
-	rte_lpm_find_existing;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
-	rte_lpm6_add;
 	rte_lpm6_create;
 	rte_lpm6_delete;
 	rte_lpm6_delete_all;
 	rte_lpm6_delete_bulk_func;
 	rte_lpm6_find_existing;
 	rte_lpm6_free;
-	rte_lpm6_is_rule_present;
-	rte_lpm6_lookup;
-	rte_lpm6_lookup_bulk_func;
 
 	local: *;
 };
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v8 08/12] distributor: remove deprecated code
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
                               ` (7 preceding siblings ...)
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 07/12] lpm: " Anatoly Burakov
@ 2019-11-20 17:23             ` Anatoly Burakov
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 09/12] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
                               ` (3 subsequent siblings)
  12 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-20 17:23 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, David Hunt, john.mcnamara, ray.kinsella,
	bruce.richardson, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

Remove code for old ABI versions ahead of ABI version bump.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
---

Notes:
    v5:
    - Fixed shared library linking error due to versioning still enabled
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_distributor/rte_distributor.c      | 74 +++++--------------
 .../rte_distributor_v1705.h                   | 61 ---------------
 lib/librte_distributor/rte_distributor_v20.c  |  9 ---
 3 files changed, 18 insertions(+), 126 deletions(-)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h

diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index 2cc32ddba2..a4c8ff6a96 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -18,7 +18,6 @@
 
 #include "rte_distributor.h"
 #include "rte_distributor_v20.h"
-#include "rte_distributor_v1705.h"
 #include "distributor_private.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
@@ -32,8 +31,8 @@ EAL_REGISTER_TAILQ(rte_dist_burst_tailq)
 
 /**** Burst Packet APIs called by workers ****/
 
-void __vsym
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
+void
+rte_distributor_request_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt,
 		unsigned int count)
 {
@@ -83,14 +82,9 @@ rte_distributor_request_pkt_v1705(struct rte_distributor *d,
 	__atomic_store_n(retptr64, *retptr64 | RTE_DISTRIB_GET_BUF,
 			__ATOMIC_RELEASE);
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_request_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_request_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count),
-		rte_distributor_request_pkt_v1705);
 
-int __vsym
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
+int
+rte_distributor_poll_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -129,13 +123,9 @@ rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
 
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_poll_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_poll_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts),
-		rte_distributor_poll_pkt_v1705);
 
-int __vsym
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
+int
+rte_distributor_get_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **pkts,
 		struct rte_mbuf **oldpkt, unsigned int return_count)
 {
@@ -163,14 +153,9 @@ rte_distributor_get_pkt_v1705(struct rte_distributor *d,
 	}
 	return count;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_get_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_get_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **pkts,
-		struct rte_mbuf **oldpkt, unsigned int return_count),
-		rte_distributor_get_pkt_v1705);
 
-int __vsym
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
+int
+rte_distributor_return_pkt(struct rte_distributor *d,
 		unsigned int worker_id, struct rte_mbuf **oldpkt, int num)
 {
 	struct rte_distributor_buffer *buf = &d->bufs[worker_id];
@@ -202,10 +187,6 @@ rte_distributor_return_pkt_v1705(struct rte_distributor *d,
 
 	return 0;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_return_pkt, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_return_pkt(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt, int num),
-		rte_distributor_return_pkt_v1705);
 
 /**** APIs called on distributor core ***/
 
@@ -359,8 +340,8 @@ release(struct rte_distributor *d, unsigned int wkr)
 
 
 /* process a set of packets to distribute them to workers */
-int __vsym
-rte_distributor_process_v1705(struct rte_distributor *d,
+int
+rte_distributor_process(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs)
 {
 	unsigned int next_idx = 0;
@@ -500,14 +481,10 @@ rte_distributor_process_v1705(struct rte_distributor *d,
 
 	return num_mbufs;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_process, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_process(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs),
-		rte_distributor_process_v1705);
 
 /* return to the caller, packets returned from workers */
-int __vsym
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
+int
+rte_distributor_returned_pkts(struct rte_distributor *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -532,10 +509,6 @@ rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
 
 	return retval;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_returned_pkts, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_returned_pkts(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs),
-		rte_distributor_returned_pkts_v1705);
 
 /*
  * Return the number of packets in-flight in a distributor, i.e. packets
@@ -556,8 +529,8 @@ total_outstanding(const struct rte_distributor *d)
  * Flush the distributor, so that there are no outstanding packets in flight or
  * queued up.
  */
-int __vsym
-rte_distributor_flush_v1705(struct rte_distributor *d)
+int
+rte_distributor_flush(struct rte_distributor *d)
 {
 	unsigned int flushed;
 	unsigned int wkr;
@@ -586,13 +559,10 @@ rte_distributor_flush_v1705(struct rte_distributor *d)
 
 	return flushed;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_flush, _v1705, 17.05);
-MAP_STATIC_SYMBOL(int rte_distributor_flush(struct rte_distributor *d),
-		rte_distributor_flush_v1705);
 
 /* clears the internal returns array in the distributor */
-void __vsym
-rte_distributor_clear_returns_v1705(struct rte_distributor *d)
+void
+rte_distributor_clear_returns(struct rte_distributor *d)
 {
 	unsigned int wkr;
 
@@ -608,13 +578,10 @@ rte_distributor_clear_returns_v1705(struct rte_distributor *d)
 		__atomic_store_n(&(d->bufs[wkr].retptr64[0]), 0,
 				__ATOMIC_RELEASE);
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_clear_returns, _v1705, 17.05);
-MAP_STATIC_SYMBOL(void rte_distributor_clear_returns(struct rte_distributor *d),
-		rte_distributor_clear_returns_v1705);
 
 /* creates a distributor instance */
-struct rte_distributor * __vsym
-rte_distributor_create_v1705(const char *name,
+struct rte_distributor *
+rte_distributor_create(const char *name,
 		unsigned int socket_id,
 		unsigned int num_workers,
 		unsigned int alg_type)
@@ -688,8 +655,3 @@ rte_distributor_create_v1705(const char *name,
 
 	return d;
 }
-BIND_DEFAULT_SYMBOL(rte_distributor_create, _v1705, 17.05);
-MAP_STATIC_SYMBOL(struct rte_distributor *rte_distributor_create(
-		const char *name, unsigned int socket_id,
-		unsigned int num_workers, unsigned int alg_type),
-		rte_distributor_create_v1705);
diff --git a/lib/librte_distributor/rte_distributor_v1705.h b/lib/librte_distributor/rte_distributor_v1705.h
deleted file mode 100644
index df4d9e8150..0000000000
--- a/lib/librte_distributor/rte_distributor_v1705.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2017 Intel Corporation
- */
-
-#ifndef _RTE_DISTRIB_V1705_H_
-#define _RTE_DISTRIB_V1705_H_
-
-/**
- * @file
- * RTE distributor
- *
- * The distributor is a component which is designed to pass packets
- * one-at-a-time to workers, with dynamic load balancing.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct rte_distributor *
-rte_distributor_create_v1705(const char *name, unsigned int socket_id,
-		unsigned int num_workers,
-		unsigned int alg_type);
-
-int
-rte_distributor_process_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int num_mbufs);
-
-int
-rte_distributor_returned_pkts_v1705(struct rte_distributor *d,
-		struct rte_mbuf **mbufs, unsigned int max_mbufs);
-
-int
-rte_distributor_flush_v1705(struct rte_distributor *d);
-
-void
-rte_distributor_clear_returns_v1705(struct rte_distributor *d);
-
-int
-rte_distributor_get_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **pkts,
-	struct rte_mbuf **oldpkt, unsigned int retcount);
-
-int
-rte_distributor_return_pkt_v1705(struct rte_distributor *d,
-	unsigned int worker_id, struct rte_mbuf **oldpkt, int num);
-
-void
-rte_distributor_request_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **oldpkt,
-		unsigned int count);
-
-int
-rte_distributor_poll_pkt_v1705(struct rte_distributor *d,
-		unsigned int worker_id, struct rte_mbuf **mbufs);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_v20.c
index 7a6fddf556..655944bdb3 100644
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ b/lib/librte_distributor/rte_distributor_v20.c
@@ -41,7 +41,6 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
 	/* Sync with distributor on GET_BUF flag. */
 	__atomic_store_n(&(buf->bufptr64), req, __ATOMIC_RELEASE);
 }
-VERSION_SYMBOL(rte_distributor_request_pkt, _v20, 2.0);
 
 struct rte_mbuf * __vsym
 rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
@@ -57,7 +56,6 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
 	int64_t ret = buf->bufptr64 >> RTE_DISTRIB_FLAG_BITS;
 	return (struct rte_mbuf *)((uintptr_t)ret);
 }
-VERSION_SYMBOL(rte_distributor_poll_pkt, _v20, 2.0);
 
 struct rte_mbuf * __vsym
 rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
@@ -69,7 +67,6 @@ rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
 		rte_pause();
 	return ret;
 }
-VERSION_SYMBOL(rte_distributor_get_pkt, _v20, 2.0);
 
 int __vsym
 rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
@@ -82,7 +79,6 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
 	__atomic_store_n(&(buf->bufptr64), req, __ATOMIC_RELEASE);
 	return 0;
 }
-VERSION_SYMBOL(rte_distributor_return_pkt, _v20, 2.0);
 
 /**** APIs called on distributor core ***/
 
@@ -318,7 +314,6 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 	d->returns.count = ret_count;
 	return num_mbufs;
 }
-VERSION_SYMBOL(rte_distributor_process, _v20, 2.0);
 
 /* return to the caller, packets returned from workers */
 int __vsym
@@ -339,7 +334,6 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
 
 	return retval;
 }
-VERSION_SYMBOL(rte_distributor_returned_pkts, _v20, 2.0);
 
 /* return the number of packets in-flight in a distributor, i.e. packets
  * being worked on or queued up in a backlog.
@@ -369,7 +363,6 @@ rte_distributor_flush_v20(struct rte_distributor_v20 *d)
 
 	return flushed;
 }
-VERSION_SYMBOL(rte_distributor_flush, _v20, 2.0);
 
 /* clears the internal returns array in the distributor */
 void __vsym
@@ -380,7 +373,6 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
 	memset(d->returns.mbufs, 0, sizeof(d->returns.mbufs));
 #endif
 }
-VERSION_SYMBOL(rte_distributor_clear_returns, _v20, 2.0);
 
 /* creates a distributor instance */
 struct rte_distributor_v20 * __vsym
@@ -424,4 +416,3 @@ rte_distributor_create_v20(const char *name,
 
 	return d;
 }
-VERSION_SYMBOL(rte_distributor_create, _v20, 2.0);
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v8 09/12] distributor: rename v2.0 ABI to _single suffix
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
                               ` (8 preceding siblings ...)
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 08/12] distributor: " Anatoly Burakov
@ 2019-11-20 17:23             ` Anatoly Burakov
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 10/12] drivers/octeontx: add missing public symbol Anatoly Burakov
                               ` (2 subsequent siblings)
  12 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-20 17:23 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, David Hunt, john.mcnamara, ray.kinsella,
	bruce.richardson, thomas, david.marchand

From: Marcin Baran <marcinx.baran@intel.com>

The original ABI versioning was slightly misleading in that the
DPDK 2.0 ABI was really a single mode for the distributor, and is
used as such throughout the distributor code.

Fix this by renaming all _v20 API's to _single API's, and remove
symbol versioning.

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: David Hunt <david.hunt@intel.com>
---

Notes:
    v4:
    - Changed it back to how it was with v2
    - Removed remaining v2.0 symbols
    
    v3:
    - Removed single mode from distributor as per Dave's comments
    
    v2:
    - Moved this to before ABI version bump to avoid compile breakage

 lib/librte_distributor/Makefile               |  2 +-
 lib/librte_distributor/distributor_private.h  | 10 +--
 lib/librte_distributor/meson.build            |  2 +-
 lib/librte_distributor/rte_distributor.c      | 24 +++----
 ...ributor_v20.c => rte_distributor_single.c} | 64 +++++++++----------
 ...ributor_v20.h => rte_distributor_single.h} | 26 ++++----
 .../rte_distributor_version.map               | 18 +-----
 7 files changed, 66 insertions(+), 80 deletions(-)
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (87%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)

diff --git a/lib/librte_distributor/Makefile b/lib/librte_distributor/Makefile
index a687f4a0f0..fc32fb3a8f 100644
--- a/lib/librte_distributor/Makefile
+++ b/lib/librte_distributor/Makefile
@@ -13,7 +13,7 @@ LDLIBS += -lrte_eal -lrte_mbuf -lrte_ethdev
 EXPORT_MAP := rte_distributor_version.map
 
 # all source are stored in SRCS-y
-SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_v20.c
+SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) := rte_distributor_single.c
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor.c
 ifeq ($(CONFIG_RTE_ARCH_X86),y)
 SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += rte_distributor_match_sse.c
diff --git a/lib/librte_distributor/distributor_private.h b/lib/librte_distributor/distributor_private.h
index c89371123e..489aef2acb 100644
--- a/lib/librte_distributor/distributor_private.h
+++ b/lib/librte_distributor/distributor_private.h
@@ -55,7 +55,7 @@ extern "C" {
  * the next cache line to worker 0, we pad this out to three cache lines.
  * Only 64-bits of the memory is actually used though.
  */
-union rte_distributor_buffer_v20 {
+union rte_distributor_buffer_single {
 	volatile int64_t bufptr64;
 	char pad[RTE_CACHE_LINE_SIZE*3];
 } __rte_cache_aligned;
@@ -80,8 +80,8 @@ struct rte_distributor_returned_pkts {
 	struct rte_mbuf *mbufs[RTE_DISTRIB_MAX_RETURNS];
 };
 
-struct rte_distributor_v20 {
-	TAILQ_ENTRY(rte_distributor_v20) next;    /**< Next in list. */
+struct rte_distributor_single {
+	TAILQ_ENTRY(rte_distributor_single) next;    /**< Next in list. */
 
 	char name[RTE_DISTRIBUTOR_NAMESIZE];  /**< Name of the ring. */
 	unsigned int num_workers;             /**< Number of workers polling */
@@ -96,7 +96,7 @@ struct rte_distributor_v20 {
 
 	struct rte_distributor_backlog backlog[RTE_DISTRIB_MAX_WORKERS];
 
-	union rte_distributor_buffer_v20 bufs[RTE_DISTRIB_MAX_WORKERS];
+	union rte_distributor_buffer_single bufs[RTE_DISTRIB_MAX_WORKERS];
 
 	struct rte_distributor_returned_pkts returns;
 };
@@ -154,7 +154,7 @@ struct rte_distributor {
 
 	enum rte_distributor_match_function dist_match_fn;
 
-	struct rte_distributor_v20 *d_v20;
+	struct rte_distributor_single *d_single;
 };
 
 void
diff --git a/lib/librte_distributor/meson.build b/lib/librte_distributor/meson.build
index c9617d7b14..50b91887b5 100644
--- a/lib/librte_distributor/meson.build
+++ b/lib/librte_distributor/meson.build
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: BSD-3-Clause
 # Copyright(c) 2017 Intel Corporation
 
-sources = files('rte_distributor.c', 'rte_distributor_v20.c')
+sources = files('rte_distributor.c', 'rte_distributor_single.c')
 if arch_subdir == 'x86'
 	sources += files('rte_distributor_match_sse.c')
 else
diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index a4c8ff6a96..6c5b0c86e8 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -17,7 +17,7 @@
 #include <rte_tailq.h>
 
 #include "rte_distributor.h"
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 #include "distributor_private.h"
 
 TAILQ_HEAD(rte_dist_burst_list, rte_distributor);
@@ -42,7 +42,7 @@ rte_distributor_request_pkt(struct rte_distributor *d,
 	volatile int64_t *retptr64;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		rte_distributor_request_pkt_v20(d->d_v20,
+		rte_distributor_request_pkt_single(d->d_single,
 			worker_id, oldpkt[0]);
 		return;
 	}
@@ -93,7 +93,8 @@ rte_distributor_poll_pkt(struct rte_distributor *d,
 	unsigned int i;
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
-		pkts[0] = rte_distributor_poll_pkt_v20(d->d_v20, worker_id);
+		pkts[0] = rte_distributor_poll_pkt_single(d->d_single,
+			worker_id);
 		return (pkts[0]) ? 1 : 0;
 	}
 
@@ -133,7 +134,7 @@ rte_distributor_get_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (return_count <= 1) {
-			pkts[0] = rte_distributor_get_pkt_v20(d->d_v20,
+			pkts[0] = rte_distributor_get_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 			return (pkts[0]) ? 1 : 0;
 		} else
@@ -163,7 +164,7 @@ rte_distributor_return_pkt(struct rte_distributor *d,
 
 	if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) {
 		if (num == 1)
-			return rte_distributor_return_pkt_v20(d->d_v20,
+			return rte_distributor_return_pkt_single(d->d_single,
 				worker_id, oldpkt[0]);
 		else
 			return -EINVAL;
@@ -354,7 +355,8 @@ rte_distributor_process(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_process_v20(d->d_v20, mbufs, num_mbufs);
+		return rte_distributor_process_single(d->d_single,
+			mbufs, num_mbufs);
 	}
 
 	if (unlikely(num_mbufs == 0)) {
@@ -494,7 +496,7 @@ rte_distributor_returned_pkts(struct rte_distributor *d,
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_returned_pkts_v20(d->d_v20,
+		return rte_distributor_returned_pkts_single(d->d_single,
 				mbufs, max_mbufs);
 	}
 
@@ -537,7 +539,7 @@ rte_distributor_flush(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		return rte_distributor_flush_v20(d->d_v20);
+		return rte_distributor_flush_single(d->d_single);
 	}
 
 	flushed = total_outstanding(d);
@@ -568,7 +570,7 @@ rte_distributor_clear_returns(struct rte_distributor *d)
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
-		rte_distributor_clear_returns_v20(d->d_v20);
+		rte_distributor_clear_returns_single(d->d_single);
 		return;
 	}
 
@@ -610,9 +612,9 @@ rte_distributor_create(const char *name,
 			rte_errno = ENOMEM;
 			return NULL;
 		}
-		d->d_v20 = rte_distributor_create_v20(name,
+		d->d_single = rte_distributor_create_single(name,
 				socket_id, num_workers);
-		if (d->d_v20 == NULL) {
+		if (d->d_single == NULL) {
 			free(d);
 			/* rte_errno will have been set */
 			return NULL;
diff --git a/lib/librte_distributor/rte_distributor_v20.c b/lib/librte_distributor/rte_distributor_single.c
similarity index 87%
rename from lib/librte_distributor/rte_distributor_v20.c
rename to lib/librte_distributor/rte_distributor_single.c
index 655944bdb3..91d8824c64 100644
--- a/lib/librte_distributor/rte_distributor_v20.c
+++ b/lib/librte_distributor/rte_distributor_single.c
@@ -15,10 +15,10 @@
 #include <rte_pause.h>
 #include <rte_tailq.h>
 
-#include "rte_distributor_v20.h"
+#include "rte_distributor_single.h"
 #include "distributor_private.h"
 
-TAILQ_HEAD(rte_distributor_list, rte_distributor_v20);
+TAILQ_HEAD(rte_distributor_list, rte_distributor_single);
 
 static struct rte_tailq_elem rte_distributor_tailq = {
 	.name = "RTE_DISTRIBUTOR",
@@ -27,11 +27,11 @@ EAL_REGISTER_TAILQ(rte_distributor_tailq)
 
 /**** APIs called by workers ****/
 
-void __vsym
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+void
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	int64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_GET_BUF;
 	while (unlikely(__atomic_load_n(&buf->bufptr64, __ATOMIC_RELAXED)
@@ -42,11 +42,11 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
 	__atomic_store_n(&(buf->bufptr64), req, __ATOMIC_RELEASE);
 }
 
-struct rte_mbuf * __vsym
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+struct rte_mbuf *
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	/* Sync with distributor. Acquire bufptr64. */
 	if (__atomic_load_n(&buf->bufptr64, __ATOMIC_ACQUIRE)
 		& RTE_DISTRIB_GET_BUF)
@@ -57,22 +57,22 @@ rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
 	return (struct rte_mbuf *)((uintptr_t)ret);
 }
 
-struct rte_mbuf * __vsym
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+struct rte_mbuf *
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
 	struct rte_mbuf *ret;
-	rte_distributor_request_pkt_v20(d, worker_id, oldpkt);
-	while ((ret = rte_distributor_poll_pkt_v20(d, worker_id)) == NULL)
+	rte_distributor_request_pkt_single(d, worker_id, oldpkt);
+	while ((ret = rte_distributor_poll_pkt_single(d, worker_id)) == NULL)
 		rte_pause();
 	return ret;
 }
 
-int __vsym
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+int
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned worker_id, struct rte_mbuf *oldpkt)
 {
-	union rte_distributor_buffer_v20 *buf = &d->bufs[worker_id];
+	union rte_distributor_buffer_single *buf = &d->bufs[worker_id];
 	uint64_t req = (((int64_t)(uintptr_t)oldpkt) << RTE_DISTRIB_FLAG_BITS)
 			| RTE_DISTRIB_RETURN_BUF;
 	/* Sync with distributor on RETURN_BUF flag. */
@@ -104,7 +104,7 @@ backlog_pop(struct rte_distributor_backlog *bl)
 
 /* stores a packet returned from a worker inside the returns array */
 static inline void
-store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
+store_return(uintptr_t oldbuf, struct rte_distributor_single *d,
 		unsigned *ret_start, unsigned *ret_count)
 {
 	/* store returns in a circular buffer - code is branch-free */
@@ -115,7 +115,7 @@ store_return(uintptr_t oldbuf, struct rte_distributor_v20 *d,
 }
 
 static inline void
-handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
+handle_worker_shutdown(struct rte_distributor_single *d, unsigned int wkr)
 {
 	d->in_flight_tags[wkr] = 0;
 	d->in_flight_bitmask &= ~(1UL << wkr);
@@ -146,7 +146,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
 		 * Note that the tags were set before first level call
 		 * to rte_distributor_process.
 		 */
-		rte_distributor_process_v20(d, pkts, i);
+		rte_distributor_process_single(d, pkts, i);
 		bl->count = bl->start = 0;
 	}
 }
@@ -156,7 +156,7 @@ handle_worker_shutdown(struct rte_distributor_v20 *d, unsigned int wkr)
  * to do a partial flush.
  */
 static int
-process_returns(struct rte_distributor_v20 *d)
+process_returns(struct rte_distributor_single *d)
 {
 	unsigned wkr;
 	unsigned flushed = 0;
@@ -200,8 +200,8 @@ process_returns(struct rte_distributor_v20 *d)
 }
 
 /* process a set of packets to distribute them to workers */
-int __vsym
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+int
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned num_mbufs)
 {
 	unsigned next_idx = 0;
@@ -316,8 +316,8 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
 }
 
 /* return to the caller, packets returned from workers */
-int __vsym
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+int
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned max_mbufs)
 {
 	struct rte_distributor_returned_pkts *returns = &d->returns;
@@ -339,7 +339,7 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
  * being worked on or queued up in a backlog.
  */
 static inline unsigned
-total_outstanding(const struct rte_distributor_v20 *d)
+total_outstanding(const struct rte_distributor_single *d)
 {
 	unsigned wkr, total_outstanding;
 
@@ -353,20 +353,20 @@ total_outstanding(const struct rte_distributor_v20 *d)
 
 /* flush the distributor, so that there are no outstanding packets in flight or
  * queued up. */
-int __vsym
-rte_distributor_flush_v20(struct rte_distributor_v20 *d)
+int
+rte_distributor_flush_single(struct rte_distributor_single *d)
 {
 	const unsigned flushed = total_outstanding(d);
 
 	while (total_outstanding(d) > 0)
-		rte_distributor_process_v20(d, NULL, 0);
+		rte_distributor_process_single(d, NULL, 0);
 
 	return flushed;
 }
 
 /* clears the internal returns array in the distributor */
-void __vsym
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
+void
+rte_distributor_clear_returns_single(struct rte_distributor_single *d)
 {
 	d->returns.start = d->returns.count = 0;
 #ifndef __OPTIMIZE__
@@ -375,12 +375,12 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d)
 }
 
 /* creates a distributor instance */
-struct rte_distributor_v20 * __vsym
-rte_distributor_create_v20(const char *name,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name,
 		unsigned socket_id,
 		unsigned num_workers)
 {
-	struct rte_distributor_v20 *d;
+	struct rte_distributor_single *d;
 	struct rte_distributor_list *distributor_list;
 	char mz_name[RTE_MEMZONE_NAMESIZE];
 	const struct rte_memzone *mz;
diff --git a/lib/librte_distributor/rte_distributor_v20.h b/lib/librte_distributor/rte_distributor_single.h
similarity index 89%
rename from lib/librte_distributor/rte_distributor_v20.h
rename to lib/librte_distributor/rte_distributor_single.h
index 12865658ba..2f80aa43d1 100644
--- a/lib/librte_distributor/rte_distributor_v20.h
+++ b/lib/librte_distributor/rte_distributor_single.h
@@ -2,8 +2,8 @@
  * Copyright(c) 2010-2014 Intel Corporation
  */
 
-#ifndef _RTE_DISTRIB_V20_H_
-#define _RTE_DISTRIB_V20_H_
+#ifndef _RTE_DISTRIB_SINGLE_H_
+#define _RTE_DISTRIB_SINGLE_H_
 
 /**
  * @file
@@ -19,7 +19,7 @@ extern "C" {
 
 #define RTE_DISTRIBUTOR_NAMESIZE 32 /**< Length of name for instance */
 
-struct rte_distributor_v20;
+struct rte_distributor_single;
 struct rte_mbuf;
 
 /**
@@ -38,8 +38,8 @@ struct rte_mbuf;
  * @return
  *   The newly created distributor instance
  */
-struct rte_distributor_v20 *
-rte_distributor_create_v20(const char *name, unsigned int socket_id,
+struct rte_distributor_single *
+rte_distributor_create_single(const char *name, unsigned int socket_id,
 		unsigned int num_workers);
 
 /*  *** APIS to be called on the distributor lcore ***  */
@@ -74,7 +74,7 @@ rte_distributor_create_v20(const char *name, unsigned int socket_id,
  *   The number of mbufs processed.
  */
 int
-rte_distributor_process_v20(struct rte_distributor_v20 *d,
+rte_distributor_process_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int num_mbufs);
 
 /**
@@ -92,7 +92,7 @@ rte_distributor_process_v20(struct rte_distributor_v20 *d,
  *   The number of mbufs returned in the mbufs array.
  */
 int
-rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
+rte_distributor_returned_pkts_single(struct rte_distributor_single *d,
 		struct rte_mbuf **mbufs, unsigned int max_mbufs);
 
 /**
@@ -107,7 +107,7 @@ rte_distributor_returned_pkts_v20(struct rte_distributor_v20 *d,
  *   The number of queued/in-flight packets that were completed by this call.
  */
 int
-rte_distributor_flush_v20(struct rte_distributor_v20 *d);
+rte_distributor_flush_single(struct rte_distributor_single *d);
 
 /**
  * Clears the array of returned packets used as the source for the
@@ -119,7 +119,7 @@ rte_distributor_flush_v20(struct rte_distributor_v20 *d);
  *   The distributor instance to be used
  */
 void
-rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
+rte_distributor_clear_returns_single(struct rte_distributor_single *d);
 
 /*  *** APIS to be called on the worker lcores ***  */
 /*
@@ -148,7 +148,7 @@ rte_distributor_clear_returns_v20(struct rte_distributor_v20 *d);
  *   A new packet to be processed by the worker thread.
  */
 struct rte_mbuf *
-rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_get_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -164,7 +164,7 @@ rte_distributor_get_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet being processed by the worker
  */
 int
-rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_return_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *mbuf);
 
 /**
@@ -188,7 +188,7 @@ rte_distributor_return_pkt_v20(struct rte_distributor_v20 *d,
  *   The previous packet, if any, being processed by the worker
  */
 void
-rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_request_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id, struct rte_mbuf *oldpkt);
 
 /**
@@ -208,7 +208,7 @@ rte_distributor_request_pkt_v20(struct rte_distributor_v20 *d,
  *   packet is yet available.
  */
 struct rte_mbuf *
-rte_distributor_poll_pkt_v20(struct rte_distributor_v20 *d,
+rte_distributor_poll_pkt_single(struct rte_distributor_single *d,
 		unsigned int worker_id);
 
 #ifdef __cplusplus
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 3a285b394e..00e26b4804 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,19 +1,3 @@
-DPDK_2.0 {
-	global:
-
-	rte_distributor_clear_returns;
-	rte_distributor_create;
-	rte_distributor_flush;
-	rte_distributor_get_pkt;
-	rte_distributor_poll_pkt;
-	rte_distributor_process;
-	rte_distributor_request_pkt;
-	rte_distributor_return_pkt;
-	rte_distributor_returned_pkts;
-
-	local: *;
-};
-
 DPDK_17.05 {
 	global:
 
@@ -26,4 +10,4 @@ DPDK_17.05 {
 	rte_distributor_request_pkt;
 	rte_distributor_return_pkt;
 	rte_distributor_returned_pkts;
-} DPDK_2.0;
+};
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v8 10/12] drivers/octeontx: add missing public symbol
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
                               ` (9 preceding siblings ...)
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 09/12] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
@ 2019-11-20 17:23             ` Anatoly Burakov
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 11/12] build: change ABI version to 20.0 Anatoly Burakov
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 12/12] buildtools: add ABI versioning check script Anatoly Burakov
  12 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-20 17:23 UTC (permalink / raw)
  To: dev
  Cc: Jerin Jacob, john.mcnamara, ray.kinsella, bruce.richardson,
	thomas, david.marchand, pbhagavatula, stable

The logtype symbol was missing from the .map file. Add it.

Fixes: d8dd31652cf4 ("common/octeontx: move mbox to common folder")
Cc: pbhagavatula@caviumnetworks.com
Cc: stable@dpdk.org

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - add this patch to avoid compile breakage when bumping ABI

 drivers/common/octeontx/rte_common_octeontx_version.map | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index f04b3b7f8a..a9b3cff9bc 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,6 +1,7 @@
 DPDK_18.05 {
 	global:
 
+	octeontx_logtype_mbox;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
 	octeontx_mbox_send;
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v8 11/12] build: change ABI version to 20.0
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
                               ` (10 preceding siblings ...)
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 10/12] drivers/octeontx: add missing public symbol Anatoly Burakov
@ 2019-11-20 17:23             ` Anatoly Burakov
  2019-11-20 20:47               ` David Marchand
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 12/12] buildtools: add ABI versioning check script Anatoly Burakov
  12 siblings, 1 reply; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-20 17:23 UTC (permalink / raw)
  To: dev
  Cc: Pawel Modrak, Nicolas Chautru, Hemant Agrawal, Sachin Saxena,
	Rosen Xu, Stephen Hemminger, Anoob Joseph, Tomasz Duszynski,
	Liron Himi, Jerin Jacob, Nithin Dabilpuram, Vamsi Attunuru,
	Lee Daly, Fiona Trahe, Ashish Gupta, Sunila Sahu, Declan Doherty,
	Pablo de Lara, Gagandeep Singh, Ravi Kumar, Akhil Goyal,
	Michael Shamis, Nagadheeraj Rottela, Srikanth Jampala,
	Ankur Dwivedi, Fan Zhang, Jay Zhou, Nipun Gupta,
	Mattias Rönnblom, Pavan Nikhilesh, Liang Ma, Peter Mccarthy,
	Harry van Haaren, Artem V. Andreev, Andrew Rybchenko,
	Olivier Matz, Gage Eads, John W. Linville, Xiaolong Ye, Qi Zhang,
	Shepard Siegel, Ed Czeck, John Miller, Igor Russkikh,
	Pavel Belous, Allain Legacy, Matt Peters, Rasesh Mody,
	Shahed Shaikh, Ajit Khaparde, Somnath Kotur, Chas Williams,
	Rahul Lakkireddy, Wenzhuo Lu, Marcin Wojtas, Michal Krawczyk,
	Guy Tzalik, Evgeny Schemeilin, Igor Chauskin, John Daley,
	Hyong Youb Kim, Gaetan Rivet, Xiao Wang, Ziyang Xuan,
	Xiaoyun Wang, Guoyang Zhou, Wei Hu (Xavier), Min Hu (Connor),
	Yisen Zhuang, Beilei Xing, Jingjing Wu, Qiming Yang,
	Konstantin Ananyev, Ferruh Yigit, Shijith Thotton,
	Srisivasubramanian Srinivasan, Jakub Grajciar, Matan Azrad,
	Shahaf Shuler, Viacheslav Ovsiienko, Zyta Szpak,
	K. Y. Srinivasan, Haiyang Zhang, Rastislav Cernay, Jan Remes,
	Alejandro Lucero, Tetsuya Mukawa, Kiran Kumar K,
	Bruce Richardson, Jasvinder Singh, Cristian Dumitrescu,
	Keith Wiles, Maciej Czekaj, Maxime Coquelin, Tiwei Bie,
	Zhihong Wang, Yong Wang, Tianfei zhang, Xiaoyun Li, Satha Rao,
	Shreyansh Jain, David Hunt, Byron Marohn, Yipeng Wang,
	Thomas Monjalon, Jiayu Hu, Sameh Gobriel, Reshma Pattan,
	Vladimir Medvedkin, Robert Sanford, Erik Gabriel Carrillo,
	john.mcnamara, ray.kinsella, david.marchand

From: Pawel Modrak <pawelx.modrak@intel.com>

Merge all vesions in linker version script files to DPDK_20.0.

This commit was generated by running the following command:

:~/DPDK$ buildtools/update-abi.sh 20.0

Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |   8 +-
 .../null/rte_pmd_bbdev_null_version.map       |   2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |   2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     | 113 +++---
 drivers/bus/fslmc/rte_bus_fslmc_version.map   | 154 ++++-----
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |  14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |   2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |  12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |  12 +-
 drivers/common/cpt/rte_common_cpt_version.map |   9 +-
 .../common/dpaax/rte_common_dpaax_version.map |  14 +-
 .../common/mvep/rte_common_mvep_version.map   |   6 +-
 .../octeontx/rte_common_octeontx_version.map  |   6 +-
 .../rte_common_octeontx2_version.map          |  16 +-
 .../compress/isal/rte_pmd_isal_version.map    |   2 +-
 .../rte_pmd_octeontx_compress_version.map     |   2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |   2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |   2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |   2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |   2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |   2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |   3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |   3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |  10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |  10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |   2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |   2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |   2 +-
 .../null/rte_pmd_null_crypto_version.map      |   2 +-
 .../rte_pmd_octeontx_crypto_version.map       |   3 +-
 .../rte_pmd_octeontx2_crypto_version.map      |   3 +-
 .../openssl/rte_pmd_openssl_version.map       |   2 +-
 .../rte_pmd_crypto_scheduler_version.map      |  19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |   2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |   2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |   2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |   3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |   2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |   2 +-
 .../rte_pmd_octeontx_event_version.map        |   2 +-
 .../rte_pmd_octeontx2_event_version.map       |   3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |   2 +-
 .../rte_pmd_skeleton_event_version.map        |   3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |   2 +-
 .../bucket/rte_mempool_bucket_version.map     |   3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |   2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |  12 +-
 .../octeontx/rte_mempool_octeontx_version.map |   2 +-
 .../rte_mempool_octeontx2_version.map         |   4 +-
 .../mempool/ring/rte_mempool_ring_version.map |   3 +-
 .../stack/rte_mempool_stack_version.map       |   3 +-
 .../af_packet/rte_pmd_af_packet_version.map   |   3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |   2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |   5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |   4 +-
 drivers/net/avp/rte_pmd_avp_version.map       |   2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |   2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |   3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |   4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |  47 +--
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |   3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |  11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |  12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |   3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |   3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |   3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |   3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |   3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |   3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |   3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |   4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |  65 +---
 drivers/net/iavf/rte_pmd_iavf_version.map     |   3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |   3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |   3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |   3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |  62 ++--
 drivers/net/kni/rte_pmd_kni_version.map       |   3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |   3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |   5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |   3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |   2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |   2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |   2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |   4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |   3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |   2 +-
 drivers/net/null/rte_pmd_null_version.map     |   3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |  10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |   3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |   3 +-
 drivers/net/pfe/rte_pmd_pfe_version.map       |   3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |   3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |  10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |   3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |   2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |   2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |   3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |   3 +-
 .../rte_pmd_vdev_netvsc_version.map           |   3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |  11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |   3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |   3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |   3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |   4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |   3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |   3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |   5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |   3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |   3 +-
 lib/librte_acl/rte_acl_version.map            |   2 +-
 .../rte_bitratestats_version.map              |   2 +-
 lib/librte_cfgfile/rte_cfgfile_version.map    |  34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |  10 +-
 .../rte_cryptodev_version.map                 | 102 ++----
 .../rte_distributor_version.map               |   4 +-
 lib/librte_eal/rte_eal_version.map            | 324 ++++++------------
 lib/librte_efd/rte_efd_version.map            |   2 +-
 lib/librte_ethdev/rte_ethdev_version.map      | 160 +++------
 lib/librte_eventdev/rte_eventdev_version.map  | 130 +++----
 lib/librte_gro/rte_gro_version.map            |   2 +-
 lib/librte_gso/rte_gso_version.map            |   2 +-
 lib/librte_hash/rte_hash_version.map          |  43 +--
 lib/librte_ip_frag/rte_ip_frag_version.map    |  10 +-
 lib/librte_jobstats/rte_jobstats_version.map  |  10 +-
 lib/librte_kni/rte_kni_version.map            |   2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |   4 +-
 .../rte_latencystats_version.map              |   2 +-
 lib/librte_lpm/rte_lpm_version.map            |  32 +-
 lib/librte_mbuf/rte_mbuf_version.map          |  49 +--
 lib/librte_member/rte_member_version.map      |   2 +-
 lib/librte_mempool/rte_mempool_version.map    |  44 +--
 lib/librte_meter/rte_meter_version.map        |  13 +-
 lib/librte_metrics/rte_metrics_version.map    |   2 +-
 lib/librte_net/rte_net_version.map            |  23 +-
 lib/librte_pci/rte_pci_version.map            |   2 +-
 lib/librte_pdump/rte_pdump_version.map        |   2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |  36 +-
 lib/librte_port/rte_port_version.map          |  64 +---
 lib/librte_power/rte_power_version.map        |  24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |   4 +-
 lib/librte_reorder/rte_reorder_version.map    |   8 +-
 lib/librte_ring/rte_ring_version.map          |  10 +-
 lib/librte_sched/rte_sched_version.map        |  14 +-
 lib/librte_security/rte_security_version.map  |   2 +-
 lib/librte_table/rte_table_version.map        |   2 +-
 lib/librte_timer/rte_timer_version.map        |  21 +-
 lib/librte_vhost/rte_vhost_version.map        |  52 +--
 148 files changed, 707 insertions(+), 1426 deletions(-)

diff --git a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
index f64b0f9c27..6bcea2cc7f 100644
--- a/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
+++ b/drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map
@@ -1,10 +1,10 @@
-DPDK_19.08 {
-    local: *;
+DPDK_20.0 {
+	local: *;
 };
 
 EXPERIMENTAL {
-    global:
+	global:
 
-    fpga_lte_fec_configure;
+	fpga_lte_fec_configure;
 
 };
diff --git a/drivers/baseband/null/rte_pmd_bbdev_null_version.map b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/null/rte_pmd_bbdev_null_version.map
+++ b/drivers/baseband/null/rte_pmd_bbdev_null_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
+++ b/drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map
index cf428a54dc..e6ca4361e0 100644
--- a/drivers/bus/dpaa/rte_bus_dpaa_version.map
+++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	bman_acquire;
@@ -7,123 +7,90 @@ DPDK_17.11 {
 	bman_new_pool;
 	bman_query_free_buffers;
 	bman_release;
+	bman_thread_irq;
+	dpaa_logtype_eventdev;
 	dpaa_logtype_mempool;
 	dpaa_logtype_pmd;
 	dpaa_netcfg;
+	dpaa_svr_family;
 	fman_ccsr_map_fd;
 	fman_dealloc_bufs_mask_hi;
 	fman_dealloc_bufs_mask_lo;
 	fman_if_add_mac_addr;
 	fman_if_clear_mac_addr;
 	fman_if_disable_rx;
-	fman_if_enable_rx;
 	fman_if_discard_rx_errors;
-	fman_if_get_fc_threshold;
+	fman_if_enable_rx;
 	fman_if_get_fc_quanta;
+	fman_if_get_fc_threshold;
 	fman_if_get_fdoff;
+	fman_if_get_sg_enable;
 	fman_if_loopback_disable;
 	fman_if_loopback_enable;
 	fman_if_promiscuous_disable;
 	fman_if_promiscuous_enable;
 	fman_if_reset_mcast_filter_table;
 	fman_if_set_bp;
-	fman_if_set_fc_threshold;
 	fman_if_set_fc_quanta;
+	fman_if_set_fc_threshold;
 	fman_if_set_fdoff;
 	fman_if_set_ic_params;
 	fman_if_set_maxfrm;
 	fman_if_set_mcast_filter_table;
+	fman_if_set_sg;
 	fman_if_stats_get;
 	fman_if_stats_get_all;
 	fman_if_stats_reset;
 	fman_ip_rev;
+	fsl_qman_fq_portal_create;
 	netcfg_acquire;
 	netcfg_release;
-	qm_channel_caam;
-	qman_create_fq;
-	qman_dequeue;
-	qman_dqrr_consume;
-	qman_enqueue;
-	qman_enqueue_multi;
-	qman_fq_fqid;
-	qman_fq_state;
-	qman_init_fq;
-	qman_poll_dqrr;
-	qman_query_fq_np;
-	qman_set_vdq;
-	qman_reserve_fqid_range;
-	qman_volatile_dequeue;
-	rte_dpaa_driver_register;
-	rte_dpaa_driver_unregister;
-	rte_dpaa_mem_ptov;
-	rte_dpaa_portal_init;
-
-	local: *;
-};
-
-DPDK_18.02 {
-	global:
-
-	dpaa_logtype_eventdev;
-	dpaa_svr_family;
 	per_lcore_dpaa_io;
 	per_lcore_held_bufs;
+	qm_channel_caam;
 	qm_channel_pool1;
 	qman_alloc_cgrid_range;
 	qman_alloc_pool_range;
+	qman_clear_irq;
 	qman_create_cgr;
+	qman_create_fq;
 	qman_dca_index;
 	qman_delete_cgr;
+	qman_dequeue;
+	qman_dqrr_consume;
+	qman_enqueue;
+	qman_enqueue_multi;
 	qman_enqueue_multi_fq;
+	qman_fq_fqid;
+	qman_fq_portal_irqsource_add;
+	qman_fq_portal_irqsource_remove;
+	qman_fq_portal_thread_irq;
+	qman_fq_state;
+	qman_init_fq;
+	qman_irqsource_add;
+	qman_irqsource_remove;
 	qman_modify_cgr;
 	qman_oos_fq;
+	qman_poll_dqrr;
 	qman_portal_dequeue;
 	qman_portal_poll_rx;
 	qman_query_fq_frm_cnt;
+	qman_query_fq_np;
 	qman_release_cgrid_range;
+	qman_reserve_fqid_range;
 	qman_retire_fq;
+	qman_set_fq_lookup_table;
+	qman_set_vdq;
 	qman_static_dequeue_add;
-	rte_dpaa_portal_fq_close;
-	rte_dpaa_portal_fq_init;
-
-} DPDK_17.11;
-
-DPDK_18.08 {
-	global:
-
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-
-	bman_thread_irq;
-	fman_if_get_sg_enable;
-	fman_if_set_sg;
-	qman_clear_irq;
-
-	qman_irqsource_add;
-	qman_irqsource_remove;
 	qman_thread_fd;
 	qman_thread_irq;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	qman_set_fq_lookup_table;
-
-} DPDK_18.11;
-
-DPDK_19.11 {
-	global:
-
-	fsl_qman_fq_portal_create;
-	qman_fq_portal_irqsource_add;
-	qman_fq_portal_irqsource_remove;
-	qman_fq_portal_thread_irq;
-
-} DPDK_19.05;
+	qman_volatile_dequeue;
+	rte_dpaa_driver_register;
+	rte_dpaa_driver_unregister;
+	rte_dpaa_mem_ptov;
+	rte_dpaa_portal_fq_close;
+	rte_dpaa_portal_fq_init;
+	rte_dpaa_portal_init;
+
+	local: *;
+};
diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map
index 4da787236b..fe45575046 100644
--- a/drivers/bus/fslmc/rte_bus_fslmc_version.map
+++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map
@@ -1,32 +1,67 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
+	dpaa2_affine_qbman_ethrx_swp;
 	dpaa2_affine_qbman_swp;
 	dpaa2_alloc_dpbp_dev;
 	dpaa2_alloc_dq_storage;
+	dpaa2_dpbp_supported;
+	dpaa2_dqrr_size;
+	dpaa2_eqcr_size;
 	dpaa2_free_dpbp_dev;
 	dpaa2_free_dq_storage;
+	dpaa2_free_eq_descriptors;
+	dpaa2_get_qbman_swp;
+	dpaa2_io_portal;
+	dpaa2_svr_family;
+	dpaa2_virt_mode;
 	dpbp_disable;
 	dpbp_enable;
 	dpbp_get_attributes;
 	dpbp_get_num_free_bufs;
 	dpbp_open;
 	dpbp_reset;
+	dpci_get_opr;
+	dpci_set_opr;
+	dpci_set_rx_queue;
+	dpcon_get_attributes;
+	dpcon_open;
+	dpdmai_close;
+	dpdmai_disable;
+	dpdmai_enable;
+	dpdmai_get_attributes;
+	dpdmai_get_rx_queue;
+	dpdmai_get_tx_queue;
+	dpdmai_open;
+	dpdmai_set_rx_queue;
+	dpio_add_static_dequeue_channel;
 	dpio_close;
 	dpio_disable;
 	dpio_enable;
 	dpio_get_attributes;
 	dpio_open;
+	dpio_remove_static_dequeue_channel;
 	dpio_reset;
 	dpio_set_stashing_destination;
+	mc_get_soc_version;
+	mc_get_version;
 	mc_send_command;
 	per_lcore__dpaa2_io;
+	per_lcore_dpaa2_held_bufs;
 	qbman_check_command_complete;
+	qbman_check_new_result;
 	qbman_eq_desc_clear;
+	qbman_eq_desc_set_dca;
 	qbman_eq_desc_set_fq;
 	qbman_eq_desc_set_no_orp;
+	qbman_eq_desc_set_orp;
 	qbman_eq_desc_set_qd;
 	qbman_eq_desc_set_response;
+	qbman_eq_desc_set_token;
+	qbman_fq_query_state;
+	qbman_fq_state_frame_count;
+	qbman_get_dqrr_from_idx;
+	qbman_get_dqrr_idx;
 	qbman_pull_desc_clear;
 	qbman_pull_desc_set_fq;
 	qbman_pull_desc_set_numframes;
@@ -35,112 +70,43 @@ DPDK_17.05 {
 	qbman_release_desc_set_bpid;
 	qbman_result_DQ_fd;
 	qbman_result_DQ_flags;
-	qbman_result_has_new_result;
-	qbman_swp_acquire;
-	qbman_swp_pull;
-	qbman_swp_release;
-	rte_fslmc_driver_register;
-	rte_fslmc_driver_unregister;
-	rte_fslmc_vfio_dmamap;
-	rte_mcp_ptr_list;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	dpaa2_io_portal;
-	dpaa2_get_qbman_swp;
-	dpci_set_rx_queue;
-	dpcon_open;
-	dpcon_get_attributes;
-	dpio_add_static_dequeue_channel;
-	dpio_remove_static_dequeue_channel;
-	mc_get_soc_version;
-	mc_get_version;
-	qbman_check_new_result;
-	qbman_eq_desc_set_dca;
-	qbman_get_dqrr_from_idx;
-	qbman_get_dqrr_idx;
 	qbman_result_DQ_fqd_ctx;
+	qbman_result_DQ_odpid;
+	qbman_result_DQ_seqnum;
 	qbman_result_SCN_state;
+	qbman_result_eqresp_fd;
+	qbman_result_eqresp_rc;
+	qbman_result_eqresp_rspid;
+	qbman_result_eqresp_set_rspid;
+	qbman_result_has_new_result;
+	qbman_swp_acquire;
 	qbman_swp_dqrr_consume;
+	qbman_swp_dqrr_idx_consume;
 	qbman_swp_dqrr_next;
 	qbman_swp_enqueue_multiple;
 	qbman_swp_enqueue_multiple_desc;
+	qbman_swp_enqueue_multiple_fd;
 	qbman_swp_interrupt_clear_status;
+	qbman_swp_prefetch_dqrr_next;
+	qbman_swp_pull;
 	qbman_swp_push_set;
+	qbman_swp_release;
 	rte_dpaa2_alloc_dpci_dev;
-	rte_fslmc_object_register;
-	rte_global_active_dqs_list;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	dpaa2_dpbp_supported;
 	rte_dpaa2_dev_type;
+	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_intr_disable;
 	rte_dpaa2_intr_enable;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	dpaa2_svr_family;
-	dpaa2_virt_mode;
-	per_lcore_dpaa2_held_bufs;
-	qbman_fq_query_state;
-	qbman_fq_state_frame_count;
-	qbman_swp_dqrr_idx_consume;
-	qbman_swp_prefetch_dqrr_next;
-	rte_fslmc_get_device_count;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	dpaa2_affine_qbman_ethrx_swp;
-	dpdmai_close;
-	dpdmai_disable;
-	dpdmai_enable;
-	dpdmai_get_attributes;
-	dpdmai_get_rx_queue;
-	dpdmai_get_tx_queue;
-	dpdmai_open;
-	dpdmai_set_rx_queue;
-	rte_dpaa2_free_dpci_dev;
 	rte_dpaa2_memsegs;
-
-} DPDK_18.02;
-
-DPDK_18.11 {
-	global:
-	dpaa2_dqrr_size;
-	dpaa2_eqcr_size;
-	dpci_get_opr;
-	dpci_set_opr;
-
-} DPDK_18.05;
-
-DPDK_19.05 {
-	global:
-	dpaa2_free_eq_descriptors;
-
-	qbman_eq_desc_set_orp;
-	qbman_eq_desc_set_token;
-	qbman_result_DQ_odpid;
-	qbman_result_DQ_seqnum;
-	qbman_result_eqresp_fd;
-	qbman_result_eqresp_rc;
-	qbman_result_eqresp_rspid;
-	qbman_result_eqresp_set_rspid;
-	qbman_swp_enqueue_multiple_fd;
-} DPDK_18.11;
+	rte_fslmc_driver_register;
+	rte_fslmc_driver_unregister;
+	rte_fslmc_get_device_count;
+	rte_fslmc_object_register;
+	rte_fslmc_vfio_dmamap;
+	rte_global_active_dqs_list;
+	rte_mcp_ptr_list;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/bus/ifpga/rte_bus_ifpga_version.map b/drivers/bus/ifpga/rte_bus_ifpga_version.map
index 964c9a9c45..05b4a28c1b 100644
--- a/drivers/bus/ifpga/rte_bus_ifpga_version.map
+++ b/drivers/bus/ifpga/rte_bus_ifpga_version.map
@@ -1,17 +1,11 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
-	rte_ifpga_get_integer32_arg;
-	rte_ifpga_get_string_arg;
 	rte_ifpga_driver_register;
 	rte_ifpga_driver_unregister;
+	rte_ifpga_find_afu_by_name;
+	rte_ifpga_get_integer32_arg;
+	rte_ifpga_get_string_arg;
 
 	local: *;
 };
-
-DPDK_19.05 {
-	global:
-
-	rte_ifpga_find_afu_by_name;
-
-} DPDK_18.05;
diff --git a/drivers/bus/pci/rte_bus_pci_version.map b/drivers/bus/pci/rte_bus_pci_version.map
index 27e9c4f101..012d817e14 100644
--- a/drivers/bus/pci/rte_bus_pci_version.map
+++ b/drivers/bus/pci/rte_bus_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pci_dump;
diff --git a/drivers/bus/vdev/rte_bus_vdev_version.map b/drivers/bus/vdev/rte_bus_vdev_version.map
index 590cf9b437..5abb10ecb0 100644
--- a/drivers/bus/vdev/rte_bus_vdev_version.map
+++ b/drivers/bus/vdev/rte_bus_vdev_version.map
@@ -1,18 +1,12 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
+	rte_vdev_add_custom_scan;
 	rte_vdev_init;
 	rte_vdev_register;
+	rte_vdev_remove_custom_scan;
 	rte_vdev_uninit;
 	rte_vdev_unregister;
 
 	local: *;
 };
-
-DPDK_18.02 {
-	global:
-
-	rte_vdev_add_custom_scan;
-	rte_vdev_remove_custom_scan;
-
-} DPDK_17.11;
diff --git a/drivers/bus/vmbus/rte_bus_vmbus_version.map b/drivers/bus/vmbus/rte_bus_vmbus_version.map
index ae231ad329..cbaaebc06c 100644
--- a/drivers/bus/vmbus/rte_bus_vmbus_version.map
+++ b/drivers/bus/vmbus/rte_bus_vmbus_version.map
@@ -1,6 +1,4 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_vmbus_chan_close;
@@ -20,6 +18,7 @@ DPDK_18.08 {
 	rte_vmbus_probe;
 	rte_vmbus_register;
 	rte_vmbus_scan;
+	rte_vmbus_set_latency;
 	rte_vmbus_sub_channel_index;
 	rte_vmbus_subchan_open;
 	rte_vmbus_unmap_device;
@@ -27,10 +26,3 @@ DPDK_18.08 {
 
 	local: *;
 };
-
-DPDK_18.11 {
-	global:
-
-	rte_vmbus_set_latency;
-
-} DPDK_18.08;
diff --git a/drivers/common/cpt/rte_common_cpt_version.map b/drivers/common/cpt/rte_common_cpt_version.map
index 382ec4bd44..7f1929d58e 100644
--- a/drivers/common/cpt/rte_common_cpt_version.map
+++ b/drivers/common/cpt/rte_common_cpt_version.map
@@ -1,14 +1,9 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
+	cpt_pmd_ops_helper_asym_get_mlen;
 	cpt_pmd_ops_helper_get_mlen_direct_mode;
 	cpt_pmd_ops_helper_get_mlen_sg_mode;
-};
-
-DPDK_19.11 {
-	global:
-
-	cpt_pmd_ops_helper_asym_get_mlen;
 
 	local: *;
 };
diff --git a/drivers/common/dpaax/rte_common_dpaax_version.map b/drivers/common/dpaax/rte_common_dpaax_version.map
index a7699ae4dd..f72eba761d 100644
--- a/drivers/common/dpaax/rte_common_dpaax_version.map
+++ b/drivers/common/dpaax/rte_common_dpaax_version.map
@@ -1,29 +1,23 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	dpaax_iova_table_update;
 	dpaax_iova_table_depopulate;
 	dpaax_iova_table_dump;
 	dpaax_iova_table_p;
 	dpaax_iova_table_populate;
-
-	local: *;
-};
-
-DPDK_19.11 {
-	global:
+	dpaax_iova_table_update;
 	of_device_is_available;
 	of_device_is_compatible;
 	of_find_compatible_node;
 	of_find_node_by_phandle;
 	of_get_address;
 	of_get_mac_address;
+	of_get_next_child;
 	of_get_parent;
 	of_get_property;
 	of_init_path;
 	of_n_addr_cells;
 	of_translate_address;
-	of_get_next_child;
 
 	local: *;
-} DPDK_18.11;
+};
diff --git a/drivers/common/mvep/rte_common_mvep_version.map b/drivers/common/mvep/rte_common_mvep_version.map
index c71722d79f..030928439d 100644
--- a/drivers/common/mvep/rte_common_mvep_version.map
+++ b/drivers/common/mvep/rte_common_mvep_version.map
@@ -1,6 +1,8 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
-	rte_mvep_init;
 	rte_mvep_deinit;
+	rte_mvep_init;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx/rte_common_octeontx_version.map b/drivers/common/octeontx/rte_common_octeontx_version.map
index a9b3cff9bc..c15fb89112 100644
--- a/drivers/common/octeontx/rte_common_octeontx_version.map
+++ b/drivers/common/octeontx/rte_common_octeontx_version.map
@@ -1,8 +1,10 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	global:
 
 	octeontx_logtype_mbox;
+	octeontx_mbox_send;
 	octeontx_mbox_set_ram_mbox_base;
 	octeontx_mbox_set_reg;
-	octeontx_mbox_send;
+
+	local: *;
 };
diff --git a/drivers/common/octeontx2/rte_common_octeontx2_version.map b/drivers/common/octeontx2/rte_common_octeontx2_version.map
index 4400120da0..adad21a2d6 100644
--- a/drivers/common/octeontx2/rte_common_octeontx2_version.map
+++ b/drivers/common/octeontx2/rte_common_octeontx2_version.map
@@ -1,39 +1,35 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	otx2_dev_active_vfs;
 	otx2_dev_fini;
 	otx2_dev_priv_init;
-
+	otx2_disable_irqs;
+	otx2_intra_dev_get_cfg;
 	otx2_logtype_base;
 	otx2_logtype_dpi;
 	otx2_logtype_mbox;
+	otx2_logtype_nix;
 	otx2_logtype_npa;
 	otx2_logtype_npc;
-	otx2_logtype_nix;
 	otx2_logtype_sso;
-	otx2_logtype_tm;
 	otx2_logtype_tim;
-
+	otx2_logtype_tm;
 	otx2_mbox_alloc_msg_rsp;
 	otx2_mbox_get_rsp;
 	otx2_mbox_get_rsp_tmo;
 	otx2_mbox_id2name;
 	otx2_mbox_msg_send;
 	otx2_mbox_wait_for_rsp;
-
-	otx2_intra_dev_get_cfg;
 	otx2_npa_lf_active;
 	otx2_npa_lf_obj_get;
 	otx2_npa_lf_obj_ref;
 	otx2_npa_pf_func_get;
 	otx2_npa_set_defaults;
+	otx2_register_irq;
 	otx2_sso_pf_func_get;
 	otx2_sso_pf_func_set;
-
-	otx2_disable_irqs;
 	otx2_unregister_irq;
-	otx2_register_irq;
 
 	local: *;
 };
diff --git a/drivers/compress/isal/rte_pmd_isal_version.map b/drivers/compress/isal/rte_pmd_isal_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/compress/isal/rte_pmd_isal_version.map
+++ b/drivers/compress/isal/rte_pmd_isal_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
+++ b/drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/qat/rte_pmd_qat_version.map b/drivers/compress/qat/rte_pmd_qat_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/qat/rte_pmd_qat_version.map
+++ b/drivers/compress/qat/rte_pmd_qat_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/compress/zlib/rte_pmd_zlib_version.map b/drivers/compress/zlib/rte_pmd_zlib_version.map
index ad6e191e49..f9f17e4f6e 100644
--- a/drivers/compress/zlib/rte_pmd_zlib_version.map
+++ b/drivers/compress/zlib/rte_pmd_zlib_version.map
@@ -1,3 +1,3 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
+++ b/drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
+++ b/drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/armv8/rte_pmd_armv8_version.map b/drivers/crypto/armv8/rte_pmd_armv8_version.map
index 1f84b68a83..f9f17e4f6e 100644
--- a/drivers/crypto/armv8/rte_pmd_armv8_version.map
+++ b/drivers/crypto/armv8/rte_pmd_armv8_version.map
@@ -1,3 +1,3 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
+++ b/drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/ccp/rte_pmd_ccp_version.map b/drivers/crypto/ccp/rte_pmd_ccp_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/crypto/ccp/rte_pmd_ccp_version.map
+++ b/drivers/crypto/ccp/rte_pmd_ccp_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
index 0bfb986d0b..5952d645fd 100644
--- a/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
+++ b/drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_sec_eventq_attach;
 	dpaa2_sec_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
index cc7f2162e0..8580fa13db 100644
--- a/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
+++ b/drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map
@@ -1,12 +1,8 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_19.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa_sec_eventq_attach;
 	dpaa_sec_eventq_detach;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
index 8ffeca934e..f9f17e4f6e 100644
--- a/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
+++ b/drivers/crypto/kasumi/rte_pmd_kasumi_version.map
@@ -1,3 +1,3 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
+++ b/drivers/crypto/mvsam/rte_pmd_mvsam_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
index 406964d1fc..f9f17e4f6e 100644
--- a/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
+++ b/drivers/crypto/nitrox/rte_pmd_nitrox_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/null/rte_pmd_null_crypto_version.map b/drivers/crypto/null/rte_pmd_null_crypto_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/null/rte_pmd_null_crypto_version.map
+++ b/drivers/crypto/null/rte_pmd_null_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
+++ b/drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/octeontx2/rte_pmd_octeontx2_crypto_version.map b/drivers/crypto/octeontx2/rte_pmd_octeontx2_crypto_version.map
index b7b7c91683..f9f17e4f6e 100644
--- a/drivers/crypto/octeontx2/rte_pmd_octeontx2_crypto_version.map
+++ b/drivers/crypto/octeontx2/rte_pmd_octeontx2_crypto_version.map
@@ -1,4 +1,3 @@
-DPDK_19.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/openssl/rte_pmd_openssl_version.map b/drivers/crypto/openssl/rte_pmd_openssl_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/openssl/rte_pmd_openssl_version.map
+++ b/drivers/crypto/openssl/rte_pmd_openssl_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
index 5c43127cf2..077afedce7 100644
--- a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
+++ b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map
@@ -1,21 +1,16 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_cryptodev_scheduler_load_user_scheduler;
-	rte_cryptodev_scheduler_slave_attach;
-	rte_cryptodev_scheduler_slave_detach;
-	rte_cryptodev_scheduler_ordering_set;
-	rte_cryptodev_scheduler_ordering_get;
-
-};
-
-DPDK_17.05 {
-	global:
-
 	rte_cryptodev_scheduler_mode_get;
 	rte_cryptodev_scheduler_mode_set;
 	rte_cryptodev_scheduler_option_get;
 	rte_cryptodev_scheduler_option_set;
+	rte_cryptodev_scheduler_ordering_get;
+	rte_cryptodev_scheduler_ordering_set;
+	rte_cryptodev_scheduler_slave_attach;
+	rte_cryptodev_scheduler_slave_detach;
 	rte_cryptodev_scheduler_slaves_get;
 
-} DPDK_17.02;
+	local: *;
+};
diff --git a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
index dc4d417b7b..f9f17e4f6e 100644
--- a/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
+++ b/drivers/crypto/snow3g/rte_pmd_snow3g_version.map
@@ -1,3 +1,3 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
+++ b/drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/crypto/zuc/rte_pmd_zuc_version.map b/drivers/crypto/zuc/rte_pmd_zuc_version.map
index cc5829e30b..f9f17e4f6e 100644
--- a/drivers/crypto/zuc/rte_pmd_zuc_version.map
+++ b/drivers/crypto/zuc/rte_pmd_zuc_version.map
@@ -1,3 +1,3 @@
-DPDK_16.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
+++ b/drivers/event/dpaa/rte_pmd_dpaa_event_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
index 1c0b7559dc..f9f17e4f6e 100644
--- a/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
+++ b/drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/dsw/rte_pmd_dsw_event_version.map b/drivers/event/dsw/rte_pmd_dsw_event_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/event/dsw/rte_pmd_dsw_event_version.map
+++ b/drivers/event/dsw/rte_pmd_dsw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
+++ b/drivers/event/octeontx/rte_pmd_octeontx_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
index 41c65c8c9c..f9f17e4f6e 100644
--- a/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
+++ b/drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	local: *;
 };
-
diff --git a/drivers/event/opdl/rte_pmd_opdl_event_version.map b/drivers/event/opdl/rte_pmd_opdl_event_version.map
index 58b94270d4..f9f17e4f6e 100644
--- a/drivers/event/opdl/rte_pmd_opdl_event_version.map
+++ b/drivers/event/opdl/rte_pmd_opdl_event_version.map
@@ -1,3 +1,3 @@
-DPDK_18.02 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
+++ b/drivers/event/skeleton/rte_pmd_skeleton_event_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/event/sw/rte_pmd_sw_event_version.map b/drivers/event/sw/rte_pmd_sw_event_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/event/sw/rte_pmd_sw_event_version.map
+++ b/drivers/event/sw/rte_pmd_sw_event_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/bucket/rte_mempool_bucket_version.map b/drivers/mempool/bucket/rte_mempool_bucket_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/mempool/bucket/rte_mempool_bucket_version.map
+++ b/drivers/mempool/bucket/rte_mempool_bucket_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
index 60bf50b2d1..9eebaf7ffd 100644
--- a/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
+++ b/drivers/mempool/dpaa/rte_mempool_dpaa_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa_bpid_info;
diff --git a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
index b45e7a9ac1..cd4bc88273 100644
--- a/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
+++ b/drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map
@@ -1,16 +1,10 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_dpaa2_bpid_info;
 	rte_dpaa2_mbuf_alloc_bulk;
-
-	local: *;
-};
-
-DPDK_18.05 {
-	global:
-
 	rte_dpaa2_mbuf_from_buf_addr;
 	rte_dpaa2_mbuf_pool_bpid;
 
-} DPDK_17.05;
+	local: *;
+};
diff --git a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
+++ b/drivers/mempool/octeontx/rte_mempool_octeontx_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
index d703368c31..d4f81aed8e 100644
--- a/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
+++ b/drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map
@@ -1,8 +1,8 @@
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
-	otx2_npa_lf_init;
 	otx2_npa_lf_fini;
+	otx2_npa_lf_init;
 
 	local: *;
 };
diff --git a/drivers/mempool/ring/rte_mempool_ring_version.map b/drivers/mempool/ring/rte_mempool_ring_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/ring/rte_mempool_ring_version.map
+++ b/drivers/mempool/ring/rte_mempool_ring_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/mempool/stack/rte_mempool_stack_version.map b/drivers/mempool/stack/rte_mempool_stack_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/mempool/stack/rte_mempool_stack_version.map
+++ b/drivers/mempool/stack/rte_mempool_stack_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_packet/rte_pmd_af_packet_version.map b/drivers/net/af_packet/rte_pmd_af_packet_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/af_packet/rte_pmd_af_packet_version.map
+++ b/drivers/net/af_packet/rte_pmd_af_packet_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
index c6db030fe6..f9f17e4f6e 100644
--- a/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
+++ b/drivers/net/af_xdp/rte_pmd_af_xdp_version.map
@@ -1,3 +1,3 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ark/rte_pmd_ark_version.map b/drivers/net/ark/rte_pmd_ark_version.map
index 1062e0429f..f9f17e4f6e 100644
--- a/drivers/net/ark/rte_pmd_ark_version.map
+++ b/drivers/net/ark/rte_pmd_ark_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-	 local: *;
-
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/atlantic/rte_pmd_atlantic_version.map b/drivers/net/atlantic/rte_pmd_atlantic_version.map
index b16faa999f..9b04838d84 100644
--- a/drivers/net/atlantic/rte_pmd_atlantic_version.map
+++ b/drivers/net/atlantic/rte_pmd_atlantic_version.map
@@ -1,5 +1,4 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
 
@@ -13,4 +12,3 @@ EXPERIMENTAL {
 	rte_pmd_atl_macsec_select_txsa;
 	rte_pmd_atl_macsec_select_rxsa;
 };
-
diff --git a/drivers/net/avp/rte_pmd_avp_version.map b/drivers/net/avp/rte_pmd_avp_version.map
index 5352e7e3bd..f9f17e4f6e 100644
--- a/drivers/net/avp/rte_pmd_avp_version.map
+++ b/drivers/net/avp/rte_pmd_avp_version.map
@@ -1,3 +1,3 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/axgbe/rte_pmd_axgbe_version.map b/drivers/net/axgbe/rte_pmd_axgbe_version.map
index de8e412ff1..f9f17e4f6e 100644
--- a/drivers/net/axgbe/rte_pmd_axgbe_version.map
+++ b/drivers/net/axgbe/rte_pmd_axgbe_version.map
@@ -1,3 +1,3 @@
-DPDK_18.05 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
+++ b/drivers/net/bnx2x/rte_pmd_bnx2x_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/bnxt/rte_pmd_bnxt_version.map b/drivers/net/bnxt/rte_pmd_bnxt_version.map
index 4750d40ad6..bb52562347 100644
--- a/drivers/net/bnxt/rte_pmd_bnxt_version.map
+++ b/drivers/net/bnxt/rte_pmd_bnxt_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_bnxt_get_vf_rx_status;
@@ -10,13 +10,13 @@ DPDK_17.08 {
 	rte_pmd_bnxt_set_tx_loopback;
 	rte_pmd_bnxt_set_vf_mac_addr;
 	rte_pmd_bnxt_set_vf_mac_anti_spoof;
+	rte_pmd_bnxt_set_vf_persist_stats;
 	rte_pmd_bnxt_set_vf_rate_limit;
 	rte_pmd_bnxt_set_vf_rxmode;
 	rte_pmd_bnxt_set_vf_vlan_anti_spoof;
 	rte_pmd_bnxt_set_vf_vlan_filter;
 	rte_pmd_bnxt_set_vf_vlan_insert;
 	rte_pmd_bnxt_set_vf_vlan_stripq;
-	rte_pmd_bnxt_set_vf_persist_stats;
 
 	local: *;
 };
diff --git a/drivers/net/bonding/rte_pmd_bond_version.map b/drivers/net/bonding/rte_pmd_bond_version.map
index 00d955c481..270c7d5d55 100644
--- a/drivers/net/bonding/rte_pmd_bond_version.map
+++ b/drivers/net/bonding/rte_pmd_bond_version.map
@@ -1,9 +1,21 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_bond_8023ad_agg_selection_get;
+	rte_eth_bond_8023ad_agg_selection_set;
+	rte_eth_bond_8023ad_conf_get;
+	rte_eth_bond_8023ad_dedicated_queues_disable;
+	rte_eth_bond_8023ad_dedicated_queues_enable;
+	rte_eth_bond_8023ad_ext_collect;
+	rte_eth_bond_8023ad_ext_collect_get;
+	rte_eth_bond_8023ad_ext_distrib;
+	rte_eth_bond_8023ad_ext_distrib_get;
+	rte_eth_bond_8023ad_ext_slowtx;
+	rte_eth_bond_8023ad_setup;
 	rte_eth_bond_8023ad_slave_info;
 	rte_eth_bond_active_slaves_get;
 	rte_eth_bond_create;
+	rte_eth_bond_free;
 	rte_eth_bond_link_monitoring_set;
 	rte_eth_bond_mac_address_reset;
 	rte_eth_bond_mac_address_set;
@@ -19,36 +31,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	rte_eth_bond_free;
-
-} DPDK_2.0;
-
-DPDK_16.04 {
-};
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_bond_8023ad_ext_collect;
-	rte_eth_bond_8023ad_ext_collect_get;
-	rte_eth_bond_8023ad_ext_distrib;
-	rte_eth_bond_8023ad_ext_distrib_get;
-	rte_eth_bond_8023ad_ext_slowtx;
-
-} DPDK_16.04;
-
-DPDK_17.08 {
-	global:
-
-	rte_eth_bond_8023ad_dedicated_queues_enable;
-	rte_eth_bond_8023ad_dedicated_queues_disable;
-	rte_eth_bond_8023ad_agg_selection_get;
-	rte_eth_bond_8023ad_agg_selection_set;
-	rte_eth_bond_8023ad_conf_get;
-	rte_eth_bond_8023ad_setup;
-
-} DPDK_16.07;
diff --git a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
index bd8138a034..f9f17e4f6e 100644
--- a/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
+++ b/drivers/net/cxgbe/rte_pmd_cxgbe_version.map
@@ -1,4 +1,3 @@
-DPDK_2.1 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/dpaa/rte_pmd_dpaa_version.map b/drivers/net/dpaa/rte_pmd_dpaa_version.map
index 8cb4500b51..f403a1526d 100644
--- a/drivers/net/dpaa/rte_pmd_dpaa_version.map
+++ b/drivers/net/dpaa/rte_pmd_dpaa_version.map
@@ -1,12 +1,9 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	dpaa_eth_eventq_attach;
 	dpaa_eth_eventq_detach;
 	rte_pmd_dpaa_set_tx_loopback;
-} DPDK_17.11;
+
+	local: *;
+};
diff --git a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
index d1b4cdb232..f2bb793319 100644
--- a/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
+++ b/drivers/net/dpaa2/rte_pmd_dpaa2_version.map
@@ -1,15 +1,11 @@
-DPDK_17.05 {
-
-	local: *;
-};
-
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	dpaa2_eth_eventq_attach;
 	dpaa2_eth_eventq_detach;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
@@ -17,4 +13,4 @@ EXPERIMENTAL {
 	rte_pmd_dpaa2_mux_flow_create;
 	rte_pmd_dpaa2_set_custom_hash;
 	rte_pmd_dpaa2_set_timestamp;
-} DPDK_17.11;
+};
diff --git a/drivers/net/e1000/rte_pmd_e1000_version.map b/drivers/net/e1000/rte_pmd_e1000_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/e1000/rte_pmd_e1000_version.map
+++ b/drivers/net/e1000/rte_pmd_e1000_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ena/rte_pmd_ena_version.map b/drivers/net/ena/rte_pmd_ena_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/ena/rte_pmd_ena_version.map
+++ b/drivers/net/ena/rte_pmd_ena_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enetc/rte_pmd_enetc_version.map b/drivers/net/enetc/rte_pmd_enetc_version.map
index 521e51f411..f9f17e4f6e 100644
--- a/drivers/net/enetc/rte_pmd_enetc_version.map
+++ b/drivers/net/enetc/rte_pmd_enetc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/enic/rte_pmd_enic_version.map b/drivers/net/enic/rte_pmd_enic_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/enic/rte_pmd_enic_version.map
+++ b/drivers/net/enic/rte_pmd_enic_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/failsafe/rte_pmd_failsafe_version.map b/drivers/net/failsafe/rte_pmd_failsafe_version.map
index b6d2840be4..f9f17e4f6e 100644
--- a/drivers/net/failsafe/rte_pmd_failsafe_version.map
+++ b/drivers/net/failsafe/rte_pmd_failsafe_version.map
@@ -1,4 +1,3 @@
-DPDK_17.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/fm10k/rte_pmd_fm10k_version.map b/drivers/net/fm10k/rte_pmd_fm10k_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/fm10k/rte_pmd_fm10k_version.map
+++ b/drivers/net/fm10k/rte_pmd_fm10k_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hinic/rte_pmd_hinic_version.map b/drivers/net/hinic/rte_pmd_hinic_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/hinic/rte_pmd_hinic_version.map
+++ b/drivers/net/hinic/rte_pmd_hinic_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/hns3/rte_pmd_hns3_version.map b/drivers/net/hns3/rte_pmd_hns3_version.map
index 35e5f2debb..f9f17e4f6e 100644
--- a/drivers/net/hns3/rte_pmd_hns3_version.map
+++ b/drivers/net/hns3/rte_pmd_hns3_version.map
@@ -1,3 +1,3 @@
-DPDK_19.11 {
-	 local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/i40e/rte_pmd_i40e_version.map b/drivers/net/i40e/rte_pmd_i40e_version.map
index cccd5768c2..a80e69b93e 100644
--- a/drivers/net/i40e/rte_pmd_i40e_version.map
+++ b/drivers/net/i40e/rte_pmd_i40e_version.map
@@ -1,23 +1,34 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_i40e_add_vf_mac_addr;
+	rte_pmd_i40e_flow_add_del_packet_template;
+	rte_pmd_i40e_flow_type_mapping_get;
+	rte_pmd_i40e_flow_type_mapping_reset;
+	rte_pmd_i40e_flow_type_mapping_update;
+	rte_pmd_i40e_get_ddp_info;
+	rte_pmd_i40e_get_ddp_list;
 	rte_pmd_i40e_get_vf_stats;
+	rte_pmd_i40e_inset_get;
+	rte_pmd_i40e_inset_set;
 	rte_pmd_i40e_ping_vfs;
+	rte_pmd_i40e_process_ddp_package;
 	rte_pmd_i40e_ptype_mapping_get;
 	rte_pmd_i40e_ptype_mapping_replace;
 	rte_pmd_i40e_ptype_mapping_reset;
 	rte_pmd_i40e_ptype_mapping_update;
+	rte_pmd_i40e_query_vfid_by_mac;
 	rte_pmd_i40e_reset_vf_stats;
+	rte_pmd_i40e_rss_queue_region_conf;
+	rte_pmd_i40e_set_tc_strict_prio;
 	rte_pmd_i40e_set_tx_loopback;
 	rte_pmd_i40e_set_vf_broadcast;
 	rte_pmd_i40e_set_vf_mac_addr;
 	rte_pmd_i40e_set_vf_mac_anti_spoof;
+	rte_pmd_i40e_set_vf_max_bw;
 	rte_pmd_i40e_set_vf_multicast_promisc;
+	rte_pmd_i40e_set_vf_tc_bw_alloc;
+	rte_pmd_i40e_set_vf_tc_max_bw;
 	rte_pmd_i40e_set_vf_unicast_promisc;
 	rte_pmd_i40e_set_vf_vlan_anti_spoof;
 	rte_pmd_i40e_set_vf_vlan_filter;
@@ -25,43 +36,5 @@ DPDK_17.02 {
 	rte_pmd_i40e_set_vf_vlan_stripq;
 	rte_pmd_i40e_set_vf_vlan_tag;
 
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_pmd_i40e_set_tc_strict_prio;
-	rte_pmd_i40e_set_vf_max_bw;
-	rte_pmd_i40e_set_vf_tc_bw_alloc;
-	rte_pmd_i40e_set_vf_tc_max_bw;
-	rte_pmd_i40e_process_ddp_package;
-	rte_pmd_i40e_get_ddp_list;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_i40e_get_ddp_info;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_pmd_i40e_add_vf_mac_addr;
-	rte_pmd_i40e_flow_add_del_packet_template;
-	rte_pmd_i40e_flow_type_mapping_update;
-	rte_pmd_i40e_flow_type_mapping_get;
-	rte_pmd_i40e_flow_type_mapping_reset;
-	rte_pmd_i40e_query_vfid_by_mac;
-	rte_pmd_i40e_rss_queue_region_conf;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_pmd_i40e_inset_get;
-	rte_pmd_i40e_inset_set;
-} DPDK_17.11;
\ No newline at end of file
+	local: *;
+};
diff --git a/drivers/net/iavf/rte_pmd_iavf_version.map b/drivers/net/iavf/rte_pmd_iavf_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/iavf/rte_pmd_iavf_version.map
+++ b/drivers/net/iavf/rte_pmd_iavf_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ice/rte_pmd_ice_version.map b/drivers/net/ice/rte_pmd_ice_version.map
index 0677a1c696..d04b194c13 100644
--- a/drivers/net/ice/rte_pmd_ice_version.map
+++ b/drivers/net/ice/rte_pmd_ice_version.map
@@ -1,5 +1,4 @@
-DPDK_19.02 {
-
+DPDK_20.0 {
 	local: *;
 };
 
diff --git a/drivers/net/ifc/rte_pmd_ifc_version.map b/drivers/net/ifc/rte_pmd_ifc_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/net/ifc/rte_pmd_ifc_version.map
+++ b/drivers/net/ifc/rte_pmd_ifc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
+++ b/drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
index c814f96d72..21534dbc3d 100644
--- a/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
+++ b/drivers/net/ixgbe/rte_pmd_ixgbe_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
-	rte_pmd_ixgbe_set_all_queues_drop_en;
-	rte_pmd_ixgbe_set_tx_loopback;
-	rte_pmd_ixgbe_set_vf_mac_addr;
-	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
-	rte_pmd_ixgbe_set_vf_split_drop_en;
-	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
-	rte_pmd_ixgbe_set_vf_vlan_insert;
-	rte_pmd_ixgbe_set_vf_vlan_stripq;
-} DPDK_2.0;
-
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
+	rte_pmd_ixgbe_bypass_event_show;
+	rte_pmd_ixgbe_bypass_event_store;
+	rte_pmd_ixgbe_bypass_init;
+	rte_pmd_ixgbe_bypass_state_set;
+	rte_pmd_ixgbe_bypass_state_show;
+	rte_pmd_ixgbe_bypass_ver_show;
+	rte_pmd_ixgbe_bypass_wd_reset;
+	rte_pmd_ixgbe_bypass_wd_timeout_show;
+	rte_pmd_ixgbe_bypass_wd_timeout_store;
 	rte_pmd_ixgbe_macsec_config_rxsc;
 	rte_pmd_ixgbe_macsec_config_txsc;
 	rte_pmd_ixgbe_macsec_disable;
 	rte_pmd_ixgbe_macsec_enable;
 	rte_pmd_ixgbe_macsec_select_rxsa;
 	rte_pmd_ixgbe_macsec_select_txsa;
+	rte_pmd_ixgbe_ping_vf;
+	rte_pmd_ixgbe_set_all_queues_drop_en;
+	rte_pmd_ixgbe_set_tc_bw_alloc;
+	rte_pmd_ixgbe_set_tx_loopback;
+	rte_pmd_ixgbe_set_vf_mac_addr;
+	rte_pmd_ixgbe_set_vf_mac_anti_spoof;
 	rte_pmd_ixgbe_set_vf_rate_limit;
 	rte_pmd_ixgbe_set_vf_rx;
 	rte_pmd_ixgbe_set_vf_rxmode;
+	rte_pmd_ixgbe_set_vf_split_drop_en;
 	rte_pmd_ixgbe_set_vf_tx;
+	rte_pmd_ixgbe_set_vf_vlan_anti_spoof;
 	rte_pmd_ixgbe_set_vf_vlan_filter;
-} DPDK_16.11;
+	rte_pmd_ixgbe_set_vf_vlan_insert;
+	rte_pmd_ixgbe_set_vf_vlan_stripq;
 
-DPDK_17.05 {
-	global:
-
-	rte_pmd_ixgbe_ping_vf;
-	rte_pmd_ixgbe_set_tc_bw_alloc;
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_pmd_ixgbe_bypass_event_show;
-	rte_pmd_ixgbe_bypass_event_store;
-	rte_pmd_ixgbe_bypass_init;
-	rte_pmd_ixgbe_bypass_state_set;
-	rte_pmd_ixgbe_bypass_state_show;
-	rte_pmd_ixgbe_bypass_ver_show;
-	rte_pmd_ixgbe_bypass_wd_reset;
-	rte_pmd_ixgbe_bypass_wd_timeout_show;
-	rte_pmd_ixgbe_bypass_wd_timeout_store;
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/drivers/net/kni/rte_pmd_kni_version.map b/drivers/net/kni/rte_pmd_kni_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/kni/rte_pmd_kni_version.map
+++ b/drivers/net/kni/rte_pmd_kni_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/liquidio/rte_pmd_liquidio_version.map b/drivers/net/liquidio/rte_pmd_liquidio_version.map
index 8591cc0b18..f9f17e4f6e 100644
--- a/drivers/net/liquidio/rte_pmd_liquidio_version.map
+++ b/drivers/net/liquidio/rte_pmd_liquidio_version.map
@@ -1,4 +1,3 @@
-DPDK_17.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/memif/rte_pmd_memif_version.map b/drivers/net/memif/rte_pmd_memif_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/net/memif/rte_pmd_memif_version.map
+++ b/drivers/net/memif/rte_pmd_memif_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/net/mlx4/rte_pmd_mlx4_version.map b/drivers/net/mlx4/rte_pmd_mlx4_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/mlx4/rte_pmd_mlx4_version.map
+++ b/drivers/net/mlx4/rte_pmd_mlx4_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mlx5/rte_pmd_mlx5_version.map b/drivers/net/mlx5/rte_pmd_mlx5_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/mlx5/rte_pmd_mlx5_version.map
+++ b/drivers/net/mlx5/rte_pmd_mlx5_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvneta/rte_pmd_mvneta_version.map b/drivers/net/mvneta/rte_pmd_mvneta_version.map
index 24bd5cdb35..f9f17e4f6e 100644
--- a/drivers/net/mvneta/rte_pmd_mvneta_version.map
+++ b/drivers/net/mvneta/rte_pmd_mvneta_version.map
@@ -1,3 +1,3 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
index a753031720..f9f17e4f6e 100644
--- a/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
+++ b/drivers/net/mvpp2/rte_pmd_mvpp2_version.map
@@ -1,3 +1,3 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/netvsc/rte_pmd_netvsc_version.map b/drivers/net/netvsc/rte_pmd_netvsc_version.map
index d534019a6b..f9f17e4f6e 100644
--- a/drivers/net/netvsc/rte_pmd_netvsc_version.map
+++ b/drivers/net/netvsc/rte_pmd_netvsc_version.map
@@ -1,5 +1,3 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-
-DPDK_18.08 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfb/rte_pmd_nfb_version.map b/drivers/net/nfb/rte_pmd_nfb_version.map
index fc8c95e919..f9f17e4f6e 100644
--- a/drivers/net/nfb/rte_pmd_nfb_version.map
+++ b/drivers/net/nfb/rte_pmd_nfb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/nfp/rte_pmd_nfp_version.map b/drivers/net/nfp/rte_pmd_nfp_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/nfp/rte_pmd_nfp_version.map
+++ b/drivers/net/nfp/rte_pmd_nfp_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/null/rte_pmd_null_version.map b/drivers/net/null/rte_pmd_null_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/null/rte_pmd_null_version.map
+++ b/drivers/net/null/rte_pmd_null_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/octeontx/rte_pmd_octeontx_version.map b/drivers/net/octeontx/rte_pmd_octeontx_version.map
index a3161b14d0..f7cae02fac 100644
--- a/drivers/net/octeontx/rte_pmd_octeontx_version.map
+++ b/drivers/net/octeontx/rte_pmd_octeontx_version.map
@@ -1,11 +1,7 @@
-DPDK_17.11 {
-
-	local: *;
-};
-
-DPDK_18.02 {
+DPDK_20.0 {
 	global:
 
 	rte_octeontx_pchan_map;
 
-} DPDK_17.11;
+	local: *;
+};
diff --git a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
+++ b/drivers/net/octeontx2/rte_pmd_octeontx2_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/pcap/rte_pmd_pcap_version.map b/drivers/net/pcap/rte_pmd_pcap_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/pcap/rte_pmd_pcap_version.map
+++ b/drivers/net/pcap/rte_pmd_pcap_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/pfe/rte_pmd_pfe_version.map b/drivers/net/pfe/rte_pmd_pfe_version.map
index b7b7c91683..f9f17e4f6e 100644
--- a/drivers/net/pfe/rte_pmd_pfe_version.map
+++ b/drivers/net/pfe/rte_pmd_pfe_version.map
@@ -1,4 +1,3 @@
-DPDK_19.11 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/qede/rte_pmd_qede_version.map b/drivers/net/qede/rte_pmd_qede_version.map
index 349c6e1c22..f9f17e4f6e 100644
--- a/drivers/net/qede/rte_pmd_qede_version.map
+++ b/drivers/net/qede/rte_pmd_qede_version.map
@@ -1,4 +1,3 @@
-DPDK_16.04 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/ring/rte_pmd_ring_version.map b/drivers/net/ring/rte_pmd_ring_version.map
index 1f785d9409..ebb6be2733 100644
--- a/drivers/net/ring/rte_pmd_ring_version.map
+++ b/drivers/net/ring/rte_pmd_ring_version.map
@@ -1,14 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_eth_from_ring;
 	rte_eth_from_rings;
 
 	local: *;
 };
-
-DPDK_2.2 {
-	global:
-
-	rte_eth_from_ring;
-
-} DPDK_2.0;
diff --git a/drivers/net/sfc/rte_pmd_sfc_version.map b/drivers/net/sfc/rte_pmd_sfc_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/sfc/rte_pmd_sfc_version.map
+++ b/drivers/net/sfc/rte_pmd_sfc_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/softnic/rte_pmd_softnic_version.map b/drivers/net/softnic/rte_pmd_softnic_version.map
index bc44b06f98..50f113d5a2 100644
--- a/drivers/net/softnic/rte_pmd_softnic_version.map
+++ b/drivers/net/softnic/rte_pmd_softnic_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_pmd_softnic_run;
diff --git a/drivers/net/szedata2/rte_pmd_szedata2_version.map b/drivers/net/szedata2/rte_pmd_szedata2_version.map
index ad607bbedd..f9f17e4f6e 100644
--- a/drivers/net/szedata2/rte_pmd_szedata2_version.map
+++ b/drivers/net/szedata2/rte_pmd_szedata2_version.map
@@ -1,3 +1,3 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/tap/rte_pmd_tap_version.map b/drivers/net/tap/rte_pmd_tap_version.map
index 31eca32ebe..f9f17e4f6e 100644
--- a/drivers/net/tap/rte_pmd_tap_version.map
+++ b/drivers/net/tap/rte_pmd_tap_version.map
@@ -1,4 +1,3 @@
-DPDK_17.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/thunderx/rte_pmd_thunderx_version.map b/drivers/net/thunderx/rte_pmd_thunderx_version.map
index 1901bcb3b3..f9f17e4f6e 100644
--- a/drivers/net/thunderx/rte_pmd_thunderx_version.map
+++ b/drivers/net/thunderx/rte_pmd_thunderx_version.map
@@ -1,4 +1,3 @@
-DPDK_16.07 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
+++ b/drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vhost/rte_pmd_vhost_version.map b/drivers/net/vhost/rte_pmd_vhost_version.map
index 695db85749..16b591ccc4 100644
--- a/drivers/net/vhost/rte_pmd_vhost_version.map
+++ b/drivers/net/vhost/rte_pmd_vhost_version.map
@@ -1,13 +1,8 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_vhost_get_queue_event;
-
-	local: *;
-};
-
-DPDK_16.11 {
-	global:
-
 	rte_eth_vhost_get_vid_from_port_id;
+
+	local: *;
 };
diff --git a/drivers/net/virtio/rte_pmd_virtio_version.map b/drivers/net/virtio/rte_pmd_virtio_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/virtio/rte_pmd_virtio_version.map
+++ b/drivers/net/virtio/rte_pmd_virtio_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
index ef35398402..f9f17e4f6e 100644
--- a/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
+++ b/drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map
@@ -1,4 +1,3 @@
-DPDK_2.0 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
+++ b/drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
index d16a136fc8..ca6a0d7626 100644
--- a/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
+++ b/drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map
@@ -1,4 +1,4 @@
-DPDK_19.05 {
+DPDK_20.0 {
 	global:
 
 	rte_qdma_attr_get;
@@ -9,9 +9,9 @@ DPDK_19.05 {
 	rte_qdma_start;
 	rte_qdma_stop;
 	rte_qdma_vq_create;
-	rte_qdma_vq_destroy;
 	rte_qdma_vq_dequeue;
 	rte_qdma_vq_dequeue_multi;
+	rte_qdma_vq_destroy;
 	rte_qdma_vq_enqueue;
 	rte_qdma_vq_enqueue_multi;
 	rte_qdma_vq_stats;
diff --git a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
index 9b9ab1a4cf..f9f17e4f6e 100644
--- a/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
+++ b/drivers/raw/ifpga/rte_rawdev_ifpga_version.map
@@ -1,4 +1,3 @@
-DPDK_18.05 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ioat/rte_rawdev_ioat_version.map b/drivers/raw/ioat/rte_rawdev_ioat_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/ioat/rte_rawdev_ioat_version.map
+++ b/drivers/raw/ioat/rte_rawdev_ioat_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/ntb/rte_rawdev_ntb_version.map b/drivers/raw/ntb/rte_rawdev_ntb_version.map
index 8861484fb3..f9f17e4f6e 100644
--- a/drivers/raw/ntb/rte_rawdev_ntb_version.map
+++ b/drivers/raw/ntb/rte_rawdev_ntb_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
-        local: *;
+DPDK_20.0 {
+	local: *;
 };
diff --git a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
index 9a61188cd5..f9f17e4f6e 100644
--- a/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
+++ b/drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map
@@ -1,4 +1,3 @@
-DPDK_19.08 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
index 179140fb87..f9f17e4f6e 100644
--- a/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
+++ b/drivers/raw/skeleton/rte_rawdev_skeleton_version.map
@@ -1,4 +1,3 @@
-DPDK_18.02 {
-
+DPDK_20.0 {
 	local: *;
 };
diff --git a/lib/librte_acl/rte_acl_version.map b/lib/librte_acl/rte_acl_version.map
index b09370a104..c3daca8115 100644
--- a/lib/librte_acl/rte_acl_version.map
+++ b/lib/librte_acl/rte_acl_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_acl_add_rules;
diff --git a/lib/librte_bitratestats/rte_bitratestats_version.map b/lib/librte_bitratestats/rte_bitratestats_version.map
index fe7454452d..88fc2912db 100644
--- a/lib/librte_bitratestats/rte_bitratestats_version.map
+++ b/lib/librte_bitratestats/rte_bitratestats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_stats_bitrate_calc;
diff --git a/lib/librte_cfgfile/rte_cfgfile_version.map b/lib/librte_cfgfile/rte_cfgfile_version.map
index a0a11cea8d..906eee96bf 100644
--- a/lib/librte_cfgfile/rte_cfgfile_version.map
+++ b/lib/librte_cfgfile/rte_cfgfile_version.map
@@ -1,40 +1,22 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_cfgfile_add_entry;
+	rte_cfgfile_add_section;
 	rte_cfgfile_close;
+	rte_cfgfile_create;
 	rte_cfgfile_get_entry;
 	rte_cfgfile_has_entry;
 	rte_cfgfile_has_section;
 	rte_cfgfile_load;
+	rte_cfgfile_load_with_params;
 	rte_cfgfile_num_sections;
+	rte_cfgfile_save;
 	rte_cfgfile_section_entries;
+	rte_cfgfile_section_entries_by_index;
 	rte_cfgfile_section_num_entries;
 	rte_cfgfile_sections;
+	rte_cfgfile_set_entry;
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_cfgfile_section_entries_by_index;
-
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_cfgfile_load_with_params;
-
-} DPDK_16.04;
-
-DPDK_17.11 {
-	global:
-
-	rte_cfgfile_add_entry;
-	rte_cfgfile_add_section;
-	rte_cfgfile_create;
-	rte_cfgfile_save;
-	rte_cfgfile_set_entry;
-
-} DPDK_17.05;
diff --git a/lib/librte_cmdline/rte_cmdline_version.map b/lib/librte_cmdline/rte_cmdline_version.map
index 04bcb387f2..95fce812ff 100644
--- a/lib/librte_cmdline/rte_cmdline_version.map
+++ b/lib/librte_cmdline/rte_cmdline_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	cirbuf_add_buf_head;
@@ -40,6 +40,7 @@ DPDK_2.0 {
 	cmdline_parse_num;
 	cmdline_parse_portlist;
 	cmdline_parse_string;
+	cmdline_poll;
 	cmdline_printf;
 	cmdline_quit;
 	cmdline_set_prompt;
@@ -68,10 +69,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_2.1 {
-	global:
-
-	cmdline_poll;
-
-} DPDK_2.0;
diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map
index 3deb265ac2..1dd1e259a0 100644
--- a/lib/librte_cryptodev/rte_cryptodev_version.map
+++ b/lib/librte_cryptodev/rte_cryptodev_version.map
@@ -1,92 +1,62 @@
-DPDK_16.04 {
+DPDK_20.0 {
 	global:
 
-	rte_cryptodevs;
+	rte_crypto_aead_algorithm_strings;
+	rte_crypto_aead_operation_strings;
+	rte_crypto_auth_algorithm_strings;
+	rte_crypto_auth_operation_strings;
+	rte_crypto_cipher_algorithm_strings;
+	rte_crypto_cipher_operation_strings;
+	rte_crypto_op_pool_create;
+	rte_cryptodev_allocate_driver;
 	rte_cryptodev_callback_register;
 	rte_cryptodev_callback_unregister;
 	rte_cryptodev_close;
-	rte_cryptodev_count;
 	rte_cryptodev_configure;
+	rte_cryptodev_count;
+	rte_cryptodev_device_count_by_driver;
+	rte_cryptodev_devices_get;
+	rte_cryptodev_driver_id_get;
+	rte_cryptodev_driver_name_get;
+	rte_cryptodev_get_aead_algo_enum;
+	rte_cryptodev_get_auth_algo_enum;
+	rte_cryptodev_get_cipher_algo_enum;
 	rte_cryptodev_get_dev_id;
 	rte_cryptodev_get_feature_name;
+	rte_cryptodev_get_sec_ctx;
 	rte_cryptodev_info_get;
+	rte_cryptodev_name_get;
 	rte_cryptodev_pmd_allocate;
 	rte_cryptodev_pmd_callback_process;
+	rte_cryptodev_pmd_create;
+	rte_cryptodev_pmd_create_dev_name;
+	rte_cryptodev_pmd_destroy;
+	rte_cryptodev_pmd_get_dev;
+	rte_cryptodev_pmd_get_named_dev;
+	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_pmd_parse_input_args;
 	rte_cryptodev_pmd_release_device;
-	rte_cryptodev_sym_session_create;
-	rte_cryptodev_sym_session_free;
+	rte_cryptodev_queue_pair_count;
+	rte_cryptodev_queue_pair_setup;
 	rte_cryptodev_socket_id;
 	rte_cryptodev_start;
 	rte_cryptodev_stats_get;
 	rte_cryptodev_stats_reset;
 	rte_cryptodev_stop;
-	rte_cryptodev_queue_pair_count;
-	rte_cryptodev_queue_pair_setup;
-	rte_crypto_op_pool_create;
-
-	local: *;
-};
-
-DPDK_17.02 {
-	global:
-
-	rte_cryptodev_devices_get;
-	rte_cryptodev_pmd_create_dev_name;
-	rte_cryptodev_pmd_get_dev;
-	rte_cryptodev_pmd_get_named_dev;
-	rte_cryptodev_pmd_is_valid_dev;
+	rte_cryptodev_sym_capability_check_aead;
 	rte_cryptodev_sym_capability_check_auth;
 	rte_cryptodev_sym_capability_check_cipher;
 	rte_cryptodev_sym_capability_get;
-	rte_crypto_auth_algorithm_strings;
-	rte_crypto_auth_operation_strings;
-	rte_crypto_cipher_algorithm_strings;
-	rte_crypto_cipher_operation_strings;
-
-} DPDK_16.04;
-
-DPDK_17.05 {
-	global:
-
-	rte_cryptodev_get_auth_algo_enum;
-	rte_cryptodev_get_cipher_algo_enum;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_cryptodev_allocate_driver;
-	rte_cryptodev_device_count_by_driver;
-	rte_cryptodev_driver_id_get;
-	rte_cryptodev_driver_name_get;
-	rte_cryptodev_get_aead_algo_enum;
-	rte_cryptodev_sym_capability_check_aead;
-	rte_cryptodev_sym_session_init;
-	rte_cryptodev_sym_session_clear;
-	rte_crypto_aead_algorithm_strings;
-	rte_crypto_aead_operation_strings;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_cryptodev_get_sec_ctx;
-	rte_cryptodev_name_get;
-	rte_cryptodev_pmd_create;
-	rte_cryptodev_pmd_destroy;
-	rte_cryptodev_pmd_parse_input_args;
-
-} DPDK_17.08;
-
-DPDK_18.05 {
-	global:
-
 	rte_cryptodev_sym_get_header_session_size;
 	rte_cryptodev_sym_get_private_session_size;
+	rte_cryptodev_sym_session_clear;
+	rte_cryptodev_sym_session_create;
+	rte_cryptodev_sym_session_free;
+	rte_cryptodev_sym_session_init;
+	rte_cryptodevs;
 
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_distributor/rte_distributor_version.map b/lib/librte_distributor/rte_distributor_version.map
index 00e26b4804..1b7c643005 100644
--- a/lib/librte_distributor/rte_distributor_version.map
+++ b/lib/librte_distributor/rte_distributor_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_distributor_clear_returns;
@@ -10,4 +10,6 @@ DPDK_17.05 {
 	rte_distributor_request_pkt;
 	rte_distributor_return_pkt;
 	rte_distributor_returned_pkts;
+
+	local: *;
 };
diff --git a/lib/librte_eal/rte_eal_version.map b/lib/librte_eal/rte_eal_version.map
index f1982f2f73..8663517df3 100644
--- a/lib/librte_eal/rte_eal_version.map
+++ b/lib/librte_eal/rte_eal_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	__rte_panic;
@@ -6,44 +6,113 @@ DPDK_2.0 {
 	eal_timer_source;
 	per_lcore__lcore_id;
 	per_lcore__rte_errno;
+	rte_bus_dump;
+	rte_bus_find;
+	rte_bus_find_by_device;
+	rte_bus_find_by_name;
+	rte_bus_get_iommu_class;
+	rte_bus_probe;
+	rte_bus_register;
+	rte_bus_scan;
+	rte_bus_unregister;
 	rte_calloc;
 	rte_calloc_socket;
 	rte_cpu_get_flag_enabled;
+	rte_cpu_get_flag_name;
+	rte_cpu_is_supported;
+	rte_ctrl_thread_create;
 	rte_cycles_vmware_tsc_map;
 	rte_delay_us;
+	rte_delay_us_block;
+	rte_delay_us_callback_register;
+	rte_dev_is_probed;
+	rte_dev_probe;
+	rte_dev_remove;
+	rte_devargs_add;
+	rte_devargs_dump;
+	rte_devargs_insert;
+	rte_devargs_next;
+	rte_devargs_parse;
+	rte_devargs_parsef;
+	rte_devargs_remove;
+	rte_devargs_type_count;
 	rte_dump_physmem_layout;
 	rte_dump_registers;
 	rte_dump_stack;
 	rte_dump_tailq;
 	rte_eal_alarm_cancel;
 	rte_eal_alarm_set;
+	rte_eal_cleanup;
+	rte_eal_create_uio_dev;
 	rte_eal_get_lcore_state;
 	rte_eal_get_physmem_size;
+	rte_eal_get_runtime_dir;
 	rte_eal_has_hugepages;
+	rte_eal_has_pci;
+	rte_eal_hotplug_add;
+	rte_eal_hotplug_remove;
 	rte_eal_hpet_init;
 	rte_eal_init;
 	rte_eal_iopl_init;
+	rte_eal_iova_mode;
 	rte_eal_lcore_role;
+	rte_eal_mbuf_user_pool_ops;
 	rte_eal_mp_remote_launch;
 	rte_eal_mp_wait_lcore;
+	rte_eal_primary_proc_alive;
 	rte_eal_process_type;
 	rte_eal_remote_launch;
 	rte_eal_tailq_lookup;
 	rte_eal_tailq_register;
+	rte_eal_using_phys_addrs;
+	rte_eal_vfio_intr_mode;
 	rte_eal_wait_lcore;
+	rte_epoll_ctl;
+	rte_epoll_wait;
 	rte_exit;
 	rte_free;
 	rte_get_hpet_cycles;
 	rte_get_hpet_hz;
+	rte_get_master_lcore;
+	rte_get_next_lcore;
 	rte_get_tsc_hz;
 	rte_hexdump;
+	rte_hypervisor_get;
+	rte_hypervisor_get_name;
+	rte_intr_allow_others;
 	rte_intr_callback_register;
 	rte_intr_callback_unregister;
+	rte_intr_cap_multiple;
 	rte_intr_disable;
+	rte_intr_dp_is_en;
+	rte_intr_efd_disable;
+	rte_intr_efd_enable;
 	rte_intr_enable;
+	rte_intr_free_epoll_fd;
+	rte_intr_rx_ctl;
+	rte_intr_tls_epfd;
+	rte_keepalive_create;
+	rte_keepalive_dispatch_pings;
+	rte_keepalive_mark_alive;
+	rte_keepalive_mark_sleep;
+	rte_keepalive_register_core;
+	rte_keepalive_register_relay_callback;
+	rte_lcore_count;
+	rte_lcore_has_role;
+	rte_lcore_index;
+	rte_lcore_is_enabled;
+	rte_lcore_to_socket_id;
 	rte_log;
 	rte_log_cur_msg_loglevel;
 	rte_log_cur_msg_logtype;
+	rte_log_dump;
+	rte_log_get_global_level;
+	rte_log_get_level;
+	rte_log_register;
+	rte_log_set_global_level;
+	rte_log_set_level;
+	rte_log_set_level_pattern;
+	rte_log_set_level_regexp;
 	rte_logs;
 	rte_malloc;
 	rte_malloc_dump_stats;
@@ -51,155 +120,38 @@ DPDK_2.0 {
 	rte_malloc_set_limit;
 	rte_malloc_socket;
 	rte_malloc_validate;
+	rte_malloc_virt2iova;
+	rte_mcfg_mem_read_lock;
+	rte_mcfg_mem_read_unlock;
+	rte_mcfg_mem_write_lock;
+	rte_mcfg_mem_write_unlock;
+	rte_mcfg_mempool_read_lock;
+	rte_mcfg_mempool_read_unlock;
+	rte_mcfg_mempool_write_lock;
+	rte_mcfg_mempool_write_unlock;
+	rte_mcfg_tailq_read_lock;
+	rte_mcfg_tailq_read_unlock;
+	rte_mcfg_tailq_write_lock;
+	rte_mcfg_tailq_write_unlock;
 	rte_mem_lock_page;
+	rte_mem_virt2iova;
 	rte_mem_virt2phy;
 	rte_memdump;
 	rte_memory_get_nchannel;
 	rte_memory_get_nrank;
 	rte_memzone_dump;
+	rte_memzone_free;
 	rte_memzone_lookup;
 	rte_memzone_reserve;
 	rte_memzone_reserve_aligned;
 	rte_memzone_reserve_bounded;
 	rte_memzone_walk;
 	rte_openlog_stream;
+	rte_rand;
 	rte_realloc;
-	rte_set_application_usage_hook;
-	rte_socket_id;
-	rte_strerror;
-	rte_strsplit;
-	rte_sys_gettid;
-	rte_thread_get_affinity;
-	rte_thread_set_affinity;
-	rte_vlog;
-	rte_zmalloc;
-	rte_zmalloc_socket;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_epoll_ctl;
-	rte_epoll_wait;
-	rte_intr_allow_others;
-	rte_intr_dp_is_en;
-	rte_intr_efd_disable;
-	rte_intr_efd_enable;
-	rte_intr_rx_ctl;
-	rte_intr_tls_epfd;
-	rte_memzone_free;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_intr_cap_multiple;
-	rte_keepalive_create;
-	rte_keepalive_dispatch_pings;
-	rte_keepalive_mark_alive;
-	rte_keepalive_register_core;
-
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_cpu_get_flag_name;
-	rte_eal_primary_proc_alive;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_keepalive_mark_sleep;
-	rte_keepalive_register_relay_callback;
-	rte_rtm_supported;
-	rte_thread_setname;
-
-} DPDK_16.04;
-
-DPDK_16.11 {
-	global:
-
-	rte_delay_us_block;
-	rte_delay_us_callback_register;
-
-} DPDK_16.07;
-
-DPDK_17.02 {
-	global:
-
-	rte_bus_dump;
-	rte_bus_probe;
-	rte_bus_register;
-	rte_bus_scan;
-	rte_bus_unregister;
-
-} DPDK_16.11;
-
-DPDK_17.05 {
-	global:
-
-	rte_cpu_is_supported;
-	rte_intr_free_epoll_fd;
-	rte_log_dump;
-	rte_log_get_global_level;
-	rte_log_register;
-	rte_log_set_global_level;
-	rte_log_set_level;
-	rte_log_set_level_regexp;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	rte_bus_find;
-	rte_bus_find_by_device;
-	rte_bus_find_by_name;
-	rte_log_get_level;
-
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eal_create_uio_dev;
-	rte_bus_get_iommu_class;
-	rte_eal_has_pci;
-	rte_eal_iova_mode;
-	rte_eal_using_phys_addrs;
-	rte_eal_vfio_intr_mode;
-	rte_lcore_has_role;
-	rte_malloc_virt2iova;
-	rte_mem_virt2iova;
-	rte_vfio_enable;
-	rte_vfio_is_enabled;
-	rte_vfio_noiommu_is_enabled;
-	rte_vfio_release_device;
-	rte_vfio_setup_device;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_hypervisor_get;
-	rte_hypervisor_get_name;
-	rte_vfio_clear_group;
 	rte_reciprocal_value;
 	rte_reciprocal_value_u64;
-
-}  DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_log_set_level_pattern;
+	rte_rtm_supported;
 	rte_service_attr_get;
 	rte_service_attr_reset_all;
 	rte_service_component_register;
@@ -212,6 +164,8 @@ DPDK_18.05 {
 	rte_service_get_count;
 	rte_service_get_name;
 	rte_service_lcore_add;
+	rte_service_lcore_attr_get;
+	rte_service_lcore_attr_reset_all;
 	rte_service_lcore_count;
 	rte_service_lcore_count_services;
 	rte_service_lcore_del;
@@ -221,6 +175,7 @@ DPDK_18.05 {
 	rte_service_lcore_stop;
 	rte_service_map_lcore_get;
 	rte_service_map_lcore_set;
+	rte_service_may_be_active;
 	rte_service_probe_capability;
 	rte_service_run_iter_on_app_lcore;
 	rte_service_runstate_get;
@@ -228,94 +183,43 @@ DPDK_18.05 {
 	rte_service_set_runstate_mapped_check;
 	rte_service_set_stats_enable;
 	rte_service_start_with_defaults;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eal_mbuf_user_pool_ops;
+	rte_set_application_usage_hook;
+	rte_socket_count;
+	rte_socket_id;
+	rte_socket_id_by_idx;
+	rte_srand;
+	rte_strerror;
+	rte_strscpy;
+	rte_strsplit;
+	rte_sys_gettid;
+	rte_thread_get_affinity;
+	rte_thread_set_affinity;
+	rte_thread_setname;
 	rte_uuid_compare;
 	rte_uuid_is_null;
 	rte_uuid_parse;
 	rte_uuid_unparse;
+	rte_vfio_clear_group;
 	rte_vfio_container_create;
 	rte_vfio_container_destroy;
 	rte_vfio_container_dma_map;
 	rte_vfio_container_dma_unmap;
 	rte_vfio_container_group_bind;
 	rte_vfio_container_group_unbind;
+	rte_vfio_enable;
 	rte_vfio_get_container_fd;
 	rte_vfio_get_group_fd;
 	rte_vfio_get_group_num;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_dev_probe;
-	rte_dev_remove;
-	rte_eal_get_runtime_dir;
-	rte_eal_hotplug_add;
-	rte_eal_hotplug_remove;
-	rte_strscpy;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_ctrl_thread_create;
-	rte_dev_is_probed;
-	rte_devargs_add;
-	rte_devargs_dump;
-	rte_devargs_insert;
-	rte_devargs_next;
-	rte_devargs_parse;
-	rte_devargs_parsef;
-	rte_devargs_remove;
-	rte_devargs_type_count;
-	rte_eal_cleanup;
-	rte_socket_count;
-	rte_socket_id_by_idx;
-
-} DPDK_18.11;
-
-DPDK_19.08 {
-	global:
-
-	rte_lcore_index;
-	rte_lcore_to_socket_id;
-	rte_mcfg_mem_read_lock;
-	rte_mcfg_mem_read_unlock;
-	rte_mcfg_mem_write_lock;
-	rte_mcfg_mem_write_unlock;
-	rte_mcfg_mempool_read_lock;
-	rte_mcfg_mempool_read_unlock;
-	rte_mcfg_mempool_write_lock;
-	rte_mcfg_mempool_write_unlock;
-	rte_mcfg_tailq_read_lock;
-	rte_mcfg_tailq_read_unlock;
-	rte_mcfg_tailq_write_lock;
-	rte_mcfg_tailq_write_unlock;
-	rte_rand;
-	rte_service_lcore_attr_get;
-	rte_service_lcore_attr_reset_all;
-	rte_service_may_be_active;
-	rte_srand;
-
-} DPDK_19.05;
-
-DPDK_19.11 {
-	global:
-
-	rte_get_master_lcore;
-	rte_get_next_lcore;
-	rte_lcore_count;
-	rte_lcore_is_enabled;
-
-} DPDK_19.08;
+	rte_vfio_is_enabled;
+	rte_vfio_noiommu_is_enabled;
+	rte_vfio_release_device;
+	rte_vfio_setup_device;
+	rte_vlog;
+	rte_zmalloc;
+	rte_zmalloc_socket;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_efd/rte_efd_version.map b/lib/librte_efd/rte_efd_version.map
index ae60a64178..e010eecfe4 100644
--- a/lib/librte_efd/rte_efd_version.map
+++ b/lib/librte_efd/rte_efd_version.map
@@ -1,4 +1,4 @@
-DPDK_17.02 {
+DPDK_20.0 {
 	global:
 
 	rte_efd_create;
diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map
index ccfbeae23f..a7dacf2cf2 100644
--- a/lib/librte_ethdev/rte_ethdev_version.map
+++ b/lib/librte_ethdev/rte_ethdev_version.map
@@ -1,34 +1,52 @@
-DPDK_2.2 {
+DPDK_20.0 {
 	global:
 
+	_rte_eth_dev_callback_process;
+	_rte_eth_dev_reset;
+	rte_eth_add_first_rx_callback;
 	rte_eth_add_rx_callback;
 	rte_eth_add_tx_callback;
 	rte_eth_allmulticast_disable;
 	rte_eth_allmulticast_enable;
 	rte_eth_allmulticast_get;
+	rte_eth_dev_adjust_nb_rx_tx_desc;
 	rte_eth_dev_allocate;
 	rte_eth_dev_allocated;
+	rte_eth_dev_attach_secondary;
 	rte_eth_dev_callback_register;
 	rte_eth_dev_callback_unregister;
 	rte_eth_dev_close;
 	rte_eth_dev_configure;
+	rte_eth_dev_count_avail;
+	rte_eth_dev_count_total;
 	rte_eth_dev_default_mac_addr_set;
+	rte_eth_dev_filter_ctrl;
 	rte_eth_dev_filter_supported;
 	rte_eth_dev_flow_ctrl_get;
 	rte_eth_dev_flow_ctrl_set;
+	rte_eth_dev_fw_version_get;
 	rte_eth_dev_get_dcb_info;
 	rte_eth_dev_get_eeprom;
 	rte_eth_dev_get_eeprom_length;
 	rte_eth_dev_get_mtu;
+	rte_eth_dev_get_name_by_port;
+	rte_eth_dev_get_port_by_name;
 	rte_eth_dev_get_reg_info;
+	rte_eth_dev_get_sec_ctx;
+	rte_eth_dev_get_supported_ptypes;
 	rte_eth_dev_get_vlan_offload;
-	rte_eth_devices;
 	rte_eth_dev_info_get;
 	rte_eth_dev_is_valid_port;
+	rte_eth_dev_l2_tunnel_eth_type_conf;
+	rte_eth_dev_l2_tunnel_offload_set;
+	rte_eth_dev_logtype;
 	rte_eth_dev_mac_addr_add;
 	rte_eth_dev_mac_addr_remove;
+	rte_eth_dev_pool_ops_supported;
 	rte_eth_dev_priority_flow_ctrl_set;
+	rte_eth_dev_probing_finish;
 	rte_eth_dev_release_port;
+	rte_eth_dev_reset;
 	rte_eth_dev_rss_hash_conf_get;
 	rte_eth_dev_rss_hash_update;
 	rte_eth_dev_rss_reta_query;
@@ -37,6 +55,7 @@ DPDK_2.2 {
 	rte_eth_dev_rx_intr_ctl_q;
 	rte_eth_dev_rx_intr_disable;
 	rte_eth_dev_rx_intr_enable;
+	rte_eth_dev_rx_offload_name;
 	rte_eth_dev_rx_queue_start;
 	rte_eth_dev_rx_queue_stop;
 	rte_eth_dev_set_eeprom;
@@ -46,18 +65,28 @@ DPDK_2.2 {
 	rte_eth_dev_set_mtu;
 	rte_eth_dev_set_rx_queue_stats_mapping;
 	rte_eth_dev_set_tx_queue_stats_mapping;
+	rte_eth_dev_set_vlan_ether_type;
 	rte_eth_dev_set_vlan_offload;
 	rte_eth_dev_set_vlan_pvid;
 	rte_eth_dev_set_vlan_strip_on_queue;
 	rte_eth_dev_socket_id;
 	rte_eth_dev_start;
 	rte_eth_dev_stop;
+	rte_eth_dev_tx_offload_name;
 	rte_eth_dev_tx_queue_start;
 	rte_eth_dev_tx_queue_stop;
 	rte_eth_dev_uc_all_hash_table_set;
 	rte_eth_dev_uc_hash_table_set;
+	rte_eth_dev_udp_tunnel_port_add;
+	rte_eth_dev_udp_tunnel_port_delete;
 	rte_eth_dev_vlan_filter;
+	rte_eth_devices;
 	rte_eth_dma_zone_reserve;
+	rte_eth_find_next;
+	rte_eth_find_next_owned_by;
+	rte_eth_iterator_cleanup;
+	rte_eth_iterator_init;
+	rte_eth_iterator_next;
 	rte_eth_led_off;
 	rte_eth_led_on;
 	rte_eth_link;
@@ -74,6 +103,7 @@ DPDK_2.2 {
 	rte_eth_rx_queue_info_get;
 	rte_eth_rx_queue_setup;
 	rte_eth_set_queue_rate_limit;
+	rte_eth_speed_bitflag;
 	rte_eth_stats;
 	rte_eth_stats_get;
 	rte_eth_stats_reset;
@@ -84,66 +114,27 @@ DPDK_2.2 {
 	rte_eth_timesync_read_time;
 	rte_eth_timesync_read_tx_timestamp;
 	rte_eth_timesync_write_time;
-	rte_eth_tx_queue_info_get;
-	rte_eth_tx_queue_setup;
-	rte_eth_xstats_get;
-	rte_eth_xstats_reset;
-
-	local: *;
-};
-
-DPDK_16.04 {
-	global:
-
-	rte_eth_dev_get_supported_ptypes;
-	rte_eth_dev_l2_tunnel_eth_type_conf;
-	rte_eth_dev_l2_tunnel_offload_set;
-	rte_eth_dev_set_vlan_ether_type;
-	rte_eth_dev_udp_tunnel_port_add;
-	rte_eth_dev_udp_tunnel_port_delete;
-	rte_eth_speed_bitflag;
 	rte_eth_tx_buffer_count_callback;
 	rte_eth_tx_buffer_drop_callback;
 	rte_eth_tx_buffer_init;
 	rte_eth_tx_buffer_set_err_callback;
-
-} DPDK_2.2;
-
-DPDK_16.07 {
-	global:
-
-	rte_eth_add_first_rx_callback;
-	rte_eth_dev_get_name_by_port;
-	rte_eth_dev_get_port_by_name;
-	rte_eth_xstats_get_names;
-
-} DPDK_16.04;
-
-DPDK_17.02 {
-	global:
-
-	_rte_eth_dev_reset;
-	rte_eth_dev_fw_version_get;
-
-} DPDK_16.07;
-
-DPDK_17.05 {
-	global:
-
-	rte_eth_dev_attach_secondary;
-	rte_eth_find_next;
 	rte_eth_tx_done_cleanup;
+	rte_eth_tx_queue_info_get;
+	rte_eth_tx_queue_setup;
+	rte_eth_xstats_get;
 	rte_eth_xstats_get_by_id;
 	rte_eth_xstats_get_id_by_name;
+	rte_eth_xstats_get_names;
 	rte_eth_xstats_get_names_by_id;
-
-} DPDK_17.02;
-
-DPDK_17.08 {
-	global:
-
-	_rte_eth_dev_callback_process;
-	rte_eth_dev_adjust_nb_rx_tx_desc;
+	rte_eth_xstats_reset;
+	rte_flow_copy;
+	rte_flow_create;
+	rte_flow_destroy;
+	rte_flow_error_set;
+	rte_flow_flush;
+	rte_flow_isolate;
+	rte_flow_query;
+	rte_flow_validate;
 	rte_tm_capabilities_get;
 	rte_tm_get_number_of_leaf_nodes;
 	rte_tm_hierarchy_commit;
@@ -175,65 +166,8 @@ DPDK_17.08 {
 	rte_tm_wred_profile_add;
 	rte_tm_wred_profile_delete;
 
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_eth_dev_get_sec_ctx;
-	rte_eth_dev_pool_ops_supported;
-	rte_eth_dev_reset;
-
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_eth_dev_filter_ctrl;
-
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_eth_dev_count_avail;
-	rte_eth_dev_probing_finish;
-	rte_eth_find_next_owned_by;
-	rte_flow_copy;
-	rte_flow_create;
-	rte_flow_destroy;
-	rte_flow_error_set;
-	rte_flow_flush;
-	rte_flow_isolate;
-	rte_flow_query;
-	rte_flow_validate;
-
-} DPDK_18.02;
-
-DPDK_18.08 {
-	global:
-
-	rte_eth_dev_logtype;
-
-} DPDK_18.05;
-
-DPDK_18.11 {
-	global:
-
-	rte_eth_dev_rx_offload_name;
-	rte_eth_dev_tx_offload_name;
-	rte_eth_iterator_cleanup;
-	rte_eth_iterator_init;
-	rte_eth_iterator_next;
-
-} DPDK_18.08;
-
-DPDK_19.05 {
-	global:
-
-	rte_eth_dev_count_total;
-
-} DPDK_18.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_eventdev/rte_eventdev_version.map b/lib/librte_eventdev/rte_eventdev_version.map
index 76b3021d3a..edfc15282d 100644
--- a/lib/librte_eventdev/rte_eventdev_version.map
+++ b/lib/librte_eventdev/rte_eventdev_version.map
@@ -1,61 +1,38 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
-	rte_eventdevs;
-
+	rte_event_crypto_adapter_caps_get;
+	rte_event_crypto_adapter_create;
+	rte_event_crypto_adapter_create_ext;
+	rte_event_crypto_adapter_event_port_get;
+	rte_event_crypto_adapter_free;
+	rte_event_crypto_adapter_queue_pair_add;
+	rte_event_crypto_adapter_queue_pair_del;
+	rte_event_crypto_adapter_service_id_get;
+	rte_event_crypto_adapter_start;
+	rte_event_crypto_adapter_stats_get;
+	rte_event_crypto_adapter_stats_reset;
+	rte_event_crypto_adapter_stop;
+	rte_event_dequeue_timeout_ticks;
+	rte_event_dev_attr_get;
+	rte_event_dev_close;
+	rte_event_dev_configure;
 	rte_event_dev_count;
+	rte_event_dev_dump;
 	rte_event_dev_get_dev_id;
-	rte_event_dev_socket_id;
 	rte_event_dev_info_get;
-	rte_event_dev_configure;
+	rte_event_dev_selftest;
+	rte_event_dev_service_id_get;
+	rte_event_dev_socket_id;
 	rte_event_dev_start;
 	rte_event_dev_stop;
-	rte_event_dev_close;
-	rte_event_dev_dump;
+	rte_event_dev_stop_flush_callback_register;
 	rte_event_dev_xstats_by_name_get;
 	rte_event_dev_xstats_get;
 	rte_event_dev_xstats_names_get;
 	rte_event_dev_xstats_reset;
-
-	rte_event_port_default_conf_get;
-	rte_event_port_setup;
-	rte_event_port_link;
-	rte_event_port_unlink;
-	rte_event_port_links_get;
-
-	rte_event_queue_default_conf_get;
-	rte_event_queue_setup;
-
-	rte_event_dequeue_timeout_ticks;
-
-	rte_event_pmd_allocate;
-	rte_event_pmd_release;
-	rte_event_pmd_vdev_init;
-	rte_event_pmd_vdev_uninit;
-	rte_event_pmd_pci_probe;
-	rte_event_pmd_pci_remove;
-
-	local: *;
-};
-
-DPDK_17.08 {
-	global:
-
-	rte_event_ring_create;
-	rte_event_ring_free;
-	rte_event_ring_init;
-	rte_event_ring_lookup;
-} DPDK_17.05;
-
-DPDK_17.11 {
-	global:
-
-	rte_event_dev_attr_get;
-	rte_event_dev_service_id_get;
-	rte_event_port_attr_get;
-	rte_event_queue_attr_get;
-
 	rte_event_eth_rx_adapter_caps_get;
+	rte_event_eth_rx_adapter_cb_register;
 	rte_event_eth_rx_adapter_create;
 	rte_event_eth_rx_adapter_create_ext;
 	rte_event_eth_rx_adapter_free;
@@ -63,38 +40,9 @@ DPDK_17.11 {
 	rte_event_eth_rx_adapter_queue_del;
 	rte_event_eth_rx_adapter_service_id_get;
 	rte_event_eth_rx_adapter_start;
+	rte_event_eth_rx_adapter_stats_get;
 	rte_event_eth_rx_adapter_stats_reset;
 	rte_event_eth_rx_adapter_stop;
-} DPDK_17.08;
-
-DPDK_18.02 {
-	global:
-
-	rte_event_dev_selftest;
-} DPDK_17.11;
-
-DPDK_18.05 {
-	global:
-
-	rte_event_dev_stop_flush_callback_register;
-} DPDK_18.02;
-
-DPDK_19.05 {
-	global:
-
-	rte_event_crypto_adapter_caps_get;
-	rte_event_crypto_adapter_create;
-	rte_event_crypto_adapter_create_ext;
-	rte_event_crypto_adapter_event_port_get;
-	rte_event_crypto_adapter_free;
-	rte_event_crypto_adapter_queue_pair_add;
-	rte_event_crypto_adapter_queue_pair_del;
-	rte_event_crypto_adapter_service_id_get;
-	rte_event_crypto_adapter_start;
-	rte_event_crypto_adapter_stats_get;
-	rte_event_crypto_adapter_stats_reset;
-	rte_event_crypto_adapter_stop;
-	rte_event_port_unlinks_in_progress;
 	rte_event_eth_tx_adapter_caps_get;
 	rte_event_eth_tx_adapter_create;
 	rte_event_eth_tx_adapter_create_ext;
@@ -107,6 +55,26 @@ DPDK_19.05 {
 	rte_event_eth_tx_adapter_stats_get;
 	rte_event_eth_tx_adapter_stats_reset;
 	rte_event_eth_tx_adapter_stop;
+	rte_event_pmd_allocate;
+	rte_event_pmd_pci_probe;
+	rte_event_pmd_pci_remove;
+	rte_event_pmd_release;
+	rte_event_pmd_vdev_init;
+	rte_event_pmd_vdev_uninit;
+	rte_event_port_attr_get;
+	rte_event_port_default_conf_get;
+	rte_event_port_link;
+	rte_event_port_links_get;
+	rte_event_port_setup;
+	rte_event_port_unlink;
+	rte_event_port_unlinks_in_progress;
+	rte_event_queue_attr_get;
+	rte_event_queue_default_conf_get;
+	rte_event_queue_setup;
+	rte_event_ring_create;
+	rte_event_ring_free;
+	rte_event_ring_init;
+	rte_event_ring_lookup;
 	rte_event_timer_adapter_caps_get;
 	rte_event_timer_adapter_create;
 	rte_event_timer_adapter_create_ext;
@@ -121,11 +89,7 @@ DPDK_19.05 {
 	rte_event_timer_arm_burst;
 	rte_event_timer_arm_tmo_tick_burst;
 	rte_event_timer_cancel_burst;
-} DPDK_18.05;
+	rte_eventdevs;
 
-DPDK_19.08 {
-	global:
-
-	rte_event_eth_rx_adapter_cb_register;
-	rte_event_eth_rx_adapter_stats_get;
-} DPDK_19.05;
+	local: *;
+};
diff --git a/lib/librte_gro/rte_gro_version.map b/lib/librte_gro/rte_gro_version.map
index 1606b6dc72..9f6fe79e57 100644
--- a/lib/librte_gro/rte_gro_version.map
+++ b/lib/librte_gro/rte_gro_version.map
@@ -1,4 +1,4 @@
-DPDK_17.08 {
+DPDK_20.0 {
 	global:
 
 	rte_gro_ctx_create;
diff --git a/lib/librte_gso/rte_gso_version.map b/lib/librte_gso/rte_gso_version.map
index e1fd453edb..8505a59c27 100644
--- a/lib/librte_gso/rte_gso_version.map
+++ b/lib/librte_gso/rte_gso_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_gso_segment;
diff --git a/lib/librte_hash/rte_hash_version.map b/lib/librte_hash/rte_hash_version.map
index 734ae28b04..138c130c1b 100644
--- a/lib/librte_hash/rte_hash_version.map
+++ b/lib/librte_hash/rte_hash_version.map
@@ -1,58 +1,33 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_fbk_hash_create;
 	rte_fbk_hash_find_existing;
 	rte_fbk_hash_free;
 	rte_hash_add_key;
+	rte_hash_add_key_data;
 	rte_hash_add_key_with_hash;
+	rte_hash_add_key_with_hash_data;
+	rte_hash_count;
 	rte_hash_create;
 	rte_hash_del_key;
 	rte_hash_del_key_with_hash;
 	rte_hash_find_existing;
 	rte_hash_free;
+	rte_hash_get_key_with_position;
 	rte_hash_hash;
+	rte_hash_iterate;
 	rte_hash_lookup;
 	rte_hash_lookup_bulk;
-	rte_hash_lookup_with_hash;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_hash_add_key_data;
-	rte_hash_add_key_with_hash_data;
-	rte_hash_iterate;
 	rte_hash_lookup_bulk_data;
 	rte_hash_lookup_data;
+	rte_hash_lookup_with_hash;
 	rte_hash_lookup_with_hash_data;
 	rte_hash_reset;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_hash_set_cmp_func;
 
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_hash_get_key_with_position;
-
-} DPDK_2.2;
-
-
-DPDK_18.08 {
-	global:
-
-	rte_hash_count;
-
-} DPDK_16.07;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_ip_frag/rte_ip_frag_version.map b/lib/librte_ip_frag/rte_ip_frag_version.map
index a193007c61..5dd34f828c 100644
--- a/lib/librte_ip_frag/rte_ip_frag_version.map
+++ b/lib/librte_ip_frag/rte_ip_frag_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ip_frag_free_death_row;
 	rte_ip_frag_table_create;
+	rte_ip_frag_table_destroy;
 	rte_ip_frag_table_statistics_dump;
 	rte_ipv4_frag_reassemble_packet;
 	rte_ipv4_fragment_packet;
@@ -12,13 +13,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_17.08 {
-	global:
-
-	rte_ip_frag_table_destroy;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_jobstats/rte_jobstats_version.map b/lib/librte_jobstats/rte_jobstats_version.map
index f89441438e..dbd2664ae2 100644
--- a/lib/librte_jobstats/rte_jobstats_version.map
+++ b/lib/librte_jobstats/rte_jobstats_version.map
@@ -1,6 +1,7 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_jobstats_abort;
 	rte_jobstats_context_finish;
 	rte_jobstats_context_init;
 	rte_jobstats_context_reset;
@@ -17,10 +18,3 @@ DPDK_2.0 {
 
 	local: *;
 };
-
-DPDK_16.04 {
-	global:
-
-	rte_jobstats_abort;
-
-} DPDK_2.0;
diff --git a/lib/librte_kni/rte_kni_version.map b/lib/librte_kni/rte_kni_version.map
index c877dc6aaa..9cd3cedc54 100644
--- a/lib/librte_kni/rte_kni_version.map
+++ b/lib/librte_kni/rte_kni_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kni_alloc;
diff --git a/lib/librte_kvargs/rte_kvargs_version.map b/lib/librte_kvargs/rte_kvargs_version.map
index 8f4b4e3f8f..3ba0f4b59c 100644
--- a/lib/librte_kvargs/rte_kvargs_version.map
+++ b/lib/librte_kvargs/rte_kvargs_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_kvargs_count;
@@ -15,4 +15,4 @@ EXPERIMENTAL {
 	rte_kvargs_parse_delim;
 	rte_kvargs_strcmp;
 
-} DPDK_2.0;
+};
diff --git a/lib/librte_latencystats/rte_latencystats_version.map b/lib/librte_latencystats/rte_latencystats_version.map
index ac8403e821..e04e63463f 100644
--- a/lib/librte_latencystats/rte_latencystats_version.map
+++ b/lib/librte_latencystats/rte_latencystats_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_latencystats_get;
diff --git a/lib/librte_lpm/rte_lpm_version.map b/lib/librte_lpm/rte_lpm_version.map
index 604ed416d1..500f58b806 100644
--- a/lib/librte_lpm/rte_lpm_version.map
+++ b/lib/librte_lpm/rte_lpm_version.map
@@ -1,35 +1,23 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_lpm6_add;
 	rte_lpm6_create;
 	rte_lpm6_delete;
 	rte_lpm6_delete_all;
 	rte_lpm6_delete_bulk_func;
 	rte_lpm6_find_existing;
 	rte_lpm6_free;
-
-	local: *;
-};
-
-DPDK_16.04 {
-	global:
-
+	rte_lpm6_is_rule_present;
+	rte_lpm6_lookup;
+	rte_lpm6_lookup_bulk_func;
 	rte_lpm_add;
-	rte_lpm_find_existing;
 	rte_lpm_create;
-	rte_lpm_free;
-	rte_lpm_is_rule_present;
 	rte_lpm_delete;
 	rte_lpm_delete_all;
+	rte_lpm_find_existing;
+	rte_lpm_free;
+	rte_lpm_is_rule_present;
 
-} DPDK_2.0;
-
-DPDK_17.05 {
-	global:
-
-	rte_lpm6_add;
-	rte_lpm6_is_rule_present;
-	rte_lpm6_lookup;
-	rte_lpm6_lookup_bulk_func;
-
-} DPDK_16.04;
+	local: *;
+};
diff --git a/lib/librte_mbuf/rte_mbuf_version.map b/lib/librte_mbuf/rte_mbuf_version.map
index 263dc0a21e..3bbb476975 100644
--- a/lib/librte_mbuf/rte_mbuf_version.map
+++ b/lib/librte_mbuf/rte_mbuf_version.map
@@ -1,26 +1,7 @@
-DPDK_2.0 {
-	global:
-
-	rte_get_rx_ol_flag_name;
-	rte_get_tx_ol_flag_name;
-	rte_mbuf_sanity_check;
-	rte_pktmbuf_dump;
-	rte_pktmbuf_init;
-	rte_pktmbuf_pool_init;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pktmbuf_pool_create;
-
-} DPDK_2.0;
-
-DPDK_16.11 {
+DPDK_20.0 {
 	global:
 
+	__rte_pktmbuf_linearize;
 	__rte_pktmbuf_read;
 	rte_get_ptype_inner_l2_name;
 	rte_get_ptype_inner_l3_name;
@@ -31,28 +12,24 @@ DPDK_16.11 {
 	rte_get_ptype_name;
 	rte_get_ptype_tunnel_name;
 	rte_get_rx_ol_flag_list;
+	rte_get_rx_ol_flag_name;
 	rte_get_tx_ol_flag_list;
-
-} DPDK_2.1;
-
-DPDK_18.08 {
-	global:
-
+	rte_get_tx_ol_flag_name;
 	rte_mbuf_best_mempool_ops;
 	rte_mbuf_platform_mempool_ops;
+	rte_mbuf_sanity_check;
 	rte_mbuf_set_platform_mempool_ops;
 	rte_mbuf_set_user_mempool_ops;
 	rte_mbuf_user_mempool_ops;
-	rte_pktmbuf_pool_create_by_ops;
-} DPDK_16.11;
-
-DPDK_19.11 {
-	global:
-
-	__rte_pktmbuf_linearize;
 	rte_pktmbuf_clone;
+	rte_pktmbuf_dump;
+	rte_pktmbuf_init;
+	rte_pktmbuf_pool_create;
+	rte_pktmbuf_pool_create_by_ops;
+	rte_pktmbuf_pool_init;
 
-} DPDK_18.08;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
@@ -68,4 +45,4 @@ EXPERIMENTAL {
 	rte_pktmbuf_copy;
 	rte_pktmbuf_free_bulk;
 
-} DPDK_18.08;
+};
diff --git a/lib/librte_member/rte_member_version.map b/lib/librte_member/rte_member_version.map
index 019e4cd962..87780ae611 100644
--- a/lib/librte_member/rte_member_version.map
+++ b/lib/librte_member/rte_member_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_member_add;
diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map
index ce9e791e78..d002dfc46f 100644
--- a/lib/librte_mempool/rte_mempool_version.map
+++ b/lib/librte_mempool/rte_mempool_version.map
@@ -1,57 +1,39 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_mempool_audit;
-	rte_mempool_calc_obj_size;
-	rte_mempool_create;
-	rte_mempool_dump;
-	rte_mempool_list_dump;
-	rte_mempool_lookup;
-	rte_mempool_walk;
-
-	local: *;
-};
-
-DPDK_16.07 {
-	global:
-
 	rte_mempool_avail_count;
 	rte_mempool_cache_create;
 	rte_mempool_cache_flush;
 	rte_mempool_cache_free;
+	rte_mempool_calc_obj_size;
 	rte_mempool_check_cookies;
+	rte_mempool_contig_blocks_check_cookies;
+	rte_mempool_create;
 	rte_mempool_create_empty;
 	rte_mempool_default_cache;
+	rte_mempool_dump;
 	rte_mempool_free;
 	rte_mempool_generic_get;
 	rte_mempool_generic_put;
 	rte_mempool_in_use_count;
+	rte_mempool_list_dump;
+	rte_mempool_lookup;
 	rte_mempool_mem_iter;
 	rte_mempool_obj_iter;
+	rte_mempool_op_calc_mem_size_default;
+	rte_mempool_op_populate_default;
 	rte_mempool_ops_table;
 	rte_mempool_populate_anon;
 	rte_mempool_populate_default;
+	rte_mempool_populate_iova;
 	rte_mempool_populate_virt;
 	rte_mempool_register_ops;
 	rte_mempool_set_ops_byname;
+	rte_mempool_walk;
 
-} DPDK_2.0;
-
-DPDK_17.11 {
-	global:
-
-	rte_mempool_populate_iova;
-
-} DPDK_16.07;
-
-DPDK_18.05 {
-	global:
-
-	rte_mempool_contig_blocks_check_cookies;
-	rte_mempool_op_calc_mem_size_default;
-	rte_mempool_op_populate_default;
-
-} DPDK_17.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_meter/rte_meter_version.map b/lib/librte_meter/rte_meter_version.map
index 4b460d5803..46410b0369 100644
--- a/lib/librte_meter/rte_meter_version.map
+++ b/lib/librte_meter/rte_meter_version.map
@@ -1,21 +1,16 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_meter_srtcm_color_aware_check;
 	rte_meter_srtcm_color_blind_check;
 	rte_meter_srtcm_config;
+	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_color_aware_check;
 	rte_meter_trtcm_color_blind_check;
 	rte_meter_trtcm_config;
-
-	local: *;
-};
-
-DPDK_18.08 {
-	global:
-
-	rte_meter_srtcm_profile_config;
 	rte_meter_trtcm_profile_config;
+
+	local: *;
 };
 
 EXPERIMENTAL {
diff --git a/lib/librte_metrics/rte_metrics_version.map b/lib/librte_metrics/rte_metrics_version.map
index 6ac99a44a1..85663f356e 100644
--- a/lib/librte_metrics/rte_metrics_version.map
+++ b/lib/librte_metrics/rte_metrics_version.map
@@ -1,4 +1,4 @@
-DPDK_17.05 {
+DPDK_20.0 {
 	global:
 
 	rte_metrics_get_names;
diff --git a/lib/librte_net/rte_net_version.map b/lib/librte_net/rte_net_version.map
index fffc4a3723..8a4e75a3a0 100644
--- a/lib/librte_net/rte_net_version.map
+++ b/lib/librte_net/rte_net_version.map
@@ -1,25 +1,14 @@
-DPDK_16.11 {
-	global:
-	rte_net_get_ptype;
-
-	local: *;
-};
-
-DPDK_17.05 {
-	global:
-
-	rte_net_crc_calc;
-	rte_net_crc_set_alg;
-
-} DPDK_16.11;
-
-DPDK_19.08 {
+DPDK_20.0 {
 	global:
 
 	rte_eth_random_addr;
 	rte_ether_format_addr;
+	rte_net_crc_calc;
+	rte_net_crc_set_alg;
+	rte_net_get_ptype;
 
-} DPDK_17.05;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_pci/rte_pci_version.map b/lib/librte_pci/rte_pci_version.map
index 03790cb0f0..67eb845796 100644
--- a/lib/librte_pci/rte_pci_version.map
+++ b/lib/librte_pci/rte_pci_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	pci_map_resource;
diff --git a/lib/librte_pdump/rte_pdump_version.map b/lib/librte_pdump/rte_pdump_version.map
index 3e744f3012..6d02ccce6d 100644
--- a/lib/librte_pdump/rte_pdump_version.map
+++ b/lib/librte_pdump/rte_pdump_version.map
@@ -1,4 +1,4 @@
-DPDK_16.07 {
+DPDK_20.0 {
 	global:
 
 	rte_pdump_disable;
diff --git a/lib/librte_pipeline/rte_pipeline_version.map b/lib/librte_pipeline/rte_pipeline_version.map
index 420f065d6e..64d38afecd 100644
--- a/lib/librte_pipeline/rte_pipeline_version.map
+++ b/lib/librte_pipeline/rte_pipeline_version.map
@@ -1,6 +1,8 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_pipeline_ah_packet_drop;
+	rte_pipeline_ah_packet_hijack;
 	rte_pipeline_check;
 	rte_pipeline_create;
 	rte_pipeline_flush;
@@ -9,42 +11,22 @@ DPDK_2.0 {
 	rte_pipeline_port_in_create;
 	rte_pipeline_port_in_disable;
 	rte_pipeline_port_in_enable;
+	rte_pipeline_port_in_stats_read;
 	rte_pipeline_port_out_create;
 	rte_pipeline_port_out_packet_insert;
+	rte_pipeline_port_out_stats_read;
 	rte_pipeline_run;
 	rte_pipeline_table_create;
 	rte_pipeline_table_default_entry_add;
 	rte_pipeline_table_default_entry_delete;
 	rte_pipeline_table_entry_add;
-	rte_pipeline_table_entry_delete;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_pipeline_port_in_stats_read;
-	rte_pipeline_port_out_stats_read;
-	rte_pipeline_table_stats_read;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
 	rte_pipeline_table_entry_add_bulk;
+	rte_pipeline_table_entry_delete;
 	rte_pipeline_table_entry_delete_bulk;
+	rte_pipeline_table_stats_read;
 
-} DPDK_2.1;
-
-DPDK_16.04 {
-	global:
-
-	rte_pipeline_ah_packet_hijack;
-	rte_pipeline_ah_packet_drop;
-
-} DPDK_2.2;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_port/rte_port_version.map b/lib/librte_port/rte_port_version.map
index d5989721d7..18c6154672 100644
--- a/lib/librte_port/rte_port_version.map
+++ b/lib/librte_port/rte_port_version.map
@@ -1,65 +1,35 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_port_ethdev_reader_ops;
+	rte_port_ethdev_writer_nodrop_ops;
 	rte_port_ethdev_writer_ops;
+	rte_port_fd_reader_ops;
+	rte_port_fd_writer_nodrop_ops;
+	rte_port_fd_writer_ops;
+	rte_port_kni_reader_ops;
+	rte_port_kni_writer_nodrop_ops;
+	rte_port_kni_writer_ops;
+	rte_port_ring_multi_reader_ops;
+	rte_port_ring_multi_writer_nodrop_ops;
+	rte_port_ring_multi_writer_ops;
 	rte_port_ring_reader_ipv4_frag_ops;
+	rte_port_ring_reader_ipv6_frag_ops;
 	rte_port_ring_reader_ops;
 	rte_port_ring_writer_ipv4_ras_ops;
+	rte_port_ring_writer_ipv6_ras_ops;
+	rte_port_ring_writer_nodrop_ops;
 	rte_port_ring_writer_ops;
 	rte_port_sched_reader_ops;
 	rte_port_sched_writer_ops;
 	rte_port_sink_ops;
 	rte_port_source_ops;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_port_ethdev_writer_nodrop_ops;
-	rte_port_ring_reader_ipv6_frag_ops;
-	rte_port_ring_writer_ipv6_ras_ops;
-	rte_port_ring_writer_nodrop_ops;
-
-} DPDK_2.0;
-
-DPDK_2.2 {
-	global:
-
-	rte_port_ring_multi_reader_ops;
-	rte_port_ring_multi_writer_ops;
-	rte_port_ring_multi_writer_nodrop_ops;
-
-} DPDK_2.1;
-
-DPDK_16.07 {
-	global:
-
-	rte_port_kni_reader_ops;
-	rte_port_kni_writer_ops;
-	rte_port_kni_writer_nodrop_ops;
-
-} DPDK_2.2;
-
-DPDK_16.11 {
-	global:
-
-	rte_port_fd_reader_ops;
-	rte_port_fd_writer_ops;
-	rte_port_fd_writer_nodrop_ops;
-
-} DPDK_16.07;
-
-DPDK_18.11 {
-	global:
-
 	rte_port_sym_crypto_reader_ops;
-	rte_port_sym_crypto_writer_ops;
 	rte_port_sym_crypto_writer_nodrop_ops;
+	rte_port_sym_crypto_writer_ops;
 
-} DPDK_16.11;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_power/rte_power_version.map b/lib/librte_power/rte_power_version.map
index 7729838137..55a168f56e 100644
--- a/lib/librte_power/rte_power_version.map
+++ b/lib/librte_power/rte_power_version.map
@@ -1,39 +1,27 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_power_exit;
+	rte_power_freq_disable_turbo;
 	rte_power_freq_down;
+	rte_power_freq_enable_turbo;
 	rte_power_freq_max;
 	rte_power_freq_min;
 	rte_power_freq_up;
 	rte_power_freqs;
+	rte_power_get_capabilities;
 	rte_power_get_env;
 	rte_power_get_freq;
+	rte_power_guest_channel_send_msg;
 	rte_power_init;
 	rte_power_set_env;
 	rte_power_set_freq;
+	rte_power_turbo_status;
 	rte_power_unset_env;
 
 	local: *;
 };
 
-DPDK_17.11 {
-	global:
-
-	rte_power_guest_channel_send_msg;
-	rte_power_freq_disable_turbo;
-	rte_power_freq_enable_turbo;
-	rte_power_turbo_status;
-
-} DPDK_2.0;
-
-DPDK_18.08 {
-	global:
-
-	rte_power_get_capabilities;
-
-} DPDK_17.11;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_rawdev/rte_rawdev_version.map b/lib/librte_rawdev/rte_rawdev_version.map
index b61dbff11c..d847c9e0d3 100644
--- a/lib/librte_rawdev/rte_rawdev_version.map
+++ b/lib/librte_rawdev/rte_rawdev_version.map
@@ -1,4 +1,4 @@
-DPDK_18.08 {
+DPDK_20.0 {
 	global:
 
 	rte_rawdev_close;
@@ -17,8 +17,8 @@ DPDK_18.08 {
 	rte_rawdev_pmd_release;
 	rte_rawdev_queue_conf_get;
 	rte_rawdev_queue_count;
-	rte_rawdev_queue_setup;
 	rte_rawdev_queue_release;
+	rte_rawdev_queue_setup;
 	rte_rawdev_reset;
 	rte_rawdev_selftest;
 	rte_rawdev_set_attr;
diff --git a/lib/librte_reorder/rte_reorder_version.map b/lib/librte_reorder/rte_reorder_version.map
index 0a8a54de83..cf444062df 100644
--- a/lib/librte_reorder/rte_reorder_version.map
+++ b/lib/librte_reorder/rte_reorder_version.map
@@ -1,13 +1,13 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_reorder_create;
-	rte_reorder_init;
+	rte_reorder_drain;
 	rte_reorder_find_existing;
-	rte_reorder_reset;
 	rte_reorder_free;
+	rte_reorder_init;
 	rte_reorder_insert;
-	rte_reorder_drain;
+	rte_reorder_reset;
 
 	local: *;
 };
diff --git a/lib/librte_ring/rte_ring_version.map b/lib/librte_ring/rte_ring_version.map
index 510c1386e0..89d84bcf48 100644
--- a/lib/librte_ring/rte_ring_version.map
+++ b/lib/librte_ring/rte_ring_version.map
@@ -1,8 +1,9 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_ring_create;
 	rte_ring_dump;
+	rte_ring_free;
 	rte_ring_get_memsize;
 	rte_ring_init;
 	rte_ring_list_dump;
@@ -11,13 +12,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.2 {
-	global:
-
-	rte_ring_free;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_sched/rte_sched_version.map b/lib/librte_sched/rte_sched_version.map
index f33761e63e..cefd990367 100644
--- a/lib/librte_sched/rte_sched_version.map
+++ b/lib/librte_sched/rte_sched_version.map
@@ -1,4 +1,4 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
 	rte_approx;
@@ -14,6 +14,9 @@ DPDK_2.0 {
 	rte_sched_port_enqueue;
 	rte_sched_port_free;
 	rte_sched_port_get_memory_footprint;
+	rte_sched_port_pkt_read_color;
+	rte_sched_port_pkt_read_tree_path;
+	rte_sched_port_pkt_write;
 	rte_sched_queue_read_stats;
 	rte_sched_subport_config;
 	rte_sched_subport_read_stats;
@@ -21,15 +24,6 @@ DPDK_2.0 {
 	local: *;
 };
 
-DPDK_2.1 {
-	global:
-
-	rte_sched_port_pkt_write;
-	rte_sched_port_pkt_read_tree_path;
-	rte_sched_port_pkt_read_color;
-
-} DPDK_2.0;
-
 EXPERIMENTAL {
 	global:
 
diff --git a/lib/librte_security/rte_security_version.map b/lib/librte_security/rte_security_version.map
index 53267bf3cc..b07314bbf4 100644
--- a/lib/librte_security/rte_security_version.map
+++ b/lib/librte_security/rte_security_version.map
@@ -1,4 +1,4 @@
-DPDK_18.11 {
+DPDK_20.0 {
 	global:
 
 	rte_security_attach_session;
diff --git a/lib/librte_table/rte_table_version.map b/lib/librte_table/rte_table_version.map
index 6237252bec..40f72b1fe8 100644
--- a/lib/librte_table/rte_table_version.map
+++ b/lib/librte_table/rte_table_version.map
@@ -1,4 +1,4 @@
-DPDK_17.11 {
+DPDK_20.0 {
 	global:
 
 	rte_table_acl_ops;
diff --git a/lib/librte_timer/rte_timer_version.map b/lib/librte_timer/rte_timer_version.map
index 92c69b2e29..2a59d3f081 100644
--- a/lib/librte_timer/rte_timer_version.map
+++ b/lib/librte_timer/rte_timer_version.map
@@ -1,23 +1,18 @@
-DPDK_2.0 {
-	global:
-
-	rte_timer_init;
-	rte_timer_pending;
-	rte_timer_reset_sync;
-	rte_timer_stop_sync;
-
-	local: *;
-};
-
-DPDK_19.05 {
+DPDK_20.0 {
 	global:
 
 	rte_timer_dump_stats;
+	rte_timer_init;
 	rte_timer_manage;
+	rte_timer_pending;
 	rte_timer_reset;
+	rte_timer_reset_sync;
 	rte_timer_stop;
+	rte_timer_stop_sync;
 	rte_timer_subsystem_init;
-} DPDK_2.0;
+
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
diff --git a/lib/librte_vhost/rte_vhost_version.map b/lib/librte_vhost/rte_vhost_version.map
index ce517b1271..c512377fe6 100644
--- a/lib/librte_vhost/rte_vhost_version.map
+++ b/lib/librte_vhost/rte_vhost_version.map
@@ -1,64 +1,34 @@
-DPDK_2.0 {
+DPDK_20.0 {
 	global:
 
+	rte_vhost_avail_entries;
 	rte_vhost_dequeue_burst;
 	rte_vhost_driver_callback_register;
-	rte_vhost_driver_register;
-	rte_vhost_enable_guest_notification;
-	rte_vhost_enqueue_burst;
-
-	local: *;
-};
-
-DPDK_2.1 {
-	global:
-
-	rte_vhost_driver_unregister;
-
-} DPDK_2.0;
-
-DPDK_16.07 {
-	global:
-
-	rte_vhost_avail_entries;
-	rte_vhost_get_ifname;
-	rte_vhost_get_numa_node;
-	rte_vhost_get_queue_num;
-
-} DPDK_2.1;
-
-DPDK_17.05 {
-	global:
-
 	rte_vhost_driver_disable_features;
 	rte_vhost_driver_enable_features;
 	rte_vhost_driver_get_features;
+	rte_vhost_driver_register;
 	rte_vhost_driver_set_features;
 	rte_vhost_driver_start;
+	rte_vhost_driver_unregister;
+	rte_vhost_enable_guest_notification;
+	rte_vhost_enqueue_burst;
+	rte_vhost_get_ifname;
 	rte_vhost_get_mem_table;
 	rte_vhost_get_mtu;
 	rte_vhost_get_negotiated_features;
+	rte_vhost_get_numa_node;
+	rte_vhost_get_queue_num;
 	rte_vhost_get_vhost_vring;
 	rte_vhost_get_vring_num;
 	rte_vhost_gpa_to_vva;
 	rte_vhost_log_used_vring;
 	rte_vhost_log_write;
-
-} DPDK_16.07;
-
-DPDK_17.08 {
-	global:
-
 	rte_vhost_rx_queue_count;
-
-} DPDK_17.05;
-
-DPDK_18.02 {
-	global:
-
 	rte_vhost_vring_call;
 
-} DPDK_17.08;
+	local: *;
+};
 
 EXPERIMENTAL {
 	global:
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* [dpdk-dev] [PATCH v8 12/12] buildtools: add ABI versioning check script
  2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
                               ` (11 preceding siblings ...)
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 11/12] build: change ABI version to 20.0 Anatoly Burakov
@ 2019-11-20 17:23             ` Anatoly Burakov
  12 siblings, 0 replies; 131+ messages in thread
From: Anatoly Burakov @ 2019-11-20 17:23 UTC (permalink / raw)
  To: dev
  Cc: Marcin Baran, john.mcnamara, ray.kinsella, bruce.richardson,
	thomas, david.marchand, Pawel Modrak

From: Marcin Baran <marcinx.baran@intel.com>

Add a shell script that checks whether built libraries are
versioned with expected ABI (current ABI, current ABI + 1,
or EXPERIMENTAL).

The following command was used to verify current source tree
(assuming build directory is in ./build):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---

Notes:
    v2:
    - Moved this to the end of the patchset
    - Fixed bug when ABI symbols were not found because the .so
      did not declare any public symbols

 buildtools/check-abi-version.sh | 54 +++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100755 buildtools/check-abi-version.sh

diff --git a/buildtools/check-abi-version.sh b/buildtools/check-abi-version.sh
new file mode 100755
index 0000000000..9a3d135463
--- /dev/null
+++ b/buildtools/check-abi-version.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2019 Intel Corporation
+
+# Check whether library symbols have correct
+# version (provided ABI number or provided ABI
+# number + 1 or EXPERIMENTAL).
+# Args:
+#   $1: path of the library .so file
+#   $2: ABI major version number to check
+#       (defaults to ABI_VERSION file value)
+
+if [ -z "$1" ]; then
+    echo "Script checks whether library symbols have"
+    echo "correct version (ABI_VER/ABI_VER+1/EXPERIMENTAL)"
+    echo "Usage:"
+    echo "  $0 SO_FILE_PATH [ABI_VER]"
+    exit 1
+fi
+
+LIB="$1"
+DEFAULT_ABI=$(cat "$(dirname \
+            $(readlink -f $0))/../ABI_VERSION" | \
+            cut -d'.' -f 1)
+ABIVER="DPDK_${2-$DEFAULT_ABI}"
+NEXT_ABIVER="DPDK_$((${2-$DEFAULT_ABI}+1))"
+
+ret=0
+
+# get output of objdump
+OBJ_DUMP_OUTPUT=`objdump -TC --section=.text ${LIB} 2>&1 | grep ".text"`
+
+# there may not be any .text sections in the .so file, in which case exit early
+echo "${OBJ_DUMP_OUTPUT}" | grep "not found in any input file" -q
+if [ "$?" -eq 0 ]; then
+    exit 0
+fi
+
+# we have symbols, so let's see if the versions are correct
+for SYM in $(echo "${OBJ_DUMP_OUTPUT}" | awk '{print $(NF-1) "-" $NF}')
+do
+    version=$(echo $SYM | cut -d'-' -f 1)
+    symbol=$(echo $SYM | cut -d'-' -f 2)
+    case $version in (*"$ABIVER"*|*"$NEXT_ABIVER"*|"EXPERIMENTAL")
+        ;;
+    (*)
+        echo "Warning: symbol $symbol ($version) should be annotated " \
+             "as ABI version $ABIVER / $NEXT_ABIVER, or EXPERIMENTAL."
+        ret=1
+    ;;
+    esac
+done
+
+exit $ret
-- 
2.17.1

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v8 03/12] build: remove individual library versions
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 03/12] build: remove individual library versions Anatoly Burakov
@ 2019-11-20 19:35               ` David Marchand
  0 siblings, 0 replies; 131+ messages in thread
From: David Marchand @ 2019-11-20 19:35 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: dev, Thomas Monjalon

On Wed, Nov 20, 2019 at 6:24 PM Anatoly Burakov
<anatoly.burakov@intel.com> wrote:
>
> Since the library versioning for both stable and experimental ABI's is
> now managed globally, the LIBABIVER and version variables no longer
> serve any useful purpose, and can be removed.
>
> The replacement in Makefiles was done using the following regex:
>
>         ^(#.*\n)?LIBABIVER\s*:=\s*\d+\n(\s*\n)?
>
> (LIBABIVER := numbers, optionally preceded by a comment and optionally
> succeeded by an empty line)
>
> The replacement for meson files was done using the following regex:
>
>         ^(#.*\n)?version\s*=\s*\d+\n(\s*\n)?
>
> (version = numbers, optionally preceded by a comment and optionally
> succeeded by an empty line)
>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>

Caught two leftovers:

[dmarchan@dmarchan dpdk.org]$ git ls-tree -r HEAD --name-only |grep
Makefile |xargs grep '\<LIBABIVER\>[[:space:]]*:*='
drivers/common/qat/Makefile:    LIBABIVER := 1
[dmarchan@dmarchan dpdk.org]$ git ls-tree -r HEAD --name-only |grep
meson.build |xargs grep '\<version\>[[:space:]]*='
lib/librte_eal/meson.build:version = 12  # the version of the EAL API

I will fix when applying and add a little note about them in the commitlog.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v8 01/12] config: change ABI versioning to global
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 01/12] config: change ABI versioning to global Anatoly Burakov
@ 2019-11-20 19:51               ` David Marchand
  2019-11-20 22:01                 ` David Marchand
  0 siblings, 1 reply; 131+ messages in thread
From: David Marchand @ 2019-11-20 19:51 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: dev, Thomas Monjalon

On Wed, Nov 20, 2019 at 6:23 PM Anatoly Burakov
<anatoly.burakov@intel.com> wrote:
>
> From: Marcin Baran <marcinx.baran@intel.com>
>
> As per new ABI policy [1], all of the libraries are now versioned using
> one global ABI version. Stable libraries use the MAJOR.MINOR ABI
> version for their shared objects, while experimental libraries
> use the 0.MAJORMINOR convention for their versioning.
> Experimental library versioning is managed globally. Changes in this
> patch implement the necessary steps to enable that.

The next patch just removes the config entry CONFIG_RTE_MAJOR_ABI
while this patch entirely removes its usage.
I squashed patch 2 in patch 1 and added its commitlog here.

>
> [1] https://doc.dpdk.org/guides/contributing/abi_policy.html
>
> Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Bruce Richardson <bruce.richardson@intel.com>

[snip]

> diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
> index 4df8849a08..3b318a5306 100644
> --- a/mk/rte.lib.mk
> +++ b/mk/rte.lib.mk
> @@ -11,20 +11,16 @@ EXTLIB_BUILD ?= n
>  # VPATH contains at least SRCDIR
>  VPATH += $(SRCDIR)
>
> -ifneq ($(CONFIG_RTE_MAJOR_ABI),)
> -ifneq ($(LIBABIVER),)
> -LIBABIVER := $(CONFIG_RTE_MAJOR_ABI)
> -endif
> +ifneq ($(shell grep -s "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)
> +LIBABIVER := $(shell cat $(RTE_SRCDIR)/ABI_VERSION)
> +else
> +# EXPERIMENTAL ABI is versioned as 0.major+minor, e.g. 0.201 for 20.1 ABI
> +LIBABIVER := 0.$(shell cat $(RTE_SRCDIR)/ABI_VERSION | td -d '.')

s/td/tr/

Will fix while applying.

-- 
David Marchand


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v8 04/12] buildtools: add script for updating symbols abi version
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 04/12] buildtools: add script for updating symbols abi version Anatoly Burakov
@ 2019-11-20 20:05               ` David Marchand
  0 siblings, 0 replies; 131+ messages in thread
From: David Marchand @ 2019-11-20 20:05 UTC (permalink / raw)
  To: Anatoly Burakov
  Cc: dev, Pawel Modrak, Mcnamara, John, Kinsella, Ray,
	Bruce Richardson, Thomas Monjalon

On Wed, Nov 20, 2019 at 6:24 PM Anatoly Burakov
<anatoly.burakov@intel.com> wrote:
> diff --git a/buildtools/update_version_map_abi.py b/buildtools/update_version_map_abi.py
> new file mode 100755
> index 0000000000..87fed54653
> --- /dev/null
> +++ b/buildtools/update_version_map_abi.py
> @@ -0,0 +1,175 @@
> +#!/usr/bin/env python
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2019 Intel Corporation
> +
> +"""
> +A Python program that updates and merges all available stable ABI versions into
> +one ABI version, while leaving experimental ABI exactly as it is. The intended
> +ABI version is supplied via command-line parameter. This script is to be called
> +from the buildtools/update_abi.sh utility.

update-abi.sh

Will fix while applying.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v8 00/12] Implement the new ABI policy and add helper scripts
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 00/12] " Anatoly Burakov
@ 2019-11-20 20:17               ` Thomas Monjalon
  2019-11-20 22:13                 ` David Marchand
  2019-11-21 13:24                 ` Kinsella, Ray
  0 siblings, 2 replies; 131+ messages in thread
From: Thomas Monjalon @ 2019-11-20 20:17 UTC (permalink / raw)
  To: Anatoly Burakov
  Cc: dev, john.mcnamara, ray.kinsella, bruce.richardson, david.marchand

20/11/2019 18:23, Anatoly Burakov:
> This patchset prepares the codebase for the new ABI policy and
> adds a few helper scripts.
> 
>  379 files changed, 1172 insertions(+), 3409 deletions(-)

Thanks for the great work Anatoly

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



^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v8 11/12] build: change ABI version to 20.0
  2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 11/12] build: change ABI version to 20.0 Anatoly Burakov
@ 2019-11-20 20:47               ` David Marchand
  0 siblings, 0 replies; 131+ messages in thread
From: David Marchand @ 2019-11-20 20:47 UTC (permalink / raw)
  To: Anatoly Burakov
  Cc: dev, Pawel Modrak, Nicolas Chautru, Hemant Agrawal,
	Sachin Saxena, Rosen Xu, Stephen Hemminger, Anoob Joseph,
	Tomasz Duszynski, Liron Himi, Jerin Jacob, Nithin Dabilpuram,
	Vamsi Attunuru, Lee Daly, Fiona Trahe, Ashish Gupta, Sunila Sahu,
	Declan Doherty, Pablo de Lara, Gagandeep Singh, Ravi Kumar,
	Akhil Goyal, Michael Shamis, Nagadheeraj Rottela,
	Srikanth Jampala, Ankur Dwivedi, Fan Zhang, Jay Zhou,
	Nipun Gupta, Mattias Rönnblom, Pavan Nikhilesh, Liang Ma,
	Peter Mccarthy, Harry van Haaren, Artem V. Andreev,
	Andrew Rybchenko, Olivier Matz, Gage Eads, John W. Linville,
	Xiaolong Ye, Qi Zhang, Shepard Siegel, Ed Czeck, John Miller,
	Igor Russkikh, Pavel Belous, Allain Legacy, Matt Peters,
	Rasesh Mody, Shahed Shaikh, Ajit Khaparde, Somnath Kotur,
	Chas Williams, Rahul Lakkireddy, Wenzhuo Lu, Marcin Wojtas,
	Michal Krawczyk, Guy Tzalik, Evgeny Schemeilin, Igor Chauskin,
	John Daley, Hyong Youb Kim, Gaetan Rivet, Xiao Wang, Ziyang Xuan,
	Xiaoyun Wang, Guoyang Zhou, Wei Hu (Xavier), Min Hu (Connor),
	Yisen Zhuang, Beilei Xing, Jingjing Wu, Qiming Yang,
	Konstantin Ananyev, Ferruh Yigit, Shijith Thotton,
	Srisivasubramanian Srinivasan, Jakub Grajciar, Matan Azrad,
	Shahaf Shuler, Viacheslav Ovsiienko, Zyta Szpak,
	K. Y. Srinivasan, Haiyang Zhang, Rastislav Cernay, Jan Remes,
	Alejandro Lucero, Tetsuya Mukawa, Kiran Kumar K,
	Bruce Richardson, Jasvinder Singh, Cristian Dumitrescu,
	Keith Wiles, Maciej Czekaj, Maxime Coquelin, Tiwei Bie,
	Zhihong Wang, Yong Wang, Tianfei zhang, Xiaoyun Li, Satha Rao,
	Shreyansh Jain, David Hunt, Byron Marohn, Yipeng Wang,
	Thomas Monjalon, Jiayu Hu, Sameh Gobriel, Reshma Pattan,
	Vladimir Medvedkin, Robert Sanford, Erik Gabriel Carrillo,
	Mcnamara, John, Kinsella, Ray

On Wed, Nov 20, 2019 at 6:25 PM Anatoly Burakov
<anatoly.burakov@intel.com> wrote:
>
> From: Pawel Modrak <pawelx.modrak@intel.com>
>
> Merge all vesions in linker version script files to DPDK_20.0.
>
> This commit was generated by running the following command:
>
> :~/DPDK$ buildtools/update-abi.sh 20.0

Updated map files for i40e and ipn3ke, following rebase on next-net merge.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v8 01/12] config: change ABI versioning to global
  2019-11-20 19:51               ` David Marchand
@ 2019-11-20 22:01                 ` David Marchand
  0 siblings, 0 replies; 131+ messages in thread
From: David Marchand @ 2019-11-20 22:01 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: dev, Thomas Monjalon

On Wed, Nov 20, 2019 at 8:51 PM David Marchand
<david.marchand@redhat.com> wrote:
>
> On Wed, Nov 20, 2019 at 6:23 PM Anatoly Burakov
> <anatoly.burakov@intel.com> wrote:
> >
> > From: Marcin Baran <marcinx.baran@intel.com>
> >
> > As per new ABI policy [1], all of the libraries are now versioned using
> > one global ABI version. Stable libraries use the MAJOR.MINOR ABI
> > version for their shared objects, while experimental libraries
> > use the 0.MAJORMINOR convention for their versioning.
> > Experimental library versioning is managed globally. Changes in this
> > patch implement the necessary steps to enable that.
>
> The next patch just removes the config entry CONFIG_RTE_MAJOR_ABI
> while this patch entirely removes its usage.
> I squashed patch 2 in patch 1 and added its commitlog here.
>
> >
> > [1] https://doc.dpdk.org/guides/contributing/abi_policy.html
> >
> > Signed-off-by: Marcin Baran <marcinx.baran@intel.com>
> > Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com>
> > Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
> > Acked-by: Bruce Richardson <bruce.richardson@intel.com>
>
> [snip]
>
> > diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
> > index 4df8849a08..3b318a5306 100644
> > --- a/mk/rte.lib.mk
> > +++ b/mk/rte.lib.mk
> > @@ -11,20 +11,16 @@ EXTLIB_BUILD ?= n
> >  # VPATH contains at least SRCDIR
> >  VPATH += $(SRCDIR)
> >
> > -ifneq ($(CONFIG_RTE_MAJOR_ABI),)
> > -ifneq ($(LIBABIVER),)
> > -LIBABIVER := $(CONFIG_RTE_MAJOR_ABI)
> > -endif
> > +ifneq ($(shell grep -s "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)
> > +LIBABIVER := $(shell cat $(RTE_SRCDIR)/ABI_VERSION)
> > +else
> > +# EXPERIMENTAL ABI is versioned as 0.major+minor, e.g. 0.201 for 20.1 ABI
> > +LIBABIVER := 0.$(shell cat $(RTE_SRCDIR)/ABI_VERSION | td -d '.')
>
> s/td/tr/
>
> Will fix while applying.

On this part again, for ethtool example library, this triggers a
warning since ABI_VERSION does not exist in this example source
directory.

diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index 94a80e024..655a1b143 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -13,7 +13,7 @@ VPATH += $(SRCDIR)

 ifneq ($(shell grep -s "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)
 LIBABIVER := $(shell cat $(RTE_SRCDIR)/ABI_VERSION)
-else
+else ifeq ($(LIBABIVER),)
 # EXPERIMENTAL ABI is versioned as 0.major+minor, e.g. 0.201 for 20.1 ABI
 LIBABIVER := 0.$(shell cat $(RTE_SRCDIR)/ABI_VERSION | tr -d '.')
 endif

In the patch removing LIBABIVER, I let examples/ethtool/lib/Makefile untouched.
With this, an external library manages its ABI version.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v8 00/12] Implement the new ABI policy and add helper scripts
  2019-11-20 20:17               ` Thomas Monjalon
@ 2019-11-20 22:13                 ` David Marchand
  2019-11-21 10:22                   ` Burakov, Anatoly
  2019-11-21 13:24                 ` Kinsella, Ray
  1 sibling, 1 reply; 131+ messages in thread
From: David Marchand @ 2019-11-20 22:13 UTC (permalink / raw)
  To: Anatoly Burakov
  Cc: dev, Mcnamara, John, Kinsella, Ray, Bruce Richardson, Thomas Monjalon

On Wed, Nov 20, 2019 at 9:17 PM Thomas Monjalon <thomas@monjalon.net> wrote:
>
> 20/11/2019 18:23, Anatoly Burakov:
> > This patchset prepares the codebase for the new ABI policy and
> > adds a few helper scripts.
> >
> >  379 files changed, 1172 insertions(+), 3409 deletions(-)
>
> Thanks for the great work Anatoly
>
> Acked-by: Thomas Monjalon <thomas@monjalon.net>

Added some entropy for external libraries using make, rebased on a
(non-|) compiling master, fixed some typos (that codespell found) and
added the new scripts in MAINTAINERS.
And with this, we are done :-).

Applied, thanks.


-- 
David Marchand


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v8 00/12] Implement the new ABI policy and add helper scripts
  2019-11-20 22:13                 ` David Marchand
@ 2019-11-21 10:22                   ` Burakov, Anatoly
  0 siblings, 0 replies; 131+ messages in thread
From: Burakov, Anatoly @ 2019-11-21 10:22 UTC (permalink / raw)
  To: David Marchand
  Cc: dev, Mcnamara, John, Kinsella, Ray, Bruce Richardson, Thomas Monjalon

On 20-Nov-19 10:13 PM, David Marchand wrote:
> On Wed, Nov 20, 2019 at 9:17 PM Thomas Monjalon <thomas@monjalon.net> wrote:
>>
>> 20/11/2019 18:23, Anatoly Burakov:
>>> This patchset prepares the codebase for the new ABI policy and
>>> adds a few helper scripts.
>>>
>>>   379 files changed, 1172 insertions(+), 3409 deletions(-)
>>
>> Thanks for the great work Anatoly
>>
>> Acked-by: Thomas Monjalon <thomas@monjalon.net>
> 
> Added some entropy for external libraries using make, rebased on a
> (non-|) compiling master, fixed some typos (that codespell found) and
> added the new scripts in MAINTAINERS.
> And with this, we are done :-).
> 
> Applied, thanks.
> 

Thanks everyone for their help in getting this over the line!

-- 
Thanks,
Anatoly

^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v8 00/12] Implement the new ABI policy and add helper scripts
  2019-11-20 20:17               ` Thomas Monjalon
  2019-11-20 22:13                 ` David Marchand
@ 2019-11-21 13:24                 ` Kinsella, Ray
  1 sibling, 0 replies; 131+ messages in thread
From: Kinsella, Ray @ 2019-11-21 13:24 UTC (permalink / raw)
  To: Thomas Monjalon, Burakov, Anatoly
  Cc: dev, Mcnamara, John, Richardson, Bruce, david.marchand



> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Wednesday 20 November 2019 20:18
> To: Burakov, Anatoly <anatoly.burakov@intel.com>
> Cc: dev@dpdk.org; Mcnamara, John <john.mcnamara@intel.com>; Kinsella,
> Ray <ray.kinsella@intel.com>; Richardson, Bruce
> <bruce.richardson@intel.com>; david.marchand@redhat.com
> Subject: Re: [dpdk-dev] [PATCH v8 00/12] Implement the new ABI policy
> and add helper scripts
> 
> 20/11/2019 18:23, Anatoly Burakov:
> > This patchset prepares the codebase for the new ABI policy and adds a
> > few helper scripts.
> >
> >  379 files changed, 1172 insertions(+), 3409 deletions(-)

[rk] +1
> Thanks for the great work Anatoly
> 
> Acked-by: Thomas Monjalon <thomas@monjalon.net>
> 


^ permalink raw reply	[flat|nested] 131+ messages in thread

* Re: [dpdk-dev] [PATCH v7 09/10] build: change ABI version to 20.0
  2019-11-19 21:50             ` David Marchand
@ 2019-11-22  7:07               ` Sachin Saxena
  0 siblings, 0 replies; 131+ messages in thread
From: Sachin Saxena @ 2019-11-22  7:07 UTC (permalink / raw)
  To: David Marchand, Anatoly Burakov, Thomas Monjalon
  Cc: dev, Hemant Agrawal, Stephen Hemminger, Mcnamara, John, Kinsella,
	Ray, Bruce Richardson

> -----Original Message-----
> From: David Marchand <david.marchand@redhat.com>
> Sent: Wednesday, November 20, 2019 3:20 AM
> To: Anatoly Burakov <anatoly.burakov@intel.com>; Thomas Monjalon
> <thomas@monjalon.net>
> Cc: dev <dev@dpdk.org>; Hemant Agrawal <hemant.agrawal@nxp.com>;
> Sachin Saxena <sachin.saxena@nxp.com>; Stephen Hemminger
> <sthemmin@microsoft.com>; Mcnamara, John
> <john.mcnamara@intel.com>; Kinsella, Ray <ray.kinsella@intel.com>; Bruce
> Richardson <bruce.richardson@intel.com>
> Subject: Re: [PATCH v7 09/10] build: change ABI version to 20.0
> Importance: High
> 
> Reduced the Cc: list.
> 
> On Fri, Nov 8, 2019 at 5:26 PM Anatoly Burakov
> <anatoly.burakov@intel.com> wrote:
> >
> > From: Pawel Modrak <pawelx.modrak@intel.com>
> >
> > Merge all vesions in linker version script files to DPDK_20.0.
> >
> > This commit was generated by running the following command:
> >
> > :~/DPDK$ buildtools/update-abi.sh 20.0
> >
> 
> I inspected the changes.
> I caught just 3 oddities.
> The first two were reported in the patches on timer and lpm.
> 
> The last one is in the dpaa bus driver:
> 
> > diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map
> > b/drivers/bus/dpaa/rte_bus_dpaa_version.map
> > index cf428a54dc..e6ca4361e0 100644
> > --- a/drivers/bus/dpaa/rte_bus_dpaa_version.map
> > +++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map
> > -DPDK_18.08 {
> > -       global:
> > -
> > -       fman_if_get_sg_enable;
> > -       fman_if_set_sg;
> > -
> > -} DPDK_18.02;
> > -
> > -DPDK_18.11 {
> > -       global:
> > -
> > -       bman_thread_irq;
> > -       fman_if_get_sg_enable;
> > -       fman_if_set_sg;
> > -       qman_clear_irq;
> > -
> > -       qman_irqsource_add;
> > -       qman_irqsource_remove;
> >         qman_thread_fd;
> >         qman_thread_irq;
> > -
> 
> Here, we had fman_if_get_sg_enable and fman_if_set_sg in 18.08 and
> 18.11 sections, but no symbols for 18.08 were in the code.
> I'd say this is fine, as there was no ABI change between 18.08 and
> 18.11 on them.
> 
[Sachin Saxena]  Yes, we are also fine with this.

> 
> The rest of the series looks good to me.
> Thanks Anatoly.
> 
> 
> --
> David Marchand


^ permalink raw reply	[flat|nested] 131+ messages in thread

end of thread, other threads:[~2019-11-22  9:00 UTC | newest]

Thread overview: 131+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-30  9:21 [dpdk-dev] [PATCH 1/8] config: change ABI versioning for global Marcin Baran
2019-09-30  9:21 ` [dpdk-dev] [PATCH 2/8] buildtools: scripts for updating symbols abi version Marcin Baran
2019-09-30  9:21 ` [dpdk-dev] [PATCH 3/8] buildtools: add ABI versioning check script Marcin Baran
2019-09-30 10:27   ` Bruce Richardson
2019-09-30  9:21 ` [dpdk-dev] [PATCH 4/8] build: change ABI version to 20.0 Marcin Baran
2019-09-30  9:21 ` [dpdk-dev] [PATCH 5/8] lib: remove dead code from timer Marcin Baran
2019-09-30  9:21 ` [dpdk-dev] [PATCH 6/8] lib: remove dead code from lpm Marcin Baran
2019-09-30  9:21 ` [dpdk-dev] [PATCH 7/8] lib: remove dead code from distributor Marcin Baran
2019-09-30  9:21 ` [dpdk-dev] [PATCH 8/8] lib: change function suffix in distributor Marcin Baran
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov
2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov
2019-10-17  8:50     ` Bruce Richardson
2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov
2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 " Anatoly Burakov
2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 " Anatoly Burakov
2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 " Anatoly Burakov
2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 00/12] " Anatoly Burakov
2019-11-20 20:17               ` Thomas Monjalon
2019-11-20 22:13                 ` David Marchand
2019-11-21 10:22                   ` Burakov, Anatoly
2019-11-21 13:24                 ` Kinsella, Ray
2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 01/12] config: change ABI versioning to global Anatoly Burakov
2019-11-20 19:51               ` David Marchand
2019-11-20 22:01                 ` David Marchand
2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 02/12] config: remove CONFIG_RTE_MAJOR_ABI option Anatoly Burakov
2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 03/12] build: remove individual library versions Anatoly Burakov
2019-11-20 19:35               ` David Marchand
2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 04/12] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-11-20 20:05               ` David Marchand
2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 05/12] buildtools: add ABI update shell script Anatoly Burakov
2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 06/12] timer: remove deprecated code Anatoly Burakov
2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 07/12] lpm: " Anatoly Burakov
2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 08/12] distributor: " Anatoly Burakov
2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 09/12] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 10/12] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 11/12] build: change ABI version to 20.0 Anatoly Burakov
2019-11-20 20:47               ` David Marchand
2019-11-20 17:23             ` [dpdk-dev] [PATCH v8 12/12] buildtools: add ABI versioning check script Anatoly Burakov
2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global Anatoly Burakov
2019-11-19 13:53             ` Thomas Monjalon
2019-11-19 15:48               ` Burakov, Anatoly
2019-11-20 12:10             ` Kinsella, Ray
2019-11-20 13:31               ` Thomas Monjalon
2019-11-20 14:10                 ` Kinsella, Ray
2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-11-19 14:01             ` Thomas Monjalon
2019-11-19 15:38               ` Burakov, Anatoly
2019-11-19 16:05                 ` Thomas Monjalon
2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 03/10] buildtools: add ABI update shell script Anatoly Burakov
2019-11-19 17:38             ` Thomas Monjalon
2019-11-20 11:50               ` Burakov, Anatoly
2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 04/10] timer: remove deprecated code Anatoly Burakov
2019-11-19 21:42             ` David Marchand
2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 05/10] lpm: " Anatoly Burakov
2019-11-19 21:43             ` David Marchand
2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 06/10] distributor: " Anatoly Burakov
2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 09/10] build: change ABI version to 20.0 Anatoly Burakov
2019-11-19 17:46             ` Thomas Monjalon
2019-11-19 21:50             ` David Marchand
2019-11-22  7:07               ` Sachin Saxena
2019-11-08 16:25           ` [dpdk-dev] [PATCH v7 10/10] buildtools: add ABI versioning check script Anatoly Burakov
2019-11-19 18:16             ` Thomas Monjalon
2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 01/10] config: change ABI versioning to global Anatoly Burakov
2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 03/10] buildtools: add ABI update shell script Anatoly Burakov
2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 04/10] timer: remove deprecated code Anatoly Burakov
2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 05/10] lpm: " Anatoly Burakov
2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 06/10] distributor: " Anatoly Burakov
2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 09/10] build: change ABI version to 20.0 Anatoly Burakov
2019-11-06 16:54         ` [dpdk-dev] [PATCH v6 10/10] buildtools: add ABI versioning check script Anatoly Burakov
2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 01/10] config: change ABI versioning to global Anatoly Burakov
2019-11-05 11:05         ` David Marchand
2019-11-05 13:50           ` Bruce Richardson
2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-11-06 15:38         ` David Marchand
2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 03/10] buildtools: add ABI update shell script Anatoly Burakov
2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 04/10] timer: remove deprecated code Anatoly Burakov
2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 05/10] lpm: " Anatoly Burakov
2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 06/10] distributor: " Anatoly Burakov
2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 09/10] build: change ABI version to 20.0 Anatoly Burakov
2019-10-24  9:46       ` [dpdk-dev] [PATCH v5 10/10] buildtools: add ABI versioning check script Anatoly Burakov
2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 01/10] config: change ABI versioning to global Anatoly Burakov
2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 03/10] buildtools: add ABI update shell script Anatoly Burakov
2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 04/10] timer: remove deprecated code Anatoly Burakov
2019-10-17 21:04       ` Carrillo, Erik G
2019-10-21 13:24       ` Kevin Traynor
2019-10-24  9:07         ` Burakov, Anatoly
2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 05/10] lpm: " Anatoly Burakov
2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 06/10] distributor: " Anatoly Burakov
2019-10-17 15:59       ` Hunt, David
2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov
2019-10-17 16:00       ` Hunt, David
2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-10-17 14:31     ` [dpdk-dev] [PATCH v4 09/10] build: change ABI version to 20.0 Anatoly Burakov
2019-10-17 14:32     ` [dpdk-dev] [PATCH v4 10/10] buildtools: add ABI versioning check script Anatoly Burakov
2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global Anatoly Burakov
2019-10-17  8:44     ` Bruce Richardson
2019-10-17 10:25       ` Burakov, Anatoly
2019-10-17 14:09       ` Luca Boccassi
2019-10-17 14:12         ` Bruce Richardson
2019-10-18 10:07         ` Kevin Traynor
2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 2/9] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 3/9] buildtools: add ABI update shell script Anatoly Burakov
2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 4/9] timer: remove deprecated code Anatoly Burakov
2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 5/9] lpm: " Anatoly Burakov
2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 6/9] distributor: " Anatoly Burakov
2019-10-17 10:53     ` Hunt, David
2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 7/9] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 8/9] build: change ABI version to 20.0 Anatoly Burakov
2019-10-16 17:03   ` [dpdk-dev] [PATCH v3 9/9] buildtools: add ABI versioning check script Anatoly Burakov
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 01/10] config: change ABI versioning for global Anatoly Burakov
2019-10-16 13:22   ` Bruce Richardson
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov
2019-10-16 13:25   ` Bruce Richardson
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 03/10] buildtools: add ABI update shell script Anatoly Burakov
2019-10-16 13:33   ` Bruce Richardson
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 04/10] timer: remove deprecated code Anatoly Burakov
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 05/10] lpm: " Anatoly Burakov
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 06/10] distributor: " Anatoly Burakov
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 07/10] lib: change function suffix in distributor Anatoly Burakov
2019-10-16 13:18   ` Hunt, David
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 09/10] build: change ABI version to 20.0 Anatoly Burakov
2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 10/10] buildtools: add ABI versioning check script Anatoly Burakov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).