1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright (c) 2020 Atomic Rules LLC
10 * ARK driver-specific API
14 #include <rte_mbuf_dyn.h>
16 #ifndef RTE_PMD_ARK_TX_USERDATA_ENABLE
17 #define RTE_PMD_ARK_TX_USERDATA_ENABLE 0
20 #ifndef RTE_PMD_ARK_RX_USERDATA_ENABLE
21 #define RTE_PMD_ARK_RX_USERDATA_ENABLE 0
24 typedef uint32_t rte_pmd_ark_tx_userdata_t;
25 typedef uint64_t rte_pmd_ark_rx_userdata_t;
27 extern int rte_pmd_ark_tx_userdata_dynfield_offset;
28 extern int rte_pmd_ark_rx_userdata_dynfield_offset;
30 /** mbuf dynamic field for custom Tx ARK data */
31 #define RTE_PMD_ARK_TX_USERDATA_DYNFIELD_NAME "rte_net_ark_dynfield_tx_userdata"
32 /** mbuf dynamic field for custom Rx ARK data */
33 #define RTE_PMD_ARK_RX_USERDATA_DYNFIELD_NAME "rte_net_ark_dynfield_rx_userdata"
37 * @b EXPERIMENTAL: this API may change without prior notice
39 * Read Tx user data from mbuf.
41 * @param mbuf Structure to read from.
45 static inline rte_pmd_ark_tx_userdata_t
46 rte_pmd_ark_mbuf_tx_userdata_get(const struct rte_mbuf *mbuf)
48 #if RTE_PMD_ARK_TX_USERDATA_ENABLE
49 return *RTE_MBUF_DYNFIELD(mbuf, rte_pmd_ark_tx_userdata_dynfield_offset,
50 rte_pmd_ark_tx_userdata_t *);
59 * @b EXPERIMENTAL: this API may change without prior notice
61 * Write Tx user data to mbuf.
63 * @param mbuf Structure to write into.
64 * @param data User data.
68 rte_pmd_ark_mbuf_tx_userdata_set(struct rte_mbuf *mbuf,
69 rte_pmd_ark_tx_userdata_t data)
71 #if RTE_PMD_ARK_TX_USERDATA_ENABLE
72 *RTE_MBUF_DYNFIELD(mbuf, rte_pmd_ark_tx_userdata_dynfield_offset,
73 rte_pmd_ark_tx_userdata_t *) = data;
82 * @b EXPERIMENTAL: this API may change without prior notice
84 * Read Rx user data from mbuf.
86 * @param mbuf Structure to read from.
90 static inline rte_pmd_ark_rx_userdata_t
91 rte_pmd_ark_mbuf_rx_userdata_get(const struct rte_mbuf *mbuf)
93 #if RTE_PMD_ARK_RX_USERDATA_ENABLE
94 return *RTE_MBUF_DYNFIELD(mbuf, rte_pmd_ark_rx_userdata_dynfield_offset,
95 rte_pmd_ark_rx_userdata_t *);
104 * @b EXPERIMENTAL: this API may change without prior notice
106 * Write Rx user data to mbuf.
108 * @param mbuf Structure to write into.
109 * @param data User data.
113 rte_pmd_ark_mbuf_rx_userdata_set(struct rte_mbuf *mbuf,
114 rte_pmd_ark_rx_userdata_t data)
116 #if RTE_PMD_ARK_RX_USERDATA_ENABLE
117 *RTE_MBUF_DYNFIELD(mbuf, rte_pmd_ark_rx_userdata_dynfield_offset,
118 rte_pmd_ark_rx_userdata_t *) = data;
125 #endif /* RTE_PMD_ARK_H */