1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright(c) 2007-2022 Intel Corporation */
3 /*****************************************************************************
4  * @file icp_adf_transport_dp.h
5  *
6  * @description
7  *      File contains Public API definitions for ADF transport for data plane.
8  *
9  *****************************************************************************/
10 #ifndef ICP_ADF_TRANSPORT_DP_H
11 #define ICP_ADF_TRANSPORT_DP_H
12 
13 #include "cpa.h"
14 #include "icp_adf_transport.h"
15 
16 /*
17  * icp_adf_getQueueMemory
18  * Data plane support function - returns the pointer to next message on the ring
19  * or NULL if there is not enough space.
20  */
21 extern void icp_adf_getQueueMemory(icp_comms_trans_handle trans_handle,
22 				   Cpa32U numberRequests,
23 				   void **pCurrentQatMsg);
24 /*
25  * icp_adf_getSingleQueueAddr
26  * Data plane support function - returns the pointer to next message on the ring
27  * or NULL if there is not enough space - it also updates the shadow tail copy.
28  */
29 extern void icp_adf_getSingleQueueAddr(icp_comms_trans_handle trans_handle,
30 				       void **pCurrentQatMsg);
31 
32 /*
33  * icp_adf_getQueueNext
34  * Data plane support function - increments the tail pointer and returns
35  * the pointer to next message on the ring.
36  */
37 extern void icp_adf_getQueueNext(icp_comms_trans_handle trans_handle,
38 				 void **pCurrentQatMsg);
39 
40 /*
41  * icp_adf_updateQueueTail
42  * Data plane support function - Writes the tail shadow copy to the device.
43  */
44 extern void icp_adf_updateQueueTail(icp_comms_trans_handle trans_handle);
45 
46 /*
47  * icp_adf_isRingEmpty
48  * Data plane support function - check if the ring is empty
49  */
50 extern CpaBoolean icp_adf_isRingEmpty(icp_comms_trans_handle trans_handle);
51 
52 /*
53  * icp_adf_pollQueue
54  * Data plane support function - Poll messages from the queue.
55  */
56 extern CpaStatus icp_adf_pollQueue(icp_comms_trans_handle trans_handle,
57 				   Cpa32U response_quota);
58 
59 /*
60  * icp_adf_queueDataToSend
61  * LAC lite support function - Indicates if there is data on the ring to be
62  * send. This should only be called on request rings. If the function returns
63  * true then it is ok to call icp_adf_updateQueueTail() function on this ring.
64  */
65 extern CpaBoolean icp_adf_queueDataToSend(icp_comms_trans_handle trans_hnd);
66 
67 /*
68  * icp_adf_dp_getInflightRequests
69  * Retrieve in flight requests from the transport handle.
70  * Data plane API - no locks.
71  *
72  * Returns:
73  *   CPA_STATUS_SUCCESS   on success
74  *   CPA_STATUS_FAIL      on failure
75  */
76 extern CpaStatus
77 icp_adf_dp_getInflightRequests(icp_comms_trans_handle trans_handle,
78 			       Cpa32U *maxInflightRequests,
79 			       Cpa32U *numInflightRequests);
80 
81 #endif /* ICP_ADF_TRANSPORT_DP_H */
82