Hello everyone,
I have some unexpected behavior from the Intel node manager on an Intel board. Maybe you can help me. When I call the NMPRK_GetStatistics()-function it returns relatively often an error. The error is NMPRK_INVALID_RSP_LENGTH.
In the attachment are some of the build-in debugging logs of the NMPRK.
nmprk_short.log: There are two times the same request. The first one is the one with the error and the second is without.
nmprk_long.log: The same as nmprk_short.log with the full communication.
reproducer.cpp: Compile with g++ reproducer.cpp -I[path]/NMPRK/NMPRK/nmprkC -L. -lnmprkc -pthread pkg-config --cflags openssl pkg-config --libs openssl -o reproducer
As you can see request puts out two responses. If the response with the data is sent first the error is thrown.
I looked into the code of NMPRK and followed the calls to the function SendBridgedCommand() in transportInterfaceSlim.cpp. There are two function for the socket communication p->RequestResponse(bReq) and p->GetAsyncResponse(5000). They both resolve in two variants of IpmiSession::sendRecv(). So I thought the packages don't received in the order in they where sent because the RMCP protocol is UDP based. Even if I put a sleep(5) between the two sendRecv(), to nearly guarantee the right order, the error occurs.
test system:
Intel(R) Xeon(R) Gold 5120
Base Board Information
Manufacturer: Intel Corporation
Product Name: S2600BPB
Version: H87926-500
BMC Firmware Build Time : Sat Sep 7 13:21:40 2019
BIOS ID : SE5C620.86B.02.01.0009.092820190230
BMC FW Rev : 2.22.59c3b83a
Backup BMC FW Rev : 1.93.870cf4f0
Build ID : 59C3B83A
SDR Package Version : 1.41
Mgmt Engine (ME) FW Rev : 04.01.04.323
Thank you for your help.
nmprk_full.log
nmprk_short.log
reproducer.cpp.zip