components/open-fabrics/libsif/patches/001-libsif-config.patch
author ssadalka soniya.sadalkar@oracle.com
Tue, 08 Mar 2016 21:43:23 -0800
changeset 5564 e533d5840fdd
child 5708 49b43e37ce26
permissions -rw-r--r--
PSARC/2015/479 PSIF Solaris IB HCA Driver 22111504 RFE for libsif integration into userland gate

# This patch does the config changes specific to solaris.
# It is developed By solaris PSIF team. We plan to have a common upstream repo
# and submit these changes to it, but do not yet have a target date of doing it.
diff -r 1584d5cbb44d Makefile.am
--- a/Makefile.am	Wed Feb 10 12:40:22 2016 +0530
+++ b/Makefile.am	Tue Mar 01 16:24:16 2016 +0530
@@ -9,7 +9,11 @@
   -avoid-version \
   -release @IBV_DEVICE_LIBRARY_EXTENSION@
 
-lib_LTLIBRARIES = src/libsif.la src/libsifwa.la
+lib_LTLIBRARIES = src/libsif.la
+if !SIF_SOLARIS
+lib_LTLIBRARIES += src/libsifwa.la
+endif
+
 src_libsif_la_SOURCES = \
     src/cpu_features.c \
     src/cq.c \
@@ -24,14 +28,20 @@
 
 src_libsif_la_LDFLAGS = $(SIF_LDFLAGS) $(sif_version_script)
 
+if SIF_SOLARIS
+sifconfdir = $(datadir)/libibverbs.d
+else
 src_libsifwa_la_SOURCES = src/sif_eps.c
 src_libsifwa_la_CFLAGS = $(AM_CFLAGS) $(NETLINK_CFLAGS)
 src_libsifwa_la_LDFLAGS = $(SIF_LDFLAGS) $(NETLINK_LIBS) $(sifwa_version_script)
 
 sifconfdir = $(sysconfdir)/libibverbs.d
+endif
 sifconf_DATA = sif.driver
 
+if !SIF_SOLARIS
 -include $(srcdir)/genrules.mk
+endif
 
 EXTRA_DIST = \
     libsif.spec.in \
@@ -67,8 +77,10 @@
     src/psif_hw_print.c
 
 libsif_includedir = $(includedir)/infiniband
-libsif_include_HEADERS = src/sif.h src/sif_eps.h src/sif_drvapi.h
-
+libsif_include_HEADERS = src/sif.h 
+if !SIF_SOLARIS
+libsif_include_HEADERS += src/sif_eps.h src/sif_drvapi.h
+endif
 
 dist-hook:
 	@rm -f $(distdir)/m4/{sifdrv,psifapi}.m4
diff -r 1584d5cbb44d configure.ac
--- a/configure.ac	Wed Feb 10 12:40:22 2016 +0530
+++ b/configure.ac	Tue Mar 01 16:24:16 2016 +0530
@@ -10,6 +10,10 @@
 # Silent rules by default - use make V=1 for verbose
 AM_SILENT_RULES([yes])
 
+AS_IF([test "x$os_type" = "x" ],
+    [os_type=`uname -a | awk 'BEGIN { FS=" " } { print $1; }'`],
+    [])
+
 AC_CONFIG_MACRO_DIR([m4])
 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
 
@@ -30,7 +34,7 @@
 
 dnl Checks for programs
 AC_PROG_CC
-
+AM_CONDITIONAL(SIF_SOLARIS, test $os_type != Linux)
 
 
 
@@ -40,6 +44,7 @@
     AC_MSG_ERROR(
 [ibv_get_device_list() not found.  libsif requires libibverbs.]))
 
+if test $os_type = Linux; then
 PKG_CHECK_MODULES(LIBNL3, libnl-3.0 >= 3.1, [have_libnl3=yes],[ dnl
   have_libnl3=no
   PKG_CHECK_MODULES([NETLINK], [libnl-1 >= 1.1])
@@ -52,7 +57,7 @@
 else
 	LIBS+=" $NETLINK_LIBS"
 fi
-
+fi
 dnl Checks for header files.
 AC_CHECK_HEADER(infiniband/driver.h, [],
     AC_MSG_ERROR([<infiniband/driver.h> not found.  libsif requires libibverbs.]))
@@ -86,11 +91,34 @@
 AC_SUBST(IBV_DEVICE_LIBRARY_EXTENSION)
 
 SIF_GET_CONTEXT_CONTAINER="return container_of(ibctx, struct sif_context, ibv_ctx);"
+SIF_GET_QP_CONTAINER="return container_of(ibqp, struct sif_qp, ibv_qp);"
+SIF_GET_SRQ_CONTAINER="return container_of(ibsrq, struct sif_rq, ibv_srq);"
+SIF_GET_STRUCT="ibv"
 
-AM_CONDITIONAL([HAVE_VERBS_REGISTER_DRIVER],dnl
+if test $os_type = Linux; then
+    AM_CONDITIONAL([HAVE_VERBS_REGISTER_DRIVER],dnl
 	[SIF_GET_CONTEXT_CONTAINER="return container_of(ibctx, struct sif_context, verbs_ctx.context);"])
+    AM_CONDITIONAL([HAVE_VERBS_REGISTER_DRIVER],dnl
+        [SIF_GET_QP_CONTAINER="return container_of(ibqp, struct sif_qp, verbs_qp.qp);"])
+    AM_CONDITIONAL([HAVE_VERBS_REGISTER_DRIVER],dnl
+        [SIF_GET_SRQ_CONTAINER="return container_of(ibsrq, struct sif_rq, verbs_srq.srq);"])
+    AM_CONDITIONAL([HAVE_VERBS_REGISTER_DRIVER], [SIF_GET_STRUCT="verbs"])
+fi
+
+if test $os_type = SunOS ; then
+    AM_CONDITIONAL([HAVE_VERBS_REGISTER_DRIVER],dnl
+        [SIF_GET_CONTEXT_CONTAINER="return container_of(ibctx, struct sif_context, ibv_ctx);"])
+    AM_CONDITIONAL([HAVE_VERBS_REGISTER_DRIVER],dnl
+        [SIF_GET_QP_CONTAINER="return container_of(ibqp, struct sif_qp, ibv_qp);"])
+    AM_CONDITIONAL([HAVE_VERBS_REGISTER_DRIVER],dnl
+        [SIF_GET_SRQ_CONTAINER="return container_of(ibsrq, struct sif_rq, ibv_srq);"])
+    AM_CONDITIONAL([HAVE_VERBS_REGISTER_DRIVER], [SIF_GET_STRUCT="ibv"])
+fi
 
 AC_SUBST([SIF_GET_CONTEXT_CONTAINER])
+AC_SUBST([SIF_GET_STRUCT])
+AC_SUBST([SIF_GET_QP_CONTAINER])
+AC_SUBST([SIF_GET_SRQ_CONTAINER])
 
 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
diff -r 1584d5cbb44d sif.driver
--- a/sif.driver	Wed Feb 10 12:40:22 2016 +0530
+++ b/sif.driver	Tue Mar 01 16:24:16 2016 +0530
@@ -1,1 +1,6 @@
+#
+# Copyright (c) 2014, 2016, Oracle America, Inc. and its Affiliates
+# All rights reserved.
+#
+# WARNING: Do not change these settings unless you know what you are doing.
 driver sif