From 0651bc1e4e3c0b5ab40c275b1f3e1d1545d1db21 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Tue, 14 Jul 2015 23:49:48 +0000 Subject: [PATCH] ib_srpt: Linux kernel v4.2 ib_create_cq() build fix git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6426 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- srpt/Makefile | 3 ++- srpt/conftest/create_cq/Makefile | 3 +++ srpt/conftest/create_cq/create_cq.c | 13 +++++++++++++ srpt/src/ib_srpt.c | 10 +++++++++- 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 srpt/conftest/create_cq/Makefile create mode 100644 srpt/conftest/create_cq/create_cq.c diff --git a/srpt/Makefile b/srpt/Makefile index bcc525ef8..df2cf832b 100644 --- a/srpt/Makefile +++ b/srpt/Makefile @@ -77,13 +77,14 @@ endif OFED_MODULE_SYMVERS:=$(OFED_KERNEL_DIR)/$(MODULE_SYMVERS) endif +CREATE_CQ_FLAG = $(shell $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd)/conftest/create_cq PRE_CFLAGS="$(OFED_CFLAGS) -Werror" >/dev/null 2>&1 && echo -DIB_CREATE_CQ_HAS_INIT_ATTR) CREATE_SEND_MAD_AH_FLAG := $(shell $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd)/conftest/create_send_mad_ah PRE_CFLAGS="$(OFED_CFLAGS) -Werror" >/dev/null 2>&1 && echo -DCREATE_SEND_MAD_HAS_AH_ARG) ifeq ($(CREATE_SEND_MAD_AH_FLAG),) CREATE_SEND_MAD_BASE_FLAG := $(shell $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd)/conftest/create_send_mad_base PRE_CFLAGS="$(OFED_CFLAGS) -Werror" >/dev/null 2>&1 && echo -DCREATE_SEND_MAD_HAS_BASE_ARG) endif GID_CHANGE_FLAG = $(shell $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd)/conftest/gid_change PRE_CFLAGS="$(OFED_CFLAGS)" >/dev/null 2>&1 && echo -DHAVE_IB_EVENT_GID_CHANGE) REGISTER_MAD_AGENT_FLAG = $(shell $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd)/conftest/register_mad_agent PRE_CFLAGS="$(OFED_CFLAGS) -Werror" >/dev/null 2>&1 && echo -DREGISTER_MAD_AGENT_HAS_FLAGS_ARG) -PRE_CFLAGS=$(OFED_CFLAGS) $(CREATE_SEND_MAD_AH_FLAG) $(CREATE_SEND_MAD_BASE_FLAG) $(GID_CHANGE_FLAG) $(REGISTER_MAD_AGENT_FLAG) -DOFED_FLAVOR=$(OFED_FLAVOR) +PRE_CFLAGS=$(OFED_CFLAGS) $(CREATE_CQ_FLAG) $(CREATE_SEND_MAD_AH_FLAG) $(CREATE_SEND_MAD_BASE_FLAG) $(GID_CHANGE_FLAG) $(REGISTER_MAD_AGENT_FLAG) -DOFED_FLAVOR=$(OFED_FLAVOR) all: src/$(MODULE_SYMVERS) $(MAKE) -C $(KDIR) SUBDIRS=$(shell pwd)/src \ diff --git a/srpt/conftest/create_cq/Makefile b/srpt/conftest/create_cq/Makefile new file mode 100644 index 000000000..d7ada9b0a --- /dev/null +++ b/srpt/conftest/create_cq/Makefile @@ -0,0 +1,3 @@ +LINUXINCLUDE := $(PRE_CFLAGS) $(LINUXINCLUDE) + +obj-m += create_cq.o diff --git a/srpt/conftest/create_cq/create_cq.c b/srpt/conftest/create_cq/create_cq.c new file mode 100644 index 000000000..86fce929e --- /dev/null +++ b/srpt/conftest/create_cq/create_cq.c @@ -0,0 +1,13 @@ +#include +#include + +static int modinit(void) +{ + struct ib_cq *q; + + q = ib_create_cq(NULL, NULL, NULL, NULL, NULL); + + return q != 0; +} + +module_init(modinit); diff --git a/srpt/src/ib_srpt.c b/srpt/src/ib_srpt.c index 5fea7f7f3..6901099fe 100644 --- a/srpt/src/ib_srpt.c +++ b/srpt/src/ib_srpt.c @@ -2181,9 +2181,17 @@ static int srpt_create_ch_ib(struct srpt_rdma_ch *ch) && !defined(RHEL_RELEASE_CODE) ch->cq = ib_create_cq(sdev->device, srpt_completion, NULL, ch, ch->rq_size + srpt_sq_size); -#else +#elif !defined(IB_CREATE_CQ_HAS_INIT_ATTR) ch->cq = ib_create_cq(sdev->device, srpt_completion, NULL, ch, ch->rq_size + srpt_sq_size, ch->comp_vector); +#else + { + struct ib_cq_init_attr ia = { }; + + ia.cqe = ch->rq_size + srpt_sq_size; + ia.comp_vector = ch->comp_vector; + ch->cq = ib_create_cq(sdev->device, srpt_completion, NULL, ch, &ia); + } #endif if (IS_ERR(ch->cq)) { ret = PTR_ERR(ch->cq);