178ee8d1cSJulian Grajkowski /* SPDX-License-Identifier: BSD-3-Clause */ 278ee8d1cSJulian Grajkowski /* Copyright(c) 2007-2022 Intel Corporation */ 378ee8d1cSJulian Grajkowski /** 478ee8d1cSJulian Grajkowski ***************************************************************************** 578ee8d1cSJulian Grajkowski * @file lac_sal.h 678ee8d1cSJulian Grajkowski * 778ee8d1cSJulian Grajkowski * @defgroup SalCtrl Service Access Layer Controller 878ee8d1cSJulian Grajkowski * 978ee8d1cSJulian Grajkowski * @ingroup SalCtrl 1078ee8d1cSJulian Grajkowski * 1178ee8d1cSJulian Grajkowski * @description 1278ee8d1cSJulian Grajkowski * These functions are the functions to be executed for each state 1378ee8d1cSJulian Grajkowski * of the state machine for each service. 1478ee8d1cSJulian Grajkowski * 1578ee8d1cSJulian Grajkowski *****************************************************************************/ 1678ee8d1cSJulian Grajkowski 1778ee8d1cSJulian Grajkowski #ifndef LAC_SAL_H 1878ee8d1cSJulian Grajkowski #define LAC_SAL_H 1978ee8d1cSJulian Grajkowski 2078ee8d1cSJulian Grajkowski #include "cpa_cy_im.h" 2178ee8d1cSJulian Grajkowski 2278ee8d1cSJulian Grajkowski /** 2378ee8d1cSJulian Grajkowski ******************************************************************************* 2478ee8d1cSJulian Grajkowski * @ingroup SalCtrl 2578ee8d1cSJulian Grajkowski * @description 2678ee8d1cSJulian Grajkowski * This function allocates memory for a specific instance type. 2778ee8d1cSJulian Grajkowski * Zeros this memory and sets the generic service section of 2878ee8d1cSJulian Grajkowski * the instance memory. 2978ee8d1cSJulian Grajkowski * 3078ee8d1cSJulian Grajkowski * @context 3178ee8d1cSJulian Grajkowski * This function is called from the generic services init. 3278ee8d1cSJulian Grajkowski * 3378ee8d1cSJulian Grajkowski * @assumptions 3478ee8d1cSJulian Grajkowski * None 3578ee8d1cSJulian Grajkowski * @sideEffects 3678ee8d1cSJulian Grajkowski * None 3778ee8d1cSJulian Grajkowski * @reentrant 3878ee8d1cSJulian Grajkowski * No 3978ee8d1cSJulian Grajkowski * @threadSafe 4078ee8d1cSJulian Grajkowski * Yes 4178ee8d1cSJulian Grajkowski * 4278ee8d1cSJulian Grajkowski * @param[in] service The type of the service to be created 4378ee8d1cSJulian Grajkowski * (e.g. CRYPTO) 4478ee8d1cSJulian Grajkowski * @param[in] instance_num The logical instance number which will 4578ee8d1cSJulian Grajkowski * run the service 4678ee8d1cSJulian Grajkowski * @param[out] pObj Pointer to specific service instance memory 4778ee8d1cSJulian Grajkowski * @retVal CPA_STATUS_SUCCESS Instance memory successfully allocated 4878ee8d1cSJulian Grajkowski * @retVal CPA_STATUS_RESOURCE Instance memory not successfully allocated 4978ee8d1cSJulian Grajkowski * @retVal CPA_STATUS_FAIL Unsupported service type 5078ee8d1cSJulian Grajkowski * 5178ee8d1cSJulian Grajkowski *****************************************************************************/ 5278ee8d1cSJulian Grajkowski CpaStatus SalCtrl_ServiceCreate(sal_service_type_t service, 5378ee8d1cSJulian Grajkowski Cpa32U instance_num, 5478ee8d1cSJulian Grajkowski sal_service_t **pObj); 5578ee8d1cSJulian Grajkowski 56*a977168cSMichal Gulbicki /****************************************************************************** 5778ee8d1cSJulian Grajkowski * @ingroup SalCtl 5878ee8d1cSJulian Grajkowski * @description 5978ee8d1cSJulian Grajkowski * This macro goes through the 'list' passed in as a parameter. For each 6078ee8d1cSJulian Grajkowski * element found in the list, it peforms a cast to the type of the element 6178ee8d1cSJulian Grajkowski * given by the 'type' parameter. Finally, it calls the function given by 6278ee8d1cSJulian Grajkowski * the 'function' parameter, passing itself and the device as parameters. 6378ee8d1cSJulian Grajkowski * 6478ee8d1cSJulian Grajkowski * In case of error (i.e. 'function' does not return _SUCCESS or _RETRY) 6578ee8d1cSJulian Grajkowski * processing of the 'list' elements will stop and the status_ret will be 6678ee8d1cSJulian Grajkowski * updated. 6778ee8d1cSJulian Grajkowski * 6878ee8d1cSJulian Grajkowski * In case of _RETRY status_ret will be updated but the 'list' 6978ee8d1cSJulian Grajkowski * will continue to be processed. _RETRY is only expected when 7078ee8d1cSJulian Grajkowski * 'function' is stop. 7178ee8d1cSJulian Grajkowski * 7278ee8d1cSJulian Grajkowski * @context 7378ee8d1cSJulian Grajkowski * This macro is used by both the service and qat event handlers. 7478ee8d1cSJulian Grajkowski * 7578ee8d1cSJulian Grajkowski * @assumptions 7678ee8d1cSJulian Grajkowski * None 7778ee8d1cSJulian Grajkowski * @sideEffects 7878ee8d1cSJulian Grajkowski * None 7978ee8d1cSJulian Grajkowski * 8078ee8d1cSJulian Grajkowski * @param[in] list The list of services or qats as a type of list_t 8178ee8d1cSJulian Grajkowski * @param[in] type It identifies the type of the object inside the 8278ee8d1cSJulian Grajkowski * list: service or qat 8378ee8d1cSJulian Grajkowski * @param[in] device The ADF accelerator handle for the device 8478ee8d1cSJulian Grajkowski * @param[in] function The function pointer to call 85b197d4b8SGordon Bergling * @param[in/out] status_ret If an error occurred (i.e. status returned from 8678ee8d1cSJulian Grajkowski * function is not _SUCCESS) then status_ret is 8778ee8d1cSJulian Grajkowski * overwritten with status returned from function. 8878ee8d1cSJulian Grajkowski * 8978ee8d1cSJulian Grajkowski *****************************************************************************/ 9078ee8d1cSJulian Grajkowski #define SAL_FOR_EACH(list, type, device, function, status_ret) \ 9178ee8d1cSJulian Grajkowski do { \ 9278ee8d1cSJulian Grajkowski sal_list_t *curr_element = list; \ 9378ee8d1cSJulian Grajkowski CpaStatus status_temp = CPA_STATUS_SUCCESS; \ 9478ee8d1cSJulian Grajkowski typeof(type) *process = NULL; \ 9578ee8d1cSJulian Grajkowski while (NULL != curr_element) { \ 9678ee8d1cSJulian Grajkowski process = \ 9778ee8d1cSJulian Grajkowski (typeof(type) *)SalList_getObject(curr_element); \ 9878ee8d1cSJulian Grajkowski status_temp = process->function(device, process); \ 9978ee8d1cSJulian Grajkowski if ((CPA_STATUS_SUCCESS != status_temp) && \ 10078ee8d1cSJulian Grajkowski (CPA_STATUS_RETRY != status_temp)) { \ 10178ee8d1cSJulian Grajkowski status_ret = status_temp; \ 10278ee8d1cSJulian Grajkowski break; \ 10378ee8d1cSJulian Grajkowski } else { \ 10478ee8d1cSJulian Grajkowski if (CPA_STATUS_RETRY == status_temp) { \ 10578ee8d1cSJulian Grajkowski status_ret = status_temp; \ 10678ee8d1cSJulian Grajkowski } \ 10778ee8d1cSJulian Grajkowski } \ 10878ee8d1cSJulian Grajkowski curr_element = SalList_next(curr_element); \ 10978ee8d1cSJulian Grajkowski } \ 11078ee8d1cSJulian Grajkowski } while (0) 11178ee8d1cSJulian Grajkowski 11278ee8d1cSJulian Grajkowski /** 11378ee8d1cSJulian Grajkowski ******************************************************************************* 11478ee8d1cSJulian Grajkowski * @ingroup SalCtl 11578ee8d1cSJulian Grajkowski * @description 11678ee8d1cSJulian Grajkowski * This macro goes through the 'list' passed in as a parameter. For each 11778ee8d1cSJulian Grajkowski * element found in the list, it peforms a cast to the type of the element 11878ee8d1cSJulian Grajkowski * given by the 'type' parameter. Finally, it checks the state of the 11978ee8d1cSJulian Grajkowski * element and if it is in state 'state_check' then it calls the 12078ee8d1cSJulian Grajkowski * function given by the 'function' parameter, passing itself 12178ee8d1cSJulian Grajkowski * and the device as parameters. 12278ee8d1cSJulian Grajkowski * If the element is not in 'state_check' it returns from the macro. 12378ee8d1cSJulian Grajkowski * 12478ee8d1cSJulian Grajkowski * In case of error (i.e. 'function' does not return _SUCCESS) 12578ee8d1cSJulian Grajkowski * processing of the 'list' elements will continue. 12678ee8d1cSJulian Grajkowski * 12778ee8d1cSJulian Grajkowski * @context 12878ee8d1cSJulian Grajkowski * This macro is used by both the service and qat event handlers. 12978ee8d1cSJulian Grajkowski * 13078ee8d1cSJulian Grajkowski * @assumptions 13178ee8d1cSJulian Grajkowski * None 13278ee8d1cSJulian Grajkowski * @sideEffects 13378ee8d1cSJulian Grajkowski * None 13478ee8d1cSJulian Grajkowski * 13578ee8d1cSJulian Grajkowski * @param[in] list The list of services or qats as a type of list_t 13678ee8d1cSJulian Grajkowski * @param[in] type It identifies the type of the object 13778ee8d1cSJulian Grajkowski * inside the list: service or qat 13878ee8d1cSJulian Grajkowski * @param[in] device The ADF accelerator handle for the device 13978ee8d1cSJulian Grajkowski * @param[in] function The function pointer to call 14078ee8d1cSJulian Grajkowski * @param[in] state_check The state to check for 14178ee8d1cSJulian Grajkowski * 14278ee8d1cSJulian Grajkowski *****************************************************************************/ 14378ee8d1cSJulian Grajkowski #define SAL_FOR_EACH_STATE(list, type, device, function, state_check) \ 14478ee8d1cSJulian Grajkowski do { \ 14578ee8d1cSJulian Grajkowski sal_list_t *curr_element = list; \ 14678ee8d1cSJulian Grajkowski typeof(type) *process = NULL; \ 14778ee8d1cSJulian Grajkowski while (NULL != curr_element) { \ 14878ee8d1cSJulian Grajkowski process = \ 14978ee8d1cSJulian Grajkowski (typeof(type) *)SalList_getObject(curr_element); \ 15078ee8d1cSJulian Grajkowski if (process->state == state_check) { \ 15178ee8d1cSJulian Grajkowski process->function(device, process); \ 15278ee8d1cSJulian Grajkowski } else { \ 15378ee8d1cSJulian Grajkowski break; \ 15478ee8d1cSJulian Grajkowski } \ 15578ee8d1cSJulian Grajkowski curr_element = SalList_next(curr_element); \ 15678ee8d1cSJulian Grajkowski } \ 15778ee8d1cSJulian Grajkowski } while (0) 15878ee8d1cSJulian Grajkowski 15978ee8d1cSJulian Grajkowski /************************************************************************* 16078ee8d1cSJulian Grajkowski * @ingroup SalCtrl 16178ee8d1cSJulian Grajkowski * @description 16278ee8d1cSJulian Grajkowski * This function is used to initialize an instance of crypto service. 16378ee8d1cSJulian Grajkowski * It creates a crypto instance's memory pools. It calls ADF to create 16478ee8d1cSJulian Grajkowski * its required transport handles. It calls the sub crypto service init 16578ee8d1cSJulian Grajkowski * functions. Resets the stats. 16678ee8d1cSJulian Grajkowski * 16778ee8d1cSJulian Grajkowski * @context 16878ee8d1cSJulian Grajkowski * This function is called from the SalCtrl_ServiceEventInit function. 16978ee8d1cSJulian Grajkowski * 17078ee8d1cSJulian Grajkowski * @assumptions 17178ee8d1cSJulian Grajkowski * None 17278ee8d1cSJulian Grajkowski * @sideEffects 17378ee8d1cSJulian Grajkowski * None 17478ee8d1cSJulian Grajkowski * @reentrant 17578ee8d1cSJulian Grajkowski * No 17678ee8d1cSJulian Grajkowski * @threadSafe 17778ee8d1cSJulian Grajkowski * No (ADF ensures that this function doesn't need to be thread safe) 17878ee8d1cSJulian Grajkowski * 17978ee8d1cSJulian Grajkowski * @param[in] device An icp_accel_dev_t* type 18078ee8d1cSJulian Grajkowski * @param[in] service A crypto instance 18178ee8d1cSJulian Grajkowski * 18278ee8d1cSJulian Grajkowski *************************************************************************/ 18378ee8d1cSJulian Grajkowski CpaStatus SalCtrl_CryptoInit(icp_accel_dev_t *device, sal_service_t *service); 18478ee8d1cSJulian Grajkowski 18578ee8d1cSJulian Grajkowski /************************************************************************* 18678ee8d1cSJulian Grajkowski * @ingroup SalCtrl 18778ee8d1cSJulian Grajkowski * @description 18878ee8d1cSJulian Grajkowski * This function is used to start an instance of crypto service. 18978ee8d1cSJulian Grajkowski * It sends the first messages to FW on its crypto instance transport 19078ee8d1cSJulian Grajkowski * handles. For asymmetric crypto it verifies the header on the downloaded 19178ee8d1cSJulian Grajkowski * MMP library. 19278ee8d1cSJulian Grajkowski * 19378ee8d1cSJulian Grajkowski * @context 19478ee8d1cSJulian Grajkowski * This function is called from the SalCtrl_ServiceEventStart function. 19578ee8d1cSJulian Grajkowski * 19678ee8d1cSJulian Grajkowski * @assumptions 19778ee8d1cSJulian Grajkowski * None 19878ee8d1cSJulian Grajkowski * @sideEffects 19978ee8d1cSJulian Grajkowski * None 20078ee8d1cSJulian Grajkowski * @reentrant 20178ee8d1cSJulian Grajkowski * No 20278ee8d1cSJulian Grajkowski * @threadSafe 20378ee8d1cSJulian Grajkowski * No (ADF ensures that this function doesn't need to be thread safe) 20478ee8d1cSJulian Grajkowski * 20578ee8d1cSJulian Grajkowski * @param[in] device An icp_accel_dev_t* type 20678ee8d1cSJulian Grajkowski * @param[in] service A crypto instance 20778ee8d1cSJulian Grajkowski * 20878ee8d1cSJulian Grajkowski *************************************************************************/ 20978ee8d1cSJulian Grajkowski CpaStatus SalCtrl_CryptoStart(icp_accel_dev_t *device, sal_service_t *service); 21078ee8d1cSJulian Grajkowski 21178ee8d1cSJulian Grajkowski /************************************************************************* 21278ee8d1cSJulian Grajkowski * @ingroup SalCtrl 21378ee8d1cSJulian Grajkowski * @description 21478ee8d1cSJulian Grajkowski * This function is used to stop an instance of crypto service. 21578ee8d1cSJulian Grajkowski * It checks for inflight messages to the FW. If no messages are pending 21678ee8d1cSJulian Grajkowski * it returns success. If messages are pending it returns retry. 21778ee8d1cSJulian Grajkowski * 21878ee8d1cSJulian Grajkowski * @context 21978ee8d1cSJulian Grajkowski * This function is called from the SalCtrl_ServiceEventStop function. 22078ee8d1cSJulian Grajkowski * 22178ee8d1cSJulian Grajkowski * @assumptions 22278ee8d1cSJulian Grajkowski * None 22378ee8d1cSJulian Grajkowski * @sideEffects 22478ee8d1cSJulian Grajkowski * None 22578ee8d1cSJulian Grajkowski * @reentrant 22678ee8d1cSJulian Grajkowski * No 22778ee8d1cSJulian Grajkowski * @threadSafe 22878ee8d1cSJulian Grajkowski * No (ADF ensures that this function doesn't need to be thread safe) 22978ee8d1cSJulian Grajkowski * 23078ee8d1cSJulian Grajkowski * @param[in] device An icp_accel_dev_t* type 23178ee8d1cSJulian Grajkowski * @param[in] service A crypto instance 23278ee8d1cSJulian Grajkowski * 23378ee8d1cSJulian Grajkowski *************************************************************************/ 23478ee8d1cSJulian Grajkowski CpaStatus SalCtrl_CryptoStop(icp_accel_dev_t *device, sal_service_t *service); 23578ee8d1cSJulian Grajkowski 23678ee8d1cSJulian Grajkowski /************************************************************************* 23778ee8d1cSJulian Grajkowski * @ingroup SalCtrl 23878ee8d1cSJulian Grajkowski * @description 23978ee8d1cSJulian Grajkowski * This function is used to shutdown an instance of crypto service. 24078ee8d1cSJulian Grajkowski * It frees resources allocated at initialisation - e.g. frees the 24178ee8d1cSJulian Grajkowski * memory pools and ADF transport handles. 24278ee8d1cSJulian Grajkowski * 24378ee8d1cSJulian Grajkowski * @context 24478ee8d1cSJulian Grajkowski * This function is called from the SalCtrl_ServiceEventShutdown function. 24578ee8d1cSJulian Grajkowski * 24678ee8d1cSJulian Grajkowski * @assumptions 24778ee8d1cSJulian Grajkowski * None 24878ee8d1cSJulian Grajkowski * @sideEffects 24978ee8d1cSJulian Grajkowski * None 25078ee8d1cSJulian Grajkowski * @reentrant 25178ee8d1cSJulian Grajkowski * No 25278ee8d1cSJulian Grajkowski * @threadSafe 25378ee8d1cSJulian Grajkowski * No (ADF ensures that this function doesn't need to be thread safe) 25478ee8d1cSJulian Grajkowski * 25578ee8d1cSJulian Grajkowski * @param[in] device An icp_accel_dev_t* type 25678ee8d1cSJulian Grajkowski * @param[in] service A crypto instance 25778ee8d1cSJulian Grajkowski * 25878ee8d1cSJulian Grajkowski *************************************************************************/ 25978ee8d1cSJulian Grajkowski CpaStatus SalCtrl_CryptoShutdown(icp_accel_dev_t *device, 26078ee8d1cSJulian Grajkowski sal_service_t *service); 26178ee8d1cSJulian Grajkowski 26278ee8d1cSJulian Grajkowski /************************************************************************* 26378ee8d1cSJulian Grajkowski * @ingroup SalCtrl 26478ee8d1cSJulian Grajkowski * @description 26578ee8d1cSJulian Grajkowski * This function sets the capability info of crypto instances. 26678ee8d1cSJulian Grajkowski * 26778ee8d1cSJulian Grajkowski * @context 26878ee8d1cSJulian Grajkowski * This function is called from the cpaCyQueryCapabilities and 26978ee8d1cSJulian Grajkowski * LacSymSession_ParamCheck function. 27078ee8d1cSJulian Grajkowski * 27178ee8d1cSJulian Grajkowski * @assumptions 27278ee8d1cSJulian Grajkowski * None 27378ee8d1cSJulian Grajkowski * @sideEffects 27478ee8d1cSJulian Grajkowski * None 27578ee8d1cSJulian Grajkowski * @reentrant 27678ee8d1cSJulian Grajkowski * No 27778ee8d1cSJulian Grajkowski * @threadSafe 27878ee8d1cSJulian Grajkowski * No (ADF ensures that this function doesn't need to be thread safe) 27978ee8d1cSJulian Grajkowski * 28078ee8d1cSJulian Grajkowski * @param[in] service A sal_service_t* type 28178ee8d1cSJulian Grajkowski * @param[in] cyCapabilityInfo A CpaCyCapabilitiesInfo* type 28278ee8d1cSJulian Grajkowski * 28378ee8d1cSJulian Grajkowski *************************************************************************/ 28478ee8d1cSJulian Grajkowski void SalCtrl_CyQueryCapabilities(sal_service_t *pGenericService, 28578ee8d1cSJulian Grajkowski CpaCyCapabilitiesInfo *pCapInfo); 28678ee8d1cSJulian Grajkowski 28778ee8d1cSJulian Grajkowski /************************************************************************* 28878ee8d1cSJulian Grajkowski * @ingroup SalCtrl 28978ee8d1cSJulian Grajkowski * @description 29078ee8d1cSJulian Grajkowski * This function is used to initialize an instance of compression service. 29178ee8d1cSJulian Grajkowski * It creates a compression instance's memory pools. It calls ADF to create 29278ee8d1cSJulian Grajkowski * its required transport handles. It zeros an instances stats. 29378ee8d1cSJulian Grajkowski * 29478ee8d1cSJulian Grajkowski * @context 29578ee8d1cSJulian Grajkowski * This function is called from the SalCtrl_ServiceEventInit function. 29678ee8d1cSJulian Grajkowski * 29778ee8d1cSJulian Grajkowski * @assumptions 29878ee8d1cSJulian Grajkowski * None 29978ee8d1cSJulian Grajkowski * @sideEffects 30078ee8d1cSJulian Grajkowski * None 30178ee8d1cSJulian Grajkowski * @reentrant 30278ee8d1cSJulian Grajkowski * No 30378ee8d1cSJulian Grajkowski * @threadSafe 30478ee8d1cSJulian Grajkowski * No (ADF ensures that this function doesn't need to be thread safe) 30578ee8d1cSJulian Grajkowski * 30678ee8d1cSJulian Grajkowski * @param[in] device An icp_accel_dev_t* type 30778ee8d1cSJulian Grajkowski * @param[in] service A compression instance 30878ee8d1cSJulian Grajkowski * 30978ee8d1cSJulian Grajkowski *************************************************************************/ 31078ee8d1cSJulian Grajkowski 31178ee8d1cSJulian Grajkowski CpaStatus SalCtrl_CompressionInit(icp_accel_dev_t *device, 31278ee8d1cSJulian Grajkowski sal_service_t *service); 31378ee8d1cSJulian Grajkowski 31478ee8d1cSJulian Grajkowski /************************************************************************* 31578ee8d1cSJulian Grajkowski * @ingroup SalCtrl 31678ee8d1cSJulian Grajkowski * @description 31778ee8d1cSJulian Grajkowski * This function is used to start an instance of compression service. 31878ee8d1cSJulian Grajkowski * 31978ee8d1cSJulian Grajkowski * @context 32078ee8d1cSJulian Grajkowski * This function is called from the SalCtrl_ServiceEventStart function. 32178ee8d1cSJulian Grajkowski * 32278ee8d1cSJulian Grajkowski * @assumptions 32378ee8d1cSJulian Grajkowski * None 32478ee8d1cSJulian Grajkowski * @sideEffects 32578ee8d1cSJulian Grajkowski * None 32678ee8d1cSJulian Grajkowski * @reentrant 32778ee8d1cSJulian Grajkowski * No 32878ee8d1cSJulian Grajkowski * @threadSafe 32978ee8d1cSJulian Grajkowski * No (ADF ensures that this function doesn't need to be thread safe) 33078ee8d1cSJulian Grajkowski * 33178ee8d1cSJulian Grajkowski * @param[in] device An icp_accel_dev_t* type 33278ee8d1cSJulian Grajkowski * @param[in] service A compression instance 33378ee8d1cSJulian Grajkowski * 33478ee8d1cSJulian Grajkowski *************************************************************************/ 33578ee8d1cSJulian Grajkowski 33678ee8d1cSJulian Grajkowski CpaStatus SalCtrl_CompressionStart(icp_accel_dev_t *device, 33778ee8d1cSJulian Grajkowski sal_service_t *service); 33878ee8d1cSJulian Grajkowski 33978ee8d1cSJulian Grajkowski /************************************************************************* 34078ee8d1cSJulian Grajkowski * @ingroup SalCtrl 34178ee8d1cSJulian Grajkowski * @description 34278ee8d1cSJulian Grajkowski * This function is used to stop an instance of compression service. 34378ee8d1cSJulian Grajkowski * It checks for inflight messages to the FW. If no messages are pending 34478ee8d1cSJulian Grajkowski * it returns success. If messages are pending it returns retry. 34578ee8d1cSJulian Grajkowski * 34678ee8d1cSJulian Grajkowski * @context 34778ee8d1cSJulian Grajkowski * This function is called from the SalCtrl_ServiceEventStop function. 34878ee8d1cSJulian Grajkowski * 34978ee8d1cSJulian Grajkowski * @assumptions 35078ee8d1cSJulian Grajkowski * None 35178ee8d1cSJulian Grajkowski * @sideEffects 35278ee8d1cSJulian Grajkowski * None 35378ee8d1cSJulian Grajkowski * @reentrant 35478ee8d1cSJulian Grajkowski * No 35578ee8d1cSJulian Grajkowski * @threadSafe 35678ee8d1cSJulian Grajkowski * No (ADF ensures that this function doesn't need to be thread safe) 35778ee8d1cSJulian Grajkowski * 35878ee8d1cSJulian Grajkowski * @param[in] device An icp_accel_dev_t* type 35978ee8d1cSJulian Grajkowski * @param[in] service A compression instance 36078ee8d1cSJulian Grajkowski * 36178ee8d1cSJulian Grajkowski *************************************************************************/ 36278ee8d1cSJulian Grajkowski 36378ee8d1cSJulian Grajkowski CpaStatus SalCtrl_CompressionStop(icp_accel_dev_t *device, 36478ee8d1cSJulian Grajkowski sal_service_t *service); 36578ee8d1cSJulian Grajkowski 36678ee8d1cSJulian Grajkowski /************************************************************************* 36778ee8d1cSJulian Grajkowski * @ingroup SalCtrl 36878ee8d1cSJulian Grajkowski * @description 36978ee8d1cSJulian Grajkowski * This function is used to shutdown an instance of compression service. 37078ee8d1cSJulian Grajkowski * It frees resources allocated at initialisation - e.g. frees the 37178ee8d1cSJulian Grajkowski * memory pools and ADF transport handles. 37278ee8d1cSJulian Grajkowski * 37378ee8d1cSJulian Grajkowski * @context 37478ee8d1cSJulian Grajkowski * This function is called from the SalCtrl_ServiceEventShutdown function. 37578ee8d1cSJulian Grajkowski * 37678ee8d1cSJulian Grajkowski * @assumptions 37778ee8d1cSJulian Grajkowski * None 37878ee8d1cSJulian Grajkowski * @sideEffects 37978ee8d1cSJulian Grajkowski * None 38078ee8d1cSJulian Grajkowski * @reentrant 38178ee8d1cSJulian Grajkowski * No 38278ee8d1cSJulian Grajkowski * @threadSafe 38378ee8d1cSJulian Grajkowski * No (ADF ensures that this function doesn't need to be thread safe) 38478ee8d1cSJulian Grajkowski * 38578ee8d1cSJulian Grajkowski * @param[in] device An icp_accel_dev_t* type 38678ee8d1cSJulian Grajkowski * @param[in] service A compression instance 38778ee8d1cSJulian Grajkowski * 38878ee8d1cSJulian Grajkowski *************************************************************************/ 38978ee8d1cSJulian Grajkowski 39078ee8d1cSJulian Grajkowski CpaStatus SalCtrl_CompressionShutdown(icp_accel_dev_t *device, 39178ee8d1cSJulian Grajkowski sal_service_t *service); 39278ee8d1cSJulian Grajkowski 39378ee8d1cSJulian Grajkowski /************************************************************************* 39478ee8d1cSJulian Grajkowski * @ingroup SalCtrl 39578ee8d1cSJulian Grajkowski * @description 39678ee8d1cSJulian Grajkowski * This function is used to get the number of services enabled 39778ee8d1cSJulian Grajkowski * from the config table. 39878ee8d1cSJulian Grajkowski * 39978ee8d1cSJulian Grajkowski * @context 40078ee8d1cSJulian Grajkowski * This function is called from the SalCtrl_QatInit 40178ee8d1cSJulian Grajkowski * 40278ee8d1cSJulian Grajkowski * @assumptions 40378ee8d1cSJulian Grajkowski * None 40478ee8d1cSJulian Grajkowski * @sideEffects 40578ee8d1cSJulian Grajkowski * None 40678ee8d1cSJulian Grajkowski * @reentrant 40778ee8d1cSJulian Grajkowski * No 40878ee8d1cSJulian Grajkowski * @threadSafe 40978ee8d1cSJulian Grajkowski * No 41078ee8d1cSJulian Grajkowski * 41178ee8d1cSJulian Grajkowski * param[in] device An icp_accel_dev_t* type 41278ee8d1cSJulian Grajkowski * param[in] pEnabledServices pointer to a variable used to store 41378ee8d1cSJulian Grajkowski * the enabled services 41478ee8d1cSJulian Grajkowski * 41578ee8d1cSJulian Grajkowski *************************************************************************/ 41678ee8d1cSJulian Grajkowski 41778ee8d1cSJulian Grajkowski CpaStatus SalCtrl_GetEnabledServices(icp_accel_dev_t *device, 41878ee8d1cSJulian Grajkowski Cpa32U *pEnabledServices); 41978ee8d1cSJulian Grajkowski 42078ee8d1cSJulian Grajkowski /************************************************************************* 42178ee8d1cSJulian Grajkowski * @ingroup SalCtrl 42278ee8d1cSJulian Grajkowski * @description 42378ee8d1cSJulian Grajkowski * This function is used to check if a service is enabled 42478ee8d1cSJulian Grajkowski * 42578ee8d1cSJulian Grajkowski * @context 42678ee8d1cSJulian Grajkowski * This function is called from the SalCtrl_QatInit 42778ee8d1cSJulian Grajkowski * 42878ee8d1cSJulian Grajkowski * @assumptions 42978ee8d1cSJulian Grajkowski * None 43078ee8d1cSJulian Grajkowski * @sideEffects 43178ee8d1cSJulian Grajkowski * None 43278ee8d1cSJulian Grajkowski * @reentrant 43378ee8d1cSJulian Grajkowski * No 43478ee8d1cSJulian Grajkowski * @threadSafe 43578ee8d1cSJulian Grajkowski * Yes 43678ee8d1cSJulian Grajkowski * 43778ee8d1cSJulian Grajkowski * param[in] enabled_services 43878ee8d1cSJulian Grajkowski * param[in] service 43978ee8d1cSJulian Grajkowski * 44078ee8d1cSJulian Grajkowski *************************************************************************/ 44178ee8d1cSJulian Grajkowski 44278ee8d1cSJulian Grajkowski CpaBoolean SalCtrl_IsServiceEnabled(Cpa32U enabled_services, 44378ee8d1cSJulian Grajkowski sal_service_type_t service); 44478ee8d1cSJulian Grajkowski 44578ee8d1cSJulian Grajkowski /************************************************************************* 44678ee8d1cSJulian Grajkowski * @ingroup SalCtrl 44778ee8d1cSJulian Grajkowski * @description 44878ee8d1cSJulian Grajkowski * This function is used to check if a service is supported on the device 44978ee8d1cSJulian Grajkowski * The key difference between this and SalCtrl_GetSupportedServices() is 45078ee8d1cSJulian Grajkowski * that the latter treats it as an error if the service is unsupported. 45178ee8d1cSJulian Grajkowski * 45278ee8d1cSJulian Grajkowski * @context 45378ee8d1cSJulian Grajkowski * This can be called anywhere. 45478ee8d1cSJulian Grajkowski * 45578ee8d1cSJulian Grajkowski * @assumptions 45678ee8d1cSJulian Grajkowski * None 45778ee8d1cSJulian Grajkowski * @sideEffects 45878ee8d1cSJulian Grajkowski * None 45978ee8d1cSJulian Grajkowski * @reentrant 46078ee8d1cSJulian Grajkowski * No 46178ee8d1cSJulian Grajkowski * @threadSafe 46278ee8d1cSJulian Grajkowski * Yes 46378ee8d1cSJulian Grajkowski * 46478ee8d1cSJulian Grajkowski * param[in] device 46578ee8d1cSJulian Grajkowski * param[in] service service or services to check 46678ee8d1cSJulian Grajkowski * 46778ee8d1cSJulian Grajkowski *************************************************************************/ 46878ee8d1cSJulian Grajkowski CpaBoolean SalCtrl_IsServiceSupported(icp_accel_dev_t *device, 46978ee8d1cSJulian Grajkowski sal_service_type_t service); 47078ee8d1cSJulian Grajkowski 47178ee8d1cSJulian Grajkowski /************************************************************************* 47278ee8d1cSJulian Grajkowski * @ingroup SalCtrl 47378ee8d1cSJulian Grajkowski * @description 47478ee8d1cSJulian Grajkowski * This function is used to check whether enabled services has associated 47578ee8d1cSJulian Grajkowski * hardware capability support 47678ee8d1cSJulian Grajkowski * 47778ee8d1cSJulian Grajkowski * @context 47878ee8d1cSJulian Grajkowski * This functions is called from the SalCtrl_ServiceEventInit function. 47978ee8d1cSJulian Grajkowski * 48078ee8d1cSJulian Grajkowski * @assumptions 48178ee8d1cSJulian Grajkowski * None 48278ee8d1cSJulian Grajkowski * @sideEffects 48378ee8d1cSJulian Grajkowski * None 48478ee8d1cSJulian Grajkowski * @reentrant 48578ee8d1cSJulian Grajkowski * No 48678ee8d1cSJulian Grajkowski * @threadSafe 48778ee8d1cSJulian Grajkowski * Yes 48878ee8d1cSJulian Grajkowski * 48978ee8d1cSJulian Grajkowski * param[in] device A pointer to an icp_accel_dev_t 49078ee8d1cSJulian Grajkowski * param[in] enabled_services It is the bitmask for the enabled services 49178ee8d1cSJulian Grajkowski *************************************************************************/ 49278ee8d1cSJulian Grajkowski 49378ee8d1cSJulian Grajkowski CpaStatus SalCtrl_GetSupportedServices(icp_accel_dev_t *device, 49478ee8d1cSJulian Grajkowski Cpa32U enabled_services); 49578ee8d1cSJulian Grajkowski 49678ee8d1cSJulian Grajkowski #endif 497