> > a connect flow will be something like: > > > > - ib_cma_get_device (...) /* get device(1) or device+path(2) */ > > - pd = ib_alloc_pd(...) /* pd allocated in the given device */ > > - qp = ib_cma_create_qp(...) /* qp returned in init state */ > > - ib_post_recv(qp, ...); > > - ib_cma_connect (qp, dst_addr(1)/path(2), ...); > > > > Now, there are 2 suggestions for the device discovery: > > 1. get_device returns device and port, according the local routing > > tables, synchronously. ib_cma_connect calls the at module > for address > > resolving (cache handled) before calling the cm_connect. > > 2. get_device registers an upcall and return in the upcall the data > > path to the consumer. In this case caching is done by the consumer. > > What happens if multiple devices can reach the destination address? > How will they be enumerated to the consumer? >
At the DAT layer the assumption was that multiple paths would be chosen based upon the Class of Service. So either the CoS must be passed down, or "get_device" must return an array of devices with the required info to allow the DAT Provider to make the determination. Passing it down sounds simpler to me. _______________________________________________ openib-general mailing list [email protected] http://openib.org/mailman/listinfo/openib-general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
