diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a2f85cd --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/rdma-core-13.tar.gz diff --git a/.rdma-core.metadata b/.rdma-core.metadata new file mode 100644 index 0000000..ee92d3d --- /dev/null +++ b/.rdma-core.metadata @@ -0,0 +1 @@ +c3aea0873ee388ac69816191e107dce948c61b35 SOURCES/rdma-core-13.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 98f42b4..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/0001-Use-integer-as-getopt_long-returns-integer.patch b/SOURCES/0001-Use-integer-as-getopt_long-returns-integer.patch new file mode 100644 index 0000000..07d880b --- /dev/null +++ b/SOURCES/0001-Use-integer-as-getopt_long-returns-integer.patch @@ -0,0 +1,29 @@ +From a846db7bde6f756e320035da7cfe4d78e62e2a87 Mon Sep 17 00:00:00 2001 +From: Honggang Li +Date: Tue, 25 Apr 2017 13:28:41 +0800 +Subject: [PATCH] Use integer as getopt_long returns integer + +ARM chars are unsigned by default. getopt_long return 255 instead -1. +That will cause an endless loop for aarch64 platform. + +Signed-off-by: Honggang Li +--- + rdma-ndd/rdma-ndd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/rdma-ndd/rdma-ndd.c b/rdma-ndd/rdma-ndd.c +index 1579a02..e7be22b 100644 +--- a/rdma-ndd/rdma-ndd.c ++++ b/rdma-ndd/rdma-ndd.c +@@ -297,7 +297,7 @@ int main(int argc, char *argv[]) + { } + }; + +- char c = getopt_long(argc, argv, "fh", long_opts, &opt_idx); ++ int c = getopt_long(argc, argv, "fh", long_opts, &opt_idx); + if (c == -1) + break; + +-- +1.8.3.1 + diff --git a/SOURCES/0001-ibverbs-Report-raw-packet-caps-as-part-of-query-devi.patch b/SOURCES/0001-ibverbs-Report-raw-packet-caps-as-part-of-query-devi.patch new file mode 100644 index 0000000..a5a5193 --- /dev/null +++ b/SOURCES/0001-ibverbs-Report-raw-packet-caps-as-part-of-query-devi.patch @@ -0,0 +1,152 @@ +From dbae02eb61ae3460922710997e7f22b1ebc075a7 Mon Sep 17 00:00:00 2001 +From: Noa Osherovich +Date: Sun, 13 Nov 2016 10:47:15 +0200 +Subject: [PATCH rdma-core 1/6] ibverbs: Report raw packet caps as part of + query device + +Currently, existing raw packet capabilities (IP CSUM and scatter FCS) +are reported separately to the user via ibv_query_device_ex. + +Unify those capabilities into a single enum and report them together +for a better user experience. + +Also introduce CVLAN stripping offload capability. CVLAN is the +customer VLAN tag (inner tag). +CVLAN stripping offload is the device's ability to strip this tag +from incoming raw Ethernet packets and report the data in the +matching work completion. + +This patch includes: +- Reading from the uverbs layer and report back to an application. +- Extending ibv_devinfo to print that information. + +Signed-off-by: Noa Osherovich +Reviewed-by: Maor Gottlieb +Reviewed-by: Yishai Hadas +--- + libibverbs/cmd.c | 8 ++++++++ + libibverbs/examples/devinfo.c | 14 ++++++++++++++ + libibverbs/kern-abi.h | 2 +- + libibverbs/man/ibv_query_device_ex.3 | 9 +++++++++ + libibverbs/verbs.h | 7 +++++++ + 5 files changed, 39 insertions(+), 1 deletion(-) + +diff --git a/libibverbs/cmd.c b/libibverbs/cmd.c +index 9b49da00..4aebbb51 100644 +--- a/libibverbs/cmd.c ++++ b/libibverbs/cmd.c +@@ -230,6 +230,14 @@ int ibv_cmd_query_device_ex(struct ibv_context *context, + attr->max_wq_type_rq = resp->max_wq_type_rq; + } + ++ if (attr_size >= offsetof(struct ibv_device_attr_ex, raw_packet_caps) + ++ sizeof(attr->raw_packet_caps)) { ++ if (resp->response_length >= ++ offsetof(struct ibv_query_device_resp_ex, raw_packet_caps) + ++ sizeof(resp->raw_packet_caps)) ++ attr->raw_packet_caps = resp->raw_packet_caps; ++ } ++ + return 0; + } + +diff --git a/libibverbs/examples/devinfo.c b/libibverbs/examples/devinfo.c +index d88562f2..42222c4c 100644 +--- a/libibverbs/examples/devinfo.c ++++ b/libibverbs/examples/devinfo.c +@@ -401,6 +401,17 @@ static void print_packet_pacing_caps(const struct ibv_packet_pacing_caps *caps) + } + } + ++static void print_raw_packet_caps(uint32_t raw_packet_caps) ++{ ++ printf("\traw packet caps:\n"); ++ if (raw_packet_caps & IBV_RAW_PACKET_CAP_CVLAN_STRIPPING) ++ printf("\t\t\t\t\tC-VLAN stripping offload\n"); ++ if (raw_packet_caps & IBV_RAW_PACKET_CAP_SCATTER_FCS) ++ printf("\t\t\t\t\tScatter FCS offload\n"); ++ if (raw_packet_caps & IBV_RAW_PACKET_CAP_IP_CSUM) ++ printf("\t\t\t\t\tIP csum offload\n"); ++} ++ + static int print_hca_cap(struct ibv_device *ib_dev, uint8_t ib_port) + { + struct ibv_context *ctx; +@@ -499,6 +510,9 @@ static int print_hca_cap(struct ibv_device *ib_dev, uint8_t ib_port) + else + printf("\tcore clock not supported\n"); + ++ if (device_attr.raw_packet_caps) ++ print_raw_packet_caps(device_attr.raw_packet_caps); ++ + printf("\tdevice_cap_flags_ex:\t\t0x%" PRIX64 "\n", device_attr.device_cap_flags_ex); + print_device_cap_flags_ex(device_attr.device_cap_flags_ex); + print_tso_caps(&device_attr.tso_caps); +diff --git a/libibverbs/kern-abi.h b/libibverbs/kern-abi.h +index 210dd3e4..3958f0c1 100644 +--- a/libibverbs/kern-abi.h ++++ b/libibverbs/kern-abi.h +@@ -290,7 +290,7 @@ struct ibv_query_device_resp_ex { + __u64 device_cap_flags_ex; + struct ibv_rss_caps_resp rss_caps; + __u32 max_wq_type_rq; +- __u32 reserved; ++ __u32 raw_packet_caps; + }; + + struct ibv_query_port { +diff --git a/libibverbs/man/ibv_query_device_ex.3 b/libibverbs/man/ibv_query_device_ex.3 +index c2910170..fdfb7081 100644 +--- a/libibverbs/man/ibv_query_device_ex.3 ++++ b/libibverbs/man/ibv_query_device_ex.3 +@@ -32,6 +32,7 @@ struct ibv_tso_caps tso_caps; /* TCP segmentation offload c + struct ibv_rss_caps rss_caps; /* RSS capabilities */ + uint32_t max_wq_type_rq; /* Max Work Queue from type RQ */ + struct ibv_packet_pacing_caps packet_pacing_caps; /* Packet pacing capabilities */ ++uint32_t raw_packet_caps; /* Raw packet capabilities, use enum ibv_raw_packet_caps */ + .in -8 + }; + +@@ -75,6 +76,14 @@ struct ibv_packet_pacing_caps { + uint32_t supported_qpts; /* Bitmap showing which QP types are supported. */ + }; + ++enum ibv_raw_packet_caps { ++.in +8 ++IBV_RAW_PACKET_CAP_CVLAN_STRIPPING = 1 << 0, /* CVLAN stripping is supported */ ++IBV_RAW_PACKET_CAP_SCATTER_FCS = 1 << 1, /* FCS scattering is supported */ ++IBV_RAW_PACKET_CAP_IP_CSUM = 1 << 2, /* IP CSUM offload is supported */ ++.in -8 ++}; ++ + .fi + .SH "RETURN VALUE" + .B ibv_query_device_ex() +diff --git a/libibverbs/verbs.h b/libibverbs/verbs.h +index 25f4eded..604b09e8 100644 +--- a/libibverbs/verbs.h ++++ b/libibverbs/verbs.h +@@ -252,6 +252,12 @@ struct ibv_packet_pacing_caps { + uint32_t supported_qpts; + }; + ++enum ibv_raw_packet_caps { ++ IBV_RAW_PACKET_CAP_CVLAN_STRIPPING = 1 << 0, ++ IBV_RAW_PACKET_CAP_SCATTER_FCS = 1 << 1, ++ IBV_RAW_PACKET_CAP_IP_CSUM = 1 << 2, ++}; ++ + struct ibv_device_attr_ex { + struct ibv_device_attr orig_attr; + uint32_t comp_mask; +@@ -263,6 +269,7 @@ struct ibv_device_attr_ex { + struct ibv_rss_caps rss_caps; + uint32_t max_wq_type_rq; + struct ibv_packet_pacing_caps packet_pacing_caps; ++ uint32_t raw_packet_caps; /* Use ibv_raw_packet_caps */ + }; + + enum ibv_mtu { +-- +2.12.1 + diff --git a/SOURCES/0001-libibumad-clean-up-htonll-ntohnll-handling.patch b/SOURCES/0001-libibumad-clean-up-htonll-ntohnll-handling.patch new file mode 100644 index 0000000..c428baa --- /dev/null +++ b/SOURCES/0001-libibumad-clean-up-htonll-ntohnll-handling.patch @@ -0,0 +1,46 @@ +From aec9bc1d8581134239f54959cde3c16503016d1d Mon Sep 17 00:00:00 2001 +From: Jarod Wilson +Date: Mon, 22 May 2017 09:49:12 -0400 +Subject: [PATCH rdma-core] libibumad: clean up htonll/ntohnll handling + +Only ntohll was being checked to see if it wasn't defined, and was then +redefining htonll as well as ntohll. This was causing some problems for +the compile of the opa-ff package. Simple enough to rearrange this code a +bit such that htonll and ntohll are handled entirely independent of one +another. + +Reported-by: Honggang Li +Signed-off-by: Jarod Wilson +--- + libibumad/umad.h | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/libibumad/umad.h b/libibumad/umad.h +index 81811380..479165a8 100644 +--- a/libibumad/umad.h ++++ b/libibumad/umad.h +@@ -247,15 +247,17 @@ static inline void umad_free(void *umad) + free(umad); + } + ++/* Users should use the glibc functions directly, not these wrappers */ + #ifndef ntohll +-#undef htonll + #undef ntohll +-/* Users should use the glibc functions directly, not these wrappers */ +-static inline __attribute__((deprecated)) uint64_t htonll(uint64_t x) { return htobe64(x); } + static inline __attribute__((deprecated)) uint64_t ntohll(uint64_t x) { return be64toh(x); } +-#define htonll htonll + #define ntohll ntohll + #endif ++#ifndef htonll ++#undef htonll ++static inline __attribute__((deprecated)) uint64_t htonll(uint64_t x) { return htobe64(x); } ++#define htonll htonll ++#endif + + END_C_DECLS + #endif /* _UMAD_H */ +-- +2.12.1 + diff --git a/SOURCES/0001-srp_daemon-srp_daemon.c-Don-t-rely-on-attribute-offs.patch b/SOURCES/0001-srp_daemon-srp_daemon.c-Don-t-rely-on-attribute-offs.patch new file mode 100644 index 0000000..d0a1614 --- /dev/null +++ b/SOURCES/0001-srp_daemon-srp_daemon.c-Don-t-rely-on-attribute-offs.patch @@ -0,0 +1,57 @@ +From a7754ab3fc01b99a4963c786ee1dc1349a5d35e0 Mon Sep 17 00:00:00 2001 +From: Hal Rosenstock +Date: Thu, 13 Apr 2017 10:48:00 -0400 +Subject: [PATCH 1/3] srp_daemon/srp_daemon.c: Don't rely on attribute offset, + in get_shared_pkeys + +get_shared_pkeys has been using SubAdmGet rather than SubAdmGetTable since +commit 2ad09524931dbf98d412e1912c1bdbf22f8ac81d +srp_daemon: Work around SM bug over non-default P_Key support + +so RMPP is no longer used in response so it's not safe to +rely on AttributeOffset field. Good MAD status is sufficient +to say that valid PathRecord was returned. + +Found-by: Honggang LI +using embedded subnet manager running on an Intel True Scale +Edge Switch 12300. + +This has been broken since srptools-1.0.1 which was first +release containing commit mentioned above. + +Signed-off-by: Hal Rosenstock +Signed-off-by: Honggang Li +--- + srp_daemon/srp_daemon.c | 9 --------- + 1 file changed, 9 deletions(-) + +diff --git a/srp_daemon/srp_daemon.c b/srp_daemon/srp_daemon.c +index 0c8bda3..76fec28 100644 +--- a/srp_daemon/srp_daemon.c ++++ b/srp_daemon/srp_daemon.c +@@ -1102,7 +1102,6 @@ static int get_shared_pkeys(struct resources *res, + struct srp_dm_rmpp_sa_mad *out_sa_mad, *in_sa_mad; + ib_path_rec_t *path_rec; + ssize_t len; +- int size; + int i, num_pkeys = 0; + uint16_t pkey; + uint16_t local_port_lid = get_port_lid(res->ud_res->ib_ctx, +@@ -1148,14 +1147,6 @@ static int get_shared_pkeys(struct resources *res, + if (len < 0) + goto err; + +- size = ib_get_attr_size(in_sa_mad->attr_offset); +- if (!size) { +- if (config->verbose) +- printf("PathRec Query did not find any targets " +- "over P_Key %x\n", pkey); +- continue; +- } +- + path_rec = (ib_path_rec_t *)in_sa_mad->data; + pkeys[num_pkeys++] = be16toh(path_rec->pkey); + } +-- +1.8.3.1 + diff --git a/SOURCES/0002-ibverbs-Allow-creation-and-modification-of-WQ-with-c.patch b/SOURCES/0002-ibverbs-Allow-creation-and-modification-of-WQ-with-c.patch new file mode 100644 index 0000000..071248b --- /dev/null +++ b/SOURCES/0002-ibverbs-Allow-creation-and-modification-of-WQ-with-c.patch @@ -0,0 +1,181 @@ +From 147a96f89b7ea5e5f708ab323c41fb81a99855aa Mon Sep 17 00:00:00 2001 +From: Noa Osherovich +Date: Tue, 15 Nov 2016 11:15:43 +0200 +Subject: [PATCH rdma-core 2/6] ibverbs: Allow creation and modification of WQ + with cvlan offload + +Enable WQ creation and modification with cvlan stripping offload. +This includes: +- Adding flags and flags mask fields to ibv_wq_init_attr. +- Similarly extend ibv_wq_attr to allow setting and unsetting this + offload during ibv_modify_wq. + +Creation of a WQ with cvlan offload is done by setting the following +fields of the ibv_wq_init_attr struct: +- Setting the IBV_WQ_FLAGS_CVLAN_STRIPPING bit of the create_flags + field. +- Setting the IBV_WQ_INIT_ATTR_FLAGS bit of the comp_mask field. + +Modification of the cvlan stripping property is done by setting the +following fields of the ibv_wq_attr struct: +- Setting IBV_WQ_ATTR_FLAGS bit of the attr_mask field. +- Setting the IBV_RAW_PACKET_CAP_CVLAN_STRIPPING bit of the + flags_mask field. +- Setting or unsetting the IBV_RAW_PACKET_CAP_CVLAN_STRIPPING bit of + the flags field. + +Signed-off-by: Noa Osherovich +Reviewed-by: Maor Gottlieb +Reviewed-by: Yishai Hadas +--- + libibverbs/cmd.c | 18 ++++++++++++++++++ + libibverbs/kern-abi.h | 4 ++++ + libibverbs/man/ibv_create_wq.3 | 11 +++++++++++ + libibverbs/man/ibv_modify_wq.3 | 2 ++ + libibverbs/verbs.h | 14 ++++++++++++-- + 5 files changed, 47 insertions(+), 2 deletions(-) + +diff --git a/libibverbs/cmd.c b/libibverbs/cmd.c +index 4aebbb51..b8fe76df 100644 +--- a/libibverbs/cmd.c ++++ b/libibverbs/cmd.c +@@ -1894,6 +1894,15 @@ int ibv_cmd_create_wq(struct ibv_context *context, + cmd->max_wr = wq_init_attr->max_wr; + cmd->comp_mask = 0; + ++ if (cmd_core_size >= offsetof(struct ibv_create_wq, create_flags) + ++ sizeof(cmd->create_flags)) { ++ if (wq_init_attr->comp_mask & IBV_WQ_INIT_ATTR_FLAGS) { ++ if (wq_init_attr->create_flags & ~(IBV_WQ_FLAGS_RESERVED - 1)) ++ return EOPNOTSUPP; ++ cmd->create_flags = wq_init_attr->create_flags; ++ } ++ } ++ + err = write(context->cmd_fd, cmd, cmd_size); + if (err != cmd_size) + return errno; +@@ -1927,6 +1936,15 @@ int ibv_cmd_modify_wq(struct ibv_wq *wq, struct ibv_wq_attr *attr, + + cmd->curr_wq_state = attr->curr_wq_state; + cmd->wq_state = attr->wq_state; ++ if (cmd_core_size >= offsetof(struct ibv_modify_wq, flags_mask) + ++ sizeof(cmd->flags_mask)) { ++ if (attr->attr_mask & IBV_WQ_ATTR_FLAGS) { ++ if (attr->flags_mask & ~(IBV_WQ_FLAGS_RESERVED - 1)) ++ return EOPNOTSUPP; ++ cmd->flags = attr->flags; ++ cmd->flags_mask = attr->flags_mask; ++ } ++ } + cmd->wq_handle = wq->handle; + cmd->attr_mask = attr->attr_mask; + +diff --git a/libibverbs/kern-abi.h b/libibverbs/kern-abi.h +index 3958f0c1..72a16b67 100644 +--- a/libibverbs/kern-abi.h ++++ b/libibverbs/kern-abi.h +@@ -1249,6 +1249,8 @@ struct ibv_create_wq { + __u32 cq_handle; + __u32 max_wr; + __u32 max_sge; ++ __u32 create_flags; ++ __u32 reserved; + }; + + struct ibv_create_wq_resp { +@@ -1279,6 +1281,8 @@ struct ibv_modify_wq { + __u32 wq_handle; + __u32 wq_state; + __u32 curr_wq_state; ++ __u32 flags; ++ __u32 flags_mask; + }; + + struct ibv_create_rwq_ind_table { +diff --git a/libibverbs/man/ibv_create_wq.3 b/libibverbs/man/ibv_create_wq.3 +index aad67416..9a541fea 100644 +--- a/libibverbs/man/ibv_create_wq.3 ++++ b/libibverbs/man/ibv_create_wq.3 +@@ -31,8 +31,19 @@ uint32_t max_sge; /* Requested max number of scatter/gat + struct ibv_pd *pd; /* PD to be associated with the WQ */ + struct ibv_cq *cq; /* CQ to be associated with the WQ */ + uint32_t comp_mask; /* Identifies valid fields. Use ibv_wq_init_attr_mask */ ++uint32_t create_flags /* Creation flags for this WQ, use enum ibv_wq_flags */ + .in -8 + }; ++ ++.sp ++.nf ++enum ibv_wq_flags { ++.in +8 ++IBV_WQ_FLAGS_CVLAN_STRIPPING = 1 << 0, /* CVLAN field will be stripped from incoming packets */ ++IBV_WQ_FLAGS_RESERVED = 1 << 1, ++.in -8 ++}; ++.nf + .fi + .PP + The function +diff --git a/libibverbs/man/ibv_modify_wq.3 b/libibverbs/man/ibv_modify_wq.3 +index f17faedf..1972ec2a 100644 +--- a/libibverbs/man/ibv_modify_wq.3 ++++ b/libibverbs/man/ibv_modify_wq.3 +@@ -26,6 +26,8 @@ struct ibv_wq_attr { + uint32_t attr_mask; /* Use enum ibv_wq_attr_mask */ + enum ibv_wq_state wq_state; /* Move to this state */ + enum ibv_wq_state curr_wq_state; /* Assume this is the current state */ ++uint32_t flags; /* Flags values to modify, use enum ibv_wq_flags */ ++uint32_t flags_mask; /* Which flags to modify, use enum ibv_wq_flags */ + .in -8 + }; + .fi +diff --git a/libibverbs/verbs.h b/libibverbs/verbs.h +index 604b09e8..33985666 100644 +--- a/libibverbs/verbs.h ++++ b/libibverbs/verbs.h +@@ -667,7 +667,13 @@ enum ibv_wq_type { + }; + + enum ibv_wq_init_attr_mask { +- IBV_WQ_INIT_ATTR_RESERVED = 1 << 0, ++ IBV_WQ_INIT_ATTR_FLAGS = 1 << 0, ++ IBV_WQ_INIT_ATTR_RESERVED = 1 << 1, ++}; ++ ++enum ibv_wq_flags { ++ IBV_WQ_FLAGS_CVLAN_STRIPPING = 1 << 0, ++ IBV_WQ_FLAGS_RESERVED = 1 << 1, + }; + + struct ibv_wq_init_attr { +@@ -678,6 +684,7 @@ struct ibv_wq_init_attr { + struct ibv_pd *pd; + struct ibv_cq *cq; + uint32_t comp_mask; ++ uint32_t create_flags; /* use ibv_wq_flags */ + }; + + enum ibv_wq_state { +@@ -690,7 +697,8 @@ enum ibv_wq_state { + enum ibv_wq_attr_mask { + IBV_WQ_ATTR_STATE = 1 << 0, + IBV_WQ_ATTR_CURR_STATE = 1 << 1, +- IBV_WQ_ATTR_RESERVED = 1 << 2 ++ IBV_WQ_ATTR_FLAGS = 1 << 2, ++ IBV_WQ_ATTR_RESERVED = 1 << 3, + }; + + struct ibv_wq_attr { +@@ -700,6 +708,8 @@ struct ibv_wq_attr { + enum ibv_wq_state wq_state; + /* Assume this is the current WQ state */ + enum ibv_wq_state curr_wq_state; ++ uint32_t flags; /* Use ibv_wq_flags */ ++ uint32_t flags_mask; /* Use ibv_wq_flags */ + }; + + /* +-- +2.12.1 + diff --git a/SOURCES/0002-srp_daemon-srp_daemon.c-Eliminate-some-unneeded-code.patch b/SOURCES/0002-srp_daemon-srp_daemon.c-Eliminate-some-unneeded-code.patch new file mode 100644 index 0000000..b240ed5 --- /dev/null +++ b/SOURCES/0002-srp_daemon-srp_daemon.c-Eliminate-some-unneeded-code.patch @@ -0,0 +1,31 @@ +From a0637f2652aa8f634814366bcb58b1d1e527807d Mon Sep 17 00:00:00 2001 +From: Hal Rosenstock +Date: Thu, 13 Apr 2017 10:48:25 -0400 +Subject: [PATCH 2/3] srp_daemon/srp_daemon.c: Eliminate some unneeded code in + get_shared_pkeys + +PathRecords are obtained using SubAdmGet and not SubAdmGetTable +so RMPP is not involved. Eliminate unneeded initialization of MAD +RMPP fields. + +Signed-off-by: Hal Rosenstock +--- + srp_daemon/srp_daemon.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/srp_daemon/srp_daemon.c b/srp_daemon/srp_daemon.c +index 76fec28..1cf2815 100644 +--- a/srp_daemon/srp_daemon.c ++++ b/srp_daemon/srp_daemon.c +@@ -1134,8 +1134,6 @@ static int get_shared_pkeys(struct resources *res, + + /* Mark components: DLID, SLID, PKEY */ + out_sa_mad->comp_mask = htobe64(1 << 4 | 1 << 5 | 1 << 13); +- out_sa_mad->rmpp_version = 1; +- out_sa_mad->rmpp_type = 1; + path_rec = (ib_path_rec_t *)out_sa_mad->data; + path_rec->slid = htobe16(local_port_lid); + path_rec->dlid = htobe16(dest_port_lid); +-- +1.8.3.1 + diff --git a/SOURCES/0003-ibverbs-Allow-creation-of-QP-with-cvlan-stripping-of.patch b/SOURCES/0003-ibverbs-Allow-creation-of-QP-with-cvlan-stripping-of.patch new file mode 100644 index 0000000..2c07a92 --- /dev/null +++ b/SOURCES/0003-ibverbs-Allow-creation-of-QP-with-cvlan-stripping-of.patch @@ -0,0 +1,73 @@ +From 9a0668e887dfab9df405d3b76286a1ee5ec3efaf Mon Sep 17 00:00:00 2001 +From: Noa Osherovich +Date: Tue, 29 Nov 2016 10:12:31 +0200 +Subject: [PATCH rdma-core 3/6] ibverbs: Allow creation of QP with cvlan + stripping offload + +Allow users to create a QP that uses cvlan stripping capabilities if +supported by the hardware. + +Setting cvlan stripping offload will cause the device to strip the +cvlan from incoming raw Ethernet packets and provide its data in the +matching work completion. + +In addition, aligned ibv_create_qp_ex's man page with current code +(added ibv_qp_create_flags enum). + +Signed-off-by: Noa Osherovich +Reviewed-by: Maor Gottlieb +Reviewed-by: Yishai Hadas +--- + libibverbs/cmd.c | 3 ++- + libibverbs/man/ibv_create_qp_ex.3 | 8 ++++++++ + libibverbs/verbs.h | 1 + + 3 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/libibverbs/cmd.c b/libibverbs/cmd.c +index b8fe76df..06ec6711 100644 +--- a/libibverbs/cmd.c ++++ b/libibverbs/cmd.c +@@ -926,7 +926,8 @@ static void create_qp_handle_resp_common(struct ibv_context *context, + + enum { + CREATE_QP_EX2_SUP_CREATE_FLAGS = IBV_QP_CREATE_BLOCK_SELF_MCAST_LB | +- IBV_QP_CREATE_SCATTER_FCS, ++ IBV_QP_CREATE_SCATTER_FCS | ++ IBV_QP_CREATE_CVLAN_STRIPPING, + }; + + int ibv_cmd_create_qp_ex2(struct ibv_context *context, +diff --git a/libibverbs/man/ibv_create_qp_ex.3 b/libibverbs/man/ibv_create_qp_ex.3 +index c778d159..99ae4975 100644 +--- a/libibverbs/man/ibv_create_qp_ex.3 ++++ b/libibverbs/man/ibv_create_qp_ex.3 +@@ -52,6 +52,14 @@ uint32_t max_inline_data;/* Requested max number of data (bytes) + .in -8 + }; + .nf ++enum ibv_qp_create_flags { ++.in +8 ++IBV_QP_CREATE_BLOCK_SELF_MCAST_LB = 1 << 1, /* Prevent self multicast loopback */ ++IBV_QP_CREATE_SCATTER_FCS = 1 << 8, /* FCS field will be scattered to host memory */ ++IBV_QP_CREATE_CVLAN_STRIPPING = 1 << 9, /* CVLAN field will be stripped from incoming packets */ ++.in -8 ++}; ++.nf + struct ibv_rx_hash_conf { + .in +8 + uint8_t rx_hash_function; /* RX hash function, use enum ibv_rx_hash_function_flags */ +diff --git a/libibverbs/verbs.h b/libibverbs/verbs.h +index 33985666..c9084ea1 100644 +--- a/libibverbs/verbs.h ++++ b/libibverbs/verbs.h +@@ -780,6 +780,7 @@ enum ibv_qp_init_attr_mask { + enum ibv_qp_create_flags { + IBV_QP_CREATE_BLOCK_SELF_MCAST_LB = 1 << 1, + IBV_QP_CREATE_SCATTER_FCS = 1 << 8, ++ IBV_QP_CREATE_CVLAN_STRIPPING = 1 << 9, + }; + + struct ibv_rx_hash_conf { +-- +2.12.1 + diff --git a/SOURCES/0003-srp_daemon-Use-consistent-format-when-printing-LID.patch b/SOURCES/0003-srp_daemon-Use-consistent-format-when-printing-LID.patch new file mode 100644 index 0000000..e7d8175 --- /dev/null +++ b/SOURCES/0003-srp_daemon-Use-consistent-format-when-printing-LID.patch @@ -0,0 +1,107 @@ +From 043b3900b51e73beedc6cd3769e055a5a95a26b3 Mon Sep 17 00:00:00 2001 +From: Hal Rosenstock +Date: Thu, 13 Apr 2017 11:54:30 -0400 +Subject: [PATCH 3/3] srp_daemon: Use consistent format when printing LID + +Some LIDs are formatted in hex and others in decimal. +Be consistent (use hex LID formatting). + +Signed-off-by: Hal Rosenstock +--- + srp_daemon/srp_daemon.c | 14 +++++++------- + srp_daemon/srp_handle_traps.c | 4 ++-- + srp_daemon/srp_sync.c | 2 +- + 3 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/srp_daemon/srp_daemon.c b/srp_daemon/srp_daemon.c +index 1cf2815..bafc4a6 100644 +--- a/srp_daemon/srp_daemon.c ++++ b/srp_daemon/srp_daemon.c +@@ -632,8 +632,8 @@ recv: + ret = umad_status(in_mad); + if (ret) { + pr_err( +- "bad MAD status (%u) from lid %d\n", +- ret, (uint16_t) be16toh(out_mad->hdr.addr.lid)); ++ "bad MAD status (%u) from lid %#x\n", ++ ret, be16toh(out_mad->hdr.addr.lid)); + return -ret; + } + +@@ -935,7 +935,7 @@ static int do_port(struct resources *res, uint16_t pkey, uint16_t dlid, + + ret = get_iou_info(umad_res, dlid, &iou_info); + if (ret < 0) { +- pr_err("failed to get iou info for dlid %x\n", dlid); ++ pr_err("failed to get iou info for dlid %#x\n", dlid); + goto out; + } + +@@ -1214,7 +1214,7 @@ static int do_dm_port_list(struct resources *res) + num_pkeys = get_shared_pkeys(res, be16toh(port_info->endport_lid), + pkeys); + if (num_pkeys < 0) { +- pr_err("failed to get shared P_Keys with LID %x\n", ++ pr_err("failed to get shared P_Keys with LID %#x\n", + be16toh(port_info->endport_lid)); + free(in_mad_buf); + return num_pkeys; +@@ -1235,7 +1235,7 @@ void handle_port(struct resources *res, uint16_t pkey, uint16_t lid, uint64_t h_ + uint64_t subnet_prefix; + int isdm; + +- pr_debug("enter handle_port for lid %d\n", lid); ++ pr_debug("enter handle_port for lid %#x\n", lid); + if (get_port_info(umad_res, lid, &subnet_prefix, &isdm)) + return; + +@@ -1292,7 +1292,7 @@ static int do_full_port_list(struct resources *res) + num_pkeys = get_shared_pkeys(res, be16toh(node->lid), + pkeys); + if (num_pkeys < 0) { +- pr_err("failed to get shared P_Keys with LID %x\n", ++ pr_err("failed to get shared P_Keys with LID %#x\n", + be16toh(node->lid)); + free(in_mad_buf); + return num_pkeys; +@@ -2180,7 +2180,7 @@ catas_start: + /* unexpected error - do a full rescan */ + schedule_rescan(res->sync_res, 0); + else { +- pr_debug("lid is %d\n", lid); ++ pr_debug("lid is %#x\n", lid); + + srp_sleep(0, 100); + handle_port(res, pkey, lid, +diff --git a/srp_daemon/srp_handle_traps.c b/srp_daemon/srp_handle_traps.c +index 4d03c08..f4280ad 100644 +--- a/srp_daemon/srp_handle_traps.c ++++ b/srp_daemon/srp_handle_traps.c +@@ -559,9 +559,9 @@ static int register_to_trap(struct sync_resources *sync_res, + static uint64_t trans_id = 0x0000FFFF; + + if (subscribe) +- pr_debug("Registering to trap:%d (sm in %d)\n", trap_num, dest_lid); ++ pr_debug("Registering to trap:%d (sm in %#x)\n", trap_num, dest_lid); + else +- pr_debug("Deregistering from trap:%d (sm in %d)\n", trap_num, dest_lid); ++ pr_debug("Deregistering from trap:%d (sm in %#x)\n", trap_num, dest_lid); + + memset(res->send_buf, 0, SEND_SIZE); + +diff --git a/srp_daemon/srp_sync.c b/srp_daemon/srp_sync.c +index 369cf70..44826f0 100644 +--- a/srp_daemon/srp_sync.c ++++ b/srp_daemon/srp_sync.c +@@ -170,7 +170,7 @@ void push_lid_to_list(struct sync_resources *res, uint16_t lid, uint16_t pkey) + + for (i=0; i < res->next_task; ++i) + if (res->tasks[i].lid == lid && res->tasks[i].pkey == pkey) { +- pr_debug("lid %d is already in task list\n", lid); ++ pr_debug("lid %#x is already in task list\n", lid); + pthread_mutex_unlock(&res->mutex); + return; + } +-- +1.8.3.1 + diff --git a/SOURCES/0004-ibverbs-Add-an-option-to-poll-cvlan-value-from-a-CQ.patch b/SOURCES/0004-ibverbs-Add-an-option-to-poll-cvlan-value-from-a-CQ.patch new file mode 100644 index 0000000..753e13a --- /dev/null +++ b/SOURCES/0004-ibverbs-Add-an-option-to-poll-cvlan-value-from-a-CQ.patch @@ -0,0 +1,111 @@ +From a475fe442c97ad5b2c9c761805d89d4774046807 Mon Sep 17 00:00:00 2001 +From: Noa Osherovich +Date: Mon, 28 Nov 2016 12:01:37 +0200 +Subject: [PATCH rdma-core 4/6] ibverbs: Add an option to poll cvlan value from + a CQ + +When a WQ or a QP is created with cvlan stripping option, it is +stripped from the incoming packet and included in the work +completion. +Extend the poll_cq_ex mechanism with a function that reads the +stripped cvlan value from the work completion. + +In addition, as a part of introcuding the new functionality in the +man page, align it with current code (typo fix, add a missing field). + +Signed-off-by: Noa Osherovich +Reviewed-by: Maor Gottlieb +Reviewed-by: Yishai Hadas +--- + libibverbs/man/ibv_create_cq_ex.3 | 9 +++++++-- + libibverbs/verbs.h | 10 +++++++++- + 2 files changed, 16 insertions(+), 3 deletions(-) + +diff --git a/libibverbs/man/ibv_create_cq_ex.3 b/libibverbs/man/ibv_create_cq_ex.3 +index a6ae7690..020bbb4e 100644 +--- a/libibverbs/man/ibv_create_cq_ex.3 ++++ b/libibverbs/man/ibv_create_cq_ex.3 +@@ -17,10 +17,10 @@ creates a completion queue (CQ) for RDMA device context + .I context\fR. + The argument + .I cq_attr +-is a pointer to struct ibv_create_cq_attr_ex as defined in . ++is a pointer to struct ibv_cq_init_attr_ex as defined in . + .PP + .nf +-struct ibv_create_cq_attr_ex { ++struct ibv_cq_init_attr_ex { + .in +8 + int cqe; /* Minimum number of entries required for CQ */ + void *cq_context; /* Consumer-supplied context returned for completion events */ +@@ -28,6 +28,7 @@ struct ibv_comp_channel *channel; /* Completion channel where completio + int comp_vector; /* Completion vector used to signal completion events. Must be >= 0 and < context->num_comp_vectors. */ + uint64_t wc_flags; /* The wc_flags that should be returned in ibv_poll_cq_ex. Or'ed bit of enum ibv_wc_flags_ex. */ + uint32_t comp_mask; /* compatibility mask (extended verb). */ ++uint32_t flags /* One or more flags from enum ibv_create_cq_attr_flags */ + .in -8 + }; + +@@ -40,6 +41,7 @@ enum ibv_wc_flags_ex { + IBV_WC_EX_WITH_SL = 1 << 5, /* Require sl in WC */ + IBV_WC_EX_WITH_DLID_PATH_BITS = 1 << 6, /* Require dlid path bits in WC */ + IBV_WC_EX_WITH_COMPLETION_TIMESTAMP = 1 << 7, /* Require completion timestamp in WC /* ++ IBV_WC_EX_WITH_CVLAN = 1 << 8, /* Require VLAN info in WC */ + }; + + enum ibv_cq_init_attr_mask { +@@ -128,6 +130,9 @@ Below members and functions are used in order to poll the current completion. Th + .BI "uint64_t ibv_wc_read_completion_ts(struct ibv_cq_ex " "*cq"); \c + Get the completion timestamp from the current completion. + ++.BI "uint16_t ibv_wc_read_cvlan(struct ibv_cq_ex " "*cq"); \c ++ Get the CVLAN field from the current completion. ++ + .SH "RETURN VALUE" + .B ibv_create_cq_ex() + returns a pointer to the CQ, or NULL if the request fails. +diff --git a/libibverbs/verbs.h b/libibverbs/verbs.h +index c9084ea1..15e93b3e 100644 +--- a/libibverbs/verbs.h ++++ b/libibverbs/verbs.h +@@ -435,6 +435,7 @@ enum ibv_create_cq_wc_flags { + IBV_WC_EX_WITH_SL = 1 << 5, + IBV_WC_EX_WITH_DLID_PATH_BITS = 1 << 6, + IBV_WC_EX_WITH_COMPLETION_TIMESTAMP = 1 << 7, ++ IBV_WC_EX_WITH_CVLAN = 1 << 8, + }; + + enum { +@@ -449,7 +450,8 @@ enum { + + enum { + IBV_CREATE_CQ_SUP_WC_FLAGS = IBV_WC_STANDARD_FLAGS | +- IBV_WC_EX_WITH_COMPLETION_TIMESTAMP ++ IBV_WC_EX_WITH_COMPLETION_TIMESTAMP | ++ IBV_WC_EX_WITH_CVLAN + }; + + enum ibv_wc_flags { +@@ -1092,6 +1094,7 @@ struct ibv_cq_ex { + uint8_t (*read_sl)(struct ibv_cq_ex *current); + uint8_t (*read_dlid_path_bits)(struct ibv_cq_ex *current); + uint64_t (*read_completion_ts)(struct ibv_cq_ex *current); ++ uint16_t (*read_cvlan)(struct ibv_cq_ex *current); + }; + + static inline struct ibv_cq *ibv_cq_ex_to_cq(struct ibv_cq_ex *cq) +@@ -1170,6 +1173,11 @@ static inline uint64_t ibv_wc_read_completion_ts(struct ibv_cq_ex *cq) + return cq->read_completion_ts(cq); + } + ++static inline uint16_t ibv_wc_read_cvlan(struct ibv_cq_ex *cq) ++{ ++ return cq->read_cvlan(cq); ++} ++ + static inline int ibv_post_wq_recv(struct ibv_wq *wq, + struct ibv_recv_wr *recv_wr, + struct ibv_recv_wr **bad_recv_wr) +-- +2.12.1 + diff --git a/SOURCES/0005-mlx5-Add-read_cvlan-support.patch b/SOURCES/0005-mlx5-Add-read_cvlan-support.patch new file mode 100644 index 0000000..2e490c1 --- /dev/null +++ b/SOURCES/0005-mlx5-Add-read_cvlan-support.patch @@ -0,0 +1,64 @@ +From 6a96ec1ce7af0cee4d4101bcf65a9b7c3fa01886 Mon Sep 17 00:00:00 2001 +From: Noa Osherovich +Date: Sun, 4 Dec 2016 11:18:17 +0200 +Subject: [PATCH rdma-core 5/6] mlx5: Add read_cvlan support + +When a WQ or a QP is created with cvlan stripping option, the cvlan +is stripped from the packet by the hardware and included in the work +completion. + +Implement ibv_cq_ex's member function read_cvlan to allow reading the +cvlan from the work completion. + +Signed-off-by: Noa Osherovich +Reviewed-by: Maor Gottlieb +Reviewed-by: Yishai Hadas +--- + providers/mlx5/cq.c | 9 +++++++++ + providers/mlx5/verbs.c | 3 ++- + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/providers/mlx5/cq.c b/providers/mlx5/cq.c +index 4ecd4828..85d0c339 100644 +--- a/providers/mlx5/cq.c ++++ b/providers/mlx5/cq.c +@@ -1189,6 +1189,13 @@ static inline uint64_t mlx5_cq_read_wc_completion_ts(struct ibv_cq_ex *ibcq) + return be64toh(cq->cqe64->timestamp); + } + ++static inline uint16_t mlx5_cq_read_wc_cvlan(struct ibv_cq_ex *ibcq) ++{ ++ struct mlx5_cq *cq = to_mcq(ibv_cq_ex_to_cq(ibcq)); ++ ++ return be16toh(cq->cqe64->vlan_info); ++} ++ + #define BIT(i) (1UL << (i)) + + #define SINGLE_THREADED BIT(0) +@@ -1261,6 +1268,8 @@ void mlx5_cq_fill_pfns(struct mlx5_cq *cq, const struct ibv_cq_init_attr_ex *cq_ + cq->ibv_cq.read_dlid_path_bits = mlx5_cq_read_wc_dlid_path_bits; + if (cq_attr->wc_flags & IBV_WC_EX_WITH_COMPLETION_TIMESTAMP) + cq->ibv_cq.read_completion_ts = mlx5_cq_read_wc_completion_ts; ++ if (cq_attr->wc_flags & IBV_WC_EX_WITH_CVLAN) ++ cq->ibv_cq.read_cvlan = mlx5_cq_read_wc_cvlan; + } + + int mlx5_arm_cq(struct ibv_cq *ibvcq, int solicited) +diff --git a/providers/mlx5/verbs.c b/providers/mlx5/verbs.c +index 4d8f26ca..67f9748d 100644 +--- a/providers/mlx5/verbs.c ++++ b/providers/mlx5/verbs.c +@@ -327,7 +327,8 @@ static int qp_sig_enabled(void) + + enum { + CREATE_CQ_SUPPORTED_WC_FLAGS = IBV_WC_STANDARD_FLAGS | +- IBV_WC_EX_WITH_COMPLETION_TIMESTAMP ++ IBV_WC_EX_WITH_COMPLETION_TIMESTAMP | ++ IBV_WC_EX_WITH_CVLAN + }; + + enum { +-- +2.12.1 + diff --git a/SOURCES/0006-ibverbs-Add-support-for-scatter-FCS-ability-in-WQ.patch b/SOURCES/0006-ibverbs-Add-support-for-scatter-FCS-ability-in-WQ.patch new file mode 100644 index 0000000..dcf2a74 --- /dev/null +++ b/SOURCES/0006-ibverbs-Add-support-for-scatter-FCS-ability-in-WQ.patch @@ -0,0 +1,60 @@ +From b17bf50a8542a77be1fab3713f7bfc0e57a9787a Mon Sep 17 00:00:00 2001 +From: Noa Osherovich +Date: Mon, 5 Dec 2016 14:13:24 +0200 +Subject: [PATCH rdma-core 6/6] ibverbs: Add support for scatter FCS ability in + WQ + +Enable the user to create a workqueue object with the scatter FCS +offload. +If this option is set, the FCS (Frame Check Sequence) field of an +incoming raw Ethernet packet will be scattered into host memory along +the packet payload as it appeared on the wire. + +Signed-off-by: Noa Osherovich +Reviewed-by: Majd Dibbiny +Reviewed-by: Yishai Hadas +--- + libibverbs/man/ibv_create_wq.3 | 3 ++- + libibverbs/verbs.h | 5 +++-- + 2 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/libibverbs/man/ibv_create_wq.3 b/libibverbs/man/ibv_create_wq.3 +index 9a541fea..4a8b83c5 100644 +--- a/libibverbs/man/ibv_create_wq.3 ++++ b/libibverbs/man/ibv_create_wq.3 +@@ -40,7 +40,8 @@ uint32_t create_flags /* Creation flags for this WQ, use en + enum ibv_wq_flags { + .in +8 + IBV_WQ_FLAGS_CVLAN_STRIPPING = 1 << 0, /* CVLAN field will be stripped from incoming packets */ +-IBV_WQ_FLAGS_RESERVED = 1 << 1, ++IBV_WQ_FLAGS_SCATTER_FCS = 1 << 1, /* FCS field will be scattered to host memory */ ++IBV_WQ_FLAGS_RESERVED = 1 << 2, + .in -8 + }; + .nf +diff --git a/libibverbs/verbs.h b/libibverbs/verbs.h +index 15e93b3e..3f5e9fe3 100644 +--- a/libibverbs/verbs.h ++++ b/libibverbs/verbs.h +@@ -675,7 +675,8 @@ enum ibv_wq_init_attr_mask { + + enum ibv_wq_flags { + IBV_WQ_FLAGS_CVLAN_STRIPPING = 1 << 0, +- IBV_WQ_FLAGS_RESERVED = 1 << 1, ++ IBV_WQ_FLAGS_SCATTER_FCS = 1 << 1, ++ IBV_WQ_FLAGS_RESERVED = 1 << 2, + }; + + struct ibv_wq_init_attr { +@@ -685,7 +686,7 @@ struct ibv_wq_init_attr { + uint32_t max_sge; + struct ibv_pd *pd; + struct ibv_cq *cq; +- uint32_t comp_mask; ++ uint32_t comp_mask; /* Use ibv_wq_init_attr_mask */ + uint32_t create_flags; /* use ibv_wq_flags */ + }; + +-- +2.12.1 + diff --git a/SOURCES/fix-udma_to_device_barrier-on-aarch64.patch b/SOURCES/fix-udma_to_device_barrier-on-aarch64.patch new file mode 100644 index 0000000..482810e --- /dev/null +++ b/SOURCES/fix-udma_to_device_barrier-on-aarch64.patch @@ -0,0 +1,32 @@ +From 1b563ec1fef7b8a2740e1ee74b9f025c417f7e23 Mon Sep 17 00:00:00 2001 +From: Jarod Wilson +Date: Wed, 22 Mar 2017 21:30:31 -0400 +Subject: [PATCH rdma-core] fix udma_to_device_barrier on aarch64 + +The definition for udma_to_device_barrier on aarch64 is missing. Looks +like an oversight in the commit that removed the old barrier macros and +added this one. + +Fixes: 85a5529dead5 ("Remove the old barrier macros") +CC: Jason Gunthorpe +Signed-off-by: Jarod Wilson +--- + util/udma_barrier.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/util/udma_barrier.h b/util/udma_barrier.h +index 86578af5..9932a687 100644 +--- a/util/udma_barrier.h ++++ b/util/udma_barrier.h +@@ -93,7 +93,7 @@ + #elif defined(__sparc_v9__) + #define udma_to_device_barrier() asm volatile("membar #StoreStore" ::: "memory") + #elif defined(__aarch64__) +-#define wmb() asm volatile("dsb st" ::: "memory"); ++#define udma_to_device_barrier() asm volatile("dsb st" ::: "memory"); + #elif defined(__sparc__) || defined(__s390x__) + #define udma_to_device_barrier() asm volatile("" ::: "memory") + #else +-- +2.11.0 + diff --git a/SOURCES/redhat-kernel-init-libi40iw-no-longer-tech-preview.patch b/SOURCES/redhat-kernel-init-libi40iw-no-longer-tech-preview.patch new file mode 100644 index 0000000..540acef --- /dev/null +++ b/SOURCES/redhat-kernel-init-libi40iw-no-longer-tech-preview.patch @@ -0,0 +1,28 @@ +commit bda9530d37c5451928f6ba2c0ddc8c14d367d581 +Author: Jarod Wilson +Date: Mon Mar 6 15:44:49 2017 -0500 + + redhat/kernel-init: libi40iw no longer tech-preview + + Signed-off-by: Jarod Wilson + +diff --git a/redhat/rdma.kernel-init b/redhat/rdma.kernel-init +index d323f830..65b7a45c 100644 +--- a/redhat/rdma.kernel-init ++++ b/redhat/rdma.kernel-init +@@ -166,11 +166,11 @@ load_hardware_modules() + load_modules usnic_verbs + RC+=$? + fi ++ if is_loaded i40e -a ! is_loaded i40iw; then ++ load_modules i40iw ++ RC+=$? ++ fi + if [ "${LOAD_TECH_PREVIEW_DRIVERS}" == "yes" ]; then +- if is_loaded i40e -a ! is_loaded i40iw; then +- load_modules i40iw +- RC+=$? +- fi + if is_loaded be2net -a ! is_loaded ocrdma; then + load_modules ocrdma + RC+=$? diff --git a/SOURCES/redhat-kernel-init-ocrdma-is-tech-preview.patch b/SOURCES/redhat-kernel-init-ocrdma-is-tech-preview.patch new file mode 100644 index 0000000..f61533b --- /dev/null +++ b/SOURCES/redhat-kernel-init-ocrdma-is-tech-preview.patch @@ -0,0 +1,39 @@ +From 0fcf84cc2af776abfd0ce740e99635c8368c4d91 Mon Sep 17 00:00:00 2001 +From: Jarod Wilson +Date: Wed, 1 Feb 2017 16:05:39 -0500 +Subject: [PATCH rdma-core] redhat/kernel-init: ocrdma is tech-preview too + +Signed-off-by: Jarod Wilson +--- + redhat/rdma.kernel-init | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/redhat/rdma.kernel-init b/redhat/rdma.kernel-init +index ecfe5b57..d323f830 100644 +--- a/redhat/rdma.kernel-init ++++ b/redhat/rdma.kernel-init +@@ -162,10 +162,6 @@ load_hardware_modules() + load_modules iw_cxgb4 + RC+=$? + fi +- if is_loaded be2net -a ! is_loaded ocrdma; then +- load_modules ocrdma +- RC+=$? +- fi + if is_loaded enic -a ! is_loaded usnic_verbs; then + load_modules usnic_verbs + RC+=$? +@@ -175,6 +171,10 @@ load_hardware_modules() + load_modules i40iw + RC+=$? + fi ++ if is_loaded be2net -a ! is_loaded ocrdma; then ++ load_modules ocrdma ++ RC+=$? ++ fi + fi + return $RC + } +-- +2.11.0 + diff --git a/SPECS/rdma-core.spec b/SPECS/rdma-core.spec new file mode 100644 index 0000000..845be9f --- /dev/null +++ b/SPECS/rdma-core.spec @@ -0,0 +1,582 @@ +Name: rdma-core +Version: 13 +Release: 7%{?dist} +Summary: RDMA core userspace libraries and daemons + +# Almost everything is licensed under the OFA dual GPLv2, 2 Clause BSD license +# providers/ipathverbs/ Dual licensed using a BSD license with an extra patent clause +# providers/rxe/ Incorporates code from ipathverbs and contains the patent clause +# providers/hfi1verbs Uses the 3 Clause BSD license +License: GPLv2 or BSD +Url: https://github.com/linux-rdma/rdma-core +Source: https://github.com/linux-rdma/rdma-core/archive/%{name}-%{version}.tar.gz +Patch1: redhat-kernel-init-ocrdma-is-tech-preview.patch +Patch2: redhat-kernel-init-libi40iw-no-longer-tech-preview.patch +Patch3: fix-udma_to_device_barrier-on-aarch64.patch +Patch4: 0001-srp_daemon-srp_daemon.c-Don-t-rely-on-attribute-offs.patch +Patch5: 0002-srp_daemon-srp_daemon.c-Eliminate-some-unneeded-code.patch +Patch6: 0003-srp_daemon-Use-consistent-format-when-printing-LID.patch +Patch7: 0001-Use-integer-as-getopt_long-returns-integer.patch +Patch8: 0001-libibumad-clean-up-htonll-ntohnll-handling.patch +Patch9: 0001-ibverbs-Report-raw-packet-caps-as-part-of-query-devi.patch +Patch10: 0002-ibverbs-Allow-creation-and-modification-of-WQ-with-c.patch +Patch11: 0003-ibverbs-Allow-creation-of-QP-with-cvlan-stripping-of.patch +Patch12: 0004-ibverbs-Add-an-option-to-poll-cvlan-value-from-a-CQ.patch +Patch13: 0005-mlx5-Add-read_cvlan-support.patch +Patch14: 0006-ibverbs-Add-support-for-scatter-FCS-ability-in-WQ.patch + +BuildRequires: binutils +BuildRequires: cmake >= 2.8.11 +BuildRequires: gcc +BuildRequires: libudev-devel +BuildRequires: pkgconfig +BuildRequires: pkgconfig(libnl-3.0) +BuildRequires: pkgconfig(libnl-route-3.0) +%ifnarch s390 +BuildRequires: valgrind-devel +%endif +BuildRequires: systemd +BuildRequires: python +BuildRequires: sed + +Requires: dracut, kmod, initscripts, systemd +%if 0%{?fedora} >= 24 +Requires: systemd-udev +%endif +# Red Hat/Fedora previously shipped redhat/ as a stand-alone +# package called 'rdma', which we're supplanting here. +Provides: rdma = %{version}-%{release} +Obsoletes: rdma < %{version}-%{release} +Provides: rdma-ndd = %{version}-%{release} +Obsoletes: rdma-ndd < %{version}-%{release} +# the ndd utility moved from infiniband-diags to rdma-core +Conflicts: infiniband-diags <= 1.6.5 +Requires: pciutils +# 32-bit arm is missing required arch-specific memory barriers, +ExcludeArch: %{arm} + +# Since we recommend developers use Ninja, so should packagers, for consistency. +%define CMAKE_FLAGS %{nil} +%if 0%{?fedora} >= 23 +# Ninja was introduced in FC23 +BuildRequires: ninja-build +%define CMAKE_FLAGS -GNinja +%define make_jobs ninja-build -v %{?_smp_mflags} +%define cmake_install DESTDIR=%{buildroot} ninja-build install +%else +# Fallback to make otherwise +BuildRequires: make +%define make_jobs make -v %{?_smp_mflags} +%define cmake_install DESTDIR=%{buildroot} make install +%endif + +%description +RDMA core userspace infrastructure and documentation, including initscripts, +kernel driver-specific modprobe override configs, IPoIB network scripts, +dracut rules, and the rdma-ndd utility. + +%package devel +Summary: RDMA core development libraries and headers +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: libibverbs = %{version}-%{release} +Provides: libibverbs-devel = %{version}-%{release} +Obsoletes: libibverbs-devel < %{version}-%{release} +Provides: libibverbs-devel-static = %{version}-%{release} +Obsoletes: libibverbs-devel-static < %{version}-%{release} +Requires: libibcm = %{version}-%{release} +Provides: libibcm-devel = %{version}-%{release} +Obsoletes: libibcm-devel < %{version}-%{release} +Provides: libibcm-static = %{version}-%{release} +Obsoletes: libibcm-static < %{version}-%{release} +Requires: libibumad = %{version}-%{release} +Provides: libibumad-devel = %{version}-%{release} +Obsoletes: libibumad-devel < %{version}-%{release} +Provides: libibumad-static = %{version}-%{release} +Obsoletes: libibumad-static < %{version}-%{release} +Requires: librdmacm = %{version}-%{release} +Provides: librdmacm-devel = %{version}-%{release} +Obsoletes: librdmacm-devel < %{version}-%{release} +Provides: librdmacm-static = %{version}-%{release} +Obsoletes: librdmacm-static < %{version}-%{release} +Requires: ibacm = %{version}-%{release} +Provides: ibacm-devel = %{version}-%{release} +Obsoletes: ibacm-devel < %{version}-%{release} +Provides: libcxgb3-static = %{version}-%{release} +Obsoletes: libcxgb3-static < %{version}-%{release} +Provides: libcxgb4-static = %{version}-%{release} +Obsoletes: libcxgb4-static < %{version}-%{release} +Provides: libhfi1-static = %{version}-%{release} +Obsoletes: libhfi1-static < %{version}-%{release} +Provides: libipathverbs-static = %{version}-%{release} +Obsoletes: libipathverbs-static < %{version}-%{release} +Provides: libmlx4-static = %{version}-%{release} +Obsoletes: libmlx4-static < %{version}-%{release} +Provides: libmlx5-static = %{version}-%{release} +Obsoletes: libmlx5-static < %{version}-%{release} +Provides: libnes-static = %{version}-%{release} +Obsoletes: libnes-static < %{version}-%{release} +Provides: libocrdma-static = %{version}-%{release} +Obsoletes: libocrdma-static < %{version}-%{release} +Provides: libi40iw-devel-static = %{version}-%{release} +Obsoletes: libi40iw-devel-static < %{version}-%{release} +Provides: libmthca-static = %{version}-%{release} +Obsoletes: libmthca-static < %{version}-%{release} + +%description devel +RDMA core development libraries and headers. + +%package -n libibverbs +Summary: A library and drivers for direct userspace use of RDMA (InfiniBand/iWARP/RoCE) hardware +Requires(post): /sbin/ldconfig +Requires(postun): /sbin/ldconfig +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: libcxgb3 = %{version}-%{release} +Obsoletes: libcxgb3 < %{version}-%{release} +Provides: libcxgb4 = %{version}-%{release} +Obsoletes: libcxgb4 < %{version}-%{release} +Provides: libhfi1 = %{version}-%{release} +Obsoletes: libhfi1 < %{version}-%{release} +Provides: libi40iw = %{version}-%{release} +Obsoletes: libi40iw < %{version}-%{release} +Provides: libipathverbs = %{version}-%{release} +Obsoletes: libipathverbs < %{version}-%{release} +Provides: libmlx4 = %{version}-%{release} +Obsoletes: libmlx4 < %{version}-%{release} +%ifnarch s390x s390 +Provides: libmlx5 = %{version}-%{release} +Obsoletes: libmlx5 < %{version}-%{release} +%endif +Provides: libmthca = %{version}-%{release} +Obsoletes: libmthca < %{version}-%{release} +Provides: libnes = %{version}-%{release} +Obsoletes: libnes < %{version}-%{release} +Provides: libocrdma = %{version}-%{release} +Obsoletes: libocrdma < %{version}-%{release} +Provides: librxe = %{version}-%{release} +Obsoletes: librxe < %{version}-%{release} + +%description -n libibverbs +libibverbs is a library that allows userspace processes to use RDMA +"verbs" as described in the InfiniBand Architecture Specification and +the RDMA Protocol Verbs Specification. This includes direct hardware +access from userspace to InfiniBand/iWARP adapters (kernel bypass) for +fast path operations. + +Device-specific plug-in ibverbs userspace drivers are included: + +- libcxgb3: Chelsio T3 iWARP HCA +- libcxgb4: Chelsio T4 iWARP HCA +- libhfi1: Intel Omni-Path HFI +- libi40iw: Intel Ethernet Connection X722 RDMA +- libipathverbs: QLogic InfiniPath HCA +- libmlx4: Mellanox ConnectX-3 InfiniBand HCA +- libmlx5: Mellanox Connect-IB/X-4+ InfiniBand HCA +- libmthca: Mellanox InfiniBand HCA +- libnes: NetEffect RNIC +- libocrdma: Emulex OneConnect RDMA/RoCE Device +- librxe: A software implementation of the RoCE protocol + +%package -n libibverbs-utils +Summary: Examples for the libibverbs library +Requires: libibverbs%{?_isa} = %{version}-%{release} + +%description -n libibverbs-utils +Useful libibverbs example programs such as ibv_devinfo, which +displays information about RDMA devices. + +%package -n ibacm +Summary: InfiniBand Communication Manager Assistant +Requires(post): systemd-units +Requires(preun): systemd-units +Requires(postun): systemd-units +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: libibumad%{?_isa} = %{version}-%{release} +Requires: libibverbs%{?_isa} = %{version}-%{release} + +%description -n ibacm +The ibacm daemon helps reduce the load of managing path record lookups on +large InfiniBand fabrics by providing a user space implementation of what +is functionally similar to an ARP cache. The use of ibacm, when properly +configured, can reduce the SA packet load of a large IB cluster from O(n^2) +to O(n). The ibacm daemon is started and normally runs in the background, +user applications need not know about this daemon as long as their app +uses librdmacm to handle connection bring up/tear down. The librdmacm +library knows how to talk directly to the ibacm daemon to retrieve data. + +%package -n iwpmd +Summary: iWarp Port Mapper userspace daemon +Requires(post): systemd-units +Requires(preun): systemd-units +Requires(postun): systemd-units +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description -n iwpmd +iwpmd provides a userspace service for iWarp drivers to claim +tcp ports through the standard socket interface. + +%package -n libibcm +Summary: Userspace InfiniBand Connection Manager +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: libibverbs%{?_isa} = %{version}-%{release} + +%description -n libibcm +libibcm provides a userspace library that handles the majority of the low +level work required to open an RDMA connection between two machines. + +%package -n libibumad +Summary: OpenFabrics Alliance InfiniBand umad (userspace management datagram) library +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description -n libibumad +libibumad provides the userspace management datagram (umad) library +functions, which sit on top of the umad modules in the kernel. These +are used by the IB diagnostic and management tools, including OpenSM. + +%package -n librdmacm +Summary: Userspace RDMA Connection Manager +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: libibverbs%{?_isa} = %{version}-%{release} + +%description -n librdmacm +librdmacm provides a userspace RDMA Communication Managment API. + +%package -n librdmacm-utils +Summary: Examples for the librdmacm library +Requires: librdmacm%{?_isa} = %{version}-%{release} +Requires: libibverbs%{?_isa} = %{version}-%{release} + +%description -n librdmacm-utils +Example test programs for the librdmacm library. + +%package -n srp_daemon +Summary: Tools for using the InfiniBand SRP protocol devices +Obsoletes: srptools <= 1.0.3 +Provides: srptools = %{version}-%{release} +Obsoletes: openib-srptools <= 0.0.6 +Requires(post): systemd-units +Requires(preun): systemd-units +Requires(postun): systemd-units +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: libibumad%{?_isa} = %{version}-%{release} +Requires: libibverbs%{?_isa} = %{version}-%{release} + +%description -n srp_daemon +In conjunction with the kernel ib_srp driver, srp_daemon allows you to +discover and use SCSI devices via the SCSI RDMA Protocol over InfiniBand. + +%prep +%setup +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 + +%build + +# New RPM defines _rundir, usually as /run +%if 0%{?_rundir:1} +%else +%define _rundir /var/run +%endif + +# Pass all of the rpm paths directly to GNUInstallDirs and our other defines. +%cmake %{CMAKE_FLAGS} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_BINDIR:PATH=%{_bindir} \ + -DCMAKE_INSTALL_SBINDIR:PATH=%{_sbindir} \ + -DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir} \ + -DCMAKE_INSTALL_LIBEXECDIR:PATH=%{_libexecdir} \ + -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=%{_localstatedir} \ + -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=%{_sharedstatedir} \ + -DCMAKE_INSTALL_INCLUDEDIR:PATH=%{_includedir} \ + -DCMAKE_INSTALL_INFODIR:PATH=%{_infodir} \ + -DCMAKE_INSTALL_MANDIR:PATH=%{_mandir} \ + -DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_sysconfdir} \ + -DCMAKE_INSTALL_SYSTEMD_SERVICEDIR:PATH=%{_unitdir} \ + -DCMAKE_INSTALL_INITDDIR:PATH=%{_initrddir} \ + -DCMAKE_INSTALL_RUNDIR:PATH=%{_rundir} \ + -DCMAKE_INSTALL_DOCDIR:PATH=%{_docdir}/%{name}-%{version} \ + -DCMAKE_INSTALL_UDEV_RULESDIR:PATH=%{_udevrulesdir} +%make_jobs + +%install +%cmake_install + +mkdir -p %{buildroot}/%{_sysconfdir}/rdma + +# Red Hat specific glue +%global dracutlibdir %{_prefix}/lib/dracut +%global sysmodprobedir %{_prefix}/lib/modprobe.d +mkdir -p %{buildroot}/%{_sysconfdir}/sysconfig/network-scripts +mkdir -p %{buildroot}%{_sysconfdir}/udev/rules.d +mkdir -p %{buildroot}%{_libexecdir} +mkdir -p %{buildroot}%{_udevrulesdir} +mkdir -p %{buildroot}%{dracutlibdir}/modules.d/05rdma +mkdir -p %{buildroot}%{sysmodprobedir} +install -D -m0644 redhat/rdma.conf %{buildroot}/%{_sysconfdir}/rdma/rdma.conf +install -D -m0644 redhat/rdma.sriov-vfs %{buildroot}/%{_sysconfdir}/rdma/sriov-vfs +install -D -m0644 redhat/rdma.mlx4.conf %{buildroot}/%{_sysconfdir}/rdma/mlx4.conf +install -D -m0755 redhat/rdma.ifup-ib %{buildroot}/%{_sysconfdir}/sysconfig/network-scripts/ifup-ib +install -D -m0755 redhat/rdma.ifdown-ib %{buildroot}/%{_sysconfdir}/sysconfig/network-scripts/ifdown-ib +install -D -m0644 redhat/rdma.service %{buildroot}%{_unitdir}/rdma.service +install -D -m0644 redhat/rdma.udev-ipoib-naming.rules %{buildroot}%{_sysconfdir}/udev/rules.d/70-persistent-ipoib.rules +install -D -m0644 redhat/rdma.mlx4.user.modprobe %{buildroot}%{_sysconfdir}/modprobe.d/mlx4.conf +install -D -m0755 redhat/rdma.modules-setup.sh %{buildroot}%{dracutlibdir}/modules.d/05rdma/module-setup.sh +install -D -m0644 redhat/rdma.udev-rules %{buildroot}%{_udevrulesdir}/98-rdma.rules +install -D -m0644 redhat/rdma.mlx4.sys.modprobe %{buildroot}%{sysmodprobedir}/libmlx4.conf +install -D -m0644 redhat/rdma.cxgb3.sys.modprobe %{buildroot}%{sysmodprobedir}/cxgb3.conf +install -D -m0644 redhat/rdma.cxgb4.sys.modprobe %{buildroot}%{sysmodprobedir}/cxgb4.conf +install -D -m0755 redhat/rdma.kernel-init %{buildroot}%{_libexecdir}/rdma-init-kernel +install -D -m0755 redhat/rdma.sriov-init %{buildroot}%{_libexecdir}/rdma-set-sriov-vf +install -D -m0644 redhat/rdma.fixup-mtrr.awk %{buildroot}%{_libexecdir}/rdma-fixup-mtrr.awk +install -D -m0755 redhat/rdma.mlx4-setup.sh %{buildroot}%{_libexecdir}/mlx4-setup.sh + +# ibacm +bin/ib_acme -D . -O +# multi-lib conflict resolution hacks (bug 1429362) +sed -i -e 's|%{_libdir}|/usr/lib|' %{buildroot}%{_mandir}/man7/ibacm_prov.7 +sed -i -e 's|%{_libdir}|/usr/lib|' ibacm_opts.cfg +install -D -m0644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/ +install -D -m0644 redhat/ibacm.service %{buildroot}%{_unitdir}/ + +# srp_daemon +install -D -m0644 redhat/srp_daemon.service %{buildroot}%{_unitdir}/ + +# Delete the package's init.d scripts +rm -rf %{buildroot}/%{_initrddir}/ + +# Remove ibverbs provider libs we don't (yet?) support +rm -f %{buildroot}/%{_libdir}/libibverbs/libvmw_pvrdma-rdmav2.so +rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/vmw_pvrdma.driver +rm -f %{buildroot}/%{_libdir}/libibverbs/libhns-rdmav2.so +rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/hns.driver + +%post -n libibverbs -p /sbin/ldconfig +%postun -n libibverbs -p /sbin/ldconfig + +%post -n libibcm -p /sbin/ldconfig +%postun -n libibcm -p /sbin/ldconfig + +%post -n libibumad -p /sbin/ldconfig +%postun -n libibumad -p /sbin/ldconfig + +%post -n librdmacm -p /sbin/ldconfig +%postun -n librdmacm -p /sbin/ldconfig + +%post -n ibacm +%systemd_post ibacm.service +%preun -n ibacm +%systemd_preun ibacm.service +%postun -n ibacm +%systemd_postun_with_restart ibacm.service + +%post -n srp_daemon +%systemd_post srp_daemon.service +%preun -n srp_daemon +%systemd_preun srp_daemon.service +%postun -n srp_daemon +%systemd_postun_with_restart srp_daemon.service + +%post -n iwpmd +%systemd_post iwpmd.service +%preun -n iwpmd +%systemd_preun iwpmd.service +%postun -n iwpmd +%systemd_postun_with_restart iwpmd.service + +%files +%dir %{_sysconfdir}/rdma +%dir %{_docdir}/%{name}-%{version} +%doc %{_docdir}/%{name}-%{version}/README.md +%config(noreplace) %{_sysconfdir}/rdma/* +%config(noreplace) %{_sysconfdir}/udev/rules.d/* +%config(noreplace) %{_sysconfdir}/modprobe.d/mlx4.conf +%config(noreplace) %{_sysconfdir}/modprobe.d/truescale.conf +%{_sysconfdir}/sysconfig/network-scripts/* +%{_unitdir}/rdma.service +%dir %{dracutlibdir}/modules.d/05rdma +%{dracutlibdir}/modules.d/05rdma/module-setup.sh +%{_udevrulesdir}/* +%{sysmodprobedir}/libmlx4.conf +%{sysmodprobedir}/cxgb3.conf +%{sysmodprobedir}/cxgb4.conf +%{_libexecdir}/rdma-init-kernel +%{_libexecdir}/rdma-set-sriov-vf +%{_libexecdir}/rdma-fixup-mtrr.awk +%{_libexecdir}/mlx4-setup.sh +%{_libexecdir}/truescale-serdes.cmds +%{_sbindir}/rdma-ndd +%{_unitdir}/rdma-ndd.service +%{_mandir}/man8/rdma-ndd.* +%license COPYING.* + +%files devel +%doc %{_docdir}/%{name}-%{version}/MAINTAINERS +%dir %{_includedir}/infiniband +%dir %{_includedir}/rdma +%{_includedir}/infiniband/* +%{_includedir}/rdma/* +%{_libdir}/lib*.so +%{_mandir}/man3/ibv_* +%{_mandir}/man3/rdma* +%{_mandir}/man3/umad* +%{_mandir}/man3/*_to_ibv_rate.* +%ifnarch s390x s390 +%{_mandir}/man3/mlx5dv* +%endif +%{_mandir}/man7/rdma_cm.* + +%files -n libibverbs +%dir %{_sysconfdir}/libibverbs.d +%dir %{_libdir}/libibverbs +%{_libdir}/libibverbs*.so.* +%{_libdir}/libibverbs/*.so +%ifnarch s390x s390 +%{_libdir}/libmlx5.so.* +%endif +%config(noreplace) %{_sysconfdir}/libibverbs.d/*.driver +%doc %{_docdir}/%{name}-%{version}/libibverbs.md +%doc %{_docdir}/%{name}-%{version}/rxe.md +%{_bindir}/rxe_cfg +%{_mandir}/man7/rxe* +%ifnarch s390x s390 +%{_mandir}/man7/mlx5dv* +%endif +%{_mandir}/man8/rxe* + +%files -n libibverbs-utils +%{_bindir}/ibv_* +%{_mandir}/man1/ibv_* + +%files -n ibacm +%config(noreplace) %{_sysconfdir}/rdma/ibacm_opts.cfg +%{_bindir}/ib_acme +%{_sbindir}/ibacm +%{_mandir}/man1/ibacm.* +%{_mandir}/man1/ib_acme.* +%{_mandir}/man7/ibacm.* +%{_mandir}/man7/ibacm_prov.* +%{_unitdir}/ibacm.service +%dir %{_libdir}/ibacm +%{_libdir}/ibacm/* +%doc %{_docdir}/%{name}-%{version}/ibacm.md + +%files -n iwpmd +%{_bindir}/iwpmd +%{_unitdir}/iwpmd.service +%config(noreplace) %{_sysconfdir}/iwpmd.conf +%{_mandir}/man1/iwpmd.* +%{_mandir}/man5/iwpmd.* + +%files -n libibcm +%{_libdir}/libibcm*.so.* +%doc %{_docdir}/%{name}-%{version}/libibcm.md + +%files -n libibumad +%{_libdir}/libibumad*.so.* + +%files -n librdmacm +%{_libdir}/librdmacm*.so.* +%dir %{_libdir}/rsocket +%{_libdir}/rsocket/librspreload.so* +%doc %{_docdir}/%{name}-%{version}/librdmacm.md +%{_mandir}/man7/rsocket.* + +%files -n librdmacm-utils +%{_bindir}/cmtime +%{_bindir}/mckey +%{_bindir}/rcopy +%{_bindir}/rdma_client +%{_bindir}/rdma_server +%{_bindir}/rdma_xclient +%{_bindir}/rdma_xserver +%{_bindir}/riostream +%{_bindir}/rping +%{_bindir}/rstream +%{_bindir}/ucmatose +%{_bindir}/udaddy +%{_bindir}/udpong +%{_mandir}/man1/mckey.* +%{_mandir}/man1/rcopy.* +%{_mandir}/man1/rdma_client.* +%{_mandir}/man1/rdma_server.* +%{_mandir}/man1/rdma_xclient.* +%{_mandir}/man1/rdma_xserver.* +%{_mandir}/man1/riostream.* +%{_mandir}/man1/rping.* +%{_mandir}/man1/rstream.* +%{_mandir}/man1/ucmatose.* +%{_mandir}/man1/udaddy.* + +%files -n srp_daemon +%config(noreplace) %{_sysconfdir}/srp_daemon.conf +%{_unitdir}/srp_daemon.service +%{_sbindir}/ibsrpdm +%{_sbindir}/srp_daemon +%{_sbindir}/srp_daemon.sh +%{_sbindir}/run_srp_daemon +%{_mandir}/man1/ibsrpdm.1* +%{_mandir}/man1/srp_daemon.1* +%doc %{_docdir}/%{name}-%{version}/ibsrpdm.md + +%changelog +* Tue May 30 2017 Jarod Wilson 13-7 +- Add support for mlx5 Expand raw packet capabilities +- Resolves: rhbz#1456561 + +* Mon May 22 2017 Jarod Wilson 13-6 +- Clean up htonll/ntohll handling for opa-ff/infiniband-diags compile +- Add necessary Provides/Obsoletes for old -static packages +- Remove ibverbs providers that we aren't currently able to support +- Resolves: rhbz#1453096, rhbz#1451607 + +* Wed Apr 26 2017 Honggang Li 13-5 +- rdma-ndd: Fix a busy loop for aarch64 platform +- Resolves: bz1442789 + +* Thu Apr 13 2017 Honggang Li 13-4 +- srp_daemon: Don't rely on attribute offset in get_shared_pkeys +- Resolves: bz1432964 + +* Mon Apr 03 2017 Jarod Wilson - 13-3 +- Add necessary Provides/Obsoletes for rdma-ndd (rhbz 1437804) + +* Mon Mar 27 2017 Jarod Wilson - 13-2 +- Build what we can on s390, don't exclude it entirely (rhbz 1434029) + +* Tue Mar 21 2017 Jarod Wilson - 13-1 +- Update to rdma-core v13 release (rhbz 1404035) +- Mellanox mlx5 Direct Verbs support (rhbz 1426430) +- Get build working on s390x, less mlx5 (rhbz 1434029) + +* Mon Mar 20 2017 Jarod Wilson - 12-5 +- Fix up multi-lib conflicts in ibacm files (rhbz 1429362) + +* Mon Mar 13 2017 Jarod Wilson - 12-4 +- Clean up devel files list +- Fix up a few dependencies rpmdiff complained about (rhbz 1404035) +- Add Requires: pciutils for dracut to behave in minimalist cases (rhbz 1429046) +- Adjust Conflicts: on infiniband-diags to match RHEL packaging (rhbz 1428785) + +* Mon Mar 06 2017 Jarod Wilson - 12-3 +- Take libi40iw out of tech-preview state (rhbz 1428930) +- Add ibv_*_pingpong man pages (rhbz 1416541) + +* Thu Feb 09 2017 Jarod Wilson - 12-2 +- Make sure ocrdma module is classified as tech-preview (rhbz 1418224) + +* Fri Jan 27 2017 Jarod Wilson - 12-1 +- Update to upstream final v12 release + +* Wed Jan 25 2017 Jarod Wilson - 12-0.1.rc3.1 +- Initial import to Fedora package database via post-v12-rc3 git snapshot