intel / NMPRK

3 stars 10 forks source link

NMPRK_GetStatistics() often returns NMPRK_INVALID_RSP_LENGTH #37

Open loeka opened 4 years ago

loeka commented 4 years ago

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.

_nmprkshort.log: There are two times the same request. The first one is the one with the error and the second is without. _nmprklong.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