mbox series

[PATCHv2,00/11] Optimized Packet References

Message ID 20170312123045.3852-1-bill.fischofer@linaro.org
Headers show
Series Optimized Packet References | expand

Message

Bill Fischofer March 12, 2017, 12:30 p.m. UTC
Changes in v2:
- Avoid potential race condition in odp_packet_ref_static() by setting
unshared_len only after ref counts are incremented.

This series adds support for zero-copy packet references in a staged manner
that should be easier to review and test.

The first three parts do some restructuring needed to support more general
packet manipulation. Part 4 adds the new packet hdr fields needed to support
zero-copy references while Parts 5 and 6 add the maintenance of these fields
to existing packet manipulation routines, and Part 7 adds reference support
to the odp_packet_unshared_len() implementation.

Part 8 updates the various segment manipulation routines to support this new
packet structure, while Part 9 provides the general support for the packet
free routines to decrement reference counts and only free segments when their
reference counts decrement to zero.

Part 10 adds reference support for the various head/tail extension and
trunction routines. Finally, Part 11 enables the creation of zero-copy
references that utilize the machinery found in the previous parts.

Bill Fischofer (11):
  linux-generic: pool: restructure pool routines
  linux-generic: packet: move pull_tail to packet mainline for
    consistency
  linux-generic: packet: restructure inline routines to use macros
  linux-generic: packet: add packet fields needed for references
  linux-generic: packet: add routines for manipulating reference counts
  linux-generic: packet: add initializations for new hdr fields
  linux-generic: packet: unshared_len maintenance
  linux-generic: packet: segment manipulation with references
  linux-generic: packet: restructure free routines for references
  linux-generic: packet: add reference support for head/tail
    manipulation
  linux-generic: packet: enable zero-copy reference creation

 .../include/odp/api/plat/packet_flag_inlines.h     |   7 +-
 .../include/odp/api/plat/packet_inlines.h          |  77 +--
 .../include/odp/api/plat/packet_inlines_api.h      |  16 -
 .../include/odp/api/plat/packet_types.h            |   8 +
 .../linux-generic/include/odp_packet_internal.h    |  90 ++-
 platform/linux-generic/include/odp_pool_internal.h |  33 +-
 platform/linux-generic/odp_packet.c                | 650 ++++++++++++++++-----
 platform/linux-generic/odp_pool.c                  |  47 +-
 8 files changed, 652 insertions(+), 276 deletions(-)

-- 
2.12.0.rc1