178ee8d1cSJulian Grajkowski /* SPDX-License-Identifier: BSD-3-Clause */
278ee8d1cSJulian Grajkowski /* Copyright(c) 2007-2022 Intel Corporation */
378ee8d1cSJulian Grajkowski /**
478ee8d1cSJulian Grajkowski ***************************************************************************
578ee8d1cSJulian Grajkowski * @file lac_sync.h
678ee8d1cSJulian Grajkowski *
778ee8d1cSJulian Grajkowski * @defgroup LacSync LAC synchronous
878ee8d1cSJulian Grajkowski *
978ee8d1cSJulian Grajkowski * @ingroup LacCommon
1078ee8d1cSJulian Grajkowski *
1178ee8d1cSJulian Grajkowski * Function prototypes and defines for synchronous support
1278ee8d1cSJulian Grajkowski *
1378ee8d1cSJulian Grajkowski ***************************************************************************/
1478ee8d1cSJulian Grajkowski
1578ee8d1cSJulian Grajkowski #ifndef LAC_SYNC_H
1678ee8d1cSJulian Grajkowski #define LAC_SYNC_H
1778ee8d1cSJulian Grajkowski
1878ee8d1cSJulian Grajkowski #include "cpa.h"
1978ee8d1cSJulian Grajkowski #include "qat_utils.h"
2078ee8d1cSJulian Grajkowski #include "lac_mem.h"
2178ee8d1cSJulian Grajkowski
2278ee8d1cSJulian Grajkowski /**
2378ee8d1cSJulian Grajkowski *****************************************************************************
2478ee8d1cSJulian Grajkowski * @ingroup LacSync
2578ee8d1cSJulian Grajkowski *
2678ee8d1cSJulian Grajkowski * @description
2778ee8d1cSJulian Grajkowski * LAC cookie for synchronous support
2878ee8d1cSJulian Grajkowski *
2978ee8d1cSJulian Grajkowski *****************************************************************************/
3078ee8d1cSJulian Grajkowski typedef struct lac_sync_op_data_s {
3178ee8d1cSJulian Grajkowski struct sema *sid;
3278ee8d1cSJulian Grajkowski /**< Semaphore to signal */
3378ee8d1cSJulian Grajkowski CpaStatus status;
3478ee8d1cSJulian Grajkowski /**< Output - Status of the QAT response */
3578ee8d1cSJulian Grajkowski CpaBoolean opResult;
3678ee8d1cSJulian Grajkowski /**< Output - Verification of the operation/protocol status */
3778ee8d1cSJulian Grajkowski CpaBoolean complete;
3878ee8d1cSJulian Grajkowski /**< Output - Operation is complete */
3978ee8d1cSJulian Grajkowski CpaBoolean canceled;
4078ee8d1cSJulian Grajkowski /**< Output - Operation canceled */
4178ee8d1cSJulian Grajkowski } lac_sync_op_data_t;
4278ee8d1cSJulian Grajkowski
4378ee8d1cSJulian Grajkowski #define LAC_PKE_SYNC_CALLBACK_TIMEOUT (5000)
4478ee8d1cSJulian Grajkowski /**< @ingroup LacSync
4578ee8d1cSJulian Grajkowski * Timeout waiting for an async callbacks in msecs.
4678ee8d1cSJulian Grajkowski * This is derived from the max latency of a PKE request + 1 sec
4778ee8d1cSJulian Grajkowski */
4878ee8d1cSJulian Grajkowski
4978ee8d1cSJulian Grajkowski #define LAC_SYM_DRBG_POLL_AND_WAIT_TIME_MS (10)
5078ee8d1cSJulian Grajkowski /**< @ingroup LacSyn
5178ee8d1cSJulian Grajkowski * Default interval DRBG polling in msecs */
5278ee8d1cSJulian Grajkowski
5378ee8d1cSJulian Grajkowski #define LAC_SYM_SYNC_CALLBACK_TIMEOUT (300)
5478ee8d1cSJulian Grajkowski /**< @ingroup LacSyn
5578ee8d1cSJulian Grajkowski * Timeout for wait for symmetric response in msecs
5678ee8d1cSJulian Grajkowski */
5778ee8d1cSJulian Grajkowski
5878ee8d1cSJulian Grajkowski #define LAC_INIT_MSG_CALLBACK_TIMEOUT (1922)
5978ee8d1cSJulian Grajkowski /**< @ingroup LacSyn
6078ee8d1cSJulian Grajkowski * Timeout for wait for init messages response in msecs
6178ee8d1cSJulian Grajkowski */
6278ee8d1cSJulian Grajkowski
63*a977168cSMichal Gulbicki #define DC_SYNC_CALLBACK_TIMEOUT (2000)
6478ee8d1cSJulian Grajkowski /**< @ingroup LacSyn
6578ee8d1cSJulian Grajkowski * Timeout for wait for compression response in msecs */
6678ee8d1cSJulian Grajkowski
6778ee8d1cSJulian Grajkowski #define LAC_SYN_INITIAL_SEM_VALUE (0)
6878ee8d1cSJulian Grajkowski /**< @ingroup LacSyn
6978ee8d1cSJulian Grajkowski * Initial value of the sync waiting semaphore */
7078ee8d1cSJulian Grajkowski
7178ee8d1cSJulian Grajkowski /**
7278ee8d1cSJulian Grajkowski *******************************************************************************
7378ee8d1cSJulian Grajkowski * @ingroup LacSync
7478ee8d1cSJulian Grajkowski * This function allocates a sync op data cookie
7578ee8d1cSJulian Grajkowski * and creates and initialises the QAT Utils semaphore
7678ee8d1cSJulian Grajkowski *
7778ee8d1cSJulian Grajkowski * @param[in] ppSyncCallbackCookie Pointer to synch op data
7878ee8d1cSJulian Grajkowski *
7978ee8d1cSJulian Grajkowski * @retval CPA_STATUS_RESOURCE Failed to allocate the memory for the cookie.
8078ee8d1cSJulian Grajkowski * @retval CPA_STATUS_SUCCESS Success
8178ee8d1cSJulian Grajkowski *
8278ee8d1cSJulian Grajkowski ******************************************************************************/
8378ee8d1cSJulian Grajkowski static __inline CpaStatus
LacSync_CreateSyncCookie(lac_sync_op_data_t ** ppSyncCallbackCookie)8478ee8d1cSJulian Grajkowski LacSync_CreateSyncCookie(lac_sync_op_data_t **ppSyncCallbackCookie)
8578ee8d1cSJulian Grajkowski {
8678ee8d1cSJulian Grajkowski CpaStatus status = CPA_STATUS_SUCCESS;
8778ee8d1cSJulian Grajkowski
8878ee8d1cSJulian Grajkowski *ppSyncCallbackCookie =
8978ee8d1cSJulian Grajkowski malloc(sizeof(lac_sync_op_data_t), M_QAT, M_WAITOK);
9078ee8d1cSJulian Grajkowski
9178ee8d1cSJulian Grajkowski if (CPA_STATUS_SUCCESS == status) {
9278ee8d1cSJulian Grajkowski status = LAC_INIT_SEMAPHORE((*ppSyncCallbackCookie)->sid,
9378ee8d1cSJulian Grajkowski LAC_SYN_INITIAL_SEM_VALUE);
9478ee8d1cSJulian Grajkowski (*ppSyncCallbackCookie)->complete = CPA_FALSE;
9578ee8d1cSJulian Grajkowski (*ppSyncCallbackCookie)->canceled = CPA_FALSE;
9678ee8d1cSJulian Grajkowski }
9778ee8d1cSJulian Grajkowski
9878ee8d1cSJulian Grajkowski if (CPA_STATUS_SUCCESS != status) {
9978ee8d1cSJulian Grajkowski LAC_OS_FREE(*ppSyncCallbackCookie);
10078ee8d1cSJulian Grajkowski }
10178ee8d1cSJulian Grajkowski
10278ee8d1cSJulian Grajkowski return status;
10378ee8d1cSJulian Grajkowski }
10478ee8d1cSJulian Grajkowski
10578ee8d1cSJulian Grajkowski /**
10678ee8d1cSJulian Grajkowski *******************************************************************************
10778ee8d1cSJulian Grajkowski * @ingroup LacSync
10878ee8d1cSJulian Grajkowski * This macro frees a sync op data cookie and destroys the QAT Utils
10978ee8d1cSJulian Grajkowski *semaphore
11078ee8d1cSJulian Grajkowski *
11178ee8d1cSJulian Grajkowski * @param[in] ppSyncCallbackCookie Pointer to sync op data
11278ee8d1cSJulian Grajkowski *
11378ee8d1cSJulian Grajkowski * @return void
11478ee8d1cSJulian Grajkowski ******************************************************************************/
11578ee8d1cSJulian Grajkowski static __inline CpaStatus
LacSync_DestroySyncCookie(lac_sync_op_data_t ** ppSyncCallbackCookie)11678ee8d1cSJulian Grajkowski LacSync_DestroySyncCookie(lac_sync_op_data_t **ppSyncCallbackCookie)
11778ee8d1cSJulian Grajkowski {
11878ee8d1cSJulian Grajkowski CpaStatus status = CPA_STATUS_SUCCESS;
11978ee8d1cSJulian Grajkowski
12078ee8d1cSJulian Grajkowski /*
12178ee8d1cSJulian Grajkowski * If the operation has not completed, cancel it instead of destroying
12278ee8d1cSJulian Grajkowski * the
12378ee8d1cSJulian Grajkowski * cookie. Otherwise, the callback might panic. In this case, the cookie
12478ee8d1cSJulian Grajkowski * will leak, but it's better than a panic.
12578ee8d1cSJulian Grajkowski */
12678ee8d1cSJulian Grajkowski if (!(*ppSyncCallbackCookie)->complete) {
12778ee8d1cSJulian Grajkowski QAT_UTILS_LOG(
12878ee8d1cSJulian Grajkowski "Attempting to destroy an incomplete sync cookie\n");
12978ee8d1cSJulian Grajkowski (*ppSyncCallbackCookie)->canceled = CPA_TRUE;
13078ee8d1cSJulian Grajkowski return CPA_STATUS_FAIL;
13178ee8d1cSJulian Grajkowski }
13278ee8d1cSJulian Grajkowski
13378ee8d1cSJulian Grajkowski status = LAC_DESTROY_SEMAPHORE((*ppSyncCallbackCookie)->sid);
13478ee8d1cSJulian Grajkowski LAC_OS_FREE(*ppSyncCallbackCookie);
13578ee8d1cSJulian Grajkowski return status;
13678ee8d1cSJulian Grajkowski }
13778ee8d1cSJulian Grajkowski
13878ee8d1cSJulian Grajkowski /**
13978ee8d1cSJulian Grajkowski *****************************************************************************
14078ee8d1cSJulian Grajkowski * @ingroup LacSync
14178ee8d1cSJulian Grajkowski * Function which will wait for a sync callback on a given cookie.
14278ee8d1cSJulian Grajkowski *
14378ee8d1cSJulian Grajkowski * @param[in] pSyncCallbackCookie Pointer to sync op data
14478ee8d1cSJulian Grajkowski * @param[in] timeOut Time to wait for callback (msec)
14578ee8d1cSJulian Grajkowski * @param[out] pStatus Status returned by the callback
14678ee8d1cSJulian Grajkowski * @param[out] pOpStatus Operation status returned by callback.
14778ee8d1cSJulian Grajkowski *
14878ee8d1cSJulian Grajkowski * @retval CPA_STATUS_SUCCESS Success
14978ee8d1cSJulian Grajkowski * @retval CPA_STATUS_SUCCESS Fail waiting for a callback
15078ee8d1cSJulian Grajkowski *
15178ee8d1cSJulian Grajkowski *****************************************************************************/
15278ee8d1cSJulian Grajkowski static __inline CpaStatus
LacSync_WaitForCallback(lac_sync_op_data_t * pSyncCallbackCookie,Cpa32S timeOut,CpaStatus * pStatus,CpaBoolean * pOpStatus)15378ee8d1cSJulian Grajkowski LacSync_WaitForCallback(lac_sync_op_data_t *pSyncCallbackCookie,
15478ee8d1cSJulian Grajkowski Cpa32S timeOut,
15578ee8d1cSJulian Grajkowski CpaStatus *pStatus,
15678ee8d1cSJulian Grajkowski CpaBoolean *pOpStatus)
15778ee8d1cSJulian Grajkowski {
15878ee8d1cSJulian Grajkowski CpaStatus status = CPA_STATUS_SUCCESS;
15978ee8d1cSJulian Grajkowski
16078ee8d1cSJulian Grajkowski status = LAC_WAIT_SEMAPHORE(pSyncCallbackCookie->sid, timeOut);
16178ee8d1cSJulian Grajkowski
16278ee8d1cSJulian Grajkowski if (CPA_STATUS_SUCCESS == status) {
16378ee8d1cSJulian Grajkowski *pStatus = pSyncCallbackCookie->status;
16478ee8d1cSJulian Grajkowski if (NULL != pOpStatus) {
16578ee8d1cSJulian Grajkowski *pOpStatus = pSyncCallbackCookie->opResult;
16678ee8d1cSJulian Grajkowski }
16778ee8d1cSJulian Grajkowski pSyncCallbackCookie->complete = CPA_TRUE;
16878ee8d1cSJulian Grajkowski }
16978ee8d1cSJulian Grajkowski
17078ee8d1cSJulian Grajkowski return status;
17178ee8d1cSJulian Grajkowski }
17278ee8d1cSJulian Grajkowski
17378ee8d1cSJulian Grajkowski /**
17478ee8d1cSJulian Grajkowski *****************************************************************************
17578ee8d1cSJulian Grajkowski * @ingroup LacSync
17678ee8d1cSJulian Grajkowski * Function which will check for a sync callback on a given cookie.
17778ee8d1cSJulian Grajkowski * Returns whether the callback has happened or not, no timeout.
17878ee8d1cSJulian Grajkowski *
17978ee8d1cSJulian Grajkowski * @param[in] pSyncCallbackCookie Pointer to sync op data
18078ee8d1cSJulian Grajkowski * @param[in] timeOut Time to wait for callback (msec)
18178ee8d1cSJulian Grajkowski * @param[out] pStatus Status returned by the callback
18278ee8d1cSJulian Grajkowski * @param[out] pOpStatus Operation status returned by callback.
18378ee8d1cSJulian Grajkowski *
18478ee8d1cSJulian Grajkowski * @retval CPA_STATUS_SUCCESS Success
18578ee8d1cSJulian Grajkowski * @retval CPA_STATUS_FAIL Fail waiting for a callback
18678ee8d1cSJulian Grajkowski *
18778ee8d1cSJulian Grajkowski *****************************************************************************/
18878ee8d1cSJulian Grajkowski static __inline CpaStatus
LacSync_CheckForCallback(lac_sync_op_data_t * pSyncCallbackCookie,CpaStatus * pStatus,CpaBoolean * pOpStatus)18978ee8d1cSJulian Grajkowski LacSync_CheckForCallback(lac_sync_op_data_t *pSyncCallbackCookie,
19078ee8d1cSJulian Grajkowski CpaStatus *pStatus,
19178ee8d1cSJulian Grajkowski CpaBoolean *pOpStatus)
19278ee8d1cSJulian Grajkowski {
19378ee8d1cSJulian Grajkowski CpaStatus status = CPA_STATUS_SUCCESS;
19478ee8d1cSJulian Grajkowski
19578ee8d1cSJulian Grajkowski status = LAC_CHECK_SEMAPHORE(pSyncCallbackCookie->sid);
19678ee8d1cSJulian Grajkowski
19778ee8d1cSJulian Grajkowski if (CPA_STATUS_SUCCESS == status) {
19878ee8d1cSJulian Grajkowski *pStatus = pSyncCallbackCookie->status;
19978ee8d1cSJulian Grajkowski if (NULL != pOpStatus) {
20078ee8d1cSJulian Grajkowski *pOpStatus = pSyncCallbackCookie->opResult;
20178ee8d1cSJulian Grajkowski }
20278ee8d1cSJulian Grajkowski pSyncCallbackCookie->complete = CPA_TRUE;
20378ee8d1cSJulian Grajkowski }
20478ee8d1cSJulian Grajkowski
20578ee8d1cSJulian Grajkowski return status;
20678ee8d1cSJulian Grajkowski }
20778ee8d1cSJulian Grajkowski
20878ee8d1cSJulian Grajkowski /**
20978ee8d1cSJulian Grajkowski *****************************************************************************
21078ee8d1cSJulian Grajkowski * @ingroup LacSync
21178ee8d1cSJulian Grajkowski * Function which will mark a sync cookie as complete.
21278ee8d1cSJulian Grajkowski * If it's known that the callback will not happen it's necessary
21378ee8d1cSJulian Grajkowski * to call this, else the cookie can't be destroyed.
21478ee8d1cSJulian Grajkowski *
21578ee8d1cSJulian Grajkowski * @param[in] pSyncCallbackCookie Pointer to sync op data
21678ee8d1cSJulian Grajkowski *
21778ee8d1cSJulian Grajkowski * @retval CPA_STATUS_SUCCESS Success
21878ee8d1cSJulian Grajkowski * @retval CPA_STATUS_FAIL Failed to mark as complete
21978ee8d1cSJulian Grajkowski *
22078ee8d1cSJulian Grajkowski *****************************************************************************/
22178ee8d1cSJulian Grajkowski static __inline CpaStatus
LacSync_SetSyncCookieComplete(lac_sync_op_data_t * pSyncCallbackCookie)22278ee8d1cSJulian Grajkowski LacSync_SetSyncCookieComplete(lac_sync_op_data_t *pSyncCallbackCookie)
22378ee8d1cSJulian Grajkowski {
22478ee8d1cSJulian Grajkowski CpaStatus status = CPA_STATUS_FAIL;
22578ee8d1cSJulian Grajkowski
22678ee8d1cSJulian Grajkowski if (NULL != pSyncCallbackCookie) {
22778ee8d1cSJulian Grajkowski pSyncCallbackCookie->complete = CPA_TRUE;
22878ee8d1cSJulian Grajkowski status = CPA_STATUS_SUCCESS;
22978ee8d1cSJulian Grajkowski }
23078ee8d1cSJulian Grajkowski return status;
23178ee8d1cSJulian Grajkowski }
23278ee8d1cSJulian Grajkowski /**
23378ee8d1cSJulian Grajkowski *****************************************************************************
23478ee8d1cSJulian Grajkowski * @ingroup LacSync
23578ee8d1cSJulian Grajkowski * Generic verify callback function.
23678ee8d1cSJulian Grajkowski * @description
23778ee8d1cSJulian Grajkowski * This function is used when the API is called in synchronous mode.
23878ee8d1cSJulian Grajkowski * It's assumed the callbackTag holds a lac_sync_op_data_t type
23978ee8d1cSJulian Grajkowski * and when the callback is received, this callback shall set the
24078ee8d1cSJulian Grajkowski * status element of that cookie structure and kick the sid.
24178ee8d1cSJulian Grajkowski * This function may be used directly as a callback function.
24278ee8d1cSJulian Grajkowski *
24378ee8d1cSJulian Grajkowski * @param[in] callbackTag Callback Tag
24478ee8d1cSJulian Grajkowski * @param[in] status Status of callback
24578ee8d1cSJulian Grajkowski * @param[out] pOpdata Pointer to the Op Data
24678ee8d1cSJulian Grajkowski * @param[out] opResult Boolean to indicate the result of the operation
24778ee8d1cSJulian Grajkowski *
24878ee8d1cSJulian Grajkowski * @return void
24978ee8d1cSJulian Grajkowski *****************************************************************************/
25078ee8d1cSJulian Grajkowski void LacSync_GenVerifyCb(void *callbackTag,
25178ee8d1cSJulian Grajkowski CpaStatus status,
25278ee8d1cSJulian Grajkowski void *pOpdata,
25378ee8d1cSJulian Grajkowski CpaBoolean opResult);
25478ee8d1cSJulian Grajkowski
25578ee8d1cSJulian Grajkowski /**
25678ee8d1cSJulian Grajkowski *****************************************************************************
25778ee8d1cSJulian Grajkowski * @ingroup LacSync
25878ee8d1cSJulian Grajkowski * Generic flatbuffer callback function.
25978ee8d1cSJulian Grajkowski * @description
26078ee8d1cSJulian Grajkowski * This function is used when the API is called in synchronous mode.
26178ee8d1cSJulian Grajkowski * It's assumed the callbackTag holds a lac_sync_op_data_t type
26278ee8d1cSJulian Grajkowski * and when the callback is received, this callback shall set the
26378ee8d1cSJulian Grajkowski * status element of that cookie structure and kick the sid.
26478ee8d1cSJulian Grajkowski * This function may be used directly as a callback function.
26578ee8d1cSJulian Grajkowski *
26678ee8d1cSJulian Grajkowski * @param[in] callbackTag Callback Tag
26778ee8d1cSJulian Grajkowski * @param[in] status Status of callback
26878ee8d1cSJulian Grajkowski * @param[in] pOpdata Pointer to the Op Data
26978ee8d1cSJulian Grajkowski * @param[out] pOut Pointer to the flat buffer
27078ee8d1cSJulian Grajkowski *
27178ee8d1cSJulian Grajkowski * @return void
27278ee8d1cSJulian Grajkowski *****************************************************************************/
27378ee8d1cSJulian Grajkowski void LacSync_GenFlatBufCb(void *callbackTag,
27478ee8d1cSJulian Grajkowski CpaStatus status,
27578ee8d1cSJulian Grajkowski void *pOpdata,
27678ee8d1cSJulian Grajkowski CpaFlatBuffer *pOut);
27778ee8d1cSJulian Grajkowski
27878ee8d1cSJulian Grajkowski /**
27978ee8d1cSJulian Grajkowski *****************************************************************************
28078ee8d1cSJulian Grajkowski * @ingroup LacSync
28178ee8d1cSJulian Grajkowski * Generic flatbuffer verify callback function.
28278ee8d1cSJulian Grajkowski * @description
28378ee8d1cSJulian Grajkowski * This function is used when the API is called in synchronous mode.
28478ee8d1cSJulian Grajkowski * It's assumed the callbackTag holds a lac_sync_op_data_t type
28578ee8d1cSJulian Grajkowski * and when the callback is received, this callback shall set the
28678ee8d1cSJulian Grajkowski * status and opResult element of that cookie structure and
28778ee8d1cSJulian Grajkowski * kick the sid.
28878ee8d1cSJulian Grajkowski * This function may be used directly as a callback function.
28978ee8d1cSJulian Grajkowski *
29078ee8d1cSJulian Grajkowski * @param[in] callbackTag Callback Tag
29178ee8d1cSJulian Grajkowski * @param[in] status Status of callback
29278ee8d1cSJulian Grajkowski * @param[in] pOpdata Pointer to the Op Data
29378ee8d1cSJulian Grajkowski * @param[out] opResult Boolean to indicate the result of the operation
29478ee8d1cSJulian Grajkowski * @param[out] pOut Pointer to the flat buffer
29578ee8d1cSJulian Grajkowski *
29678ee8d1cSJulian Grajkowski * @return void
29778ee8d1cSJulian Grajkowski *****************************************************************************/
29878ee8d1cSJulian Grajkowski void LacSync_GenFlatBufVerifyCb(void *callbackTag,
29978ee8d1cSJulian Grajkowski CpaStatus status,
30078ee8d1cSJulian Grajkowski void *pOpdata,
30178ee8d1cSJulian Grajkowski CpaBoolean opResult,
30278ee8d1cSJulian Grajkowski CpaFlatBuffer *pOut);
30378ee8d1cSJulian Grajkowski
30478ee8d1cSJulian Grajkowski /**
30578ee8d1cSJulian Grajkowski *****************************************************************************
30678ee8d1cSJulian Grajkowski * @ingroup LacSync
30778ee8d1cSJulian Grajkowski * Generic dual flatbuffer verify callback function.
30878ee8d1cSJulian Grajkowski * @description
30978ee8d1cSJulian Grajkowski * This function is used when the API is called in synchronous mode.
31078ee8d1cSJulian Grajkowski * It's assumed the callbackTag holds a lac_sync_op_data_t type
31178ee8d1cSJulian Grajkowski * and when the callback is received, this callback shall set the
31278ee8d1cSJulian Grajkowski * status and opResult element of that cookie structure and
31378ee8d1cSJulian Grajkowski * kick the sid.
31478ee8d1cSJulian Grajkowski * This function may be used directly as a callback function.
31578ee8d1cSJulian Grajkowski *
31678ee8d1cSJulian Grajkowski * @param[in] callbackTag Callback Tag
31778ee8d1cSJulian Grajkowski * @param[in] status Status of callback
31878ee8d1cSJulian Grajkowski * @param[in] pOpdata Pointer to the Op Data
31978ee8d1cSJulian Grajkowski * @param[out] opResult Boolean to indicate the result of the operation
32078ee8d1cSJulian Grajkowski * @param[out] pOut0 Pointer to the flat buffer
32178ee8d1cSJulian Grajkowski * @param[out] pOut1 Pointer to the flat buffer
32278ee8d1cSJulian Grajkowski *
32378ee8d1cSJulian Grajkowski * @return void
32478ee8d1cSJulian Grajkowski *****************************************************************************/
32578ee8d1cSJulian Grajkowski void LacSync_GenDualFlatBufVerifyCb(void *callbackTag,
32678ee8d1cSJulian Grajkowski CpaStatus status,
32778ee8d1cSJulian Grajkowski void *pOpdata,
32878ee8d1cSJulian Grajkowski CpaBoolean opResult,
32978ee8d1cSJulian Grajkowski CpaFlatBuffer *pOut0,
33078ee8d1cSJulian Grajkowski CpaFlatBuffer *pOut1);
33178ee8d1cSJulian Grajkowski
33278ee8d1cSJulian Grajkowski /**
33378ee8d1cSJulian Grajkowski *****************************************************************************
33478ee8d1cSJulian Grajkowski * @ingroup LacSync
33578ee8d1cSJulian Grajkowski * Generic wake up function.
33678ee8d1cSJulian Grajkowski * @description
33778ee8d1cSJulian Grajkowski * This function is used when the API is called in synchronous
33878ee8d1cSJulian Grajkowski * mode.
33978ee8d1cSJulian Grajkowski * It's assumed the callbackTag holds a lac_sync_op_data_t type
34078ee8d1cSJulian Grajkowski * and when the callback is received, this callback shall set
34178ee8d1cSJulian Grajkowski * the status element of that cookie structure and kick the
34278ee8d1cSJulian Grajkowski * sid.
34378ee8d1cSJulian Grajkowski * This function maybe called from an async callback.
34478ee8d1cSJulian Grajkowski *
34578ee8d1cSJulian Grajkowski * @param[in] callbackTag Callback Tag
34678ee8d1cSJulian Grajkowski * @param[in] status Status of callback
34778ee8d1cSJulian Grajkowski *
34878ee8d1cSJulian Grajkowski * @return void
34978ee8d1cSJulian Grajkowski *****************************************************************************/
35078ee8d1cSJulian Grajkowski void LacSync_GenWakeupSyncCaller(void *callbackTag, CpaStatus status);
35178ee8d1cSJulian Grajkowski
35278ee8d1cSJulian Grajkowski /**
35378ee8d1cSJulian Grajkowski *****************************************************************************
35478ee8d1cSJulian Grajkowski * @ingroup LacSync
35578ee8d1cSJulian Grajkowski * Generic wake up verify function.
35678ee8d1cSJulian Grajkowski * @description
35778ee8d1cSJulian Grajkowski * This function is used when the API is called in synchronous
35878ee8d1cSJulian Grajkowski * mode.
35978ee8d1cSJulian Grajkowski * It's assumed the callbackTag holds a lac_sync_op_data_t type
36078ee8d1cSJulian Grajkowski * and when the callback is received, this callback shall set
36178ee8d1cSJulian Grajkowski * the status element and the opResult of that cookie structure
36278ee8d1cSJulian Grajkowski * and kick the sid.
36378ee8d1cSJulian Grajkowski * This function maybe called from an async callback.
36478ee8d1cSJulian Grajkowski *
36578ee8d1cSJulian Grajkowski * @param[in] callbackTag Callback Tag
36678ee8d1cSJulian Grajkowski * @param[in] status Status of callback
36778ee8d1cSJulian Grajkowski * @param[out] opResult Boolean to indicate the result of the operation
36878ee8d1cSJulian Grajkowski *
36978ee8d1cSJulian Grajkowski * @return void
37078ee8d1cSJulian Grajkowski *****************************************************************************/
37178ee8d1cSJulian Grajkowski void LacSync_GenVerifyWakeupSyncCaller(void *callbackTag,
37278ee8d1cSJulian Grajkowski CpaStatus status,
37378ee8d1cSJulian Grajkowski CpaBoolean opResult);
37478ee8d1cSJulian Grajkowski
37578ee8d1cSJulian Grajkowski #endif /*LAC_SYNC_H*/
376