# LN_CONFIG_O2IB
#
AC_DEFUN([LN_CONFIG_O2IB],[
+
+# In RHEL 6.2, rdma_create_id() takes the queue-pair type as a fourth argument
+AC_MSG_CHECKING([if rdma_create_id wants four args])
+LB_LINUX_TRY_COMPILE([
+ #include <rdma/rdma_cm.h>
+],[
+ rdma_create_id(NULL, NULL, 0, 0);
+],[
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_RDMA_CREATE_ID_4ARG, 1, [rdma_create_id wants 4 args])
+],[
+ AC_MSG_RESULT([no])
+])
+
AC_MSG_CHECKING([whether to enable OpenIB gen2 support])
# set default
AC_ARG_WITH([o2ib],
struct ib_pool_fmr pool_fmr;
enum ib_cm_rej_reason rej_reason;
+ #ifdef HAVE_RDMA_CREATE_ID_4ARG
+ cm_id = rdma_create_id(NULL, NULL, RDMA_PS_TCP, 0);
+ #else
cm_id = rdma_create_id(NULL, NULL, RDMA_PS_TCP);
+ #endif
return PTR_ERR(cm_id);
],[
AC_MSG_RESULT([yes])
*
* a. rdma_bind_addr(), it will conflict with listener cmid
* b. rdma_resolve_addr() to zero addr */
- cmid = rdma_create_id(kiblnd_dummy_callback,
- dev, RDMA_PS_TCP);
+ cmid = kiblnd_rdma_create_id(kiblnd_dummy_callback, dev, RDMA_PS_TCP,
+ IB_QPT_RC);
if (IS_ERR(cmid)) {
rc = PTR_ERR(cmid);
CERROR("Failed to create cmid for failover: %d\n", rc);
rdma_destroy_id(cmid);
}
- cmid = rdma_create_id(kiblnd_cm_callback, dev, RDMA_PS_TCP);
+ cmid = kiblnd_rdma_create_id(kiblnd_cm_callback, dev, RDMA_PS_TCP,
+ IB_QPT_RC);
if (IS_ERR(cmid)) {
rc = PTR_ERR(cmid);
CERROR("Failed to create cmid for failover: %d\n", rc);
IBLND_CREDIT_HIGHWATER_V1 : \
*kiblnd_tunables.kib_peercredits_hiw) /* when eagerly to return credits */
+#ifdef HAVE_RDMA_CREATE_ID_4ARG
+#define kiblnd_rdma_create_id(cb, dev, ps, qpt) rdma_create_id(cb, dev, ps, qpt)
+#else
+#define kiblnd_rdma_create_id(cb, dev, ps, qpt) rdma_create_id(cb, dev, ps)
+#endif
+
static inline int
kiblnd_concurrent_sends_v1(void)
{
LASSERT (net != NULL);
LASSERT (peer->ibp_connecting > 0);
- cmid = rdma_create_id(kiblnd_cm_callback, peer, RDMA_PS_TCP);
+ cmid = kiblnd_rdma_create_id(kiblnd_cm_callback, peer, RDMA_PS_TCP,
+ IB_QPT_RC);
+
if (IS_ERR(cmid)) {
CERROR("Can't create CMID for %s: %ld\n",
libcfs_nid2str(peer->ibp_nid), PTR_ERR(cmid));