Older versions of acm.h do not include the resolve_data or perf_data fields in struct acm_msg. If we're using an older version of the acm.h header file, use an internal definition of struct acm_msg.
Signed-off-by: Sean Hefty <[email protected]> --- configure.in | 5 +++++ src/acm.c | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/configure.in b/configure.in index fa90fcb..dec6064 100644 --- a/configure.in +++ b/configure.in @@ -73,6 +73,11 @@ fi AC_CHECK_HEADER(infiniband/acm.h, AC_DEFINE([USE_IB_ACM], 1, [setting IBACM support]), []) +AC_CHECK_HEADER(infiniband/acm.h, + AC_CHECK_MEMBER(struct acm_msg.resolve_data, [], + AC_DEFINE(DEFINE_ACM_MSG, 1, [adding ACM message definition]), + [#include <infiniband/acm.h>]), []) + AC_CACHE_CHECK(whether ld accepts --version-script, ac_cv_version_script, if test -n "`$LD --help < /dev/null 2>/dev/null | grep version-script`"; then ac_cv_version_script=yes diff --git a/src/acm.c b/src/acm.c index 7911b41..bcf11da 100755 --- a/src/acm.c +++ b/src/acm.c @@ -48,6 +48,18 @@ #ifdef USE_IB_ACM #include <infiniband/acm.h> +#if DEFINE_ACM_MSG +typedef struct cma_acm_msg { + struct acm_hdr hdr; + union{ + uint8_t data[ACM_MSG_DATA_LENGTH]; + struct acm_ep_addr_data resolve_data[0]; + }; +} cma_acm_msg_t; +#else +typedef struct acm_msg cma_acm_msg_t; +#endif + static pthread_mutex_t acm_lock = PTHREAD_MUTEX_INITIALIZER; static int sock; static short server_port = 6125; @@ -237,7 +249,7 @@ err: rdma_freeaddrinfo(ib_rai); } -static void ucma_ib_save_resp(struct rdma_addrinfo *rai, struct acm_msg *msg) +static void ucma_ib_save_resp(struct rdma_addrinfo *rai, cma_acm_msg_t *msg) { struct acm_ep_addr_data *ep_data; struct ibv_path_data *path_data = NULL; @@ -306,7 +318,7 @@ static void ucma_copy_rai_addr(struct acm_ep_addr_data *data, struct sockaddr *a void ucma_ib_resolve(struct rdma_addrinfo **rai, struct rdma_addrinfo *hints) { - struct acm_msg msg; + cma_acm_msg_t msg; struct acm_ep_addr_data *data; int ret; -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
