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