1
2
3
4
5
6#ifndef _NGBE_OS_H_
7#define _NGBE_OS_H_
8
9#include <string.h>
10#include <stdint.h>
11#include <stdio.h>
12#include <stdarg.h>
13#include <rte_version.h>
14#include <rte_common.h>
15#include <rte_debug.h>
16#include <rte_cycles.h>
17#include <rte_log.h>
18#include <rte_byteorder.h>
19#include <rte_config.h>
20#include <rte_io.h>
21#include <rte_ether.h>
22
23#include "../ngbe_logs.h"
24
25#define RTE_LIBRTE_NGBE_TM DCPV(1, 0)
26#define TMZ_PADDR(mz) ((mz)->iova)
27#define TMZ_VADDR(mz) ((mz)->addr)
28#define TDEV_NAME(eth_dev) ((eth_dev)->device->name)
29
30#define ASSERT(x) do { \
31 if (!(x)) \
32 PMD_DRV_LOG(ERR, "NGBE: %d", x); \
33} while (0)
34
35#define ngbe_unused __rte_unused
36
37#define usec_delay(x) rte_delay_us(x)
38#define msec_delay(x) rte_delay_ms(x)
39#define usleep(x) rte_delay_us(x)
40#define msleep(x) rte_delay_ms(x)
41
42#define FALSE 0
43#define TRUE 1
44
45#ifndef false
46#define false 0
47#endif
48#ifndef true
49#define true 1
50#endif
51#define min(a, b) RTE_MIN(a, b)
52#define max(a, b) RTE_MAX(a, b)
53
54
55
56static inline void UNREFERENCED(const char *a __rte_unused, ...) {}
57#define UNREFERENCED_PARAMETER(args...) UNREFERENCED("", ##args)
58
59#define STATIC static
60
61typedef uint8_t u8;
62typedef int8_t s8;
63typedef uint16_t u16;
64typedef int16_t s16;
65typedef uint32_t u32;
66typedef int32_t s32;
67typedef uint64_t u64;
68typedef int64_t s64;
69
70
71#ifndef __le16
72#define __le16 u16
73#define __le32 u32
74#define __le64 u64
75#endif
76#ifndef __be16
77#define __be16 u16
78#define __be32 u32
79#define __be64 u64
80#endif
81
82
83#define BIT_MASK4 (0x0000000FU)
84#define BIT_MASK8 (0x000000FFU)
85#define BIT_MASK16 (0x0000FFFFU)
86#define BIT_MASK32 (0xFFFFFFFFU)
87#define BIT_MASK64 (0xFFFFFFFFFFFFFFFFUL)
88
89#ifndef cpu_to_le32
90#define cpu_to_le16(v) rte_cpu_to_le_16((u16)(v))
91#define cpu_to_le32(v) rte_cpu_to_le_32((u32)(v))
92#define cpu_to_le64(v) rte_cpu_to_le_64((u64)(v))
93#define le_to_cpu16(v) rte_le_to_cpu_16((u16)(v))
94#define le_to_cpu32(v) rte_le_to_cpu_32((u32)(v))
95#define le_to_cpu64(v) rte_le_to_cpu_64((u64)(v))
96
97#define cpu_to_be16(v) rte_cpu_to_be_16((u16)(v))
98#define cpu_to_be32(v) rte_cpu_to_be_32((u32)(v))
99#define cpu_to_be64(v) rte_cpu_to_be_64((u64)(v))
100#define be_to_cpu16(v) rte_be_to_cpu_16((u16)(v))
101#define be_to_cpu32(v) rte_be_to_cpu_32((u32)(v))
102#define be_to_cpu64(v) rte_be_to_cpu_64((u64)(v))
103
104#define le_to_be16(v) rte_bswap16((u16)(v))
105#define le_to_be32(v) rte_bswap32((u32)(v))
106#define le_to_be64(v) rte_bswap64((u64)(v))
107#define be_to_le16(v) rte_bswap16((u16)(v))
108#define be_to_le32(v) rte_bswap32((u32)(v))
109#define be_to_le64(v) rte_bswap64((u64)(v))
110
111#define npu_to_le16(v) (v)
112#define npu_to_le32(v) (v)
113#define npu_to_le64(v) (v)
114#define le_to_npu16(v) (v)
115#define le_to_npu32(v) (v)
116#define le_to_npu64(v) (v)
117
118#define npu_to_be16(v) le_to_be16((u16)(v))
119#define npu_to_be32(v) le_to_be32((u32)(v))
120#define npu_to_be64(v) le_to_be64((u64)(v))
121#define be_to_npu16(v) be_to_le16((u16)(v))
122#define be_to_npu32(v) be_to_le32((u32)(v))
123#define be_to_npu64(v) be_to_le64((u64)(v))
124#endif
125
126static inline u16 REVERT_BIT_MASK16(u16 mask)
127{
128 mask = ((mask & 0x5555) << 1) | ((mask & 0xAAAA) >> 1);
129 mask = ((mask & 0x3333) << 2) | ((mask & 0xCCCC) >> 2);
130 mask = ((mask & 0x0F0F) << 4) | ((mask & 0xF0F0) >> 4);
131 return ((mask & 0x00FF) << 8) | ((mask & 0xFF00) >> 8);
132}
133
134static inline u32 REVERT_BIT_MASK32(u32 mask)
135{
136 mask = ((mask & 0x55555555) << 1) | ((mask & 0xAAAAAAAA) >> 1);
137 mask = ((mask & 0x33333333) << 2) | ((mask & 0xCCCCCCCC) >> 2);
138 mask = ((mask & 0x0F0F0F0F) << 4) | ((mask & 0xF0F0F0F0) >> 4);
139 mask = ((mask & 0x00FF00FF) << 8) | ((mask & 0xFF00FF00) >> 8);
140 return ((mask & 0x0000FFFF) << 16) | ((mask & 0xFFFF0000) >> 16);
141}
142
143static inline u64 REVERT_BIT_MASK64(u64 mask)
144{
145 mask = ((mask & 0x5555555555555555) << 1) |
146 ((mask & 0xAAAAAAAAAAAAAAAA) >> 1);
147 mask = ((mask & 0x3333333333333333) << 2) |
148 ((mask & 0xCCCCCCCCCCCCCCCC) >> 2);
149 mask = ((mask & 0x0F0F0F0F0F0F0F0F) << 4) |
150 ((mask & 0xF0F0F0F0F0F0F0F0) >> 4);
151 mask = ((mask & 0x00FF00FF00FF00FF) << 8) |
152 ((mask & 0xFF00FF00FF00FF00) >> 8);
153 mask = ((mask & 0x0000FFFF0000FFFF) << 16) |
154 ((mask & 0xFFFF0000FFFF0000) >> 16);
155 return ((mask & 0x00000000FFFFFFFF) << 32) |
156 ((mask & 0xFFFFFFFF00000000) >> 32);
157}
158
159#define IOMEM
160
161#define prefetch(x) rte_prefetch0(x)
162
163#define ARRAY_SIZE(x) ((int32_t)RTE_DIM(x))
164
165#ifndef MAX_UDELAY_MS
166#define MAX_UDELAY_MS 5
167#endif
168
169#define ETH_ADDR_LEN 6
170#define ETH_FCS_LEN 4
171
172
173#define NGBE_IS_MULTICAST(address) \
174 rte_is_multicast_ether_addr(address)
175
176
177#define NGBE_IS_BROADCAST(address) \
178 rte_is_broadcast_ether_addr(address)
179
180#define ETH_P_8021Q 0x8100
181#define ETH_P_8021AD 0x88A8
182
183#endif
184