|
Packit Service |
ac7b0b |
/* BEGIN_ICS_COPYRIGHT7 ****************************************
|
|
Packit Service |
ac7b0b |
|
|
Packit Service |
ac7b0b |
Copyright (c) 2015-2017, Intel Corporation
|
|
Packit Service |
ac7b0b |
|
|
Packit Service |
ac7b0b |
Redistribution and use in source and binary forms, with or without
|
|
Packit Service |
ac7b0b |
modification, are permitted provided that the following conditions are met:
|
|
Packit Service |
ac7b0b |
|
|
Packit Service |
ac7b0b |
* Redistributions of source code must retain the above copyright notice,
|
|
Packit Service |
ac7b0b |
this list of conditions and the following disclaimer.
|
|
Packit Service |
ac7b0b |
* Redistributions in binary form must reproduce the above copyright
|
|
Packit Service |
ac7b0b |
notice, this list of conditions and the following disclaimer in the
|
|
Packit Service |
ac7b0b |
documentation and/or other materials provided with the distribution.
|
|
Packit Service |
ac7b0b |
* Neither the name of Intel Corporation nor the names of its contributors
|
|
Packit Service |
ac7b0b |
may be used to endorse or promote products derived from this software
|
|
Packit Service |
ac7b0b |
without specific prior written permission.
|
|
Packit Service |
ac7b0b |
|
|
Packit Service |
ac7b0b |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
Packit Service |
ac7b0b |
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit Service |
ac7b0b |
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
Packit Service |
ac7b0b |
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
Packit Service |
ac7b0b |
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
Packit Service |
ac7b0b |
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
Packit Service |
ac7b0b |
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
Packit Service |
ac7b0b |
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
Packit Service |
ac7b0b |
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
Packit Service |
ac7b0b |
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
Packit Service |
ac7b0b |
|
|
Packit Service |
ac7b0b |
** END_ICS_COPYRIGHT7 ****************************************/
|
|
Packit Service |
ac7b0b |
|
|
Packit Service |
ac7b0b |
#include "ibprint.h"
|
|
Packit Service |
ac7b0b |
#include "stl_print.h"
|
|
Packit Service |
ac7b0b |
|
|
Packit Service |
ac7b0b |
void PrintStlSmpHeader(PrintDest_t *dest, int indent, const STL_SMP *smp)
|
|
Packit Service |
ac7b0b |
{
|
|
Packit Service |
ac7b0b |
PrintMadHeader(dest, indent, &smp->common);
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*sM_KEY: 0x%016"PRIx64"\n", indent, "", smp->M_Key);
|
|
Packit Service |
ac7b0b |
if (smp->common.MgmtClass == MCLASS_SM_DIRECTED_ROUTE) {
|
|
Packit Service |
ac7b0b |
uint16 offset;
|
|
Packit Service |
ac7b0b |
uint32 i;
|
|
Packit Service |
ac7b0b |
char buf[128];
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*sDR: D: %u Ptr: %3u Cnt: %3u DrSLID: 0x%08x DrDLID: 0x%08x\n",
|
|
Packit Service |
ac7b0b |
indent, "", smp->common.u.DR.s.D,
|
|
Packit Service |
ac7b0b |
smp->common.u.DR.HopPointer, smp->common.u.DR.HopCount,
|
|
Packit Service |
ac7b0b |
smp->SmpExt.DirectedRoute.DrSLID,
|
|
Packit Service |
ac7b0b |
smp->SmpExt.DirectedRoute.DrDLID);
|
|
Packit Service |
ac7b0b |
|
|
Packit Service |
ac7b0b |
offset = sprintf(buf, "InitPath:");
|
|
Packit Service |
ac7b0b |
// entry 0 is not used
|
|
Packit Service |
ac7b0b |
for (i=1; i<= smp->common.u.DR.HopCount; i++) {
|
|
Packit Service |
ac7b0b |
if ((i-1)%16 == 0 && i>1) {
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*s%s\n", indent, "", buf);
|
|
Packit Service |
ac7b0b |
offset=sprintf(buf, " ");
|
|
Packit Service |
ac7b0b |
}
|
|
Packit Service |
ac7b0b |
offset += sprintf(&buf[offset], " %3u", smp->SmpExt.DirectedRoute.InitPath[i]);
|
|
Packit Service |
ac7b0b |
}
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*s%s\n", indent, "", buf);
|
|
Packit Service |
ac7b0b |
|
|
Packit Service |
ac7b0b |
if (smp->common.u.DR.s.D) {
|
|
Packit Service |
ac7b0b |
offset = sprintf(buf, "RetPath: ");
|
|
Packit Service |
ac7b0b |
// entry 0 is not used
|
|
Packit Service |
ac7b0b |
for (i=1; i<= smp->common.u.DR.HopCount; i++) {
|
|
Packit Service |
ac7b0b |
if ((i-1)%16 == 0 && i>1) {
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*s%s\n", indent, "", buf);
|
|
Packit Service |
ac7b0b |
offset=sprintf(buf, " ");
|
|
Packit Service |
ac7b0b |
}
|
|
Packit Service |
ac7b0b |
offset += sprintf(&buf[offset], " %3u", smp->SmpExt.DirectedRoute.RetPath[i]);
|
|
Packit Service |
ac7b0b |
}
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*s%s\n", indent, "", buf);
|
|
Packit Service |
ac7b0b |
}
|
|
Packit Service |
ac7b0b |
}
|
|
Packit Service |
ac7b0b |
}
|
|
Packit Service |
ac7b0b |
|
|
Packit Service |
ac7b0b |
void PrintStlAggregateMember(PrintDest_t *dest, int indent, const STL_AGGREGATE *aggr)
|
|
Packit Service |
ac7b0b |
{
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*sAttrID: 0x%04x\n", indent, "", aggr->AttributeID);
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*sError: 0x%02x, RequestLength: 0x%02x\n", indent+2, "",
|
|
Packit Service |
ac7b0b |
aggr->Result.s.Error, aggr->Result.s.RequestLength);
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*sModifier: 0x%02x\n", indent+2, "", aggr->AttributeModifier);
|
|
Packit Service |
ac7b0b |
}
|
|
Packit Service |
ac7b0b |
|
|
Packit Service |
ac7b0b |
void PrintStlClassPortInfo(PrintDest_t *dest, int indent, const STL_CLASS_PORT_INFO *pClassPortInfo, uint8 MgmtClass)
|
|
Packit Service |
ac7b0b |
{
|
|
Packit Service |
ac7b0b |
char tbuf[8];
|
|
Packit Service |
ac7b0b |
char cbuf[80];
|
|
Packit Service |
ac7b0b |
char c2buf[80];
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*sBaseVersion: %d ClassVersion: %d\n",
|
|
Packit Service |
ac7b0b |
indent, "", pClassPortInfo->BaseVersion,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->ClassVersion);
|
|
Packit Service |
ac7b0b |
FormatTimeoutMult(tbuf, pClassPortInfo->u1.s.RespTimeValue);
|
|
Packit Service |
ac7b0b |
switch (MgmtClass) {
|
|
Packit Service |
ac7b0b |
case MCLASS_SUBN_ADM: /* SA */
|
|
Packit Service |
ac7b0b |
StlSaClassPortInfoCapMask(cbuf, pClassPortInfo->CapMask);
|
|
Packit Service |
ac7b0b |
StlSaClassPortInfoCapMask2(c2buf, pClassPortInfo->u1.s.CapMask2);
|
|
Packit Service |
ac7b0b |
break;
|
|
Packit Service |
ac7b0b |
case MCLASS_PERF: /* PM */
|
|
Packit Service |
ac7b0b |
StlPmClassPortInfoCapMask(cbuf, pClassPortInfo->CapMask);
|
|
Packit Service |
ac7b0b |
StlPmClassPortInfoCapMask2(c2buf, pClassPortInfo->u1.s.CapMask2);
|
|
Packit Service |
ac7b0b |
break;
|
|
Packit Service |
ac7b0b |
case MCLASS_VFI_PM: /* PA */
|
|
Packit Service |
ac7b0b |
StlPaClassPortInfoCapMask(cbuf, pClassPortInfo->CapMask);
|
|
Packit Service |
ac7b0b |
StlPaClassPortInfoCapMask2(c2buf, pClassPortInfo->u1.s.CapMask2);
|
|
Packit Service |
ac7b0b |
break;
|
|
Packit Service |
ac7b0b |
default:
|
|
Packit Service |
ac7b0b |
StlCommonClassPortInfoCapMask(cbuf, pClassPortInfo->CapMask);
|
|
Packit Service |
ac7b0b |
StlCommonClassPortInfoCapMask2(c2buf, pClassPortInfo->u1.s.CapMask2);
|
|
Packit Service |
ac7b0b |
break;
|
|
Packit Service |
ac7b0b |
}
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*sRespTime: %s Capability: 0x%04x: %s\n",
|
|
Packit Service |
ac7b0b |
indent, "", tbuf,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->CapMask, cbuf);
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*sCapability2: 0x%07x: %s\n",
|
|
Packit Service |
ac7b0b |
indent, "",
|
|
Packit Service |
ac7b0b |
pClassPortInfo->u1.s.CapMask2, c2buf);
|
|
Packit Service |
ac7b0b |
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*sRedirect: LID: 0x%.*x GID: 0x%016"PRIx64":0x%016"PRIx64"\n",
|
|
Packit Service |
ac7b0b |
indent, "",(pClassPortInfo->RedirectLID <= IB_MAX_UCAST_LID ? 4 : 8),
|
|
Packit Service |
ac7b0b |
pClassPortInfo->RedirectLID,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->RedirectGID.AsReg64s.H,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->RedirectGID.AsReg64s.L);
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*s QP: 0x%06x QKey: 0x%08x PKey: 0x%04x SL: %2u\n",
|
|
Packit Service |
ac7b0b |
indent, "",
|
|
Packit Service |
ac7b0b |
pClassPortInfo->u3.s.RedirectQP,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->Redirect_Q_Key,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->Redirect_P_Key,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->u3.s.RedirectSL);
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*s FlowLabel: 0x%05x TClass: 0x%02x\n",
|
|
Packit Service |
ac7b0b |
indent, "",
|
|
Packit Service |
ac7b0b |
pClassPortInfo->u2.s.RedirectFlowLabel,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->u2.s.RedirectTClass);
|
|
Packit Service |
ac7b0b |
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*sTrap: LID: 0x%.*x GID: 0x%016"PRIx64":0x%016"PRIx64"\n",
|
|
Packit Service |
ac7b0b |
indent, "",(pClassPortInfo->TrapLID <= IB_MAX_UCAST_LID ? 4:8),
|
|
Packit Service |
ac7b0b |
pClassPortInfo->TrapLID,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->TrapGID.AsReg64s.H,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->TrapGID.AsReg64s.L);
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*s QP: 0x%06x QKey: 0x%08x PKey: 0x%04x SL: %2u\n",
|
|
Packit Service |
ac7b0b |
indent, "",
|
|
Packit Service |
ac7b0b |
pClassPortInfo->u5.s.TrapQP,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->Trap_Q_Key,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->Trap_P_Key,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->u6.s.TrapSL);
|
|
Packit Service |
ac7b0b |
PrintFunc(dest, "%*s FlowLabel: 0x%05x HopLimit: 0x%02x TClass: 0x%02x\n",
|
|
Packit Service |
ac7b0b |
indent, "",
|
|
Packit Service |
ac7b0b |
pClassPortInfo->u4.s.TrapFlowLabel,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->u5.s.TrapHopLimit,
|
|
Packit Service |
ac7b0b |
pClassPortInfo->u4.s.TrapTClass);
|
|
Packit Service |
ac7b0b |
}
|
|
Packit Service |
ac7b0b |
|