1 /* SPDX-License-Identifier: BSD-3-Clause */ 2 /* Copyright(c) 2007-2022 Intel Corporation */ 3 4 /** 5 *************************************************************************** 6 * @file lac_sym_partial.c common partial packet functions 7 * 8 * @ingroup LacSym 9 * 10 ***************************************************************************/ 11 12 /* 13 ******************************************************************************* 14 * Include public/global header files 15 ******************************************************************************* 16 */ 17 #include "cpa.h" 18 19 #include "icp_accel_devices.h" 20 #include "icp_adf_debug.h" 21 22 #include "lac_log.h" 23 #include "lac_sym.h" 24 #include "cpa_cy_sym.h" 25 #include "lac_common.h" 26 27 #include "lac_sym_partial.h" 28 29 CpaStatus 30 LacSym_PartialPacketStateCheck(CpaCySymPacketType packetType, 31 CpaCySymPacketType partialState) 32 { 33 CpaStatus status = CPA_STATUS_SUCCESS; 34 35 /* ASSUMPTION - partial requests on a given session must be issued 36 * sequentially to guarantee ordering 37 * (i.e. issuing partials on concurrent threads for a particular session 38 * just wouldn't work) 39 */ 40 41 /* state is no partial - only a partial is allowed */ 42 if (((CPA_CY_SYM_PACKET_TYPE_FULL == partialState) && 43 (CPA_CY_SYM_PACKET_TYPE_PARTIAL == packetType)) || 44 45 /* state is partial - only a partial or final partial is allowed */ 46 ((CPA_CY_SYM_PACKET_TYPE_PARTIAL == partialState) && 47 ((CPA_CY_SYM_PACKET_TYPE_PARTIAL == packetType) || 48 (CPA_CY_SYM_PACKET_TYPE_LAST_PARTIAL == packetType)))) { 49 status = CPA_STATUS_SUCCESS; 50 } else /* invalid sequence */ 51 { 52 LAC_INVALID_PARAM_LOG("invalid partial packet sequence"); 53 status = CPA_STATUS_INVALID_PARAM; 54 } 55 56 return status; 57 } 58 59 void 60 LacSym_PartialPacketStateUpdate(CpaCySymPacketType packetType, 61 CpaCySymPacketType *pPartialState) 62 { 63 /* if previous packet was either a full or ended a partial stream, 64 * update 65 * state to partial to indicate a new partial stream was created */ 66 if (CPA_CY_SYM_PACKET_TYPE_FULL == *pPartialState) { 67 *pPartialState = CPA_CY_SYM_PACKET_TYPE_PARTIAL; 68 } else { 69 /* if packet type is final - reset the partial state */ 70 if (CPA_CY_SYM_PACKET_TYPE_LAST_PARTIAL == packetType) { 71 *pPartialState = CPA_CY_SYM_PACKET_TYPE_FULL; 72 } 73 } 74 } 75