numam-dpdk/lib/net/rte_net_crc.h
Bruce Richardson 99a2dd955f lib: remove librte_ prefix from directory names
There is no reason for the DPDK libraries to all have 'librte_' prefix on
the directory names. This prefix makes the directory names longer and also
makes it awkward to add features referring to individual libraries in the
build - should the lib names be specified with or without the prefix.
Therefore, we can just remove the library prefix and use the library's
unique name as the directory name, i.e. 'eal' rather than 'librte_eal'

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2021-04-21 14:04:09 +02:00

68 lines
1.3 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2017-2020 Intel Corporation
*/
#ifndef _RTE_NET_CRC_H_
#define _RTE_NET_CRC_H_
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/** CRC types */
enum rte_net_crc_type {
RTE_NET_CRC16_CCITT = 0,
RTE_NET_CRC32_ETH,
RTE_NET_CRC_REQS
};
/** CRC compute algorithm */
enum rte_net_crc_alg {
RTE_NET_CRC_SCALAR = 0,
RTE_NET_CRC_SSE42,
RTE_NET_CRC_NEON,
RTE_NET_CRC_AVX512,
};
/**
* This API set the CRC computation algorithm (i.e. scalar version,
* x86 64-bit sse4.2 intrinsic version, etc.) and internal data
* structure.
*
* @param alg
* This parameter is used to select the CRC implementation version.
* - RTE_NET_CRC_SCALAR
* - RTE_NET_CRC_SSE42 (Use 64-bit SSE4.2 intrinsic)
* - RTE_NET_CRC_NEON (Use ARM Neon intrinsic)
* - RTE_NET_CRC_AVX512 (Use 512-bit AVX intrinsic)
*/
void
rte_net_crc_set_alg(enum rte_net_crc_alg alg);
/**
* CRC compute API
*
* @param data
* Pointer to the packet data for CRC computation
* @param data_len
* Data length for CRC computation
* @param type
* CRC type (enum rte_net_crc_type)
*
* @return
* CRC value
*/
uint32_t
rte_net_crc_calc(const void *data,
uint32_t data_len,
enum rte_net_crc_type type);
#ifdef __cplusplus
}
#endif
#endif /* _RTE_NET_CRC_H_ */