[openib-general] Re: ib_uat kernel panic without async callback

Hal Rosenstock halr at voltaire.com
Fri Jul 15 12:32:22 PDT 2005


Hi Arlin,

On Fri, 2005-07-15 at 13:04, Arlin Davis wrote:
> at.h
> 
> * The following asynchronous resolution function behavior is as follows:
>  *    If the resolve operation can be fulfilled immediately, then the output
>  *    structures are set and the number of filled structures is returned.
>  *
>  *    If the resolve operation cannot by fulfilled immediately and
>  *    an ib_at_completion structure is not provided,
>  *    then the function immediately returns -EWOULDBLOCK.
>  *
>  *     If ib_at_completion structure is provided and an asynchronous
>  *    operation is started, the function immediately returns zero,
>  *    and the request ID field (req_id) is set if the pointer is
>  *    non NULL. This request ID may be used to cancel the operation,
>  *    or to poll its status.
> 
> Your implementation is fine, as long as the correct return values are used
> and the sync version works. I currently get returned a 1 but the ib_route
> data is not filled in and the req_id == 0. I would expect a 0 returned 
> and a
> valid req_id if the ib_route cannot be processed.
> 
> for ret = ib_at_route_by_ip( async_cb provided ), I read this as: 
> 
>   if ret > 0  then ib_route output data is written, resolve complete
>   if ret == 0 then req_id is written with valid id to cancel or poll
>   if ret < 0 error
> 
> Am I reading this right?

Yes, I copied that verbatim from kernel AT header into the user AT
library header. 

For user AT, I implemented (perhaps mistakenly) the copy when the
callback occurs. I will see what it takes to make the semantics similar.

-- Hal




More information about the general mailing list