These are reasonable changes, but they conflict with the code in
api-next so I suggest this series be rebased onto api-next and then
moved to master as part of the next release (which should be later
this month) to avoid a huge merge headache for Maxim.



On Mon, Feb 6, 2017 at 6:37 AM, Petri Savolainen
<[email protected]> wrote:
> Changed packet handle (odp_packet_t) to store pointer to the packet
> header, instead a bit field structure of pool and index. Buffer and
> event handles are not changed.
>
> Pointer as handle improves packet accessor function performance and
> enable accessor function inlining as mapping to pool/index is not needed.
>
> Signed-off-by: Petri Savolainen <[email protected]>
> ---
>  .../include/odp/api/plat/packet_types.h            |   2 +-
>  .../linux-generic/include/odp_packet_internal.h    |   2 +-
>  platform/linux-generic/odp_packet.c                | 163 
> ++++++++++++---------
>  3 files changed, 96 insertions(+), 71 deletions(-)
>
> diff --git a/platform/linux-generic/include/odp/api/plat/packet_types.h 
> b/platform/linux-generic/include/odp/api/plat/packet_types.h
> index 34e5dd8..999130e 100644
> --- a/platform/linux-generic/include/odp/api/plat/packet_types.h
> +++ b/platform/linux-generic/include/odp/api/plat/packet_types.h
> @@ -32,7 +32,7 @@ extern "C" {
>
>  typedef ODP_HANDLE_T(odp_packet_t);
>
> -#define ODP_PACKET_INVALID _odp_cast_scalar(odp_packet_t, 0xffffffff)
> +#define ODP_PACKET_INVALID _odp_cast_scalar(odp_packet_t, 0)
>
>  #define ODP_PACKET_OFFSET_INVALID (0x0fffffff)
>
> diff --git a/platform/linux-generic/include/odp_packet_internal.h 
> b/platform/linux-generic/include/odp_packet_internal.h
> index e6e9d74..9e3b9fe 100644
> --- a/platform/linux-generic/include/odp_packet_internal.h
> +++ b/platform/linux-generic/include/odp_packet_internal.h
> @@ -209,7 +209,7 @@ typedef struct {
>   */
>  static inline odp_packet_hdr_t *odp_packet_hdr(odp_packet_t pkt)
>  {
> -       return (odp_packet_hdr_t *)buf_hdl_to_hdr((odp_buffer_t)pkt);
> +       return (odp_packet_hdr_t *)(uintptr_t)pkt;
>  }
>
>  static inline void copy_packet_parser_metadata(odp_packet_hdr_t *src_hdr,
> diff --git a/platform/linux-generic/odp_packet.c 
> b/platform/linux-generic/odp_packet.c
> index 8833822..e56d954 100644
> --- a/platform/linux-generic/odp_packet.c
> +++ b/platform/linux-generic/odp_packet.c
> @@ -23,9 +23,14 @@
>  /* Initial packet segment data length */
>  #define BASE_LEN  CONFIG_PACKET_MAX_SEG_LEN
>
> +static inline odp_packet_hdr_t *packet_hdr(odp_packet_t pkt)
> +{
> +       return (odp_packet_hdr_t *)(uintptr_t)pkt;
> +}
> +
>  static inline odp_packet_t packet_handle(odp_packet_hdr_t *pkt_hdr)
>  {
> -       return (odp_packet_t)pkt_hdr->buf_hdr.handle.handle;
> +       return (odp_packet_t)pkt_hdr;
>  }
>
>  static inline odp_buffer_t buffer_handle(odp_packet_hdr_t *pkt_hdr)
> @@ -33,6 +38,11 @@ static inline odp_buffer_t buffer_handle(odp_packet_hdr_t 
> *pkt_hdr)
>         return pkt_hdr->buf_hdr.handle.handle;
>  }
>
> +static inline odp_packet_hdr_t *buf_to_packet_hdr(odp_buffer_t buf)
> +{
> +       return (odp_packet_hdr_t *)buf_hdl_to_hdr(buf);
> +}
> +
>  static inline uint32_t packet_seg_len(odp_packet_hdr_t *pkt_hdr,
>                                       uint32_t seg_idx)
>  {
> @@ -485,8 +495,8 @@ static inline int packet_alloc(pool_t *pool, uint32_t 
> len, int max_pkt,
>                 odp_packet_hdr_t *hdr;
>
>                 /* First buffer is the packet descriptor */
> -               pkt[i] = (odp_packet_t)buf[i * num_seg];
>                 hdr    = pkt_hdr[i * num_seg];
> +               pkt[i] = packet_handle(hdr);
>                 init_segments(&pkt_hdr[i * num_seg], num_seg);
>
>                 packet_init(hdr, len, parse);
> @@ -552,11 +562,13 @@ int odp_packet_alloc_multi(odp_pool_t pool_hdl, 
> uint32_t len,
>
>  void odp_packet_free(odp_packet_t pkt)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
> +       odp_buffer_t hdl = buffer_handle(pkt_hdr);
> +
>         int num_seg = pkt_hdr->buf_hdr.segcount;
>
>         if (odp_likely(CONFIG_PACKET_MAX_SEGS == 1 || num_seg == 1))
> -               buffer_free_multi((odp_buffer_t *)&pkt, 1);
> +               buffer_free_multi(&hdl, 1);
>         else
>                 free_bufs(pkt_hdr, 0, num_seg);
>  }
> @@ -571,11 +583,11 @@ void odp_packet_free_multi(const odp_packet_t pkt[], 
> int num)
>                 int bufs = 0;
>
>                 for (i = 0; i < num; i++) {
> -                       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt[i]);
> +                       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt[i]);
>                         int num_seg = pkt_hdr->buf_hdr.segcount;
>                         odp_buffer_hdr_t *buf_hdr = &pkt_hdr->buf_hdr;
>
> -                       buf[bufs] = (odp_buffer_t)pkt[i];
> +                       buf[bufs] = buffer_handle(pkt_hdr);
>                         bufs++;
>
>                         if (odp_likely(num_seg == 1))
> @@ -593,7 +605,7 @@ void odp_packet_free_multi(const odp_packet_t pkt[], int 
> num)
>
>  int odp_packet_reset(odp_packet_t pkt, uint32_t len)
>  {
> -       odp_packet_hdr_t *const pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *const pkt_hdr = packet_hdr(pkt);
>         pool_t *pool = pool_entry_from_hdl(pkt_hdr->buf_hdr.pool_hdl);
>
>         if (len > pool->headroom + pool->data_size + pool->tailroom)
> @@ -606,22 +618,34 @@ int odp_packet_reset(odp_packet_t pkt, uint32_t len)
>
>  odp_packet_t _odp_packet_from_buffer(odp_buffer_t buf)
>  {
> -       return (odp_packet_t)buf;
> +       if (odp_unlikely(buf == ODP_BUFFER_INVALID))
> +               return ODP_PACKET_INVALID;
> +
> +       return (odp_packet_t)buf_to_packet_hdr(buf);
>  }
>
>  odp_buffer_t _odp_packet_to_buffer(odp_packet_t pkt)
>  {
> -       return (odp_buffer_t)pkt;
> +       if (odp_unlikely(pkt == ODP_PACKET_INVALID))
> +               return ODP_BUFFER_INVALID;
> +
> +       return buffer_handle(packet_hdr(pkt));
>  }
>
>  odp_packet_t odp_packet_from_event(odp_event_t ev)
>  {
> -       return (odp_packet_t)ev;
> +       if (odp_unlikely(ev == ODP_EVENT_INVALID))
> +               return ODP_PACKET_INVALID;
> +
> +       return (odp_packet_t)buf_to_packet_hdr((odp_buffer_t)ev);
>  }
>
>  odp_event_t odp_packet_to_event(odp_packet_t pkt)
>  {
> -       return (odp_event_t)pkt;
> +       if (odp_unlikely(pkt == ODP_PACKET_INVALID))
> +               return ODP_EVENT_INVALID;
> +
> +       return (odp_event_t)buffer_handle(packet_hdr(pkt));
>  }
>
>  /*
> @@ -633,57 +657,57 @@ odp_event_t odp_packet_to_event(odp_packet_t pkt)
>
>  void *odp_packet_head(odp_packet_t pkt)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         return pkt_hdr->buf_hdr.seg[0].data - pkt_hdr->headroom;
>  }
>
>  uint32_t odp_packet_buf_len(odp_packet_t pkt)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         return pkt_hdr->buf_hdr.size * pkt_hdr->buf_hdr.segcount;
>  }
>
>  void *odp_packet_data(odp_packet_t pkt)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         return packet_data(pkt_hdr);
>  }
>
>  uint32_t odp_packet_seg_len(odp_packet_t pkt)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         return packet_first_seg_len(pkt_hdr);
>  }
>
>  uint32_t odp_packet_len(odp_packet_t pkt)
>  {
> -       return odp_packet_hdr(pkt)->frame_len;
> +       return packet_hdr(pkt)->frame_len;
>  }
>
>  uint32_t odp_packet_headroom(odp_packet_t pkt)
>  {
> -       return odp_packet_hdr(pkt)->headroom;
> +       return packet_hdr(pkt)->headroom;
>  }
>
>  uint32_t odp_packet_tailroom(odp_packet_t pkt)
>  {
> -       return odp_packet_hdr(pkt)->tailroom;
> +       return packet_hdr(pkt)->tailroom;
>  }
>
>  void *odp_packet_tail(odp_packet_t pkt)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         return packet_tail(pkt_hdr);
>  }
>
>  void *odp_packet_push_head(odp_packet_t pkt, uint32_t len)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (len > pkt_hdr->headroom)
>                 return NULL;
> @@ -868,7 +892,7 @@ static inline void reset_seg(odp_packet_hdr_t *pkt_hdr, 
> int first, int num)
>  int odp_packet_extend_head(odp_packet_t *pkt, uint32_t len,
>                            void **data_ptr, uint32_t *seg_len)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(*pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(*pkt);
>         uint32_t frame_len = pkt_hdr->frame_len;
>         uint32_t headroom  = pkt_hdr->headroom;
>         int ret = 0;
> @@ -972,7 +996,7 @@ int odp_packet_extend_head(odp_packet_t *pkt, uint32_t 
> len,
>
>  void *odp_packet_pull_head(odp_packet_t pkt, uint32_t len)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (len > pkt_hdr->frame_len)
>                 return NULL;
> @@ -984,7 +1008,7 @@ void *odp_packet_pull_head(odp_packet_t pkt, uint32_t 
> len)
>  int odp_packet_trunc_head(odp_packet_t *pkt, uint32_t len,
>                           void **data_ptr, uint32_t *seg_len_out)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(*pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(*pkt);
>         uint32_t seg_len = packet_first_seg_len(pkt_hdr);
>
>         if (len > pkt_hdr->frame_len)
> @@ -1018,7 +1042,7 @@ int odp_packet_trunc_head(odp_packet_t *pkt, uint32_t 
> len,
>
>  void *odp_packet_push_tail(odp_packet_t pkt, uint32_t len)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>         void *old_tail;
>
>         if (len > pkt_hdr->tailroom)
> @@ -1033,7 +1057,7 @@ void *odp_packet_push_tail(odp_packet_t pkt, uint32_t 
> len)
>  int odp_packet_extend_tail(odp_packet_t *pkt, uint32_t len,
>                            void **data_ptr, uint32_t *seg_len_out)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(*pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(*pkt);
>         uint32_t frame_len = pkt_hdr->frame_len;
>         uint32_t tailroom  = pkt_hdr->tailroom;
>         uint32_t tail_off  = frame_len;
> @@ -1124,7 +1148,7 @@ int odp_packet_extend_tail(odp_packet_t *pkt, uint32_t 
> len,
>
>  void *odp_packet_pull_tail(odp_packet_t pkt, uint32_t len)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (len > packet_last_seg_len(pkt_hdr))
>                 return NULL;
> @@ -1139,7 +1163,7 @@ int odp_packet_trunc_tail(odp_packet_t *pkt, uint32_t 
> len,
>  {
>         int last;
>         uint32_t seg_len;
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(*pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(*pkt);
>
>         if (len > pkt_hdr->frame_len)
>                 return -1;
> @@ -1174,7 +1198,7 @@ void *odp_packet_offset(odp_packet_t pkt, uint32_t 
> offset, uint32_t *len,
>                         odp_packet_seg_t *seg)
>  {
>         int seg_idx;
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>         void *addr = packet_map(pkt_hdr, offset, len, &seg_idx);
>
>         if (addr != NULL && seg != NULL)
> @@ -1199,42 +1223,42 @@ void odp_packet_prefetch(odp_packet_t pkt ODP_UNUSED,
>
>  odp_pool_t odp_packet_pool(odp_packet_t pkt)
>  {
> -       return odp_packet_hdr(pkt)->buf_hdr.pool_hdl;
> +       return packet_hdr(pkt)->buf_hdr.pool_hdl;
>  }
>
>  odp_pktio_t odp_packet_input(odp_packet_t pkt)
>  {
> -       return odp_packet_hdr(pkt)->input;
> +       return packet_hdr(pkt)->input;
>  }
>
>  int odp_packet_input_index(odp_packet_t pkt)
>  {
> -       return odp_pktio_index(odp_packet_hdr(pkt)->input);
> +       return odp_pktio_index(packet_hdr(pkt)->input);
>  }
>
>  void *odp_packet_user_ptr(odp_packet_t pkt)
>  {
> -       return odp_packet_hdr(pkt)->buf_hdr.buf_ctx;
> +       return packet_hdr(pkt)->buf_hdr.buf_ctx;
>  }
>
>  void odp_packet_user_ptr_set(odp_packet_t pkt, const void *ctx)
>  {
> -       odp_packet_hdr(pkt)->buf_hdr.buf_cctx = ctx;
> +       packet_hdr(pkt)->buf_hdr.buf_cctx = ctx;
>  }
>
>  void *odp_packet_user_area(odp_packet_t pkt)
>  {
> -       return odp_packet_hdr(pkt)->buf_hdr.uarea_addr;
> +       return packet_hdr(pkt)->buf_hdr.uarea_addr;
>  }
>
>  uint32_t odp_packet_user_area_size(odp_packet_t pkt)
>  {
> -       return odp_packet_hdr(pkt)->buf_hdr.uarea_size;
> +       return packet_hdr(pkt)->buf_hdr.uarea_size;
>  }
>
>  void *odp_packet_l2_ptr(odp_packet_t pkt, uint32_t *len)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (!packet_hdr_has_l2(pkt_hdr))
>                 return NULL;
> @@ -1243,7 +1267,7 @@ void *odp_packet_l2_ptr(odp_packet_t pkt, uint32_t *len)
>
>  uint32_t odp_packet_l2_offset(odp_packet_t pkt)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (!packet_hdr_has_l2(pkt_hdr))
>                 return ODP_PACKET_OFFSET_INVALID;
> @@ -1252,7 +1276,7 @@ uint32_t odp_packet_l2_offset(odp_packet_t pkt)
>
>  int odp_packet_l2_offset_set(odp_packet_t pkt, uint32_t offset)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (offset >= pkt_hdr->frame_len)
>                 return -1;
> @@ -1264,7 +1288,7 @@ int odp_packet_l2_offset_set(odp_packet_t pkt, uint32_t 
> offset)
>
>  void *odp_packet_l3_ptr(odp_packet_t pkt, uint32_t *len)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (pkt_hdr->p.parsed_layers < LAYER_L3)
>                 packet_parse_layer(pkt_hdr, LAYER_L3);
> @@ -1273,7 +1297,7 @@ void *odp_packet_l3_ptr(odp_packet_t pkt, uint32_t *len)
>
>  uint32_t odp_packet_l3_offset(odp_packet_t pkt)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (pkt_hdr->p.parsed_layers < LAYER_L3)
>                 packet_parse_layer(pkt_hdr, LAYER_L3);
> @@ -1282,7 +1306,7 @@ uint32_t odp_packet_l3_offset(odp_packet_t pkt)
>
>  int odp_packet_l3_offset_set(odp_packet_t pkt, uint32_t offset)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (offset >= pkt_hdr->frame_len)
>                 return -1;
> @@ -1295,7 +1319,7 @@ int odp_packet_l3_offset_set(odp_packet_t pkt, uint32_t 
> offset)
>
>  void *odp_packet_l4_ptr(odp_packet_t pkt, uint32_t *len)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (pkt_hdr->p.parsed_layers < LAYER_L4)
>                 packet_parse_layer(pkt_hdr, LAYER_L4);
> @@ -1304,7 +1328,7 @@ void *odp_packet_l4_ptr(odp_packet_t pkt, uint32_t *len)
>
>  uint32_t odp_packet_l4_offset(odp_packet_t pkt)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (pkt_hdr->p.parsed_layers < LAYER_L4)
>                 packet_parse_layer(pkt_hdr, LAYER_L4);
> @@ -1313,7 +1337,7 @@ uint32_t odp_packet_l4_offset(odp_packet_t pkt)
>
>  int odp_packet_l4_offset_set(odp_packet_t pkt, uint32_t offset)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (offset >= pkt_hdr->frame_len)
>                 return -1;
> @@ -1326,14 +1350,14 @@ int odp_packet_l4_offset_set(odp_packet_t pkt, 
> uint32_t offset)
>
>  uint32_t odp_packet_flow_hash(odp_packet_t pkt)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         return pkt_hdr->flow_hash;
>  }
>
>  void odp_packet_flow_hash_set(odp_packet_t pkt, uint32_t flow_hash)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         pkt_hdr->flow_hash = flow_hash;
>         pkt_hdr->p.input_flags.flow_hash = 1;
> @@ -1341,14 +1365,14 @@ void odp_packet_flow_hash_set(odp_packet_t pkt, 
> uint32_t flow_hash)
>
>  odp_time_t odp_packet_ts(odp_packet_t pkt)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         return pkt_hdr->timestamp;
>  }
>
>  void odp_packet_ts_set(odp_packet_t pkt, odp_time_t timestamp)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         pkt_hdr->timestamp = timestamp;
>         pkt_hdr->p.input_flags.timestamp = 1;
> @@ -1356,12 +1380,12 @@ void odp_packet_ts_set(odp_packet_t pkt, odp_time_t 
> timestamp)
>
>  int odp_packet_is_segmented(odp_packet_t pkt)
>  {
> -       return odp_packet_hdr(pkt)->buf_hdr.segcount > 1;
> +       return packet_hdr(pkt)->buf_hdr.segcount > 1;
>  }
>
>  int odp_packet_num_segs(odp_packet_t pkt)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         return pkt_hdr->buf_hdr.segcount;
>  }
> @@ -1375,14 +1399,14 @@ odp_packet_seg_t odp_packet_first_seg(odp_packet_t 
> pkt)
>
>  odp_packet_seg_t odp_packet_last_seg(odp_packet_t pkt)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         return packet_last_seg(pkt_hdr);
>  }
>
>  odp_packet_seg_t odp_packet_next_seg(odp_packet_t pkt, odp_packet_seg_t seg)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (odp_unlikely(seg >= (odp_packet_seg_t)packet_last_seg(pkt_hdr)))
>                 return ODP_PACKET_SEG_INVALID;
> @@ -1399,7 +1423,7 @@ odp_packet_seg_t odp_packet_next_seg(odp_packet_t pkt, 
> odp_packet_seg_t seg)
>
>  void *odp_packet_seg_data(odp_packet_t pkt, odp_packet_seg_t seg)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (odp_unlikely(seg >= pkt_hdr->buf_hdr.segcount))
>                 return NULL;
> @@ -1409,7 +1433,7 @@ void *odp_packet_seg_data(odp_packet_t pkt, 
> odp_packet_seg_t seg)
>
>  uint32_t odp_packet_seg_data_len(odp_packet_t pkt, odp_packet_seg_t seg)
>  {
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (odp_unlikely(seg >= pkt_hdr->buf_hdr.segcount))
>                 return 0;
> @@ -1427,7 +1451,7 @@ uint32_t odp_packet_seg_data_len(odp_packet_t pkt, 
> odp_packet_seg_t seg)
>  int odp_packet_add_data(odp_packet_t *pkt_ptr, uint32_t offset, uint32_t len)
>  {
>         odp_packet_t pkt = *pkt_ptr;
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>         uint32_t pktlen = pkt_hdr->frame_len;
>         odp_packet_t newpkt;
>
> @@ -1456,7 +1480,7 @@ int odp_packet_add_data(odp_packet_t *pkt_ptr, uint32_t 
> offset, uint32_t len)
>  int odp_packet_rem_data(odp_packet_t *pkt_ptr, uint32_t offset, uint32_t len)
>  {
>         odp_packet_t pkt = *pkt_ptr;
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>         uint32_t pktlen = pkt_hdr->frame_len;
>         odp_packet_t newpkt;
>
> @@ -1488,7 +1512,7 @@ int odp_packet_align(odp_packet_t *pkt, uint32_t 
> offset, uint32_t len,
>         int rc;
>         uint32_t shift;
>         uint32_t seglen = 0;  /* GCC */
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(*pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(*pkt);
>         void *addr = packet_map(pkt_hdr, offset, &seglen, NULL);
>         uint64_t uaddr = (uint64_t)(uintptr_t)addr;
>         uint64_t misalign;
> @@ -1526,8 +1550,8 @@ int odp_packet_align(odp_packet_t *pkt, uint32_t 
> offset, uint32_t len,
>
>  int odp_packet_concat(odp_packet_t *dst, odp_packet_t src)
>  {
> -       odp_packet_hdr_t *dst_hdr = odp_packet_hdr(*dst);
> -       odp_packet_hdr_t *src_hdr = odp_packet_hdr(src);
> +       odp_packet_hdr_t *dst_hdr = packet_hdr(*dst);
> +       odp_packet_hdr_t *src_hdr = packet_hdr(src);
>         int dst_segs        = dst_hdr->buf_hdr.segcount;
>         int src_segs        = src_hdr->buf_hdr.segcount;
>         odp_pool_t dst_pool = dst_hdr->buf_hdr.pool_hdl;
> @@ -1585,7 +1609,7 @@ int odp_packet_split(odp_packet_t *pkt, uint32_t len, 
> odp_packet_t *tail)
>
>  odp_packet_t odp_packet_copy(odp_packet_t pkt, odp_pool_t pool)
>  {
> -       odp_packet_hdr_t *srchdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *srchdr = packet_hdr(pkt);
>         uint32_t pktlen = srchdr->frame_len;
>         odp_packet_t newpkt = odp_packet_alloc(pool, pktlen);
>
> @@ -1623,7 +1647,7 @@ int odp_packet_copy_to_mem(odp_packet_t pkt, uint32_t 
> offset,
>         uint32_t seglen = 0; /* GCC */
>         uint32_t cpylen;
>         uint8_t *dstaddr = (uint8_t *)dst;
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (offset + len > pkt_hdr->frame_len)
>                 return -1;
> @@ -1647,7 +1671,7 @@ int odp_packet_copy_from_mem(odp_packet_t pkt, uint32_t 
> offset,
>         uint32_t seglen = 0; /* GCC */
>         uint32_t cpylen;
>         const uint8_t *srcaddr = (const uint8_t *)src;
> -       odp_packet_hdr_t *pkt_hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
>
>         if (offset + len > pkt_hdr->frame_len)
>                 return -1;
> @@ -1668,8 +1692,8 @@ int odp_packet_copy_from_pkt(odp_packet_t dst, uint32_t 
> dst_offset,
>                              odp_packet_t src, uint32_t src_offset,
>                              uint32_t len)
>  {
> -       odp_packet_hdr_t *dst_hdr = odp_packet_hdr(dst);
> -       odp_packet_hdr_t *src_hdr = odp_packet_hdr(src);
> +       odp_packet_hdr_t *dst_hdr = packet_hdr(dst);
> +       odp_packet_hdr_t *src_hdr = packet_hdr(src);
>         void *dst_map;
>         void *src_map;
>         uint32_t cpylen, minseg;
> @@ -1746,10 +1770,11 @@ void odp_packet_print(odp_packet_t pkt)
>         char str[max_len];
>         int len = 0;
>         int n = max_len - 1;
> -       odp_packet_hdr_t *hdr = odp_packet_hdr(pkt);
> +       odp_packet_hdr_t *hdr = packet_hdr(pkt);
> +       odp_buffer_t buf      = _odp_packet_to_buffer(pkt);
>
>         len += snprintf(&str[len], n - len, "Packet ");
> -       len += odp_buffer_snprint(&str[len], n - len, (odp_buffer_t)pkt);
> +       len += odp_buffer_snprint(&str[len], n - len, buf);
>         len += snprintf(&str[len], n - len, "  input_flags  0x%" PRIx64 "\n",
>                         hdr->p.input_flags.all);
>         len += snprintf(&str[len], n - len, "  error_flags  0x%" PRIx32 "\n",
> @@ -1794,7 +1819,7 @@ void odp_packet_print(odp_packet_t pkt)
>
>  int odp_packet_is_valid(odp_packet_t pkt)
>  {
> -       if (odp_buffer_is_valid((odp_buffer_t)pkt) == 0)
> +       if (odp_buffer_is_valid(_odp_packet_to_buffer(pkt)) == 0)
>                 return 0;
>
>         if (odp_event_type(odp_packet_to_event(pkt)) != ODP_EVENT_PACKET)
> @@ -1812,8 +1837,8 @@ int odp_packet_is_valid(odp_packet_t pkt)
>
>  int _odp_packet_copy_md_to_packet(odp_packet_t srcpkt, odp_packet_t dstpkt)
>  {
> -       odp_packet_hdr_t *srchdr = odp_packet_hdr(srcpkt);
> -       odp_packet_hdr_t *dsthdr = odp_packet_hdr(dstpkt);
> +       odp_packet_hdr_t *srchdr = packet_hdr(srcpkt);
> +       odp_packet_hdr_t *dsthdr = packet_hdr(dstpkt);
>
>         dsthdr->input = srchdr->input;
>         dsthdr->dst_queue = srchdr->dst_queue;
> --
> 2.8.1
>

Reply via email to