summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Holmes <mike.holmes@linaro.org>2016-04-14 13:26:52 -0400
committerMike Holmes <mike.holmes@linaro.org>2016-04-14 13:26:52 -0400
commit06a29c1e0904471a008a05ee150db3284a1baffb (patch)
treed072f51b847537b4c81ab7b4199205cbd75d2a3c
parent588ba78e585e084ad2016dceb6d2c0883076cc04 (diff)
add API differences from doxygen spec
Signed-off-by: Mike Holmes <mike.holmes@linaro.org>
-rw-r--r--odp-release-notes-v1.9/odp-api-report.txt280
-rw-r--r--odp-release-notes-v1.9/odp-release-notes.adoc72
2 files changed, 324 insertions, 28 deletions
diff --git a/odp-release-notes-v1.9/odp-api-report.txt b/odp-release-notes-v1.9/odp-api-report.txt
new file mode 100644
index 0000000..5fc2ae4
--- /dev/null
+++ b/odp-release-notes-v1.9/odp-api-report.txt
@@ -0,0 +1,280 @@
+
+diff --suppress-common-lines --recursive -t -s -d --unified odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module/a_summary.txt odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule/a_summary.txt
+--- odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module/a_summary.txt 2016-04-14 13:23:06.594093378 -0400
++++ odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule/a_summary.txt 2016-04-14 13:23:06.770097556 -0400
+@@ -1,5 +1,5 @@
+
+-Generated from /home/mike/git/check-odp/build/odp_diff a details directory called odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module
++Generated from /home/mike/git/check-odp/build/odp_diff_2 a details directory called odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule
+
+ MODULE FUNCTION TYPEDEF DEFINE
+ odp_atomic 44 1 0
+@@ -15,13 +15,13 @@
+ odp_event 3 1 1
+ odp_hash 3 1 0
+ odp_initialization 6 1 0
+- odp_locks 25 1 0
+- odp_packet 109 1 4
+- odp_packet_io 31 1 2
++ odp_locks 29 1 0
++ odp_packet 113 1 4
++ odp_packet_io 38 1 4
+ odp_pool 7 1 5
+ odp_queue 17 1 3
+ odp_random 1 0 0
+- odp_scheduler 17 1 14
++ odp_scheduler 18 1 14
+ odp_shared_memory 7 1 5
+ odp_std_clib 3 0 0
+ odp_system 3 1 0
+@@ -30,7 +30,9 @@
+ odp_timer 23 1 4
+ odp_traffic_mngr 52 1 18
+ odp_version 3 0 3
++ odpdrv_compiler_optim 0 0 2
++ odpdrv_system 0 1 0
+ odph_header 15 0 75
+- TOTAL 508 22 165
+-Total Modules: 29
+-Results in odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module
++ TOTAL 524 23 169
++Total Modules: 31
++Results in odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule
+Only in odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule: odpdrv_compiler_optim.txt
+Only in odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule: odpdrv_system.txt
+diff --suppress-common-lines --recursive -t -s -d --unified odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module/odp_initialization.txt odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule/odp_initialization.txt
+--- odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module/odp_initialization.txt 2016-04-14 13:23:06.590093284 -0400
++++ odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule/odp_initialization.txt 2016-04-14 13:23:06.770097556 -0400
+@@ -6,16 +6,21 @@
+ b: ODP abort function.
+ d: Instead of directly calling abort, all abort calls in the implementation should be done via this function or its wrappers.
+ d: The application can provide this function to the ODP implementation in two ways:
+- int odp_init_global(const odp_init_t * params, const odp_platform_init_t * platform_params)
++ int odp_init_global(odp_instance_t * instance, const odp_init_t * params, const odp_platform_init_t * platform_params)
+ b: Global ODP initialization.
+- d: This function must be called once before calling any other ODP API functions. The underlying implementation may have another way to get configuration related to platform_params (e.g. environmental variable, configuration file), but if the application passes platform_params, it should always supersede any other configuration data the platform has.
+- int odp_term_global(void)
++ d: This function must be called once (per instance) before calling any other ODP API functions. A successful call creates a new ODP instance into the system and outputs a handle for it. The handle is used in other calls (e.g.
++ d: ) as a reference to the instance. When user provides configuration parameters, the platform may configure and optimize the instance to match user requirements.
++ d: Configuration parameters are divided into standard and platform specific parts. Standard parameters are supported by any ODP platform, where as platform specific parameters are defined outside of the ODP API specification. In addition to 'platform_params' there may be other platform specific configuration options available (e.g. environmental variables or a configuration file), but when the application passes 'platform_params', it should always supersede any other configuration method.
++ int odp_term_global(odp_instance_t instance)
+ b: Global ODP termination.
+ d: This function is the final ODP call made when terminating an ODP application in a controlled way. It cannot handle exceptional circumstances. In general it calls the API modules terminate functions in the reverse order to that which the module init functions were called during
+ d: .
+- int odp_init_local(odp_thread_type_t thr_type)
++ d: This function must be called only after all threads of the instance have executed
++ d: . To simplify synchronization between threads
++ d: identifies which one is the last thread of an instance.
++ int odp_init_local(odp_instance_t instance, odp_thread_type_t thr_type)
+ b: Thread local ODP initialization.
+- d: All threads must call this function before calling any other ODP API functions.
++ d: All threads must call this function before calling any other ODP API functions. The instance parameter specifies which ODP instance the thread joins. A thread may be simultaneously part of single ODP instance only.
+ int odp_term_local(void)
+ b: Thread local ODP termination.
+ d: This function is the second to final ODP call made when terminating an ODP application in a controlled way. It cannot handle exceptional circumstances. In general it calls the API modules per thread terminate functions in the reverse order to that which the module init functions were called during
+@@ -27,6 +32,8 @@
+ struct odp_init_t odp_init_t
+ b: ODP initialization data.
+ d: Data that is required to initialize the ODP API with the application specific data such as specifying a logging callback, the log level etc.
++ uint64_t odp_instance_t
++ b: ODP instance ID.
+ struct odp_platform_init_t odp_platform_init_t
+ b: ODP platform initialization data.
+ d: platform specific data
+diff --suppress-common-lines --recursive -t -s -d --unified odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module/odp_locks.txt odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule/odp_locks.txt
+--- odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module/odp_locks.txt 2016-04-14 13:23:06.590093284 -0400
++++ odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule/odp_locks.txt 2016-04-14 13:23:06.770097556 -0400
+@@ -2,10 +2,14 @@
+ b: Initialize a reader/writer lock.
+ void odp_rwlock_read_lock(odp_rwlock_t * rwlock)
+ b: Acquire read permission on a reader/writer lock.
++ int odp_rwlock_read_trylock(odp_rwlock_t * rwlock)
++ b: Try to acquire read permission to a reader/writer lock.
+ void odp_rwlock_read_unlock(odp_rwlock_t * rwlock)
+ b: Release read permission on a reader/writer lock.
+ void odp_rwlock_write_lock(odp_rwlock_t * rwlock)
+ b: Acquire write permission on a reader/writer lock.
++ int odp_rwlock_write_trylock(odp_rwlock_t * rwlock)
++ b: Try to acquire write permission to a reader/writer lock.
+ void odp_rwlock_write_unlock(odp_rwlock_t * rwlock)
+ b: Release write permission on a reader/writer lock.
+ void odp_rwlock_recursive_init(odp_rwlock_recursive_t * lock)
+@@ -13,11 +17,15 @@
+ void odp_rwlock_recursive_read_lock(odp_rwlock_recursive_t * lock)
+ b: Acquire recursive rwlock for reading.
+ d: This call allows the thread to acquire the same lock multiple times for reading. The lock cannot be acquired for writing while holding it for reading.
++ int odp_rwlock_recursive_read_trylock(odp_rwlock_recursive_t * lock)
++ b: Try to acquire recursive rwlock for reading.
+ void odp_rwlock_recursive_read_unlock(odp_rwlock_recursive_t * lock)
+ b: Release recursive rwlock after reading.
+ void odp_rwlock_recursive_write_lock(odp_rwlock_recursive_t * lock)
+ b: Acquire recursive rwlock for writing.
+ d: This call allows the thread to acquire the same lock multiple times for writing. The lock cannot be acquired for reading while holding it for writing.
++ int odp_rwlock_recursive_write_trylock(odp_rwlock_recursive_t * lock)
++ b: Try to acquire recursive rwlock for writing.
+ void odp_rwlock_recursive_write_unlock(odp_rwlock_recursive_t * lock)
+ b: Release recursive rwlock after writing.
+ void odp_spinlock_init(odp_spinlock_t * splock)
+diff --suppress-common-lines --recursive -t -s -d --unified odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module/odp_packet_io.txt odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule/odp_packet_io.txt
+--- odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module/odp_packet_io.txt 2016-04-14 13:23:06.590093284 -0400
++++ odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule/odp_packet_io.txt 2016-04-14 13:23:06.770097556 -0400
+@@ -2,6 +2,8 @@
+ b: Open a packet IO interface.
+ d: An ODP program can open a single packet IO interface per device, attempts to open an already open device will fail, returning ODP_PKTIO_INVALID with errno set. Use
+ d: to obtain a handle to an already open device. Packet IO parameters provide interface level configuration options.
++ d: Use
++ d: to initialize packet IO parameters into their default values. Default values are also used when 'param' pointer is NULL.
+ d: Packet input queue configuration must be setup with
+ d: before
+ d: is called. When packet input mode is ODP_PKTIN_MODE_DISABLED,
+@@ -17,6 +19,12 @@
+ int odp_pktio_capability(odp_pktio_t pktio, odp_pktio_capability_t * capa)
+ b: Query packet IO interface capabilities.
+ d: Outputs packet IO interface capabilities on success.
++ int odp_pktio_config(odp_pktio_t pktio, const odp_pktio_config_t * config)
++ b: Configure packet IO interface options.
++ d: Select interface level configuration options before the interface is activated (before
++ d: call). This step is optional in pktio interface setup sequence. Use
++ d: to query configuration capabilities. Use
++ d: to initialize configuration options into their default values. Default values are used when 'config' pointer is NULL.
+ int odp_pktin_queue_config(odp_pktio_t pktio, const odp_pktin_queue_param_t * param)
+ b: Configure packet input queues.
+ d: Setup a number of packet input queues and configure those. The maximum number of queues is platform dependent and can be queried with
+@@ -69,7 +77,20 @@
+ b: Return a packet IO handle for an already open device.
+ int odp_pktin_recv(odp_pktin_queue_t queue, odp_packet_t packets, int num)
+ b: Receive packets directly from an interface input queue.
+- d: Receives up to 'num' packets from the pktio interface input queue. When input queue parameter 'op_mode' has been set to ODP_PKTIO_OP_MT_UNSAFE, the operation is optimized for single thread operation per queue and the same queue must not be accessed simultaneously from multiple threads.
++ d: Receives up to 'num' packets from the pktio interface input queue. Returns the number of packets received.
++ d: When input queue parameter 'op_mode' has been set to ODP_PKTIO_OP_MT_UNSAFE, the operation is optimized for single thread operation per queue and the same queue must not be accessed simultaneously from multiple threads.
++ int odp_pktin_recv_tmo(odp_pktin_queue_t queue, odp_packet_t packets, int num, uint64_t wait)
++ b: Receive packets directly from an interface input queue with timeout.
++ d: Provides the same functionality as
++ d: , except that waits if there are no packets available. Wait time is specified by the 'wait' parameter.
++ int odp_pktin_recv_mq_tmo(const odp_pktin_queue_t queues, unsigned num_q, unsigned * from, odp_packet_t packets, int num, uint64_t wait)
++ b: Receive packets directly from multiple interface input queues with timeout.
++ d: Receives up to 'num' packets from one of the specified pktio interface input queues. The index of the source queue is stored into 'from' output parameter. If there are no packets available on any of the queues, waits for packets depeding on 'wait' parameter value. Returns the number of packets received.
++ d: When an input queue has been configured with 'op_mode' value ODP_PKTIO_OP_MT_UNSAFE, the operation is optimized for single thread operation and the same queue must not be accessed simultaneously from multiple threads.
++ d: It is implementation specific in which order the queues are checked for packets. Application may improve fairness of queue service levels by circulating queue handles between consecutive calls (e.g. [q0, q1, q2, q3] -> [q1, q2, q3, q0] -> [q2, q3, ...).
++ uint64_t odp_pktin_wait_time(uint64_t nsec)
++ b: Packet input wait time.
++ d: Converts nanoseconds to wait time values for packet input functions.
+ int odp_pktout_send(odp_pktout_queue_t queue, odp_packet_t packets, int num)
+ b: Send packets directly to an interface output queue.
+ d: Sends out a number of packets to the interface output queue. When output queue parameter 'op_mode' has been set to ODP_PKTIO_OP_MT_UNSAFE, the operation is optimized for single thread operation per queue and the same queue must not be accessed simultaneously from multiple threads.
+@@ -105,6 +126,10 @@
+ b: Initialize packet output queue parameters.
+ d: Initialize an
+ d: to its default values.
++ void odp_pktio_config_init(odp_pktio_config_t * config)
++ b: Initialize packet IO configuration options.
++ d: Initialize an
++ d: to its default values.
+ void odp_pktio_print(odp_pktio_t pktio)
+ b: Print pktio info to the console.
+ d: Print implementation-defined pktio debug information to the console.
+@@ -113,6 +138,12 @@
+ int odp_pktio_info(odp_pktio_t pktio, odp_pktio_info_t * info)
+ b: Retrieve information about a pktio.
+ d: Fills in packet IO information structure with current parameter values. May be called any time with a valid pktio handle. The call is not synchronized with configuration changing calls. The application should ensure that it does not simultaneously change the configuration and retrieve it with this call. The call is not intended for fast path use. The info structure is written only on success.
++ uint64_t odp_pktin_ts_res(odp_pktio_t pktio)
++ b: Packet input timestamp resolution in hertz.
++ d: This is the resolution of packet input timestamps. Returns zero on a failure or when timestamping is disabled.
++ odp_time_t odp_pktin_ts_from_ns(odp_pktio_t pktio, uint64_t ns)
++ b: Convert nanoseconds to packet input time.
++ d: Packet input time source is used for timestamping incoming packets. This function is used convert nanosecond time to packet input timestamp time.
+ int odp_pktio_stats(odp_pktio_t pktio, odp_pktio_stats_t * stats)
+ b: Get statistics for pktio handle.
+ int odp_pktio_stats_reset(odp_pktio_t pktio)
+@@ -134,7 +165,21 @@
+ d: These parameters are used in ODP_PKTOUT_MODE_DIRECT and ODP_PKTOUT_MODE_QUEUE modes.
+ struct odp_pktio_param_t odp_pktio_param_t
+ b: Packet IO parameters.
+- d: In minimum, user must select input and output modes. Use 0 for defaults. Initialize entire struct with zero to maintain API compatibility.
++ d: Packet IO interface level parameters. Use
++ d: to initialize the structure with default values.
++ union odp_pktin_config_opt_t odp_pktin_config_opt_t
++ b: Packet input configuration options bit field.
++ d: Packet input configuration options listed in a bit field structure. Packet input timestamping may be enabled for all packets or at least for those that belong to time synchronization protocol (PTP).
++ d: Packet input checksum checking may be enabled or disabled. When it is enabled, implementation will verify checksum correctness on incoming packets and depending on drop configuration either deliver erroneous packets with appropriate flags set (e.g.
++ d: ) or drop those. When packet droping is enabled, application will never receive a packet with the specified error and may avoid to check the error flag.
++ union odp_pktout_config_opt_t odp_pktout_config_opt_t
++ b: Packet output configuration options bit field.
++ d: Packet output configuration options listed in a bit field structure. Packet output checksum insertion may be enabled or disabled. When it is enabled, implementation will calculate and insert checksum into every outgoing packet by default. Application may use a packet metadata flag to disable checksum insertion per packet bases. For correct operation, packet metadata must provide valid offsets for the appropriate protocols. For example, UDP checksum calculation needs both L3 and L4 offsets (to access IP and UDP headers). When application (e.g. a switch) does not modify L3/L4 data and thus checksum does not need to be updated, output checksum insertion should be disabled for optimal performance.
++ struct odp_pktio_config_t odp_pktio_config_t
++ b: Packet IO configuration options.
++ d: Packet IO interface level configuration options. Use
++ d: to see which options are supported by the implementation. Use
++ d: to initialize the structure with default values.
+ union odp_pktio_set_op_t odp_pktio_set_op_t
+ b: Packet IO set operations.
+ d: Supported packet IO interface set operations listed in a bit field structure.
+@@ -160,3 +205,7 @@
+ ODP_PKTIO_MACADDR_MAXSIZE
+ b: Minimum size of output buffer for
+ b: Actual MAC address sizes may be different.
++ ODP_PKTIN_NO_WAIT
++ b: Do not wait on packet input.
++ ODP_PKTIN_WAIT
++ b: Wait infinitely on packet input.
+diff --suppress-common-lines --recursive -t -s -d --unified odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module/odp_packet.txt odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule/odp_packet.txt
+--- odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module/odp_packet.txt 2016-04-14 13:23:06.590093284 -0400
++++ odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule/odp_packet.txt 2016-04-14 13:23:06.770097556 -0400
+@@ -136,6 +136,15 @@
+ void odp_packet_flow_hash_set(odp_packet_t pkt, uint32_t flow_hash)
+ b: Set packet flow hash value.
+ d: Store the packet flow hash for the packet and sets the flow hash flag. This enables (but does not require!) application to reflect packet header changes in the hash.
++ odp_time_t odp_packet_ts(odp_packet_t pkt)
++ b: Packet timestamp.
++ d: Returns packet timestamp value as
++ d: type. Use time API for additional operations on packet timestamp values or conversion into nanoseconds. Use
++ d: to check if packet has a valid timestamp. Packet input interface timestamp resolution can be checked with
++ d: .
++ void odp_packet_ts_set(odp_packet_t pkt, odp_time_t timestamp)
++ b: Set packet timestamp.
++ d: Stores timestamp value and sets timestamp flag for the packet.
+ int odp_packet_is_segmented(odp_packet_t pkt)
+ b: Tests if packet is segmented.
+ int odp_packet_num_segs(odp_packet_t pkt)
+@@ -267,6 +276,8 @@
+ b: Check for ICMP.
+ int odp_packet_has_flow_hash(odp_packet_t pkt)
+ b: Check for packet flow hash.
++ int odp_packet_has_ts(odp_packet_t pkt)
++ b: Check for packet timestamp.
+ void odp_packet_has_l2_set(odp_packet_t pkt, int val)
+ b: Set flag for L2 header, e.g.
+ d: ethernet
+@@ -314,6 +325,10 @@
+ b: Set flag for ICMP.
+ void odp_packet_has_flow_hash_clr(odp_packet_t pkt)
+ b: Clear flag for packet flow hash.
++ void odp_packet_has_ts_clr(odp_packet_t pkt)
++ b: Clear flag for packet timestamp.
++ d: This call clears the timestamp flag. A
++ d: call sets the flag in addition to the timestamp value.
+ odp_handle_t odp_packet_t
+ b: ODP packet.
+ odp_handle_t odp_packet_seg_t
+diff --suppress-common-lines --recursive -t -s -d --unified odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module/odp_scheduler.txt odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule/odp_scheduler.txt
+--- odp_diff-https___git_linaro_org_lng_odp_git_master-v1.8.0.0-91-g9eca376module/odp_scheduler.txt 2016-04-14 13:23:06.590093284 -0400
++++ odp_diff_2-https___git_linaro_org_lng_odp_git_api_next-v1.8.0.0-629-gfc68b7dmodule/odp_scheduler.txt 2016-04-14 13:23:06.770097556 -0400
+@@ -56,6 +56,9 @@
+ d: Remove a threadmask from an existing schedule group
+ int odp_schedule_group_thrmask(odp_schedule_group_t group, odp_thrmask_t * thrmask)
+ b: Get a schedule group's thrmask.
++ int odp_schedule_group_info(odp_schedule_group_t group, odp_schedule_group_info_t * info)
++ b: Retrieve information about a schedule group.
++ d: Fills in schedule group information structure with current values. The call is not synchronized with calls modifying the schedule group. So, the application should ensure that it does not simultaneously modify and retrieve information about the same group with this call. The call is not intended for fast path use. The info structure is written only on success.
+ void odp_schedule_order_lock(unsigned lock_index)
+ b: Acquire ordered context lock.
+ d: This call is valid only when holding an ordered synchronization context. Ordered locks are used to protect critical sections that are executed within an ordered context. Threads enter the critical section in the order determined by the context (source queue). Lock ordering is automatically skipped for threads that release the context instead of using the lock.
+@@ -66,6 +69,8 @@
+ void odp_schedule_order_unlock(unsigned lock_index)
+ b: Release ordered context lock.
+ d: This call is valid only when holding an ordered synchronization context. Release a previously locked ordered context lock.
++ struct odp_schedule_group_info_t odp_schedule_group_info_t
++ b: Schedule group information.
+ struct odp_schedule_param_t odp_schedule_param_t
+ b: Scheduler parameters.
+ int odp_schedule_prio_t
diff --git a/odp-release-notes-v1.9/odp-release-notes.adoc b/odp-release-notes-v1.9/odp-release-notes.adoc
index 4fe0670..67143f8 100644
--- a/odp-release-notes-v1.9/odp-release-notes.adoc
+++ b/odp-release-notes-v1.9/odp-release-notes.adoc
@@ -24,40 +24,56 @@ project.
=== New Features
+TBD
+
=== Resolved Issues in Bugzilla [1]
-1547 Untested API copy_md_to_packet
-2161 Configure script fails in Cunit check
-2033 odp_cpuinfo_parser() causes segfault on systems where cpu speed info is missing in sysinfo->model_str
-1394 CID 56895: Buffer not null terminated: odp_packet_netmap.c
-2030 CID 157957: Memory - illegal accesses:odp_sysinfo_parse.c
-2127 memory leak in odp_crypto
-2151 Packet pool runs out of blocks for irregular traffic patterns
-1386 Doxygen: input source `./platform/linux-netmap/include/odp' does not exist
-1826 Untested internal APIs verify_pmr_eth_type_0
-1827 Untested internal API verify_pmr_eth_type_x
-1829 Untested internal API verify_pmr_ipsec_spi
-1831 Untested internal API verify_pmr_ipv6_daddr
-1832 Untested internal API verify_pmr_ipv6_saddr
-1833 Untested internal API verify_pmr_ld_vni
-2058 odp_init_local user-doc does not describe the thread type
-2076 Scheduler validation suite Fails in CI
-2120 CID 158534: Memory - illegal accesses odp_traffic_mngr.c
-2121 CID 158532: Integer handling issues odp_classification_basic.c
-2122 CID 158533: Integer handling issues odp_timer_wheel.c
-2129 CID 158774 CID 158775: Error handling issues: odp_system_info.c:
-2133 linux-generic dpdk pktio clang warnings
-2137 CID 158531: Missing break in switch: odp_crypto.c
-2141 test/performance/odp_crypto valgrind uninitialised value
-2146 CID 159395: Security best practices violations: shmem_linux.c
-2149 CID 159392: Memory - illegal accesses: shmem_linux.c
-2154 ODP fails to build with GCC 5.3 (__DATE__ and __TIME__ macros, preventing reproducible builds)
-2158 CID 159488: Uninitialized variables: shmem_odp.c
+.Fixed Bugs
+[width="75%",align="center",options="header"]
+|====
+| Bug Number | Description
+|1547| Untested API copy_md_to_packet
+|2161| Configure script fails in Cunit check
+|2033| odp_cpuinfo_parser() causes segfault on systems where cpu speed info is missing in sysinfo->model_str
+|1394| CID 56895: Buffer not null terminated: odp_packet_netmap.c
+|2030| CID 157957: Memory - illegal accesses:odp_sysinfo_parse.c
+|2127| memory leak in odp_crypto
+|2151| Packet pool runs out of blocks for irregular traffic patterns
+|1386| Doxygen: input source `./platform/linux-netmap/include/odp' does not exist
+|1826| Untested internal APIs verify_pmr_eth_type_0
+|1827| Untested internal API verify_pmr_eth_type_x
+|1829| Untested internal API verify_pmr_ipsec_spi
+|1831| Untested internal API verify_pmr_ipv6_daddr
+|1832| Untested internal API verify_pmr_ipv6_saddr
+|1833| Untested internal API verify_pmr_ld_vni
+|2058| odp_init_local user-doc does not describe the thread type
+|2076| Scheduler validation suite Fails in CI
+|2120| CID 158534: Memory - illegal accesses odp_traffic_mngr.c
+|2121| CID 158532: Integer handling issues odp_classification_basic.c
+|2122| CID 158533: Integer handling issues odp_timer_wheel.c
+|2129| CID 158774 CID 158775: Error handling issues: odp_system_info.c:
+|2133| linux-generic dpdk pktio clang warnings
+|2137| CID 158531: Missing break in switch: odp_crypto.c
+|2141| test/performance/odp_crypto valgrind uninitialised value
+|2146| CID 159395: Security best practices violations: shmem_linux.c
+|2149| CID 159392: Memory - illegal accesses: shmem_linux.c
+|2154| ODP fails to build with GCC 5.3 (__DATE__ and __TIME__ macros, preventing reproducible builds)
+|2158| CID 159488: Uninitialized variables: shmem_odp.c
+|====
=== API changes ===
+The API is checked via the API Compliance Checker tools in check-odp [3]
+This is a work in progress but it diffs the actual doxygen documentation of the specification
+
+link:odp-api-report.txt[odp-api-report]
=== ABI changes ===
-link:odp-abi-report.html[Docs]
+The ABI is checked via the ABI Compliance Checker (ABICC) [2]
+
+link:odp-abi-report.html[odp-abi-report]
+=== References
[1] https://bugs.linaro.org/describecomponents.cgi?product=OpenDataPlane%20-%20linux-%20generic%20reference
+[2] http://ispras.linuxbase.org/index.php/ABI_compliance_checker
+[3] https://git.linaro.org/lng/check-odp.git