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);