[openib-general] [PATCH] initial CM module
frank zago
fzago at systemfabricworks.com
Thu Dec 16 15:02:06 PST 2004
Sean Hefty wrote:
> Libor Michalek wrote:
>
>> This ties into what I was saying about an error return value from the
>> consumer callback being treated as a connection handle destroy request.
>> There were three return types supported:
>
>
> I'm not opposed to this. I just haven't thought about it enough.
>
>> error - connection handle destroy request
>> defer - CM requires an API call to continue. (e.g. REQ callback
>> requires a send_rep() call to continue) What the Sean's
>> API does by default.
>> success - CM generates callback response. (e.g. REQ callback completed
>> successfully so the CM generates a REP response.)
>>
>> However, I'm not sure that not having this ability is that big of a
>> code bloat, since you will call the corresponsing API function from
>> the callback, and presumably set similar parameters for the API call
>> as you would set for the callback return parameters. The bigger increase
>> in consumer line count is having each consumer perform the QP state
>> transitions.
>
>
> I agree. I'm not sure that success is needed. This adds several
> parameters that need to be returned from the callback to save a single
> function call.
It doesn't just save a function call.
For instance:
cm_handler(cm_id, event, param)
{
...
case CM_REQ:
if (not yet connected) {
param.req.userdata[0]=0x5A;
param.req.userdatalen=1;
ret = OK;
} else {
ret = REJECT;
}
....
}
Here, CM has prepared with defaults values the userdata that the handler
can override.
It hides CM internals: no allocation of a REQ structure, no cleaning of
structures, no sending of mads.
Frank.
More information about the general
mailing list