Thanks for finding r27212.  It was about a year ago, and had clearly fallen out 
of my cache (I have very little to do with the openib BTL these days).

Your solution isn't correct, because HAVE_IBV_LINK_LAYER_ETHERNET is defined 
(nor not) via this m4 macro in config/ompi_check_openfabrics.m4:

           AC_CHECK_DECLS([IBV_LINK_LAYER_ETHERNET],
                          [$1_have_rdmaoe=1], [],
                          [#include <infiniband/verbs.h>])

This m4 macro will #define HAVE_IBV_LINK_LAYER_ETHERNET if it exists, or #undef 
that name if it doesn't.

Do you not see the check for IBV_LINK_LAYER_ETHERNET in your configure stdout?

The code in the oob CPC in question is:

-----
    /* If we have the transport_type member, check to ensure we're on           
     
       IB (this CPC will not work with iWarp).  If we do not have the           
     
       transport_type member, then we must be < OFED v1.2, and                  
    
       therefore we must be IB. */
#if defined(HAVE_STRUCT_IBV_DEVICE_TRANSPORT_TYPE) && 
defined(HAVE_IBV_LINK_LAYER_ETHERNET)
    if (BTL_OPENIB_CONNECT_BASE_CHECK_IF_NOT_IB(btl)) {
        opal_output_verbose(5, ompi_btl_base_framework.framework_output,
                            "openib BTL: oob CPC only supported on InfiniBand; 
skipped on  %s:%d",
                            ibv_get_device_name(btl->device->ib_dev),
                            btl->port_num);
        return OMPI_ERR_NOT_SUPPORTED;
    }
#endif
----

So are you saying you have a libibverbs that does not have 
IBV_LINK_LAYER_ETHERNET, but it *does* support iWARP?

If so, as the comment clearly states, that would violate the assumption of that 
logic...  But I'm not sure how that could happen.



On Aug 19, 2013, at 5:38 PM, Steve Wise <sw...@opengridcomputing.com> wrote:

> 
> 
>> -----Original Message-----
>> From: Steve Wise [mailto:sw...@opengridcomputing.com]
>> Sent: Monday, August 19, 2013 4:02 PM
>> To: 'Open MPI Developers'; 'Jeff Squyres (jsquyres)'
>> Cc: 'Indranil Choudhury'
>> Subject: RE: [OMPI devel] openmpi-1.7.2 fails to use the RDMACM CPC
>> 
>> I guess HAVE_IBV_LINK_LAYER_ETHERNET is guarding against a libibverbs that 
>> doesn't have
>> IBV_LINK_LAYER_ETHERNET defined.  So the proper fix, I think, is to enhance 
>> configure to check
> this and
>> #define HAVE_IBV_LINK_LAYER_ETHERNET  if it exists.  Or have it check 
>> existence of a link_layer
> field in
>> the ibv_port_attr structure.
>> 
>> 
> 
> Maybe something like this?
> 
> Index: ompi_check_openfabrics.m4
> ===================================================================
> --- ompi_check_openfabrics.m4   (revision 29048)
> +++ ompi_check_openfabrics.m4   (working copy)
> @@ -198,7 +198,7 @@
>                           [#include <infiniband/verbs.h>])
> 
>            AC_MSG_CHECKING([if RDMAoE support is enabled])
> -           AC_DEFINE_UNQUOTED([OMPI_HAVE_RDMAOE], [$$1_have_rdmaoe], [Enable 
> RDMAoE support])
> +           AC_DEFINE_UNQUOTED([HAVE_IBV_LINK_LAYER_ETHERNET], 
> [$$1_have_rdmaoe], [Enable RDMAoE
> support])
>            if test "1" = "$$1_have_rdmaoe"; then
>                 AC_MSG_RESULT([yes])
>            else
> 


-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/

Reply via email to