aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-dpdk/include/odp_packet_io_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'platform/linux-dpdk/include/odp_packet_io_internal.h')
-rw-r--r--platform/linux-dpdk/include/odp_packet_io_internal.h24
1 files changed, 22 insertions, 2 deletions
diff --git a/platform/linux-dpdk/include/odp_packet_io_internal.h b/platform/linux-dpdk/include/odp_packet_io_internal.h
index 59410eef6..91f8350a8 100644
--- a/platform/linux-dpdk/include/odp_packet_io_internal.h
+++ b/platform/linux-dpdk/include/odp_packet_io_internal.h
@@ -111,14 +111,13 @@ struct pktio_entry {
classifier_t cls; /**< classifier linked with this pktio*/
/* Driver level statistics counters */
odp_pktio_stats_t stats;
- /* Statistics counters used outside drivers */
+ /* Statistics counters used also outside drivers */
struct {
odp_atomic_u64_t in_discards;
odp_atomic_u64_t out_discards;
} stats_extra;
/* Latest Tx timestamp */
odp_atomic_u64_t tx_ts;
- odp_proto_chksums_t in_chksums; /**< Checksums validation settings */
char name[PKTIO_NAME_LEN]; /**< name of pktio provided to
internal pktio_open() calls */
char full_name[PKTIO_NAME_LEN]; /**< original pktio name passed to
@@ -333,6 +332,27 @@ int _odp_lso_create_packets(odp_packet_t packet, const odp_packet_lso_opt_t *lso
void _odp_pktio_allocate_and_send_tx_compl_events(const pktio_entry_t *entry,
const odp_packet_t packets[], int num);
+static inline int _odp_pktio_packet_to_pool(odp_packet_t *pkt,
+ odp_packet_hdr_t **pkt_hdr,
+ odp_pool_t new_pool)
+{
+ odp_packet_t new_pkt;
+
+ if (odp_likely(new_pool == odp_packet_pool(*pkt)))
+ return 0;
+
+ new_pkt = odp_packet_copy(*pkt, new_pool);
+
+ if (odp_unlikely(new_pkt == ODP_PACKET_INVALID))
+ return 1;
+
+ odp_packet_free(*pkt);
+ *pkt = new_pkt;
+ *pkt_hdr = packet_hdr(new_pkt);
+
+ return 0;
+}
+
#ifdef __cplusplus
}
#endif