common/mlx5: fix user mode register access command
[dpdk.git] / lib / librte_node / node_private.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2020 Marvell International Ltd.
3  */
4
5 #ifndef __NODE_PRIVATE_H__
6 #define __NODE_PRIVATE_H__
7
8 #include <rte_common.h>
9 #include <rte_log.h>
10 #include <rte_mbuf.h>
11
12 extern int rte_node_logtype;
13 #define NODE_LOG(level, node_name, ...)                                        \
14         rte_log(RTE_LOG_##level, rte_node_logtype,                             \
15                 RTE_FMT("NODE %s: %s():%u " RTE_FMT_HEAD(__VA_ARGS__, ) "\n",  \
16                         node_name, __func__, __LINE__,                         \
17                         RTE_FMT_TAIL(__VA_ARGS__, )))
18
19 #define node_err(node_name, ...) NODE_LOG(ERR, node_name, __VA_ARGS__)
20 #define node_info(node_name, ...) NODE_LOG(INFO, node_name, __VA_ARGS__)
21 #define node_dbg(node_name, ...) NODE_LOG(DEBUG, node_name, __VA_ARGS__)
22
23 /**
24  *
25  * Node mbuf private data to store next hop, ttl and checksum.
26  */
27 struct node_mbuf_priv1 {
28         union {
29                 /* IP4 rewrite */
30                 struct {
31                         uint16_t nh;
32                         uint16_t ttl;
33                         uint32_t cksum;
34                 };
35
36                 uint64_t u;
37         };
38 };
39
40 /**
41  * Node mbuf private area 2.
42  */
43 struct node_mbuf_priv2 {
44         uint64_t priv_data;
45 } __rte_cache_aligned;
46
47 #define NODE_MBUF_PRIV2_SIZE sizeof(struct node_mbuf_priv2)
48
49 #define OBJS_PER_CLINE (RTE_CACHE_LINE_SIZE / sizeof(void *))
50
51 /**
52  * Get mbuf_priv1 pointer from rte_mbuf.
53  *
54  * @param
55  *   Pointer to the rte_mbuf.
56  *
57  * @return
58  *   Pointer to the mbuf_priv1.
59  */
60 static __rte_always_inline struct node_mbuf_priv1 *
61 node_mbuf_priv1(struct rte_mbuf *m)
62 {
63         return (struct node_mbuf_priv1 *)&m->udata64;
64 }
65
66 /**
67  * Get mbuf_priv2 pointer from rte_mbuf.
68  *
69  * @param
70  *   Pointer to the rte_mbuf.
71  *
72  * @return
73  *   Pointer to the mbuf_priv2.
74  */
75 static __rte_always_inline struct node_mbuf_priv2 *
76 node_mbuf_priv2(struct rte_mbuf *m)
77 {
78         return (struct node_mbuf_priv2 *)rte_mbuf_to_priv(m);
79 }
80
81 #endif /* __NODE_PRIVATE_H__ */