I was reviewing Mellanox's Open MPI patches for RDMAoE support this afternoon and came up with the following general questions:

1. It looks like there is a new field on the ibv_port_attr struct: transport. Is it expected that all device drivers will start filling in this value, or is it done in the OF core code somewhere? Regardless of where this value is supposed to be filled in, does the Mellanox patch to community OFED ensure that this value is properly initialized regardless of what device is used? (this issue came up in the OMPI review: whether we could *always* rely on this value being accurate, or whether it was only accurate when Mellanox devices are used -- and it should be considered uninitialized when other devices are used)

2. I am somewhat confused by the overloading of the term "transport". It appears that a device will have ibv_device.transport_type==IBV_TRANSPORT_IB for both IB and RDMAOE devices. The only way to tell the difference is to examine the new ibv_port_attr.transport field to see if it is RDMA_TRANSPORT_IB or RDMA_TRANSPORT_RDMAOE.

This disparity seems a little odd to me. They're both called "transport" -- so why are they split across two fields? Is there a reason for not simply creating a new ibv_transport_type enum value named IBV_TRANSPORT_RDMAOE and assigning that to the ibv_device.transport_type field?

I'm *guessing* that Mellanox wants legacy code checking for the ibv_device.transport_type value IBV_TRANSPORT_IB to work for RDMAOE devices as well...? If that's correct:

2a. That assumption seems risky -- the Open MPI RDMAOE patch implies that host loopback is not supported in RDMAOE mode (but it is in IB mode). To be clear, the OMPI code had to do something different for real IB vs. RDMAOE in at least 1 or 2 places.

2b. Can we come up with a different/better name for the ibv_port_attr.transport field name and enum values? Overloading the term "transport" across two fields is quite confusing IMHO. Example: ignoring the code, how do Mellanox engineers refer to these two different characteristics? I ask because this might help come up with better struct names. The existing verbs code base has a long- established "transport_type" field on the ibv_device struct which, obviously, should not be changed. If you now distinguish "IBV_TRANSPORT_IB" devices as either real IB and IBoE, how do you refer to this 2nd characteristic in spoken/written text?

Thanks!

--
Jeff Squyres
jsquy...@cisco.com

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to