From: Knut Omang Date: Thu, 8 Sep 2016 09:08:38 +0000 (+0200) Subject: sif: Lift sif_verbs up to be independent of sif internal headers X-Git-Tag: v4.1.12-92~80^2~3 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=fd4212a01065e94ecdb769ca6ce5b3ed5e131e99;p=users%2Fjedix%2Flinux-maple.git sif: Lift sif_verbs up to be independent of sif internal headers The sif_verbs.h file needs to be independent of other header files to be includable from other kernel. This is necessary to avoid duplicate definition of the API elements. For Oracle Linux this file now moves from drivers/infiniband/hw/sif/ to include/rdma/ to make it available for the RDS and uvNIC drivers. This is a temporary but necessary measure while we wait for proper generic interfaces to be defined at the common verbs layer. Orabug: 24524698 Signed-off-by: Knut Omang --- diff --git a/drivers/infiniband/hw/sif/sif_cq.c b/drivers/infiniband/hw/sif/sif_cq.c index 2afc9793d4e7..6dda1da04fbb 100644 --- a/drivers/infiniband/hw/sif/sif_cq.c +++ b/drivers/infiniband/hw/sif/sif_cq.c @@ -10,7 +10,6 @@ * * sif_cq.c: Implementation of completion queue logic for SIF */ -#include #include #include #include diff --git a/drivers/infiniband/hw/sif/sif_defs.c b/drivers/infiniband/hw/sif/sif_defs.c index ed95ee69f766..b38949487d29 100644 --- a/drivers/infiniband/hw/sif/sif_defs.c +++ b/drivers/infiniband/hw/sif/sif_defs.c @@ -10,7 +10,6 @@ * * sif_defs.c: IB-to-SIF Mapper. */ -#include #include #include "sif_dev.h" #include "sif_defs.h" diff --git a/drivers/infiniband/hw/sif/sif_dev.h b/drivers/infiniband/hw/sif/sif_dev.h index 1fab1c0b55f7..ce2f81fb80d3 100644 --- a/drivers/infiniband/hw/sif/sif_dev.h +++ b/drivers/infiniband/hw/sif/sif_dev.h @@ -14,7 +14,6 @@ #ifndef __SIF_DEV_H #define __SIF_DEV_H -#include #include #include #include @@ -31,7 +30,7 @@ #include "sif_mem.h" -#include "sif_verbs.h" +#include #include "sif_r3.h" diff --git a/drivers/infiniband/hw/sif/sif_dma.c b/drivers/infiniband/hw/sif/sif_dma.c index 18218d1e4a7e..cf3e4636f652 100644 --- a/drivers/infiniband/hw/sif/sif_dma.c +++ b/drivers/infiniband/hw/sif/sif_dma.c @@ -10,7 +10,6 @@ * * sif_dma.c: DMA memory mapping */ -#include #include "sif_dma.h" #include "sif_dev.h" #include "psif_hw_data.h" diff --git a/drivers/infiniband/hw/sif/sif_idr.h b/drivers/infiniband/hw/sif/sif_idr.h index 4bdfcfd575d5..47722820dc7f 100644 --- a/drivers/infiniband/hw/sif/sif_idr.h +++ b/drivers/infiniband/hw/sif/sif_idr.h @@ -13,7 +13,6 @@ #ifndef _SIF_IDR_H #define _SIF_IDR_H -#include #include #include diff --git a/drivers/infiniband/hw/sif/sif_main.c b/drivers/infiniband/hw/sif/sif_main.c index 4a3fbcdf2740..8be965d50073 100644 --- a/drivers/infiniband/hw/sif/sif_main.c +++ b/drivers/infiniband/hw/sif/sif_main.c @@ -11,7 +11,6 @@ * sif_main.c: main entry points and initialization */ -#include #include #ifdef CONFIG_X86 #include diff --git a/drivers/infiniband/hw/sif/sif_mem.h b/drivers/infiniband/hw/sif/sif_mem.h index 1b91a8fd7285..fc98c59c232f 100644 --- a/drivers/infiniband/hw/sif/sif_mem.h +++ b/drivers/infiniband/hw/sif/sif_mem.h @@ -15,6 +15,7 @@ #ifndef _SIF_MEM_H #define _SIF_MEM_H #include +#include #include "sif_user.h" /* We need to support 4 interfaces to memory; abbreviated umem, fmr, diff --git a/drivers/infiniband/hw/sif/sif_mmu.c b/drivers/infiniband/hw/sif/sif_mmu.c index a0ad6a27cdbd..32ba74cabb96 100644 --- a/drivers/infiniband/hw/sif/sif_mmu.c +++ b/drivers/infiniband/hw/sif/sif_mmu.c @@ -27,7 +27,6 @@ #include #include #include -#include #include #include "psif_hw_setget.h" #include "sif_defs.h" diff --git a/drivers/infiniband/hw/sif/sif_mmu.h b/drivers/infiniband/hw/sif/sif_mmu.h index 6624f9455856..0f749c0725e5 100644 --- a/drivers/infiniband/hw/sif/sif_mmu.h +++ b/drivers/infiniband/hw/sif/sif_mmu.h @@ -16,6 +16,7 @@ #include #include "psif_hw_data.h" +#include #include "sif_user.h" struct sif_mem; diff --git a/drivers/infiniband/hw/sif/sif_query.c b/drivers/infiniband/hw/sif/sif_query.c index 4e0a103a4891..5dc77aceb396 100644 --- a/drivers/infiniband/hw/sif/sif_query.c +++ b/drivers/infiniband/hw/sif/sif_query.c @@ -10,7 +10,6 @@ * * sif_query.c: SIF implementation of some of IB query APIs */ -#include #include #include #include "sif_dev.h" diff --git a/drivers/infiniband/hw/sif/sif_user.h b/drivers/infiniband/hw/sif/sif_user.h index f355f5e3f634..a789323eea9f 100644 --- a/drivers/infiniband/hw/sif/sif_user.h +++ b/drivers/infiniband/hw/sif/sif_user.h @@ -84,19 +84,12 @@ enum sif_mem_type { SIFMT_MAX }; -enum sif_proxy_type { - SIFPX_OFF, /* Default value - no proxying */ - SIFPX_EPSA_1, - SIFPX_EPSA_2, - SIFPX_EPSA_3, - SIFPX_EPSA_4 -}; - enum sif_flush_type { NO_FLUSH, FLUSH_SQ, FLUSH_RQ }; + #endif /* These should be multiple of 64 bytes and densely packed: */ diff --git a/drivers/infiniband/hw/sif/sif_verbs.c b/drivers/infiniband/hw/sif/sif_verbs.c index 0525ccc42dff..de58c405b9f4 100644 --- a/drivers/infiniband/hw/sif/sif_verbs.c +++ b/drivers/infiniband/hw/sif/sif_verbs.c @@ -12,7 +12,7 @@ */ #include -#include "sif_verbs.h" +#include #include "sif_dev.h" #include "sif_epsc.h" #include "psif_hw_data.h" diff --git a/drivers/infiniband/hw/sif/version.c b/drivers/infiniband/hw/sif/version.c index ae3dc70455d4..4b94c7fdccd5 100644 --- a/drivers/infiniband/hw/sif/version.c +++ b/drivers/infiniband/hw/sif/version.c @@ -3,13 +3,13 @@ #include "version.h" struct sif_version sif_version = { -.git_repo = "sifdrv [non public commit]", -.last_commit = "titan_1.0.0.3 transform: Update used version of EPSC_API", +.git_repo = "sifdrv [origin/master]", +.last_commit = "titan_1.0.4.0 Lift sif_verbs up to be independent of sif internal headers", .git_status = "", -.build_git_time = "Fri, 12 Aug 2016 11:24:07 +0000", +.build_git_time = "Fri, 09 Sep 2016 09:58:31 +0000", .build_user = "komang", .git_psifapi_repo = "psifapi [origin/master]", -.last_psifapi_commit = "titan_1.0.0.3 EPSC_API_VERSION(2,10) - EPSC_DIAG_COUNTERS", +.last_psifapi_commit = "titan_1.0.4.0 Fix recently introduced checkpatch issues", .git_psifapi_status = "", }; diff --git a/drivers/infiniband/hw/sif/versioninfo.h b/drivers/infiniband/hw/sif/versioninfo.h index 2b7d562364ad..7cffd353a793 100644 --- a/drivers/infiniband/hw/sif/versioninfo.h +++ b/drivers/infiniband/hw/sif/versioninfo.h @@ -1,6 +1,6 @@ /* Misc driver release info */ -#define BUILD_DATE "2016-08-12" -#define BUILD_TIME "11:24:07" -#define BUILD_EPOCH 1471001047 -#define TITAN_RELEASE "1.0.0.3" +#define BUILD_DATE "2016-09-09" +#define BUILD_TIME "09:58:31" +#define BUILD_EPOCH 1473415111 +#define TITAN_RELEASE "1.0.4.0" diff --git a/drivers/infiniband/hw/sif/sif_verbs.h b/include/rdma/sif_verbs.h similarity index 78% rename from drivers/infiniband/hw/sif/sif_verbs.h rename to include/rdma/sif_verbs.h index bdc659da9e9f..a4caf77cd98c 100644 --- a/drivers/infiniband/hw/sif/sif_verbs.h +++ b/include/rdma/sif_verbs.h @@ -14,7 +14,6 @@ #ifndef _SIF_VERBS_H #define _SIF_VERBS_H #include -#include "sif_user.h" /*** sif verbs extensions ***/ @@ -51,16 +50,18 @@ struct sif_device_modify { }; -/* Extension bits in the qp create mask to ib_create_qp */ -/* Note that we use bits below IB_QP_CREATE_RESERVED_START */ +/* Provider specific extension bits in the qp create mask to ib_create_qp. + * We use the uppermost bits (mostly in the IB_QP_CREATE_RESERVED_START(b.26) - END range) + * to avoid conflict with future upstream bits, currently occupying bits 0-8: + */ enum sif_qp_create_flags { - IB_QP_CREATE_EOIB = IB_QP_CREATE_RESERVED_END , /* Indicate that this is an Ethernet over IB QP */ - IB_QP_CREATE_RSS = IB_QP_CREATE_RESERVED_END >> 1, /* Enable receive side scaling */ - IB_QP_CREATE_HDR_SPLIT = IB_QP_CREATE_RESERVED_END >> 2, /* Enable header/data split for offloading */ - IB_QP_CREATE_RCV_DYNAMIC_MTU = IB_QP_CREATE_RESERVED_END >> 3, /* Enable receive side dynamic mtu */ - IB_QP_CREATE_PROXY = IB_QP_CREATE_RESERVED_END >> 4, /* Enable a special EPSA proxy */ - IB_QP_NO_CSUM = IB_QP_CREATE_RESERVED_END >> 5, /* No csum for qp, wqe.wr.csum = qp.magic */ - IB_QP_CREATE_SND_DYNAMIC_MTU = IB_QP_CREATE_RESERVED_END >> 6, /* Enable receive side dynamic mtu */ + IB_QP_CREATE_EOIB = 1 << 24, /* Enable Ethernet over IB support */ + IB_QP_CREATE_RSS = 1 << 25, /* Enable receive side scaling */ + IB_QP_CREATE_HDR_SPLIT = 1 << 26, /* Enable header/data split for offloading */ + IB_QP_CREATE_RCV_DYNAMIC_MTU = 1 << 27, /* Enable receive side dynamic mtu */ + IB_QP_CREATE_PROXY = 1 << 28, /* Enable a special EPSA proxy QP */ + IB_QP_NO_CSUM = 1 << 29, /* No csum for qp, wqe.wr.csum = qp.magic */ + IB_QP_CREATE_SND_DYNAMIC_MTU = 1 << 30, /* Enable receive side dynamic mtu */ }; /* Extension bits in the qp attr mask to ib_modify_qp @@ -75,7 +76,6 @@ enum sif_qp_attr_mask { IB_QP_SND_DYN_MTU = 1 << 29, /* Enable send side dynamic mtu */ }; - /* Set/get the 48 bit ethernet mac address for a port on a uf * The uf field is ignored for all ufs except uf 0 (PF) */ @@ -87,6 +87,14 @@ struct psif_epsc_csr_req; struct psif_epsc_csr_rsp; enum psif_mbox_type; +enum sif_proxy_type { + SIFPX_OFF, /* Default value - no proxying */ + SIFPX_EPSA_1, + SIFPX_EPSA_2, + SIFPX_EPSA_3, + SIFPX_EPSA_4 +}; + struct sif_verbs { /* Exposed internal create_cq call to allow creation of proxy CQs. * Needed by EPSA users. Implemented in sif_cq.c.