Lines Matching +full:hdr +full:- +full:engine
2 * Copyright 2008-2012 Freescale Semiconductor Inc.
61 return XX_LockIntrSpinlock(((t_FmPcdKg *)h_FmPcdKg)->h_HwSpinlock); in KgHwLock()
67 XX_UnlockIntrSpinlock(((t_FmPcdKg *)h_FmPcdKg)->h_HwSpinlock, intFlags); in KgHwUnlock()
73 return FmPcdLockSpinlock(((t_FmPcdKgScheme *)h_Scheme)->p_Lock); in KgSchemeLock()
79 FmPcdUnlockSpinlock(((t_FmPcdKgScheme *)h_Scheme)->p_Lock, intFlags); in KgSchemeUnlock()
85 return FmPcdLockTryLock(((t_FmPcdKgScheme *)h_Scheme)->p_Lock); in KgSchemeFlagTryLock()
91 FmPcdLockUnlock(((t_FmPcdKgScheme *)h_Scheme)->p_Lock); in KgSchemeFlagUnlock()
97 struct fman_kg_regs *regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; in WriteKgarWait()
194 static uint8_t GetGenHdrCode(e_NetHeaderType hdr, e_FmPcdHdrIndex hdrIndex, bool ignoreProtocolVali… in GetGenHdrCode() argument
197 switch (hdr) in GetGenHdrCode()
251 switch (hdr) in GetGenHdrCode()
300 static t_GenericCodes GetGenFieldCode(e_NetHeaderType hdr, t_FmPcdFields field, bool ignoreProtocol… in GetGenFieldCode() argument
303 switch (hdr) in GetGenFieldCode()
352 switch (hdr) in GetGenFieldCode()
421 static t_KnownFieldsMasks GetKnownProtMask(t_FmPcd *p_FmPcd, e_NetHeaderType hdr, e_FmPcdHdrIndex i… in GetKnownProtMask() argument
425 switch (hdr) in GetKnownProtMask()
544 if (p_FmPcd->fmRevInfo.majorRev < 6) in GetKnownProtMask()
704 /* bitOffset 1-7 --> mask 0x1-0x7F */ in GetExtractedOrMask()
716 /* bitOffset 25-31 --> mask 0xFE-0x80 */ in GetExtractedOrMask()
717 numOfOnesToClear = (uint8_t)(bitOffset-24); in GetExtractedOrMask()
719 /* bitOffset 9-15 --> mask 0xFE-0x80 */ in GetExtractedOrMask()
721 numOfOnesToClear = (uint8_t)(bitOffset-8); in GetExtractedOrMask()
724 /* bitOffset 8-24 for FQID, 8 for PP --> no mask (0xFF)*/ in GetExtractedOrMask()
737 p_FmPcdKg = p_FmPcd->p_FmPcdKg; in IncSchemeOwners()
739 /* for each scheme - update owners counters */ in IncSchemeOwners()
740 for (i = 0; i < p_BindPort->numOfSchemes; i++) in IncSchemeOwners()
742 relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, p_BindPort->schemesIds[i]); in IncSchemeOwners()
745 p_Scheme = &p_FmPcdKg->schemes[relativeSchemeId]; in IncSchemeOwners()
749 p_Scheme->owners++; in IncSchemeOwners()
762 p_FmPcdKg = p_FmPcd->p_FmPcdKg; in DecSchemeOwners()
764 /* for each scheme - update owners counters */ in DecSchemeOwners()
765 for (i = 0; i < p_BindPort->numOfSchemes; i++) in DecSchemeOwners()
767 relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, p_BindPort->schemesIds[i]); in DecSchemeOwners()
770 p_Scheme = &p_FmPcdKg->schemes[relativeSchemeId]; in DecSchemeOwners()
773 ASSERT_COND(p_Scheme->owners); in DecSchemeOwners()
775 p_Scheme->owners--; in DecSchemeOwners()
784 ASSERT_COND(p_Scheme->valid); in UpdateRequiredActionFlag()
787 p_Scheme->requiredActionFlag = TRUE; in UpdateRequiredActionFlag()
790 p_Scheme->requiredAction = 0; in UpdateRequiredActionFlag()
791 p_Scheme->requiredActionFlag = FALSE; in UpdateRequiredActionFlag()
805 if (p_FmPcd->h_Hc) in KgWriteSp()
806 return FmHcKgWriteSp(p_FmPcd->h_Hc, hardwarePortId, spReg, add); in KgWriteSp()
808 p_KgRegs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; in KgWriteSp()
812 intFlags = KgHwLock(p_FmPcd->p_FmPcdKg); in KgWriteSp()
816 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in KgWriteSp()
825 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in KgWriteSp()
835 p_KgRegs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; in KgWriteCpp()
837 if (p_FmPcd->h_Hc) in KgWriteCpp()
839 err = FmHcKgWriteCpp(p_FmPcd->h_Hc, hardwarePortId, cppReg); in KgWriteCpp()
843 intFlags = KgHwLock(p_FmPcd->p_FmPcdKg); in KgWriteCpp()
847 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in KgWriteCpp()
856 tmpKgpeCpp = (uint32_t)(p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].baseEntry / 8); in BuildCppReg()
857 …tmpKgpeCpp |= (uint32_t)(((p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].sizeOfGrp / 8) - 1) << FM… in BuildCppReg()
886 sel = (uint8_t)(0x01 << (7- (entryId % CLS_PLAN_NUM_PER_GRP))); in ReadClsPlanBlockActionReg()
897 ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); in PcdKgErrorException()
898 p_KgRegs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; in PcdKgErrorException()
902 p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC); in PcdKgErrorException()
910 …p_FmPcd->f_FmPcdIndexedException(p_FmPcd->h_App,e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW, (uint16_t)… in PcdKgErrorException()
916 p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW); in PcdKgErrorException()
928 ASSERT_COND(p_FmPcd->guestId != NCSW_MASTER_ID); in KgInitGuest()
934 kgAlloc.numOfSchemes = p_FmPcd->p_FmPcdKg->numOfSchemes; in KgInitGuest()
935 kgAlloc.guestId = p_FmPcd->guestId; in KgInitGuest()
938 replyLength = sizeof(uint32_t) + p_FmPcd->p_FmPcdKg->numOfSchemes*sizeof(uint8_t); in KgInitGuest()
939 if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, in KgInitGuest()
947 if (replyLength != (sizeof(uint32_t) + p_FmPcd->p_FmPcdKg->numOfSchemes*sizeof(uint8_t))) in KgInitGuest()
949 …memcpy(p_FmPcd->p_FmPcdKg->schemesIds, (uint8_t*)(reply.replyBody),p_FmPcd->p_FmPcdKg->numOfScheme… in KgInitGuest()
957 struct fman_kg_regs *p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; in KgInitMaster()
959 ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID); in KgInitMaster()
961 if (p_FmPcd->exceptions & FM_EX_KG_DOUBLE_ECC) in KgInitMaster()
962 FmEnableRamsEcc(p_FmPcd->h_Fm); in KgInitMaster()
964 fman_kg_init(p_Regs, p_FmPcd->exceptions, GET_NIA_BMI_AC_ENQ_FRAME(p_FmPcd)); in KgInitMaster()
967 FmRegisterIntr(p_FmPcd->h_Fm, in KgInitMaster()
976 if (p_FmPcd->p_FmPcdKg->numOfSchemes) in KgInitMaster()
979 p_FmPcd->p_FmPcdKg->numOfSchemes, in KgInitMaster()
980 p_FmPcd->guestId, in KgInitMaster()
981 p_FmPcd->p_FmPcdKg->schemesIds); in KgInitMaster()
991 ASSERT_COND(!p_Scheme->valid); in ValidateSchemeSw()
992 if (p_Scheme->netEnvId != ILLEGAL_NETENV) in ValidateSchemeSw()
993 FmPcdIncNetEnvOwners(p_Scheme->h_FmPcd, p_Scheme->netEnvId); in ValidateSchemeSw()
994 p_Scheme->valid = TRUE; in ValidateSchemeSw()
999 if (p_Scheme->owners) in InvalidateSchemeSw()
1002 if (p_Scheme->netEnvId != ILLEGAL_NETENV) in InvalidateSchemeSw()
1003 FmPcdDecNetEnvOwners(p_Scheme->h_FmPcd, p_Scheme->netEnvId); in InvalidateSchemeSw()
1004 p_Scheme->valid = FALSE; in InvalidateSchemeSw()
1013 t_FmPcd *p_FmPcd = (t_FmPcd *)(p_Scheme->h_FmPcd); in BuildSchemeRegs()
1038 if (p_SchemeParams->netEnvParams.numOfDistinctionUnits > FM_PCD_MAX_NUM_OF_DISTINCTION_UNITS) in BuildSchemeRegs()
1043 if (!p_SchemeParams->alwaysDirect) in BuildSchemeRegs()
1045 p_Scheme->netEnvId = FmPcdGetNetEnvId(p_SchemeParams->netEnvParams.h_NetEnv); in BuildSchemeRegs()
1046 netEnvParams.netEnvId = p_Scheme->netEnvId; in BuildSchemeRegs()
1047 netEnvParams.numOfDistinctionUnits = p_SchemeParams->netEnvParams.numOfDistinctionUnits; in BuildSchemeRegs()
1048 …memcpy(netEnvParams.unitIds, p_SchemeParams->netEnvParams.unitIds, (sizeof(uint8_t))*p_SchemeParam… in BuildSchemeRegs()
1052 p_Scheme->matchVector = netEnvParams.vector; in BuildSchemeRegs()
1056 p_Scheme->matchVector = SCHEME_ALWAYS_DIRECT; in BuildSchemeRegs()
1057 p_Scheme->netEnvId = ILLEGAL_NETENV; in BuildSchemeRegs()
1060 if (p_SchemeParams->nextEngine == e_FM_PCD_INVALID) in BuildSchemeRegs()
1061 RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Next Engine of the scheme is not Valid")); in BuildSchemeRegs()
1063 if (p_SchemeParams->bypassFqidGeneration) in BuildSchemeRegs()
1066 if ((p_FmPcd->fmRevInfo.majorRev != 4) && (p_FmPcd->fmRevInfo.majorRev < 6)) in BuildSchemeRegs()
1069 if (p_SchemeParams->baseFqid) in BuildSchemeRegs()
1073 if (!p_SchemeParams->baseFqid) in BuildSchemeRegs()
1076 if (p_SchemeParams->nextEngine == e_FM_PCD_PLCR) in BuildSchemeRegs()
1078 direct = p_SchemeParams->kgNextEngineParams.plcrProfile.direct; in BuildSchemeRegs()
1079 p_Scheme->directPlcr = direct; in BuildSchemeRegs()
1080 … absolute = (bool)(p_SchemeParams->kgNextEngineParams.plcrProfile.sharedProfile ? TRUE : FALSE); in BuildSchemeRegs()
1086 … profileId = p_SchemeParams->kgNextEngineParams.plcrProfile.profileSelect.directRelativeProfileId; in BuildSchemeRegs()
1091 …profileId = p_SchemeParams->kgNextEngineParams.plcrProfile.profileSelect.indirectProfile.fqidOffse… in BuildSchemeRegs()
1092 …shift = p_SchemeParams->kgNextEngineParams.plcrProfile.profileSelect.indirectProfile.fqidOffsetShi… in BuildSchemeRegs()
1093 …numOfProfiles = p_SchemeParams->kgNextEngineParams.plcrProfile.profileSelect.indirectProfile.numOf… in BuildSchemeRegs()
1097 if (p_SchemeParams->nextEngine == e_FM_PCD_CC) in BuildSchemeRegs()
1100 …if ((p_SchemeParams->kgNextEngineParams.cc.plcrNext) && (p_SchemeParams->kgNextEngineParams.cc.byp… in BuildSchemeRegs()
1102 if ((p_FmPcd->fmRevInfo.majorRev != 4) && (p_FmPcd->fmRevInfo.majorRev < 6)) in BuildSchemeRegs()
1107 err = FmPcdCcGetGrpParams(p_SchemeParams->kgNextEngineParams.cc.h_CcTree, in BuildSchemeRegs()
1108 p_SchemeParams->kgNextEngineParams.cc.grpId, in BuildSchemeRegs()
1113 p_Scheme->ccUnits = grpBits; in BuildSchemeRegs()
1115 if ((p_SchemeParams->kgNextEngineParams.cc.plcrNext) && in BuildSchemeRegs()
1116 (!p_SchemeParams->kgNextEngineParams.cc.bypassPlcrProfileGeneration)) in BuildSchemeRegs()
1118 if (p_SchemeParams->kgNextEngineParams.cc.plcrProfile.sharedProfile) in BuildSchemeRegs()
1121 direct = p_SchemeParams->kgNextEngineParams.cc.plcrProfile.direct; in BuildSchemeRegs()
1124 …profileId = p_SchemeParams->kgNextEngineParams.cc.plcrProfile.profileSelect.directRelativeProfileI… in BuildSchemeRegs()
1129 …profileId = p_SchemeParams->kgNextEngineParams.cc.plcrProfile.profileSelect.indirectProfile.fqidOf… in BuildSchemeRegs()
1130 …shift = p_SchemeParams->kgNextEngineParams.cc.plcrProfile.profileSelect.indirectProfile.fqidOffset… in BuildSchemeRegs()
1131 …numOfProfiles = p_SchemeParams->kgNextEngineParams.cc.plcrProfile.profileSelect.indirectProfile.nu… in BuildSchemeRegs()
1137 if ((p_SchemeParams->nextEngine == e_FM_PCD_PLCR) || in BuildSchemeRegs()
1138 ((p_SchemeParams->nextEngine == e_FM_PCD_CC) && in BuildSchemeRegs()
1139 (p_SchemeParams->kgNextEngineParams.cc.plcrNext) && in BuildSchemeRegs()
1140 (!p_SchemeParams->kgNextEngineParams.cc.bypassPlcrProfileGeneration))) in BuildSchemeRegs()
1152 p_Scheme->relativeProfileId = profileId; in BuildSchemeRegs()
1157 p_Scheme->nextRelativePlcrProfile = TRUE; in BuildSchemeRegs()
1158 p_Scheme->relativeProfileId = profileId; in BuildSchemeRegs()
1159 p_Scheme->numOfProfiles = numOfProfiles; in BuildSchemeRegs()
1166 if (p_SchemeParams->bypassFqidGeneration && p_SchemeParams->numOfUsedExtractedOrs) in BuildSchemeRegs()
1169 if (p_SchemeParams->bypassFqidGeneration && in BuildSchemeRegs()
1170 p_SchemeParams->useHash && in BuildSchemeRegs()
1171 p_SchemeParams->keyExtractAndHashParams.hashDistributionNumOfFqids) in BuildSchemeRegs()
1178 switch (p_SchemeParams->nextEngine) in BuildSchemeRegs()
1181 /* add to mode register - NIA */ in BuildSchemeRegs()
1184 …tmpReg |= (uint32_t)(p_SchemeParams->kgNextEngineParams.plcrProfile.sharedProfile ? NIA_PLCR_ABSOL… in BuildSchemeRegs()
1185 /* initialize policer profile command - */ in BuildSchemeRegs()
1189 p_SchemeRegs->kgse_ppc = (uint32_t)profileId; in BuildSchemeRegs()
1200 ppcTmp |= ((uint32_t)(numOfProfiles-1) << KG_SCH_PP_MASK_SHIFT); in BuildSchemeRegs()
1203 p_SchemeRegs->kgse_ppc = ppcTmp; in BuildSchemeRegs()
1207 /* mode reg - define NIA */ in BuildSchemeRegs()
1210 p_SchemeRegs->kgse_ccbs = grpBits; in BuildSchemeRegs()
1213 if (p_SchemeParams->kgNextEngineParams.cc.plcrNext) in BuildSchemeRegs()
1215 if (!p_SchemeParams->kgNextEngineParams.cc.bypassPlcrProfileGeneration) in BuildSchemeRegs()
1219 …D_VALUE, ("It is illegal to request a shared profile in a scheme that is in a KG->CC->PLCR flow")); in BuildSchemeRegs()
1223 p_SchemeRegs->kgse_ppc = (uint32_t)profileId; in BuildSchemeRegs()
1234 ppcTmp |= ((uint32_t)(numOfProfiles-1) << KG_SCH_PP_MASK_SHIFT); in BuildSchemeRegs()
1237 p_SchemeRegs->kgse_ppc = ppcTmp; in BuildSchemeRegs()
1243 if (p_SchemeParams->kgNextEngineParams.doneAction == e_FM_PCD_DROP_FRAME) in BuildSchemeRegs()
1249 RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("Next engine not supported")); in BuildSchemeRegs()
1251 p_SchemeRegs->kgse_mode = tmpReg; in BuildSchemeRegs()
1253 p_SchemeRegs->kgse_mv = p_Scheme->matchVector; in BuildSchemeRegs()
1256 if (p_SchemeParams->overrideStorageProfile) in BuildSchemeRegs()
1258 p_SchemeRegs->kgse_om |= KG_SCH_OM_VSPE; in BuildSchemeRegs()
1260 if (p_SchemeParams->storageProfile.direct) in BuildSchemeRegs()
1262 profileId = p_SchemeParams->storageProfile.profileSelect.directRelativeProfileId; in BuildSchemeRegs()
1268 …profileId = p_SchemeParams->storageProfile.profileSelect.indirectProfile.fqidOffsetRelativeProfile… in BuildSchemeRegs()
1269 shift = p_SchemeParams->storageProfile.profileSelect.indirectProfile.fqidOffsetShift; in BuildSchemeRegs()
1270 … numOfProfiles = p_SchemeParams->storageProfile.profileSelect.indirectProfile.numOfProfiles; in BuildSchemeRegs()
1279 tmpReg |= ((uint32_t)(numOfProfiles-1) << KG_SCH_VSP_MASK_SHIFT); in BuildSchemeRegs()
1283 p_SchemeRegs->kgse_vsp = tmpReg; in BuildSchemeRegs()
1285 p_Scheme->vspe = TRUE; in BuildSchemeRegs()
1289 p_SchemeRegs->kgse_vsp = KG_SCH_VSP_NO_KSP_EN; in BuildSchemeRegs()
1292 if (p_SchemeParams->useHash) in BuildSchemeRegs()
1294 p_KeyAndHash = &p_SchemeParams->keyExtractAndHashParams; in BuildSchemeRegs()
1296 if (p_KeyAndHash->numOfUsedExtracts >= FM_PCD_KG_MAX_NUM_OF_EXTRACTS_PER_KEY) in BuildSchemeRegs()
1300 p_SchemeRegs->kgse_dv0 = p_KeyAndHash->privateDflt0; in BuildSchemeRegs()
1303 p_SchemeRegs->kgse_dv1 = p_KeyAndHash->privateDflt1; in BuildSchemeRegs()
1305 if (!p_SchemeParams->bypassFqidGeneration) in BuildSchemeRegs()
1307 …if (!p_KeyAndHash->hashDistributionNumOfFqids || !POWER_OF_2(p_KeyAndHash->hashDistributionNumOfFq… in BuildSchemeRegs()
1309 if ((p_KeyAndHash->hashDistributionNumOfFqids-1) & p_SchemeParams->baseFqid) in BuildSchemeRegs()
1315 for ( i=0 ;i<p_KeyAndHash->numOfUsedDflts ; i++) in BuildSchemeRegs()
1317 switch (p_KeyAndHash->dflts[i].type) in BuildSchemeRegs()
1320 tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_MAC_ADDR_SHIFT); in BuildSchemeRegs()
1323 tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_TCI_SHIFT); in BuildSchemeRegs()
1326 tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_ENET_TYPE_SHIFT); in BuildSchemeRegs()
1329 … tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_PPP_SESSION_ID_SHIFT); in BuildSchemeRegs()
1332 … tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_PPP_PROTOCOL_ID_SHIFT); in BuildSchemeRegs()
1335 tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_MPLS_LABEL_SHIFT); in BuildSchemeRegs()
1338 tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_IP_ADDR_SHIFT); in BuildSchemeRegs()
1341 tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_PROTOCOL_TYPE_SHIFT); in BuildSchemeRegs()
1344 tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_IP_TOS_TC_SHIFT); in BuildSchemeRegs()
1347 tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_L4_PORT_SHIFT); in BuildSchemeRegs()
1350 tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_IPSEC_SPI_SHIFT); in BuildSchemeRegs()
1353 tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_L4_PORT_SHIFT); in BuildSchemeRegs()
1356 tmpReg |= (p_KeyAndHash->dflts[i].dfltSelect << KG_SCH_DEF_TCP_FLAG_SHIFT); in BuildSchemeRegs()
1360 swDefaults[numOfSwDefaults].dfltSelect = p_KeyAndHash->dflts[i].dfltSelect; in BuildSchemeRegs()
1365 swDefaults[numOfSwDefaults].dfltSelect = p_KeyAndHash->dflts[i].dfltSelect; in BuildSchemeRegs()
1370 swDefaults[numOfSwDefaults].dfltSelect = p_KeyAndHash->dflts[i].dfltSelect; in BuildSchemeRegs()
1377 p_SchemeRegs->kgse_ekdv = tmpReg; in BuildSchemeRegs()
1385 for ( i=0 ;i<p_KeyAndHash->numOfUsedExtracts ; i++) in BuildSchemeRegs()
1387 p_Extract = &p_KeyAndHash->extractArray[i]; in BuildSchemeRegs()
1388 switch (p_Extract->type) in BuildSchemeRegs()
1393 p_LocalExtractsArray->extractsArray[i].id = GetKnownFieldId(KG_SCH_KN_PORT_ID); in BuildSchemeRegs()
1394 p_LocalExtractsArray->extractsArray[i].known = TRUE; in BuildSchemeRegs()
1397 switch (p_Extract->extractByHdr.hdr) in BuildSchemeRegs()
1401 p_Extract->extractByHdr.hdr = HEADER_TYPE_UDP; in BuildSchemeRegs()
1405 switch (p_Extract->extractByHdr.type) in BuildSchemeRegs()
1409 … if (p_Extract->extractByHdr.extractByHdrType.fromHdr.offset >= UDP_HEADER_SIZE) in BuildSchemeRegs()
1411 …p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_Scheme->netEnvId, HEADER_TYPE_UDP_ENCAP_… in BuildSchemeRegs()
1412 … p_Extract->extractByHdr.extractByHdrType.fromHdr.offset -= UDP_HEADER_SIZE; in BuildSchemeRegs()
1413 p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; in BuildSchemeRegs()
1417 p_Extract->extractByHdr.hdr = HEADER_TYPE_UDP; in BuildSchemeRegs()
1418 p_Extract->extractByHdr.ignoreProtocolValidation = FALSE; in BuildSchemeRegs()
1422 … switch (p_Extract->extractByHdr.extractByHdrType.fromField.field.udpEncapEsp) in BuildSchemeRegs()
1428 p_Extract->extractByHdr.hdr = HEADER_TYPE_UDP; in BuildSchemeRegs()
1431 … p_Extract->extractByHdr.type = e_FM_PCD_EXTRACT_FROM_HDR; in BuildSchemeRegs()
1432 …p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_Scheme->netEnvId, HEADER_TYPE_UDP_ENCAP_… in BuildSchemeRegs()
1433 … /*p_Extract->extractByHdr.extractByHdrType.fromField.offset += ESP_SPI_OFFSET;*/ in BuildSchemeRegs()
1434 p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; in BuildSchemeRegs()
1437 … p_Extract->extractByHdr.type = e_FM_PCD_EXTRACT_FROM_HDR; in BuildSchemeRegs()
1438 …p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_Scheme->netEnvId, HEADER_TYPE_UDP_ENCAP_… in BuildSchemeRegs()
1439 … p_Extract->extractByHdr.extractByHdrType.fromField.offset += ESP_SEQ_NUM_OFFSET; in BuildSchemeRegs()
1440 p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; in BuildSchemeRegs()
1445 … switch (p_Extract->extractByHdr.extractByHdrType.fullField.udpEncapEsp) in BuildSchemeRegs()
1451 p_Extract->extractByHdr.hdr = HEADER_TYPE_UDP; in BuildSchemeRegs()
1454 … p_Extract->extractByHdr.type = e_FM_PCD_EXTRACT_FROM_HDR; in BuildSchemeRegs()
1455 …p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_Scheme->netEnvId, HEADER_TYPE_UDP_ENCAP_… in BuildSchemeRegs()
1456 … p_Extract->extractByHdr.extractByHdrType.fromHdr.size = ESP_SPI_SIZE; in BuildSchemeRegs()
1457 … p_Extract->extractByHdr.extractByHdrType.fromHdr.offset = ESP_SPI_OFFSET; in BuildSchemeRegs()
1458 p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; in BuildSchemeRegs()
1461 … p_Extract->extractByHdr.type = e_FM_PCD_EXTRACT_FROM_HDR; in BuildSchemeRegs()
1462 …p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_Scheme->netEnvId, HEADER_TYPE_UDP_ENCAP_… in BuildSchemeRegs()
1463 … p_Extract->extractByHdr.extractByHdrType.fromHdr.size = ESP_SEQ_NUM_SIZE; in BuildSchemeRegs()
1464 … p_Extract->extractByHdr.extractByHdrType.fromHdr.offset = ESP_SEQ_NUM_OFFSET; in BuildSchemeRegs()
1465 p_Extract->extractByHdr.ignoreProtocolValidation = TRUE; in BuildSchemeRegs()
1474 switch (p_Extract->extractByHdr.type) in BuildSchemeRegs()
1479 …code = GetGenHdrCode(p_Extract->extractByHdr.hdr, p_Extract->extractByHdr.hdrIndex, p_Extract->ext… in BuildSchemeRegs()
1481 offset = p_Extract->extractByHdr.extractByHdrType.fromHdr.offset; in BuildSchemeRegs()
1482 size = p_Extract->extractByHdr.extractByHdrType.fromHdr.size; in BuildSchemeRegs()
1487 code = GetGenFieldCode(p_Extract->extractByHdr.hdr, in BuildSchemeRegs()
1488 …p_Extract->extractByHdr.extractByHdrType.fromField.field, p_Extract->extractByHdr.ignoreProtocolVa… in BuildSchemeRegs()
1489 offset = p_Extract->extractByHdr.extractByHdrType.fromField.offset; in BuildSchemeRegs()
1490 size = p_Extract->extractByHdr.extractByHdrType.fromField.size; in BuildSchemeRegs()
1493 if (!p_Extract->extractByHdr.ignoreProtocolValidation) in BuildSchemeRegs()
1495 … /* if we have a known field for it - use it, otherwise use generic */ in BuildSchemeRegs()
1496 … bitMask = GetKnownProtMask(p_FmPcd, p_Extract->extractByHdr.hdr, p_Extract->extractByHdr.hdrIndex, in BuildSchemeRegs()
1497 p_Extract->extractByHdr.extractByHdrType.fullField); in BuildSchemeRegs()
1502 … p_LocalExtractsArray->extractsArray[i].id = GetKnownFieldId(bitMask); in BuildSchemeRegs()
1503 p_LocalExtractsArray->extractsArray[i].known = TRUE; in BuildSchemeRegs()
1512 /* tmp - till we cover more headers under generic */ in BuildSchemeRegs()
1527 code = GetGenCode(p_Extract->extractNonHdr.src, &offset); in BuildSchemeRegs()
1528 offset += p_Extract->extractNonHdr.offset; in BuildSchemeRegs()
1529 size = p_Extract->extractNonHdr.size; in BuildSchemeRegs()
1557 genTmp |= (uint32_t)((size - 1) << KG_SCH_GEN_SIZE_SHIFT); in BuildSchemeRegs()
1565 p_SchemeRegs->kgse_gec[currGenId] = genTmp; in BuildSchemeRegs()
1567 p_LocalExtractsArray->extractsArray[i].id = currGenId++; in BuildSchemeRegs()
1568 p_LocalExtractsArray->extractsArray[i].known = FALSE; in BuildSchemeRegs()
1572 p_SchemeRegs->kgse_ekfc = knownTmp; in BuildSchemeRegs()
1578 if (p_KeyAndHash->numOfUsedMasks > FM_PCD_KG_NUM_OF_EXTRACT_MASKS) in BuildSchemeRegs()
1583 for ( i=0 ;i<p_KeyAndHash->numOfUsedMasks ; i++) in BuildSchemeRegs()
1585 /* Get the relative id of the extract (for known 0-0x1f, for generic 0-7) */ in BuildSchemeRegs()
1586 id = p_LocalExtractsArray->extractsArray[p_KeyAndHash->masks[i].extractArrayIndex].id; in BuildSchemeRegs()
1589 if (p_LocalExtractsArray->extractsArray[p_KeyAndHash->masks[i].extractArrayIndex].known) in BuildSchemeRegs()
1594 /* Get the shift of the offset field (depending on i) - may in BuildSchemeRegs()
1598 selectTmp |= p_KeyAndHash->masks[i].offset << shift; in BuildSchemeRegs()
1600 fqbTmp |= p_KeyAndHash->masks[i].offset << shift; in BuildSchemeRegs()
1609 maskTmp |= (p_KeyAndHash->masks[i].mask << shift) ; in BuildSchemeRegs()
1611 p_SchemeRegs->kgse_bmch = selectTmp; in BuildSchemeRegs()
1612 p_SchemeRegs->kgse_bmcl = maskTmp; in BuildSchemeRegs()
1616 if (p_KeyAndHash->hashShift > MAX_HASH_SHIFT) in BuildSchemeRegs()
1621 if (p_KeyAndHash->hashDistributionFqidsShift > MAX_DIST_FQID_SHIFT) in BuildSchemeRegs()
1629 …tmpReg |= ((p_KeyAndHash->hashDistributionNumOfFqids - 1) << p_KeyAndHash->hashDistributionFqidsSh… in BuildSchemeRegs()
1630 tmpReg |= p_KeyAndHash->hashShift << KG_SCH_HASH_CONFIG_SHIFT_SHIFT; in BuildSchemeRegs()
1632 if (p_KeyAndHash->symmetricHash) in BuildSchemeRegs()
1634 …if ((!!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_MACSRC) != !!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_MACD… in BuildSchemeRegs()
1635 …(!!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_IPSRC1) != !!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_IPDST1))… in BuildSchemeRegs()
1636 …(!!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_IPSRC2) != !!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_IPDST2))… in BuildSchemeRegs()
1637 …(!!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_L4PSRC) != !!(p_SchemeRegs->kgse_ekfc & KG_SCH_KN_L4PDST))) in BuildSchemeRegs()
1644 p_SchemeRegs->kgse_hc = tmpReg; in BuildSchemeRegs()
1652 orderedArray[p_KeyAndHash->numOfUsedExtracts - currGenId - 1]. in BuildSchemeRegs()
1654 num_of_generic - currGenId in BuildSchemeRegs()
1655 num_of_known - p_KeyAndHash->numOfUsedExtracts - currGenId in BuildSchemeRegs()
1658 for (i=0;i<p_KeyAndHash->numOfUsedExtracts ; i++) in BuildSchemeRegs()
1660 if (p_LocalExtractsArray->extractsArray[i].known) in BuildSchemeRegs()
1662 ASSERT_COND(curr<(p_KeyAndHash->numOfUsedExtracts - currGenId)); in BuildSchemeRegs()
1666 … /* we compare the id of the current extract with the id of the extract in the orderedArray[j-1] in BuildSchemeRegs()
1668 while ((j > 0) && (p_LocalExtractsArray->extractsArray[i].id < in BuildSchemeRegs()
1669 p_LocalExtractsArray->extractsArray[p_Scheme->orderedArray[j-1]].id)) in BuildSchemeRegs()
1671 p_Scheme->orderedArray[j] = in BuildSchemeRegs()
1672 p_Scheme->orderedArray[j-1]; in BuildSchemeRegs()
1673 j--; in BuildSchemeRegs()
1675 p_Scheme->orderedArray[j] = (uint8_t)i; in BuildSchemeRegs()
1681 …idx = (uint8_t)(p_KeyAndHash->numOfUsedExtracts - currGenId + p_LocalExtractsArray->extractsArray[… in BuildSchemeRegs()
1683 p_Scheme->orderedArray[idx]= (uint8_t)i; in BuildSchemeRegs()
1691 p_SchemeRegs->kgse_ekfc = 0; in BuildSchemeRegs()
1692 p_SchemeRegs->kgse_ekdv = 0; in BuildSchemeRegs()
1693 p_SchemeRegs->kgse_bmch = 0; in BuildSchemeRegs()
1694 p_SchemeRegs->kgse_bmcl = 0; in BuildSchemeRegs()
1695 p_SchemeRegs->kgse_hc = 0; in BuildSchemeRegs()
1696 p_SchemeRegs->kgse_dv0 = 0; in BuildSchemeRegs()
1697 p_SchemeRegs->kgse_dv1 = 0; in BuildSchemeRegs()
1700 if (p_SchemeParams->bypassFqidGeneration) in BuildSchemeRegs()
1701 p_SchemeRegs->kgse_hc |= KG_SCH_HASH_CONFIG_NO_FQID; in BuildSchemeRegs()
1704 if ( p_SchemeParams->schemeCounter.update) in BuildSchemeRegs()
1705 p_SchemeRegs->kgse_spc = p_SchemeParams->schemeCounter.value; in BuildSchemeRegs()
1709 if (p_SchemeParams->numOfUsedExtractedOrs + currGenId > FM_KG_NUM_OF_GENERIC_REGS) in BuildSchemeRegs()
1713 for ( i=0 ;i<p_SchemeParams->numOfUsedExtractedOrs ; i++) in BuildSchemeRegs()
1716 p_Scheme->extractedOrs = TRUE; in BuildSchemeRegs()
1718 p_ExtractOr = &p_SchemeParams->extractedOrs[i]; in BuildSchemeRegs()
1719 switch (p_ExtractOr->type) in BuildSchemeRegs()
1727 …code = GetGenHdrCode(p_ExtractOr->extractByHdr.hdr, p_ExtractOr->extractByHdr.hdrIndex, p_ExtractO… in BuildSchemeRegs()
1729 offset = p_ExtractOr->extractionOffset; in BuildSchemeRegs()
1734 code = GetGenCode(p_ExtractOr->src, &offset); in BuildSchemeRegs()
1735 offset += p_ExtractOr->extractionOffset; in BuildSchemeRegs()
1747 if (!!p_ExtractOr->bitOffsetInFqid == !!p_ExtractOr->bitOffsetInPlcrProfile) in BuildSchemeRegs()
1756 FQID: extracted OR byte may be shifted right 1-31 bits to effect parts of the FQID. in BuildSchemeRegs()
1759 ------------------------ in BuildSchemeRegs()
1761 ------------------------ in BuildSchemeRegs()
1762 -------- in BuildSchemeRegs()
1764 -------- in BuildSchemeRegs()
1766 Policer Profile: extracted OR byte may be shifted right 1-15 bits to effect parts of the in BuildSchemeRegs()
1770 -------- in BuildSchemeRegs()
1772 -------- in BuildSchemeRegs()
1773 -------- in BuildSchemeRegs()
1775 -------- in BuildSchemeRegs()
1782 ------------------------ -------- in BuildSchemeRegs()
1784 ------------------------ -------- in BuildSchemeRegs()
1785 -------- in BuildSchemeRegs()
1787 -------- in BuildSchemeRegs()
1791 if (p_ExtractOr->bitOffsetInFqid) in BuildSchemeRegs()
1793 if (p_ExtractOr->bitOffsetInFqid > MAX_KG_SCH_FQID_BIT_OFFSET ) in BuildSchemeRegs()
1795 if (p_ExtractOr->bitOffsetInFqid<8) in BuildSchemeRegs()
1796 genTmp |= (uint32_t)((p_ExtractOr->bitOffsetInFqid+24) << KG_SCH_GEN_SIZE_SHIFT); in BuildSchemeRegs()
1798 genTmp |= (uint32_t)((p_ExtractOr->bitOffsetInFqid-8) << KG_SCH_GEN_SIZE_SHIFT); in BuildSchemeRegs()
1799 p_ExtractOr->mask &= GetExtractedOrMask(p_ExtractOr->bitOffsetInFqid, TRUE); in BuildSchemeRegs()
1803 if (p_ExtractOr->bitOffsetInPlcrProfile > MAX_KG_SCH_PP_BIT_OFFSET ) in BuildSchemeRegs()
1805 p_Scheme->bitOffsetInPlcrProfile = p_ExtractOr->bitOffsetInPlcrProfile; in BuildSchemeRegs()
1806 genTmp |= (uint32_t)((p_ExtractOr->bitOffsetInPlcrProfile+16) << KG_SCH_GEN_SIZE_SHIFT); in BuildSchemeRegs()
1807 p_ExtractOr->mask &= GetExtractedOrMask(p_ExtractOr->bitOffsetInPlcrProfile, FALSE); in BuildSchemeRegs()
1810 genTmp |= (uint32_t)(p_ExtractOr->extractionOffset << KG_SCH_GEN_DEF_SHIFT); in BuildSchemeRegs()
1814 genTmp |= (uint32_t)(p_ExtractOr->mask << KG_SCH_GEN_MASK_SHIFT); in BuildSchemeRegs()
1815 p_SchemeRegs->kgse_gec[currGenId++] = genTmp; in BuildSchemeRegs()
1820 p_SchemeRegs->kgse_gec[i] = 0; in BuildSchemeRegs()
1824 if (p_SchemeParams->baseFqid & ~0x00FFFFFF) in BuildSchemeRegs()
1825 RETURN_ERROR(MAJOR, E_INVALID_VALUE, ("baseFqid must be between 1 and 2^24-1")); in BuildSchemeRegs()
1827 fqbTmp |= p_SchemeParams->baseFqid; in BuildSchemeRegs()
1828 p_SchemeRegs->kgse_fqb = fqbTmp; in BuildSchemeRegs()
1830 p_Scheme->nextEngine = p_SchemeParams->nextEngine; in BuildSchemeRegs()
1831 p_Scheme->doneAction = p_SchemeParams->kgNextEngineParams.doneAction; in BuildSchemeRegs()
1838 /* Inter-module API routines */
1851 if (p_Grp->numOfOptions >= FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)) in FmPcdKgBuildClsPlanGrp()
1856 if (!p_FmPcd->p_FmPcdKg->clsPlanGrps[i].used) in FmPcdKgBuildClsPlanGrp()
1861 p_FmPcd->p_FmPcdKg->clsPlanGrps[i].used = TRUE; in FmPcdKgBuildClsPlanGrp()
1863 p_Grp->clsPlanGrpId = (uint8_t)i; in FmPcdKgBuildClsPlanGrp()
1865 if (p_Grp->numOfOptions == 0) in FmPcdKgBuildClsPlanGrp()
1866 p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId = (uint8_t)i; in FmPcdKgBuildClsPlanGrp()
1868 p_ClsPlanGrp = &p_FmPcd->p_FmPcdKg->clsPlanGrps[i]; in FmPcdKgBuildClsPlanGrp()
1869 p_ClsPlanGrp->netEnvId = p_Grp->netEnvId; in FmPcdKgBuildClsPlanGrp()
1870 p_ClsPlanGrp->owners = 0; in FmPcdKgBuildClsPlanGrp()
1871 FmPcdSetClsPlanGrpId(p_FmPcd, p_Grp->netEnvId, p_Grp->clsPlanGrpId); in FmPcdKgBuildClsPlanGrp()
1872 if (p_Grp->numOfOptions != 0) in FmPcdKgBuildClsPlanGrp()
1873 FmPcdIncNetEnvOwners(p_FmPcd, p_Grp->netEnvId); in FmPcdKgBuildClsPlanGrp()
1875 p_ClsPlanGrp->sizeOfGrp = (uint16_t)(1 << p_Grp->numOfOptions); in FmPcdKgBuildClsPlanGrp()
1877 if (p_ClsPlanGrp->sizeOfGrp < CLS_PLAN_NUM_PER_GRP) in FmPcdKgBuildClsPlanGrp()
1878 p_ClsPlanGrp->sizeOfGrp = CLS_PLAN_NUM_PER_GRP; in FmPcdKgBuildClsPlanGrp()
1879 if (p_FmPcd->guestId == NCSW_MASTER_ID) in FmPcdKgBuildClsPlanGrp()
1881 …err = KgAllocClsPlanEntries(h_FmPcd, p_ClsPlanGrp->sizeOfGrp, p_FmPcd->guestId, &p_ClsPlanGrp->bas… in FmPcdKgBuildClsPlanGrp()
1896 kgAlloc.guestId = p_FmPcd->guestId; in FmPcdKgBuildClsPlanGrp()
1897 kgAlloc.numOfClsPlanEntries = p_ClsPlanGrp->sizeOfGrp; in FmPcdKgBuildClsPlanGrp()
1900 replyLength = (sizeof(uint32_t) + sizeof(p_ClsPlanGrp->baseEntry)); in FmPcdKgBuildClsPlanGrp()
1901 if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, in FmPcdKgBuildClsPlanGrp()
1910 if (replyLength != (sizeof(uint32_t) + sizeof(p_ClsPlanGrp->baseEntry))) in FmPcdKgBuildClsPlanGrp()
1915 p_ClsPlanGrp->baseEntry = *(uint8_t*)(reply.replyBody); in FmPcdKgBuildClsPlanGrp()
1919 p_ClsPlanSet->baseEntry = p_ClsPlanGrp->baseEntry; in FmPcdKgBuildClsPlanGrp()
1920 p_ClsPlanSet->numOfClsPlanEntries = p_ClsPlanGrp->sizeOfGrp; in FmPcdKgBuildClsPlanGrp()
1923 for (i = 0; i<p_Grp->numOfOptions; i++) in FmPcdKgBuildClsPlanGrp()
1925 oredVectors |= p_Grp->optVectors[i]; in FmPcdKgBuildClsPlanGrp()
1926 /* save an array of used options - the indexes represent the power of 2 index */ in FmPcdKgBuildClsPlanGrp()
1927 p_ClsPlanGrp->optArray[i] = p_Grp->options[i]; in FmPcdKgBuildClsPlanGrp()
1932 for (j = 0; j<p_ClsPlanGrp->sizeOfGrp; j++) in FmPcdKgBuildClsPlanGrp()
1933 p_ClsPlanSet->vectors[j] = ~oredVectors; in FmPcdKgBuildClsPlanGrp()
1935 for (i = 0; i<p_Grp->numOfOptions; i++) in FmPcdKgBuildClsPlanGrp()
1943 * If ethernet-BC is option 1 it gets entry 2 in the table. Entry 2 in FmPcdKgBuildClsPlanGrp()
1944 * now represents a frame with ethernet-BC header - so the bit in FmPcdKgBuildClsPlanGrp()
1945 * representing ethernet-BC should be set and all other option bits in FmPcdKgBuildClsPlanGrp()
1947 * Entries 2,3,6,7,10... also have ethernet-BC and therefore have bit in FmPcdKgBuildClsPlanGrp()
1959 for (j = 0; j<p_ClsPlanGrp->sizeOfGrp; j++) in FmPcdKgBuildClsPlanGrp()
1962 p_ClsPlanSet->vectors[j] |= p_Grp->optVectors[i]; in FmPcdKgBuildClsPlanGrp()
1979 if (p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].owners) in FmPcdKgDestroyClsPlanGrp()
1985 … FmPcdSetClsPlanGrpId(p_FmPcd, p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].netEnvId, ILLEGAL_CLS_PLAN); in FmPcdKgDestroyClsPlanGrp()
1987 if (grpId == p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId) in FmPcdKgDestroyClsPlanGrp()
1988 p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId = ILLEGAL_CLS_PLAN; in FmPcdKgDestroyClsPlanGrp()
1990 FmPcdDecNetEnvOwners(p_FmPcd, p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].netEnvId); in FmPcdKgDestroyClsPlanGrp()
1993 if (p_FmPcd->guestId == NCSW_MASTER_ID) in FmPcdKgDestroyClsPlanGrp()
1995 p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].sizeOfGrp, in FmPcdKgDestroyClsPlanGrp()
1996 p_FmPcd->guestId, in FmPcdKgDestroyClsPlanGrp()
1997 p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].baseEntry); in FmPcdKgDestroyClsPlanGrp()
2002 kgAlloc.guestId = p_FmPcd->guestId; in FmPcdKgDestroyClsPlanGrp()
2003 kgAlloc.numOfClsPlanEntries = p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].sizeOfGrp; in FmPcdKgDestroyClsPlanGrp()
2004 kgAlloc.clsPlanBase = p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].baseEntry; in FmPcdKgDestroyClsPlanGrp()
2008 err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, in FmPcdKgDestroyClsPlanGrp()
2033 memset(&p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId], 0, sizeof(t_FmPcdKgClsPlanGrp)); in FmPcdKgDestroyClsPlanGrp()
2046 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); in FmPcdKgBuildBindPortToSchemes()
2047 SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); in FmPcdKgBuildBindPortToSchemes()
2050 for (i = 0; i<p_BindPort->numOfSchemes; i++) in FmPcdKgBuildBindPortToSchemes()
2052 relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, p_BindPort->schemesIds[i]); in FmPcdKgBuildBindPortToSchemes()
2058 p_Scheme = &p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId]; in FmPcdKgBuildBindPortToSchemes()
2062 … if ((p_Scheme->netEnvId != p_BindPort->netEnvId) && (p_Scheme->netEnvId != ILLEGAL_NETENV)) in FmPcdKgBuildBindPortToSchemes()
2063 …RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Port may not be bound to requested scheme - differ in netEn… in FmPcdKgBuildBindPortToSchemes()
2065 /* if next engine is private port policer profile, we need to check that it is valid */ in FmPcdKgBuildBindPortToSchemes()
2066 HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, p_BindPort->hardwarePortId); in FmPcdKgBuildBindPortToSchemes()
2067 if (p_Scheme->nextRelativePlcrProfile) in FmPcdKgBuildBindPortToSchemes()
2069 for (j = 0;j<p_Scheme->numOfProfiles;j++) in FmPcdKgBuildBindPortToSchemes()
2071 ASSERT_COND(p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].h_FmPort); in FmPcdKgBuildBindPortToSchemes()
2072 …if (p_Scheme->relativeProfileId+j >= p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles) in FmPcdKgBuildBindPortToSchemes()
2074 …crIsProfileValid(p_FmPcd, (uint16_t)(p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase … in FmPcdKgBuildBindPortToSchemes()
2078 if (!p_BindPort->useClsPlan) in FmPcdKgBuildBindPortToSchemes()
2084 … it also may not be bound to schemes that go to CC with units that are options - so we OR in FmPcdKgBuildBindPortToSchemes()
2086 if ((p_Scheme->matchVector != SCHEME_ALWAYS_DIRECT) || p_Scheme->ccUnits) in FmPcdKgBuildBindPortToSchemes()
2090 … netEnvId = (p_Scheme->netEnvId == ILLEGAL_NETENV)? p_BindPort->netEnvId:p_Scheme->netEnvId; in FmPcdKgBuildBindPortToSchemes()
2091 tmp = (p_Scheme->matchVector == SCHEME_ALWAYS_DIRECT)? 0:p_Scheme->matchVector; in FmPcdKgBuildBindPortToSchemes()
2092 tmp |= p_Scheme->ccUnits; in FmPcdKgBuildBindPortToSchemes()
2099 …NVALID_STATE, ("Port (without clsPlan) may not be bound to requested scheme - uses clsPlan options… in FmPcdKgBuildBindPortToSchemes()
2107 schemesPerPortVector |= 1 << (31 - p_BindPort->schemesIds[i]); in FmPcdKgBuildBindPortToSchemes()
2125 err = KgWriteSp(p_FmPcd, p_SchemeBind->hardwarePortId, spReg, TRUE); in FmPcdKgBindPortToSchemes()
2144 err = KgWriteSp(p_FmPcd, p_SchemeBind->hardwarePortId, spReg, FALSE); in FmPcdKgUnbindPortToSchemes()
2157 return p_Scheme->valid; in FmPcdKgIsSchemeValidSw()
2164 if (p_FmPcd->p_FmPcdKg->schemes[schemeId].matchVector == SCHEME_ALWAYS_DIRECT) in KgIsSchemeAlwaysDirect()
2176 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); in FmPcdKgAllocSchemes()
2178 /* This routine is issued only on master core of master partition - in FmPcdKgAllocSchemes()
2183 if (!p_FmPcd->p_FmPcdKg->schemesMng[i].allocated) in FmPcdKgAllocSchemes()
2185 p_FmPcd->p_FmPcdKg->schemesMng[i].allocated = TRUE; in FmPcdKgAllocSchemes()
2186 p_FmPcd->p_FmPcdKg->schemesMng[i].ownerId = guestId; in FmPcdKgAllocSchemes()
2195 for (j--; j; j--) in FmPcdKgAllocSchemes()
2197 p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[j]].allocated = FALSE; in FmPcdKgAllocSchemes()
2198 p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[j]].ownerId = 0; in FmPcdKgAllocSchemes()
2214 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); in FmPcdKgFreeSchemes()
2216 /* This routine is issued only on master core of master partition - in FmPcdKgFreeSchemes()
2221 if (!p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].allocated) in FmPcdKgFreeSchemes()
2225 if (p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].ownerId != guestId) in FmPcdKgFreeSchemes()
2229 p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].allocated = FALSE; in FmPcdKgFreeSchemes()
2230 p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].ownerId = 0; in FmPcdKgFreeSchemes()
2242 /* This routine is issued only on master core of master partition - in KgAllocClsPlanEntries()
2257 if (!p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].allocated) in KgAllocClsPlanEntries()
2277 p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[j].allocated = TRUE; in KgAllocClsPlanEntries()
2278 p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[j].ownerId = guestId; in KgAllocClsPlanEntries()
2296 /* This routine is issued only on master core of master partition - in KgFreeClsPlanEntries()
2305 ASSERT_COND(p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].allocated); in KgFreeClsPlanEntries()
2306 ASSERT_COND(guestId == p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].ownerId); in KgFreeClsPlanEntries()
2307 p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].allocated = FALSE; in KgFreeClsPlanEntries()
2308 p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].ownerId = 0; in KgFreeClsPlanEntries()
2314 struct fman_kg_regs *p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; in KgEnable()
2316 ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); in KgEnable()
2322 struct fman_kg_regs *p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; in KgDisable()
2324 ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); in KgDisable()
2336 ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm)); in KgSetClsPlan()
2337 p_FmPcdKgPortRegs = &p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->clsPlanRegs; in KgSetClsPlan()
2339 intFlags = KgHwLock(p_FmPcd->p_FmPcdKg); in KgSetClsPlan()
2340 for (i=p_Set->baseEntry;i<p_Set->baseEntry+p_Set->numOfClsPlanEntries;i+=8) in KgSetClsPlan()
2346 ASSERT_COND(IN_RANGE(0, (j - p_Set->baseEntry), FM_PCD_MAX_NUM_OF_CLS_PLANS-1)); in KgSetClsPlan()
2347 …WRITE_UINT32(p_FmPcdKgPortRegs->kgcpe[j % CLS_PLAN_NUM_PER_GRP],p_Set->vectors[j - p_Set->baseEntr… in KgSetClsPlan()
2353 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in KgSetClsPlan()
2357 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in KgSetClsPlan()
2366 if (p_FmPcdParams->numOfSchemes > FM_PCD_KG_NUM_OF_SCHEMES) in KgConfig()
2382 if (FmIsMaster(p_FmPcd->h_Fm)) in KgConfig()
2384 …p_FmPcdKg->p_FmPcdKgRegs = (struct fman_kg_regs *)UINT_TO_PTR(FmGetPcdKgBaseAddr(p_FmPcdParams->h… in KgConfig()
2385 p_FmPcd->exceptions |= DEFAULT_fmPcdKgErrorExceptions; in KgConfig()
2386 …p_FmPcdKg->p_IndirectAccessRegs = (u_FmPcdKgIndirectAccessRegs *)&p_FmPcdKg->p_FmPcdKgRegs->fmkg_i… in KgConfig()
2389 p_FmPcdKg->numOfSchemes = p_FmPcdParams->numOfSchemes; in KgConfig()
2390 if ((p_FmPcd->guestId == NCSW_MASTER_ID) && !p_FmPcdKg->numOfSchemes) in KgConfig()
2392 p_FmPcdKg->numOfSchemes = FM_PCD_KG_NUM_OF_SCHEMES; in KgConfig()
2393 …DBG(WARNING, ("numOfSchemes was defined 0 by user, re-defined by driver to FM_PCD_KG_NUM_OF_SCHEME… in KgConfig()
2396 p_FmPcdKg->emptyClsPlanGrpId = ILLEGAL_CLS_PLAN; in KgConfig()
2405 p_FmPcd->p_FmPcdKg->h_HwSpinlock = XX_InitSpinlock(); in KgInit()
2406 if (!p_FmPcd->p_FmPcdKg->h_HwSpinlock) in KgInit()
2409 if (p_FmPcd->guestId == NCSW_MASTER_ID) in KgInit()
2416 if (p_FmPcd->p_FmPcdKg->h_HwSpinlock) in KgInit()
2417 XX_FreeSpinlock(p_FmPcd->p_FmPcdKg->h_HwSpinlock); in KgInit()
2431 FmUnregisterIntr(p_FmPcd->h_Fm, e_FM_MOD_KG, 0, e_FM_INTR_TYPE_ERR); in KgFree()
2433 if (p_FmPcd->guestId == NCSW_MASTER_ID) in KgFree()
2436 p_FmPcd->p_FmPcdKg->numOfSchemes, in KgFree()
2437 p_FmPcd->guestId, in KgFree()
2438 p_FmPcd->p_FmPcdKg->schemesIds); in KgFree()
2442 if (p_FmPcd->p_FmPcdKg->h_HwSpinlock) in KgFree()
2443 XX_FreeSpinlock(p_FmPcd->p_FmPcdKg->h_HwSpinlock); in KgFree()
2451 kgAlloc.numOfSchemes = p_FmPcd->p_FmPcdKg->numOfSchemes; in KgFree()
2452 kgAlloc.guestId = p_FmPcd->guestId; in KgFree()
2454 …memcpy(kgAlloc.schemesIds, p_FmPcd->p_FmPcdKg->schemesIds, (sizeof(uint8_t))*kgAlloc.numOfSchemes); in KgFree()
2458 if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession, in KgFree()
2469 if (p_FmPcd->p_FmPcdKg->h_HwSpinlock) in KgFree()
2470 XX_FreeSpinlock(p_FmPcd->p_FmPcdKg->h_HwSpinlock); in KgFree()
2490 p_GrpParams->netEnvId = netEnvId; in FmPcdKgSetOrBindToClsPlanGrp()
2498 if (p_GrpParams->grpExists) in FmPcdKgSetOrBindToClsPlanGrp()
2501 *p_ClsPlanGrpId = p_GrpParams->clsPlanGrpId; in FmPcdKgSetOrBindToClsPlanGrp()
2516 *p_ClsPlanGrpId = p_GrpParams->clsPlanGrpId; in FmPcdKgSetOrBindToClsPlanGrp()
2518 if (p_FmPcd->h_Hc) in FmPcdKgSetOrBindToClsPlanGrp()
2521 err = FmHcPcdKgSetClsPlan(p_FmPcd->h_Hc, p_ClsPlanSet); in FmPcdKgSetOrBindToClsPlanGrp()
2538 if (*p_ClsPlanGrpId == p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId) in FmPcdKgSetOrBindToClsPlanGrp()
2543 p_ClsPlanGrp = &p_FmPcd->p_FmPcdKg->clsPlanGrps[*p_ClsPlanGrpId]; in FmPcdKgSetOrBindToClsPlanGrp()
2546 p_ClsPlanGrp->owners++; in FmPcdKgSetOrBindToClsPlanGrp()
2549 …memcpy(p_OptArray, &p_FmPcd->p_FmPcdKg->clsPlanGrps[*p_ClsPlanGrpId].optArray, FM_PCD_MAX_NUM_OF_O… in FmPcdKgSetOrBindToClsPlanGrp()
2552 err = BindPortToClsPlanGrp(p_FmPcd, hardwarePortId, p_GrpParams->clsPlanGrpId); in FmPcdKgSetOrBindToClsPlanGrp()
2562 t_FmPcdKgClsPlanGrp *p_ClsPlanGrp = &p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId]; in FmPcdKgDeleteOrUnbindPortToClsPlanGrp()
2572 ASSERT_COND(p_ClsPlanGrp->owners); in FmPcdKgDeleteOrUnbindPortToClsPlanGrp()
2573 p_ClsPlanGrp->owners--; in FmPcdKgDeleteOrUnbindPortToClsPlanGrp()
2575 if (!p_ClsPlanGrp->owners) in FmPcdKgDeleteOrUnbindPortToClsPlanGrp()
2577 if (p_FmPcd->h_Hc) in FmPcdKgDeleteOrUnbindPortToClsPlanGrp()
2579 err = FmHcPcdKgDeleteClsPlan(p_FmPcd->h_Hc, clsPlanGrpId); in FmPcdKgDeleteOrUnbindPortToClsPlanGrp()
2592 p_ClsPlanSet->baseEntry = p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].baseEntry; in FmPcdKgDeleteOrUnbindPortToClsPlanGrp()
2593 … p_ClsPlanSet->numOfClsPlanEntries = p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].sizeOfGrp; in FmPcdKgDeleteOrUnbindPortToClsPlanGrp()
2606 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); in FmPcdKgGetRequiredAction()
2608 return p_FmPcd->p_FmPcdKg->schemes[schemeId].requiredAction; in FmPcdKgGetRequiredAction()
2615 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); in FmPcdKgGetRequiredActionFlag()
2617 return p_FmPcd->p_FmPcdKg->schemes[schemeId].requiredActionFlag; in FmPcdKgGetRequiredActionFlag()
2624 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); in FmPcdKgIsDirectPlcr()
2626 return p_FmPcd->p_FmPcdKg->schemes[schemeId].directPlcr; in FmPcdKgIsDirectPlcr()
2634 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); in FmPcdKgGetRelativeProfileId()
2636 return p_FmPcd->p_FmPcdKg->schemes[schemeId].relativeProfileId; in FmPcdKgGetRelativeProfileId()
2643 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); in FmPcdKgIsDistrOnPlcrProfile()
2645 if ((p_FmPcd->p_FmPcdKg->schemes[schemeId].extractedOrs && in FmPcdKgIsDistrOnPlcrProfile()
2646 p_FmPcd->p_FmPcdKg->schemes[schemeId].bitOffsetInPlcrProfile) || in FmPcdKgIsDistrOnPlcrProfile()
2647 p_FmPcd->p_FmPcdKg->schemes[schemeId].nextRelativePlcrProfile) in FmPcdKgIsDistrOnPlcrProfile()
2658 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].valid); in FmPcdKgGetNextEngine()
2660 return p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextEngine; in FmPcdKgGetNextEngine()
2667 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid); in FmPcdKgGetDoneAction()
2669 return p_FmPcd->p_FmPcdKg->schemes[schemeId].doneAction; in FmPcdKgGetDoneAction()
2678 ASSERT_COND(p_Scheme->valid); in FmPcdKgUpdateRequiredAction()
2680 p_Scheme->requiredAction |= requiredAction; in FmPcdKgUpdateRequiredAction()
2719 sel = (uint8_t)(0x01 << (7- (entryId % CLS_PLAN_NUM_PER_GRP))); in FmPcdKgBuildWriteClsPlanBlockActionReg()
2757 return p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrp].baseEntry; in FmPcdKgGetClsPlanGrpBase()
2764 return p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrp].sizeOfGrp; in FmPcdKgGetClsPlanGrpSize()
2770 return ((t_FmPcdKgScheme*)h_Scheme)->schemeId; in FmPcdKgGetSchemeId()
2777 return ((t_FmPcdKgScheme*)h_Scheme)->vspe; in FmPcdKgGetVspe()
2787 for (i = 0;i<p_FmPcd->p_FmPcdKg->numOfSchemes;i++) in FmPcdKgGetRelativeSchemeId()
2788 if (p_FmPcd->p_FmPcdKg->schemesIds[i] == schemeId) in FmPcdKgGetRelativeSchemeId()
2791 if (i == p_FmPcd->p_FmPcdKg->numOfSchemes) in FmPcdKgGetRelativeSchemeId()
2804 if (relativeSchemeId >= p_FmPcd->p_FmPcdKg->numOfSchemes) in FmPcdKgGetSchemeHandle()
2806 REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, ("relative-scheme-id %d!", relativeSchemeId)); in FmPcdKgGetSchemeHandle()
2810 if (!FmPcdKgIsSchemeValidSw(&p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId])) in FmPcdKgGetSchemeHandle()
2813 return &p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId]; in FmPcdKgGetSchemeHandle()
2818 return (((t_FmPcdKgScheme*)h_Scheme)->owners == 0)?FALSE:TRUE; in FmPcdKgIsSchemeHasOwners()
2830 SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, 0); in FmPcdKgCcGetSetParams()
2831 SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0); in FmPcdKgCcGetSetParams()
2838 if (p_FmPcd->h_Hc) in FmPcdKgCcGetSetParams()
2840 err = FmHcPcdKgCcGetSetParams(p_FmPcd->h_Hc, h_Scheme, requiredAction, value); in FmPcdKgCcGetSetParams()
2847 physicalSchemeId = p_Scheme->schemeId; in FmPcdKgCcGetSetParams()
2853 if (!p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].requiredActionFlag || in FmPcdKgCcGetSetParams()
2854 !(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].requiredAction & requiredAction)) in FmPcdKgCcGetSetParams()
2858 switch (p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextEngine) in FmPcdKgCcGetSetParams()
2861 … if (p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].doneAction == e_FM_PCD_ENQ_FRAME) in FmPcdKgCcGetSetParams()
2864 intFlags = KgHwLock(p_FmPcd->p_FmPcdKg); in FmPcdKgCcGetSetParams()
2866 … tmpReg32 = GET_UINT32(p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_mode); in FmPcdKgCcGetSetParams()
2868 …WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_mode, tmpReg32 | NIA_BMI_AC… in FmPcdKgCcGetSetParams()
2872 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in FmPcdKgCcGetSetParams()
2876 if (!p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].directPlcr || in FmPcdKgCcGetSetParams()
2877 (p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].extractedOrs && in FmPcdKgCcGetSetParams()
2878 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].bitOffsetInPlcrProfile) || in FmPcdKgCcGetSetParams()
2879 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextRelativePlcrProfile) in FmPcdKgCcGetSetParams()
2883 …err = FmPcdPlcrCcGetSetParams(h_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].relativeProfi… in FmPcdKgCcGetSetParams()
2890 …RETURN_ERROR(MAJOR, E_INVALID_VALUE,("in this situation the next engine after scheme can be or PLC… in FmPcdKgCcGetSetParams()
2895 if (p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextEngine == e_FM_PCD_CC) in FmPcdKgCcGetSetParams()
2898 intFlags = KgHwLock(p_FmPcd->p_FmPcdKg); in FmPcdKgCcGetSetParams()
2900 … tmpReg32 = GET_UINT32(p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_mode); in FmPcdKgCcGetSetParams()
2903 …WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_mode, tmpReg32 | NIA_FM_CTL… in FmPcdKgCcGetSetParams()
2907 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in FmPcdKgCcGetSetParams()
2913 intFlags = KgHwLock(p_FmPcd->p_FmPcdKg); in FmPcdKgCcGetSetParams()
2915 WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_om, value); in FmPcdKgCcGetSetParams()
2919 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in FmPcdKgCcGetSetParams()
2924 intFlags = KgHwLock(p_FmPcd->p_FmPcdKg); in FmPcdKgCcGetSetParams()
2926 tmpReg32 = GET_UINT32(p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_mode); in FmPcdKgCcGetSetParams()
2929 WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_mode, tmpReg32); in FmPcdKgCcGetSetParams()
2933 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in FmPcdKgCcGetSetParams()
2942 /*********************** End of inter-module routines ************************/
2961 if (p_SchemeParams->modify) in FM_PCD_KgSchemeSet()
2963 p_Scheme = (t_FmPcdKgScheme *)p_SchemeParams->id.h_Scheme; in FM_PCD_KgSchemeSet()
2964 p_FmPcd = p_Scheme->h_FmPcd; in FM_PCD_KgSchemeSet()
2967 SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, NULL); in FM_PCD_KgSchemeSet()
2978 DBG(TRACE, ("Scheme Try Lock - BUSY")); in FM_PCD_KgSchemeSet()
2980 p_SchemeParams->id.h_Scheme = NULL; in FM_PCD_KgSchemeSet()
2989 SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, NULL); in FM_PCD_KgSchemeSet()
2991 relativeSchemeId = p_SchemeParams->id.relativeSchemeId; in FM_PCD_KgSchemeSet()
2993 if (relativeSchemeId >= p_FmPcd->p_FmPcdKg->numOfSchemes) in FM_PCD_KgSchemeSet()
2995 REPORT_ERROR(MAJOR, E_NOT_IN_RANGE, ("relative-scheme-id %d!", relativeSchemeId)); in FM_PCD_KgSchemeSet()
2999 p_Scheme = &p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId]; in FM_PCD_KgSchemeSet()
3009 p_Scheme->schemeId = p_FmPcd->p_FmPcdKg->schemesIds[relativeSchemeId]; in FM_PCD_KgSchemeSet()
3010 p_Scheme->h_FmPcd = p_FmPcd; in FM_PCD_KgSchemeSet()
3012 p_Scheme->p_Lock = FmPcdAcquireLock(p_FmPcd); in FM_PCD_KgSchemeSet()
3013 if (!p_Scheme->p_Lock) in FM_PCD_KgSchemeSet()
3021 if (p_SchemeParams->modify) in FM_PCD_KgSchemeSet()
3023 if (!p_SchemeParams->modify && in FM_PCD_KgSchemeSet()
3024 p_Scheme->p_Lock) in FM_PCD_KgSchemeSet()
3025 FmPcdReleaseLock(p_FmPcd, p_Scheme->p_Lock); in FM_PCD_KgSchemeSet()
3029 if (p_FmPcd->h_Hc) in FM_PCD_KgSchemeSet()
3031 err = FmHcPcdKgSetScheme(p_FmPcd->h_Hc, in FM_PCD_KgSchemeSet()
3034 p_SchemeParams->schemeCounter.update); in FM_PCD_KgSchemeSet()
3035 if (p_SchemeParams->modify) in FM_PCD_KgSchemeSet()
3039 if (!p_SchemeParams->modify && in FM_PCD_KgSchemeSet()
3040 p_Scheme->p_Lock) in FM_PCD_KgSchemeSet()
3041 FmPcdReleaseLock(p_FmPcd, p_Scheme->p_Lock); in FM_PCD_KgSchemeSet()
3044 if (!p_SchemeParams->modify) in FM_PCD_KgSchemeSet()
3049 physicalSchemeId = p_Scheme->schemeId; in FM_PCD_KgSchemeSet()
3052 p_MemRegs = &p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs; in FM_PCD_KgSchemeSet()
3053 intFlags = KgHwLock(p_FmPcd->p_FmPcdKg); in FM_PCD_KgSchemeSet()
3054 WRITE_UINT32(p_MemRegs->kgse_ppc, schemeRegs.kgse_ppc); in FM_PCD_KgSchemeSet()
3055 WRITE_UINT32(p_MemRegs->kgse_ccbs, schemeRegs.kgse_ccbs); in FM_PCD_KgSchemeSet()
3056 WRITE_UINT32(p_MemRegs->kgse_mode, schemeRegs.kgse_mode); in FM_PCD_KgSchemeSet()
3057 WRITE_UINT32(p_MemRegs->kgse_mv, schemeRegs.kgse_mv); in FM_PCD_KgSchemeSet()
3058 WRITE_UINT32(p_MemRegs->kgse_dv0, schemeRegs.kgse_dv0); in FM_PCD_KgSchemeSet()
3059 WRITE_UINT32(p_MemRegs->kgse_dv1, schemeRegs.kgse_dv1); in FM_PCD_KgSchemeSet()
3060 WRITE_UINT32(p_MemRegs->kgse_ekdv, schemeRegs.kgse_ekdv); in FM_PCD_KgSchemeSet()
3061 WRITE_UINT32(p_MemRegs->kgse_ekfc, schemeRegs.kgse_ekfc); in FM_PCD_KgSchemeSet()
3062 WRITE_UINT32(p_MemRegs->kgse_bmch, schemeRegs.kgse_bmch); in FM_PCD_KgSchemeSet()
3063 WRITE_UINT32(p_MemRegs->kgse_bmcl, schemeRegs.kgse_bmcl); in FM_PCD_KgSchemeSet()
3064 WRITE_UINT32(p_MemRegs->kgse_hc, schemeRegs.kgse_hc); in FM_PCD_KgSchemeSet()
3065 WRITE_UINT32(p_MemRegs->kgse_spc, schemeRegs.kgse_spc); in FM_PCD_KgSchemeSet()
3066 WRITE_UINT32(p_MemRegs->kgse_fqb, schemeRegs.kgse_fqb); in FM_PCD_KgSchemeSet()
3067 WRITE_UINT32(p_MemRegs->kgse_om, schemeRegs.kgse_om); in FM_PCD_KgSchemeSet()
3068 WRITE_UINT32(p_MemRegs->kgse_vsp, schemeRegs.kgse_vsp); in FM_PCD_KgSchemeSet()
3070 WRITE_UINT32(p_MemRegs->kgse_gec[i], schemeRegs.kgse_gec[i]); in FM_PCD_KgSchemeSet()
3073 …tmpKgarReg = FmPcdKgBuildWriteSchemeActionReg(physicalSchemeId, p_SchemeParams->schemeCounter.upda… in FM_PCD_KgSchemeSet()
3076 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in FM_PCD_KgSchemeSet()
3078 if (!p_SchemeParams->modify) in FM_PCD_KgSchemeSet()
3096 p_FmPcd = (t_FmPcd*)(p_Scheme->h_FmPcd); in FM_PCD_KgSchemeDelete()
3105 if (p_FmPcd->h_Hc) in FM_PCD_KgSchemeDelete()
3107 err = FmHcPcdKgDeleteScheme(p_FmPcd->h_Hc, h_Scheme); in FM_PCD_KgSchemeDelete()
3108 if (p_Scheme->p_Lock) in FM_PCD_KgSchemeDelete()
3109 FmPcdReleaseLock(p_FmPcd, p_Scheme->p_Lock); in FM_PCD_KgSchemeDelete()
3113 physicalSchemeId = ((t_FmPcdKgScheme *)h_Scheme)->schemeId; in FM_PCD_KgSchemeDelete()
3115 intFlags = KgHwLock(p_FmPcd->p_FmPcdKg); in FM_PCD_KgSchemeDelete()
3117 WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_mode, 0); in FM_PCD_KgSchemeDelete()
3123 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in FM_PCD_KgSchemeDelete()
3125 if (p_Scheme->p_Lock) in FM_PCD_KgSchemeDelete()
3126 FmPcdReleaseLock(p_FmPcd, p_Scheme->p_Lock); in FM_PCD_KgSchemeDelete()
3139 p_FmPcd = (t_FmPcd*)(((t_FmPcdKgScheme *)h_Scheme)->h_FmPcd); in FM_PCD_KgSchemeGetCounter()
3140 if (p_FmPcd->h_Hc) in FM_PCD_KgSchemeGetCounter()
3141 return FmHcPcdKgGetSchemeCounter(p_FmPcd->h_Hc, h_Scheme); in FM_PCD_KgSchemeGetCounter()
3143 physicalSchemeId = ((t_FmPcdKgScheme *)h_Scheme)->schemeId; in FM_PCD_KgSchemeGetCounter()
3149 intFlags = KgHwLock(p_FmPcd->p_FmPcdKg); in FM_PCD_KgSchemeGetCounter()
3151 …if (!(GET_UINT32(p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_mode) & KG_SCH_MODE_EN)) in FM_PCD_KgSchemeGetCounter()
3153 spc = GET_UINT32(p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_spc); in FM_PCD_KgSchemeGetCounter()
3154 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in FM_PCD_KgSchemeGetCounter()
3167 p_FmPcd = (t_FmPcd*)(((t_FmPcdKgScheme *)h_Scheme)->h_FmPcd); in FM_PCD_KgSchemeSetCounter()
3172 if (p_FmPcd->h_Hc) in FM_PCD_KgSchemeSetCounter()
3173 return FmHcPcdKgSetSchemeCounter(p_FmPcd->h_Hc, h_Scheme, value); in FM_PCD_KgSchemeSetCounter()
3175 physicalSchemeId = ((t_FmPcdKgScheme *)h_Scheme)->schemeId; in FM_PCD_KgSchemeSetCounter()
3182 intFlags = KgHwLock(p_FmPcd->p_FmPcdKg); in FM_PCD_KgSchemeSetCounter()
3184 …if (!(GET_UINT32(p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_mode) & KG_SCH_MODE_EN)) in FM_PCD_KgSchemeSetCounter()
3186 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in FM_PCD_KgSchemeSetCounter()
3191 WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_spc, value); in FM_PCD_KgSchemeSetCounter()
3197 KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); in FM_PCD_KgSchemeSetCounter()
3208 SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_NULL_POINTER); in FM_PCD_KgSetAdditionalDataAfterParsing()
3209 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_NULL_POINTER); in FM_PCD_KgSetAdditionalDataAfterParsing()
3210 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs, E_NULL_POINTER); in FM_PCD_KgSetAdditionalDataAfterParsing()
3212 p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; in FM_PCD_KgSetAdditionalDataAfterParsing()
3213 if (!FmIsMaster(p_FmPcd->h_Fm)) in FM_PCD_KgSetAdditionalDataAfterParsing()
3214 … RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_KgSetAdditionalDataAfterParsing - guest mode!")); in FM_PCD_KgSetAdditionalDataAfterParsing()
3216 WRITE_UINT32(p_Regs->fmkg_fdor,payloadOffset); in FM_PCD_KgSetAdditionalDataAfterParsing()
3228 SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_NULL_POINTER); in FM_PCD_KgSetDfltValue()
3229 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_NULL_POINTER); in FM_PCD_KgSetDfltValue()
3230 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs, E_NULL_POINTER); in FM_PCD_KgSetDfltValue()
3232 p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs; in FM_PCD_KgSetDfltValue()
3234 if (!FmIsMaster(p_FmPcd->h_Fm)) in FM_PCD_KgSetDfltValue()
3235 RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, ("FM_PCD_KgSetDfltValue - guest mode!")); in FM_PCD_KgSetDfltValue()
3238 WRITE_UINT32(p_Regs->fmkg_gdv0r,value); in FM_PCD_KgSetDfltValue()
3240 WRITE_UINT32(p_Regs->fmkg_gdv1r,value); in FM_PCD_KgSetDfltValue()