Guy German wrote:
typedef void (*ib_cma_event_handler)(enum ib_cma_event event, void *context, const void *private_data); typedef void (*ib_cma_listen_handler)(void *cma_id, struct ib_device *device, void *private_data, void *context);

I think we can merge these two handlers. We do not want to pass back struct ib_device* to a caller. The device needs to be associated with the cma_id up front.

The listen handler passes also the new cma_id. Do you think it is better to merge them and pass null in this field in the "active side" case? (or maybe pass the same cma_id back in the handler)...

It seems like something like:

ib_cma_event_handler(struct ib_cma_id*, struct ib_cma_event event);

struct ib_cma_event {
        enum ib_cma_event event;
        /* per event needed data, if any... */
        struct ib_cma_id *listen_id;
        void *private_data;
        int private_data_len; /* needed? */
}

would work for any case. I don't know that we need to distinguish between active and passive sides once a connection is established, and if we want to support peer to peer connections at some point in time. It's just not clear to me that once a connection has been established, if the listen handler is still invoked for the new cma_id (e.g. disconnect), or is the cma_event_handler invoked?

- Sean
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to