1/* SPDX-License-Identifier: BSD-3-Clause */
2/* Copyright(c) 2007-2022 Intel Corporation */
3/**
4 ***************************************************************************
5 * @file icp_sal_user.h
6 *
7 * @ingroup SalUser
8 *
9 * User space process init and shutdown functions.
10 *
11 ***************************************************************************/
12
13#ifndef ICP_SAL_USER_H
14#define ICP_SAL_USER_H
15
16/*************************************************************************
17  * @ingroup SalUser
18  * @description
19  *    This function initialises and starts user space service access layer
20  *    (SAL) - it registers SAL with ADF and initialises the ADF proxy.
21  *    This function must only be called once per user space process.
22  *
23  * @context
24  *      This function is called from the user process context
25  *
26  * @assumptions
27  *      None
28  * @sideEffects
29  *      None
30  * @reentrant
31  *      No
32  * @threadSafe
33  *      Yes
34  *
35  * @param[in] pProcessName           Process address space name described in
36  *                                   the config file for this device
37  *
38  * @retval CPA_STATUS_SUCCESS        No error
39  * @retval CPA_STATUS_FAIL           Operation failed
40  *
41  *************************************************************************/
42CpaStatus icp_sal_userStart(const char *pProcessName);
43
44/*************************************************************************
45  * @ingroup SalUser
46  * @description
47  *    This function is to be used with simplified config file, where user
48  *    defines many user space processes. The driver generates unique
49  *    process names based on the pProcessName provided.
50  *    For example:
51  *    If a config file in simplified format contains:
52  *    [SSL]
53  *    NumProcesses = 3
54  *
55  *    Then three internal sections will be generated and the three
56  *    applications can be started at a given time. Each application can call
57  *    icp_sal_userStartMultiProcess("SSL"). In this case the driver will
58  *    figure out the unique name to use for each process.
59  *
60  * @context
61  *      This function is called from the user process context
62  *
63  * @assumptions
64  *      None
65  * @sideEffects
66  *      None
67  * @reentrant
68  *      No
69  * @threadSafe
70  *      Yes
71  *
72  * @param[in] pProcessName           Process address space name described in
73  *                                   the new format of the config file
74  *                                   for this device.
75  *
76  * @param[in] limitDevAccess         Specifies if the address space is limited
77  *                                   to one device (true) or if it spans
78  *                                   accross multiple devices.
79  *
80  * @retval CPA_STATUS_SUCCESS        No error
81  * @retval CPA_STATUS_FAIL           Operation failed. In this case user
82  *                                   can wait and retry.
83  *
84  *************************************************************************/
85CpaStatus icp_sal_userStartMultiProcess(const char *pProcessName,
86					CpaBoolean limitDevAccess);
87
88/*************************************************************************
89 * @ingroup SalUser
90 * @description
91 *    This function stops and shuts down user space SAL
92 *     - it deregisters SAL with ADF and shuts down ADF proxy
93 *
94 * @context
95 *      This function is called from the user process context
96 *
97 * @assumptions
98 *      None
99 * @sideEffects
100 *      None
101 * @reentrant
102 *      No
103 * @threadSafe
104 *      Yes
105 *
106 * @retval CPA_STATUS_SUCCESS        No error
107 * @retval CPA_STATUS_FAIL           Operation failed
108 *
109 ************************************************************************/
110CpaStatus icp_sal_userStop(void);
111
112/*************************************************************************
113  * @ingroup SalUser
114  * @description
115  *    This function gets the number of the available dynamic allocated
116  *    crypto instances
117  *
118  * @context
119  *      This function is called from the user process context
120  *
121  * @assumptions
122  *      None
123  * @sideEffects
124  *      None
125  * @reentrant
126  *      No
127  * @threadSafe
128  *      Yes
129  *
130  * @retval CPA_STATUS_SUCCESS        No error
131  * @retval CPA_STATUS_FAIL           Operation failed
132  *
133  ************************************************************************/
134CpaStatus icp_sal_userCyGetAvailableNumDynInstances(Cpa32U *pNumCyInstances);
135
136/*************************************************************************
137  * @ingroup SalUser
138  * @description
139  *    This function gets the number of the available dynamic allocated
140  *    compression instances
141  *
142  * @context
143  *      This function is called from the user process context
144  *
145  * @assumptions
146  *      None
147  * @sideEffects
148  *      None
149  * @reentrant
150  *      No
151  * @threadSafe
152  *      Yes
153  *
154  * @retval CPA_STATUS_SUCCESS        No error
155  * @retval CPA_STATUS_FAIL           Operation failed
156  *
157  ************************************************************************/
158CpaStatus icp_sal_userDcGetAvailableNumDynInstances(Cpa32U *pNumDcInstances);
159
160/*************************************************************************
161  * @ingroup SalUser
162  * @description
163  *    This function gets the number of the available dynamic allocated
164  *    crypto instances which are from the specific device package.
165  *
166  * @context
167  *      This function is called from the user process context
168  *
169  * @assumptions
170  *      None
171  * @sideEffects
172  *      None
173  * @reentrant
174  *      No
175  * @threadSafe
176  *      Yes
177  *
178  * @retval CPA_STATUS_SUCCESS        No error
179  * @retval CPA_STATUS_FAIL           Operation failed
180  *
181  ************************************************************************/
182CpaStatus
183icp_sal_userCyGetAvailableNumDynInstancesByDevPkg(Cpa32U *pNumCyInstances,
184						  Cpa32U devPkgID);
185
186/*************************************************************************
187  * @ingroup SalUser
188  * @description
189  *    This function gets the number of the available dynamic allocated
190  *    crypto instances which are from the specific device package and specific
191  *    accelerator.
192  *
193  * @context
194  *      This function is called from the user process context
195  *
196  * @assumptions
197  *      None
198  * @sideEffects
199  *      None
200  * @reentrant
201  *      No
202  * @threadSafe
203  *      Yes
204  *
205  * @retval CPA_STATUS_SUCCESS        No error
206  * @retval CPA_STATUS_FAIL           Operation failed
207  *
208  ************************************************************************/
209CpaStatus
210icp_sal_userCyGetAvailableNumDynInstancesByPkgAccel(Cpa32U *pNumCyInstances,
211						    Cpa32U devPkgID,
212						    Cpa32U accelerator_number);
213
214/*************************************************************************
215  * @ingroup SalUser
216  * @description
217  *    This function gets the number of the available dynamic allocated
218  *    compression instances which are from the specific device package.
219  *
220  * @context
221  *      This function is called from the user process context
222  *
223  * @assumptions
224  *      None
225  * @sideEffects
226  *      None
227  * @reentrant
228  *      No
229  * @threadSafe
230  *      Yes
231  *
232  * @retval CPA_STATUS_SUCCESS        No error
233  * @retval CPA_STATUS_FAIL           Operation failed
234  *
235  ************************************************************************/
236CpaStatus
237icp_sal_userDcGetAvailableNumDynInstancesByDevPkg(Cpa32U *pNumDcInstances,
238						  Cpa32U devPkgID);
239
240/*************************************************************************
241  * @ingroup SalUser
242  * @description
243  *    This function allocates crypto instances
244  *    from dynamic crypto instance pool
245  *     - it adds new allocated instances into crypto_services
246  *     - it initializes new allocated instances
247  *     - it starts new allocated instances
248  *
249  * @context
250  *      This function is called from the user process context
251  *
252  * @assumptions
253  *      None
254  * @sideEffects
255  *      None
256  * @reentrant
257  *      No
258  * @threadSafe
259  *      Yes
260  *
261  * @retval CPA_STATUS_SUCCESS        No error
262  * @retval CPA_STATUS_FAIL           Operation failed
263  *
264  ************************************************************************/
265CpaStatus icp_sal_userCyInstancesAlloc(Cpa32U numCyInstances,
266				       CpaInstanceHandle *pCyInstances);
267
268/*************************************************************************
269  * @ingroup SalUser
270  * @description
271  *    This function allocates crypto instances
272  *    from dynamic crypto instance pool
273  *    which are from the specific device package.
274  *     - it adds new allocated instances into crypto_services
275  *     - it initializes new allocated instances
276  *     - it starts new allocated instances
277  *
278  * @context
279  *      This function is called from the user process context
280  *
281  * @assumptions
282  *      None
283  * @sideEffects
284  *      None
285  * @reentrant
286  *      No
287  * @threadSafe
288  *      Yes
289  *
290  * @retval CPA_STATUS_SUCCESS        No error
291  * @retval CPA_STATUS_FAIL           Operation failed
292  *
293  ************************************************************************/
294CpaStatus icp_sal_userCyInstancesAllocByDevPkg(Cpa32U numCyInstances,
295					       CpaInstanceHandle *pCyInstances,
296					       Cpa32U devPkgID);
297
298/*************************************************************************
299  * @ingroup SalUser
300  * @description
301  *    This function allocates crypto instances
302  *    from dynamic crypto instance pool
303  *    which are from the specific device package and specific accelerator
304  *     - it adds new allocated instances into crypto_services
305  *     - it initializes new allocated instances
306  *     - it starts new allocated instances
307  *
308  * @context
309  *      This function is called from the user process context
310  *
311  * @assumptions
312  *      None
313  * @sideEffects
314  *      None
315  * @reentrant
316  *      No
317  * @threadSafe
318  *      Yes
319  *
320  * @retval CPA_STATUS_SUCCESS        No error
321  * @retval CPA_STATUS_FAIL           Operation failed
322  *
323  ************************************************************************/
324CpaStatus
325icp_sal_userCyInstancesAllocByPkgAccel(Cpa32U numCyInstances,
326				       CpaInstanceHandle *pCyInstances,
327				       Cpa32U devPkgID,
328				       Cpa32U accelerator_number);
329
330/*************************************************************************
331  * @ingroup SalUser
332  * @description
333  *    This function frees crypto instances allocated
334  *    from dynamic crypto instance pool
335  *     - it stops the instances
336  *     - it shutdowns the instances
337  *     - it removes the instances from crypto_services
338  *
339  * @context
340  *      This function is called from the user process context
341  *
342  * @assumptions
343  *      None
344  * @sideEffects
345  *      None
346  * @reentrant
347  *      No
348  * @threadSafe
349  *      Yes
350  *
351  * @retval CPA_STATUS_SUCCESS        No error
352  * @retval CPA_STATUS_FAIL           Operation failed
353  *
354  ************************************************************************/
355CpaStatus icp_sal_userCyFreeInstances(Cpa32U numCyInstances,
356				      CpaInstanceHandle *pCyInstances);
357
358/*************************************************************************
359  * @ingroup SalUser
360  * @description
361  *    This function allocates compression instances
362  *    from dynamic compression instance pool
363  *     - it adds new allocated instances into compression_services
364  *     - it initializes new allocated instances
365  *     - it starts new allocated instances
366  *
367  * @context
368  *      This function is called from the user process context
369  *
370  * @assumptions
371  *      None
372  * @sideEffects
373  *      None
374  * @reentrant
375  *      No
376  * @threadSafe
377  *      Yes
378  *
379  * @retval CPA_STATUS_SUCCESS        No error
380  * @retval CPA_STATUS_FAIL           Operation failed
381  *
382  ************************************************************************/
383CpaStatus icp_sal_userDcInstancesAlloc(Cpa32U numDcInstances,
384				       CpaInstanceHandle *pDcInstances);
385
386/*************************************************************************
387  * @ingroup SalUser
388  * @description
389  *    This function allocates compression instances
390  *    from dynamic compression instance pool
391  *    which are from the specific device package.
392  *     - it adds new allocated instances into compression_services
393  *     - it initializes new allocated instances
394  *     - it starts new allocated instances
395  *
396  * @context
397  *      This function is called from the user process context
398  *
399  * @assumptions
400  *      None
401  * @sideEffects
402  *      None
403  * @reentrant
404  *      No
405  * @threadSafe
406  *      Yes
407  *
408  * @retval CPA_STATUS_SUCCESS        No error
409  * @retval CPA_STATUS_FAIL           Operation failed
410  *
411  ************************************************************************/
412CpaStatus icp_sal_userDcInstancesAllocByDevPkg(Cpa32U numDcInstances,
413					       CpaInstanceHandle *pDcInstances,
414					       Cpa32U devPkgID);
415
416/*************************************************************************
417  * @ingroup SalUser
418  * @description
419  *    This function frees compression instances allocated
420  *    from dynamic compression instance pool
421  *     - it stops the instances
422  *     - it shutdowns the instances
423  *     - it removes the instances from compression_services
424  *
425  * @context
426  *      This function is called from the user process context
427  *
428  * @assumptions
429  *      None
430  * @sideEffects
431  *      None
432  * @reentrant
433  *      No
434  * @threadSafe
435  *      Yes
436  *
437  * @retval CPA_STATUS_SUCCESS        No error
438  * @retval CPA_STATUS_FAIL           Operation failed
439  *
440  ************************************************************************/
441CpaStatus icp_sal_userDcFreeInstances(Cpa32U numDcInstances,
442				      CpaInstanceHandle *pDcInstances);
443
444/*************************************************************************
445 * @ingroup SalUser
446 * @description
447 *    This function checks if new devices have been started and if so
448 *    starts to use them.
449 *
450 * @context
451 *      This function is called from the user process context
452 *      in threadless mode
453 *
454 * @assumptions
455 *      None
456 * @sideEffects
457 *      None
458 * @reentrant
459 *      No
460 * @threadSafe
461 *      No
462 *
463 * @retval CPA_STATUS_SUCCESS        No error
464 * @retval CPA_STATUS_FAIL           Operation failed
465 *
466 ************************************************************************/
467CpaStatus icp_sal_find_new_devices(void);
468
469/*************************************************************************
470 * @ingroup SalUser
471 * @description
472 *    This function polls device events.
473 *
474 * @context
475 *      This function is called from the user process context
476 *      in threadless mode
477 *
478 * @assumptions
479 *      None
480 * @sideEffects
481 *      In case a device has beed stoped or restarted the application
482 *      will get restarting/stop/shutdown events
483 * @reentrant
484 *      No
485 * @threadSafe
486 *      No
487 *
488 * @retval CPA_STATUS_SUCCESS        No error
489 * @retval CPA_STATUS_FAIL           Operation failed
490 *
491 ************************************************************************/
492CpaStatus icp_sal_poll_device_events(void);
493
494/*
495 * icp_adf_check_device
496 *
497 * @description:
498 *  This function checks the status of the firmware/hardware for a given device.
499 *  This function is used as part of the heartbeat functionality.
500 *
501 * @context
502 *      This function is called from the user process context
503 * @assumptions
504 *      None
505 * @sideEffects
506 *      In case a device is unresponsive the device will
507 *      be restarted.
508 * @reentrant
509 *      No
510 * @threadSafe
511 *      Yes
512 *
513 * @param[in] accelId                Device Id.
514 * @retval CPA_STATUS_SUCCESS        No error
515 * @retval CPA_STATUS_FAIL           Operation failed
516 */
517CpaStatus icp_sal_check_device(Cpa32U accelId);
518
519/*
520 * icp_adf_check_all_devices
521 *
522 * @description:
523 *  This function checks the status of the firmware/hardware for all devices.
524 *  This function is used as part of the heartbeat functionality.
525 *
526 * @context
527 *      This function is called from the user process context
528 * @assumptions
529 *      None
530 * @sideEffects
531 *      In case a device is unresponsive the device will
532 *      be restarted.
533 * @reentrant
534 *      No
535 * @threadSafe
536 *      Yes
537 *
538 * @retval CPA_STATUS_SUCCESS        No error
539 * @retval CPA_STATUS_FAIL           Operation failed
540 */
541CpaStatus icp_sal_check_all_devices(void);
542
543/*
544 * @ingroup icp_sal_user
545 * @description
546 *      This is a stub function to send messages to VF
547 *
548 * @context
549 *      None
550 *
551 * @assumptions
552 *      None
553 * @sideEffects
554 *      None
555 * @reentrant
556 *      Yes
557 * @threadSafe
558 *      Yes
559 *
560*/
561CpaStatus icp_sal_userSendMsgToVf(Cpa32U accelId, Cpa32U vfNum, Cpa32U message);
562
563/*
564 * @ingroup icp_sal_user
565 * @description
566 *      This is a stub function to send messages to PF
567 *
568 * @context
569 *      None
570 *
571 * @assumptions
572 *      None
573 * @sideEffects
574 *      None
575 * @reentrant
576 *      Yes
577 * @threadSafe
578 *      Yes
579 *
580*/
581CpaStatus icp_sal_userSendMsgToPf(Cpa32U accelId, Cpa32U message);
582
583/*
584 * @ingroup icp_sal_user
585 * @description
586 *      This is a stub function to get messages from VF
587 *
588 * @context
589 *      None
590 *
591 * @assumptions
592 *      None
593 * @sideEffects
594 *      None
595 * @reentrant
596 *      Yes
597 * @threadSafe
598 *      Yes
599 *
600*/
601CpaStatus icp_sal_userGetMsgFromVf(Cpa32U accelId,
602				   Cpa32U vfNum,
603				   Cpa32U *message,
604				   Cpa32U *messageCounter);
605
606/*
607 * @ingroup icp_sal_user
608 * @description
609 *      This is a stub function to get messages from PF
610 *
611 * @context
612 *      None
613 *
614 * @assumptions
615 *      None
616 * @sideEffects
617 *      None
618 * @reentrant
619 *      Yes
620 * @threadSafe
621 *      Yes
622 *
623*/
624CpaStatus icp_sal_userGetMsgFromPf(Cpa32U accelId,
625				   Cpa32U *message,
626				   Cpa32U *messageCounter);
627
628/*
629 * @ingroup icp_sal_user
630 * @description
631 *      This is a stub function to get pfvf comms status
632 *
633 * @context
634 *      None
635 *
636 * @assumptions
637 *      None
638 * @sideEffects
639 *      None
640 * @reentrant
641 *      Yes
642 * @threadSafe
643 *      Yes
644 *
645*/
646CpaStatus icp_sal_userGetPfVfcommsStatus(CpaBoolean *unreadMessage);
647
648/*
649 * @ingroup icp_sal_user
650 * @description
651 *      This is a stub function to reset the device
652 *
653 * @context
654 *     None
655 *
656 * @assumptions
657 *      None
658 * @sideEffects
659 *      None
660 * @reentrant
661 *      Yes
662 * @threadSafe
663 *      Yes
664 *
665*/
666CpaStatus icp_sal_reset_device(Cpa32U accelId);
667
668/**
669 *****************************************************************************
670 * @ingroup icp_sal_user
671 *      Retrieve number of in flight requests for a nrbg tx ring
672 *      from a crypto instance (Traditional API).
673 *
674 * @description
675 *      This function is a part of back-pressure mechanism.
676 *      Applications can query for inflight requests in
677 *      the appropriate service/ring on each instance
678 *      and select any instance with sufficient space or
679 *      the instance with the lowest number.
680 *
681 * @assumptions
682 *      None
683 * @sideEffects
684 *      None
685 * @blocking
686 *      None
687 * @reentrant
688 *      No
689 * @threadSafe
690 *      Yes
691 *
692 * @param[in]  instanceHandle         Crypto API instance handle.
693 * @param[out] maxInflightRequests    Maximal number of in flight requests.
694 * @param[out] numInflightRequests    Current number of in flight requests.
695 *
696 * @retval CPA_STATUS_SUCCESS        Function executed successfully.
697 * @retval CPA_STATUS_FAIL           Function failed.
698 * @pre
699 *      None
700 * @post
701 *      None
702 * @see
703 *      None
704 *
705 *****************************************************************************/
706CpaStatus icp_sal_NrbgGetInflightRequests(CpaInstanceHandle instanceHandle,
707					  Cpa32U *maxInflightRequests,
708					  Cpa32U *numInflightRequests);
709
710/**
711 *****************************************************************************
712 * @ingroup icp_sal_user
713 *      Retrieve number of in flight requests for a symmetric tx ring
714 *      from a crypto instance (Traditional API).
715 *
716 * @description
717 *      This function is a part of back-pressure mechanism.
718 *      Applications can query for inflight requests in
719 *      the appropriate service/ring on each instance
720 *      and select any instance with sufficient space or
721 *      the instance with the lowest number.
722 *
723 * @assumptions
724 *      None
725 * @sideEffects
726 *      None
727 * @blocking
728 *      None
729 * @reentrant
730 *      No
731 * @threadSafe
732 *      Yes
733 *
734 * @param[in]  instanceHandle         Crypto API instance handle.
735 * @param[out] maxInflightRequests    Maximal number of in flight requests.
736 * @param[out] numInflightRequests    Current number of in flight requests.
737 *
738 * @retval CPA_STATUS_SUCCESS        Function executed successfully.
739 * @retval CPA_STATUS_FAIL           Function failed.
740 * @pre
741 *      None
742 * @post
743 *      None
744 * @see
745 *      None
746 *
747 *****************************************************************************/
748CpaStatus icp_sal_SymGetInflightRequests(CpaInstanceHandle instanceHandle,
749					 Cpa32U *maxInflightRequests,
750					 Cpa32U *numInflightRequests);
751
752/**
753 *****************************************************************************
754 * @ingroup icp_sal_user
755 *      Retrieve number of in flight requests for an asymmetric tx ring
756 *      from a crypto instance (Traditional API).
757 *
758 * @description
759 *      This function is a part of back-pressure mechanism.
760 *      Applications can query the appropriate service/ring on each instance
761 *      and select any instance with sufficient space or
762 *      the instance with the lowest number.
763 *
764 * @assumptions
765 *      None
766 * @sideEffects
767 *      None
768 * @blocking
769 *      None
770 * @reentrant
771 *      No
772 * @threadSafe
773 *      Yes
774 *
775 * @param[in]  instanceHandle         Crypto API instance handle.
776 * @param[out] maxInflightRequests    Maximal number of in flight requests.
777 * @param[out] numInflightRequests    Current number of in flight requests.
778 *
779 * @retval CPA_STATUS_SUCCESS        Function executed successfully.
780 * @retval CPA_STATUS_FAIL           Function failed.
781 * @pre
782 *      None
783 * @post
784 *      None
785 * @see
786 *      None
787 *
788 *****************************************************************************/
789CpaStatus icp_sal_AsymGetInflightRequests(CpaInstanceHandle instanceHandle,
790					  Cpa32U *maxInflightRequests,
791					  Cpa32U *numInflightRequests);
792
793/**
794 *****************************************************************************
795 * @ingroup icp_sal_user
796 *      Retrieve number of in flight requests for a symmetric tx ring
797 *      from a crypto instancei (Data Plane API).
798 *
799 * @description
800 *      This function is a part of back-pressure mechanism.
801 *      Applications can query the appropriate service/ring on each instance
802 *      and select any instance with sufficient space or
803 *      the instance with the lowest number.
804 *
805 * @assumptions
806 *      None
807 * @sideEffects
808 *      None
809 * @blocking
810 *      None
811 * @reentrant
812 *      No
813 * @threadSafe
814 *      Yes
815 *
816 * @param[in]  instanceHandle         Crypto API instance handle.
817 * @param[out] maxInflightRequests    Maximal number of in flight requests.
818 * @param[out] numInflightRequests    Current number of in flight requests.
819 *
820 * @retval CPA_STATUS_SUCCESS        Function executed successfully.
821 * @retval CPA_STATUS_FAIL           Function failed.
822 * @pre
823 *      None
824 * @post
825 *      None
826 * @see
827 *      None
828 *
829 *****************************************************************************/
830CpaStatus icp_sal_dp_SymGetInflightRequests(CpaInstanceHandle instanceHandle,
831					    Cpa32U *maxInflightRequests,
832					    Cpa32U *numInflightRequests);
833
834/**
835 *****************************************************************************
836 * @ingroup icp_sal_user
837 *      Updates the CSR with queued requests in the asymmetric tx ring.
838 *
839 * @description
840 *      The function writes current shadow tail pointer of the asymmetric
841 *      TX ring into ring's CSR. Updating the CSR will notify the HW that
842 *      there are request(s) queued to be processed. The CSR is updated
843 *      always, disregarding the current value of shadow tail pointer and
844 *      the current CSR's tail value.
845 *
846 * @assumptions
847 *      None
848 * @sideEffects
849 *      None
850 * @blocking
851 *      None
852 * @reentrant
853 *      No
854 * @threadSafe
855 *      Yes
856 *
857 * @param[in] instanceHandle         Crypto API instance handle.
858 *
859 * @retval CPA_STATUS_SUCCESS        Function executed successfully.
860 * @retval CPA_STATUS_FAIL           Function failed.
861 * @pre
862 *      None
863 * @post
864 *      None
865 * @see
866 *      None
867 *
868 *****************************************************************************/
869CpaStatus icp_sal_AsymPerformOpNow(CpaInstanceHandle instanceHandle);
870
871/**
872 *****************************************************************************
873 * @ingroup icp_sal_setForceAEADMACVerify
874 *      Sets forceAEADMacVerify for particular instance to force HW MAC
875 *      validation.
876 *
877 * @description
878 * 	By default HW MAC verification is set to CPA_TRUE - this utility
879 * 	function allows to change default behavior.
880 *
881 * @assumptions
882 *      None
883 * @sideEffects
884 *      None
885 * @blocking
886 *      None
887 * @reentrant
888 *      No
889 * @threadSafe
890 *      No
891 *
892 * @param[in] instanceHandle         Crypto API instance handle.
893 * @param[in] forceAEADMacVerify     new value
894 *
895 * @retval CPA_STATUS_SUCCESS        Function executed successfully.
896 * @retval CPA_STATUS_FAIL           Function failed.
897 * @pre
898 *      None
899 * @post
900 *      None
901 * @see
902 *      None
903 *
904 *****************************************************************************/
905CpaStatus icp_sal_setForceAEADMACVerify(CpaInstanceHandle instanceHandle,
906					CpaBoolean forceAEADMacVerify);
907#endif
908