Hello. Still chasing this bug.
I posted some time ago some debugs and was asked to clean them up and try again.
So, I re-coded my debug.
The messages are below and the code change follows.
======================
( 1 ) handle_transaction_done: smi cmd:0x2c does not match the smi cmd:0x06
in response
( 2 ) handle_transaction_done: smi netfn:0x07 does not match user data
cmd:0x2d
IPMI message handler: BMC returned incorrect response, expected netfn 2d cmd 0,
got netfn 7 cmd 35 msgid:0
handle_transaction_done: smi cmd:0x06 does not match the smi cmd:0x2c in
response
handle_transaction_done: smi netfn:0x2d does not match user data cmd:0x07
IPMI message handler: BMC returned incorrect response, expected netfn 7 cmd 1,
got netfn 2d cmd 0 msgid:1
======================
It appears the command and response in SMI message do not match what is in the
user data.
I hope this is helpful.
Dave
static void handle_transaction_done(struct smi_info *smi_info)
{
struct ipmi_smi_msg *msg;
struct ipmi_recv_msg *recv_msg;
unsigned long user;
#ifdef DEBUG_TIMING
struct timeval t;
#endif
switch (smi_info->si_state) {
case SI_NORMAL:
if (!smi_info->curr_msg)
break;
smi_info->curr_msg->rsp_size
= smi_info->handlers->get_result(
smi_info->si_sm,
smi_info->curr_msg->rsp,
IPMI_MAX_MSG_LENGTH, &user);
recv_msg = (struct ipmi_recv_msg *)
smi_info->curr_msg->user_data;
if (recv_msg) {
int err = 0;
u8 msgCmd = (smi_info->curr_msg->data[0] >> 2); /* the
request */
u8 CurMsgCmd = ((smi_info->curr_msg->rsp[0] >> 2) &
0xFE); /* the resp */
u8 smiCmd = smi_info->curr_msg->data[1];
u8 RecvMsgCmd = recv_msg->msg.cmd;
u8 smiNetfn = (smi_info->curr_msg->rsp[0] >> 2);
u8 RecvMsgNetfn = (recv_msg->msg.netfn | 1);
( 1 ) --- /* check req and rsp match between smi
msg->data[] and smi msg->rsp[] */
if (msgCmd != CurMsgCmd) {
printk(KERN_ERR "%s: smi cmd:0x%02x does not
match the smi cmd:0x%02x in response\n",
__FUNCTION__, msgCmd, CurMsgCmd);
++err;
}
( 2 ) ---- /* compare smi cmd and userdata cmd */
if (smiCmd != RecvMsgCmd) {
printk(KERN_ERR "%s: smi cmd:0x%02x does not
match user data cmd:0x%02x\n",
__FUNCTION__, smiCmd, RecvMsgCmd);
++err;
}
/* compare smi request netfn matches user data netfn */
if (smiNetfn != RecvMsgNetfn) {
printk(KERN_ERR "%s: smi netfn:0x%02x does not
match user data cmd:0x%02x\n",
__FUNCTION__, smiNetfn, RecvMsgNetfn);
++err;
}
if (err) {
smi_inc_stat(smi_info, bmc_incorrect_responses);
}
}
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnnow-d2d
_______________________________________________
Openipmi-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openipmi-developer