DPDK
25.11.0
Toggle main menu visibility
Loading...
Searching...
No Matches
rte_hash_crc.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: BSD-3-Clause
2
* Copyright(c) 2010-2014 Intel Corporation
3
*/
4
5
#ifndef _RTE_HASH_CRC_H_
6
#define _RTE_HASH_CRC_H_
7
13
14
#include <stdint.h>
15
16
#include <
rte_branch_prediction.h
>
17
#include <
rte_common.h
>
18
#include <rte_config.h>
19
20
#include "rte_crc_sw.h"
21
22
#define CRC32_SW (1U << 0)
23
#define CRC32_SSE42 (1U << 1)
24
#define CRC32_x64 (1U << 2)
25
#define CRC32_SSE42_x64 (CRC32_x64|CRC32_SSE42)
26
#define CRC32_ARM64 (1U << 3)
27
28
extern
uint8_t rte_hash_crc32_alg;
29
30
#if defined(RTE_ARCH_ARM64) && defined(__ARM_FEATURE_CRC32)
31
#include "rte_crc_arm64.h"
32
#elif defined(RTE_ARCH_X86)
33
#include "rte_crc_x86.h"
34
#else
35
#include "rte_crc_generic.h"
36
#endif
37
38
#ifdef __cplusplus
39
extern
"C"
{
40
#endif
41
53
void
54
rte_hash_crc_set_alg
(uint8_t alg);
55
56
#ifdef __DOXYGEN__
57
68
static
inline
uint32_t
69
rte_hash_crc_1byte
(uint8_t data, uint32_t init_val);
70
81
static
inline
uint32_t
82
rte_hash_crc_2byte
(uint16_t data, uint32_t init_val);
83
94
static
inline
uint32_t
95
rte_hash_crc_4byte
(uint32_t data, uint32_t init_val);
96
107
static
inline
uint32_t
108
rte_hash_crc_8byte
(uint64_t data, uint32_t init_val);
109
110
#endif
/* __DOXYGEN__ */
111
124
static
inline
uint32_t
125
rte_hash_crc
(
const
void
*data, uint32_t data_len, uint32_t init_val)
126
{
127
unsigned
i;
128
uintptr_t pd = (uintptr_t) data;
129
130
for
(i = 0; i < data_len / 8; i++) {
131
init_val =
rte_hash_crc_8byte
(*(
const
uint64_t *)pd, init_val);
132
pd += 8;
133
}
134
135
if
(data_len & 0x4) {
136
init_val =
rte_hash_crc_4byte
(*(
const
uint32_t *)pd, init_val);
137
pd += 4;
138
}
139
140
if
(data_len & 0x2) {
141
init_val =
rte_hash_crc_2byte
(*(
const
uint16_t *)pd, init_val);
142
pd += 2;
143
}
144
145
if
(data_len & 0x1)
146
init_val =
rte_hash_crc_1byte
(*(
const
uint8_t *)pd, init_val);
147
148
return
init_val;
149
}
150
151
#ifdef __cplusplus
152
}
153
#endif
154
155
#endif
/* _RTE_HASH_CRC_H_ */
rte_branch_prediction.h
rte_common.h
rte_hash_crc_4byte
static uint32_t rte_hash_crc_4byte(uint32_t data, uint32_t init_val)
rte_hash_crc_1byte
static uint32_t rte_hash_crc_1byte(uint8_t data, uint32_t init_val)
rte_hash_crc_set_alg
void rte_hash_crc_set_alg(uint8_t alg)
rte_hash_crc
static uint32_t rte_hash_crc(const void *data, uint32_t data_len, uint32_t init_val)
Definition
rte_hash_crc.h:125
rte_hash_crc_2byte
static uint32_t rte_hash_crc_2byte(uint16_t data, uint32_t init_val)
rte_hash_crc_8byte
static uint32_t rte_hash_crc_8byte(uint64_t data, uint32_t init_val)
lib
hash
rte_hash_crc.h
Generated by
1.17.0