Branch data Line data Source code
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 <stdalign.h>
9 : :
10 : : #include <rte_common.h>
11 : : #include <rte_log.h>
12 : : #include <rte_mbuf.h>
13 : : #include <rte_mbuf_dyn.h>
14 : :
15 : : extern int rte_node_logtype;
16 : : #define RTE_LOGTYPE_NODE rte_node_logtype
17 : :
18 : : #define NODE_LOG(level, node_name, ...) \
19 : : RTE_LOG_LINE(level, NODE, \
20 : : RTE_FMT("%s: %s():%u " RTE_FMT_HEAD(__VA_ARGS__ ,), \
21 : : node_name, __func__, __LINE__, \
22 : : RTE_FMT_TAIL(__VA_ARGS__ ,)))
23 : :
24 : : #define node_err(node_name, ...) NODE_LOG(ERR, node_name, __VA_ARGS__)
25 : : #define node_info(node_name, ...) NODE_LOG(INFO, node_name, __VA_ARGS__)
26 : : #define node_dbg(node_name, ...) NODE_LOG(DEBUG, node_name, __VA_ARGS__)
27 : :
28 : : /**
29 : : * Node mbuf private data to store next hop, ttl and checksum.
30 : : */
31 : : struct node_mbuf_priv1 {
32 : : union {
33 : : /* IP4/IP6 rewrite */
34 : : struct {
35 : : uint16_t nh;
36 : : uint16_t ttl;
37 : : uint32_t cksum;
38 : : };
39 : :
40 : : uint64_t u;
41 : : };
42 : : };
43 : :
44 : : static const struct rte_mbuf_dynfield node_mbuf_priv1_dynfield_desc = {
45 : : .name = "rte_node_dynfield_priv1",
46 : : .size = sizeof(struct node_mbuf_priv1),
47 : : .align = alignof(struct node_mbuf_priv1),
48 : : };
49 : : extern int node_mbuf_priv1_dynfield_offset;
50 : :
51 : : /**
52 : : * Node mbuf private area 2.
53 : : */
54 : : struct node_mbuf_priv2 {
55 : : uint64_t priv_data;
56 : : } __rte_cache_aligned;
57 : :
58 : : #define NODE_MBUF_PRIV2_SIZE sizeof(struct node_mbuf_priv2)
59 : :
60 : : #define OBJS_PER_CLINE (RTE_CACHE_LINE_SIZE / sizeof(void *))
61 : :
62 : : /**
63 : : * Get mbuf_priv1 pointer from rte_mbuf.
64 : : *
65 : : * @param
66 : : * Pointer to the rte_mbuf.
67 : : *
68 : : * @return
69 : : * Pointer to the mbuf_priv1.
70 : : */
71 : : static __rte_always_inline struct node_mbuf_priv1 *
72 : : node_mbuf_priv1(struct rte_mbuf *m, const int offset)
73 : : {
74 [ # # # # : 0 : return RTE_MBUF_DYNFIELD(m, offset, struct node_mbuf_priv1 *);
# # # # ]
75 : : }
76 : :
77 : : /**
78 : : * Get mbuf_priv2 pointer from rte_mbuf.
79 : : *
80 : : * @param
81 : : * Pointer to the rte_mbuf.
82 : : *
83 : : * @return
84 : : * Pointer to the mbuf_priv2.
85 : : */
86 : : static __rte_always_inline struct node_mbuf_priv2 *
87 : : node_mbuf_priv2(struct rte_mbuf *m)
88 : : {
89 : : return (struct node_mbuf_priv2 *)rte_mbuf_to_priv(m);
90 : : }
91 : :
92 : : #endif /* __NODE_PRIVATE_H__ */
|