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 */
21extern 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 */
29extern 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 */
37extern 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 */
44extern 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 */
50extern 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 */
56extern 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 */
65extern 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 */
76extern CpaStatus
77icp_adf_dp_getInflightRequests(icp_comms_trans_handle trans_handle,
78			       Cpa32U *maxInflightRequests,
79			       Cpa32U *numInflightRequests);
80
81#endif /* ICP_ADF_TRANSPORT_DP_H */
82