From patchwork Mon Nov 21 15:08:16 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Maxim Uvarov X-Patchwork-Id: 83255 Delivered-To: patch@linaro.org Received: by 10.140.97.165 with SMTP id m34csp1592775qge; Mon, 21 Nov 2016 07:31:11 -0800 (PST) X-Received: by 10.55.6.12 with SMTP id 12mr15735021qkg.182.1479742271625; Mon, 21 Nov 2016 07:31:11 -0800 (PST) Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id r81si13758148qka.245.2016.11.21.07.31.11; Mon, 21 Nov 2016 07:31:11 -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 4D1B160656; Mon, 21 Nov 2016 15:31:11 +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 5668360A3F; Mon, 21 Nov 2016 15:13:08 +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 20EA26094B; Mon, 21 Nov 2016 15:13:02 +0000 (UTC) Received: from mail-wm0-f46.google.com (mail-wm0-f46.google.com [74.125.82.46]) by lists.linaro.org (Postfix) with ESMTPS id D17A8608CC for ; Mon, 21 Nov 2016 15:08:30 +0000 (UTC) Received: by mail-wm0-f46.google.com with SMTP id c184so22199747wmd.0 for ; Mon, 21 Nov 2016 07:08:30 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lsc5b/WBA1E7FzpScZ1N1mg8EkTsemWJ0FYqjSQq6Vg=; b=ST35bRkiCYVkHVvcUXmC+Hj2vad33TFhu6j3rm6BxZ5VPdtZhyiD/F8Lth44T9zASL mbkDWgZitilJT0N8c+rRbEbHYAXw6dqgv7L1UYTJ3xWTadmObQwV2uDcSafaUEuW6/WG 8euBsQIUDm6NZbUppnzc2eNzv9+Uqh4USLdICP7swUyvUv5KdxPaIS7fscTSDZUgwLIR aGrXdwsR/M5LS71O2Lz5U3XvUUDCATcnNol8SqJ887LatMb2hLjyIGjA/bKiL5Lv/7e/ txOIbNqewIsCzQtLeHNYWMJDD7sa/L7WS1dbtSAhbaGPQftZ5TLwTidr+7GwQPxpkOZW lRUA== X-Gm-Message-State: AKaTC037Ri0MDZMEeTmYHVphkvzRIEjUTOeUzwHQMUvM3VKflTupP2VCch5JjmJ6TxcvNvTs62s= X-Received: by 10.25.219.65 with SMTP id s62mr3627820lfg.35.1479740909783; Mon, 21 Nov 2016 07:08:29 -0800 (PST) Received: from localhost.localdomain (ppp46-138-205-38.pppoe.spdop.ru. [46.138.205.38]) by smtp.gmail.com with ESMTPSA id z1sm5418971lja.27.2016.11.21.07.08.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 21 Nov 2016 07:08:29 -0800 (PST) From: Maxim Uvarov To: lng-odp@lists.linaro.org Date: Mon, 21 Nov 2016 18:08:16 +0300 Message-Id: <1479740897-4571-2-git-send-email-maxim.uvarov@linaro.org> X-Mailer: git-send-email 2.7.1.250.gff4ea60 In-Reply-To: <1479740897-4571-1-git-send-email-maxim.uvarov@linaro.org> References: <1479740897-4571-1-git-send-email-maxim.uvarov@linaro.org> MIME-Version: 1.0 Subject: [lng-odp] [PATCHv3 1/2] changelog: summary of changes for odp v1.12.0.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" From: Bill Fischofer Signed-off-by: Bill Fischofer Signed-off-by: Maxim Uvarov --- CHANGELOG | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) -- 2.7.1.250.gff4ea60 diff --git a/CHANGELOG b/CHANGELOG index 1d652a8..25d1375 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,214 @@ +== OpenDataPlane (1.12.0.0) + +=== New Features + +==== APIs +ODP v1.12.0.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. + +==== 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. + +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.11.0.0) ODP v1.11.0 is the base tag and branch for the Monarch LTS (Long Term Support) release of ODP.