On 17 December 2014 at 12:51, Savolainen, Petri (NSN - FI/Espoo)
<[email protected]> wrote:
> The API says already:
>
>
>
> “Operation does not modify packet segmentation or move data. Handles and
>
> pointers remain valid. User is responsible to update packet meta-data
>
> offsets when needed.”

We are still not consistent how we spell metadata.
$ git grep "metadata"
Binary file doc/images/overview.eps matches
platform/linux-generic/include/api/odp_buffer.h:#define
ODP_BUFFER_TYPE_RAW       1  /**< Raw buffer, no additional metadata
*/
platform/linux-generic/include/api/odp_buffer.h: * Print buffer
metadata to STDOUT
platform/linux-generic/include/api/odp_packet.h: * other packet
metadata are set to their default values.
platform/linux-generic/include/odp_buffer_internal.h:/* We can
optimize storage of small raw buffers within metadata area */
platform/linux-generic/include/odp_buffer_internal.h:           void
         *udata_addr; /* user metadata addr */
platform/linux-generic/include/odp_buffer_internal.h:   size_t
          udata_size; /* size of user metadata */
platform/linux-generic/include/odp_buffer_pool_internal.h: * buffer is
allocated to initialize the user metadata
platform/linux-generic/include/odp_buffer_pool_internal.h:      size_t
udata_size;         /**< Size of user metadata for each buffer */
platform/linux-generic/include/odp_packet_internal.h:   * Reset parser
metadata.  Note that we clear via memset to make
platform/linux-generic/include/odp_packet_internal.h:   * this routine
indepenent of any additional adds to packet metadata.
platform/linux-generic/odp_buffer_pool.c:       /* Calculate space
needed for buffer blocks and metadata */
platform/linux-generic/odp_buffer_pool.c:               /* Pool mdata
addr is used for indexing buffer metadata */
platform/linux-generic/odp_buffer_pool.c:                       /*
Iniitalize buffer metadata */
platform/linux-generic/odp_packet.c:    /* Reset parser metadata for
new parse */

 $ git grep "meta data"
platform/linux-generic/include/api/odp_classification.h: * flow
signature type, only used for packet meta data field.
platform/linux-generic/odp_packet.c:            /* Must copy meta data
first, followed by packet data */

 $ git grep meta-data
platform/linux-generic/include/api/odp_packet.h: *   and meta-data)
and thus is preserved over packet ownership changes.
platform/linux-generic/include/api/odp_packet.h: * Resets all packet
meta-data to their default values. Packet length is used
platform/linux-generic/include/api/odp_packet.h: * pointers remain
valid. User is responsible to update packet meta-data
platform/linux-generic/include/api/odp_packet.h: * pointers remain
valid. User is responsible to update packet meta-data
platform/linux-generic/include/api/odp_packet.h: * pointers remain
valid. User is responsible to update packet meta-data
platform/linux-generic/include/api/odp_packet.h: * after the
operation. User is responsible to update packet meta-data offsets
platform/linux-generic/include/api/odp_packet.h: * after the
operation. User is responsible to update packet meta-data offsets
platform/linux-generic/include/api/odp_packet.h: * packet (incl. data
and meta-data). The pool must have been created with


We should choose one spelling and I propose this again:
http://en.wikipedia.org/wiki/Metadata

Cheers,
Anders

>
>
>
> If application modifies packet headers (adds/removes/changes them), it must
> update those offsets that it or some other block after it in the chain cares
> about (reloads from the packet). It may leave some offsets unchanged because
> it knows that those are not needed any more.
>
>
>
> Some more words can be added, if the current text is not clear enough. The
> current implementation does not implement the spec. This patch fixes that
> issue.
>
>
>
>
>
> -Petri
>
>
>
>
>
>
>
>
>
> From: ext Bill Fischofer [mailto:[email protected]]
> Sent: Wednesday, December 17, 2014 1:33 PM
> To: Petri Savolainen
> Cc: lng-odp-forward
> Subject: Re: [lng-odp] [PATCH] Remove packet l2/l3/l4 offset adjustments
>
>
>
> If we do this we really need a documentation note that says:
>
>
>
> Note: After doing a head push/pull, applications cannot use routines like
> odp_packet_l3_ptr(), etc., until they make appropriate  calls to
> odp_packet_l3_offset_set(), etc., to reflect the previous operation.
> Otherwise they will receive pointers to incorrect areas of the packet.
>
>
>
> On Wed, Dec 17, 2014 at 3:12 AM, Petri Savolainen
> <[email protected]> wrote:
>
> Packet head push/pull calls do not automatically adjust
> metadata offsets, only data pointer and headroom.
>
> Signed-off-by: Petri Savolainen <[email protected]>
> ---
>  platform/linux-generic/include/odp_packet_internal.h | 8 --------
>  1 file changed, 8 deletions(-)
>
> diff --git a/platform/linux-generic/include/odp_packet_internal.h
> b/platform/linux-generic/include/odp_packet_internal.h
> index a0eff30..18e69b3 100644
> --- a/platform/linux-generic/include/odp_packet_internal.h
> +++ b/platform/linux-generic/include/odp_packet_internal.h
> @@ -192,24 +192,16 @@ static inline void *packet_map(odp_packet_hdr_t
> *pkt_hdr,
>                           pkt_hdr->headroom + pkt_hdr->frame_len);
>  }
>
> -#define pull_offset(x, len) (x = x < len ? 0 : x - len)
> -
>  static inline void push_head(odp_packet_hdr_t *pkt_hdr, size_t len)
>  {
>         pkt_hdr->headroom  -= len;
>         pkt_hdr->frame_len += len;
> -       pkt_hdr->l2_offset += len;
> -       pkt_hdr->l3_offset += len;
> -       pkt_hdr->l4_offset += len;
>  }
>
>  static inline void pull_head(odp_packet_hdr_t *pkt_hdr, size_t len)
>  {
>         pkt_hdr->headroom  += len;
>         pkt_hdr->frame_len -= len;
> -       pull_offset(pkt_hdr->l2_offset, len);
> -       pull_offset(pkt_hdr->l3_offset, len);
> -       pull_offset(pkt_hdr->l4_offset, len);
>  }
>
>  static inline void push_tail(odp_packet_hdr_t *pkt_hdr, size_t len)
> --
> 2.2.0
>
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
> http://lists.linaro.org/mailman/listinfo/lng-odp
>
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
> http://lists.linaro.org/mailman/listinfo/lng-odp
>

_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to