mirror of
https://github.com/SCST-project/scst.git
synced 2026-08-17 04:36:22 +00:00
ib_srpt: Improve portability
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@7082 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
+16
-7
@@ -5,12 +5,18 @@ ifndef PREFIX
|
||||
PREFIX=/usr/local
|
||||
endif
|
||||
|
||||
SCST_INC_DIR := $(shell if [ -e "$$PWD/../scst" ]; \
|
||||
then echo "$$PWD/../scst/include"; \
|
||||
else echo "$(DESTDIR)$(PREFIX)/include/scst"; fi)
|
||||
SCST_SYMVERS_DIR := $(shell if [ -e $$PWD/../scst ]; then \
|
||||
echo $$PWD/../scst/src; \
|
||||
else echo $(DESTDIR)$(PREFIX)/include/scst; fi)
|
||||
SCST_INC_DIR := $(shell \
|
||||
if [ -e "$$PWD/../scst" ]; then \
|
||||
echo "$$PWD/../scst/include"; \
|
||||
else \
|
||||
echo "$(DESTDIR)$(PREFIX)/include/scst"; \
|
||||
fi)
|
||||
SCST_SYMVERS_DIR := $(shell \
|
||||
if [ -e "$$PWD/../scst" ]; then \
|
||||
echo "$$PWD/../scst/src"; \
|
||||
else \
|
||||
echo "$(DESTDIR)$(PREFIX)/include/scst"; \
|
||||
fi)
|
||||
|
||||
ifeq ($(KVER),)
|
||||
ifeq ($(KDIR),)
|
||||
@@ -66,7 +72,6 @@ ifeq ($(OFED_FLAVOR),MOFED)
|
||||
# <linux/compat-2.6.h>, include that header file explicitly.
|
||||
OFED_KERNEL_DIR:=/usr/src/ofa_kernel/default
|
||||
OFED_VERS=$(shell rpm -q --qf '%{version}\n' mlnx-ofa_kernel-devel 2>/dev/null)
|
||||
CKVER:=$(shell echo "$(KVER)" | sed 's/^\(\(2\.6\|[3-9]\)\.[0-9]*\).*/\1/')
|
||||
OFED_CFLAGS:=-I$(OFED_KERNEL_DIR)/include -include "linux/compat-2.6.h"
|
||||
OFED_CFLAGS+=-DMOFED_MAJOR=$(shell echo $(OFED_VERS) | cut -f1 -d.)
|
||||
OFED_CFLAGS+=-DMOFED_MINOR=$(shell echo $(OFED_VERS) | cut -f2 -d.)
|
||||
@@ -96,8 +101,10 @@ endif
|
||||
CLIENT_REMOVE := $(call run_conftest,ib_client_remove,-DIB_CLIENT_REMOVE_TAKES_TWO_ARGS)
|
||||
CM_LISTEN := $(call run_conftest,cm_listen,-DIB_CM_LISTEN_TAKES_FOURTH_ARG)
|
||||
MAD_HANDLER_TAKES_SEND_BUF := $(call run_conftest,mad_handler_takes_send_buf,-DMAD_HANDLER_TAKES_SEND_BUF)
|
||||
HAVE_IB_DMA_MAP_OPS := $(call run_conftest,ib_dma_map_ops,-DHAVE_IB_DMA_MAP_OPS)
|
||||
HAVE_IB_SET_CPI_RESP_TIME := $(call run_conftest,ib_set_cpi_resp_time,-DHAVE_IB_SET_CPI_RESP_TIME)
|
||||
GID_CHANGE_FLAG := $(call run_conftest,gid_change,-DHAVE_IB_EVENT_GID_CHANGE)
|
||||
PD_HAS_LOCAL_DMA_LKEY := $(call run_conftest,pd_has_local_dma_lkey,-DIB_PD_HAS_LOCAL_DMA_LKEY)
|
||||
RDMA_CREATE_ID := $(call run_conftest,rdma_create_id_net,-DRDMA_CREATE_ID_TAKES_NET_ARG=1,-DRDMA_CREATE_ID_TAKES_NET_ARG=0)
|
||||
REGISTER_MAD_AGENT_FLAG := $(call run_conftest,register_mad_agent,-DREGISTER_MAD_AGENT_HAS_FLAGS_ARG)
|
||||
QUERY_DEVICE := $(call run_conftest,query_device,-DHAVE_IB_QUERY_DEVICE)
|
||||
@@ -112,8 +119,10 @@ PRE_CFLAGS=$(OFED_CFLAGS) \
|
||||
$(IB_CLIENT_REMOVE_TAKES_TWO_ARGS) \
|
||||
$(CM_LISTEN) \
|
||||
$(MAD_HANDLER_TAKES_SEND_BUF) \
|
||||
$(HAVE_IB_DMA_MAP_OPS) \
|
||||
$(HAVE_IB_SET_CPI_RESP_TIME) \
|
||||
$(GID_CHANGE_FLAG) \
|
||||
$(PD_HAS_LOCAL_DMA_LKEY) \
|
||||
$(RDMA_CREATE_ID) \
|
||||
$(REGISTER_MAD_AGENT_FLAG) \
|
||||
$(QUERY_GID_FLAG) \
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
LINUXINCLUDE := $(PRE_CFLAGS) $(LINUXINCLUDE)
|
||||
|
||||
obj-m += ib_dma_map_ops.o
|
||||
@@ -0,0 +1,11 @@
|
||||
#include <linux/module.h>
|
||||
#include <rdma/ib_verbs.h>
|
||||
|
||||
static struct ib_device *dev;
|
||||
|
||||
static int modinit(void)
|
||||
{
|
||||
return dev->dma_ops != NULL;
|
||||
}
|
||||
|
||||
module_init(modinit);
|
||||
@@ -0,0 +1,3 @@
|
||||
LINUXINCLUDE := $(PRE_CFLAGS) $(LINUXINCLUDE)
|
||||
|
||||
obj-m += pd_has_local_dma_lkey.o
|
||||
@@ -0,0 +1,10 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/stddef.h>
|
||||
#include <rdma/ib_verbs.h>
|
||||
|
||||
static int modinit(void)
|
||||
{
|
||||
return offsetof(struct ib_pd, local_dma_lkey);
|
||||
}
|
||||
|
||||
module_init(modinit);
|
||||
+9
-16
@@ -135,8 +135,7 @@ static int use_srq;
|
||||
static bool use_srq;
|
||||
#endif
|
||||
module_param(use_srq, bool, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(use_srq,
|
||||
"Whether or not to use SRQ");
|
||||
MODULE_PARM_DESC(use_srq, "Whether or not to use SRQ");
|
||||
|
||||
static int srpt_srq_size = DEFAULT_SRPT_SRQ_SIZE;
|
||||
module_param(srpt_srq_size, int, S_IRUGO | S_IWUSR);
|
||||
@@ -145,8 +144,7 @@ MODULE_PARM_DESC(srpt_srq_size,
|
||||
|
||||
static int srpt_sq_size = DEF_SRPT_SQ_SIZE;
|
||||
module_param(srpt_sq_size, int, 0444);
|
||||
MODULE_PARM_DESC(srpt_sq_size,
|
||||
"Per-channel send queue (SQ) size.");
|
||||
MODULE_PARM_DESC(srpt_sq_size, "Per-channel send queue (SQ) size.");
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31) \
|
||||
|| defined(RHEL_MAJOR) && RHEL_MAJOR -0 <= 5
|
||||
@@ -626,8 +624,7 @@ static void srpt_mad_recv_handler(struct ib_mad_agent *mad_agent,
|
||||
#endif
|
||||
0, IB_MGMT_DEVICE_HDR, IB_MGMT_DEVICE_DATA,
|
||||
GFP_KERNEL
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) && !defined(MOFED_MAJOR) || \
|
||||
defined(CREATE_SEND_MAD_HAS_BASE_ARG)
|
||||
#ifdef CREATE_SEND_MAD_HAS_BASE_ARG
|
||||
, 0
|
||||
#endif
|
||||
);
|
||||
@@ -702,8 +699,7 @@ static int srpt_refresh_port(struct srpt_port *sport)
|
||||
sport->lid = port_attr.lid;
|
||||
|
||||
ret = ib_query_gid(sport->sdev->device, sport->port, 0, &sport->gid
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 4, 0) || \
|
||||
defined(IB_QUERY_GID_HAS_ATTR_ARG)
|
||||
#ifdef IB_QUERY_GID_HAS_ATTR_ARG
|
||||
, NULL
|
||||
#endif
|
||||
);
|
||||
@@ -724,8 +720,7 @@ static int srpt_refresh_port(struct srpt_port *sport)
|
||||
srpt_mad_send_handler,
|
||||
srpt_mad_recv_handler,
|
||||
sport
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0) || \
|
||||
defined(REGISTER_MAD_AGENT_HAS_FLAGS_ARG)
|
||||
#ifdef REGISTER_MAD_AGENT_HAS_FLAGS_ARG
|
||||
, 0
|
||||
#endif
|
||||
);
|
||||
@@ -2227,9 +2222,7 @@ retry:
|
||||
!defined(RHEL_RELEASE_CODE)
|
||||
ch->cq = ib_create_cq(sdev->device, srpt_completion, NULL, ch,
|
||||
ch->rq_size + sq_size);
|
||||
#elif (LINUX_VERSION_CODE < KERNEL_VERSION(4, 2, 0) || \
|
||||
defined(MOFED_MAJOR)) && \
|
||||
!defined(IB_CREATE_CQ_HAS_INIT_ATTR)
|
||||
#elif !defined(IB_CREATE_CQ_HAS_INIT_ATTR)
|
||||
ch->cq = ib_create_cq(sdev->device, srpt_completion, NULL, ch,
|
||||
ch->rq_size + sq_size, ch->comp_vector);
|
||||
#else
|
||||
@@ -4360,7 +4353,7 @@ static void srpt_add_one(struct ib_device *device)
|
||||
goto free_dev;
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0)
|
||||
#ifndef IB_PD_HAS_LOCAL_DMA_LKEY
|
||||
sdev->mr = ib_get_dma_mr(sdev->pd, IB_ACCESS_LOCAL_WRITE);
|
||||
if (IS_ERR(sdev->mr)) {
|
||||
pr_err("ib_get_dma_mr() failed: %ld\n", PTR_ERR(sdev->mr));
|
||||
@@ -4493,7 +4486,7 @@ err_ring:
|
||||
if (sdev->use_srq)
|
||||
ib_destroy_srq(sdev->srq);
|
||||
err_mr:
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0)
|
||||
#ifndef IB_PD_HAS_LOCAL_DMA_LKEY
|
||||
ib_dereg_mr(sdev->mr);
|
||||
err_pd:
|
||||
#endif
|
||||
@@ -4568,7 +4561,7 @@ static void srpt_remove_one(struct ib_device *device, void *client_data)
|
||||
|
||||
if (sdev->use_srq)
|
||||
ib_destroy_srq(sdev->srq);
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0)
|
||||
#ifndef IB_PD_HAS_LOCAL_DMA_LKEY
|
||||
ib_dereg_mr(sdev->mr);
|
||||
#endif
|
||||
ib_dealloc_pd(sdev->pd);
|
||||
|
||||
+1
-1
@@ -457,7 +457,7 @@ struct srpt_port {
|
||||
struct srpt_device {
|
||||
struct ib_device *device;
|
||||
struct ib_pd *pd;
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0)
|
||||
#ifndef IB_PD_HAS_LOCAL_DMA_LKEY
|
||||
struct ib_mr *mr;
|
||||
#endif
|
||||
struct ib_srq *srq;
|
||||
|
||||
Reference in New Issue
Block a user