1/* SPDX-License-Identifier: BSD-3-Clause */ 2/* Copyright(c) 2007-2022 Intel Corporation */ 3 4/** 5 *************************************************************************** 6 * @file lac_sym_stats.c Implementation of symmetric stats 7 * 8 * @ingroup LacSym 9 * 10 ***************************************************************************/ 11 12/* 13******************************************************************************* 14* Include public/global header files 15******************************************************************************* 16*/ 17#include "cpa.h" 18#include "cpa_cy_sym.h" 19 20/* 21******************************************************************************* 22* Include private header files 23******************************************************************************* 24*/ 25#include "lac_mem_pools.h" 26#include "icp_adf_transport.h" 27#include "icp_accel_devices.h" 28#include "icp_adf_debug.h" 29#include "icp_qat_fw_la.h" 30#include "lac_sym_qat.h" 31#include "lac_sym_stats.h" 32#include "lac_sal_types_crypto.h" 33#include "sal_statistics.h" 34 35/* Number of Symmetric Crypto statistics */ 36#define LAC_SYM_NUM_STATS (sizeof(CpaCySymStats64) / sizeof(Cpa64U)) 37 38CpaStatus 39LacSym_StatsInit(CpaInstanceHandle instanceHandle) 40{ 41 CpaStatus status = CPA_STATUS_SUCCESS; 42 sal_crypto_service_t *pService = (sal_crypto_service_t *)instanceHandle; 43 44 pService->pLacSymStatsArr = 45 LAC_OS_MALLOC(LAC_SYM_NUM_STATS * sizeof(QatUtilsAtomic)); 46 47 if (NULL != pService->pLacSymStatsArr) { 48 LAC_OS_BZERO((void *)LAC_CONST_VOLATILE_PTR_CAST( 49 pService->pLacSymStatsArr), 50 LAC_SYM_NUM_STATS * sizeof(QatUtilsAtomic)); 51 } else { 52 status = CPA_STATUS_RESOURCE; 53 } 54 return status; 55} 56 57void 58LacSym_StatsFree(CpaInstanceHandle instanceHandle) 59{ 60 sal_crypto_service_t *pService = (sal_crypto_service_t *)instanceHandle; 61 if (NULL != pService->pLacSymStatsArr) { 62 LAC_OS_FREE(pService->pLacSymStatsArr); 63 } 64} 65 66void 67LacSym_StatsInc(Cpa32U offset, CpaInstanceHandle instanceHandle) 68{ 69 sal_crypto_service_t *pService = (sal_crypto_service_t *)instanceHandle; 70 if (CPA_TRUE == 71 pService->generic_service_info.stats->bSymStatsEnabled) { 72 qatUtilsAtomicInc( 73 &pService->pLacSymStatsArr[offset / sizeof(Cpa64U)]); 74 } 75} 76 77void 78LacSym_Stats32CopyGet(CpaInstanceHandle instanceHandle, 79 struct _CpaCySymStats *const pSymStats) 80{ 81 int i = 0; 82 sal_crypto_service_t *pService = (sal_crypto_service_t *)instanceHandle; 83 84 for (i = 0; i < LAC_SYM_NUM_STATS; i++) { 85 ((Cpa32U *)pSymStats)[i] = 86 (Cpa32U)qatUtilsAtomicGet(&pService->pLacSymStatsArr[i]); 87 } 88} 89 90void 91LacSym_Stats64CopyGet(CpaInstanceHandle instanceHandle, 92 CpaCySymStats64 *const pSymStats) 93{ 94 int i = 0; 95 sal_crypto_service_t *pService = (sal_crypto_service_t *)instanceHandle; 96 97 for (i = 0; i < LAC_SYM_NUM_STATS; i++) { 98 ((Cpa64U *)pSymStats)[i] = 99 qatUtilsAtomicGet(&pService->pLacSymStatsArr[i]); 100 } 101} 102 103void 104LacSym_StatsShow(CpaInstanceHandle instanceHandle) 105{ 106 CpaCySymStats64 symStats = { 0 }; 107 108 LacSym_Stats64CopyGet(instanceHandle, &symStats); 109 110 QAT_UTILS_LOG(SEPARATOR BORDER 111 " Symmetric Stats " BORDER 112 "\n" SEPARATOR); 113 114 /* Session Info */ 115 QAT_UTILS_LOG(BORDER " Sessions Initialized: %16llu " BORDER 116 "\n" BORDER 117 " Sessions Removed: %16llu " BORDER 118 "\n" BORDER 119 " Session Errors: %16llu " BORDER 120 "\n" SEPARATOR, 121 (unsigned long long)symStats.numSessionsInitialized, 122 (unsigned long long)symStats.numSessionsRemoved, 123 (unsigned long long)symStats.numSessionErrors); 124 125 /* Session info */ 126 QAT_UTILS_LOG( 127 BORDER " Symmetric Requests: %16llu " BORDER "\n" BORDER 128 " Symmetric Request Errors: %16llu " BORDER "\n" BORDER 129 " Symmetric Completed: %16llu " BORDER "\n" BORDER 130 " Symmetric Completed Errors: %16llu " BORDER "\n" BORDER 131 " Symmetric Verify Failures: %16llu " BORDER 132 "\n" SEPARATOR, 133 (unsigned long long)symStats.numSymOpRequests, 134 (unsigned long long)symStats.numSymOpRequestErrors, 135 (unsigned long long)symStats.numSymOpCompleted, 136 (unsigned long long)symStats.numSymOpCompletedErrors, 137 (unsigned long long)symStats.numSymOpVerifyFailures); 138} 139