Branch: refs/heads/master Home: https://github.com/Linaro/odp Commit: a820d8a84e132652b4cef295756ccf135e3bd54b https://github.com/Linaro/odp/commit/a820d8a84e132652b4cef295756ccf135e3bd54b Author: Petri Savolainen <petri.savolai...@linaro.org> Date: 2017-09-14 (Thu, 14 Sep 2017)
Changed paths: M platform/linux-generic/include/odp/api/plat/packet_inlines.h M platform/linux-generic/include/odp/api/plat/packet_inlines_api.h M platform/linux-generic/include/odp/api/plat/packet_types.h M platform/linux-generic/include/odp_packet_internal.h M platform/linux-generic/odp_packet.c Log Message: ----------- linux-gen: packet: roll back to copy based references In order to re-implement segmentation for the new reference implementation roll back to the copy based reference implementation, which have been proved to work OK. This zero copy reference implementation introduced multiple issues: * segment pointers and length were not set correctly, but were left to NULL * reference counting has a race condition which causes random assert failures also with non-reference packets * there's larger than expected performance drop with non-reference packets * the first segment of a reference was zero bytes long, which is possible by the API but is unusual for users Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org> Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org> Commit: 88d36e6811de494708c520cb12e9e5f97628e9e4 https://github.com/Linaro/odp/commit/88d36e6811de494708c520cb12e9e5f97628e9e4 Author: Petri Savolainen <petri.savolai...@linaro.org> Date: 2017-09-14 (Thu, 14 Sep 2017) Changed paths: M test/common_plat/validation/api/packet/packet.c Log Message: ----------- validation: packet: relax small concat test Limit number of consecutive small concat to fraction of the number of packets in the pool. An implementation linking packets together (no copy) cannot be expected to support one byte concats up to max packet size. Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org> Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org> Commit: 04029613fbdc85221d1a20354a49ada912302fc0 https://github.com/Linaro/odp/commit/04029613fbdc85221d1a20354a49ada912302fc0 Author: Petri Savolainen <petri.savolai...@linaro.org> Date: 2017-09-14 (Thu, 14 Sep 2017) Changed paths: M test/common_plat/validation/api/packet/packet.c Log Message: ----------- validation: packet: unshared len with static reference When static references are used all data is shared, and thus unshared length is zero. When there's no references, all data is unique to the packet (unshared len == len). Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org> Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org> Commit: 20c75b764af6fd15e5e1d4df969ac33d62525405 https://github.com/Linaro/odp/commit/20c75b764af6fd15e5e1d4df969ac33d62525405 Author: Petri Savolainen <petri.savolai...@linaro.org> Date: 2017-09-14 (Thu, 14 Sep 2017) Changed paths: M test/common_plat/validation/api/packet/packet.c Log Message: ----------- validation: packet: check reference packet content Check that reference and base packets contain the same data. Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org> Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org> Commit: a787abf96b17d9714a6b892091d19c1be2bc5e6c https://github.com/Linaro/odp/commit/a787abf96b17d9714a6b892091d19c1be2bc5e6c Author: Petri Savolainen <petri.savolai...@linaro.org> Date: 2017-09-14 (Thu, 14 Sep 2017) Changed paths: M platform/linux-generic/include/odp_buffer_internal.h M platform/linux-generic/include/odp_packet_internal.h M platform/linux-generic/odp_packet.c M platform/linux-generic/odp_pool.c Log Message: ----------- linux-gen: packet: re-implement packet segmentation Removed limitation to fixed number of segments (CONFIG_PACKET_MAX_SEGS) per packet. Packet headers carrying segment tables are now linked together with 'next_seg' pointer. Last header containing a segment table is pointed by 'last_seg' pointer. Other than the first segment are not referred directly but with seg_entry_ functions. Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org> Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org> Commit: e4289ab4f73221a9d20ecfb8eac6b79a26df06a3 https://github.com/Linaro/odp/commit/e4289ab4f73221a9d20ecfb8eac6b79a26df06a3 Author: Petri Savolainen <petri.savolai...@linaro.org> Date: 2017-09-14 (Thu, 14 Sep 2017) Changed paths: M platform/linux-generic/include/odp_buffer_internal.h Log Message: ----------- linux-gen: buffer: optimize header layout Pack most often used buffer header fields (including seg[0]) into the first cache line. Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org> Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org> Commit: ef4e4d4c4ef1f9f569c236494cb178feb7c90343 https://github.com/Linaro/odp/commit/ef4e4d4c4ef1f9f569c236494cb178feb7c90343 Author: Petri Savolainen <petri.savolai...@linaro.org> Date: 2017-09-14 (Thu, 14 Sep 2017) Changed paths: M platform/linux-generic/include/odp_buffer_internal.h M platform/linux-generic/include/odp_packet_internal.h M platform/linux-generic/odp_packet.c M platform/linux-generic/odp_pool.c Log Message: ----------- linux-gen: packet: implement static references Implemented static references with a reference counter. Counter is zero when not used (reference API not used). Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org> Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org> Commit: 6efe7d971a3a4b8f7eaa42660b48eee31493924c https://github.com/Linaro/odp/commit/6efe7d971a3a4b8f7eaa42660b48eee31493924c Author: Petri Savolainen <petri.savolai...@linaro.org> Date: 2017-09-14 (Thu, 14 Sep 2017) Changed paths: M platform/linux-generic/odp_packet.c Log Message: ----------- linux-gen: packet: enhance segment prints Print segment addresses and reference counts in addition to segment lengths. Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org> Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org> Commit: 69a1179a05344b59961aaf997a1b406698b6840b https://github.com/Linaro/odp/commit/69a1179a05344b59961aaf997a1b406698b6840b Author: Petri Savolainen <petri.savolai...@linaro.org> Date: 2017-09-14 (Thu, 14 Sep 2017) Changed paths: M platform/linux-generic/include/odp/api/plat/packet_types.h Log Message: ----------- linux-gen: packet: compress packet offset table Use uint16_t (instead of size_t) for offsets and thus decrease size of the offset table into one fourth. Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org> Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org> Commit: ba97c3174d0de3e08cffaad414bf2a55de8853df https://github.com/Linaro/odp/commit/ba97c3174d0de3e08cffaad414bf2a55de8853df Author: Petri Savolainen <petri.savolai...@linaro.org> Date: 2017-09-14 (Thu, 14 Sep 2017) Changed paths: M platform/linux-generic/odp_packet.c Log Message: ----------- linux-gen: packet: implement dynamic references Use link headers to implement dynamic references. These are segment headers which first segment (seg[0]) does not point to itself but to a referenced segment. Link headers enable long chains of references (new dynamic references from previous references). Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org> Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org> Commit: 91ef9f7e224056af351cbaf99ccfa98ee815460d https://github.com/Linaro/odp/commit/91ef9f7e224056af351cbaf99ccfa98ee815460d Author: Petri Savolainen <petri.savolai...@linaro.org> Date: 2017-09-14 (Thu, 14 Sep 2017) Changed paths: M include/odp/arch/default/api/abi/packet.h M platform/linux-generic/include/odp/api/plat/packet_inlines.h M platform/linux-generic/include/odp/api/plat/packet_types.h M platform/linux-generic/include/odp_buffer_internal.h M platform/linux-generic/include/odp_packet_internal.h M platform/linux-generic/odp_pool.c Log Message: ----------- linux-gen: packet: optimize header layout Pack most often used data into the first and the last cache line of buffer header, and the first cache line of packet header. Reduce offsets and head-/tailroom fields to 16 bits, since those are in maximum as large as a segment, usually much less. Pack header fields into correct alignments (when possible), so that holes are avoided. These changes reduce packet header size by one cache line. Signed-off-by: Petri Savolainen <petri.savolai...@linaro.org> Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org> Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org> Compare: https://github.com/Linaro/odp/compare/f7c5f3e97381...91ef9f7e2240