33 static inline bool is_odp_packet(odp_event_t odp_event)
 
   35         if (unlikely(odp_event == ODP_EVENT_INVALID ||
 
   36                      odp_event_type(odp_event) != ODP_EVENT_PACKET))
 
   44         odp_event_t odp_event = event_em2odp(pktev);
 
   47             unlikely(!is_odp_packet(odp_event))) {
 
   49                                "Invalid packet event");
 
   53         odp_packet_t odp_pkt = odp_packet_from_event(odp_event);
 
   55         return odp_packet_data(odp_pkt);
 
   60         odp_event_t odp_event = event_em2odp(pktev);
 
   63             unlikely(!is_odp_packet(odp_event))) {
 
   65                                "Invalid packet event");
 
   69         odp_packet_t odp_pkt = odp_packet_from_event(odp_event);
 
   70         uint32_t seg_len = odp_packet_seg_len(odp_pkt);
 
   77         odp_event_t odp_event = event_em2odp(pktev);
 
   80             unlikely(!is_odp_packet(odp_event))) {
 
   82                                "Invalid packet event");
 
   86         odp_packet_t odp_pkt = odp_packet_from_event(odp_event);
 
   92                 return odp_packet_data(odp_pkt);
 
   95         return odp_packet_data_seg_len(odp_pkt, size );
 
  100         odp_event_t odp_event = event_em2odp(pktev);
 
  103             unlikely(!is_odp_packet(odp_event))) {
 
  105                                "Invalid packet event");
 
  109         odp_packet_t odp_pkt = odp_packet_from_event(odp_event);
 
  110         uint32_t seg_len = odp_packet_seg_len(odp_pkt);
 
  114                 uint32_t tailroom = odp_packet_tailroom(odp_pkt);
 
  116                 if (unlikely(size == 0 || size > seg_len + tailroom)) {
 
  118                                        "Invalid packet resize:%u > max:%u",
 
  119                                        size, seg_len + tailroom);
 
  125                 tail = odp_packet_push_tail(odp_pkt, size - seg_len);
 
  127                 tail = odp_packet_pull_tail(odp_pkt, seg_len - size);
 
  132         return odp_packet_data(odp_pkt);
 
  137         odp_event_t odp_event = event_em2odp(pktev);
 
  140             unlikely(!is_odp_packet(odp_event))) {
 
  142                                "Invalid packet event");
 
  146         odp_packet_t odp_pkt = odp_packet_from_event(odp_event);
 
  148         return odp_packet_headroom(odp_pkt);
 
  153         odp_event_t odp_event = event_em2odp(pktev);
 
  156             unlikely(!is_odp_packet(odp_event))) {
 
  158                                "Invalid packet event");
 
  162         odp_packet_t odp_pkt = odp_packet_from_event(odp_event);
 
  164         return odp_packet_tailroom(odp_pkt);
 
  169         odp_event_t odp_event = event_em2odp(pktev);
 
  172             unlikely(!is_odp_packet(odp_event))) {
 
  174                                "Invalid packet event");
 
  178         odp_packet_t odp_pkt = odp_packet_from_event(odp_event);
 
  179         void *ptr = odp_packet_push_head(odp_pkt, len);
 
  183                                "packet push head failed, check len=%u", len);
 
  192         odp_event_t odp_event = event_em2odp(pktev);
 
  195             unlikely(!is_odp_packet(odp_event))) {
 
  197                                "Invalid packet event");
 
  201         odp_packet_t odp_pkt = odp_packet_from_event(odp_event);
 
  202         void *ptr = odp_packet_pull_head(odp_pkt, len);
 
  206                                "packet pull head failed, check len=%u", len);
 
  215         odp_event_t odp_event = event_em2odp(pktev);
 
  218             unlikely(!is_odp_packet(odp_event))) {
 
  220                                "Invalid packet event");
 
  224         odp_packet_t odp_pkt = odp_packet_from_event(odp_event);
 
  225         void *ptr = odp_packet_push_tail(odp_pkt, len);
 
  229                                "packet push tail failed, check len=%u", len);
 
  238         odp_event_t odp_event = event_em2odp(pktev);
 
  241             unlikely(!is_odp_packet(odp_event))) {
 
  243                                "Invalid packet event");
 
  247         odp_packet_t odp_pkt = odp_packet_from_event(odp_event);
 
  248         void *ptr = odp_packet_pull_tail(odp_pkt, len);
 
  252                                "packet pull tail failed, check len=%u", len);
 
  261         odp_event_t odp_event = event_em2odp(pktev);
 
  265                         "Invalid packet event");
 
  267         odp_packet_t odp_pkt = odp_packet_from_event(odp_event);
 
  268         odp_pool_t odp_pool = odp_packet_pool(odp_pkt);
 
  269         em_pool_t pool = pool_odp2em(odp_pool);
 
  274                         "Invalid EM pool:%" PRI_POOL "", pool);
 
  277         uint32_t pull_tail_len;
 
  280         if (size > push_head_len) {
 
  281                 reset_len = size - push_head_len;
 
  285                 pull_tail_len = push_head_len + 1 - size;
 
  288         int ret = odp_packet_reset(odp_pkt, reset_len);
 
  291                         "odp-packet reset failed:%d", ret);
 
  295                 const void *ptr = odp_packet_push_head(odp_pkt, push_head_len);
 
  299                                 "odp_packet_push_head() failed");
 
  302                 const void *ptr = odp_packet_pull_tail(odp_pkt, pull_tail_len);
 
  306                                 "odp_packet_pull_tail() failed");
 
  316         event_hdr_t *
const ev_hdr = odp_packet_user_area(odp_pkt);
 
#define INTERNAL_ERROR(error, escope, fmt,...)
 
#define RETURN_ERROR_IF(cond, error, escope, fmt,...)
 
#define EM_EVENT_GROUP_UNDEF
 
void * em_packet_pointer_and_size(em_event_t pktev, uint32_t *size)
Get the packet event data pointer as well as the packet size.
 
void * em_packet_push_head(em_event_t pktev, uint32_t len)
Push out the beginning of the packet into the headroom.
 
void * em_packet_pointer(em_event_t pktev)
 
void * em_packet_push_tail(em_event_t pktev, uint32_t len)
Push out the end of the packet into the tailroom.
 
void * em_packet_pull_tail(em_event_t pktev, uint32_t len)
 
em_status_t em_packet_reset(em_event_t pktev, uint32_t size)
 
uint32_t em_packet_headroom(em_event_t pktev)
Packet event headroom length.
 
void * em_packet_pull_head(em_event_t pktev, uint32_t len)
Pull in the beginning of the packet from the headroom.
 
uint32_t em_packet_size(em_event_t pktev)
Get the packet size.
 
void * em_packet_resize(em_event_t pktev, uint32_t size)
Resize a packet event.
 
uint32_t em_packet_tailroom(em_event_t pktev)
Packet event tailroom length.
 
ev_hdr_user_area_t user_area