On Thu, Mar 30, 2006 at 03:48:50PM -0800, Sean Hefty wrote:

> On the client side, the client does need to know which device to use before
> calling connect.  The client obtains the device by calling bind() or
> resolve_addr().  The latter call takes the source and destination addresses, 
> and
> obtains the device based on local routing information.

> So, bind() could be made to avoid mapping to a specific hardware device.  I 
> just
> don't think that it makes as much sense for RDMA interface, and results in 
> other
> restrictions, such as requiring deferred resource allocation.

Hmm. This all sounds very reasonable, but if resolve_addr is
available, why not get rid of bind()? Do not provide any way
in the API for a non-listening socket to get the bound hardware device
without providing both source and dest. 

ie make:

bind(src);
preallocate();
connect(dest)

Illegal and instead require:

reasolve_addr(src,dest);
preallocate();
connect(dest);

Then the only time you ever have to choose a device based only on
source address is if it is a listening socket, which is entirely OK,
IMHO.

If you always have a src,dest pair when looking up the hardware device
for an outgoing connection then you can always follow the directions
for egress device in the routing table so it should be as consistent
as possible..

Regards,
Jason
_______________________________________________
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