1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright(c) 2007-2022 Intel Corporation */
3 /**
4  *****************************************************************************
5  * @file dc_stats.h
6  *
7  * @ingroup Dc_DataCompression
8  *
9  * @description
10  *      Definition of the Data Compression stats parameters.
11  *
12  *****************************************************************************/
13 #ifndef DC_STATS_H_
14 #define DC_STATS_H_
15 
16 /* Number of Compression statistics */
17 #define COMPRESSION_NUM_STATS (sizeof(CpaDcStats) / sizeof(Cpa64U))
18 
19 #define COMPRESSION_STAT_INC(statistic, pService)                              \
20 	do {                                                                   \
21 		if (CPA_TRUE ==                                                \
22 		    pService->generic_service_info.stats->bDcStatsEnabled) {   \
23 			qatUtilsAtomicInc(                                     \
24 			    &pService->pCompStatsArr[offsetof(CpaDcStats,      \
25 							      statistic) /     \
26 						     sizeof(Cpa64U)]);         \
27 		}                                                              \
28 	} while (0)
29 
30 /* Macro to get all Compression stats (from internal array of atomics) */
31 #define COMPRESSION_STATS_GET(compStats, pService)                             \
32 	do {                                                                   \
33 		int i;                                                         \
34 		for (i = 0; i < COMPRESSION_NUM_STATS; i++) {                  \
35 			((Cpa64U *)compStats)[i] =                             \
36 			    qatUtilsAtomicGet(&pService->pCompStatsArr[i]);    \
37 		}                                                              \
38 	} while (0)
39 
40 /* Macro to reset all Compression stats */
41 #define COMPRESSION_STATS_RESET(pService)                                      \
42 	do {                                                                   \
43 		int i;                                                         \
44 		for (i = 0; i < COMPRESSION_NUM_STATS; i++) {                  \
45 			qatUtilsAtomicSet(0, &pService->pCompStatsArr[i]);     \
46 		}                                                              \
47 	} while (0)
48 
49 /**
50 *******************************************************************************
51 * @ingroup Dc_DataCompression
52 *      Initialises the compression stats
53 *
54 * @description
55 *      This function allocates and initialises the stats array to 0
56 *
57 * @param[in] pService          Pointer to a compression service structure
58 *
59 * @retval CPA_STATUS_SUCCESS   initialisation successful
60 * @retval CPA_STATUS_RESOURCE  array allocation failed
61 *
62 *****************************************************************************/
63 CpaStatus dcStatsInit(sal_compression_service_t *pService);
64 
65 /**
66 *******************************************************************************
67 * @ingroup Dc_DataCompression
68 *      Frees the compression stats
69 *
70 * @description
71 *      This function frees the stats array
72 *
73 * @param[in] pService          Pointer to a compression service structure
74 *
75 * @retval None
76 *
77 *****************************************************************************/
78 void dcStatsFree(sal_compression_service_t *pService);
79 
80 #endif /* DC_STATS_H_ */
81