1 /* SPDX-License-Identifier: BSD-3-Clause */ 2 /* Copyright(c) 2007-2022 Intel Corporation */ 3 /***************************************************************************** 4 * @file icp_adf_transport.h 5 * 6 * @description 7 * File contains Public API Definitions for ADF transport. 8 * 9 *****************************************************************************/ 10 #ifndef ICP_ADF_TRANSPORT_H 11 #define ICP_ADF_TRANSPORT_H 12 13 #include "cpa.h" 14 15 /* 16 * Enumeration on Transport Types exposed 17 */ 18 typedef enum icp_transport_type_e { 19 ICP_TRANS_TYPE_NONE = 0, 20 ICP_TRANS_TYPE_ETR, 21 ICP_TRANS_TYPE_DP_ETR, 22 ICP_TRANS_TYPE_ADMINREG, 23 ICP_TRANS_TYPE_DELIMIT 24 } icp_transport_type; 25 26 /* 27 * Enumeration on response delivery method 28 */ 29 typedef enum icp_resp_deliv_method_e { 30 ICP_RESP_TYPE_NONE = 0, 31 ICP_RESP_TYPE_IRQ, 32 ICP_RESP_TYPE_POLL, 33 ICP_RESP_TYPE_DELIMIT 34 } icp_resp_deliv_method; 35 36 /* 37 * Unique identifier of a transport handle 38 */ 39 typedef Cpa32U icp_trans_identifier; 40 41 /* 42 * Opaque Transport Handle 43 */ 44 typedef void *icp_comms_trans_handle; 45 46 /* 47 * Function Pointer invoked when a set of messages is received for the given 48 * transport handle 49 */ 50 typedef void (*icp_trans_callback)(void *pMsg); 51 52 /* 53 * icp_adf_getDynInstance 54 * 55 * Description: 56 * Get an available instance from dynamic instance pool 57 * 58 * Returns: 59 * CPA_STATUS_SUCCESS on success 60 * CPA_STATUS_FAIL on failure 61 * 62 */ 63 CpaStatus icp_adf_getDynInstance(icp_accel_dev_t *accel_dev, 64 adf_service_type_t stype, 65 Cpa32U *pinstance_id); 66 67 /* 68 * icp_adf_putDynInstance 69 * 70 * Description: 71 * Put back an instance to dynamic instance pool 72 * 73 * Returns: 74 * CPA_STATUS_SUCCESS on success 75 * CPA_STATUS_FAIL on failure 76 * 77 */ 78 CpaStatus icp_adf_putDynInstance(icp_accel_dev_t *accel_dev, 79 adf_service_type_t stype, 80 Cpa32U instance_id); 81 82 /* 83 * icp_adf_getNumAvailDynInstance 84 * 85 * Description: 86 * Get the number of the available dynamic instances 87 * 88 * Returns: 89 * CPA_STATUS_SUCCESS on success 90 * CPA_STATUS_FAIL on failure 91 * 92 */ 93 CpaStatus icp_adf_getNumAvailDynInstance(icp_accel_dev_t *accel_dev, 94 adf_service_type_t stype, 95 Cpa32U *num); 96 97 /* 98 * icp_adf_transGetFdForHandle 99 * 100 * Description: 101 * Get a file descriptor for a particular transaction handle. 102 * If more than one transaction handler 103 * are ever present, this will need to be refactored to 104 * return the appropriate fd of the appropriate bank. 105 * 106 * Returns: 107 * CPA_STATUS_SUCCESS on success 108 * CPA_STATUS_FAIL on failure 109 * 110 * 111 */ 112 CpaStatus icp_adf_transGetFdForHandle(icp_comms_trans_handle trans_hnd, 113 int *fd); 114 115 /* 116 * icp_adf_transCreateHandle 117 * 118 * Description: 119 * Create a transport handle 120 * 121 * Returns: 122 * CPA_STATUS_SUCCESS on success 123 * CPA_STATUS_FAIL on failure 124 * 125 * The message size is variable: requests can be 64 or 128 bytes, responses 126 * can be 16, 32 or 64 bytes. 127 * Supported num_msgs: 128 * 32, 64, 128, 256, 512, 1024, 2048 number of messages. 129 * 130 */ 131 CpaStatus icp_adf_transCreateHandle(icp_accel_dev_t *accel_dev, 132 icp_transport_type trans_type, 133 const char *section, 134 const Cpa32U accel_nr, 135 const Cpa32U bank_nr, 136 const char *service_name, 137 const icp_adf_ringInfoService_t info, 138 icp_trans_callback callback, 139 icp_resp_deliv_method resp, 140 const Cpa32U num_msgs, 141 const Cpa32U msg_size, 142 icp_comms_trans_handle *trans_handle); 143 144 /* 145 * icp_adf_transReinitHandle 146 * 147 * Description: 148 * Reinitialize a transport handle 149 * 150 * Returns: 151 * CPA_STATUS_SUCCESS on success 152 * CPA_STATUS_FAIL on failure 153 * 154 * The message size is variable: requests can be 64 or 128 bytes, responses 155 * can be 16, 32 or 64 bytes. 156 * Supported num_msgs: 157 * 32, 64, 128, 256, 512, 1024, 2048 number of messages. 158 * 159 */ 160 CpaStatus icp_adf_transReinitHandle(icp_accel_dev_t *accel_dev, 161 icp_transport_type trans_type, 162 const char *section, 163 const Cpa32U accel_nr, 164 const Cpa32U bank_nr, 165 const char *service_name, 166 const icp_adf_ringInfoService_t info, 167 icp_trans_callback callback, 168 icp_resp_deliv_method resp, 169 const Cpa32U num_msgs, 170 const Cpa32U msg_size, 171 icp_comms_trans_handle *trans_handle); 172 173 /* 174 * icp_adf_transGetHandle 175 * 176 * Description: 177 * Gets a pointer to a previously created transport handle 178 * 179 * Returns: 180 * CPA_STATUS_SUCCESS on success 181 * CPA_STATUS_FAIL on failure 182 * 183 */ 184 CpaStatus icp_adf_transGetHandle(icp_accel_dev_t *accel_dev, 185 icp_transport_type trans_type, 186 const char *section, 187 const Cpa32U accel_nr, 188 const Cpa32U bank_nr, 189 const char *service_name, 190 icp_comms_trans_handle *trans_handle); 191 192 /* 193 * icp_adf_transReleaseHandle 194 * 195 * Description: 196 * Release a transport handle 197 * 198 * Returns: 199 * CPA_STATUS_SUCCESS on success 200 * CPA_STATUS_FAIL on failure 201 */ 202 CpaStatus icp_adf_transReleaseHandle(icp_comms_trans_handle trans_handle); 203 204 /* 205 * icp_adf_transResetHandle 206 * 207 * Description: 208 * Reset a transport handle 209 * 210 * Returns: 211 * CPA_STATUS_SUCCESS on success 212 * CPA_STATUS_FAIL on failure 213 */ 214 CpaStatus icp_adf_transResetHandle(icp_comms_trans_handle trans_handle); 215 216 /* 217 * icp_adf_transPutMsg 218 * 219 * Description: 220 * Put Message onto the transport handle 221 * 222 * Returns: 223 * CPA_STATUS_SUCCESS on success 224 * CPA_STATUS_FAIL on failure 225 */ 226 CpaStatus icp_adf_transPutMsg(icp_comms_trans_handle trans_handle, 227 Cpa32U *inBufs, 228 Cpa32U bufLen); 229 230 /* 231 * icp_adf_getInflightRequests 232 * 233 * Description: 234 * Retrieve in flight requests from the transport handle. 235 * 236 * Returns: 237 * CPA_STATUS_SUCCESS on success 238 * CPA_STATUS_FAIL on failure 239 */ 240 CpaStatus icp_adf_getInflightRequests(icp_comms_trans_handle trans_handle, 241 Cpa32U *maxInflightRequests, 242 Cpa32U *numInflightRequests); 243 244 /* 245 * icp_adf_transPutMsgSync 246 * 247 * Description: 248 * Put Message onto the transport handle and waits for a response. 249 * Note: Not all transports support method. 250 * 251 * Returns: 252 * CPA_STATUS_SUCCESS on success 253 * CPA_STATUS_FAIL on failure 254 */ 255 CpaStatus icp_adf_transPutMsgSync(icp_comms_trans_handle trans_handle, 256 Cpa32U *inBuf, 257 Cpa32U *outBuf, 258 Cpa32U bufsLen); 259 260 /* 261 * icp_adf_transGetRingNum 262 * 263 * Description: 264 * Function Returns ring number of the given trans_handle 265 * 266 * Returns: 267 * CPA_STATUS_SUCCESS on success 268 * CPA_STATUS_FAIL on failure 269 */ 270 CpaStatus icp_adf_transGetRingNum(icp_comms_trans_handle trans_handle, 271 Cpa32U *ringNum); 272 273 /* 274 * icp_adf_flush_requests 275 * 276 * Description: 277 * Function flushes the enqueued requests on the trans_handle 278 * 279 * Returns: 280 * CPA_STATUS_SUCCESS on success 281 * CPA_STATUS_FAIL on failure 282 */ 283 CpaStatus icp_adf_flush_requests(icp_comms_trans_handle trans_handle); 284 285 #endif /* ICP_ADF_TRANSPORT_H */ 286