Whamcloud - gitweb
LU-14945 lnet: don't use hops to determine the route state
[fs/lustre-release.git] / lnet / autoconf / lustre-lnet.m4
index 9554330..c6be763 100644 (file)
@@ -109,8 +109,7 @@ AS_IF([test $ENABLEO2IB = "no"], [
        for O2IBPATH in $O2IBPATHS; do
                AS_IF([test \( -f ${O2IBPATH}/include/rdma/rdma_cm.h -a \
                           -f ${O2IBPATH}/include/rdma/ib_cm.h -a \
-                          -f ${O2IBPATH}/include/rdma/ib_verbs.h -a \
-                          -f ${O2IBPATH}/include/rdma/ib_fmr_pool.h \)], [
+                          -f ${O2IBPATH}/include/rdma/ib_verbs.h \)], [
                        o2ib_found=true
                        break
                ])
@@ -187,13 +186,11 @@ AS_IF([test $ENABLEO2IB = "no"], [
                        #include <rdma/rdma_cm.h>
                        #include <rdma/ib_cm.h>
                        #include <rdma/ib_verbs.h>
-                       #include <rdma/ib_fmr_pool.h>
                ],[
                        struct rdma_cm_id      *cm_idi __attribute__ ((unused));
                        struct rdma_conn_param  conn_param __attribute__ ((unused));
                        struct ib_device_attr   device_attr __attribute__ ((unused));
                        struct ib_qp_attr       qp_attr __attribute__ ((unused));
-                       struct ib_pool_fmr      pool_fmr __attribute__ ((unused));
                        enum   ib_cm_rej_reason rej_reason __attribute__ ((unused));
                        rdma_destroy_id(NULL);
                ],[
@@ -253,6 +250,7 @@ AC_SUBST(ENABLEO2IB)
 
 AS_IF([test $ENABLEO2IB != "no"], [
        EXTRA_CHECK_INCLUDE="$EXTRA_OFED_CONFIG $EXTRA_OFED_INCLUDE"
+       KBUILD_EXTRA_SYMBOLS="$KBUILD_EXTRA_SYMBOLS $O2IBPATH/Module.symvers"
 
        # In RHEL 6.2, rdma_create_id() takes the queue-pair type as a fourth argument
        LB_CHECK_COMPILE([if 'rdma_create_id' wants four args],
@@ -545,6 +543,44 @@ AS_IF([test $ENABLEO2IB != "no"], [
                        [rdma_reject has 4 arguments])
        ])
 
+       # The FMR pool API was removed in Linux 5.8,
+       # commit 4e373d5417ecbb4f438a8500f0379a2fc29c2643
+       LB_CHECK_COMPILE([if FMR pools API available],
+       ib_fmr, [
+               #include <rdma/ib_verbs.h>
+       ],[
+               struct ib_fmr fmr = {};
+       ],[
+               AC_DEFINE(HAVE_FMR_POOL_API, 1,
+                       [FMR pool API is available])
+       ])
+
+       # rdma_connect_locked() was added in Linux 5.10,
+       # commit 071ba4cc559de47160761b9500b72e8fa09d923d
+       # and in MOFED-5.2-2. rdma_connect_locked() must
+       # be called instead of rdma_connect() in
+       # RDMA_CM_EVENT_ROUTE_RESOLVED handler.
+       LB_CHECK_COMPILE([if 'rdma_connect_locked' exists],
+       rdma_connect_locked, [
+               #include <rdma/rdma_cm.h>
+       ],[
+               rdma_connect_locked(NULL, NULL);
+       ],[
+               AC_DEFINE(HAVE_RDMA_CONNECT_LOCKED, 1,
+                       [rdma_connect_locked is defined])
+       ])
+
+       # ethtool_link_settings was added in Linux 4.6
+       LB_CHECK_COMPILE([if 'ethtool_link_settings' exists],
+       ethtool_link_settings, [
+               #include <linux/ethtool.h>
+       ],[
+               struct ethtool_link_ksettings cmd;
+       ],[
+               AC_DEFINE(HAVE_ETHTOOL_LINK_SETTINGS, 1,
+                       [ethtool_link_settings is defined])
+       ])
+
        EXTRA_CHECK_INCLUDE=""
        AC_DEFUN([LN_CONFIG_O2IB_SRC], [])
        AC_DEFUN([LN_CONFIG_O2IB_RESULTS], [])
@@ -869,6 +905,41 @@ AC_DEFUN([LN_CONFIGURE], [
 AC_MSG_NOTICE([LNet core checks
 ==============================================================================])
 
+# lnet/utils/lnetconfig/liblnetconfig_netlink.c
+AS_IF([test "x$enable_dist" = xno], [
+       PKG_CHECK_MODULES(LIBNL3, [libnl-genl-3.0 >= 3.1])
+])
+
+AC_CHECK_LIB([nl-3], [nla_get_s32], [
+       AC_DEFINE(HAVE_NLA_GET_S32, 1,
+               [libnl3 supports nla_get_s32])
+       ], [
+])
+
+AC_CHECK_LIB([nl-3], [nla_get_s64], [
+       AC_DEFINE(HAVE_NLA_GET_S64, 1,
+               [libnl3 supports nla_get_s64])
+       ], [
+])
+
+#
+# LN_USR_NLMSGERR
+#
+AC_DEFUN([LN_USR_NLMSGERR], [
+AC_MSG_CHECKING([if 'enum nlmsgerr_attrs' exists])
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+       #include <linux/netlink.h>
+
+       int main(void) {
+               int x = (int)NLMSGERR_ATTR_MAX;
+               return x;
+       }
+])],[
+       AC_DEFINE(HAVE_USRSPC_NLMSGERR, 1,
+               ['enum nlmsgerr_attrs' exists])
+])
+]) # LN_USR_NLMGSERR
+
 # lnet/utils/portals.c
 AC_CHECK_HEADERS([netdb.h])
 AC_CHECK_FUNCS([gethostbyname])
@@ -895,6 +966,7 @@ AC_SUBST(LIBEFENCE)
 
 LN_CONFIG_DLC
 LN_USR_RDMA
+LN_USR_NLMSGERR
 ]) # LN_CONFIGURE
 
 #