Lines Matching full:tid
14 std::optional<MctpInfo> TerminusManager::toMctpInfo(const pldm_tid_t& tid) in toMctpInfo() argument
16 if (tid == PLDM_TID_UNASSIGNED || tid == PLDM_TID_RESERVED) in toMctpInfo()
21 if ((!this->transportLayerTable.contains(tid)) || in toMctpInfo()
22 (this->transportLayerTable[tid] != SupportedTransportLayer::MCTP)) in toMctpInfo()
27 auto mctpInfoIt = mctpInfoTable.find(tid); in toMctpInfo()
56 const MctpInfo& mctpInfo, pldm_tid_t tid) in storeTerminusInfo() argument
58 if (tid == PLDM_TID_UNASSIGNED || tid == PLDM_TID_RESERVED) in storeTerminusInfo()
68 if (tidPool[tid]) in storeTerminusInfo()
73 tidPool[tid] = true; in storeTerminusInfo()
74 transportLayerTable[tid] = SupportedTransportLayer::MCTP; in storeTerminusInfo()
75 mctpInfoTable[tid] = mctpInfo; in storeTerminusInfo()
77 return tid; in storeTerminusInfo()
103 pldm_tid_t tid = std::distance(tidPool.begin(), tidPoolIt); in mapTid() local
104 return storeTerminusInfo(mctpInfo, tid); in mapTid()
107 bool TerminusManager::unmapTid(const pldm_tid_t& tid) in unmapTid() argument
109 if (tid == PLDM_TID_UNASSIGNED || tid == PLDM_TID_RESERVED) in unmapTid()
113 tidPool[tid] = false; in unmapTid()
115 if (transportLayerTable.contains(tid)) in unmapTid()
117 transportLayerTable.erase(tid); in unmapTid()
120 if (mctpInfoTable.contains(tid)) in unmapTid()
122 mctpInfoTable.erase(tid); in unmapTid()
135 auto tid = toTid(mctpInfo); in updateMctpEndpointAvailability() local
136 if (tid) in updateMctpEndpointAvailability()
138 manager->updateAvailableState(tid.value(), availability); in updateMctpEndpointAvailability()
206 /* Get TID of initialized terminus */ in discoverMctpTerminusTask()
207 auto tid = toTid(mctpInfo); in discoverMctpTerminusTask() local
208 if (!tid) in discoverMctpTerminusTask()
213 addedTids.push_back(tid.value()); in discoverMctpTerminusTask()
252 pldm_tid_t tid = 0; in initMctpTerminus() local
254 auto rc = co_await getTidOverMctp(eid, &tid); in initMctpTerminus()
261 if (tid == PLDM_TID_RESERVED) in initMctpTerminus()
263 lg2::error("Terminus responses the reserved {TID}.", "TID", tid); in initMctpTerminus()
267 /* Terminus already has TID */ in initMctpTerminus()
268 if (tid != PLDM_TID_UNASSIGNED) in initMctpTerminus()
270 /* TID is used by one discovered terminus */ in initMctpTerminus()
271 auto it = termini.find(tid); in initMctpTerminus()
288 * Or the TID is used by other terminus. in initMctpTerminus()
294 /* Use the terminus TID for mapping */ in initMctpTerminus()
297 auto mappedTid = storeTerminusInfo(mctpInfo, tid); in initMctpTerminus()
300 lg2::error("Failed to store Terminus Info for terminus {TID}.", in initMctpTerminus()
301 "TID", tid); in initMctpTerminus()
310 // Assigning a tid. If it has been mapped, mapTid() in initMctpTerminus()
311 // returns the tid assigned before. in initMctpTerminus()
315 lg2::error("Failed to store Terminus Info for terminus {TID}.", in initMctpTerminus()
316 "TID", tid); in initMctpTerminus()
320 tid = mappedTid.value(); in initMctpTerminus()
321 rc = co_await setTidOverMctp(eid, tid); in initMctpTerminus()
324 lg2::error("Failed to Set terminus TID, error{ERROR}.", "ERROR", in initMctpTerminus()
326 unmapTid(tid); in initMctpTerminus()
332 lg2::error("Terminus {TID} does not support SetTID command.", "TID", in initMctpTerminus()
333 tid); in initMctpTerminus()
334 unmapTid(tid); in initMctpTerminus()
338 if (termini.contains(tid)) in initMctpTerminus()
346 rc = co_await getPLDMTypes(tid, supportedTypes); in initMctpTerminus()
349 lg2::error("Failed to Get PLDM Types for terminus {TID}, error {ERROR}", in initMctpTerminus()
350 "TID", tid, "ERROR", rc); in initMctpTerminus()
351 unmapTid(tid); in initMctpTerminus()
357 termini[tid] = std::make_shared<Terminus>(tid, supportedTypes, event); in initMctpTerminus()
361 lg2::error("Failed to create terminus manager for terminus {TID}", in initMctpTerminus()
362 "TID", tid); in initMctpTerminus()
363 unmapTid(tid); in initMctpTerminus()
372 if (!termini[tid]->doesSupportType(type)) in initMctpTerminus()
379 auto rc = co_await getPLDMVersion(tid, type, &version); in initMctpTerminus()
383 "Failed to Get PLDM Version for terminus {TID}, PLDM Type {TYPE}, error {ERROR}", in initMctpTerminus()
384 "TID", tid, "TYPE", type, "ERROR", rc); in initMctpTerminus()
386 termini[tid]->setSupportedTypeVersions(type, version); in initMctpTerminus()
388 rc = co_await getPLDMCommands(tid, type, version, cmds.data()); in initMctpTerminus()
392 "Failed to Get PLDM Commands for terminus {TID}, error {ERROR}", in initMctpTerminus()
393 "TID", tid, "ERROR", rc); in initMctpTerminus()
410 termini[tid]->setSupportedCommands(pldmCmds); in initMctpTerminus()
443 exec::task<int> TerminusManager::getTidOverMctp(mctp_eid_t eid, pldm_tid_t* tid) in getTidOverMctp() argument
470 rc = decode_get_tid_resp(responseMsg, responseLen, &completionCode, tid); in getTidOverMctp()
489 exec::task<int> TerminusManager::setTidOverMctp(mctp_eid_t eid, pldm_tid_t tid) in setTidOverMctp() argument
494 auto rc = encode_set_tid_req(instanceId, tid, requestMsg); in setTidOverMctp()
526 exec::task<int> TerminusManager::getPLDMTypes(pldm_tid_t tid, in getPLDMTypes() argument
535 "Failed to encode request getPLDMTypes for terminus ID {TID}, error {RC} ", in getPLDMTypes()
536 "TID", tid, "RC", rc); in getPLDMTypes()
543 rc = co_await sendRecvPldmMsg(tid, request, &responseMsg, &responseLen); in getPLDMTypes()
546 lg2::error("Failed to send GetPLDMTypes for terminus {TID}, error {RC}", in getPLDMTypes()
547 "TID", tid, "RC", rc); in getPLDMTypes()
558 "Failed to decode response GetPLDMTypes for terminus ID {TID}, error {RC} ", in getPLDMTypes()
559 "TID", tid, "RC", rc); in getPLDMTypes()
566 "Error : GetPLDMTypes for terminus ID {TID}, complete code {CC}.", in getPLDMTypes()
567 "TID", tid, "CC", completionCode); in getPLDMTypes()
574 pldm_tid_t tid, uint8_t type, ver32_t version, bitfield8_t* supportedCmds) in getPLDMCommands() argument
583 "Failed to encode request GetPLDMCommands for terminus ID {TID}, error {RC} ", in getPLDMCommands()
584 "TID", tid, "RC", rc); in getPLDMCommands()
591 rc = co_await sendRecvPldmMsg(tid, request, &responseMsg, &responseLen); in getPLDMCommands()
595 "Failed to send GetPLDMCommands message for terminus {TID}, error {RC}", in getPLDMCommands()
596 "TID", tid, "RC", rc); in getPLDMCommands()
607 "Failed to decode response GetPLDMCommands for terminus ID {TID}, error {RC} ", in getPLDMCommands()
608 "TID", tid, "RC", rc); in getPLDMCommands()
615 "Error : GetPLDMCommands for terminus ID {TID}, complete code {CC}.", in getPLDMCommands()
616 "TID", tid, "CC", completionCode); in getPLDMCommands()
624 pldm_tid_t tid, Request& request, const pldm_msg** responseMsg, in sendRecvPldmMsg() argument
631 if (!tidPool[tid]) in sendRecvPldmMsg()
636 if (!transportLayerTable.contains(tid)) in sendRecvPldmMsg()
641 if (transportLayerTable[tid] != SupportedTransportLayer::MCTP) in sendRecvPldmMsg()
646 auto mctpInfo = toMctpInfo(tid); in sendRecvPldmMsg()
684 exec::task<int> TerminusManager::getPLDMVersion(pldm_tid_t tid, uint8_t type, in getPLDMVersion() argument
695 "Failed to encode request getPLDMVersion for terminus ID {TID}, error {RC} ", in getPLDMVersion()
696 "TID", tid, "RC", rc); in getPLDMVersion()
703 rc = co_await sendRecvPldmMsg(tid, request, &responseMsg, &responseLen); in getPLDMVersion()
707 "Failed to send getPLDMVersion message for terminus {TID}, error {RC}", in getPLDMVersion()
708 "TID", tid, "RC", rc); in getPLDMVersion()
721 "Failed to decode response getPLDMVersion for terminus ID {TID}, error {RC} ", in getPLDMVersion()
722 "TID", tid, "RC", rc); in getPLDMVersion()
729 "Error : getPLDMVersion for terminus ID {TID}, complete code {CC}.", in getPLDMVersion()
730 "TID", tid, "CC", completionCode); in getPLDMVersion()
745 for (auto& [tid, terminus] : termini) in getActiveEidByName()
760 auto mctpInfo = toMctpInfo(tid); in getActiveEidByName()