I have two IPMI users created using ipmi_create_user(..).
Each user can send messages async with respect to each other.
I have also seen IPMI message handler: BMC returned incorrect response
errors some times.
When I allow only one user to use the KCS interface this does not seem
to happen.
After reviewing ipmi_msghandler.c I am not able to figure out how a
response to a message
from a given user can be identified with that user and not some other.
ipmi_msghandler() sends the message to the interface handler (KCS
state machine in this case) and is done,
free to handle the next user request since responses arrive
asynchronously at a later time.
From the IPMI spec I see KCS message request format described as:
BYTE 1 BYTE 2 BYTE 3:N
NetFn/Lun Cmd Data
KCS message response format:
BYTE 1 BYTE 2 BYTE 3 BYTE 4:N
NetFn/Lun Cmd Ccode Data
Data is that which is required by the specific command being sent only.
Request and response messages both have no user identifiable information
that I can find in the V1.5 or V2.0 spec.
I'm beginning to think that this is the reason for the "incorrect
response" error above when two users are
sending requests.
handle_new_recv_msg((ipmi_smi_t intf,
struct ipmi_smi_msg *msg)
} else if (((msg->rsp[0] >> 2) != ((msg->data[0] >> 2) | 1))
|| (msg->rsp[1] != msg->data[1])) {
/*
* The NetFN and Command in the response is not even
* marginally correct.
*/
printk(KERN_WARNING PFX "BMC returned incorrect response,"
" expected netfn %x cmd %x, got netfn %x cmd %x\n",
(msg->data[0] >> 2) | 1, msg->data[1],
msg->rsp[0] >> 2, msg->rsp[1]);
No information in msg->rsp or msg->data can be used to make sure this
response is associated with
the correct user. Higher level things like sequence numbers are
contained in the msg struct at some level
but don't address the issue of associating the response to a unique user.
How to fix this?
Dave
------------------------------------------------------------------------------
For Developers, A Lot Can Happen In A Second.
Boundary is the first to Know...and Tell You.
Monitor Your Applications in Ultra-Fine Resolution. Try it FREE!
http://p.sf.net/sfu/Boundary-d2dvs2
_______________________________________________
Openipmi-developer mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openipmi-developer