From patchwork Sun Feb 26 18:04:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bill Fischofer X-Patchwork-Id: 94528 Delivered-To: patch@linaro.org Received: by 10.140.20.113 with SMTP id 104csp559199qgi; Sun, 26 Feb 2017 10:04:43 -0800 (PST) X-Received: by 10.55.56.211 with SMTP id f202mr12170836qka.214.1488132283135; Sun, 26 Feb 2017 10:04:43 -0800 (PST) Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id n124si10186073qkc.192.2017.02.26.10.04.42; Sun, 26 Feb 2017 10:04:42 -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 sp=NONE dis=NONE) header.from=linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 114526352E; Sun, 26 Feb 2017 18:04:42 +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, URIBL_BLOCKED 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 61AD263526; Sun, 26 Feb 2017 18:04:35 +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 A460663529; Sun, 26 Feb 2017 18:04:33 +0000 (UTC) Received: from mail-ot0-f182.google.com (mail-ot0-f182.google.com [74.125.82.182]) by lists.linaro.org (Postfix) with ESMTPS id 585E663522 for ; Sun, 26 Feb 2017 18:04:32 +0000 (UTC) Received: by mail-ot0-f182.google.com with SMTP id x10so40067182otb.1 for ; Sun, 26 Feb 2017 10:04:32 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=0TKZf/Smc139572AMi8G3FCzilmVxt65Q3ZJfM+lCb0=; b=rEoKoFwnrKxBy7pwgN4d5hMF0kpBcKDQAqBc+z/JJRzmfyeike7t/4hKypDxY2YuTa iupsL//F1m3DwhY02lMgpNp5V1zJDWcGE8ykaGQMNFHGNruWW6hAbwVcNQI01Gofr3NX w+T0UEkI+9hTJVlfyhh4q+g+1jXoHngRB1jxvTIS+m8er0tgz4hQ7PL7OumsTtgOxdyN UgqTxuIcARDjvb+AHXgrmAw/1SoTeySJP4fDZJMGc6Cila+J00Mav5P8OayunNFodR3X RBP7LpqCVWIEJmmx2hr/oHC24ts+fh0wFdztCJx20ra0YsVa0SSAH0og6vmmb7jYDNdD HgKw== X-Gm-Message-State: AMke39mXpCqTSSwzRLqw72qrmyoH6ajB+vW42/KiMFIcpY6ZB1FXtMaZdX1afaPWiEize9gIqJ0= X-Received: by 10.157.28.156 with SMTP id l28mr6311281ota.85.1488132271499; Sun, 26 Feb 2017 10:04:31 -0800 (PST) Received: from localhost.localdomain (cpe-70-121-83-241.austin.res.rr.com. [70.121.83.241]) by smtp.gmail.com with ESMTPSA id r84sm5332979oie.24.2017.02.26.10.04.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 26 Feb 2017 10:04:30 -0800 (PST) From: Bill Fischofer To: lng-odp@lists.linaro.org Date: Sun, 26 Feb 2017 12:04:27 -0600 Message-Id: <20170226180427.28547-1-bill.fischofer@linaro.org> X-Mailer: git-send-email 2.12.0.rc1 Subject: [lng-odp] [NEXT PATCHv2] changelog: summary of changes for ODP v1.14.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" Signed-off-by: Bill Fischofer --- CHANGELOG | 144 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) -- 2.12.0.rc1 diff --git a/CHANGELOG b/CHANGELOG index 72bf2253..a550a723 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,147 @@ +== OpenDataPlane (1.14.0.0) +=== New Features +==== APIs +ODP v1.14.0.0 represents another preview of the Tiger Moth release series and +introduces new APIs and extensions. + +===== Packet References +Packet references are a lightweight mechanism to allow applications to create +and manipulate different "views" of packets. These views consist of shared +bytes common to all references created on the same `odp_packet_t`, possibly +prefixed with unique headers that are private to each reference. Five new APIs +are introduced to enable this feature: + +`odp_packet_ref_static()`:: +Static references allow a single packet to have multiple "aliases", all of +which must be treated as read only. This is useful, for example, to retain +a reference to a packet being transmitted to support retransmit processing, +since the actual storage represented by a packet is not released until all +references to it have been freed via `odp_packet_free()` calls. + +`odp_packet_ref()`:: +Dynamic references differ from static references is that they permit the +individual `odp_packet_t` handles to have unique prefixes created via +`odp_packet_push_head()` or `odp_packet_extend_head()` calls. This can be +used, for example, to support multicasting packets to different destinations +by creating packets that consist of unique headers followed by a common shared +payload. + +`odp_packet_ref_pkt()`:: +Similar to `odp_packet_ref()`, but creates a dynamic reference by prepending a +preexisting header onto another packet. + +`odp_packet_has_ref()`:: +Returns a boolean indicator of whether a given `odp_packet_t` has other +references that share bytes with this packet. + +`odp_packet_unshared_len()`:: +Returns the number of unshared bytes accessible through a given `odp_packet_t` +handle. These are the only bytes that should be changed. All other bytes +in the packet should be treated as read only as they are shared with other +`odp_packet_t` handles. + +Note that while the packet reference APIs and associated validation tests are +present in this release, the `odp-linux` reference implementation currently +implements references via packet copying. A zero-copy implementation of packet +references is planned to be part of the ODP v1.15.0.0 release. + +==== ABI Specification +ODP has supported an Application Binary Interface (ABI) that permits +applications to be generated that are binary portable between select ODP +implementations. This is now formalized with the addition of structures that +permit ABI specifications to be defined that are shared between ODP +implementations. ODP provides a default ABI specification that is the same as +was provided before. This change means that additional ABIs may be defined +that are optimized to collections of platforms that share an Instruction Set +Architecture (ISA) and subscribe to them. + +ABI specifications live in the `include/odp/arch/...` directory. + +==== Instance Query (iQuery) Scheduler +Adding to the range of scheduler implementations supported by `odp-linux`, a +new scheduler, the instance query scheduler, is available by specifying +`--enable-schedule-iquery` at `configure` time. + +This scheduler uses sparse bitmaps and offers scalability advantages when +dealing with large numbers of schedule queues. It otherwise offers performance +comparable to the default ODP scheduler implementation. + +=== Helpers +Helpers have been reorganized to provide better independence from odp-linux +and to make them more useful with other ODP implementations. These +reorganizations are functionally transparent to ODP users but should +simplifying packaging and porting to other ODP implementations. This includes +adding the "umbrella" include file `odph_api.h` which can be used to include +all helper API definitions in an application. + +=== Classifier Improvements +The `odp-linux` reference implementation now supports Pattern Matching Rules +(PMRs) for IPv6 addresses, inner and outer VLAN IDs, and inner and outer +Ethernet types. + +=== Performance + +==== Improved inlining for embedded applications +The `odp-linux` reference implementation now offers improved inlining support +for ODP APIs for applications compiled against ODP configured with the +`--enable-abi-compat=no` option, meaning they wish to forego binary +compatibility in exchange for improved performance. These applications remain +source portable to other ODP implementations. + +==== Native `odp_cpu_pause()` for ARM processors +A native implementation of the `odp_cpu_pause()` API has been added for ARMv7 +and ARMv8 processors. + +==== New Microbenchmark +The `odp_packet_bench` microbenchmark application has been added to the +test performance directory to allow implementations to measure and calibrate +the performance of individual ODP packet APIs. + +==== Ordered PktIO Test +The `odp_pktio_ordered` application has been added to the test performance +directory to provide stress-testing of packet ordering features of ODP. + +=== Documentation +In addition to expanded documentation related to the new packet reference APIs, +a section on applicatin portability has been added that discusses the types +of portability offered by ODP and the tradeoffs that application writers should +consider when using ODP. + +=== Bug Fixes + +==== https://bugs.linaro.org/show_bug.cgi?id=2806[Bug 2806] +The `hello.c` application can now run properly if Core 0 is not +available (any available core will be used). + +==== https://bugs.linaro.org/show_bug.cgi?id=2827[Bug 2827] +Provide proper return code checking within _ishm.c + +==== https://bugs.linaro.org/show_bug.cgi?id=2829[Bug 2829] +Remove unused variables in iplookuptable helper routine. + +==== https://bugs.linaro.org/show_bug.cgi?id=2830[Bug 2830] +Avoid memory leaks on error paths in the cuckoo table helper functions. + +==== https://bugs.linaro.org/show_bug.cgi?id=2834[Bug 2834] +Fixes a race condition in shared memory allocation. + +==== https://bugs.linaro.org/show_bug.cgi?id=2842[Bug 2842] +Provide proper fallback for shared memory when hugepages are not available. + +==== https://bugs.linaro.org/show_bug.cgi?id=2862[Bug 2862] +Avoid null pointer dereference in the iplookuptable helper routine. + +==== https://bugs.linaro.org/show_bug.cgi?id=2865[Bug 2865] +Missing doxygen documentation for helper table functions are added. + +=== Known Issues + +==== https://bugs.linaro.org/show_bug.cgi?id=2852[Bug 2852] +C++ programs fail to compile if they attempt to include the ODP helper APIs. + +==== https://bugs.linaro.org/show_bug.cgi?id=2895[Bug 2895] +The `odp_crypto_operation()` routine does not work with multi-segment packets. + == OpenDataPlane (1.13.0.0) === New Features