1*78ee8d1cSJulian Grajkowski /* SPDX-License-Identifier: BSD-3-Clause */ 2*78ee8d1cSJulian Grajkowski /* Copyright(c) 2007-2022 Intel Corporation */ 3*78ee8d1cSJulian Grajkowski /** 4*78ee8d1cSJulian Grajkowski ***************************************************************************** 5*78ee8d1cSJulian Grajkowski * @file dc_stats.c 6*78ee8d1cSJulian Grajkowski * 7*78ee8d1cSJulian Grajkowski * @ingroup Dc_DataCompression 8*78ee8d1cSJulian Grajkowski * 9*78ee8d1cSJulian Grajkowski * @description 10*78ee8d1cSJulian Grajkowski * Implementation of the Data Compression stats operations. 11*78ee8d1cSJulian Grajkowski * 12*78ee8d1cSJulian Grajkowski *****************************************************************************/ 13*78ee8d1cSJulian Grajkowski 14*78ee8d1cSJulian Grajkowski /* 15*78ee8d1cSJulian Grajkowski ******************************************************************************* 16*78ee8d1cSJulian Grajkowski * Include public/global header files 17*78ee8d1cSJulian Grajkowski ******************************************************************************* 18*78ee8d1cSJulian Grajkowski */ 19*78ee8d1cSJulian Grajkowski #include "cpa.h" 20*78ee8d1cSJulian Grajkowski #include "cpa_dc.h" 21*78ee8d1cSJulian Grajkowski #include "icp_accel_devices.h" 22*78ee8d1cSJulian Grajkowski #include "icp_adf_debug.h" 23*78ee8d1cSJulian Grajkowski /* 24*78ee8d1cSJulian Grajkowski ******************************************************************************* 25*78ee8d1cSJulian Grajkowski * Include private header files 26*78ee8d1cSJulian Grajkowski ******************************************************************************* 27*78ee8d1cSJulian Grajkowski */ 28*78ee8d1cSJulian Grajkowski #include "lac_common.h" 29*78ee8d1cSJulian Grajkowski #include "icp_accel_devices.h" 30*78ee8d1cSJulian Grajkowski #include "sal_statistics.h" 31*78ee8d1cSJulian Grajkowski #include "dc_session.h" 32*78ee8d1cSJulian Grajkowski #include "dc_datapath.h" 33*78ee8d1cSJulian Grajkowski #include "lac_mem_pools.h" 34*78ee8d1cSJulian Grajkowski #include "sal_service_state.h" 35*78ee8d1cSJulian Grajkowski #include "sal_types_compression.h" 36*78ee8d1cSJulian Grajkowski #include "dc_stats.h" 37*78ee8d1cSJulian Grajkowski 38*78ee8d1cSJulian Grajkowski CpaStatus dcStatsInit(sal_compression_service_t * pService)39*78ee8d1cSJulian GrajkowskidcStatsInit(sal_compression_service_t *pService) 40*78ee8d1cSJulian Grajkowski { 41*78ee8d1cSJulian Grajkowski CpaStatus status = CPA_STATUS_SUCCESS; 42*78ee8d1cSJulian Grajkowski 43*78ee8d1cSJulian Grajkowski pService->pCompStatsArr = 44*78ee8d1cSJulian Grajkowski LAC_OS_MALLOC(COMPRESSION_NUM_STATS * sizeof(QatUtilsAtomic)); 45*78ee8d1cSJulian Grajkowski 46*78ee8d1cSJulian Grajkowski if (pService->pCompStatsArr == NULL) { 47*78ee8d1cSJulian Grajkowski status = CPA_STATUS_RESOURCE; 48*78ee8d1cSJulian Grajkowski } 49*78ee8d1cSJulian Grajkowski 50*78ee8d1cSJulian Grajkowski if (CPA_STATUS_SUCCESS == status) { 51*78ee8d1cSJulian Grajkowski COMPRESSION_STATS_RESET(pService); 52*78ee8d1cSJulian Grajkowski } 53*78ee8d1cSJulian Grajkowski 54*78ee8d1cSJulian Grajkowski return status; 55*78ee8d1cSJulian Grajkowski } 56*78ee8d1cSJulian Grajkowski 57*78ee8d1cSJulian Grajkowski void dcStatsFree(sal_compression_service_t * pService)58*78ee8d1cSJulian GrajkowskidcStatsFree(sal_compression_service_t *pService) 59*78ee8d1cSJulian Grajkowski { 60*78ee8d1cSJulian Grajkowski if (NULL != pService->pCompStatsArr) { 61*78ee8d1cSJulian Grajkowski LAC_OS_FREE(pService->pCompStatsArr); 62*78ee8d1cSJulian Grajkowski } 63*78ee8d1cSJulian Grajkowski } 64*78ee8d1cSJulian Grajkowski 65*78ee8d1cSJulian Grajkowski CpaStatus cpaDcGetStats(CpaInstanceHandle dcInstance,CpaDcStats * pStatistics)66*78ee8d1cSJulian GrajkowskicpaDcGetStats(CpaInstanceHandle dcInstance, CpaDcStats *pStatistics) 67*78ee8d1cSJulian Grajkowski { 68*78ee8d1cSJulian Grajkowski sal_compression_service_t *pService = NULL; 69*78ee8d1cSJulian Grajkowski CpaInstanceHandle insHandle = NULL; 70*78ee8d1cSJulian Grajkowski 71*78ee8d1cSJulian Grajkowski if (CPA_INSTANCE_HANDLE_SINGLE == dcInstance) { 72*78ee8d1cSJulian Grajkowski insHandle = dcGetFirstHandle(); 73*78ee8d1cSJulian Grajkowski } else { 74*78ee8d1cSJulian Grajkowski insHandle = dcInstance; 75*78ee8d1cSJulian Grajkowski } 76*78ee8d1cSJulian Grajkowski 77*78ee8d1cSJulian Grajkowski pService = (sal_compression_service_t *)insHandle; 78*78ee8d1cSJulian Grajkowski 79*78ee8d1cSJulian Grajkowski LAC_CHECK_NULL_PARAM(insHandle); 80*78ee8d1cSJulian Grajkowski LAC_CHECK_NULL_PARAM(pStatistics); 81*78ee8d1cSJulian Grajkowski SAL_RUNNING_CHECK(insHandle); 82*78ee8d1cSJulian Grajkowski 83*78ee8d1cSJulian Grajkowski SAL_CHECK_INSTANCE_TYPE(insHandle, SAL_SERVICE_TYPE_COMPRESSION); 84*78ee8d1cSJulian Grajkowski 85*78ee8d1cSJulian Grajkowski /* Retrieves the statistics for compression */ 86*78ee8d1cSJulian Grajkowski COMPRESSION_STATS_GET(pStatistics, pService); 87*78ee8d1cSJulian Grajkowski 88*78ee8d1cSJulian Grajkowski return CPA_STATUS_SUCCESS; 89*78ee8d1cSJulian Grajkowski } 90