From patchwork Sat Nov 19 19:54:04 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Maxim Uvarov X-Patchwork-Id: 83136 Delivered-To: patch@linaro.org Received: by 10.140.97.165 with SMTP id m34csp732280qge; Sat, 19 Nov 2016 11:54:30 -0800 (PST) X-Received: by 10.55.168.146 with SMTP id r140mr8172532qke.189.1479585270401; Sat, 19 Nov 2016 11:54:30 -0800 (PST) Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id w128si8931954qkd.147.2016.11.19.11.54.28; Sat, 19 Nov 2016 11:54:30 -0800 (PST) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=pass (p=NONE dis=NONE) header.from=linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 61B8A60D6F; Sat, 19 Nov 2016 19:54:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 45A34607C0; Sat, 19 Nov 2016 19:54:20 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 14DCE60688; Sat, 19 Nov 2016 19:54:18 +0000 (UTC) Received: from mail-wm0-f45.google.com (mail-wm0-f45.google.com [74.125.82.45]) by lists.linaro.org (Postfix) with ESMTPS id 8379D60688 for ; Sat, 19 Nov 2016 19:54:14 +0000 (UTC) Received: by mail-wm0-f45.google.com with SMTP id g23so86930003wme.1 for ; Sat, 19 Nov 2016 11:54:14 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=PTEYm/F1OgIfZzCmUfSAZzUhx2DZU1W1p8VsYD58esY=; b=Mr1PbcBvPWyQ2n5NsOZv4d5fHwDsAD2zylMXk/v0nVodUZyqGI6v68BNTefFsMxhzn 4+IyE3HvpBN3qilTMuxTF7EOnofsLWOkRCdgvZ6M5eXIYZ3eUFYEYR8eGiXRHTl4cNWR IQyxhbo15YVN+XjNirj2qHHAawhoHImLlcmtyaB9lSUCU8YZ+lH0+x/UHXPJxRsTEl8n srV1gUMGVFIvaNJzaxqPo51GcPFVWOnWY6niJy/O9BDwG8JvoHy86sJUDEp4kQw3e6/d Eo7rk33mkAXE7JrxiBX8DpTZfT6NLjulRcoc9zcwltoAU3svwe6IHfLsEbV4xgoOJU8N 6VYg== X-Gm-Message-State: AKaTC01eO5xxfZimCW/yOXgjLt9NNV5x0uGseVs+Rboxh5vBrKMd4JYdfrhsU/Hq1DAHu538OEE= X-Received: by 10.46.69.139 with SMTP id s133mr3527145lja.12.1479585253399; Sat, 19 Nov 2016 11:54:13 -0800 (PST) Received: from [193.168.1.37] (ppp46-138-205-38.pppoe.spdop.ru. [46.138.205.38]) by smtp.gmail.com with ESMTPSA id h35sm3856040lji.29.2016.11.19.11.54.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 19 Nov 2016 11:54:12 -0800 (PST) To: lng-odp@lists.linaro.org References: <1479429284-5902-1-git-send-email-bill.fischofer@linaro.org> From: Maxim Uvarov Message-ID: <5830ADDC.2020902@linaro.org> Date: Sat, 19 Nov 2016 22:54:04 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0 MIME-Version: 1.0 In-Reply-To: Subject: Re: [lng-odp] [PATCHv2] changelog: summary of changes for odp v1.11.1.0 X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" Anders, can you please send proposal patch for changing versions? I think it will be more easy to discuss it if we will have some working patch. I also looked to numbering issue one more time and think that it will be good to have version in both abi and not abi compact library. Our original version numbers in shipped files are: dynamic: libodp-linux.so -> libodp-linux.so.111.0.0 libodp-linux.so.111 -> libodp-linux.so.111.0.0 libodp-linux.so.111.0.0 static: libodp-linux.a After reset it will be: dynamic: libodp-linux.so -> libodp-linux.so.0.0.0 libodp-linux.so.0 -> libodp-linux.so.0.0.0 libodp-linux.so.0.0.0 static: libodphelper-linux.a Reset I think you asked for such change: For both static and dynamic libraries API version will be reported as previous but .so version will be different. I think that it might be useful for debugging to see from which exactly version is used in file system. And more logically abi compat so should have name libodp-linux.so and non abi compat libodp-linux-generic.so. And keep all their numbers. In that case Cavium, Freescale, Odp-dpdk also sheep libodp-linux.so in abi compat mode and some other library name is non compat mode. (I.e. abi compat application uses libodp-linux.so on any platforms, and non abi application uses libodp-linux-plat.so only on platform where it was compiled.). What do you think? Thank you, Maxim. On 11/18/16 22:52, Anders Roxell wrote: > On 18 November 2016 at 01:34, Bill Fischofer wrote:libodp-linux.so.111.0.0 >> Signed-off-by: Bill Fischofer >> --- >> Changes for v2: >> - Changed release level to v1.11.1.0 per Mike >> >> CHANGELOG | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 211 insertions(+) >> >> diff --git a/CHANGELOG b/CHANGELOG >> index d8230cd..66488e5 100644 >> --- a/CHANGELOG >> +++ b/CHANGELOG >> @@ -1,3 +1,214 @@ >> +== OpenDataPlane (1.11.1.0) >> + >> +=== New Features >> + >> +==== APIs >> +ODP v1.11.1.0 is a minor API revision level beyond the Monarch Long Term >> +Support (LTS) release and introduces a small change to the Traffic Manager API >> +as well as some documentation clarification surrounding other APIs. >> + >> +==== Traffic Manager Egress Function >> +The `odp_tm_egress_t` struct has been changed to add an explicit Boolean >> +(`egress_fcn_supported`) that indicates whether the TM system supports >> +a user-provided egress function. When specified this function is called to >> +"output" a packet rather than having TM transmit it directly to a PktIO >> +interface. >> + >> +==== Traffic Manager Coupling Change >> +The `odp_tm_egress_t` struct has been changed to associate a TM system with an >> +output `odp_pktio_t` rather than the previous `odp_pktout_queue_t`. This makes >> +an explicit 1-to-1 map between a TM system and a PktIO interface. > This means that we should bump the ODP's SO-version as well, since > we changed the struct that you mention + that we added "odp_bool_t > egress_fcn_supported;" to the same struct. > >> + >> +==== Default huge page size clarification >> +The documentation for the `odp_sys_huge_page_size()` API has been reworded to >> +clarify that this API refers to default huge page size. >> + >> +==== Strict Priority (SP) Scheduler >> +Building on the modular scheduler framework added in v1.10.1.0, an alternate >> +Strict Priority (SP) Scheduler is now available for latency-sensitive >> +workloads. Applications wishing to use the SP scheduler should specify >> +the `./configure` option `--enable-schedule-sp`. This scheduler emphasizes low >> +latency processing of high priority events at the expense of throughput. This >> +alternate scheduler is considered experimental and should not be used for >> +production at this time. >> + >> +==== Application Binary Interface (ABI) Support >> +Support is added to enable ODP applications to be binary compatible across >> +different implementations of ODP sharing the same Instruction Set Architecture >> +(ISA). This support introduces a new `configure` option: >> + >> +`--enable-abi-compat=yes`:: >> +This is the default and specifies that the ODP library is to be built to >> +support ABI compatibility mode. In this mode ODP APIs are never inlined. ABI >> +compatibility ensures maximum application portability in cloud environments. >> + >> +`--enable-abi-compat=no`:: >> +Specify this option to enable the inlining of ODP APIs. This may result in >> +improved performance at the cost of ABI compatibility and is suitable for >> +applications running in embedded environments. > before we do a new release I think we need to resolve what we > talked about in this thread [1]. > Basically, if we disable ABI compat mode I think we should set the > SO-version to 0:0:0, to make it clear that we don't try to be ABI > compatible. > > Cheers, > Anders > [1] https://lists.linaro.org/pipermail/lng-odp/2016-September/025734.html > >> + >> +Note that ODP applications retain source code portability between ODP >> +implementations regardless of the ABI mode chosen. To move to a different ODP >> +application running on a different ISA, code need simply be recompiled against >> +that target ODP implementation. >> + >> +==== SCTP Parsing Support >> +The ODP classifier adds support for recognizing Stream Control Transmission >> +Protocol (SCTP) packets. The APIs for this were previously not implemented. >> + >> +=== Packaging and Implementation Refinements >> + >> +==== Remove dependency on Linux headers >> +ODP no longer has a dependency on Linux headers. This will help make the >> +odp-linux reference implementation more easily portable to non-Linux >> +environments. >> + >> +==== Remove dependency on helpers >> +The odp-linux implementation has been made independent of the helper library >> +to avoid circular dependency issues with packaging. Helper functions may use >> +ODP APIs, however ODP implementations should not use helper functions. >> + >> +==== Reorganization of `test` directory >> +The `test` directory has been reorganized to better support a unified approach >> +to ODP component testing. API tests now live in >> +`test/common_plat/validation/api` instead of the former >> +`test/validation`. With this change performance and validation tests, as well >> +as common and platform-specific tests can all be part of a unified test >> +hierarchy. >> + >> +The resulting test tree now looks like: >> + >> +.New `test` directory hierarchy >> +----- >> +test >> +├── common_plat >> +│ ├── common >> +│ ├── m4 >> +│ ├── miscellaneous >> +│ ├── performance >> +│ └── validation >> +│ └── api >> +│ ├── atomic >> +│ ├── barrier >> +│ ├── buffer >> +│ ├── classification >> +│ ├── cpumask >> +│ ├── crypto >> +│ ├── errno >> +│ ├── hash >> +│ ├── init >> +│ ├── lock >> +│ ├── packet >> +│ ├── pktio >> +│ ├── pool >> +│ ├── queue >> +│ ├── random >> +│ ├── scheduler >> +│ ├── shmem >> +│ ├── std_clib >> +│ ├── system >> +│ ├── thread >> +│ ├── time >> +│ ├── timer >> +│ └── traffic_mngr >> +├── linux-generic >> +│ ├── m4 >> +│ ├── mmap_vlan_ins >> +│ ├── performance >> +│ ├── pktio_ipc >> +│ ├── ring >> +│ └── validation >> +│ └── api >> +│ ├── pktio >> +│ └── shmem >> +└── m4 >> +----- >> + >> +==== Pools >> +The maximum number of pools that may be created in the odp-linux reference >> +implementation has been raised from 16 to 64. >> + >> +==== Upgrade to DPDK 16.07 >> +The DPDK pktio support in odp-linux has been upgraded to work with DPDK 16.07. >> +A number of miscellaneous fixes and performance improvements in this support >> +are also present. >> + >> +==== PktIO TAP Interface Classifier Support >> +Packet I/O interfaces operating in TAP mode now can feed packets to the ODP >> +classifier the same as other pktio modes can do. >> + >> +=== Performance Improvements >> + >> +==== Thread-local cache optimizations >> +The thread-local buffer cache has been reorganized and optimized for burst-mode >> +operation, yielding a measurable performance gain in almost all cases. >> + >> +==== Burst-mode buffer allocation >> +The scheduler and pktio components have been reworked to use burst-mode >> +buffer allocation/deallocation, yielding a measurable performance gain in >> +almost all cases. >> + >> +==== Burst-mode queue operations >> +ODP queues internally now attempt to use burst-mode enq/deq operations to >> +accelerate performance where applicable. >> + >> +==== Ring-based Scheduler Priority Queues >> +The ODP scheduler has been enhanced to use ring-based priority queues, resulting >> +in significantly better scalability in many core environments. >> + >> +==== GitHub Automation Support >> +ODP now supports the Travis framework needed to trigger CI automation in >> +conjunction with GitHub. This support is considered experimental for now. >> + >> +=== Examples >> + >> +==== New `l3fwd` Example >> +A new example application is provided that illustrates use >> +of ODP for simple Layer 3 forwarding across multiple interfaces. >> + >> +==== "Hello World" Example Application >> +A basic "hello world" ODP application has been added to the `example` >> +directory to illustrate the basic setup and control flow needed by ODP >> +applications. >> + >> +=== Documentation >> + >> +==== Pure API Documentation >> +ODP now generates "pure" (implementation independent) doxygen documentation in >> +addition to the specific documentation for the odp-linux implementation. The >> +pure version is applicable to any ODP implementation as it simply describes >> +the ODP API specification. Implementation-specific versions of this >> +documentation describe both the APIs as well as specifics concerning typedefs, >> +enums, etc. This should help clarify what aspects of ODP are platform >> +independent. >> + >> +==== Clarify ODP Thread Definition >> +The definition of an ODP thread in odp-linux has been clarified to specify that >> +for this implementation ODP threads are Linux pthreads or Linux processes. >> +Currently threads as processes is considered experimental in odp-linux. >> + >> +=== Bug Fixes >> +Numerous refinements have been incorporated to make >> +validation tests more robust in API coverage as well as correcting corner >> +cases in the implementation of many ODP APIs. Notable fixes include: >> + >> +==== https://bugs.linaro.org/show_bug.cgi?id=2316[Bug 2316] >> +`ODP_TIMEOUT_INVALID` is now defined consistently with other pool elements so >> +the restriction on using Pool 0 as a timer pool is removed. >> + >> +==== https://bugs.linaro.org/show_bug.cgi?id=2310[Bug 2310] >> +The `odp_packet_copy()` API now correctly handles user areas between pools that >> +are configured with different sized per-packet user area definitions. >> + >> +==== https://bugs.linaro.org/show_bug.cgi?id=2571[Bug 2571] >> +Corrects the implementation of AES GCM decryption in the ODP crypto API. >> + >> +=== Known Issues >> + >> +==== https://bugs.linaro.org/show_bug.cgi?id=2309[Bug 2309] >> +The Timer validation test fails sporadically in environments with high core >> +counts. >> + >> == OpenDataPlane (1.10.1.0) >> >> === New Features >> -- >> 2.7.4 >> --- a/configure.ac +++ b/configure.ac @@ -245,6 +245,12 @@ AC_ARG_ENABLE([abi-compat], [if test "x$enableval" = "xyes"; then ODP_ABI_COMPAT=1 abi_compat=yes + + # Reset library versions + ODP_LIBSO_VERSION=0:0:0 + AC_SUBST(ODP_LIBSO_VERSION) + ODPHELPER_LIBSO_VERSION=0:0:0 + AC_SUBST(ODPHELPER_LIBSO_VERSION) else ODP_ABI_COMPAT=0 abi_compat=no