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