tag namev1.16.0.0 (e189b781b10d86d7ea73bc78b00e151286cdf294)
tag date2017-11-10 16:22:29 +0300
tagged byMaxim Uvarov <maxim.uvarov@linaro.org>
tagged objectcommit 2cfe11680e...
== OpenDataPlane (
=== New Features ODP v1.16.0.0 is the final preview release before the official release of Tiger Moth. It introduces new APIs and extensions, as well as bug fixes and functional improvements. ==== APIs The following new and changed APIs are included in this release: ===== Initialization Changes The new `odp_feature_t` type is introduced that defines various feature bits for ODP components. This is used in an expanded `odp_init_t` argument to `odp_init_global()` to specify which ODP features are unused by the application. For example, if the application knows it will not be making use of crypto features or the classifier, this may permit the ODP implementation to configure itself more efficiently. Results are undefined if an application asserts that it will not be using a feature and it attempts to do so afterwards. Associated with this new support the `odp_init_param_init()` API is added to initialize the `odp_init_t` struct to default values. ===== Packet API Changes * The `odp_packet_unshared_len()` API is removed. Testing showed that this API was non-essential and conflicted with the goal of implementation efficiency. * The `odp_print_packet_data()` API is added. This permits packet data to be logged along with platform-defined metadata for debugging or diagnostic purposes. ===== PktIO API Changes * The `loop_supported` attribute of the `odp_pktio_capability_t` struct is deprecated since this is redundant. The `enable_loop` field of the `odp_pktio_config_t` struct (which is returned as part of the `odp_packet_capability_t` struct) is the proper way to determine whether a PktIO supports loopback mode. ===== System Info API Changes * The documentation for the `odp_sys_huge_page_size()` API is updated to clarify that a 0 return code indicates that huge pages are not supported by this platform. * The `odp_sys_huge_page_size_all()` API is added to return all huge page sizes supported by this platform. ===== Timer API Changes * The documentation for the various parameters contained in the `odp_timer_pool_param_t` struct are expanded and clarified. === Miscellaneous Fixes and Improvements ==== Default Packet Headroom The default packet headroom in `odp-linux` has been increased from 66 to 128 bytes for better compatibility with `odp-dpdk`. ==== Zero-copy Packet References The `odp-linux` reference implementation now fully supports zero-copy packet references. Previously these APIs were implemented via packet copies, which while functionally correct, were not how these APIs are intended to operate. ==== DPDK Zero-copy I/O support The `--enable-dpdk-zero-copy` `configure` option is added to allow DPDK PktIO devices to avoid data copies, leading to improved performance. ==== DPDK Checksum offload support DPDK PktIO now makes use of RX and TX IP/UDP/TCP checksum offload. ==== Shared memory stored in /dev/shm In the `odp-linux` reference implementation, shared memory is now backed to `/dev/shm` rather than `/tmp` for better reliability and robustness. This may be overridden as part of ODP build-time customization if desired. ==== IPC Improvements PktIO IPC support has received improvements in both performance and reliability and is now suitable for development use. ==== Netmap Improvements The thread ID is now used to create unique vdev MAC addresses to avoid conflicts with multiple ODP processes running on the same host system. ==== `drv` directory removed The `include/odp/drv` directory and related files have been removed. Driver support is moved to a follow-on ODP release, so removing these files avoids confusion as they are still incomplete. === Dependency Changes ==== Dependency on autoconf-archive removed Since some build environments do not supply autoconf-archive, this dependency is removed. ==== DPDK support upgraded to 17.08 release The ODP DPDK Packet I/O support has been upgraded to work with the DPDK 17.08 release. ==== Added support for OpenSSL 1.1.x releases ODP use of OpenSSL for crypto processing has been upgraded to allow use of OpenSSL 1.1.x. === Build System Restructure The ODP build system has been overhauled to support more comprehensive and efficient automated testing under Travis CI. Greater use of Autoconf is now made to control ODP configuration and build options, permitting greater environmental flexibility. This includes an expanded range of test coverage, including cross-compilation support for ARMv8, MIPS,and Power architectures, as well as testing under the latest levels of GCC and clang. === Arm Architecture Support Improvements * ARMv8 generic timer support is now included * Improved time efficiency and accuracy by using native ARMv8 time/clock instructions. ==== Test Improvements The `test` directory has been reorganized and streamlined. Platform-specific tests are moved from `test/linux-generic` to `platform/linux-generic/test/`. As a result, the `test/common_plat` directory is deleted so that `test/validation`, `test/performance`, etc. are now used for all platform-independent tests. ==== Examples Improvements ===== IPv4 Fragmentation Reassembly Example The `ipfragreass` example program has been added to demonstrate IPv4 fragment reassembly. ===== ODP Generator Improvements The `odp_generator` example program now uses packet references for improved performance in UDP and ICMP traffic. The program also now makes use of HW checksum offload support, when available. === Documentation Improvements * The ODP Users Guide has clarified usage information about the ODP time APIs for better portability. * A section has been added to the ODP Users Guide on API specification principles. This clarifies expected behavior of ODP applications and implementations and makes explicit what the specification means by "undefined behavior". * All Doxygen used in ODP is upgraded to conform to the stricter documentation requirements introduced by Doxygen 1.8.13. === Bug Fixes ==== https://bugs.linaro.org/show_bug.cgi?id=2254[Bug 2254] check-odp: valgrind generates "No rule to make target" ==== https://bugs.linaro.org/show_bug.cgi?id=2407[Bug 2407] test odp_l2fwd_run.sh contains todo items ==== https://bugs.linaro.org/show_bug.cgi?id=2812[Bug 2812] Helper/test/process fails on a single core system ==== https://bugs.linaro.org/show_bug.cgi?id=2861[Bug 2861] Remove redundant loop_support parameter in pktio capability ==== https://bugs.linaro.org/show_bug.cgi?id=2938[Bug 2938] Make file deps failure ==== https://bugs.linaro.org/show_bug.cgi?id=2976[Bug 2976] IP headers checksum functions are incorrect ==== https://bugs.linaro.org/show_bug.cgi?id=3024[Bug 3024] odp_traffic_mngr example is broken ==== https://bugs.linaro.org/show_bug.cgi?id=3026[Bug 3026] pktio_ipc_run test can fail due to segfault ==== https://bugs.linaro.org/show_bug.cgi?id=3043[Bug 3043] User guide error (packet diagram fix) ==== https://bugs.linaro.org/show_bug.cgi?id=3052[Bug 3052] api-next out of tree build broken ==== https://bugs.linaro.org/show_bug.cgi?id=3066[Bug 3066] Cross compile broken for ARMv8 ==== https://bugs.linaro.org/show_bug.cgi?id=3126[Bug 3126] IPC pktio test fails with taskset -c 1-2 ==== https://bugs.linaro.org/show_bug.cgi?id=3177[Bug 3177] Test case for classification enable ==== https://bugs.linaro.org/show_bug.cgi?id=3182[Bug 3182] Memory allocation checks (in traffic manager) ==== https://bugs.linaro.org/show_bug.cgi?id=3216[Bug 3216] Adding --enable-helper-linux configure flag breaks build ==== https://bugs.linaro.org/show_bug.cgi?id=3238[Bug 3238] Doxygen warnings on helper header files ==== https://bugs.linaro.org/show_bug.cgi?id=3241[Bug 3241] codecov: _odp_packet_cmp_data is not covered ==== https://bugs.linaro.org/show_bug.cgi?id=3242[Bug 3242] setup_pktio_entry missing unlock ==== https://bugs.linaro.org/show_bug.cgi?id=3249[Bug 3249] odp_cpu_hz() does not work on all Linux distros ==== https://bugs.linaro.org/show_bug.cgi?id=3262[Bug 3262] Missing doxygen detected by Travis ==== https://bugs.linaro.org/show_bug.cgi?id=3289[Bug 3289] 'num_queues' isn't ignored when "classifier_enable" is enabled ==== https://bugs.linaro.org/show_bug.cgi?id=3300[Bug 3300] Validation tests cannot be disabled after commit b4d17b1 ==== https://bugs.linaro.org/show_bug.cgi?id=3411[Bug 3411] wrong openssl_lock pointer type === Known Issues ==== https://bugs.linaro.org/show_bug.cgi?id=3245[Bug 3245] Cannot run l2fwd application on Cavium ThunderX platform