From patchwork Wed Oct 16 17:03:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 61328 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 28F221E88E; Wed, 16 Oct 2019 19:03:55 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 10E9F1E870 for ; Wed, 16 Oct 2019 19:03:49 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Oct 2019 10:03:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,304,1566889200"; d="scan'208";a="220844935" Received: from silpixa00399498.ir.intel.com (HELO silpixa00399498.ger.corp.intel.com) ([10.237.223.151]) by fmsmga004.fm.intel.com with ESMTP; 16 Oct 2019 10:03:45 -0700 From: Anatoly Burakov To: dev@dpdk.org Cc: Marcin Baran , Thomas Monjalon , Bruce Richardson , john.mcnamara@intel.com, david.marchand@redhat.com, Pawel Modrak Date: Wed, 16 Oct 2019 18:03:36 +0100 Message-Id: <671cb144be5089abff524ef452ad7bb8b6778524.1571245316.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Subject: [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Marcin Baran 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 Signed-off-by: Pawel Modrak Signed-off-by: Anatoly Burakov --- 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('') - pmd_subdir_opt = major_version.join(pmd_subdir_opt.split('')) + pmd_subdir_opt = abi_version.join(pmd_subdir_opt.split('')) 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 From patchwork Wed Oct 16 17:03:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 61329 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3619A1E999; Wed, 16 Oct 2019 19:03:58 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 73A791E871 for ; Wed, 16 Oct 2019 19:03:50 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Oct 2019 10:03:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,304,1566889200"; d="scan'208";a="220844947" Received: from silpixa00399498.ir.intel.com (HELO silpixa00399498.ger.corp.intel.com) ([10.237.223.151]) by fmsmga004.fm.intel.com with ESMTP; 16 Oct 2019 10:03:47 -0700 From: Anatoly Burakov To: dev@dpdk.org Cc: Pawel Modrak , john.mcnamara@intel.com, bruce.richardson@intel.com, thomas@monjalon.net, david.marchand@redhat.com Date: Wed, 16 Oct 2019 18:03:37 +0100 Message-Id: <962ddfdf01c3f31d3be5e9996f9633e3f5138cc3.1571245316.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Subject: [dpdk-dev] [PATCH v3 2/9] buildtools: add script for updating symbols abi version X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Pawel Modrak 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 Signed-off-by: Anatoly Burakov --- 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[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[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[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() From patchwork Wed Oct 16 17:03:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 61330 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 323C41E9A4; Wed, 16 Oct 2019 19:04:00 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id E99EA1E870 for ; Wed, 16 Oct 2019 19:03:50 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Oct 2019 10:03:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,304,1566889200"; d="scan'208";a="220844960" Received: from silpixa00399498.ir.intel.com (HELO silpixa00399498.ger.corp.intel.com) ([10.237.223.151]) by fmsmga004.fm.intel.com with ESMTP; 16 Oct 2019 10:03:49 -0700 From: Anatoly Burakov To: dev@dpdk.org Cc: john.mcnamara@intel.com, bruce.richardson@intel.com, thomas@monjalon.net, david.marchand@redhat.com Date: Wed, 16 Oct 2019 18:03:38 +0100 Message-Id: <9953d2ce05c74a9ae937b76400c7b476385d91e2.1571245316.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Subject: [dpdk-dev] [PATCH v3 3/9] buildtools: add ABI update shell script X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 --- 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 From patchwork Wed Oct 16 17:03:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 61331 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E71AF1E9BF; Wed, 16 Oct 2019 19:04:04 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 9163F1E886 for ; Wed, 16 Oct 2019 19:03:53 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Oct 2019 10:03:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,304,1566889200"; d="scan'208";a="220844981" Received: from silpixa00399498.ir.intel.com (HELO silpixa00399498.ger.corp.intel.com) ([10.237.223.151]) by fmsmga004.fm.intel.com with ESMTP; 16 Oct 2019 10:03:50 -0700 From: Anatoly Burakov To: dev@dpdk.org Cc: Marcin Baran , Robert Sanford , Erik Gabriel Carrillo , john.mcnamara@intel.com, bruce.richardson@intel.com, thomas@monjalon.net, david.marchand@redhat.com Date: Wed, 16 Oct 2019 18:03:39 +0100 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Subject: [dpdk-dev] [PATCH v3 4/9] timer: remove deprecated code X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Marcin Baran Remove code for old ABI versions ahead of ABI version bump. Signed-off-by: Marcin Baran Signed-off-by: Anatoly Burakov --- 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 From patchwork Wed Oct 16 17:03:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 61332 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 44F8F1E9C8; Wed, 16 Oct 2019 19:04:07 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 00C631E98E for ; Wed, 16 Oct 2019 19:03:55 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Oct 2019 10:03:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,304,1566889200"; d="scan'208";a="220845001" Received: from silpixa00399498.ir.intel.com (HELO silpixa00399498.ger.corp.intel.com) ([10.237.223.151]) by fmsmga004.fm.intel.com with ESMTP; 16 Oct 2019 10:03:52 -0700 From: Anatoly Burakov To: dev@dpdk.org Cc: Marcin Baran , Bruce Richardson , Vladimir Medvedkin , john.mcnamara@intel.com, thomas@monjalon.net, david.marchand@redhat.com Date: Wed, 16 Oct 2019 18:03:40 +0100 Message-Id: <8529fca5f505727163090da5860d55d29c0cab5e.1571245316.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Subject: [dpdk-dev] [PATCH v3 5/9] lpm: remove deprecated code X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Marcin Baran Remove code for old ABI versions ahead of ABI version bump. Signed-off-by: Marcin Baran Signed-off-by: Anatoly Burakov --- 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 } From patchwork Wed Oct 16 17:03:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 61333 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4ADE11E9D0; Wed, 16 Oct 2019 19:04:09 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 84D8C1E99E for ; Wed, 16 Oct 2019 19:03:58 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Oct 2019 10:03:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,304,1566889200"; d="scan'208";a="220845015" Received: from silpixa00399498.ir.intel.com (HELO silpixa00399498.ger.corp.intel.com) ([10.237.223.151]) by fmsmga004.fm.intel.com with ESMTP; 16 Oct 2019 10:03:55 -0700 From: Anatoly Burakov To: dev@dpdk.org Cc: Marcin Baran , David Hunt , john.mcnamara@intel.com, bruce.richardson@intel.com, thomas@monjalon.net, david.marchand@redhat.com Date: Wed, 16 Oct 2019 18:03:41 +0100 Message-Id: <0c5205b372743b7600e4d3d8076f664243fd9b6e.1571245316.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Subject: [dpdk-dev] [PATCH v3 6/9] distributor: remove deprecated code X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Marcin Baran Remove code for old ABI versions ahead of ABI version bump. Signed-off-by: Marcin Baran Signed-off-by: Anatoly Burakov --- 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#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; From patchwork Wed Oct 16 17:03:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 61334 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BBDC81EA0A; Wed, 16 Oct 2019 19:04:11 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 8ADF11E9A9; Wed, 16 Oct 2019 19:04:00 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Oct 2019 10:04:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,304,1566889200"; d="scan'208";a="220845027" Received: from silpixa00399498.ir.intel.com (HELO silpixa00399498.ger.corp.intel.com) ([10.237.223.151]) by fmsmga004.fm.intel.com with ESMTP; 16 Oct 2019 10:03:58 -0700 From: Anatoly Burakov To: dev@dpdk.org Cc: Jerin Jacob , john.mcnamara@intel.com, bruce.richardson@intel.com, thomas@monjalon.net, david.marchand@redhat.com, pbhagavatula@caviumnetworks.com, stable@dpdk.org Date: Wed, 16 Oct 2019 18:03:42 +0100 Message-Id: <0c3beae221adbb4f39ad724e6fdfd3bd60c49ddf.1571245316.git.anatoly.burakov@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Subject: [dpdk-dev] [PATCH v3 7/9] drivers/octeontx: add missing public symbol X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 --- 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; From patchwork Wed Oct 16 17:03:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 61337 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6D1C81E993; Wed, 16 Oct 2019 22:59:33 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 95B211E98A for ; Wed, 16 Oct 2019 19:04:23 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Oct 2019 10:04:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,304,1566889200"; d="scan'208";a="220845128" Received: from silpixa00399498.ir.intel.com (HELO silpixa00399498.ger.corp.intel.com) ([10.237.223.151]) by fmsmga004.fm.intel.com with ESMTP; 16 Oct 2019 10:04:00 -0700 From: Anatoly Burakov To: dev@dpdk.org 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 , =?utf-8?q?Mattias_R=C3=B6nnblom?= , 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@intel.com, david.marchand@redhat.com Date: Wed, 16 Oct 2019 18:03:43 +0100 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: X-Mailman-Approved-At: Wed, 16 Oct 2019 22:59:20 +0200 Subject: [dpdk-dev] [PATCH v3 8/9] build: change ABI version to 20.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Pawel Modrak 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 Signed-off-by: Anatoly Burakov --- 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: From patchwork Wed Oct 16 17:03:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anatoly Burakov X-Patchwork-Id: 61335 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 381011E9CF; Wed, 16 Oct 2019 19:04:27 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id F19A71E98A for ; Wed, 16 Oct 2019 19:04:24 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Oct 2019 10:04:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,304,1566889200"; d="scan'208";a="220845140" Received: from silpixa00399498.ir.intel.com (HELO silpixa00399498.ger.corp.intel.com) ([10.237.223.151]) by fmsmga004.fm.intel.com with ESMTP; 16 Oct 2019 10:04:22 -0700 From: Anatoly Burakov To: dev@dpdk.org Cc: Marcin Baran , john.mcnamara@intel.com, bruce.richardson@intel.com, thomas@monjalon.net, david.marchand@redhat.com, Pawel Modrak Date: Wed, 16 Oct 2019 18:03:44 +0100 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Subject: [dpdk-dev] [PATCH v3 9/9] buildtools: add ABI versioning check script X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Marcin Baran 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 Signed-off-by: Pawel Modrak Signed-off-by: Anatoly Burakov --- 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