I am not an expert but won't the sender  in ipmi_si_intf.c
make sure only one message is active at one time?

     if (smi_info->si_state == SI_NORMAL && smi_info->curr_msg == NULL)
                start_next_msg(smi_info);


Sudhakar


On 04/05/2012 07:15 PM, dbashaw wrote:

> 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



------------------------------------------------------------------------------
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

Reply via email to