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 _______________________________________________ openib-general mailing list [email protected] http://openib.org/mailman/listinfo/openib-general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
