[Pkg-ofed-commits] [perftest] 01/04: Imported Upstream version 3.0+0.9.g214990b

Ana Beatriz Guerrero López ana at moszumanska.debian.org
Tue Jul 21 17:32:13 UTC 2015


This is an automated email from the git hooks/post-receive script.

ana pushed a commit to branch master
in repository perftest.

commit a8b168f93a2b824a87b785250f6d8a68de4c5ae7
Author: Ana Guerrero López <ana at ekaia.org>
Date:   Tue Jul 21 19:21:28 2015 +0200

    Imported Upstream version 3.0+0.9.g214990b
---
 Makefile.am                  |    1 +
 Makefile.in                  |   84 +-
 README                       |   91 +-
 README_sparc                 |   42 +
 autom4te.cache/output.0      |  340 +++++--
 autom4te.cache/output.1      |  340 +++++--
 autom4te.cache/traces.0      |  509 +++++------
 autom4te.cache/traces.1      | 1046 +++++++++++-----------
 config.h.in                  |    3 +
 configure                    |  380 +++++---
 configure.ac                 |   32 +-
 perftest.spec                |    6 +-
 run_perftest_loopback        |   25 +
 src/atomic_bw.c              |  229 ++---
 src/atomic_lat.c             |  106 +--
 src/clock_test.c             |    3 +-
 src/get_clock.c              |   56 +-
 src/get_clock.h              |   22 +-
 src/multicast_resources.c    |   44 +-
 src/multicast_resources.h    |   88 +-
 src/perftest_communication.c |  463 +++++-----
 src/perftest_communication.h |   92 +-
 src/perftest_parameters.c    | 1336 +++++++++++++++-------------
 src/perftest_parameters.h    |   89 +-
 src/perftest_resources.c     | 2009 ++++++++++++++++++++++++------------------
 src/perftest_resources.h     |  132 +--
 src/raw_ethernet_resources.c |  656 +++++++-------
 src/raw_ethernet_resources.h |  110 +--
 src/raw_ethernet_send_bw.c   |  125 ++-
 src/raw_ethernet_send_lat.c  |  114 ++-
 src/read_bw.c                |   91 +-
 src/read_lat.c               |   79 +-
 src/send_bw.c                |  130 ++-
 src/send_lat.c               |  134 +--
 src/write_bw.c               |   89 +-
 src/write_lat.c              |   79 +-
 36 files changed, 5178 insertions(+), 3997 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 37e9aff..48a9bc3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -19,6 +19,7 @@ libperftest_a_SOURCES = src/get_clock.c src/perftest_communication.c src/perftes
 noinst_HEADERS = src/get_clock.h src/perftest_communication.h src/perftest_parameters.h src/perftest_resources.h
 
 bin_PROGRAMS = ib_send_bw ib_send_lat ib_write_lat ib_write_bw ib_read_lat ib_read_bw ib_atomic_lat ib_atomic_bw
+bin_SCRIPTS = run_perftest_loopback
 
 if HAVE_RAW_ETH
 libperftest_a_SOURCES += src/raw_ethernet_resources.c
diff --git a/Makefile.in b/Makefile.in
index ac8e8d6..b51e29e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -30,6 +30,7 @@
 
 
 
+
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
@@ -102,7 +103,7 @@ libperftest_a_OBJECTS = $(am_libperftest_a_OBJECTS)
 @HAVE_RAW_ETH_TRUE at am__EXEEXT_1 = raw_ethernet_bw$(EXEEXT) \
 @HAVE_RAW_ETH_TRUE@	raw_ethernet_lat$(EXEEXT)
 am__EXEEXT_2 =
-am__installdirs = "$(DESTDIR)$(bindir)"
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
 PROGRAMS = $(bin_PROGRAMS)
 am_ib_atomic_bw_OBJECTS = src/atomic_bw.$(OBJEXT)
 ib_atomic_bw_OBJECTS = $(am_ib_atomic_bw_OBJECTS)
@@ -148,6 +149,28 @@ am__raw_ethernet_lat_SOURCES_DIST = src/raw_ethernet_send_lat.c
 raw_ethernet_lat_OBJECTS = $(am_raw_ethernet_lat_OBJECTS)
 @HAVE_RAW_ETH_TRUE at raw_ethernet_lat_DEPENDENCIES = libperftest.a \
 @HAVE_RAW_ETH_TRUE@	$(am__DEPENDENCIES_1)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+SCRIPTS = $(bin_SCRIPTS)
 DEFAULT_INCLUDES = -I. at am__isrc@
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
@@ -334,6 +357,7 @@ libperftest_a_SOURCES = src/get_clock.c src/perftest_communication.c \
 noinst_HEADERS = src/get_clock.h src/perftest_communication.h \
 	src/perftest_parameters.h src/perftest_resources.h \
 	$(am__append_2) $(am__append_5)
+bin_SCRIPTS = run_perftest_loopback
 ib_send_bw_SOURCES = src/send_bw.c src/multicast_resources.c src/multicast_resources.h
 ib_send_bw_LDADD = libperftest.a $(LIBUMAD) $(LIBMATH)
 ib_send_lat_SOURCES = src/send_lat.c src/multicast_resources.c src/multicast_resources.h
@@ -532,6 +556,40 @@ src/raw_ethernet_send_lat.$(OBJEXT): src/$(am__dirstamp) \
 raw_ethernet_lat$(EXEEXT): $(raw_ethernet_lat_OBJECTS) $(raw_ethernet_lat_DEPENDENCIES) 
 	@rm -f raw_ethernet_lat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(raw_ethernet_lat_OBJECTS) $(raw_ethernet_lat_LDADD) $(LIBS)
+install-binSCRIPTS: $(bin_SCRIPTS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	     } \
+	; done
+
+uninstall-binSCRIPTS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -809,9 +867,10 @@ distcleancheck: distclean
 	       exit 1; } >&2
 check-am: all-am
 check: check-am
-all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(HEADERS) config.h
+all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(SCRIPTS) $(HEADERS) \
+		config.h
 installdirs:
-	for dir in "$(DESTDIR)$(bindir)"; do \
+	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -871,7 +930,7 @@ install-dvi: install-dvi-am
 
 install-dvi-am:
 
-install-exec-am: install-binPROGRAMS
+install-exec-am: install-binPROGRAMS install-binSCRIPTS
 
 install-html: install-html-am
 
@@ -913,7 +972,7 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-binPROGRAMS
+uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS
 
 .MAKE: all install-am install-strip
 
@@ -924,15 +983,16 @@ uninstall-am: uninstall-binPROGRAMS
 	distclean distclean-compile distclean-generic distclean-hdr \
 	distclean-libtool distclean-tags distcleancheck distdir \
 	distuninstallcheck dvi dvi-am html html-am info info-am \
-	install install-am install-binPROGRAMS install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
+	install install-am install-binPROGRAMS install-binSCRIPTS \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-binPROGRAMS
+	tags uninstall uninstall-am uninstall-binPROGRAMS \
+	uninstall-binSCRIPTS
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/README b/README
index c60fd46..935379f 100644
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
 	     Open Fabrics Enterprise Distribution (OFED)
-                Performance Tests README for OFED 2.3
-		  
-			  April 2014
+                Performance Tests README for OFED 3.0
+
+			  March 2015
 
 
 
@@ -125,70 +125,70 @@ Client:		./<test name> <options> <server IP address>
 
 Common Options to all tests:
 ----------------------------
-  -h, --help                        Display this help message screen
-  -p, --port=<port>                 Listen on/connect to port <port> (default: 18515)
-  -R, --rdma_cm                     Connect QPs with rdma_cm and run test on those QPs
-  -z, --com_rdma_cm                 Communicate with rdma_cm module to exchange data - use regular QPs
-  -m, --mtu=<mtu>                   QP Mtu size (default: active_mtu from ibv_devinfo)
-  -c, --connection=<RC/UC/UD/XRC>   Connection type RC/UC/UD/XRC (default RC)
-  -d, --ib-dev=<dev>                Use IB device <dev> (default: first device found)
-  -i, --ib-port=<port>              Use network port <port> of IB device (default: 1)
-  -s, --size=<size>                 Size of message to exchange (default: 1)
-  -a, --all                         Run sizes from 2 till 2^23
-  -n, --iters=<iters>               Number of exchanges (at least 100, default: 1000)
-  -x, --gid-index=<index>           Test uses GID with GID index taken from command
-  -V, --version                     Display version number
-  -e, --events                      Sleep on CQ events (default poll)
-  -F, --CPU-freq                    Do not fail even if cpufreq_ondemand module
-  -I, --inline_size=<size>          Max size of message to be sent in inline mode
-  -u, --qp-timeout=<timeout>        QP timeout = (4 uSec)*(2^timeout) (default: 14)
-  -S, --sl=<sl>                     Service Level (default 0)
-  -r, --rx-depth=<dep>              Receive queue depth (default 600)
+  -h, --help				Display this help message screen
+  -p, --port=<port>			Listen on/connect to port <port> (default: 18515)
+  -R, --rdma_cm				Connect QPs with rdma_cm and run test on those QPs
+  -z, --com_rdma_cm			Communicate with rdma_cm module to exchange data - use regular QPs
+  -m, --mtu=<mtu>			QP Mtu size (default: active_mtu from ibv_devinfo)
+  -c, --connection=<RC/UC/UD/XRC/DC>	Connection type RC/UC/UD/XRC/DC (default RC).
+  -d, --ib-dev=<dev>			Use IB device <dev> (default: first device found)
+  -i, --ib-port=<port>			Use network port <port> of IB device (default: 1)
+  -s, --size=<size>			Size of message to exchange (default: 1)
+  -a, --all				Run sizes from 2 till 2^23
+  -n, --iters=<iters>			Number of exchanges (at least 100, default: 1000)
+  -x, --gid-index=<index>		Test uses GID with GID index taken from command
+  -V, --version				Display version number
+  -e, --events				Sleep on CQ events (default poll)
+  -F, --CPU-freq			Do not fail even if cpufreq_ondemand module
+  -I, --inline_size=<size>		Max size of message to be sent in inline mode
+  -u, --qp-timeout=<timeout>		QP timeout = (4 uSec)*(2^timeout) (default: 14)
+  -S, --sl=<sl>				Service Level (default 0)
+  -r, --rx-depth=<dep>			Receive queue depth (default 600)
 
 Options for latency tests:
 --------------------------
 
-  -C, --report-cycles           Report times in CPU cycle units
-  -H, --report-histogram        Print out all results (Default: summary only)
-  -U, --report-unsorted  		Print out unsorted results (default sorted)
+  -C, --report-cycles			Report times in CPU cycle units
+  -H, --report-histogram		Print out all results (Default: summary only)
+  -U, --report-unsorted			Print out unsorted results (default sorted)
 
 Options for BW tests:
 ---------------------
 
-  -b, --bidirectional           Measure bidirectional bandwidth (default uni)
-  -N, --no peak-bw             	Cancel peak-bw calculation (default with peak-bw)
-  -Q, --cq-mod  				Generate Cqe only after <cq-mod> completion
-  -t, --tx-depth=<dep>          Size of tx queue (default: 128)
-  -O, --dualport				Run test in dual-port mode (2 QPs). Both ports must be active (default OFF)
+  -b, --bidirectional			Measure bidirectional bandwidth (default uni)
+  -N, --no peak-bw			Cancel peak-bw calculation (default with peak-bw)
+  -Q, --cq-mod				Generate Cqe only after <cq-mod> completion
+  -t, --tx-depth=<dep>			Size of tx queue (default: 128)
+  -O, --dualport			Run test in dual-port mode (2 QPs). Both ports must be active (default OFF)
   -D, --duration=<sec> 			Run test for <sec> period of seconds
   -f, --margin=<sec> 			When in Duration, measure results within margins (default: 2)
-  -l, --post_list=<list size>   Post list of WQEs of <list size> size (instead of single post)
+  -l, --post_list=<list size>		Post list of WQEs of <list size> size (instead of single post)
   -q, --qp=<num of qp's>		Num of QPs running in the process (default: 1)
       --run_infinitely			Run test until interrupted by user, print results every 5 seconds
 
 SEND tests (ib_send_lat or ib_send_bw) flags: 
 ---------------------------------------------
 
-  -r, --rx-depth=<dep>          Size of receive queue (default: 512 in BW test)
+  -r, --rx-depth=<dep>			Size of receive queue (default: 512 in BW test)
   -g, --mcg=<num_of_qps> 		Send messages to multicast group with <num_of_qps> qps attached to it
-  -M, --MGID=<multicast_gid>    In multicast, uses <multicast_gid> as the group MGID
+  -M, --MGID=<multicast_gid>		In multicast, uses <multicast_gid> as the group MGID
 
 ATOMIC tests (ib_atomic_lat or ib_atomic_bw) flags: 
 ---------------------------------------------------
 
-  -A, --atomic_type=<type>	type of atomic operation from {CMP_AND_SWAP,FETCH_AND_ADD}
+  -A, --atomic_type=<type>		type of atomic operation from {CMP_AND_SWAP,FETCH_AND_ADD}
   -o, --outs=<num>			Number of outstanding read/atomic requests - also on READ tests
 
 Options for raw_ethernet_send_bw:
 ---------------------------------
-  -B, --source_mac              source MAC address by this format XX:XX:XX:XX:XX:XX (default take the MAC address form GID)
-  -E, --dest_mac                destination MAC address by this format XX:XX:XX:XX:XX:XX **MUST** be entered
-  -J, --server_ip               server ip address by this format X.X.X.X (using to send packets with IP header)
-  -j, --client_ip               client ip address by this format X.X.X.X (using to send packets with IP header)
-  -K, --server_port             server udp port number (using to send packets with UPD header)
-  -k, --client_port             client udp port number (using to send packets with UDP header)
-  -Z, --server                  choose server side for the current machine (--server/--client must be selected)
-  -P, --client                  choose client side for the current machine (--server/--client must be selected)
+  -B, --source_mac			source MAC address by this format XX:XX:XX:XX:XX:XX (default take the MAC address form GID)
+  -E, --dest_mac			destination MAC address by this format XX:XX:XX:XX:XX:XX **MUST** be entered
+  -J, --server_ip			server ip address by this format X.X.X.X (using to send packets with IP header)
+  -j, --client_ip			client ip address by this format X.X.X.X (using to send packets with IP header)
+  -K, --server_port			server udp port number (using to send packets with UPD header)
+  -k, --client_port			client udp port number (using to send packets with UDP header)
+  -Z, --server				choose server side for the current machine (--server/--client must be selected)
+  -P, --client				choose client side for the current machine (--server/--client must be selected)
 
 ----------------------------------------------
 Special feature detailed explanation in tests:
@@ -225,12 +225,12 @@ Special feature detailed explanation in tests:
 
  2. Bidirectional support in ib_send_bw test, when running in UD or UC mode.
     In rare cases, the benchmark program may hang.
-    This release added a feature for hang detection, which will exit test in those situations.
+    perftest-2.3 release includes a feature for hang detection, which will exit test after 2 mins in those situations.
 
  3. Different versions of perftest may not be compatible with each other.
     Please use the same perftest version on both sides to ensure consistency of benchmark results.
 
- 4. Version 5.2 won't work with previous versions of perftest.
+ 4. Test version 5.3 and above won't work with previous versions of perftest.
 
  5. This perftest package won't compile on MLNX_OFED-2.1 due to API changes in MLNX_OFED-2.2
     In order to compile it properly, please do:
@@ -239,6 +239,7 @@ Special feature detailed explanation in tests:
 
  6. In te x390x platform virtualized environment the results shown by package test applications can be incorrect.
 
- 7. This release includes support for dualport VPI test - port1-Ethernet , port2-IB. (in addition to Eth:Eth, IB:IB)
+ 7. perftest-2.3 release includes support for dualport VPI test - port1-Ethernet , port2-IB. (in addition to Eth:Eth, IB:IB)
     Currently, running dualport when port1-IB , port2-Ethernet still not working.
 
+ 8. for postlist, tests will not finish correctly when using iterations and num_iters/poslist_val has a remainder.
diff --git a/README_sparc b/README_sparc
new file mode 100644
index 0000000..b28a4a7
--- /dev/null
+++ b/README_sparc
@@ -0,0 +1,42 @@
+=======================================
+Build instructions:
+=======================================
+
+# ./autogen.sh
+
+# ./configure --build= --host=sparc64-redhat-linux-gnu
+--target=sparc64-linux --program-prefix= --prefix=/usr
+--exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin
+--sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include
+--libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var
+--sharedstatedir=/var/lib --mandir=/usr/share/man
+--infodir=/usr/share/info
+
+# make clean && make V=1
+
+
+=======================================
+RPM queries:
+=======================================
+
+# rpm --eval %{_target}
+sparc64-linux
+
+# rpm --eval %{_host}
+sparc64-redhat-linux-gnu
+
+
+=======================================
+GCC queries:
+=======================================
+
+Get all the gcc definitions for the platform:
+
+# gcc -E -dM - < /dev/null
+...
+#define __sparc__ 1
+...
+#define __arch64__ 1
+...
+
+
diff --git a/autom4te.cache/output.0 b/autom4te.cache/output.0
index 9118a7d..d7b2e7b 100644
--- a/autom4te.cache/output.0
+++ b/autom4te.cache/output.0
@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.63 for perftest 5.33.
+@%:@ Generated by GNU Autoconf 2.63 for perftest 5.5.
 @%:@
 @%:@ Report bugs to <linux-rdma at vger.kernel.org>.
 @%:@ 
@@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='perftest'
 PACKAGE_TARNAME='perftest'
-PACKAGE_VERSION='5.33'
-PACKAGE_STRING='perftest 5.33'
+PACKAGE_VERSION='5.5'
+PACKAGE_STRING='perftest 5.5'
 PACKAGE_BUGREPORT='linux-rdma at vger.kernel.org'
 
 # Factoring default headers for most tests.
@@ -791,6 +791,10 @@ LTLIBOBJS
 LIB@&t at OBJS
 LIBMATH
 LIBUMAD
+HAVE_ODP_FALSE
+HAVE_ODP_TRUE
+HAVE_ACCL_VERBS_FALSE
+HAVE_ACCL_VERBS_TRUE
 HAVE_DC_FALSE
 HAVE_DC_TRUE
 HAVE_RSS_EXP_FALSE
@@ -811,8 +815,6 @@ HAVE_RAW_ETH_REG_FALSE
 HAVE_RAW_ETH_REG_TRUE
 HAVE_RAW_ETH_EXP_FALSE
 HAVE_RAW_ETH_EXP_TRUE
-HAVE_ODP_FALSE
-HAVE_ODP_TRUE
 CXXCPP
 CPP
 OTOOL64
@@ -821,7 +823,6 @@ LIPO
 NMEDIT
 DSYMUTIL
 lt_ECHO
-RANLIB
 AR
 OBJDUMP
 LN_S
@@ -869,6 +870,7 @@ CPPFLAGS
 LDFLAGS
 CFLAGS
 CC
+RANLIB
 CUDA_H_PATH
 MINOR_VERSION
 MAJOR_VERSION
@@ -951,6 +953,7 @@ enable_libtool_lock
 host_alias
 target_alias
 CUDA_H_PATH
+RANLIB
 CC
 CFLAGS
 LDFLAGS
@@ -1515,7 +1518,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures perftest 5.33 to adapt to many kinds of systems.
+\`configure' configures perftest 5.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1585,7 +1588,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of perftest 5.33:";;
+     short | recursive ) echo "Configuration of perftest 5.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1613,6 +1616,7 @@ Optional Packages:
 
 Some influential environment variables:
   CUDA_H_PATH help-string
+  RANLIB      ranlib tool
   CC          C compiler command
   CFLAGS      C compiler flags
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
@@ -1693,7 +1697,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-perftest configure 5.33
+perftest configure 5.5
 generated by GNU Autoconf 2.63
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1707,7 +1711,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by perftest $as_me 5.33, which was
+It was created by perftest $as_me 5.5, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   $ $0 $@
@@ -2559,7 +2563,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='perftest'
- VERSION='5.33'
+ VERSION='5.5'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2617,6 +2621,7 @@ AM_BACKSLASH='\'
 
 
 
+
 @%:@ Check whether --enable-verbs_exp was given.
 if test "${enable_verbs_exp+set}" = set; then
   enableval=$enable_verbs_exp; 
@@ -15543,6 +15548,98 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 # Only expand once:
 
 
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
 { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
 if test "${ac_cv_header_stdc+set}" = set; then
@@ -16180,72 +16277,6 @@ $as_echo "$as_me: error: libm not found" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <infiniband/verbs.h>
-#include <infiniband/verbs_exp.h>
-int
-main ()
-{
-int x = IBV_EXP_ACCESS_ON_DEMAND;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  HAVE_ODP=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	HAVE_ODP=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
- if test "x$HAVE_ODP" = "xyes"; then
-  HAVE_ODP_TRUE=
-  HAVE_ODP_FALSE='#'
-else
-  HAVE_ODP_TRUE='#'
-  HAVE_ODP_FALSE=
-fi
-
-if test $HAVE_ODP = yes && test $HAVE_ODP = yes; then
-        
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_ODP 1
-_ACEOF
-
-fi
-
-
 
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -16870,6 +16901,136 @@ _ACEOF
 
 fi
 
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <infiniband/verbs.h>
+#include <infiniband/verbs_exp.h>
+int
+main ()
+{
+int x = IBV_EXP_INTF_GLOBAL;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  HAVE_ACCL_VERBS=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	HAVE_ACCL_VERBS=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+ if test "x$HAVE_ACCL_VERBS" = "xyes"; then
+  HAVE_ACCL_VERBS_TRUE=
+  HAVE_ACCL_VERBS_FALSE='#'
+else
+  HAVE_ACCL_VERBS_TRUE='#'
+  HAVE_ACCL_VERBS_FALSE=
+fi
+
+if test $HAVE_ACCL_VERBS = yes && test $HAVE_VERBS_EXP = yes; then
+        
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_ACCL_VERBS 1
+_ACEOF
+
+fi
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <infiniband/verbs.h>
+#include <infiniband/verbs_exp.h>
+int
+main ()
+{
+int x = IBV_EXP_ACCESS_ON_DEMAND;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  HAVE_ODP=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	HAVE_ODP=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+ if test "x$HAVE_ODP" = "xyes"; then
+  HAVE_ODP_TRUE=
+  HAVE_ODP_FALSE='#'
+else
+  HAVE_ODP_TRUE='#'
+  HAVE_ODP_FALSE=
+fi
+
+if test $HAVE_ODP = yes && test $HAVE_VERBS_EXP = yes; then
+        
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_ODP 1
+_ACEOF
+
+fi
+
 if test "$CUDA_H_PATH" ; then
 	
 cat >>confdefs.h <<\_ACEOF
@@ -17029,13 +17190,6 @@ $as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${HAVE_ODP_TRUE}" && test -z "${HAVE_ODP_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ODP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ODP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
 if test -z "${HAVE_RAW_ETH_EXP_TRUE}" && test -z "${HAVE_RAW_ETH_EXP_FALSE}"; then
   { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_RAW_ETH_EXP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -17113,6 +17267,20 @@ $as_echo "$as_me: error: conditional \"HAVE_DC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${HAVE_ACCL_VERBS_TRUE}" && test -z "${HAVE_ACCL_VERBS_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ACCL_VERBS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"HAVE_ACCL_VERBS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_ODP_TRUE}" && test -z "${HAVE_ODP_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ODP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"HAVE_ODP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 
 : ${CONFIG_STATUS=./config.status}
 ac_write_fail=0
@@ -17435,7 +17603,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by perftest $as_me 5.33, which was
+This file was extended by perftest $as_me 5.5, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17498,7 +17666,7 @@ Report bugs to <bug-autoconf at gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_version="\\
-perftest config.status 5.33
+perftest config.status 5.5
 configured by $0, generated by GNU Autoconf 2.63,
   with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/autom4te.cache/output.1 b/autom4te.cache/output.1
index ce03beb..f7d37ae 100644
--- a/autom4te.cache/output.1
+++ b/autom4te.cache/output.1
@@ -1,6 +1,6 @@
 @%:@! /bin/sh
 @%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.63 for perftest 5.33.
+@%:@ Generated by GNU Autoconf 2.63 for perftest 5.5.
 @%:@
 @%:@ Report bugs to <linux-rdma at vger.kernel.org>.
 @%:@ 
@@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='perftest'
 PACKAGE_TARNAME='perftest'
-PACKAGE_VERSION='5.33'
-PACKAGE_STRING='perftest 5.33'
+PACKAGE_VERSION='5.5'
+PACKAGE_STRING='perftest 5.5'
 PACKAGE_BUGREPORT='linux-rdma at vger.kernel.org'
 
 # Factoring default headers for most tests.
@@ -791,6 +791,10 @@ LTLIBOBJS
 LIB@&t at OBJS
 LIBMATH
 LIBUMAD
+HAVE_ODP_FALSE
+HAVE_ODP_TRUE
+HAVE_ACCL_VERBS_FALSE
+HAVE_ACCL_VERBS_TRUE
 HAVE_DC_FALSE
 HAVE_DC_TRUE
 HAVE_RSS_EXP_FALSE
@@ -811,8 +815,6 @@ HAVE_RAW_ETH_REG_FALSE
 HAVE_RAW_ETH_REG_TRUE
 HAVE_RAW_ETH_EXP_FALSE
 HAVE_RAW_ETH_EXP_TRUE
-HAVE_ODP_FALSE
-HAVE_ODP_TRUE
 CXXCPP
 CPP
 OTOOL64
@@ -821,7 +823,6 @@ LIPO
 NMEDIT
 DSYMUTIL
 lt_ECHO
-RANLIB
 AR
 OBJDUMP
 LN_S
@@ -869,6 +870,7 @@ CPPFLAGS
 LDFLAGS
 CFLAGS
 CC
+RANLIB
 CUDA_H_PATH
 MINOR_VERSION
 MAJOR_VERSION
@@ -951,6 +953,7 @@ enable_libtool_lock
 host_alias
 target_alias
 CUDA_H_PATH
+RANLIB
 CC
 CFLAGS
 LDFLAGS
@@ -1515,7 +1518,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures perftest 5.33 to adapt to many kinds of systems.
+\`configure' configures perftest 5.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1585,7 +1588,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of perftest 5.33:";;
+     short | recursive ) echo "Configuration of perftest 5.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1613,6 +1616,7 @@ Optional Packages:
 
 Some influential environment variables:
   CUDA_H_PATH help-string
+  RANLIB      ranlib tool
   CC          C compiler command
   CFLAGS      C compiler flags
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
@@ -1693,7 +1697,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-perftest configure 5.33
+perftest configure 5.5
 generated by GNU Autoconf 2.63
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1707,7 +1711,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by perftest $as_me 5.33, which was
+It was created by perftest $as_me 5.5, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   $ $0 $@
@@ -2559,7 +2563,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='perftest'
- VERSION='5.33'
+ VERSION='5.5'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2617,6 +2621,7 @@ AM_BACKSLASH='\'
 
 
 
+
 @%:@ Check whether --enable-verbs_exp was given.
 if test "${enable_verbs_exp+set}" = set; then
   enableval=$enable_verbs_exp; 
@@ -15539,6 +15544,98 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 # Only expand once:
 
 
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
 { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
 if test "${ac_cv_header_stdc+set}" = set; then
@@ -16176,72 +16273,6 @@ $as_echo "$as_me: error: libm not found" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <infiniband/verbs.h>
-#include <infiniband/verbs_exp.h>
-int
-main ()
-{
-int x = IBV_EXP_ACCESS_ON_DEMAND;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  HAVE_ODP=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	HAVE_ODP=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
- if test "x$HAVE_ODP" = "xyes"; then
-  HAVE_ODP_TRUE=
-  HAVE_ODP_FALSE='#'
-else
-  HAVE_ODP_TRUE='#'
-  HAVE_ODP_FALSE=
-fi
-
-if test $HAVE_ODP = yes && test $HAVE_ODP = yes; then
-        
-cat >>confdefs.h <<\_ACEOF
-@%:@define HAVE_ODP 1
-_ACEOF
-
-fi
-
-
 
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -16866,6 +16897,136 @@ _ACEOF
 
 fi
 
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <infiniband/verbs.h>
+#include <infiniband/verbs_exp.h>
+int
+main ()
+{
+int x = IBV_EXP_INTF_GLOBAL;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  HAVE_ACCL_VERBS=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	HAVE_ACCL_VERBS=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+ if test "x$HAVE_ACCL_VERBS" = "xyes"; then
+  HAVE_ACCL_VERBS_TRUE=
+  HAVE_ACCL_VERBS_FALSE='#'
+else
+  HAVE_ACCL_VERBS_TRUE='#'
+  HAVE_ACCL_VERBS_FALSE=
+fi
+
+if test $HAVE_ACCL_VERBS = yes && test $HAVE_VERBS_EXP = yes; then
+        
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_ACCL_VERBS 1
+_ACEOF
+
+fi
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <infiniband/verbs.h>
+#include <infiniband/verbs_exp.h>
+int
+main ()
+{
+int x = IBV_EXP_ACCESS_ON_DEMAND;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  HAVE_ODP=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	HAVE_ODP=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+ if test "x$HAVE_ODP" = "xyes"; then
+  HAVE_ODP_TRUE=
+  HAVE_ODP_FALSE='#'
+else
+  HAVE_ODP_TRUE='#'
+  HAVE_ODP_FALSE=
+fi
+
+if test $HAVE_ODP = yes && test $HAVE_VERBS_EXP = yes; then
+        
+cat >>confdefs.h <<\_ACEOF
+@%:@define HAVE_ODP 1
+_ACEOF
+
+fi
+
 if test "$CUDA_H_PATH" ; then
 	
 cat >>confdefs.h <<\_ACEOF
@@ -17025,13 +17186,6 @@ $as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${HAVE_ODP_TRUE}" && test -z "${HAVE_ODP_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ODP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ODP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
 if test -z "${HAVE_RAW_ETH_EXP_TRUE}" && test -z "${HAVE_RAW_ETH_EXP_FALSE}"; then
   { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_RAW_ETH_EXP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -17109,6 +17263,20 @@ $as_echo "$as_me: error: conditional \"HAVE_DC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${HAVE_ACCL_VERBS_TRUE}" && test -z "${HAVE_ACCL_VERBS_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ACCL_VERBS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"HAVE_ACCL_VERBS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_ODP_TRUE}" && test -z "${HAVE_ODP_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ODP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"HAVE_ODP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 
 : ${CONFIG_STATUS=./config.status}
 ac_write_fail=0
@@ -17431,7 +17599,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by perftest $as_me 5.33, which was
+This file was extended by perftest $as_me 5.5, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17494,7 +17662,7 @@ Report bugs to <bug-autoconf at gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_version="\\
-perftest config.status 5.33
+perftest config.status 5.5
 configured by $0, generated by GNU Autoconf 2.63,
   with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0
index 026045d..625eb17 100644
--- a/autom4te.cache/traces.0
+++ b/autom4te.cache/traces.0
@@ -2216,285 +2216,296 @@ m4trace:configure.ac:19: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH])
 m4trace:configure.ac:21: -1- m4_pattern_allow([^MAJOR_VERSION$])
 m4trace:configure.ac:22: -1- m4_pattern_allow([^MINOR_VERSION$])
 m4trace:configure.ac:24: -1- m4_pattern_allow([^CUDA_H_PATH$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^EXEEXT$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^OBJEXT$])
-m4trace:configure.ac:35: -1- _AM_DEPENDENCIES([CC])
-m4trace:configure.ac:35: -1- AM_SET_DEPDIR
-m4trace:configure.ac:35: -1- m4_pattern_allow([^DEPDIR$])
-m4trace:configure.ac:35: -1- AM_OUTPUT_DEPENDENCY_COMMANDS
-m4trace:configure.ac:35: -1- AM_MAKE_INCLUDE
-m4trace:configure.ac:35: -1- m4_pattern_allow([^am__include$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^am__quote$])
-m4trace:configure.ac:35: -1- AM_DEP_TRACK
-m4trace:configure.ac:35: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^AMDEP_TRUE$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^AMDEP_FALSE$])
-m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
-m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
-m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CCDEPMODE$])
-m4trace:configure.ac:35: -1- AM_CONDITIONAL([am__fastdepCC], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
-m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
-m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CFLAGS$])
 m4trace:configure.ac:36: -1- m4_pattern_allow([^LDFLAGS$])
 m4trace:configure.ac:36: -1- m4_pattern_allow([^LIBS$])
 m4trace:configure.ac:36: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^ac_ct_CXX$])
-m4trace:configure.ac:36: -1- _AM_DEPENDENCIES([CXX])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^CXXDEPMODE$])
-m4trace:configure.ac:36: -1- AM_CONDITIONAL([am__fastdepCXX], [
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:36: -1- _AM_DEPENDENCIES([CC])
+m4trace:configure.ac:36: -1- AM_SET_DEPDIR
+m4trace:configure.ac:36: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.ac:36: -1- AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:36: -1- AM_MAKE_INCLUDE
+m4trace:configure.ac:36: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^am__quote$])
+m4trace:configure.ac:36: -1- AM_DEP_TRACK
+m4trace:configure.ac:36: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:36: -1- AM_CONDITIONAL([am__fastdepCC], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:37: -1- _AM_DEPENDENCIES([CXX])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^CXXDEPMODE$])
+m4trace:configure.ac:37: -1- AM_CONDITIONAL([am__fastdepCXX], [
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
-m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
-m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
-m4trace:configure.ac:37: -1- AM_PROG_AS
-m4trace:configure.ac:37: -1- m4_pattern_allow([^CCAS$])
-m4trace:configure.ac:37: -1- m4_pattern_allow([^CCASFLAGS$])
-m4trace:configure.ac:37: -1- _AM_IF_OPTION([no-dependencies], [], [_AM_DEPENDENCIES([CCAS])])
-m4trace:configure.ac:37: -2- _AM_MANGLE_OPTION([no-dependencies])
-m4trace:configure.ac:37: -1- _AM_DEPENDENCIES([CCAS])
-m4trace:configure.ac:37: -1- m4_pattern_allow([^CCASDEPMODE$])
-m4trace:configure.ac:37: -1- AM_CONDITIONAL([am__fastdepCCAS], [
+m4trace:configure.ac:37: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
+m4trace:configure.ac:37: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:37: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:38: -1- AM_PROG_AS
+m4trace:configure.ac:38: -1- m4_pattern_allow([^CCAS$])
+m4trace:configure.ac:38: -1- m4_pattern_allow([^CCASFLAGS$])
+m4trace:configure.ac:38: -1- _AM_IF_OPTION([no-dependencies], [], [_AM_DEPENDENCIES([CCAS])])
+m4trace:configure.ac:38: -2- _AM_MANGLE_OPTION([no-dependencies])
+m4trace:configure.ac:38: -1- _AM_DEPENDENCIES([CCAS])
+m4trace:configure.ac:38: -1- m4_pattern_allow([^CCASDEPMODE$])
+m4trace:configure.ac:38: -1- AM_CONDITIONAL([am__fastdepCCAS], [
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:37: -1- m4_pattern_allow([^am__fastdepCCAS_TRUE$])
-m4trace:configure.ac:37: -1- m4_pattern_allow([^am__fastdepCCAS_FALSE$])
-m4trace:configure.ac:37: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_TRUE])
-m4trace:configure.ac:37: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_FALSE])
-m4trace:configure.ac:38: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
-m4trace:configure.ac:38: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
-m4trace:configure.ac:38: -1- m4_pattern_allow([^INSTALL_DATA$])
-m4trace:configure.ac:39: -1- AC_PROG_LIBTOOL
-m4trace:configure.ac:39: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
+m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCCAS_TRUE$])
+m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCCAS_FALSE$])
+m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_TRUE])
+m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_FALSE])
+m4trace:configure.ac:39: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.ac:39: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.ac:39: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.ac:40: -1- AC_PROG_LIBTOOL
+m4trace:configure.ac:40: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
 You should run autoupdate.], [/usr/share/aclocal/libtool.m4:102: AC_PROG_LIBTOOL is expanded from...
-configure.ac:39: the top level])
-m4trace:configure.ac:39: -1- LT_INIT
-m4trace:configure.ac:39: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
-m4trace:configure.ac:39: -1- LTOPTIONS_VERSION
-m4trace:configure.ac:39: -1- LTSUGAR_VERSION
-m4trace:configure.ac:39: -1- LTVERSION_VERSION
-m4trace:configure.ac:39: -1- LTOBSOLETE_VERSION
-m4trace:configure.ac:39: -1- _LT_PROG_LTMAIN
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LIBTOOL$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^build$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^build_cpu$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^build_vendor$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^build_os$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^host$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^host_cpu$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^host_vendor$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^host_os$])
-m4trace:configure.ac:39: -1- LT_PATH_LD
-m4trace:configure.ac:39: -1- m4_pattern_allow([^SED$])
-m4trace:configure.ac:39: -1- AC_PROG_EGREP
-m4trace:configure.ac:39: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^EGREP$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^FGREP$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LD$])
-m4trace:configure.ac:39: -1- LT_PATH_NM
-m4trace:configure.ac:39: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^NM$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LN_S$])
-m4trace:configure.ac:39: -1- LT_CMD_MAX_LEN
-m4trace:configure.ac:39: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^AR$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^RANLIB$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([LT_OBJDIR])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LT_OBJDIR$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^lt_ECHO$])
-m4trace:configure.ac:39: -1- _LT_CC_BASENAME([$compiler])
-m4trace:configure.ac:39: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH])
-m4trace:configure.ac:39: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH])
-m4trace:configure.ac:39: -1- LT_SUPPORTED_TAG([CC])
-m4trace:configure.ac:39: -1- _LT_COMPILER_BOILERPLATE
-m4trace:configure.ac:39: -1- _LT_LINKER_BOILERPLATE
-m4trace:configure.ac:39: -1- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"])
-m4trace:configure.ac:39: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t at m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in
+configure.ac:40: the top level])
+m4trace:configure.ac:40: -1- LT_INIT
+m4trace:configure.ac:40: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
+m4trace:configure.ac:40: -1- LTOPTIONS_VERSION
+m4trace:configure.ac:40: -1- LTSUGAR_VERSION
+m4trace:configure.ac:40: -1- LTVERSION_VERSION
+m4trace:configure.ac:40: -1- LTOBSOLETE_VERSION
+m4trace:configure.ac:40: -1- _LT_PROG_LTMAIN
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LIBTOOL$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^build$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^host$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:40: -1- LT_PATH_LD
+m4trace:configure.ac:40: -1- m4_pattern_allow([^SED$])
+m4trace:configure.ac:40: -1- AC_PROG_EGREP
+m4trace:configure.ac:40: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^FGREP$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:40: -1- LT_PATH_NM
+m4trace:configure.ac:40: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:40: -1- LT_CMD_MAX_LEN
+m4trace:configure.ac:40: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([LT_OBJDIR])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LT_OBJDIR$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^lt_ECHO$])
+m4trace:configure.ac:40: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:40: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:40: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH])
+m4trace:configure.ac:40: -1- LT_SUPPORTED_TAG([CC])
+m4trace:configure.ac:40: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:40: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:40: -1- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"])
+m4trace:configure.ac:40: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t at m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in
      "" | " "*) ;;
      *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;;
      esac], [_LT_TAGVAR(lt_prog_compiler_pic, )=
      _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no])
-m4trace:configure.ac:39: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^DSYMUTIL$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^NMEDIT$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LIPO$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^OTOOL$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^OTOOL64$])
-m4trace:configure.ac:39: -1- LT_SYS_DLOPEN_SELF
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:39: -1- LT_LANG([CXX])
-m4trace:configure.ac:39: -1- LT_SUPPORTED_TAG([CXX])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CXXFLAGS$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^ac_ct_CXX$])
-m4trace:configure.ac:39: -1- _AM_DEPENDENCIES([CXX])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CXXDEPMODE$])
-m4trace:configure.ac:39: -1- AM_CONDITIONAL([am__fastdepCXX], [
+m4trace:configure.ac:40: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^DSYMUTIL$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^NMEDIT$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LIPO$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^OTOOL$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^OTOOL64$])
+m4trace:configure.ac:40: -1- LT_SYS_DLOPEN_SELF
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:40: -1- LT_LANG([CXX])
+m4trace:configure.ac:40: -1- LT_SUPPORTED_TAG([CXX])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:40: -1- _AM_DEPENDENCIES([CXX])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CXXDEPMODE$])
+m4trace:configure.ac:40: -1- AM_CONDITIONAL([am__fastdepCXX], [
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
-m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
-m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CXXCPP$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CXXCPP$])
-m4trace:configure.ac:39: -1- _LT_COMPILER_BOILERPLATE
-m4trace:configure.ac:39: -1- _LT_LINKER_BOILERPLATE
-m4trace:configure.ac:39: -1- _LT_CC_BASENAME([$compiler])
-m4trace:configure.ac:39: -1- LT_PATH_LD
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LD$])
-m4trace:configure.ac:39: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, CXX) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, CXX)], [$_LT_TAGVAR(lt_prog_compiler_pic, CXX)@&t at m4_if([CXX],[],[ -DPIC],[m4_if([CXX],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, CXX) in
+m4trace:configure.ac:40: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
+m4trace:configure.ac:40: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:40: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:40: -1- _LT_COMPILER_BOILERPLATE
+m4trace:configure.ac:40: -1- _LT_LINKER_BOILERPLATE
+m4trace:configure.ac:40: -1- _LT_CC_BASENAME([$compiler])
+m4trace:configure.ac:40: -1- LT_PATH_LD
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:40: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, CXX) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, CXX)], [$_LT_TAGVAR(lt_prog_compiler_pic, CXX)@&t at m4_if([CXX],[],[ -DPIC],[m4_if([CXX],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, CXX) in
      "" | " "*) ;;
      *) _LT_TAGVAR(lt_prog_compiler_pic, CXX)=" $_LT_TAGVAR(lt_prog_compiler_pic, CXX)" ;;
      esac], [_LT_TAGVAR(lt_prog_compiler_pic, CXX)=
      _LT_TAGVAR(lt_prog_compiler_can_build_shared, CXX)=no])
-m4trace:configure.ac:39: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_CXX], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, CXX)=])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:42: -1- m4_pattern_allow([^HAVE_LIBIBVERBS$])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBRDMACM$])
-m4trace:configure.ac:46: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.ac:40: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_CXX], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, CXX)=])
+m4trace:configure.ac:41: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:42: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:44: -1- m4_pattern_allow([^HAVE_LIBIBVERBS$])
+m4trace:configure.ac:45: -1- m4_pattern_allow([^HAVE_LIBRDMACM$])
+m4trace:configure.ac:49: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
-configure.ac:46: the top level])
-m4trace:configure.ac:50: -1- AM_CONDITIONAL([HAVE_ODP], [test "x$HAVE_ODP" = "xyes"])
-m4trace:configure.ac:50: -1- m4_pattern_allow([^HAVE_ODP_TRUE$])
-m4trace:configure.ac:50: -1- m4_pattern_allow([^HAVE_ODP_FALSE$])
-m4trace:configure.ac:50: -1- _AM_SUBST_NOTMAKE([HAVE_ODP_TRUE])
-m4trace:configure.ac:50: -1- _AM_SUBST_NOTMAKE([HAVE_ODP_FALSE])
-m4trace:configure.ac:52: -1- m4_pattern_allow([^HAVE_ODP$])
+configure.ac:49: the top level])
+m4trace:configure.ac:52: -1- AM_CONDITIONAL([HAVE_RAW_ETH_EXP], [test "x$HAVE_RAW_ETH_EXP" = "xyes"])
+m4trace:configure.ac:52: -1- m4_pattern_allow([^HAVE_RAW_ETH_EXP_TRUE$])
+m4trace:configure.ac:52: -1- m4_pattern_allow([^HAVE_RAW_ETH_EXP_FALSE$])
+m4trace:configure.ac:52: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_EXP_TRUE])
+m4trace:configure.ac:52: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_EXP_FALSE])
+m4trace:configure.ac:54: -1- m4_pattern_allow([^HAVE_RAW_ETH_EXP$])
 m4trace:configure.ac:57: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
 configure.ac:57: the top level])
-m4trace:configure.ac:60: -1- AM_CONDITIONAL([HAVE_RAW_ETH_EXP], [test "x$HAVE_RAW_ETH_EXP" = "xyes"])
-m4trace:configure.ac:60: -1- m4_pattern_allow([^HAVE_RAW_ETH_EXP_TRUE$])
-m4trace:configure.ac:60: -1- m4_pattern_allow([^HAVE_RAW_ETH_EXP_FALSE$])
-m4trace:configure.ac:60: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_EXP_TRUE])
-m4trace:configure.ac:60: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_EXP_FALSE])
-m4trace:configure.ac:62: -1- m4_pattern_allow([^HAVE_RAW_ETH_EXP$])
-m4trace:configure.ac:65: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.ac:60: -1- AM_CONDITIONAL([HAVE_RAW_ETH_REG], [test "x$HAVE_RAW_ETH_REG" = "xyes"])
+m4trace:configure.ac:60: -1- m4_pattern_allow([^HAVE_RAW_ETH_REG_TRUE$])
+m4trace:configure.ac:60: -1- m4_pattern_allow([^HAVE_RAW_ETH_REG_FALSE$])
+m4trace:configure.ac:60: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_REG_TRUE])
+m4trace:configure.ac:60: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_REG_FALSE])
+m4trace:configure.ac:62: -1- m4_pattern_allow([^HAVE_RAW_ETH_REG$])
+m4trace:configure.ac:65: -1- AM_CONDITIONAL([HAVE_RAW_ETH], [true])
+m4trace:configure.ac:65: -1- m4_pattern_allow([^HAVE_RAW_ETH_TRUE$])
+m4trace:configure.ac:65: -1- m4_pattern_allow([^HAVE_RAW_ETH_FALSE$])
+m4trace:configure.ac:65: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_TRUE])
+m4trace:configure.ac:65: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_FALSE])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_RAW_ETH$])
+m4trace:configure.ac:69: -1- AM_CONDITIONAL([HAVE_RAW_ETH], [false])
+m4trace:configure.ac:69: -1- m4_pattern_allow([^HAVE_RAW_ETH_TRUE$])
+m4trace:configure.ac:69: -1- m4_pattern_allow([^HAVE_RAW_ETH_FALSE$])
+m4trace:configure.ac:69: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_TRUE])
+m4trace:configure.ac:69: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_FALSE])
+m4trace:configure.ac:73: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
-configure.ac:65: the top level])
-m4trace:configure.ac:68: -1- AM_CONDITIONAL([HAVE_RAW_ETH_REG], [test "x$HAVE_RAW_ETH_REG" = "xyes"])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^HAVE_RAW_ETH_REG_TRUE$])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^HAVE_RAW_ETH_REG_FALSE$])
-m4trace:configure.ac:68: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_REG_TRUE])
-m4trace:configure.ac:68: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_REG_FALSE])
-m4trace:configure.ac:70: -1- m4_pattern_allow([^HAVE_RAW_ETH_REG$])
-m4trace:configure.ac:73: -1- AM_CONDITIONAL([HAVE_RAW_ETH], [true])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^HAVE_RAW_ETH_TRUE$])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^HAVE_RAW_ETH_FALSE$])
-m4trace:configure.ac:73: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_TRUE])
-m4trace:configure.ac:73: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_FALSE])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^HAVE_RAW_ETH$])
-m4trace:configure.ac:77: -1- AM_CONDITIONAL([HAVE_RAW_ETH], [false])
-m4trace:configure.ac:77: -1- m4_pattern_allow([^HAVE_RAW_ETH_TRUE$])
-m4trace:configure.ac:77: -1- m4_pattern_allow([^HAVE_RAW_ETH_FALSE$])
-m4trace:configure.ac:77: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_TRUE])
-m4trace:configure.ac:77: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_FALSE])
+configure.ac:73: the top level])
+m4trace:configure.ac:76: -1- AM_CONDITIONAL([HAVE_XRCD], [test "x$HAVE_XRCD" = "xyes"])
+m4trace:configure.ac:76: -1- m4_pattern_allow([^HAVE_XRCD_TRUE$])
+m4trace:configure.ac:76: -1- m4_pattern_allow([^HAVE_XRCD_FALSE$])
+m4trace:configure.ac:76: -1- _AM_SUBST_NOTMAKE([HAVE_XRCD_TRUE])
+m4trace:configure.ac:76: -1- _AM_SUBST_NOTMAKE([HAVE_XRCD_FALSE])
+m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_XRCD$])
 m4trace:configure.ac:81: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
 configure.ac:81: the top level])
-m4trace:configure.ac:84: -1- AM_CONDITIONAL([HAVE_XRCD], [test "x$HAVE_XRCD" = "xyes"])
-m4trace:configure.ac:84: -1- m4_pattern_allow([^HAVE_XRCD_TRUE$])
-m4trace:configure.ac:84: -1- m4_pattern_allow([^HAVE_XRCD_FALSE$])
-m4trace:configure.ac:84: -1- _AM_SUBST_NOTMAKE([HAVE_XRCD_TRUE])
-m4trace:configure.ac:84: -1- _AM_SUBST_NOTMAKE([HAVE_XRCD_FALSE])
-m4trace:configure.ac:86: -1- m4_pattern_allow([^HAVE_XRCD$])
+m4trace:configure.ac:84: -1- AM_CONDITIONAL([HAVE_ENDIAN], [test "x$HAVE_ENDIAN" = "xyes"])
+m4trace:configure.ac:84: -1- m4_pattern_allow([^HAVE_ENDIAN_TRUE$])
+m4trace:configure.ac:84: -1- m4_pattern_allow([^HAVE_ENDIAN_FALSE$])
+m4trace:configure.ac:84: -1- _AM_SUBST_NOTMAKE([HAVE_ENDIAN_TRUE])
+m4trace:configure.ac:84: -1- _AM_SUBST_NOTMAKE([HAVE_ENDIAN_FALSE])
+m4trace:configure.ac:86: -1- m4_pattern_allow([^HAVE_ENDIAN$])
 m4trace:configure.ac:89: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
 configure.ac:89: the top level])
-m4trace:configure.ac:92: -1- AM_CONDITIONAL([HAVE_ENDIAN], [test "x$HAVE_ENDIAN" = "xyes"])
-m4trace:configure.ac:92: -1- m4_pattern_allow([^HAVE_ENDIAN_TRUE$])
-m4trace:configure.ac:92: -1- m4_pattern_allow([^HAVE_ENDIAN_FALSE$])
-m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([HAVE_ENDIAN_TRUE])
-m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([HAVE_ENDIAN_FALSE])
-m4trace:configure.ac:94: -1- m4_pattern_allow([^HAVE_ENDIAN$])
-m4trace:configure.ac:97: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.ac:92: -1- AM_CONDITIONAL([HAVE_SCIF], [test "x$HAVE_SCIF" = "xyes"])
+m4trace:configure.ac:92: -1- m4_pattern_allow([^HAVE_SCIF_TRUE$])
+m4trace:configure.ac:92: -1- m4_pattern_allow([^HAVE_SCIF_FALSE$])
+m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([HAVE_SCIF_TRUE])
+m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([HAVE_SCIF_FALSE])
+m4trace:configure.ac:94: -1- m4_pattern_allow([^HAVE_SCIF$])
+m4trace:configure.ac:98: -1- AM_CONDITIONAL([HAVE_VERBS_EXP], [test "x$HAVE_VERBS_EXP" = "xyes"])
+m4trace:configure.ac:98: -1- m4_pattern_allow([^HAVE_VERBS_EXP_TRUE$])
+m4trace:configure.ac:98: -1- m4_pattern_allow([^HAVE_VERBS_EXP_FALSE$])
+m4trace:configure.ac:98: -1- _AM_SUBST_NOTMAKE([HAVE_VERBS_EXP_TRUE])
+m4trace:configure.ac:98: -1- _AM_SUBST_NOTMAKE([HAVE_VERBS_EXP_FALSE])
+m4trace:configure.ac:100: -1- m4_pattern_allow([^HAVE_VERBS_EXP$])
+m4trace:configure.ac:105: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
+configure.ac:105: the top level])
+m4trace:configure.ac:109: -1- AM_CONDITIONAL([HAVE_MASKED_ATOMICS], [test "x$HAVE_MASKED_ATOMICS" = "xyes"])
+m4trace:configure.ac:109: -1- m4_pattern_allow([^HAVE_MASKED_ATOMICS_TRUE$])
+m4trace:configure.ac:109: -1- m4_pattern_allow([^HAVE_MASKED_ATOMICS_FALSE$])
+m4trace:configure.ac:109: -1- _AM_SUBST_NOTMAKE([HAVE_MASKED_ATOMICS_TRUE])
+m4trace:configure.ac:109: -1- _AM_SUBST_NOTMAKE([HAVE_MASKED_ATOMICS_FALSE])
+m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_MASKED_ATOMICS$])
+m4trace:configure.ac:114: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
-configure.ac:97: the top level])
-m4trace:configure.ac:100: -1- AM_CONDITIONAL([HAVE_SCIF], [test "x$HAVE_SCIF" = "xyes"])
-m4trace:configure.ac:100: -1- m4_pattern_allow([^HAVE_SCIF_TRUE$])
-m4trace:configure.ac:100: -1- m4_pattern_allow([^HAVE_SCIF_FALSE$])
-m4trace:configure.ac:100: -1- _AM_SUBST_NOTMAKE([HAVE_SCIF_TRUE])
-m4trace:configure.ac:100: -1- _AM_SUBST_NOTMAKE([HAVE_SCIF_FALSE])
-m4trace:configure.ac:102: -1- m4_pattern_allow([^HAVE_SCIF$])
-m4trace:configure.ac:106: -1- AM_CONDITIONAL([HAVE_VERBS_EXP], [test "x$HAVE_VERBS_EXP" = "xyes"])
-m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_VERBS_EXP_TRUE$])
-m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_VERBS_EXP_FALSE$])
-m4trace:configure.ac:106: -1- _AM_SUBST_NOTMAKE([HAVE_VERBS_EXP_TRUE])
-m4trace:configure.ac:106: -1- _AM_SUBST_NOTMAKE([HAVE_VERBS_EXP_FALSE])
-m4trace:configure.ac:108: -1- m4_pattern_allow([^HAVE_VERBS_EXP$])
-m4trace:configure.ac:113: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+configure.ac:114: the top level])
+m4trace:configure.ac:118: -1- AM_CONDITIONAL([HAVE_RSS_EXP], [test "x$HAVE_RSS_EXP" = "xyes"])
+m4trace:configure.ac:118: -1- m4_pattern_allow([^HAVE_RSS_EXP_TRUE$])
+m4trace:configure.ac:118: -1- m4_pattern_allow([^HAVE_RSS_EXP_FALSE$])
+m4trace:configure.ac:118: -1- _AM_SUBST_NOTMAKE([HAVE_RSS_EXP_TRUE])
+m4trace:configure.ac:118: -1- _AM_SUBST_NOTMAKE([HAVE_RSS_EXP_FALSE])
+m4trace:configure.ac:120: -1- m4_pattern_allow([^HAVE_RSS_EXP$])
+m4trace:configure.ac:123: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
-configure.ac:113: the top level])
-m4trace:configure.ac:117: -1- AM_CONDITIONAL([HAVE_MASKED_ATOMICS], [test "x$HAVE_MASKED_ATOMICS" = "xyes"])
-m4trace:configure.ac:117: -1- m4_pattern_allow([^HAVE_MASKED_ATOMICS_TRUE$])
-m4trace:configure.ac:117: -1- m4_pattern_allow([^HAVE_MASKED_ATOMICS_FALSE$])
-m4trace:configure.ac:117: -1- _AM_SUBST_NOTMAKE([HAVE_MASKED_ATOMICS_TRUE])
-m4trace:configure.ac:117: -1- _AM_SUBST_NOTMAKE([HAVE_MASKED_ATOMICS_FALSE])
-m4trace:configure.ac:119: -1- m4_pattern_allow([^HAVE_MASKED_ATOMICS$])
-m4trace:configure.ac:122: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+configure.ac:123: the top level])
+m4trace:configure.ac:127: -1- AM_CONDITIONAL([HAVE_DC], [test "x$HAVE_DC" = "xyes"])
+m4trace:configure.ac:127: -1- m4_pattern_allow([^HAVE_DC_TRUE$])
+m4trace:configure.ac:127: -1- m4_pattern_allow([^HAVE_DC_FALSE$])
+m4trace:configure.ac:127: -1- _AM_SUBST_NOTMAKE([HAVE_DC_TRUE])
+m4trace:configure.ac:127: -1- _AM_SUBST_NOTMAKE([HAVE_DC_FALSE])
+m4trace:configure.ac:129: -1- m4_pattern_allow([^HAVE_DC$])
+m4trace:configure.ac:132: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
-configure.ac:122: the top level])
-m4trace:configure.ac:126: -1- AM_CONDITIONAL([HAVE_RSS_EXP], [test "x$HAVE_RSS_EXP" = "xyes"])
-m4trace:configure.ac:126: -1- m4_pattern_allow([^HAVE_RSS_EXP_TRUE$])
-m4trace:configure.ac:126: -1- m4_pattern_allow([^HAVE_RSS_EXP_FALSE$])
-m4trace:configure.ac:126: -1- _AM_SUBST_NOTMAKE([HAVE_RSS_EXP_TRUE])
-m4trace:configure.ac:126: -1- _AM_SUBST_NOTMAKE([HAVE_RSS_EXP_FALSE])
-m4trace:configure.ac:128: -1- m4_pattern_allow([^HAVE_RSS_EXP$])
-m4trace:configure.ac:131: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+configure.ac:132: the top level])
+m4trace:configure.ac:136: -1- AM_CONDITIONAL([HAVE_ACCL_VERBS], [test "x$HAVE_ACCL_VERBS" = "xyes"])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_ACCL_VERBS_TRUE$])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_ACCL_VERBS_FALSE$])
+m4trace:configure.ac:136: -1- _AM_SUBST_NOTMAKE([HAVE_ACCL_VERBS_TRUE])
+m4trace:configure.ac:136: -1- _AM_SUBST_NOTMAKE([HAVE_ACCL_VERBS_FALSE])
+m4trace:configure.ac:138: -1- m4_pattern_allow([^HAVE_ACCL_VERBS$])
+m4trace:configure.ac:141: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
-configure.ac:131: the top level])
-m4trace:configure.ac:135: -1- AM_CONDITIONAL([HAVE_DC], [test "x$HAVE_DC" = "xyes"])
-m4trace:configure.ac:135: -1- m4_pattern_allow([^HAVE_DC_TRUE$])
-m4trace:configure.ac:135: -1- m4_pattern_allow([^HAVE_DC_FALSE$])
-m4trace:configure.ac:135: -1- _AM_SUBST_NOTMAKE([HAVE_DC_TRUE])
-m4trace:configure.ac:135: -1- _AM_SUBST_NOTMAKE([HAVE_DC_FALSE])
-m4trace:configure.ac:137: -1- m4_pattern_allow([^HAVE_DC$])
-m4trace:configure.ac:141: -1- m4_pattern_allow([^HAVE_CUDA$])
-m4trace:configure.ac:142: -1- m4_pattern_allow([^CUDA_PATH$])
-m4trace:configure.ac:147: -1- m4_pattern_allow([^LIBUMAD$])
-m4trace:configure.ac:148: -1- m4_pattern_allow([^LIBMATH$])
-m4trace:configure.ac:150: -1- m4_pattern_allow([^LIB@&t at OBJS$])
-m4trace:configure.ac:150: -1- m4_pattern_allow([^LTLIBOBJS$])
-m4trace:configure.ac:150: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
-m4trace:configure.ac:150: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
-m4trace:configure.ac:150: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
-m4trace:configure.ac:150: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
-m4trace:configure.ac:150: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
-m4trace:configure.ac:150: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
-m4trace:configure.ac:150: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
-m4trace:configure.ac:150: -1- _LT_PROG_LTMAIN
+configure.ac:141: the top level])
+m4trace:configure.ac:145: -1- AM_CONDITIONAL([HAVE_ODP], [test "x$HAVE_ODP" = "xyes"])
+m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_ODP_TRUE$])
+m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_ODP_FALSE$])
+m4trace:configure.ac:145: -1- _AM_SUBST_NOTMAKE([HAVE_ODP_TRUE])
+m4trace:configure.ac:145: -1- _AM_SUBST_NOTMAKE([HAVE_ODP_FALSE])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^HAVE_ODP$])
+m4trace:configure.ac:151: -1- m4_pattern_allow([^HAVE_CUDA$])
+m4trace:configure.ac:152: -1- m4_pattern_allow([^CUDA_PATH$])
+m4trace:configure.ac:157: -1- m4_pattern_allow([^LIBUMAD$])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^LIBMATH$])
+m4trace:configure.ac:160: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.ac:160: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:160: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.ac:160: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.ac:160: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.ac:160: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"])
+m4trace:configure.ac:160: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS
+m4trace:configure.ac:160: -1- _LT_PROG_LTMAIN
diff --git a/autom4te.cache/traces.1 b/autom4te.cache/traces.1
index 4eededc..59abe99 100644
--- a/autom4te.cache/traces.1
+++ b/autom4te.cache/traces.1
@@ -1,4 +1,4 @@
-m4trace:configure.ac:14: -1- AC_INIT([perftest], [5.33], [linux-rdma at vger.kernel.org])
+m4trace:configure.ac:14: -1- AC_INIT([perftest], [5.5], [linux-rdma at vger.kernel.org])
 m4trace:configure.ac:14: -1- m4_pattern_forbid([^_?A[CHUM]_])
 m4trace:configure.ac:14: -1- m4_pattern_forbid([_AC_])
 m4trace:configure.ac:14: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
@@ -242,84 +242,15 @@ m4trace:configure.ac:22: -1- m4_pattern_allow([^MINOR_VERSION$])
 m4trace:configure.ac:24: -1- AC_SUBST([CUDA_H_PATH])
 m4trace:configure.ac:24: -1- AC_SUBST_TRACE([CUDA_H_PATH])
 m4trace:configure.ac:24: -1- m4_pattern_allow([^CUDA_H_PATH$])
-m4trace:configure.ac:35: -1- AC_SUBST([CC])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:35: -1- AC_SUBST([CFLAGS])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CFLAGS])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CFLAGS$])
-m4trace:configure.ac:35: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:35: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:35: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:35: -1- AC_SUBST([CC])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:35: -1- AC_SUBST([CC])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:35: -1- AC_SUBST([CC])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:35: -1- AC_SUBST([CC])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CC])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CC$])
-m4trace:configure.ac:35: -1- AC_SUBST([ac_ct_CC])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([ac_ct_CC])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^ac_ct_CC$])
-m4trace:configure.ac:35: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([EXEEXT])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^EXEEXT$])
-m4trace:configure.ac:35: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([OBJEXT])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^OBJEXT$])
-m4trace:configure.ac:35: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([DEPDIR])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^DEPDIR$])
-m4trace:configure.ac:35: -1- AC_SUBST([am__include])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__include])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^am__include$])
-m4trace:configure.ac:35: -1- AC_SUBST([am__quote])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__quote])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^am__quote$])
-m4trace:configure.ac:35: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-m4trace:configure.ac:35: -1- AC_SUBST([AMDEP_TRUE])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMDEP_TRUE])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^AMDEP_TRUE$])
-m4trace:configure.ac:35: -1- AC_SUBST([AMDEP_FALSE])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMDEP_FALSE])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^AMDEP_FALSE$])
-m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
-m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
-m4trace:configure.ac:35: -1- AC_SUBST([AMDEPBACKSLASH])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
-m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
-m4trace:configure.ac:35: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([CCDEPMODE])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^CCDEPMODE$])
-m4trace:configure.ac:35: -1- AM_CONDITIONAL([am__fastdepCC], [
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:35: -1- AC_SUBST([am__fastdepCC_TRUE])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
-m4trace:configure.ac:35: -1- AC_SUBST([am__fastdepCC_FALSE])
-m4trace:configure.ac:35: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
-m4trace:configure.ac:35: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
-m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
-m4trace:configure.ac:35: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
-m4trace:configure.ac:36: -1- AC_SUBST([CXX])
-m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CXX])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:36: -1- AC_SUBST([CXXFLAGS])
-m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CXXFLAGS])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:25: -1- AC_SUBST([RANLIB])
+m4trace:configure.ac:25: -1- AC_SUBST_TRACE([RANLIB])
+m4trace:configure.ac:25: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:36: -1- AC_SUBST([CC])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:36: -1- AC_SUBST([CFLAGS])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CFLAGS$])
 m4trace:configure.ac:36: -1- AC_SUBST([LDFLAGS])
 m4trace:configure.ac:36: -1- AC_SUBST_TRACE([LDFLAGS])
 m4trace:configure.ac:36: -1- m4_pattern_allow([^LDFLAGS$])
@@ -329,483 +260,574 @@ m4trace:configure.ac:36: -1- m4_pattern_allow([^LIBS$])
 m4trace:configure.ac:36: -1- AC_SUBST([CPPFLAGS])
 m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CPPFLAGS])
 m4trace:configure.ac:36: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:36: -1- AC_SUBST([CXX])
-m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CXX])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:36: -1- AC_SUBST([ac_ct_CXX])
-m4trace:configure.ac:36: -1- AC_SUBST_TRACE([ac_ct_CXX])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^ac_ct_CXX$])
-m4trace:configure.ac:36: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
-m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CXXDEPMODE])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^CXXDEPMODE$])
-m4trace:configure.ac:36: -1- AM_CONDITIONAL([am__fastdepCXX], [
+m4trace:configure.ac:36: -1- AC_SUBST([CC])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:36: -1- AC_SUBST([CC])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:36: -1- AC_SUBST([CC])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:36: -1- AC_SUBST([CC])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:36: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([ac_ct_CC])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:36: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([EXEEXT])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:36: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([OBJEXT])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:36: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([DEPDIR])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^DEPDIR$])
+m4trace:configure.ac:36: -1- AC_SUBST([am__include])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([am__include])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^am__include$])
+m4trace:configure.ac:36: -1- AC_SUBST([am__quote])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([am__quote])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^am__quote$])
+m4trace:configure.ac:36: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+m4trace:configure.ac:36: -1- AC_SUBST([AMDEP_TRUE])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([AMDEP_TRUE])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^AMDEP_TRUE$])
+m4trace:configure.ac:36: -1- AC_SUBST([AMDEP_FALSE])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([AMDEP_FALSE])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^AMDEP_FALSE$])
+m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE])
+m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE])
+m4trace:configure.ac:36: -1- AC_SUBST([AMDEPBACKSLASH])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([AMDEPBACKSLASH])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^AMDEPBACKSLASH$])
+m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])
+m4trace:configure.ac:36: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([CCDEPMODE])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^CCDEPMODE$])
+m4trace:configure.ac:36: -1- AM_CONDITIONAL([am__fastdepCC], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3])
+m4trace:configure.ac:36: -1- AC_SUBST([am__fastdepCC_TRUE])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^am__fastdepCC_TRUE$])
+m4trace:configure.ac:36: -1- AC_SUBST([am__fastdepCC_FALSE])
+m4trace:configure.ac:36: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^am__fastdepCC_FALSE$])
+m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE])
+m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE])
+m4trace:configure.ac:37: -1- AC_SUBST([CXX])
+m4trace:configure.ac:37: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:37: -1- AC_SUBST([CXXFLAGS])
+m4trace:configure.ac:37: -1- AC_SUBST_TRACE([CXXFLAGS])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:37: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:37: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:37: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:37: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:37: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:37: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:37: -1- AC_SUBST([CXX])
+m4trace:configure.ac:37: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:37: -1- AC_SUBST([ac_ct_CXX])
+m4trace:configure.ac:37: -1- AC_SUBST_TRACE([ac_ct_CXX])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:37: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
+m4trace:configure.ac:37: -1- AC_SUBST_TRACE([CXXDEPMODE])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^CXXDEPMODE$])
+m4trace:configure.ac:37: -1- AM_CONDITIONAL([am__fastdepCXX], [
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:36: -1- AC_SUBST([am__fastdepCXX_TRUE])
-m4trace:configure.ac:36: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
-m4trace:configure.ac:36: -1- AC_SUBST([am__fastdepCXX_FALSE])
-m4trace:configure.ac:36: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE])
-m4trace:configure.ac:36: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
-m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
-m4trace:configure.ac:36: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
-m4trace:configure.ac:37: -1- AC_SUBST([CCAS])
-m4trace:configure.ac:37: -1- AC_SUBST_TRACE([CCAS])
-m4trace:configure.ac:37: -1- m4_pattern_allow([^CCAS$])
-m4trace:configure.ac:37: -1- AC_SUBST([CCASFLAGS])
-m4trace:configure.ac:37: -1- AC_SUBST_TRACE([CCASFLAGS])
-m4trace:configure.ac:37: -1- m4_pattern_allow([^CCASFLAGS$])
-m4trace:configure.ac:37: -1- AC_SUBST([CCASDEPMODE], [depmode=$am_cv_CCAS_dependencies_compiler_type])
-m4trace:configure.ac:37: -1- AC_SUBST_TRACE([CCASDEPMODE])
-m4trace:configure.ac:37: -1- m4_pattern_allow([^CCASDEPMODE$])
-m4trace:configure.ac:37: -1- AM_CONDITIONAL([am__fastdepCCAS], [
+m4trace:configure.ac:37: -1- AC_SUBST([am__fastdepCXX_TRUE])
+m4trace:configure.ac:37: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
+m4trace:configure.ac:37: -1- AC_SUBST([am__fastdepCXX_FALSE])
+m4trace:configure.ac:37: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
+m4trace:configure.ac:37: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:37: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:38: -1- AC_SUBST([CCAS])
+m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CCAS])
+m4trace:configure.ac:38: -1- m4_pattern_allow([^CCAS$])
+m4trace:configure.ac:38: -1- AC_SUBST([CCASFLAGS])
+m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CCASFLAGS])
+m4trace:configure.ac:38: -1- m4_pattern_allow([^CCASFLAGS$])
+m4trace:configure.ac:38: -1- AC_SUBST([CCASDEPMODE], [depmode=$am_cv_CCAS_dependencies_compiler_type])
+m4trace:configure.ac:38: -1- AC_SUBST_TRACE([CCASDEPMODE])
+m4trace:configure.ac:38: -1- m4_pattern_allow([^CCASDEPMODE$])
+m4trace:configure.ac:38: -1- AM_CONDITIONAL([am__fastdepCCAS], [
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:37: -1- AC_SUBST([am__fastdepCCAS_TRUE])
-m4trace:configure.ac:37: -1- AC_SUBST_TRACE([am__fastdepCCAS_TRUE])
-m4trace:configure.ac:37: -1- m4_pattern_allow([^am__fastdepCCAS_TRUE$])
-m4trace:configure.ac:37: -1- AC_SUBST([am__fastdepCCAS_FALSE])
-m4trace:configure.ac:37: -1- AC_SUBST_TRACE([am__fastdepCCAS_FALSE])
-m4trace:configure.ac:37: -1- m4_pattern_allow([^am__fastdepCCAS_FALSE$])
-m4trace:configure.ac:37: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_TRUE])
-m4trace:configure.ac:37: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_FALSE])
-m4trace:configure.ac:38: -1- AC_REQUIRE_AUX_FILE([install-sh])
-m4trace:configure.ac:38: -1- AC_SUBST([INSTALL_PROGRAM])
-m4trace:configure.ac:38: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
-m4trace:configure.ac:38: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
-m4trace:configure.ac:38: -1- AC_SUBST([INSTALL_SCRIPT])
-m4trace:configure.ac:38: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
-m4trace:configure.ac:38: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
-m4trace:configure.ac:38: -1- AC_SUBST([INSTALL_DATA])
-m4trace:configure.ac:38: -1- AC_SUBST_TRACE([INSTALL_DATA])
-m4trace:configure.ac:38: -1- m4_pattern_allow([^INSTALL_DATA$])
-m4trace:configure.ac:39: -1- AC_PROG_LIBTOOL
-m4trace:configure.ac:39: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
+m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCCAS_TRUE])
+m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCCAS_TRUE])
+m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCCAS_TRUE$])
+m4trace:configure.ac:38: -1- AC_SUBST([am__fastdepCCAS_FALSE])
+m4trace:configure.ac:38: -1- AC_SUBST_TRACE([am__fastdepCCAS_FALSE])
+m4trace:configure.ac:38: -1- m4_pattern_allow([^am__fastdepCCAS_FALSE$])
+m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_TRUE])
+m4trace:configure.ac:38: -1- _AM_SUBST_NOTMAKE([am__fastdepCCAS_FALSE])
+m4trace:configure.ac:39: -1- AC_REQUIRE_AUX_FILE([install-sh])
+m4trace:configure.ac:39: -1- AC_SUBST([INSTALL_PROGRAM])
+m4trace:configure.ac:39: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
+m4trace:configure.ac:39: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
+m4trace:configure.ac:39: -1- AC_SUBST([INSTALL_SCRIPT])
+m4trace:configure.ac:39: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
+m4trace:configure.ac:39: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
+m4trace:configure.ac:39: -1- AC_SUBST([INSTALL_DATA])
+m4trace:configure.ac:39: -1- AC_SUBST_TRACE([INSTALL_DATA])
+m4trace:configure.ac:39: -1- m4_pattern_allow([^INSTALL_DATA$])
+m4trace:configure.ac:40: -1- AC_PROG_LIBTOOL
+m4trace:configure.ac:40: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete.
 You should run autoupdate.], [aclocal.m4:123: AC_PROG_LIBTOOL is expanded from...
-configure.ac:39: the top level])
-m4trace:configure.ac:39: -1- LT_INIT
-m4trace:configure.ac:39: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
-m4trace:configure.ac:39: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
-m4trace:configure.ac:39: -1- AC_SUBST([LIBTOOL])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LIBTOOL])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LIBTOOL$])
-m4trace:configure.ac:39: -1- AC_CANONICAL_HOST
-m4trace:configure.ac:39: -1- AC_CANONICAL_BUILD
-m4trace:configure.ac:39: -1- AC_REQUIRE_AUX_FILE([config.sub])
-m4trace:configure.ac:39: -1- AC_REQUIRE_AUX_FILE([config.guess])
-m4trace:configure.ac:39: -1- AC_SUBST([build], [$ac_cv_build])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([build])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^build$])
-m4trace:configure.ac:39: -1- AC_SUBST([build_cpu], [$[1]])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([build_cpu])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^build_cpu$])
-m4trace:configure.ac:39: -1- AC_SUBST([build_vendor], [$[2]])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([build_vendor])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^build_vendor$])
-m4trace:configure.ac:39: -1- AC_SUBST([build_os])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([build_os])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^build_os$])
-m4trace:configure.ac:39: -1- AC_SUBST([host], [$ac_cv_host])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([host])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^host$])
-m4trace:configure.ac:39: -1- AC_SUBST([host_cpu], [$[1]])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([host_cpu])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^host_cpu$])
-m4trace:configure.ac:39: -1- AC_SUBST([host_vendor], [$[2]])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([host_vendor])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^host_vendor$])
-m4trace:configure.ac:39: -1- AC_SUBST([host_os])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([host_os])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^host_os$])
-m4trace:configure.ac:39: -1- AC_SUBST([SED])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([SED])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^SED$])
-m4trace:configure.ac:39: -1- AC_SUBST([GREP])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([GREP])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:39: -1- AC_SUBST([EGREP])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([EGREP])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^EGREP$])
-m4trace:configure.ac:39: -1- AC_SUBST([FGREP])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([FGREP])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^FGREP$])
-m4trace:configure.ac:39: -1- AC_SUBST([GREP])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([GREP])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^GREP$])
-m4trace:configure.ac:39: -1- AC_SUBST([LD])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LD])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LD$])
-m4trace:configure.ac:39: -1- AC_SUBST([DUMPBIN])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([DUMPBIN])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:39: -1- AC_SUBST([ac_ct_DUMPBIN])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
-m4trace:configure.ac:39: -1- AC_SUBST([DUMPBIN])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([DUMPBIN])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^DUMPBIN$])
-m4trace:configure.ac:39: -1- AC_SUBST([NM])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([NM])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^NM$])
-m4trace:configure.ac:39: -1- AC_SUBST([LN_S], [$as_ln_s])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LN_S])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LN_S$])
-m4trace:configure.ac:39: -1- AC_SUBST([OBJDUMP])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([OBJDUMP])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:39: -1- AC_SUBST([OBJDUMP])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([OBJDUMP])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^OBJDUMP$])
-m4trace:configure.ac:39: -1- AC_SUBST([AR])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([AR])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^AR$])
-m4trace:configure.ac:39: -1- AC_SUBST([STRIP])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([STRIP])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^STRIP$])
-m4trace:configure.ac:39: -1- AC_SUBST([RANLIB])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([RANLIB])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^RANLIB$])
-m4trace:configure.ac:39: -1- m4_pattern_allow([LT_OBJDIR])
-m4trace:configure.ac:39: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LT_OBJDIR$])
-m4trace:configure.ac:39: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries.
+configure.ac:40: the top level])
+m4trace:configure.ac:40: -1- LT_INIT
+m4trace:configure.ac:40: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])
+m4trace:configure.ac:40: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
+m4trace:configure.ac:40: -1- AC_SUBST([LIBTOOL])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LIBTOOL])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LIBTOOL$])
+m4trace:configure.ac:40: -1- AC_CANONICAL_HOST
+m4trace:configure.ac:40: -1- AC_CANONICAL_BUILD
+m4trace:configure.ac:40: -1- AC_REQUIRE_AUX_FILE([config.sub])
+m4trace:configure.ac:40: -1- AC_REQUIRE_AUX_FILE([config.guess])
+m4trace:configure.ac:40: -1- AC_SUBST([build], [$ac_cv_build])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([build])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^build$])
+m4trace:configure.ac:40: -1- AC_SUBST([build_cpu], [$[1]])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([build_cpu])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^build_cpu$])
+m4trace:configure.ac:40: -1- AC_SUBST([build_vendor], [$[2]])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([build_vendor])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^build_vendor$])
+m4trace:configure.ac:40: -1- AC_SUBST([build_os])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([build_os])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^build_os$])
+m4trace:configure.ac:40: -1- AC_SUBST([host], [$ac_cv_host])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([host])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^host$])
+m4trace:configure.ac:40: -1- AC_SUBST([host_cpu], [$[1]])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([host_cpu])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^host_cpu$])
+m4trace:configure.ac:40: -1- AC_SUBST([host_vendor], [$[2]])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([host_vendor])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^host_vendor$])
+m4trace:configure.ac:40: -1- AC_SUBST([host_os])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([host_os])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^host_os$])
+m4trace:configure.ac:40: -1- AC_SUBST([SED])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([SED])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^SED$])
+m4trace:configure.ac:40: -1- AC_SUBST([GREP])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:40: -1- AC_SUBST([EGREP])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([EGREP])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:40: -1- AC_SUBST([FGREP])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([FGREP])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^FGREP$])
+m4trace:configure.ac:40: -1- AC_SUBST([GREP])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:40: -1- AC_SUBST([LD])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LD])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:40: -1- AC_SUBST([DUMPBIN])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([DUMPBIN])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:40: -1- AC_SUBST([ac_ct_DUMPBIN])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^ac_ct_DUMPBIN$])
+m4trace:configure.ac:40: -1- AC_SUBST([DUMPBIN])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([DUMPBIN])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^DUMPBIN$])
+m4trace:configure.ac:40: -1- AC_SUBST([NM])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([NM])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^NM$])
+m4trace:configure.ac:40: -1- AC_SUBST([LN_S], [$as_ln_s])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LN_S])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LN_S$])
+m4trace:configure.ac:40: -1- AC_SUBST([OBJDUMP])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([OBJDUMP])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:40: -1- AC_SUBST([OBJDUMP])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([OBJDUMP])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^OBJDUMP$])
+m4trace:configure.ac:40: -1- AC_SUBST([AR])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([AR])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^AR$])
+m4trace:configure.ac:40: -1- AC_SUBST([STRIP])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([STRIP])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^STRIP$])
+m4trace:configure.ac:40: -1- AC_SUBST([RANLIB])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([RANLIB])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:40: -1- m4_pattern_allow([LT_OBJDIR])
+m4trace:configure.ac:40: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LT_OBJDIR$])
+m4trace:configure.ac:40: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries.
    */
 #undef LT_OBJDIR])
-m4trace:configure.ac:39: -1- AC_SUBST([lt_ECHO])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([lt_ECHO])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^lt_ECHO$])
-m4trace:configure.ac:39: -1- LT_SUPPORTED_TAG([CC])
-m4trace:configure.ac:39: -1- AC_SUBST([DSYMUTIL])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([DSYMUTIL])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^DSYMUTIL$])
-m4trace:configure.ac:39: -1- AC_SUBST([NMEDIT])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([NMEDIT])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^NMEDIT$])
-m4trace:configure.ac:39: -1- AC_SUBST([LIPO])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LIPO])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LIPO$])
-m4trace:configure.ac:39: -1- AC_SUBST([OTOOL])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([OTOOL])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^OTOOL$])
-m4trace:configure.ac:39: -1- AC_SUBST([OTOOL64])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([OTOOL64])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^OTOOL64$])
-m4trace:configure.ac:39: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
+m4trace:configure.ac:40: -1- AC_SUBST([lt_ECHO])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([lt_ECHO])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^lt_ECHO$])
+m4trace:configure.ac:40: -1- LT_SUPPORTED_TAG([CC])
+m4trace:configure.ac:40: -1- AC_SUBST([DSYMUTIL])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([DSYMUTIL])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^DSYMUTIL$])
+m4trace:configure.ac:40: -1- AC_SUBST([NMEDIT])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([NMEDIT])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^NMEDIT$])
+m4trace:configure.ac:40: -1- AC_SUBST([LIPO])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LIPO])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LIPO$])
+m4trace:configure.ac:40: -1- AC_SUBST([OTOOL])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([OTOOL])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^OTOOL$])
+m4trace:configure.ac:40: -1- AC_SUBST([OTOOL64])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([OTOOL64])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^OTOOL64$])
+m4trace:configure.ac:40: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H])
-m4trace:configure.ac:39: -1- AC_SUBST([CPP])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:39: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:39: -1- AC_SUBST([CPP])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CPP])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CPP$])
-m4trace:configure.ac:39: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:39: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+m4trace:configure.ac:40: -1- AC_SUBST([CPP])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:40: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:40: -1- AC_SUBST([CPP])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:40: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:40: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS])
-m4trace:configure.ac:39: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+m4trace:configure.ac:40: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
 #undef HAVE_SYS_TYPES_H])
-m4trace:configure.ac:39: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+m4trace:configure.ac:40: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H])
-m4trace:configure.ac:39: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+m4trace:configure.ac:40: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H])
-m4trace:configure.ac:39: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+m4trace:configure.ac:40: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H])
-m4trace:configure.ac:39: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+m4trace:configure.ac:40: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H])
-m4trace:configure.ac:39: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+m4trace:configure.ac:40: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
 #undef HAVE_STRINGS_H])
-m4trace:configure.ac:39: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+m4trace:configure.ac:40: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H])
-m4trace:configure.ac:39: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+m4trace:configure.ac:40: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H])
-m4trace:configure.ac:39: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+m4trace:configure.ac:40: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H])
-m4trace:configure.ac:39: -1- LT_SUPPORTED_TAG([CXX])
-m4trace:configure.ac:39: -1- AC_SUBST([CXX])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CXX])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:39: -1- AC_SUBST([CXXFLAGS])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CXXFLAGS])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CXXFLAGS$])
-m4trace:configure.ac:39: -1- AC_SUBST([LDFLAGS])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LDFLAGS])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LDFLAGS$])
-m4trace:configure.ac:39: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LIBS])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LIBS$])
-m4trace:configure.ac:39: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:39: -1- AC_SUBST([CXX])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CXX])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CXX$])
-m4trace:configure.ac:39: -1- AC_SUBST([ac_ct_CXX])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([ac_ct_CXX])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^ac_ct_CXX$])
-m4trace:configure.ac:39: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CXXDEPMODE])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CXXDEPMODE$])
-m4trace:configure.ac:39: -1- AM_CONDITIONAL([am__fastdepCXX], [
+m4trace:configure.ac:40: -1- LT_SUPPORTED_TAG([CXX])
+m4trace:configure.ac:40: -1- AC_SUBST([CXX])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:40: -1- AC_SUBST([CXXFLAGS])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CXXFLAGS])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:40: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:40: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:40: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:40: -1- AC_SUBST([CXX])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:40: -1- AC_SUBST([ac_ct_CXX])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([ac_ct_CXX])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:40: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CXXDEPMODE])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CXXDEPMODE$])
+m4trace:configure.ac:40: -1- AM_CONDITIONAL([am__fastdepCXX], [
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CXX_dependencies_compiler_type" = gcc3])
-m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCXX_TRUE])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
-m4trace:configure.ac:39: -1- AC_SUBST([am__fastdepCXX_FALSE])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
-m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
-m4trace:configure.ac:39: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
-m4trace:configure.ac:39: -1- AC_SUBST([CXXCPP])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CXXCPP])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CXXCPP$])
-m4trace:configure.ac:39: -1- AC_SUBST([CPPFLAGS])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CPPFLAGS])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CPPFLAGS$])
-m4trace:configure.ac:39: -1- AC_SUBST([CXXCPP])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([CXXCPP])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^CXXCPP$])
-m4trace:configure.ac:39: -1- AC_SUBST([LD])
-m4trace:configure.ac:39: -1- AC_SUBST_TRACE([LD])
-m4trace:configure.ac:39: -1- m4_pattern_allow([^LD$])
-m4trace:configure.ac:40: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
-m4trace:configure.ac:40: -1- m4_pattern_allow([^STDC_HEADERS$])
-m4trace:configure.ac:40: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+m4trace:configure.ac:40: -1- AC_SUBST([am__fastdepCXX_TRUE])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$])
+m4trace:configure.ac:40: -1- AC_SUBST([am__fastdepCXX_FALSE])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$])
+m4trace:configure.ac:40: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE])
+m4trace:configure.ac:40: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE])
+m4trace:configure.ac:40: -1- AC_SUBST([CXXCPP])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CXXCPP])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:40: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:40: -1- AC_SUBST([CXXCPP])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([CXXCPP])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^CXXCPP$])
+m4trace:configure.ac:40: -1- AC_SUBST([LD])
+m4trace:configure.ac:40: -1- AC_SUBST_TRACE([LD])
+m4trace:configure.ac:40: -1- m4_pattern_allow([^LD$])
+m4trace:configure.ac:41: -1- AC_SUBST([RANLIB])
+m4trace:configure.ac:41: -1- AC_SUBST_TRACE([RANLIB])
+m4trace:configure.ac:41: -1- m4_pattern_allow([^RANLIB$])
+m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.ac:42: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:42: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS])
-m4trace:configure.ac:41: -1- AH_OUTPUT([HAVE_INFINIBAND_VERBS_H], [/* Define to 1 if you have the <infiniband/verbs.h> header file. */
+m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_INFINIBAND_VERBS_H], [/* Define to 1 if you have the <infiniband/verbs.h> header file. */
 #undef HAVE_INFINIBAND_VERBS_H])
-m4trace:configure.ac:42: -1- AH_OUTPUT([HAVE_LIBIBVERBS], [/* Define to 1 if you have the `ibverbs\' library (-libverbs). */
+m4trace:configure.ac:44: -1- AH_OUTPUT([HAVE_LIBIBVERBS], [/* Define to 1 if you have the `ibverbs\' library (-libverbs). */
 #undef HAVE_LIBIBVERBS])
-m4trace:configure.ac:42: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBIBVERBS])
-m4trace:configure.ac:42: -1- m4_pattern_allow([^HAVE_LIBIBVERBS$])
-m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBRDMACM], [/* Define to 1 if you have the `rdmacm\' library (-lrdmacm). */
+m4trace:configure.ac:44: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBIBVERBS])
+m4trace:configure.ac:44: -1- m4_pattern_allow([^HAVE_LIBIBVERBS$])
+m4trace:configure.ac:45: -1- AH_OUTPUT([HAVE_LIBRDMACM], [/* Define to 1 if you have the `rdmacm\' library (-lrdmacm). */
 #undef HAVE_LIBRDMACM])
-m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBRDMACM])
-m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBRDMACM$])
-m4trace:configure.ac:46: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.ac:45: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBRDMACM])
+m4trace:configure.ac:45: -1- m4_pattern_allow([^HAVE_LIBRDMACM$])
+m4trace:configure.ac:49: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
-configure.ac:46: the top level])
-m4trace:configure.ac:50: -1- AM_CONDITIONAL([HAVE_ODP], [test "x$HAVE_ODP" = "xyes"])
-m4trace:configure.ac:50: -1- AC_SUBST([HAVE_ODP_TRUE])
-m4trace:configure.ac:50: -1- AC_SUBST_TRACE([HAVE_ODP_TRUE])
-m4trace:configure.ac:50: -1- m4_pattern_allow([^HAVE_ODP_TRUE$])
-m4trace:configure.ac:50: -1- AC_SUBST([HAVE_ODP_FALSE])
-m4trace:configure.ac:50: -1- AC_SUBST_TRACE([HAVE_ODP_FALSE])
-m4trace:configure.ac:50: -1- m4_pattern_allow([^HAVE_ODP_FALSE$])
-m4trace:configure.ac:50: -1- _AM_SUBST_NOTMAKE([HAVE_ODP_TRUE])
-m4trace:configure.ac:50: -1- _AM_SUBST_NOTMAKE([HAVE_ODP_FALSE])
-m4trace:configure.ac:52: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ODP])
-m4trace:configure.ac:52: -1- m4_pattern_allow([^HAVE_ODP$])
-m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_ODP], [/* Have ODP support */
-#undef HAVE_ODP])
+configure.ac:49: the top level])
+m4trace:configure.ac:52: -1- AM_CONDITIONAL([HAVE_RAW_ETH_EXP], [test "x$HAVE_RAW_ETH_EXP" = "xyes"])
+m4trace:configure.ac:52: -1- AC_SUBST([HAVE_RAW_ETH_EXP_TRUE])
+m4trace:configure.ac:52: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_EXP_TRUE])
+m4trace:configure.ac:52: -1- m4_pattern_allow([^HAVE_RAW_ETH_EXP_TRUE$])
+m4trace:configure.ac:52: -1- AC_SUBST([HAVE_RAW_ETH_EXP_FALSE])
+m4trace:configure.ac:52: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_EXP_FALSE])
+m4trace:configure.ac:52: -1- m4_pattern_allow([^HAVE_RAW_ETH_EXP_FALSE$])
+m4trace:configure.ac:52: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_EXP_TRUE])
+m4trace:configure.ac:52: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_EXP_FALSE])
+m4trace:configure.ac:54: -1- AC_DEFINE_TRACE_LITERAL([HAVE_RAW_ETH_EXP])
+m4trace:configure.ac:54: -1- m4_pattern_allow([^HAVE_RAW_ETH_EXP$])
+m4trace:configure.ac:54: -1- AH_OUTPUT([HAVE_RAW_ETH_EXP], [/* Enable RAW_ETH_TEST_EXP */
+#undef HAVE_RAW_ETH_EXP])
 m4trace:configure.ac:57: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
 configure.ac:57: the top level])
-m4trace:configure.ac:60: -1- AM_CONDITIONAL([HAVE_RAW_ETH_EXP], [test "x$HAVE_RAW_ETH_EXP" = "xyes"])
-m4trace:configure.ac:60: -1- AC_SUBST([HAVE_RAW_ETH_EXP_TRUE])
-m4trace:configure.ac:60: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_EXP_TRUE])
-m4trace:configure.ac:60: -1- m4_pattern_allow([^HAVE_RAW_ETH_EXP_TRUE$])
-m4trace:configure.ac:60: -1- AC_SUBST([HAVE_RAW_ETH_EXP_FALSE])
-m4trace:configure.ac:60: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_EXP_FALSE])
-m4trace:configure.ac:60: -1- m4_pattern_allow([^HAVE_RAW_ETH_EXP_FALSE$])
-m4trace:configure.ac:60: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_EXP_TRUE])
-m4trace:configure.ac:60: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_EXP_FALSE])
-m4trace:configure.ac:62: -1- AC_DEFINE_TRACE_LITERAL([HAVE_RAW_ETH_EXP])
-m4trace:configure.ac:62: -1- m4_pattern_allow([^HAVE_RAW_ETH_EXP$])
-m4trace:configure.ac:62: -1- AH_OUTPUT([HAVE_RAW_ETH_EXP], [/* Enable RAW_ETH_TEST_EXP */
-#undef HAVE_RAW_ETH_EXP])
-m4trace:configure.ac:65: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
-configure.ac:65: the top level])
-m4trace:configure.ac:68: -1- AM_CONDITIONAL([HAVE_RAW_ETH_REG], [test "x$HAVE_RAW_ETH_REG" = "xyes"])
-m4trace:configure.ac:68: -1- AC_SUBST([HAVE_RAW_ETH_REG_TRUE])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_REG_TRUE])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^HAVE_RAW_ETH_REG_TRUE$])
-m4trace:configure.ac:68: -1- AC_SUBST([HAVE_RAW_ETH_REG_FALSE])
-m4trace:configure.ac:68: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_REG_FALSE])
-m4trace:configure.ac:68: -1- m4_pattern_allow([^HAVE_RAW_ETH_REG_FALSE$])
-m4trace:configure.ac:68: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_REG_TRUE])
-m4trace:configure.ac:68: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_REG_FALSE])
-m4trace:configure.ac:70: -1- AC_DEFINE_TRACE_LITERAL([HAVE_RAW_ETH_REG])
-m4trace:configure.ac:70: -1- m4_pattern_allow([^HAVE_RAW_ETH_REG$])
-m4trace:configure.ac:70: -1- AH_OUTPUT([HAVE_RAW_ETH_REG], [/* Enable RAW_ETH_TEST_REG */
+m4trace:configure.ac:60: -1- AM_CONDITIONAL([HAVE_RAW_ETH_REG], [test "x$HAVE_RAW_ETH_REG" = "xyes"])
+m4trace:configure.ac:60: -1- AC_SUBST([HAVE_RAW_ETH_REG_TRUE])
+m4trace:configure.ac:60: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_REG_TRUE])
+m4trace:configure.ac:60: -1- m4_pattern_allow([^HAVE_RAW_ETH_REG_TRUE$])
+m4trace:configure.ac:60: -1- AC_SUBST([HAVE_RAW_ETH_REG_FALSE])
+m4trace:configure.ac:60: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_REG_FALSE])
+m4trace:configure.ac:60: -1- m4_pattern_allow([^HAVE_RAW_ETH_REG_FALSE$])
+m4trace:configure.ac:60: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_REG_TRUE])
+m4trace:configure.ac:60: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_REG_FALSE])
+m4trace:configure.ac:62: -1- AC_DEFINE_TRACE_LITERAL([HAVE_RAW_ETH_REG])
+m4trace:configure.ac:62: -1- m4_pattern_allow([^HAVE_RAW_ETH_REG$])
+m4trace:configure.ac:62: -1- AH_OUTPUT([HAVE_RAW_ETH_REG], [/* Enable RAW_ETH_TEST_REG */
 #undef HAVE_RAW_ETH_REG])
-m4trace:configure.ac:73: -1- AM_CONDITIONAL([HAVE_RAW_ETH], [true])
-m4trace:configure.ac:73: -1- AC_SUBST([HAVE_RAW_ETH_TRUE])
-m4trace:configure.ac:73: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_TRUE])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^HAVE_RAW_ETH_TRUE$])
-m4trace:configure.ac:73: -1- AC_SUBST([HAVE_RAW_ETH_FALSE])
-m4trace:configure.ac:73: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_FALSE])
-m4trace:configure.ac:73: -1- m4_pattern_allow([^HAVE_RAW_ETH_FALSE$])
-m4trace:configure.ac:73: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_TRUE])
-m4trace:configure.ac:73: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_FALSE])
-m4trace:configure.ac:75: -1- AC_DEFINE_TRACE_LITERAL([HAVE_RAW_ETH])
-m4trace:configure.ac:75: -1- m4_pattern_allow([^HAVE_RAW_ETH$])
-m4trace:configure.ac:75: -1- AH_OUTPUT([HAVE_RAW_ETH], [/* Enable RAW_ETH_TEST */
+m4trace:configure.ac:65: -1- AM_CONDITIONAL([HAVE_RAW_ETH], [true])
+m4trace:configure.ac:65: -1- AC_SUBST([HAVE_RAW_ETH_TRUE])
+m4trace:configure.ac:65: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_TRUE])
+m4trace:configure.ac:65: -1- m4_pattern_allow([^HAVE_RAW_ETH_TRUE$])
+m4trace:configure.ac:65: -1- AC_SUBST([HAVE_RAW_ETH_FALSE])
+m4trace:configure.ac:65: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_FALSE])
+m4trace:configure.ac:65: -1- m4_pattern_allow([^HAVE_RAW_ETH_FALSE$])
+m4trace:configure.ac:65: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_TRUE])
+m4trace:configure.ac:65: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_FALSE])
+m4trace:configure.ac:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_RAW_ETH])
+m4trace:configure.ac:67: -1- m4_pattern_allow([^HAVE_RAW_ETH$])
+m4trace:configure.ac:67: -1- AH_OUTPUT([HAVE_RAW_ETH], [/* Enable RAW_ETH_TEST */
 #undef HAVE_RAW_ETH])
-m4trace:configure.ac:77: -1- AM_CONDITIONAL([HAVE_RAW_ETH], [false])
-m4trace:configure.ac:77: -1- AC_SUBST([HAVE_RAW_ETH_TRUE])
-m4trace:configure.ac:77: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_TRUE])
-m4trace:configure.ac:77: -1- m4_pattern_allow([^HAVE_RAW_ETH_TRUE$])
-m4trace:configure.ac:77: -1- AC_SUBST([HAVE_RAW_ETH_FALSE])
-m4trace:configure.ac:77: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_FALSE])
-m4trace:configure.ac:77: -1- m4_pattern_allow([^HAVE_RAW_ETH_FALSE$])
-m4trace:configure.ac:77: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_TRUE])
-m4trace:configure.ac:77: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_FALSE])
+m4trace:configure.ac:69: -1- AM_CONDITIONAL([HAVE_RAW_ETH], [false])
+m4trace:configure.ac:69: -1- AC_SUBST([HAVE_RAW_ETH_TRUE])
+m4trace:configure.ac:69: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_TRUE])
+m4trace:configure.ac:69: -1- m4_pattern_allow([^HAVE_RAW_ETH_TRUE$])
+m4trace:configure.ac:69: -1- AC_SUBST([HAVE_RAW_ETH_FALSE])
+m4trace:configure.ac:69: -1- AC_SUBST_TRACE([HAVE_RAW_ETH_FALSE])
+m4trace:configure.ac:69: -1- m4_pattern_allow([^HAVE_RAW_ETH_FALSE$])
+m4trace:configure.ac:69: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_TRUE])
+m4trace:configure.ac:69: -1- _AM_SUBST_NOTMAKE([HAVE_RAW_ETH_FALSE])
+m4trace:configure.ac:73: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
+configure.ac:73: the top level])
+m4trace:configure.ac:76: -1- AM_CONDITIONAL([HAVE_XRCD], [test "x$HAVE_XRCD" = "xyes"])
+m4trace:configure.ac:76: -1- AC_SUBST([HAVE_XRCD_TRUE])
+m4trace:configure.ac:76: -1- AC_SUBST_TRACE([HAVE_XRCD_TRUE])
+m4trace:configure.ac:76: -1- m4_pattern_allow([^HAVE_XRCD_TRUE$])
+m4trace:configure.ac:76: -1- AC_SUBST([HAVE_XRCD_FALSE])
+m4trace:configure.ac:76: -1- AC_SUBST_TRACE([HAVE_XRCD_FALSE])
+m4trace:configure.ac:76: -1- m4_pattern_allow([^HAVE_XRCD_FALSE$])
+m4trace:configure.ac:76: -1- _AM_SUBST_NOTMAKE([HAVE_XRCD_TRUE])
+m4trace:configure.ac:76: -1- _AM_SUBST_NOTMAKE([HAVE_XRCD_FALSE])
+m4trace:configure.ac:78: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XRCD])
+m4trace:configure.ac:78: -1- m4_pattern_allow([^HAVE_XRCD$])
+m4trace:configure.ac:78: -1- AH_OUTPUT([HAVE_XRCD], [/* Enable XRCD feature */
+#undef HAVE_XRCD])
 m4trace:configure.ac:81: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
 configure.ac:81: the top level])
-m4trace:configure.ac:84: -1- AM_CONDITIONAL([HAVE_XRCD], [test "x$HAVE_XRCD" = "xyes"])
-m4trace:configure.ac:84: -1- AC_SUBST([HAVE_XRCD_TRUE])
-m4trace:configure.ac:84: -1- AC_SUBST_TRACE([HAVE_XRCD_TRUE])
-m4trace:configure.ac:84: -1- m4_pattern_allow([^HAVE_XRCD_TRUE$])
-m4trace:configure.ac:84: -1- AC_SUBST([HAVE_XRCD_FALSE])
-m4trace:configure.ac:84: -1- AC_SUBST_TRACE([HAVE_XRCD_FALSE])
-m4trace:configure.ac:84: -1- m4_pattern_allow([^HAVE_XRCD_FALSE$])
-m4trace:configure.ac:84: -1- _AM_SUBST_NOTMAKE([HAVE_XRCD_TRUE])
-m4trace:configure.ac:84: -1- _AM_SUBST_NOTMAKE([HAVE_XRCD_FALSE])
-m4trace:configure.ac:86: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XRCD])
-m4trace:configure.ac:86: -1- m4_pattern_allow([^HAVE_XRCD$])
-m4trace:configure.ac:86: -1- AH_OUTPUT([HAVE_XRCD], [/* Enable XRCD feature */
-#undef HAVE_XRCD])
+m4trace:configure.ac:84: -1- AM_CONDITIONAL([HAVE_ENDIAN], [test "x$HAVE_ENDIAN" = "xyes"])
+m4trace:configure.ac:84: -1- AC_SUBST([HAVE_ENDIAN_TRUE])
+m4trace:configure.ac:84: -1- AC_SUBST_TRACE([HAVE_ENDIAN_TRUE])
+m4trace:configure.ac:84: -1- m4_pattern_allow([^HAVE_ENDIAN_TRUE$])
+m4trace:configure.ac:84: -1- AC_SUBST([HAVE_ENDIAN_FALSE])
+m4trace:configure.ac:84: -1- AC_SUBST_TRACE([HAVE_ENDIAN_FALSE])
+m4trace:configure.ac:84: -1- m4_pattern_allow([^HAVE_ENDIAN_FALSE$])
+m4trace:configure.ac:84: -1- _AM_SUBST_NOTMAKE([HAVE_ENDIAN_TRUE])
+m4trace:configure.ac:84: -1- _AM_SUBST_NOTMAKE([HAVE_ENDIAN_FALSE])
+m4trace:configure.ac:86: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENDIAN])
+m4trace:configure.ac:86: -1- m4_pattern_allow([^HAVE_ENDIAN$])
+m4trace:configure.ac:86: -1- AH_OUTPUT([HAVE_ENDIAN], [/* Enable endian conversion */
+#undef HAVE_ENDIAN])
 m4trace:configure.ac:89: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
 configure.ac:89: the top level])
-m4trace:configure.ac:92: -1- AM_CONDITIONAL([HAVE_ENDIAN], [test "x$HAVE_ENDIAN" = "xyes"])
-m4trace:configure.ac:92: -1- AC_SUBST([HAVE_ENDIAN_TRUE])
-m4trace:configure.ac:92: -1- AC_SUBST_TRACE([HAVE_ENDIAN_TRUE])
-m4trace:configure.ac:92: -1- m4_pattern_allow([^HAVE_ENDIAN_TRUE$])
-m4trace:configure.ac:92: -1- AC_SUBST([HAVE_ENDIAN_FALSE])
-m4trace:configure.ac:92: -1- AC_SUBST_TRACE([HAVE_ENDIAN_FALSE])
-m4trace:configure.ac:92: -1- m4_pattern_allow([^HAVE_ENDIAN_FALSE$])
-m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([HAVE_ENDIAN_TRUE])
-m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([HAVE_ENDIAN_FALSE])
-m4trace:configure.ac:94: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ENDIAN])
-m4trace:configure.ac:94: -1- m4_pattern_allow([^HAVE_ENDIAN$])
-m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_ENDIAN], [/* Enable endian conversion */
-#undef HAVE_ENDIAN])
-m4trace:configure.ac:97: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
-You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
-configure.ac:97: the top level])
-m4trace:configure.ac:100: -1- AM_CONDITIONAL([HAVE_SCIF], [test "x$HAVE_SCIF" = "xyes"])
-m4trace:configure.ac:100: -1- AC_SUBST([HAVE_SCIF_TRUE])
-m4trace:configure.ac:100: -1- AC_SUBST_TRACE([HAVE_SCIF_TRUE])
-m4trace:configure.ac:100: -1- m4_pattern_allow([^HAVE_SCIF_TRUE$])
-m4trace:configure.ac:100: -1- AC_SUBST([HAVE_SCIF_FALSE])
-m4trace:configure.ac:100: -1- AC_SUBST_TRACE([HAVE_SCIF_FALSE])
-m4trace:configure.ac:100: -1- m4_pattern_allow([^HAVE_SCIF_FALSE$])
-m4trace:configure.ac:100: -1- _AM_SUBST_NOTMAKE([HAVE_SCIF_TRUE])
-m4trace:configure.ac:100: -1- _AM_SUBST_NOTMAKE([HAVE_SCIF_FALSE])
-m4trace:configure.ac:102: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SCIF])
-m4trace:configure.ac:102: -1- m4_pattern_allow([^HAVE_SCIF$])
-m4trace:configure.ac:102: -1- AH_OUTPUT([HAVE_SCIF], [/* Enable SCIF link Layer */
+m4trace:configure.ac:92: -1- AM_CONDITIONAL([HAVE_SCIF], [test "x$HAVE_SCIF" = "xyes"])
+m4trace:configure.ac:92: -1- AC_SUBST([HAVE_SCIF_TRUE])
+m4trace:configure.ac:92: -1- AC_SUBST_TRACE([HAVE_SCIF_TRUE])
+m4trace:configure.ac:92: -1- m4_pattern_allow([^HAVE_SCIF_TRUE$])
+m4trace:configure.ac:92: -1- AC_SUBST([HAVE_SCIF_FALSE])
+m4trace:configure.ac:92: -1- AC_SUBST_TRACE([HAVE_SCIF_FALSE])
+m4trace:configure.ac:92: -1- m4_pattern_allow([^HAVE_SCIF_FALSE$])
+m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([HAVE_SCIF_TRUE])
+m4trace:configure.ac:92: -1- _AM_SUBST_NOTMAKE([HAVE_SCIF_FALSE])
+m4trace:configure.ac:94: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SCIF])
+m4trace:configure.ac:94: -1- m4_pattern_allow([^HAVE_SCIF$])
+m4trace:configure.ac:94: -1- AH_OUTPUT([HAVE_SCIF], [/* Enable SCIF link Layer */
 #undef HAVE_SCIF])
-m4trace:configure.ac:105: -1- AH_OUTPUT([HAVE_INFINIBAND_VERBS_EXP_H], [/* Define to 1 if you have the <infiniband/verbs_exp.h> header file. */
+m4trace:configure.ac:97: -1- AH_OUTPUT([HAVE_INFINIBAND_VERBS_EXP_H], [/* Define to 1 if you have the <infiniband/verbs_exp.h> header file. */
 #undef HAVE_INFINIBAND_VERBS_EXP_H])
-m4trace:configure.ac:106: -1- AM_CONDITIONAL([HAVE_VERBS_EXP], [test "x$HAVE_VERBS_EXP" = "xyes"])
-m4trace:configure.ac:106: -1- AC_SUBST([HAVE_VERBS_EXP_TRUE])
-m4trace:configure.ac:106: -1- AC_SUBST_TRACE([HAVE_VERBS_EXP_TRUE])
-m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_VERBS_EXP_TRUE$])
-m4trace:configure.ac:106: -1- AC_SUBST([HAVE_VERBS_EXP_FALSE])
-m4trace:configure.ac:106: -1- AC_SUBST_TRACE([HAVE_VERBS_EXP_FALSE])
-m4trace:configure.ac:106: -1- m4_pattern_allow([^HAVE_VERBS_EXP_FALSE$])
-m4trace:configure.ac:106: -1- _AM_SUBST_NOTMAKE([HAVE_VERBS_EXP_TRUE])
-m4trace:configure.ac:106: -1- _AM_SUBST_NOTMAKE([HAVE_VERBS_EXP_FALSE])
-m4trace:configure.ac:108: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VERBS_EXP])
-m4trace:configure.ac:108: -1- m4_pattern_allow([^HAVE_VERBS_EXP$])
-m4trace:configure.ac:108: -1- AH_OUTPUT([HAVE_VERBS_EXP], [/* Have verbs_exp header */
+m4trace:configure.ac:98: -1- AM_CONDITIONAL([HAVE_VERBS_EXP], [test "x$HAVE_VERBS_EXP" = "xyes"])
+m4trace:configure.ac:98: -1- AC_SUBST([HAVE_VERBS_EXP_TRUE])
+m4trace:configure.ac:98: -1- AC_SUBST_TRACE([HAVE_VERBS_EXP_TRUE])
+m4trace:configure.ac:98: -1- m4_pattern_allow([^HAVE_VERBS_EXP_TRUE$])
+m4trace:configure.ac:98: -1- AC_SUBST([HAVE_VERBS_EXP_FALSE])
+m4trace:configure.ac:98: -1- AC_SUBST_TRACE([HAVE_VERBS_EXP_FALSE])
+m4trace:configure.ac:98: -1- m4_pattern_allow([^HAVE_VERBS_EXP_FALSE$])
+m4trace:configure.ac:98: -1- _AM_SUBST_NOTMAKE([HAVE_VERBS_EXP_TRUE])
+m4trace:configure.ac:98: -1- _AM_SUBST_NOTMAKE([HAVE_VERBS_EXP_FALSE])
+m4trace:configure.ac:100: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VERBS_EXP])
+m4trace:configure.ac:100: -1- m4_pattern_allow([^HAVE_VERBS_EXP$])
+m4trace:configure.ac:100: -1- AH_OUTPUT([HAVE_VERBS_EXP], [/* Have verbs_exp header */
 #undef HAVE_VERBS_EXP])
-m4trace:configure.ac:113: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.ac:105: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
-configure.ac:113: the top level])
-m4trace:configure.ac:117: -1- AM_CONDITIONAL([HAVE_MASKED_ATOMICS], [test "x$HAVE_MASKED_ATOMICS" = "xyes"])
-m4trace:configure.ac:117: -1- AC_SUBST([HAVE_MASKED_ATOMICS_TRUE])
-m4trace:configure.ac:117: -1- AC_SUBST_TRACE([HAVE_MASKED_ATOMICS_TRUE])
-m4trace:configure.ac:117: -1- m4_pattern_allow([^HAVE_MASKED_ATOMICS_TRUE$])
-m4trace:configure.ac:117: -1- AC_SUBST([HAVE_MASKED_ATOMICS_FALSE])
-m4trace:configure.ac:117: -1- AC_SUBST_TRACE([HAVE_MASKED_ATOMICS_FALSE])
-m4trace:configure.ac:117: -1- m4_pattern_allow([^HAVE_MASKED_ATOMICS_FALSE$])
-m4trace:configure.ac:117: -1- _AM_SUBST_NOTMAKE([HAVE_MASKED_ATOMICS_TRUE])
-m4trace:configure.ac:117: -1- _AM_SUBST_NOTMAKE([HAVE_MASKED_ATOMICS_FALSE])
-m4trace:configure.ac:119: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MASKED_ATOMICS])
-m4trace:configure.ac:119: -1- m4_pattern_allow([^HAVE_MASKED_ATOMICS$])
-m4trace:configure.ac:119: -1- AH_OUTPUT([HAVE_MASKED_ATOMICS], [/* Have MASKED ATOMICS in verbs_exp header */
+configure.ac:105: the top level])
+m4trace:configure.ac:109: -1- AM_CONDITIONAL([HAVE_MASKED_ATOMICS], [test "x$HAVE_MASKED_ATOMICS" = "xyes"])
+m4trace:configure.ac:109: -1- AC_SUBST([HAVE_MASKED_ATOMICS_TRUE])
+m4trace:configure.ac:109: -1- AC_SUBST_TRACE([HAVE_MASKED_ATOMICS_TRUE])
+m4trace:configure.ac:109: -1- m4_pattern_allow([^HAVE_MASKED_ATOMICS_TRUE$])
+m4trace:configure.ac:109: -1- AC_SUBST([HAVE_MASKED_ATOMICS_FALSE])
+m4trace:configure.ac:109: -1- AC_SUBST_TRACE([HAVE_MASKED_ATOMICS_FALSE])
+m4trace:configure.ac:109: -1- m4_pattern_allow([^HAVE_MASKED_ATOMICS_FALSE$])
+m4trace:configure.ac:109: -1- _AM_SUBST_NOTMAKE([HAVE_MASKED_ATOMICS_TRUE])
+m4trace:configure.ac:109: -1- _AM_SUBST_NOTMAKE([HAVE_MASKED_ATOMICS_FALSE])
+m4trace:configure.ac:111: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MASKED_ATOMICS])
+m4trace:configure.ac:111: -1- m4_pattern_allow([^HAVE_MASKED_ATOMICS$])
+m4trace:configure.ac:111: -1- AH_OUTPUT([HAVE_MASKED_ATOMICS], [/* Have MASKED ATOMICS in verbs_exp header */
 #undef HAVE_MASKED_ATOMICS])
-m4trace:configure.ac:122: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.ac:114: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
-configure.ac:122: the top level])
-m4trace:configure.ac:126: -1- AM_CONDITIONAL([HAVE_RSS_EXP], [test "x$HAVE_RSS_EXP" = "xyes"])
-m4trace:configure.ac:126: -1- AC_SUBST([HAVE_RSS_EXP_TRUE])
-m4trace:configure.ac:126: -1- AC_SUBST_TRACE([HAVE_RSS_EXP_TRUE])
-m4trace:configure.ac:126: -1- m4_pattern_allow([^HAVE_RSS_EXP_TRUE$])
-m4trace:configure.ac:126: -1- AC_SUBST([HAVE_RSS_EXP_FALSE])
-m4trace:configure.ac:126: -1- AC_SUBST_TRACE([HAVE_RSS_EXP_FALSE])
-m4trace:configure.ac:126: -1- m4_pattern_allow([^HAVE_RSS_EXP_FALSE$])
-m4trace:configure.ac:126: -1- _AM_SUBST_NOTMAKE([HAVE_RSS_EXP_TRUE])
-m4trace:configure.ac:126: -1- _AM_SUBST_NOTMAKE([HAVE_RSS_EXP_FALSE])
-m4trace:configure.ac:128: -1- AC_DEFINE_TRACE_LITERAL([HAVE_RSS_EXP])
-m4trace:configure.ac:128: -1- m4_pattern_allow([^HAVE_RSS_EXP$])
-m4trace:configure.ac:128: -1- AH_OUTPUT([HAVE_RSS_EXP], [/* Have RSS in verbs_exp header */
+configure.ac:114: the top level])
+m4trace:configure.ac:118: -1- AM_CONDITIONAL([HAVE_RSS_EXP], [test "x$HAVE_RSS_EXP" = "xyes"])
+m4trace:configure.ac:118: -1- AC_SUBST([HAVE_RSS_EXP_TRUE])
+m4trace:configure.ac:118: -1- AC_SUBST_TRACE([HAVE_RSS_EXP_TRUE])
+m4trace:configure.ac:118: -1- m4_pattern_allow([^HAVE_RSS_EXP_TRUE$])
+m4trace:configure.ac:118: -1- AC_SUBST([HAVE_RSS_EXP_FALSE])
+m4trace:configure.ac:118: -1- AC_SUBST_TRACE([HAVE_RSS_EXP_FALSE])
+m4trace:configure.ac:118: -1- m4_pattern_allow([^HAVE_RSS_EXP_FALSE$])
+m4trace:configure.ac:118: -1- _AM_SUBST_NOTMAKE([HAVE_RSS_EXP_TRUE])
+m4trace:configure.ac:118: -1- _AM_SUBST_NOTMAKE([HAVE_RSS_EXP_FALSE])
+m4trace:configure.ac:120: -1- AC_DEFINE_TRACE_LITERAL([HAVE_RSS_EXP])
+m4trace:configure.ac:120: -1- m4_pattern_allow([^HAVE_RSS_EXP$])
+m4trace:configure.ac:120: -1- AH_OUTPUT([HAVE_RSS_EXP], [/* Have RSS in verbs_exp header */
 #undef HAVE_RSS_EXP])
-m4trace:configure.ac:131: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+m4trace:configure.ac:123: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
 You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
-configure.ac:131: the top level])
-m4trace:configure.ac:135: -1- AM_CONDITIONAL([HAVE_DC], [test "x$HAVE_DC" = "xyes"])
-m4trace:configure.ac:135: -1- AC_SUBST([HAVE_DC_TRUE])
-m4trace:configure.ac:135: -1- AC_SUBST_TRACE([HAVE_DC_TRUE])
-m4trace:configure.ac:135: -1- m4_pattern_allow([^HAVE_DC_TRUE$])
-m4trace:configure.ac:135: -1- AC_SUBST([HAVE_DC_FALSE])
-m4trace:configure.ac:135: -1- AC_SUBST_TRACE([HAVE_DC_FALSE])
-m4trace:configure.ac:135: -1- m4_pattern_allow([^HAVE_DC_FALSE$])
-m4trace:configure.ac:135: -1- _AM_SUBST_NOTMAKE([HAVE_DC_TRUE])
-m4trace:configure.ac:135: -1- _AM_SUBST_NOTMAKE([HAVE_DC_FALSE])
-m4trace:configure.ac:137: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DC])
-m4trace:configure.ac:137: -1- m4_pattern_allow([^HAVE_DC$])
-m4trace:configure.ac:137: -1- AH_OUTPUT([HAVE_DC], [/* Enable DC feature */
+configure.ac:123: the top level])
+m4trace:configure.ac:127: -1- AM_CONDITIONAL([HAVE_DC], [test "x$HAVE_DC" = "xyes"])
+m4trace:configure.ac:127: -1- AC_SUBST([HAVE_DC_TRUE])
+m4trace:configure.ac:127: -1- AC_SUBST_TRACE([HAVE_DC_TRUE])
+m4trace:configure.ac:127: -1- m4_pattern_allow([^HAVE_DC_TRUE$])
+m4trace:configure.ac:127: -1- AC_SUBST([HAVE_DC_FALSE])
+m4trace:configure.ac:127: -1- AC_SUBST_TRACE([HAVE_DC_FALSE])
+m4trace:configure.ac:127: -1- m4_pattern_allow([^HAVE_DC_FALSE$])
+m4trace:configure.ac:127: -1- _AM_SUBST_NOTMAKE([HAVE_DC_TRUE])
+m4trace:configure.ac:127: -1- _AM_SUBST_NOTMAKE([HAVE_DC_FALSE])
+m4trace:configure.ac:129: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DC])
+m4trace:configure.ac:129: -1- m4_pattern_allow([^HAVE_DC$])
+m4trace:configure.ac:129: -1- AH_OUTPUT([HAVE_DC], [/* Enable DC feature */
 #undef HAVE_DC])
-m4trace:configure.ac:141: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CUDA])
-m4trace:configure.ac:141: -1- m4_pattern_allow([^HAVE_CUDA$])
-m4trace:configure.ac:141: -1- AH_OUTPUT([HAVE_CUDA], [/* Enable CUDA feature */
+m4trace:configure.ac:132: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
+configure.ac:132: the top level])
+m4trace:configure.ac:136: -1- AM_CONDITIONAL([HAVE_ACCL_VERBS], [test "x$HAVE_ACCL_VERBS" = "xyes"])
+m4trace:configure.ac:136: -1- AC_SUBST([HAVE_ACCL_VERBS_TRUE])
+m4trace:configure.ac:136: -1- AC_SUBST_TRACE([HAVE_ACCL_VERBS_TRUE])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_ACCL_VERBS_TRUE$])
+m4trace:configure.ac:136: -1- AC_SUBST([HAVE_ACCL_VERBS_FALSE])
+m4trace:configure.ac:136: -1- AC_SUBST_TRACE([HAVE_ACCL_VERBS_FALSE])
+m4trace:configure.ac:136: -1- m4_pattern_allow([^HAVE_ACCL_VERBS_FALSE$])
+m4trace:configure.ac:136: -1- _AM_SUBST_NOTMAKE([HAVE_ACCL_VERBS_TRUE])
+m4trace:configure.ac:136: -1- _AM_SUBST_NOTMAKE([HAVE_ACCL_VERBS_FALSE])
+m4trace:configure.ac:138: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ACCL_VERBS])
+m4trace:configure.ac:138: -1- m4_pattern_allow([^HAVE_ACCL_VERBS$])
+m4trace:configure.ac:138: -1- AH_OUTPUT([HAVE_ACCL_VERBS], [/* Enable Accelerated verbs feature */
+#undef HAVE_ACCL_VERBS])
+m4trace:configure.ac:141: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
+You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
+configure.ac:141: the top level])
+m4trace:configure.ac:145: -1- AM_CONDITIONAL([HAVE_ODP], [test "x$HAVE_ODP" = "xyes"])
+m4trace:configure.ac:145: -1- AC_SUBST([HAVE_ODP_TRUE])
+m4trace:configure.ac:145: -1- AC_SUBST_TRACE([HAVE_ODP_TRUE])
+m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_ODP_TRUE$])
+m4trace:configure.ac:145: -1- AC_SUBST([HAVE_ODP_FALSE])
+m4trace:configure.ac:145: -1- AC_SUBST_TRACE([HAVE_ODP_FALSE])
+m4trace:configure.ac:145: -1- m4_pattern_allow([^HAVE_ODP_FALSE$])
+m4trace:configure.ac:145: -1- _AM_SUBST_NOTMAKE([HAVE_ODP_TRUE])
+m4trace:configure.ac:145: -1- _AM_SUBST_NOTMAKE([HAVE_ODP_FALSE])
+m4trace:configure.ac:147: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ODP])
+m4trace:configure.ac:147: -1- m4_pattern_allow([^HAVE_ODP$])
+m4trace:configure.ac:147: -1- AH_OUTPUT([HAVE_ODP], [/* Have ODP support */
+#undef HAVE_ODP])
+m4trace:configure.ac:151: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CUDA])
+m4trace:configure.ac:151: -1- m4_pattern_allow([^HAVE_CUDA$])
+m4trace:configure.ac:151: -1- AH_OUTPUT([HAVE_CUDA], [/* Enable CUDA feature */
 #undef HAVE_CUDA])
-m4trace:configure.ac:142: -1- AC_DEFINE_TRACE_LITERAL([CUDA_PATH])
-m4trace:configure.ac:142: -1- m4_pattern_allow([^CUDA_PATH$])
-m4trace:configure.ac:142: -1- AH_OUTPUT([CUDA_PATH], [/* Enable CUDA feature */
+m4trace:configure.ac:152: -1- AC_DEFINE_TRACE_LITERAL([CUDA_PATH])
+m4trace:configure.ac:152: -1- m4_pattern_allow([^CUDA_PATH$])
+m4trace:configure.ac:152: -1- AH_OUTPUT([CUDA_PATH], [/* Enable CUDA feature */
 #undef CUDA_PATH])
-m4trace:configure.ac:147: -1- AC_SUBST([LIBUMAD])
-m4trace:configure.ac:147: -1- AC_SUBST_TRACE([LIBUMAD])
-m4trace:configure.ac:147: -1- m4_pattern_allow([^LIBUMAD$])
-m4trace:configure.ac:148: -1- AC_SUBST([LIBMATH])
-m4trace:configure.ac:148: -1- AC_SUBST_TRACE([LIBMATH])
-m4trace:configure.ac:148: -1- m4_pattern_allow([^LIBMATH$])
-m4trace:configure.ac:149: -1- AC_CONFIG_FILES([Makefile])
-m4trace:configure.ac:150: -1- AC_SUBST([LIB@&t at OBJS], [$ac_libobjs])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([LIB@&t at OBJS])
-m4trace:configure.ac:150: -1- m4_pattern_allow([^LIB@&t at OBJS$])
-m4trace:configure.ac:150: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([LTLIBOBJS])
-m4trace:configure.ac:150: -1- m4_pattern_allow([^LTLIBOBJS$])
-m4trace:configure.ac:150: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
-m4trace:configure.ac:150: -1- AC_SUBST([am__EXEEXT_TRUE])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
-m4trace:configure.ac:150: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
-m4trace:configure.ac:150: -1- AC_SUBST([am__EXEEXT_FALSE])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
-m4trace:configure.ac:150: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
-m4trace:configure.ac:150: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
-m4trace:configure.ac:150: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([top_builddir])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([top_build_prefix])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([srcdir])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([abs_srcdir])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([top_srcdir])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([abs_top_srcdir])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([builddir])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([abs_builddir])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([abs_top_builddir])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([INSTALL])
-m4trace:configure.ac:150: -1- AC_SUBST_TRACE([MKDIR_P])
-m4trace:configure.ac:150: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
+m4trace:configure.ac:157: -1- AC_SUBST([LIBUMAD])
+m4trace:configure.ac:157: -1- AC_SUBST_TRACE([LIBUMAD])
+m4trace:configure.ac:157: -1- m4_pattern_allow([^LIBUMAD$])
+m4trace:configure.ac:158: -1- AC_SUBST([LIBMATH])
+m4trace:configure.ac:158: -1- AC_SUBST_TRACE([LIBMATH])
+m4trace:configure.ac:158: -1- m4_pattern_allow([^LIBMATH$])
+m4trace:configure.ac:159: -1- AC_CONFIG_FILES([Makefile])
+m4trace:configure.ac:160: -1- AC_SUBST([LIB@&t at OBJS], [$ac_libobjs])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([LIB@&t at OBJS])
+m4trace:configure.ac:160: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.ac:160: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([LTLIBOBJS])
+m4trace:configure.ac:160: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:160: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])
+m4trace:configure.ac:160: -1- AC_SUBST([am__EXEEXT_TRUE])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE])
+m4trace:configure.ac:160: -1- m4_pattern_allow([^am__EXEEXT_TRUE$])
+m4trace:configure.ac:160: -1- AC_SUBST([am__EXEEXT_FALSE])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE])
+m4trace:configure.ac:160: -1- m4_pattern_allow([^am__EXEEXT_FALSE$])
+m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE])
+m4trace:configure.ac:160: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([top_builddir])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([top_build_prefix])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([srcdir])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([abs_srcdir])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([top_srcdir])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([abs_top_srcdir])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([builddir])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([abs_builddir])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([abs_top_builddir])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([INSTALL])
+m4trace:configure.ac:160: -1- AC_SUBST_TRACE([MKDIR_P])
+m4trace:configure.ac:160: -1- AC_REQUIRE_AUX_FILE([ltmain.sh])
diff --git a/config.h.in b/config.h.in
index 15c938b..e742a80 100644
--- a/config.h.in
+++ b/config.h.in
@@ -3,6 +3,9 @@
 /* Enable CUDA feature */
 #undef CUDA_PATH
 
+/* Enable Accelerated verbs feature */
+#undef HAVE_ACCL_VERBS
+
 /* Enable CUDA feature */
 #undef HAVE_CUDA
 
diff --git a/configure b/configure
index b774fcc..0dd7717 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.63 for perftest 5.33.
+# Generated by GNU Autoconf 2.63 for perftest 5.5.
 #
 # Report bugs to <linux-rdma at vger.kernel.org>.
 #
@@ -745,8 +745,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='perftest'
 PACKAGE_TARNAME='perftest'
-PACKAGE_VERSION='5.33'
-PACKAGE_STRING='perftest 5.33'
+PACKAGE_VERSION='5.5'
+PACKAGE_STRING='perftest 5.5'
 PACKAGE_BUGREPORT='linux-rdma at vger.kernel.org'
 
 # Factoring default headers for most tests.
@@ -791,6 +791,10 @@ LTLIBOBJS
 LIBOBJS
 LIBMATH
 LIBUMAD
+HAVE_ODP_FALSE
+HAVE_ODP_TRUE
+HAVE_ACCL_VERBS_FALSE
+HAVE_ACCL_VERBS_TRUE
 HAVE_DC_FALSE
 HAVE_DC_TRUE
 HAVE_RSS_EXP_FALSE
@@ -811,8 +815,6 @@ HAVE_RAW_ETH_REG_FALSE
 HAVE_RAW_ETH_REG_TRUE
 HAVE_RAW_ETH_EXP_FALSE
 HAVE_RAW_ETH_EXP_TRUE
-HAVE_ODP_FALSE
-HAVE_ODP_TRUE
 CXXCPP
 CPP
 OTOOL64
@@ -821,7 +823,6 @@ LIPO
 NMEDIT
 DSYMUTIL
 lt_ECHO
-RANLIB
 AR
 OBJDUMP
 LN_S
@@ -869,6 +870,7 @@ CPPFLAGS
 LDFLAGS
 CFLAGS
 CC
+RANLIB
 CUDA_H_PATH
 MINOR_VERSION
 MAJOR_VERSION
@@ -951,6 +953,7 @@ enable_libtool_lock
 host_alias
 target_alias
 CUDA_H_PATH
+RANLIB
 CC
 CFLAGS
 LDFLAGS
@@ -1515,7 +1518,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures perftest 5.33 to adapt to many kinds of systems.
+\`configure' configures perftest 5.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1585,7 +1588,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of perftest 5.33:";;
+     short | recursive ) echo "Configuration of perftest 5.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1613,6 +1616,7 @@ Optional Packages:
 
 Some influential environment variables:
   CUDA_H_PATH help-string
+  RANLIB      ranlib tool
   CC          C compiler command
   CFLAGS      C compiler flags
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
@@ -1693,7 +1697,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-perftest configure 5.33
+perftest configure 5.5
 generated by GNU Autoconf 2.63
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1707,7 +1711,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by perftest $as_me 5.33, which was
+It was created by perftest $as_me 5.5, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   $ $0 $@
@@ -2559,7 +2563,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='perftest'
- VERSION='5.33'
+ VERSION='5.5'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2617,6 +2621,7 @@ AM_BACKSLASH='\'
 
 
 
+
 # Check whether --enable-verbs_exp was given.
 if test "${enable_verbs_exp+set}" = set; then
   enableval=$enable_verbs_exp;
@@ -5180,13 +5185,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:5183: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:5188: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5186: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:5191: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5189: output\"" >&5)
+  (eval echo "\"\$as_me:5194: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -6392,7 +6397,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 6395 "configure"' > conftest.$ac_ext
+  echo '#line 6400 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -8983,11 +8988,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8986: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8991: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8990: \$? = $ac_status" >&5
+   echo "$as_me:8995: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -9322,11 +9327,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9325: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:9330: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:9329: \$? = $ac_status" >&5
+   echo "$as_me:9334: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -9427,11 +9432,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9430: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:9435: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:9434: \$? = $ac_status" >&5
+   echo "$as_me:9439: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -9482,11 +9487,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9485: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:9490: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:9489: \$? = $ac_status" >&5
+   echo "$as_me:9494: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -12285,7 +12290,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12288 "configure"
+#line 12293 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12381,7 +12386,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12384 "configure"
+#line 12389 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -14401,11 +14406,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14404: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14409: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:14408: \$? = $ac_status" >&5
+   echo "$as_me:14413: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -14500,11 +14505,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14503: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14508: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:14507: \$? = $ac_status" >&5
+   echo "$as_me:14512: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -14552,11 +14557,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14555: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14560: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:14559: \$? = $ac_status" >&5
+   echo "$as_me:14564: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -15539,6 +15544,98 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 # Only expand once:
 
 
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
 { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5
 $as_echo_n "checking for ANSI C header files... " >&6; }
 if test "${ac_cv_header_stdc+set}" = set; then
@@ -16176,72 +16273,6 @@ $as_echo "$as_me: error: libm not found" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <infiniband/verbs.h>
-#include <infiniband/verbs_exp.h>
-int
-main ()
-{
-int x = IBV_EXP_ACCESS_ON_DEMAND;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext && {
-	 test "$cross_compiling" = yes ||
-	 $as_test_x conftest$ac_exeext
-       }; then
-  HAVE_ODP=yes
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	HAVE_ODP=no
-fi
-
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
- if test "x$HAVE_ODP" = "xyes"; then
-  HAVE_ODP_TRUE=
-  HAVE_ODP_FALSE='#'
-else
-  HAVE_ODP_TRUE='#'
-  HAVE_ODP_FALSE=
-fi
-
-if test $HAVE_ODP = yes && test $HAVE_ODP = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ODP 1
-_ACEOF
-
-fi
-
-
 
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -16866,6 +16897,136 @@ _ACEOF
 
 fi
 
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <infiniband/verbs.h>
+#include <infiniband/verbs_exp.h>
+int
+main ()
+{
+int x = IBV_EXP_INTF_GLOBAL;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  HAVE_ACCL_VERBS=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	HAVE_ACCL_VERBS=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+ if test "x$HAVE_ACCL_VERBS" = "xyes"; then
+  HAVE_ACCL_VERBS_TRUE=
+  HAVE_ACCL_VERBS_FALSE='#'
+else
+  HAVE_ACCL_VERBS_TRUE='#'
+  HAVE_ACCL_VERBS_FALSE=
+fi
+
+if test $HAVE_ACCL_VERBS = yes && test $HAVE_VERBS_EXP = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ACCL_VERBS 1
+_ACEOF
+
+fi
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <infiniband/verbs.h>
+#include <infiniband/verbs_exp.h>
+int
+main ()
+{
+int x = IBV_EXP_ACCESS_ON_DEMAND;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+$as_echo "$ac_try_echo") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then
+  HAVE_ODP=yes
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	HAVE_ODP=no
+fi
+
+rm -rf conftest.dSYM
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+ if test "x$HAVE_ODP" = "xyes"; then
+  HAVE_ODP_TRUE=
+  HAVE_ODP_FALSE='#'
+else
+  HAVE_ODP_TRUE='#'
+  HAVE_ODP_FALSE=
+fi
+
+if test $HAVE_ODP = yes && test $HAVE_VERBS_EXP = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ODP 1
+_ACEOF
+
+fi
+
 if test "$CUDA_H_PATH" ; then
 
 cat >>confdefs.h <<\_ACEOF
@@ -17025,13 +17186,6 @@ $as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${HAVE_ODP_TRUE}" && test -z "${HAVE_ODP_FALSE}"; then
-  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ODP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-$as_echo "$as_me: error: conditional \"HAVE_ODP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
 if test -z "${HAVE_RAW_ETH_EXP_TRUE}" && test -z "${HAVE_RAW_ETH_EXP_FALSE}"; then
   { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_RAW_ETH_EXP\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -17109,6 +17263,20 @@ $as_echo "$as_me: error: conditional \"HAVE_DC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${HAVE_ACCL_VERBS_TRUE}" && test -z "${HAVE_ACCL_VERBS_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ACCL_VERBS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"HAVE_ACCL_VERBS\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_ODP_TRUE}" && test -z "${HAVE_ODP_FALSE}"; then
+  { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_ODP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+$as_echo "$as_me: error: conditional \"HAVE_ODP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 
 : ${CONFIG_STATUS=./config.status}
 ac_write_fail=0
@@ -17431,7 +17599,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by perftest $as_me 5.33, which was
+This file was extended by perftest $as_me 5.5, which was
 generated by GNU Autoconf 2.63.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17494,7 +17662,7 @@ Report bugs to <bug-autoconf at gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_version="\\
-perftest config.status 5.33
+perftest config.status 5.5
 configured by $0, generated by GNU Autoconf 2.63,
   with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
diff --git a/configure.ac b/configure.ac
index ed24067..d4af0e6 100755
--- a/configure.ac
+++ b/configure.ac
@@ -11,7 +11,7 @@
 # $HEADER$
 dnl Process this file with autoconf to produce a configure script.
 
-AC_INIT([perftest],[5.33],[linux-rdma at vger.kernel.org])
+AC_INIT([perftest],[5.5],[linux-rdma at vger.kernel.org])
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_AUX_DIR([config])
 AC_CONFIG_MACRO_DIR([m4])
@@ -22,6 +22,7 @@ AC_SUBST(MAJOR_VERSION)
 AC_SUBST(MINOR_VERSION)
 
 AC_ARG_VAR(CUDA_H_PATH, help-string)
+AC_ARG_VAR(RANLIB, ranlib tool)
 
 AC_ARG_ENABLE([verbs_exp],
 [AS_HELP_STRING([--disable-verbs_exp],
@@ -37,22 +38,13 @@ AC_PROG_CXX
 AM_PROG_AS
 AC_PROG_INSTALL
 AC_PROG_LIBTOOL
+AC_PROG_RANLIB
 AC_HEADER_STDC
 AC_CHECK_HEADERS([infiniband/verbs.h],,[AC_MSG_ERROR([ibverbs header files not found])])
 AC_CHECK_LIB([ibverbs], [ibv_get_device_list], [], [AC_MSG_ERROR([libibverbs not found])])
 AC_CHECK_LIB([rdmacm], [rdma_create_event_channel], [], AC_MSG_ERROR([librdmacm-devel not found]))
 AC_CHECK_LIB([ibumad], [umad_init], [LIBUMAD=-libumad], AC_MSG_ERROR([libibumad not found]))
 AC_CHECK_LIB([m], [log], [LIBMATH=-lm], AC_MSG_ERROR([libm not found]))
-AC_TRY_LINK([
-#include <infiniband/verbs.h>
-#include <infiniband/verbs_exp.h>],
-        [int x = IBV_EXP_ACCESS_ON_DEMAND;],[HAVE_ODP=yes], [HAVE_ODP=no])
-AM_CONDITIONAL([HAVE_ODP],[test "x$HAVE_ODP" = "xyes"])
-if [test $HAVE_ODP = yes] && [test $HAVE_ODP = yes]; then
-        AC_DEFINE([HAVE_ODP], [1], [Have ODP support])
-fi
-
-
 
 AC_TRY_LINK([#include <infiniband/verbs.h>],
 	[struct ibv_exp_flow *t = ibv_exp_create_flow(NULL,NULL);],[HAVE_RAW_ETH_EXP=yes], [HAVE_RAW_ETH_EXP=no])
@@ -137,6 +129,24 @@ if [test $HAVE_DC = yes] && [test $HAVE_VERBS_EXP = yes]; then
         AC_DEFINE([HAVE_DC], [1], [Enable DC feature])
 fi
 
+AC_TRY_LINK([
+#include <infiniband/verbs.h>
+#include <infiniband/verbs_exp.h>],
+        [int x = IBV_EXP_INTF_GLOBAL;],[HAVE_ACCL_VERBS=yes], [HAVE_ACCL_VERBS=no])
+AM_CONDITIONAL([HAVE_ACCL_VERBS],[test "x$HAVE_ACCL_VERBS" = "xyes"])
+if [test $HAVE_ACCL_VERBS = yes] && [test $HAVE_VERBS_EXP = yes]; then
+        AC_DEFINE([HAVE_ACCL_VERBS], [1], [Enable Accelerated verbs feature])
+fi
+
+AC_TRY_LINK([
+#include <infiniband/verbs.h>
+#include <infiniband/verbs_exp.h>],
+        [int x = IBV_EXP_ACCESS_ON_DEMAND;],[HAVE_ODP=yes], [HAVE_ODP=no])
+AM_CONDITIONAL([HAVE_ODP],[test "x$HAVE_ODP" = "xyes"])
+if [test $HAVE_ODP = yes] && [test $HAVE_VERBS_EXP = yes]; then
+        AC_DEFINE([HAVE_ODP], [1], [Have ODP support])
+fi
+
 if [test "$CUDA_H_PATH" ]; then
 	AC_DEFINE([HAVE_CUDA], [1], [Enable CUDA feature])
 	AC_DEFINE_UNQUOTED([CUDA_PATH], "$CUDA_H_PATH" , [Enable CUDA feature])
diff --git a/perftest.spec b/perftest.spec
index 84ce57c..ada14d5 100644
--- a/perftest.spec
+++ b/perftest.spec
@@ -1,10 +1,10 @@
 Name:           perftest
 Summary:        IB Performance tests
-Version: 2.3
-Release: 0.12.gcb5b746
+Version: 3.0
+Release: 0.9.g214990b
 License:        BSD 3-Clause, GPL v2 or later
 Group:          Productivity/Networking/Diagnostic
-Source: http://www.openfabrics.org/downloads/perftest-2.3-0.12.gcb5b746.tar.gz
+Source: http://www.openfabrics.org/downloads/perftest-3.0-0.9.g214990b.tar.gz
 Url:            http://www.openfabrics.org
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  libibverbs-devel librdmacm-devel libibumad-devel
diff --git a/run_perftest_loopback b/run_perftest_loopback
new file mode 100755
index 0000000..1598404
--- /dev/null
+++ b/run_perftest_loopback
@@ -0,0 +1,25 @@
+#!/bin/sh
+# trivial script to launch a loopback test on the same device
+# example: run_perftest_loopback 0 1 ib_write_bw -s 10
+
+if [ $# -lt 3 ] ; then
+	echo ""
+        echo "Usage: run_perftest_loopback <server_core> <client_core> <test command>"
+	echo "example: run_perftest_loopback 0 1 ib_write_bw -s 10"
+        exit 3
+fi
+
+server_core=$1
+client_core=$2
+shift 2
+
+taskset -c $server_core $* &
+#give server time to start
+sleep 1
+
+taskset -c $client_core $* localhost
+
+status=$?
+
+wait
+exit $status
diff --git a/src/atomic_bw.c b/src/atomic_bw.c
index 3e1c493..73f2a38 100755
--- a/src/atomic_bw.c
+++ b/src/atomic_bw.c
@@ -45,34 +45,34 @@
 /******************************************************************************
  *
  ******************************************************************************/
-int main(int argc, char *argv[]) {
-
-	int ret_parser,i;
-	struct ibv_device		   *ib_dev = NULL;
-	struct pingpong_context    ctx;
-	struct pingpong_dest       *my_dest = NULL;
-	struct pingpong_dest	   *rem_dest = NULL;
-	struct perftest_parameters user_param;
-	struct perftest_comm	   user_comm;
-	struct bw_report_data      my_bw_rep, rem_bw_rep;
+int main(int argc, char *argv[])
+{
+	int ret_parser, i;
+	struct ibv_device		*ib_dev = NULL;
+	struct pingpong_context		ctx;
+	struct pingpong_dest		*my_dest = NULL;
+	struct pingpong_dest		*rem_dest = NULL;
+	struct perftest_parameters	user_param;
+	struct perftest_comm		user_comm;
+	struct bw_report_data		my_bw_rep, rem_bw_rep;
 
 	/* init default values to user's parameters */
-	memset(&ctx,0,sizeof(struct pingpong_context));
-	memset(&user_param , 0 , sizeof(struct perftest_parameters));
-	memset(&user_comm,0,sizeof(struct perftest_comm));
+	memset(&ctx, 0, sizeof(struct pingpong_context));
+	memset(&user_param, 0, sizeof(struct perftest_parameters));
+	memset(&user_comm, 0, sizeof(struct perftest_comm));
 
 	user_param.verb    = ATOMIC;
 	user_param.tst     = BW;
 	strncpy(user_param.version, VERSION, sizeof(user_param.version));
 
-	ret_parser = parser(&user_param,argv,argc);
+	ret_parser = parser(&user_param, argv, argc);
 	if (ret_parser) {
 		if (ret_parser != VERSION_EXIT && ret_parser != HELP_EXIT)
-			fprintf(stderr," Parser function exited with Error\n");
+			fprintf(stderr, " Parser function exited with Error\n");
 		return 1;
 	}
 
-	if(user_param.use_xrc && user_param.duplex) {
+	if (user_param.use_xrc && user_param.duplex) {
 		user_param.num_of_qps *= 2;
 	}
 
@@ -80,28 +80,34 @@ int main(int argc, char *argv[]) {
 	if (!ib_dev)
 		return 7;
 
-	// Getting the relevant context from the device
+	/* Getting the relevant context from the device */
 	ctx.context = ibv_open_device(ib_dev);
 	if (!ctx.context) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return 1;
 	}
 
-	if (ib_dev_name(ctx.context) == CONNECTIB)
-	{
+	#ifdef HAVE_MASKED_ATOMICS
+	if (check_masked_atomics_support(&ctx)) {
 		user_param.masked_atomics = 1;
 		user_param.use_exp = 1;
 	}
 
-	// See if MTU and link type are valid and supported.
-	if (check_link(ctx.context,&user_param)) {
+	if (user_param.masked_atomics && (user_param.work_rdma_cm || user_param.use_rdma_cm)) {
+		fprintf(stderr, "atomic test is not supported with -R/-z flag (rdma_cm) with this device.\n");
+		return 1;
+	}
+	#endif
+
+	/* See if MTU and link type are valid and supported. */
+	if (check_link(ctx.context, &user_param)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// copy the relevant user parameters to the comm struct + creating rdma_cm resources.
-	if (create_comm_struct(&user_comm,&user_param)) {
-		fprintf(stderr," Unable to create RDMA_CM resources\n");
+	/* copy the relevant user parameters to the comm struct + creating rdma_cm resources. */
+	if (create_comm_struct(&user_comm, &user_param)) {
+		fprintf(stderr, " Unable to create RDMA_CM resources\n");
 		return 1;
 	}
 
@@ -111,9 +117,9 @@ int main(int argc, char *argv[]) {
 		printf("************************************\n");
 	}
 
-	// Initialize the connection and print the local data.
+	/* Initialize the connection and print the local data. */
 	if (establish_connection(&user_comm)) {
-		fprintf(stderr," Unable to init the socket connection\n");
+		fprintf(stderr, " Unable to init the socket connection\n");
 		return FAILURE;
 	}
 
@@ -121,124 +127,120 @@ int main(int argc, char *argv[]) {
 
 	check_sys_data(&user_comm, &user_param);
 
-	// See if MTU and link type are valid and supported.
-	if (check_mtu(ctx.context,&user_param, &user_comm)) {
+	/* See if MTU and link type are valid and supported. */
+	if (check_mtu(ctx.context, &user_param, &user_comm)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// Print basic test information.
+	/* Print basic test information. */
 	ctx_print_test_info(&user_param);
 
-	ALLOCATE(my_dest , struct pingpong_dest , user_param.num_of_qps);
+	ALLOCATE(my_dest, struct pingpong_dest, user_param.num_of_qps);
 	memset(my_dest, 0, sizeof(struct pingpong_dest)*user_param.num_of_qps);
-	ALLOCATE(rem_dest , struct pingpong_dest , user_param.num_of_qps);
+	ALLOCATE(rem_dest, struct pingpong_dest, user_param.num_of_qps);
 	memset(rem_dest, 0, sizeof(struct pingpong_dest)*user_param.num_of_qps);
 
-	// Allocating arrays needed for the test.
-	alloc_ctx(&ctx,&user_param);
+	/* Allocating arrays needed for the test. */
+	alloc_ctx(&ctx, &user_param);
 
-	// Create (if nessacery) the rdma_cm ids and channel.
+	/* Create (if nessacery) the rdma_cm ids and channel. */
 	if (user_param.work_rdma_cm == ON) {
 
-	    if (user_param.machine == CLIENT) {
-			if (retry_rdma_connect(&ctx,&user_param)) {
-				fprintf(stderr,"Unable to perform rdma_client function\n");
+		if (user_param.machine == CLIENT) {
+			if (retry_rdma_connect(&ctx, &user_param)) {
+				fprintf(stderr, "Unable to perform rdma_client function\n");
 				return FAILURE;
 			}
 
 		} else {
-    		if (create_rdma_resources(&ctx,&user_param)) {
-				fprintf(stderr," Unable to create the rdma_resources\n");
+			if (create_rdma_resources(&ctx, &user_param)) {
+				fprintf(stderr, " Unable to create the rdma_resources\n");
 				return FAILURE;
-    		}
-			if (rdma_server_connect(&ctx,&user_param)) {
-				fprintf(stderr,"Unable to perform rdma_client function\n");
+			}
+			if (rdma_server_connect(&ctx, &user_param)) {
+				fprintf(stderr, "Unable to perform rdma_client function\n");
 				return FAILURE;
 			}
 		}
 
 	} else {
 
-		// create all the basic IB resources.
-	    if (ctx_init(&ctx,&user_param)) {
+		/* create all the basic IB resources. */
+		if (ctx_init(&ctx, &user_param)) {
 			fprintf(stderr, " Couldn't create IB resources\n");
 			return FAILURE;
-	    }
+		}
 	}
 
-	// Set up the Connection.
-	if (set_up_connection(&ctx,&user_param,my_dest)) {
-		fprintf(stderr," Unable to set up socket connection\n");
+	/* Set up the Connection. */
+	if (set_up_connection(&ctx, &user_param, my_dest)) {
+		fprintf(stderr, " Unable to set up socket connection\n");
 		return FAILURE;
 	}
 
-	// Print this machine QP information
-	for (i=0; i < user_param.num_of_qps; i++)
-		ctx_print_pingpong_data(&my_dest[i],&user_comm);
+	/* Print this machine QP information */
+	for (i = 0; i < user_param.num_of_qps; i++)
+		ctx_print_pingpong_data(&my_dest[i], &user_comm);
 
 	user_comm.rdma_params->side = REMOTE;
-	for (i=0; i < user_param.num_of_qps; i++) {
+	for (i = 0; i < user_param.num_of_qps; i++) {
 
-		// shaking hands and gather the other side info.
-		if (ctx_hand_shake(&user_comm,&my_dest[i],&rem_dest[i])) {
-			fprintf(stderr,"Failed to exchange data between server and clients\n");
+		/* shaking hands and gather the other side info. */
+		if (ctx_hand_shake(&user_comm, &my_dest[i], &rem_dest[i])) {
+			fprintf(stderr, "Failed to exchange data between server and clients\n");
 			return 1;
 		}
-		ctx_print_pingpong_data(&rem_dest[i],&user_comm);
+		ctx_print_pingpong_data(&rem_dest[i], &user_comm);
 	}
 
-        if (user_param.work_rdma_cm == OFF)
-        {
-                if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0]))
-                {
-                        fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
-                        fprintf(stderr," Please Try to use a different IP version.\n\n");
-                        return 1;
-                }
-        }
-
 	if (user_param.work_rdma_cm == OFF) {
+		if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0])) {
+			fprintf(stderr, "\n Found Incompatibility issue with GID types.\n");
+			fprintf(stderr, " Please Try to use a different IP version.\n\n");
+			return 1;
+		}
+	}
 
-		if (ctx_connect(&ctx,rem_dest,&user_param,my_dest)) {
-			fprintf(stderr," Unable to Connect the HCA's through the link\n");
+	if (user_param.work_rdma_cm == OFF) {
+		if (ctx_connect(&ctx, rem_dest, &user_param, my_dest)) {
+			fprintf(stderr, " Unable to Connect the HCA's through the link\n");
 			return 1;
 		}
 	}
 
-	// An additional handshake is required after moving qp to RTR.
-	if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
-        fprintf(stderr,"Failed to exchange data between server and clients\n");
-        return 1;
-    }
+	/* An additional handshake is required after moving qp to RTR. */
+	if (ctx_hand_shake(&user_comm, &my_dest[0], &rem_dest[0])) {
+		fprintf(stderr, "Failed to exchange data between server and clients\n");
+		return 1;
+	}
 
-	// For half duplex tests, server just waits for client to exit
+	/* For half duplex tests, server just waits for client to exit */
 	if (user_param.machine == SERVER && !user_param.duplex) {
-
 		if (user_param.output == FULL_VERBOSITY) {
 			printf(RESULT_LINE);
 			printf((user_param.report_fmt == MBS ? RESULT_FMT : RESULT_FMT_G));
 			printf((user_param.cpu_util_data.enable ? RESULT_EXT_CPU_UTIL : RESULT_EXT));
 		}
 
-		if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
-                        fprintf(stderr," Failed to exchange data between server and clients\n");
-                        return FAILURE;
+		if (ctx_hand_shake(&user_comm, &my_dest[0], &rem_dest[0])) {
+			fprintf(stderr, " Failed to exchange data between server and clients\n");
+			return FAILURE;
 		}
 
-		xchg_bw_reports(&user_comm, &my_bw_rep,&rem_bw_rep,atof(user_param.rem_version));
+		xchg_bw_reports(&user_comm, &my_bw_rep, &rem_bw_rep, atof(user_param.rem_version));
 		print_full_bw_report(&user_param, &rem_bw_rep, NULL);
 
 		if (user_param.output == FULL_VERBOSITY) {
-	                printf(RESULT_LINE);
+			printf(RESULT_LINE);
 		}
 
-		if (ctx_close_connection(&user_comm,&my_dest[0],&rem_dest[0])) {
-			fprintf(stderr,"Failed to close connection between server and client\n");
+		if (ctx_close_connection(&user_comm, &my_dest[0], &rem_dest[0])) {
+			fprintf(stderr, "Failed to close connection between server and client\n");
 			return 1;
 		}
 
-		return destroy_ctx(&ctx,&user_param);
+		return destroy_ctx(&ctx, &user_param);
 	}
 
 	if (user_param.use_event) {
@@ -252,44 +254,45 @@ int main(int argc, char *argv[]) {
 		printf((user_param.report_fmt == MBS ? RESULT_FMT : RESULT_FMT_G));
 		printf((user_param.cpu_util_data.enable ? RESULT_EXT_CPU_UTIL : RESULT_EXT));
 	}
-	ctx_set_send_wqes(&ctx,&user_param,rem_dest);
+
+	ctx_set_send_wqes(&ctx, &user_param, rem_dest);
 
 	if (user_param.test_method == RUN_REGULAR || user_param.test_method == RUN_ALL) {
 
-		if(perform_warm_up(&ctx,&user_param)) {
-			fprintf(stderr,"Problems with warm up\n");
+		if (perform_warm_up(&ctx, &user_param)) {
+			fprintf(stderr, "Problems with warm up\n");
 			return 1;
 		}
 
-		if(user_param.duplex) {
-				if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
-					fprintf(stderr,"Failed to sync between server and client between different msg sizes\n");
-					return 1;
-				}
+		if (user_param.duplex) {
+			if (ctx_hand_shake(&user_comm, &my_dest[0], &rem_dest[0])) {
+				fprintf(stderr, "Failed to sync between server and client between different msg sizes\n");
+				return 1;
+			}
 		}
 
-		if(run_iter_bw(&ctx,&user_param)) {
-			fprintf(stderr," Error occured in run_iter function\n");
+		if (run_iter_bw(&ctx, &user_param)) {
+			fprintf(stderr, " Error occured in run_iter function\n");
 			return 1;
 		}
 
-		print_report_bw(&user_param,&my_bw_rep);
+		print_report_bw(&user_param, &my_bw_rep);
 
-                if (user_param.duplex) {
-			xchg_bw_reports(&user_comm, &my_bw_rep,&rem_bw_rep,atof(user_param.rem_version));
-                        print_full_bw_report(&user_param, &my_bw_rep, &rem_bw_rep);
-                }
+		if (user_param.duplex) {
+			xchg_bw_reports(&user_comm, &my_bw_rep, &rem_bw_rep, atof(user_param.rem_version));
+			print_full_bw_report(&user_param, &my_bw_rep, &rem_bw_rep);
+		}
 
 		if (user_param.report_both && user_param.duplex) {
 			printf(RESULT_LINE);
-			printf("\n Local results: \n");
+			printf("\n Local results:\n");
 			printf(RESULT_LINE);
 			printf((user_param.report_fmt == MBS ? RESULT_FMT : RESULT_FMT_G));
 			printf((user_param.cpu_util_data.enable ? RESULT_EXT_CPU_UTIL : RESULT_EXT));
 			print_full_bw_report(&user_param, &my_bw_rep, NULL);
 			printf(RESULT_LINE);
 
-			printf("\n Remote results: \n");
+			printf("\n Remote results:\n");
 			printf(RESULT_LINE);
 			printf((user_param.report_fmt == MBS ? RESULT_FMT : RESULT_FMT_G));
 			printf((user_param.cpu_util_data.enable ? RESULT_EXT_CPU_UTIL : RESULT_EXT));
@@ -297,8 +300,8 @@ int main(int argc, char *argv[]) {
 		}
 	} else if (user_param.test_method == RUN_INFINITELY) {
 
-		if(run_iter_bw_infinitely(&ctx,&user_param)) {
-			fprintf(stderr," Error occured while running infinitely! aborting ...\n");
+		if (run_iter_bw_infinitely(&ctx, &user_param)) {
+			fprintf(stderr, " Error occured while running infinitely! aborting ...\n");
 			return 1;
 		}
 	}
@@ -306,31 +309,31 @@ int main(int argc, char *argv[]) {
 	if (user_param.output == FULL_VERBOSITY) {
 		printf(RESULT_LINE);
 	}
-	// For half duplex tests, server just waits for client to exit
+	/* For half duplex tests, server just waits for client to exit */
 	if (user_param.machine == CLIENT && !user_param.duplex) {
 
-		if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
-			fprintf(stderr," Failed to exchange data between server and clients\n");
+		if (ctx_hand_shake(&user_comm, &my_dest[0], &rem_dest[0])) {
+			fprintf(stderr, " Failed to exchange data between server and clients\n");
 			return FAILURE;
 		}
 
-		xchg_bw_reports(&user_comm, &my_bw_rep,&rem_bw_rep,atof(user_param.rem_version));
+		xchg_bw_reports(&user_comm, &my_bw_rep, &rem_bw_rep, atof(user_param.rem_version));
 	}
 
-	if (ctx_close_connection(&user_comm,&my_dest[0],&rem_dest[0])) {
-		fprintf(stderr,"Failed to close connection between server and client\n");
+	if (ctx_close_connection(&user_comm, &my_dest[0], &rem_dest[0])) {
+		fprintf(stderr, "Failed to close connection between server and client\n");
 		return 1;
 	}
 
-	if (!user_param.is_bw_limit_passed && (user_param.is_limit_bw == ON ) ) {
-		fprintf(stderr,"Error: BW result is below bw limit\n");
+	if (!user_param.is_bw_limit_passed && (user_param.is_limit_bw == ON)) {
+		fprintf(stderr, "Error: BW result is below bw limit\n");
 		return 1;
 	}
 
-	if (!user_param.is_msgrate_limit_passed && (user_param.is_limit_bw == ON )) {
-		fprintf(stderr,"Error: Msg rate  is below msg_rate limit\n");
+	if (!user_param.is_msgrate_limit_passed && (user_param.is_limit_bw == ON)) {
+		fprintf(stderr, "Error: Msg rate  is below msg_rate limit\n");
 		return 1;
 	}
 
-	return destroy_ctx(&ctx,&user_param);
+	return destroy_ctx(&ctx, &user_param);
 }
diff --git a/src/atomic_lat.c b/src/atomic_lat.c
index a6525ff..b50c219 100755
--- a/src/atomic_lat.c
+++ b/src/atomic_lat.c
@@ -50,17 +50,16 @@
 /******************************************************************************
  *
  ******************************************************************************/
-int main(int argc, char *argv[]) {
-
-	int ret_parser;
-	struct report_options       report;
-	struct pingpong_context     ctx;
-	struct pingpong_dest	    *my_dest  = NULL;
-	struct pingpong_dest	    *rem_dest = NULL;
-	struct ibv_device           *ib_dev;
-	struct perftest_parameters  user_param;
+int main(int argc, char *argv[])
+{
+	int				ret_parser, i;
+	struct report_options		report;
+	struct pingpong_context		ctx;
+	struct pingpong_dest		*my_dest  = NULL;
+	struct pingpong_dest		*rem_dest = NULL;
+	struct ibv_device		*ib_dev;
+	struct perftest_parameters	user_param;
 	struct perftest_comm		user_comm;
-	int i;
 
 	/* init default values to user's parameters */
 	memset(&ctx,0,sizeof(struct pingpong_context));
@@ -78,38 +77,44 @@ int main(int argc, char *argv[]) {
 			fprintf(stderr," Parser function exited with Error\n");
 		return 1;
 	}
-	
-	if(user_param.use_xrc) {
+
+	if(user_param.use_xrc)
 		user_param.num_of_qps *= 2;
-	}
 
-	// Finding the IB device selected (or defalut if no selected).
+	/* Finding the IB device selected (or defalut if no selected). */
 	ib_dev = ctx_find_dev(user_param.ib_devname);
 	if (!ib_dev) {
 		fprintf(stderr," Unable to find the Infiniband/RoCE device\n");
 		return FAILURE;
 	}
 
-	// Getting the relevant context from the device
+	/* Getting the relevant context from the device */
 	ctx.context = ibv_open_device(ib_dev);
 	if (!ctx.context) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return 1;
 	}
 
-	if (ib_dev_name(ctx.context) == CONNECTIB)
-	{
+	#ifdef HAVE_MASKED_ATOMICS
+	if (check_masked_atomics_support(&ctx)) {
 		user_param.masked_atomics = 1;
 		user_param.use_exp = 1;
 	}
 
-	// See if MTU and link type are valid and supported.
+	if (user_param.masked_atomics && (user_param.work_rdma_cm || user_param.use_rdma_cm)) {
+		fprintf(stderr, "atomic test is not supported with -R/-z flag (rdma_cm) with this device.\n");
+		return 1;
+	}
+
+	#endif
+
+	/* See if MTU and link type are valid and supported. */
 	if (check_link(ctx.context,&user_param)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// copy the relevant user parameters to the comm struct + creating rdma_cm resources.
+	/* copy the relevant user parameters to the comm struct + creating rdma_cm resources. */
 	if (create_comm_struct(&user_comm,&user_param)) {
 		fprintf(stderr," Unable to create RDMA_CM resources\n");
 		return 1;
@@ -121,7 +126,7 @@ int main(int argc, char *argv[]) {
 		printf("************************************\n");
 	}
 
-	// Initialize the connection and print the local data.
+	/* Initialize the connection and print the local data. */
 	if (establish_connection(&user_comm)) {
 		fprintf(stderr," Unable to init the socket connection\n");
 		return FAILURE;
@@ -131,13 +136,13 @@ int main(int argc, char *argv[]) {
 
 	check_sys_data(&user_comm, &user_param);
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_mtu(ctx.context,&user_param, &user_comm)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// Print basic test information.
+	/* Print basic test information. */
 	ctx_print_test_info(&user_param);
 
 	ALLOCATE(my_dest , struct pingpong_dest , user_param.num_of_qps);
@@ -145,10 +150,10 @@ int main(int argc, char *argv[]) {
 	ALLOCATE(rem_dest , struct pingpong_dest , user_param.num_of_qps);
 	memset(rem_dest, 0, sizeof(struct pingpong_dest)*user_param.num_of_qps);
 
-	// Allocating arrays needed for the test.
+	/* Allocating arrays needed for the test. */
 	alloc_ctx(&ctx,&user_param);
 
-	// Create (if nessacery) the rdma_cm ids and channel.
+	/* Create (if nessacery) the rdma_cm ids and channel. */
 	if (user_param.work_rdma_cm == ON) {
 
 		if (user_param.machine == CLIENT) {
@@ -158,10 +163,10 @@ int main(int argc, char *argv[]) {
 			}
 
 		} else {
-    		if (create_rdma_resources(&ctx,&user_param)) {
+			if (create_rdma_resources(&ctx,&user_param)) {
 				fprintf(stderr," Unable to create the rdma_resources\n");
 				return FAILURE;
-    		}
+			}
 			if (rdma_server_connect(&ctx,&user_param)) {
 				fprintf(stderr,"Unable to perform rdma_client function\n");
 				return FAILURE;
@@ -170,14 +175,14 @@ int main(int argc, char *argv[]) {
 
 	} else {
 
-		// create all the basic IB resources (data buffer, PD, MR, CQ and events channel)
-	    if (ctx_init(&ctx,&user_param)) {
+		/* create all the basic IB resources (data buffer, PD, MR, CQ and events channel) */
+		if (ctx_init(&ctx,&user_param)) {
 			fprintf(stderr, " Couldn't create IB resources\n");
 			return FAILURE;
-	    }
+		}
 	}
 
-	// Set up the Connection.
+	/* Set up the Connection. */
 	if (set_up_connection(&ctx,&user_param,my_dest)) {
 		fprintf(stderr," Unable to set up socket connection\n");
 		return 1;
@@ -186,7 +191,7 @@ int main(int argc, char *argv[]) {
 	for (i=0; i < user_param.num_of_qps; i++)
 		ctx_print_pingpong_data(&my_dest[i],&user_comm);
 
-	// shaking hands and gather the other side info.
+	/* shaking hands and gather the other side info. */
 	if (ctx_hand_shake(&user_comm,my_dest,rem_dest)) {
 		fprintf(stderr,"Failed to exchange data between server and clients\n");
 		return 1;
@@ -195,7 +200,7 @@ int main(int argc, char *argv[]) {
 	user_comm.rdma_params->side = REMOTE;
 	for (i=0; i < user_param.num_of_qps; i++) {
 
-		// shaking hands and gather the other side info.
+		/* shaking hands and gather the other side info. */
 		if (ctx_hand_shake(&user_comm,&my_dest[i],&rem_dest[i])) {
 			fprintf(stderr,"Failed to exchange data between server and clients\n");
 			return 1;
@@ -204,42 +209,37 @@ int main(int argc, char *argv[]) {
 		ctx_print_pingpong_data(&rem_dest[i],&user_comm);
 	}
 
-        if (user_param.work_rdma_cm == OFF)
-        {
-                if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0]))
-                {
-                        fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
-                        fprintf(stderr," Please Try to use a different IP version.\n\n");
-                        return 1;
-                }
-        }
-
 	if (user_param.work_rdma_cm == OFF) {
+		if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0])) {
+			fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
+			fprintf(stderr," Please Try to use a different IP version.\n\n");
+			return 1;
+		}
+	}
 
+	if (user_param.work_rdma_cm == OFF) {
 		if (ctx_connect(&ctx,rem_dest,&user_param,my_dest)) {
 			fprintf(stderr," Unable to Connect the HCA's through the link\n");
 			return 1;
 		}
 	}
 
-	// An additional handshake is required after moving qp to RTR.
+	/* An additional handshake is required after moving qp to RTR. */
 	if (ctx_hand_shake(&user_comm,my_dest,rem_dest)) {
-        fprintf(stderr,"Failed to exchange data between server and clients\n");
-        return 1;
-    }
+		fprintf(stderr,"Failed to exchange data between server and clients\n");
+		return 1;
+	}
 
-	// Only Client post read request.
+	/* Only Client post read request. */
 	if (user_param.machine == SERVER) {
-
 		if (ctx_close_connection(&user_comm,my_dest,rem_dest)) {
-		 	fprintf(stderr,"Failed to close connection between server and client\n");
-		 	return 1;
+			fprintf(stderr,"Failed to close connection between server and client\n");
+			return 1;
 		}
 		if (user_param.output == FULL_VERBOSITY) {
 			printf(RESULT_LINE);
 		}
 		return 0;
-
 	}
 
 	if (user_param.use_event) {
@@ -262,8 +262,8 @@ int main(int argc, char *argv[]) {
 	user_param.test_type == ITERATIONS ? print_report_lat(&user_param) : print_report_lat_duration(&user_param);
 
 	if (ctx_close_connection(&user_comm,my_dest,rem_dest)) {
-	 	fprintf(stderr,"Failed to close connection between server and client\n");
-	 	return 1;
+		fprintf(stderr,"Failed to close connection between server and client\n");
+		return 1;
 	}
 
 	if (user_param.output == FULL_VERBOSITY) {
diff --git a/src/clock_test.c b/src/clock_test.c
index b585d74..aa47315 100644
--- a/src/clock_test.c
+++ b/src/clock_test.c
@@ -15,8 +15,7 @@ int main()
 	}
 
 	printf("Type CTRL-C to cancel.\n");
-	for(;;)
-	{
+	for (;;) {
 		c1 = get_cycles();
 		sleep(1);
 		c2 = get_cycles();
diff --git a/src/get_clock.c b/src/get_clock.c
index 40a220f..5a09b9f 100755
--- a/src/get_clock.c
+++ b/src/get_clock.c
@@ -44,6 +44,7 @@
 
 #include <unistd.h>
 #include <stdio.h>
+#include <string.h>
 #include "get_clock.h"
 
 #ifndef DEBUG
@@ -58,8 +59,8 @@
 #define USECSTART 100
 
 /*
- Use linear regression to calculate cycles per microsecond.
- http://en.wikipedia.org/wiki/Linear_regression#Parameter_estimation
+   Use linear regression to calculate cycles per microsecond.
+http://en.wikipedia.org/wiki/Linear_regression#Parameter_estimation
 */
 static double sample_get_cpu_mhz(void)
 {
@@ -90,7 +91,7 @@ static double sample_get_cpu_mhz(void)
 				return 0;
 			}
 		} while ((tv2.tv_sec - tv1.tv_sec) * 1000000 +
-			(tv2.tv_usec - tv1.tv_usec) < USECSTART + i * USECSTEP);
+				(tv2.tv_usec - tv1.tv_usec) < USECSTART + i * USECSTEP);
 
 		x[i] = (tv2.tv_sec - tv1.tv_sec) * 1000000 +
 			tv2.tv_usec - tv1.tv_usec;
@@ -148,15 +149,31 @@ static double proc_get_cpu_mhz(int no_cpu_freq_fail)
 		double m;
 		int rc;
 
-#if defined (__ia64__)
+		#if defined (__ia64__)
 		/* Use the ITC frequency on IA64 */
 		rc = sscanf(buf, "itc MHz : %lf", &m);
-#elif defined (__PPC__) || defined (__PPC64__)
+		#elif defined (__PPC__) || defined (__PPC64__)
 		/* PPC has a different format as well */
 		rc = sscanf(buf, "clock : %lf", &m);
-#else
+		#elif defined (__sparc__) && defined (__arch64__)
+		/*
+		 * on sparc the /proc/cpuinfo lines that hold
+		 * the cpu freq in HZ are as follow:
+		 * Cpu{cpu-num}ClkTck      : 00000000a9beeee4
+		 */
+		char *s;
+		unsigned val;
+
+		s = strstr(buf, "ClkTck\t: ");
+		if (!s)
+			continue;
+		s += (strlen("ClkTck\t: ") - strlen("0x"));
+		strncpy(s, "0x", strlen("0x"));
+		rc = sscanf(s, "%x", &val);
+		m = val/1000000;
+		#else
 		rc = sscanf(buf, "cpu MHz : %lf", &m);
-#endif
+		#endif
 
 		if (rc != 1)
 			continue;
@@ -169,16 +186,17 @@ static double proc_get_cpu_mhz(int no_cpu_freq_fail)
 		if ((delta / mhz > 0.02) && (print_flag ==0)) {
 			print_flag = 1;
 			fprintf(stderr, "Conflicting CPU frequency values"
-				" detected: %lf != %lf\n", mhz, m);
+					" detected: %lf != %lf\n", mhz, m);
 			if (no_cpu_freq_fail) {
 				fprintf(stderr, "Test integrity may be harmed !\n");
-			}else{
+			} else {
 				fclose(f);
 				return 0.0;
 			}
 			continue;
 		}
 	}
+
 	fclose(f);
 	return mhz;
 }
@@ -186,17 +204,15 @@ static double proc_get_cpu_mhz(int no_cpu_freq_fail)
 
 double get_cpu_mhz(int no_cpu_freq_fail)
 {
-#ifdef __s390x__
+	#ifdef __s390x__
 	return sample_get_cpu_mgz();
-#else
+	#else
 	double sample, proc, delta;
 	sample = sample_get_cpu_mhz();
 	proc = proc_get_cpu_mhz(no_cpu_freq_fail);
 	#ifdef __aarch64__
-	if (proc < 1) //no cpu_freq info in /proc/cpuinfo
-	{
+	if (proc < 1)
 		proc = sample;
-	}
 	#endif
 	if (!proc || !sample)
 		return 0;
@@ -204,13 +220,13 @@ double get_cpu_mhz(int no_cpu_freq_fail)
 	delta = proc > sample ? proc - sample : sample - proc;
 	if (delta / proc > 0.02) {
 		#if !defined (__PPC__) && !defined (__PPC64__)
-			fprintf(stderr, "Warning: measured timestamp frequency "
-					"%g differs from nominal %g MHz\n",
-					sample, proc);
-			if (!no_cpu_freq_fail)
-				fprintf(stderr, "         Add --CPU-freq flag to show report\n");
+		fprintf(stderr, "Warning: measured timestamp frequency "
+				"%g differs from nominal %g MHz\n",
+				sample, proc);
+		if (!no_cpu_freq_fail)
+			fprintf(stderr, "         Add --CPU-freq flag to show report\n");
 		#endif
-			return sample;
+		return sample;
 	}
 	return proc;
 #endif
diff --git a/src/get_clock.h b/src/get_clock.h
old mode 100644
new mode 100755
index 93928b2..858eb69
--- a/src/get_clock.h
+++ b/src/get_clock.h
@@ -74,19 +74,27 @@ static inline cycles_t get_cycles()
 typedef unsigned long long cycles_t;
 static inline cycles_t get_cycles(void)
 {
-       cycles_t        clk;
-       asm volatile("stck %0" : "=Q" (clk) : : "cc");
-       return clk >> 2;
+	cycles_t        clk;
+	asm volatile("stck %0" : "=Q" (clk) : : "cc");
+	return clk >> 2;
+}
+#elif defined(__sparc__) && defined(__arch64__)
+typedef unsigned long long cycles_t;
+static inline cycles_t get_cycles(void)
+{
+	cycles_t v;
+	asm volatile ("rd %%tick, %0" : "=r" (v) : );
+	return v;
 }
 #elif defined(__aarch64__)
 
 typedef unsigned long cycles_t;
 static inline cycles_t get_cycles()
 {
-        cycles_t cval;
-        asm volatile("isb" : : : "memory");
-        asm volatile("mrs %0, cntvct_el0" : "=r" (cval));
-        return cval;
+	cycles_t cval;
+	asm volatile("isb" : : : "memory");
+	asm volatile("mrs %0, cntvct_el0" : "=r" (cval));
+	return cval;
 }
 
 #else
diff --git a/src/multicast_resources.c b/src/multicast_resources.c
index 6ddd66d..f506361 100644
--- a/src/multicast_resources.c
+++ b/src/multicast_resources.c
@@ -17,7 +17,7 @@
 #include <pthread.h>
 #include "multicast_resources.h"
 
-// This is when we get sig handler from the user before we remove the join request.
+/* This is when we get sig handler from the user before we remove the join request. */
 struct mcast_parameters *sighandler_params;
 
 /******************************************************************************
@@ -43,9 +43,9 @@ static void signalCatcher (int sig)
  * prepare_mcast_mad
  ******************************************************************************/
 static void prepare_mcast_mad(uint8_t method,
-							  struct mcast_parameters *params,
-							  struct sa_mad_packet_t *samad_packet)	 {
-
+		struct mcast_parameters *params,
+		struct sa_mad_packet_t *samad_packet)
+{
 	uint8_t *ptr;
 	uint64_t comp_mask;
 
@@ -75,8 +75,8 @@ static void prepare_mcast_mad(uint8_t method,
 	ptr[48]                    = INSERTF(ptr[48], 0, MCMEMBER_JOINSTATE_FULL_MEMBER, 0, 4);
 
 	comp_mask = SUBN_ADM_COMPMASK_MGID | SUBN_ADM_COMPMASK_PORT_GID | SUBN_ADM_COMPMASK_Q_KEY |
-				SUBN_ADM_COMPMASK_P_KEY | SUBN_ADM_COMPMASK_TCLASS | SUBN_ADM_COMPMASK_SL |
-				SUBN_ADM_COMPMASK_FLOW_LABEL | SUBN_ADM_COMPMASK_JOIN_STATE;
+		SUBN_ADM_COMPMASK_P_KEY | SUBN_ADM_COMPMASK_TCLASS | SUBN_ADM_COMPMASK_SL |
+		SUBN_ADM_COMPMASK_FLOW_LABEL | SUBN_ADM_COMPMASK_JOIN_STATE;
 
 	samad_packet->ComponentMask = htonll(comp_mask);
 }
@@ -84,22 +84,22 @@ static void prepare_mcast_mad(uint8_t method,
 /******************************************************************************
  * check_mad_status
  ******************************************************************************/
-static int check_mad_status(struct sa_mad_packet_t *samad_packet) {
-
+static int check_mad_status(struct sa_mad_packet_t *samad_packet)
+{
 	uint8_t *ptr;
 	uint32_t user_trans_id;
 	uint16_t mad_header_status;
 
 	ptr = samad_packet->mad_header_buf;
 
-	// the upper 32 bits of TransactionID were set by the kernel
-    user_trans_id = ntohl(*(uint32_t *)(ptr + 12));
+	/* the upper 32 bits of TransactionID were set by the kernel */
+	user_trans_id = ntohl(*(uint32_t *)(ptr + 12));
 
-	// check the TransactionID to make sure this is the response
-	// for the join/leave multicast group request we posted
+	/* check the TransactionID to make sure this is the response */
+	/* for the join/leave multicast group request we posted */
 	if (user_trans_id != DEF_TRANS_ID) {
 		fprintf(stderr, "received a mad with TransactionID 0x%x, when expecting 0x%x\n",
-			(unsigned int)user_trans_id, (unsigned int)DEF_TRANS_ID);;
+				(unsigned int)user_trans_id, (unsigned int)DEF_TRANS_ID);;
 		return 1;
 	}
 
@@ -119,10 +119,9 @@ static int check_mad_status(struct sa_mad_packet_t *samad_packet) {
 /******************************************************************************
  * get_mlid_from_mad
  ******************************************************************************/
-static void get_mlid_from_mad(struct sa_mad_packet_t *samad_packet,uint16_t *mlid) {
-
+static void get_mlid_from_mad(struct sa_mad_packet_t *samad_packet,uint16_t *mlid)
+{
 	uint8_t *ptr;
-
 	ptr = samad_packet->SubnetAdminData;
 	*mlid = ntohs(*(uint16_t *)(ptr + 36));
 }
@@ -130,8 +129,8 @@ static void get_mlid_from_mad(struct sa_mad_packet_t *samad_packet,uint16_t *mli
 /******************************************************************************
  * set_multicast_gid
  ******************************************************************************/
-void set_multicast_gid(struct mcast_parameters *params,uint32_t qp_num,int is_client) {
-
+void set_multicast_gid(struct mcast_parameters *params,uint32_t qp_num,int is_client)
+{
 	uint8_t mcg_gid[16] = MCG_GID;
 	const char *pstr = params->user_mgid;
 	char *term = NULL;
@@ -167,8 +166,8 @@ void set_multicast_gid(struct mcast_parameters *params,uint32_t qp_num,int is_cl
 /******************************************************************************
  * join_multicast_group
  ******************************************************************************/
-int join_multicast_group(subn_adm_method method,struct mcast_parameters *params) {
-
+int join_multicast_group(subn_adm_method method,struct mcast_parameters *params)
+{
 	int portid = -1;
 	int agentid = -1;
 	void *umad_buff = NULL;
@@ -176,7 +175,7 @@ int join_multicast_group(subn_adm_method method,struct mcast_parameters *params)
 	int length = MAD_SIZE;
 	int test_result = 0;
 
-	// mlid will be assigned to the new LID after the join
+	/* mlid will be assigned to the new LID after the join */
 	if (umad_init() < 0) {
 		fprintf(stderr, "failed to init the UMAD library\n");
 		goto cleanup;
@@ -223,7 +222,7 @@ int join_multicast_group(subn_adm_method method,struct mcast_parameters *params)
 		goto cleanup;
 	}
 
-	//  "Join multicast group" message was sent
+	/*  "Join multicast group" message was sent */
 	if (method == SUBN_ADM_METHOD_SET) {
 		get_mlid_from_mad((struct sa_mad_packet_t*)mad,&params->mlid);
 		params->mcast_state |= MCAST_IS_JOINED;
@@ -259,4 +258,3 @@ cleanup:
 /******************************************************************************
  * End
  ******************************************************************************/
-
diff --git a/src/multicast_resources.h b/src/multicast_resources.h
index 1bfa043..1e879b9 100644
--- a/src/multicast_resources.h
+++ b/src/multicast_resources.h
@@ -35,23 +35,23 @@
 #ifndef MULTICAST_RESOURCES_H
 #define MULTICAST_RESOURCES_H
 
- /* Multicast Module for perftest.
-  *
-  * Description :
-  *
-  *   This file contains the structures and methods for implementing a multiple
-  *   multicast groups in user space enviroment.
-  *	  The module is in use in "send_bw" and "send_lat" ,but can be used on other
-  *	  applications and can generate more methods and serve more benchmarks.
-  *   The Module uses only the structire defined here , enabling generic use of it.
-  *
-  * Defined Types :
-  *
-  *   mcast_parameters - Contains all the parameters needed for this module.
-  *   mcast_group      - The multicast group entitiy itself.
-  *   mcg_qp		   - Is a QP structure that is attahced to the group.
-  *
-  */
+/* Multicast Module for perftest.
+ *
+ * Description :
+ *
+ *   This file contains the structures and methods for implementing a multiple
+ *   multicast groups in user space enviroment.
+ *	  The module is in use in "send_bw" and "send_lat" ,but can be used on other
+ *	  applications and can generate more methods and serve more benchmarks.
+ *   The Module uses only the structire defined here , enabling generic use of it.
+ *
+ * Defined Types :
+ *
+ *   mcast_parameters - Contains all the parameters needed for this module.
+ *   mcast_group      - The multicast group entitiy itself.
+ *   mcg_qp		   - Is a QP structure that is attahced to the group.
+ *
+ */
 
 
 /************************************************************************
@@ -69,7 +69,7 @@
 #define MAX_POLL_ITERATION_TIMEOUT  1000000
 #define MCG_GID {255,1,0,0,0,2,201,133,0,0,0,0,0,0,0,0}
 
-//  Definitions section for MADs
+/* Definitions section for MADs */
 #define SUBN_ADM_ATTR_MC_MEMBER_RECORD 0x38
 #define MANAGMENT_CLASS_SUBN_ADM       0x03 	  /* Subnet Administration class */
 #define MCMEMBER_JOINSTATE_FULL_MEMBER 0x1
@@ -79,7 +79,7 @@
 #define DEF_TCLASS                     0
 #define DEF_FLOW_LABLE                 0
 
-// Macro for 64 bit variables to switch to from net
+/* Macro for 64 bit variables to switch to from net */
 #ifndef ntohll
 #define ntohll(x) (((uint64_t)(ntohl((int)((x << 32) >> 32))) << 32) | (unsigned int)ntohl(((int)(x >> 32))))
 #endif
@@ -87,30 +87,30 @@
 #define htonll(x) ntohll(x)
 #endif
 
-// generate a bit mask S bits width
+/* generate a bit mask S bits width */
 #define MASK32(S)  ( ((uint32_t) ~0L) >> (32-(S)) )
 
-// generate a bit mask with bits O+S..O set (assumes 32 bit integer).
+/* generate a bit mask with bits O+S..O set (assumes 32 bit integer). */
 #define BITS32(O,S) ( MASK32(S) << (O) )
 
-// extract S bits from (u_int32_t)W with offset O and shifts them O places to the right
+/* extract S bits from (u_int32_t)W with offset O and shifts them O places to the right */
 #define EXTRACT32(W,O,S) ( ((W)>>(O)) & MASK32(S) )
 
-// insert S bits with offset O from field F into word W (u_int32_t)
+/* insert S bits with offset O from field F into word W (u_int32_t) */
 #define INSERT32(W,F,O,S) (/*(W)=*/ ( ((W) & (~BITS32(O,S)) ) | (((F) & MASK32(S))<<(O)) ))
 
 #ifndef INSERTF
-	#define INSERTF(W,O1,F,O2,S) (INSERT32(W, EXTRACT32(F, O2, S), O1, S) )
+#define INSERTF(W,O1,F,O2,S) (INSERT32(W, EXTRACT32(F, O2, S), O1, S) )
 #endif
 
 
-// according to Table 187 in the IB spec 1.2.1
+/* according to Table 187 in the IB spec 1.2.1 */
 typedef enum {
 	SUBN_ADM_METHOD_SET    = 0x2,
 	SUBN_ADM_METHOD_DELETE = 0x15
 } subn_adm_method;
 
-// Utilities for Umad Usage.
+/* Utilities for Umad Usage. */
 typedef enum {
 	SUBN_ADM_COMPMASK_MGID         = (1ULL << 0),
 	SUBN_ADM_COMPMASK_PORT_GID     = (1ULL << 1),
@@ -132,27 +132,27 @@ typedef enum {
  *   Multicast data structures.						    			    *
  ************************************************************************/
 
-// Needed parameters for creating a multiple multicast group entity.
+/* Needed parameters for creating a multiple multicast group entity. */
 struct mcast_parameters {
-    int             	  num_qps_on_group;
-	int					  is_user_mgid;
-	int					  mcast_state;
-	int 				  ib_port;
-	uint16_t			  mlid;
-	uint16_t			  base_mlid;
-	const char			  *user_mgid;
-	char				  *ib_devname;
-	uint16_t 			  pkey;
-	uint16_t			  sm_lid;
-	uint8_t 			  sm_sl;
-	union ibv_gid 		  port_gid;
-	union ibv_gid 		  mgid;
-	// In case it's a latency test.
-	union ibv_gid         base_mgid;
-	int is_2nd_mgid_used;
+	int             	num_qps_on_group;
+	int			is_user_mgid;
+	int			mcast_state;
+	int 			ib_port;
+	uint16_t		mlid;
+	uint16_t		base_mlid;
+	const char		*user_mgid;
+	char			*ib_devname;
+	uint16_t 		pkey;
+	uint16_t		sm_lid;
+	uint8_t 		sm_sl;
+	union ibv_gid 		port_gid;
+	union ibv_gid		mgid;
+	/* In case it's a latency test. */
+	union ibv_gid		base_mgid;
+	int 			is_2nd_mgid_used;
 };
 
-// according to Table 195 in the IB spec 1.2.1
+/* according to Table 195 in the IB spec 1.2.1 */
 
 struct sa_mad_packet_t {
 	u_int8_t		mad_header_buf[24];
diff --git a/src/perftest_communication.c b/src/perftest_communication.c
index 503e7ed..4a5c2e1 100755
--- a/src/perftest_communication.c
+++ b/src/perftest_communication.c
@@ -29,11 +29,11 @@ static inline int valid_mtu_size(int mtu_size)
 static inline int ipv6_addr_v4mapped(const struct in6_addr *a)
 {
 	return ((a->s6_addr32[0] | a->s6_addr32[1]) |
-		(a->s6_addr32[2] ^ htonl(0x0000ffff))) == 0UL ||
-		/* IPv4 encoded multicast addresses */
-		(a->s6_addr32[0] == htonl(0xff0e0000) &&
-		((a->s6_addr32[1] |
-		(a->s6_addr32[2] ^ htonl(0x0000ffff))) == 0UL));
+			(a->s6_addr32[2] ^ htonl(0x0000ffff))) == 0UL ||
+			/* IPv4 encoded multicast addresses */
+			(a->s6_addr32[0] == htonl(0xff0e0000) &&
+			((a->s6_addr32[1] |
+			(a->s6_addr32[2] ^ htonl(0x0000ffff))) == 0UL));
 }
 
 
@@ -41,10 +41,11 @@ static inline int ipv6_addr_v4mapped(const struct in6_addr *a)
  *
  ******************************************************************************/
 
-double bswap_double(double x) {
+double bswap_double(double x)
+{
 	union {
-	    double ddata;
-	    uint64_t u64data;
+		double ddata;
+		uint64_t u64data;
 	} d1, d2;
 
 	d1.ddata = x;
@@ -57,8 +58,8 @@ double bswap_double(double x) {
  ******************************************************************************/
 
 
-static int post_one_recv_wqe(struct pingpong_context *ctx) {
-
+static int post_one_recv_wqe(struct pingpong_context *ctx)
+{
 	struct ibv_recv_wr wr;
 	struct ibv_recv_wr *bad_wr;
 	struct ibv_sge list;
@@ -83,8 +84,8 @@ static int post_one_recv_wqe(struct pingpong_context *ctx) {
 /******************************************************************************
  *
  ******************************************************************************/
-static int post_recv_to_get_ah(struct pingpong_context *ctx) {
-
+static int post_recv_to_get_ah(struct pingpong_context *ctx)
+{
 	struct ibv_recv_wr wr;
 	struct ibv_recv_wr *bad_wr;
 	struct ibv_sge list;
@@ -111,8 +112,8 @@ static int post_recv_to_get_ah(struct pingpong_context *ctx) {
  *
  ******************************************************************************/
 static int send_qp_num_for_ah(struct pingpong_context *ctx,
-							  struct perftest_parameters *user_param) {
-
+		struct perftest_parameters *user_param)
+{
 	struct ibv_send_wr wr;
 	struct ibv_send_wr *bad_wr;
 	struct ibv_sge list;
@@ -131,7 +132,7 @@ static int send_qp_num_for_ah(struct pingpong_context *ctx,
 	wr.opcode     = IBV_WR_SEND_WITH_IMM;
 	wr.send_flags = IBV_SEND_SIGNALED;
 	wr.next       = NULL;
-    wr.imm_data   = htonl(ctx->qp[0]->qp_num);
+	wr.imm_data   = htonl(ctx->qp[0]->qp_num);
 
 	wr.wr.ud.ah = ctx->ah[0];
 	wr.wr.ud.remote_qpn  = user_param->rem_ud_qpn;
@@ -143,7 +144,9 @@ static int send_qp_num_for_ah(struct pingpong_context *ctx,
 		return 1;
 	}
 
-	do { ne = ibv_poll_cq(ctx->send_cq, 1,&wc);} while (ne == 0);
+	do {
+		ne = ibv_poll_cq(ctx->send_cq, 1,&wc);
+	} while (ne == 0);
 
 	if (wc.status || wc.opcode != IBV_WC_SEND || wc.wr_id != 0) {
 		fprintf(stderr, " Couldn't post send my QP number %d\n",(int)wc.status);
@@ -158,14 +161,16 @@ static int send_qp_num_for_ah(struct pingpong_context *ctx,
  *
  ******************************************************************************/
 static int create_ah_from_wc_recv(struct pingpong_context *ctx,
-								  struct perftest_parameters *user_param) {
-
-    struct ibv_qp_attr attr;
-    struct ibv_qp_init_attr init_attr;
+		struct perftest_parameters *user_param)
+{
+	struct ibv_qp_attr attr;
+	struct ibv_qp_init_attr init_attr;
 	struct ibv_wc wc;
 	int ne;
 
-	do { ne = ibv_poll_cq(ctx->recv_cq,1,&wc);} while (ne == 0);
+	do {
+		ne = ibv_poll_cq(ctx->recv_cq,1,&wc);
+	} while (ne == 0);
 
 	if (wc.status || !(wc.opcode & IBV_WC_RECV) || wc.wr_id != 0) {
 		fprintf(stderr, "Bad wc status when trying to create AH -- %d -- %d \n",(int)wc.status,(int)wc.wr_id);
@@ -173,9 +178,9 @@ static int create_ah_from_wc_recv(struct pingpong_context *ctx,
 	}
 
 	ctx->ah[0] = ibv_create_ah_from_wc(ctx->pd,&wc,(struct ibv_grh*)ctx->buf,ctx->cm_id->port_num);
-    user_param->rem_ud_qpn = ntohl(wc.imm_data);
+	user_param->rem_ud_qpn = ntohl(wc.imm_data);
 	ibv_query_qp(ctx->qp[0],&attr, IBV_QP_QKEY,&init_attr);
-    user_param->rem_ud_qkey = attr.qkey;
+	user_param->rem_ud_qkey = attr.qkey;
 
 	return 0;
 }
@@ -185,9 +190,9 @@ static int create_ah_from_wc_recv(struct pingpong_context *ctx,
  *
  ******************************************************************************/
 static int ethernet_write_keys(struct pingpong_dest *my_dest,
-							   struct perftest_comm *comm) {
-
-    if (my_dest->gid_index == -1) {
+		struct perftest_comm *comm)
+{
+	if (my_dest->gid_index == -1) {
 
 		char msg[KEY_MSG_SIZE];
 
@@ -200,7 +205,7 @@ static int ethernet_write_keys(struct pingpong_dest *my_dest,
 			return 1;
 		}
 
-    } else {
+	} else {
 		char msg[KEY_MSG_SIZE_GID];
 		sprintf(msg,KEY_PRINT_FMT_GID, my_dest->lid,my_dest->out_reads,
 				my_dest->qpn,my_dest->psn, my_dest->rkey, my_dest->vaddr,
@@ -222,18 +227,18 @@ static int ethernet_write_keys(struct pingpong_dest *my_dest,
 
 	}
 
-    return 0;
+	return 0;
 }
 
 /******************************************************************************
  *
  ******************************************************************************/
 static int ethernet_read_keys(struct pingpong_dest *rem_dest,
-							  struct perftest_comm *comm)  {
-
+		struct perftest_comm *comm)
+{
 	if (rem_dest->gid_index == -1) {
 
-        int parsed;
+		int parsed;
 		char msg[KEY_MSG_SIZE];
 
 		if (read(comm->rdma_params->sockfd, msg, sizeof msg) != sizeof msg) {
@@ -242,8 +247,8 @@ static int ethernet_read_keys(struct pingpong_dest *rem_dest,
 		}
 
 		parsed = sscanf(msg,KEY_PRINT_FMT,(unsigned int*)&rem_dest->lid,
-						&rem_dest->out_reads,&rem_dest->qpn,
-						&rem_dest->psn, &rem_dest->rkey,&rem_dest->vaddr,&rem_dest->srqn);
+				&rem_dest->out_reads,&rem_dest->qpn,
+				&rem_dest->psn, &rem_dest->rkey,&rem_dest->vaddr,&rem_dest->srqn);
 
 		if (parsed != 7) {
 			fprintf(stderr, "Couldn't parse line <%.*s>\n",(int)sizeof msg, msg);
@@ -265,38 +270,38 @@ static int ethernet_read_keys(struct pingpong_dest *rem_dest,
 		term = strpbrk(pstr, ":");
 		memcpy(tmp, pstr, term - pstr);
 		tmp[term - pstr] = 0;
-		rem_dest->lid = (int)strtol(tmp, NULL, 16); // LID
+		rem_dest->lid = (int)strtol(tmp, NULL, 16); /*LID*/
 
 		pstr += term - pstr + 1;
 		term = strpbrk(pstr, ":");
 		memcpy(tmp, pstr, term - pstr);
 		tmp[term - pstr] = 0;
-		rem_dest->out_reads = (int)strtol(tmp, NULL, 16); // OUT_READS
+		rem_dest->out_reads = (int)strtol(tmp, NULL, 16); /*OUT_READS*/
 
 		pstr += term - pstr + 1;
 		term = strpbrk(pstr, ":");
 		memcpy(tmp, pstr, term - pstr);
 		tmp[term - pstr] = 0;
-		rem_dest->qpn = (int)strtol(tmp, NULL, 16); // QPN
+		rem_dest->qpn = (int)strtol(tmp, NULL, 16); /*QPN*/
 
 		pstr += term - pstr + 1;
 		term = strpbrk(pstr, ":");
 		memcpy(tmp, pstr, term - pstr);
 		tmp[term - pstr] = 0;
-		rem_dest->psn = (int)strtol(tmp, NULL, 16); // PSN
+		rem_dest->psn = (int)strtol(tmp, NULL, 16); /*PSN*/
 
 		pstr += term - pstr + 1;
 		term = strpbrk(pstr, ":");
 		memcpy(tmp, pstr, term - pstr);
 		tmp[term - pstr] = 0;
-		rem_dest->rkey = (unsigned)strtoul(tmp, NULL, 16); // RKEY
+		rem_dest->rkey = (unsigned)strtoul(tmp, NULL, 16); /*RKEY*/
 
 		pstr += term - pstr + 1;
 		term = strpbrk(pstr, ":");
 		memcpy(tmp, pstr, term - pstr);
 		tmp[term - pstr] = 0;
 
-		rem_dest->vaddr = strtoull(tmp, NULL, 16); // VA
+		rem_dest->vaddr = strtoull(tmp, NULL, 16); /*VA*/
 
 		for (i = 0; i < 15; ++i) {
 			pstr += term - pstr + 1;
@@ -318,7 +323,7 @@ static int ethernet_read_keys(struct pingpong_dest *rem_dest,
 		term = strpbrk(pstr, ":");
 		memcpy(tmp, pstr, term - pstr);
 		tmp[term - pstr] = 0;
-		rem_dest->srqn = (unsigned)strtoul(tmp, NULL, 16); // SRQN
+		rem_dest->srqn = (unsigned)strtoul(tmp, NULL, 16); /*SRQN*/
 
 	}
 	return 0;
@@ -328,15 +333,15 @@ static int ethernet_read_keys(struct pingpong_dest *rem_dest,
  *
  ******************************************************************************/
 static int rdma_write_keys(struct pingpong_dest *my_dest,
-						   struct perftest_comm *comm) {
-
+		struct perftest_comm *comm)
+{
 	struct ibv_send_wr wr;
 	struct ibv_send_wr *bad_wr;
 	struct ibv_sge list;
 	struct ibv_wc wc;
 	int ne;
 
-#ifdef HAVE_ENDIAN
+	#ifdef HAVE_ENDIAN
 	int i;
 	struct pingpong_dest m_my_dest;
 
@@ -354,9 +359,9 @@ static int rdma_write_keys(struct pingpong_dest *my_dest,
 	}
 
 	memcpy(comm->rdma_ctx->buf, &m_my_dest, sizeof(struct pingpong_dest));
-#else
+	#else
 	memcpy(comm->rdma_ctx->buf, &my_dest, sizeof(struct pingpong_dest));
-#endif
+	#endif
 	list.addr   = (uintptr_t)comm->rdma_ctx->buf;
 	list.length = sizeof(struct pingpong_dest);
 	list.lkey   = comm->rdma_ctx->mr->lkey;
@@ -390,11 +395,11 @@ static int rdma_write_keys(struct pingpong_dest *my_dest,
  *
  ******************************************************************************/
 static int rdma_read_keys(struct pingpong_dest *rem_dest,
-						  struct perftest_comm *comm) {
-
-#ifdef HAVE_ENDIAN
+		struct perftest_comm *comm)
+{
+	#ifdef HAVE_ENDIAN
 	struct pingpong_dest a_rem_dest;
-#endif
+	#endif
 	struct ibv_wc wc;
 	int ne;
 
@@ -408,17 +413,17 @@ static int rdma_read_keys(struct pingpong_dest *rem_dest,
 	}
 
 	#ifdef HAVE_ENDIAN
-        memcpy(&a_rem_dest,comm->rdma_ctx->buf,sizeof(struct pingpong_dest));
-        rem_dest->lid   = ntohl(a_rem_dest.lid);
-        rem_dest->out_reads     = ntohl(a_rem_dest.out_reads);
-        rem_dest->qpn   = ntohl(a_rem_dest.qpn);
-        rem_dest->psn   = ntohl(a_rem_dest.psn);
-        rem_dest->rkey  = ntohl(a_rem_dest.rkey);
-
-        rem_dest->vaddr         = be64toh(a_rem_dest.vaddr);
-        memcpy(rem_dest->gid.raw, &(a_rem_dest.gid), 16*sizeof(uint8_t));
+	memcpy(&a_rem_dest,comm->rdma_ctx->buf,sizeof(struct pingpong_dest));
+	rem_dest->lid   = ntohl(a_rem_dest.lid);
+	rem_dest->out_reads     = ntohl(a_rem_dest.out_reads);
+	rem_dest->qpn   = ntohl(a_rem_dest.qpn);
+	rem_dest->psn   = ntohl(a_rem_dest.psn);
+	rem_dest->rkey  = ntohl(a_rem_dest.rkey);
+
+	rem_dest->vaddr         = be64toh(a_rem_dest.vaddr);
+	memcpy(rem_dest->gid.raw, &(a_rem_dest.gid), 16*sizeof(uint8_t));
 	#else
-		memcpy(&rem_dest,comm->rdma_ctx->buf,sizeof(struct pingpong_dest));
+	memcpy(&rem_dest,comm->rdma_ctx->buf,sizeof(struct pingpong_dest));
 	#endif
 
 	if (post_one_recv_wqe(comm->rdma_ctx)) {
@@ -429,11 +434,11 @@ static int rdma_read_keys(struct pingpong_dest *rem_dest,
 	return 0;
 }
 
- /******************************************************************************
+/******************************************************************************
  *
  ******************************************************************************/
-static int ethernet_client_connect(struct perftest_comm *comm) {
-
+static int ethernet_client_connect(struct perftest_comm *comm)
+{
 	struct addrinfo *res, *t;
 	struct addrinfo hints;
 	char *service;
@@ -473,8 +478,8 @@ static int ethernet_client_connect(struct perftest_comm *comm) {
 /******************************************************************************
  *
  ******************************************************************************/
-static int ethernet_server_connect(struct perftest_comm *comm) {
-
+static int ethernet_server_connect(struct perftest_comm *comm)
+{
 	struct addrinfo *res, *t;
 	struct addrinfo hints;
 	char *service;
@@ -528,9 +533,9 @@ static int ethernet_server_connect(struct perftest_comm *comm) {
  *
  ******************************************************************************/
 int set_up_connection(struct pingpong_context *ctx,
-					  struct perftest_parameters *user_param,
-					  struct pingpong_dest *my_dest) {
-
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *my_dest)
+{
 	int num_of_qps = user_param->num_of_qps;
 	int num_of_qps_per_port = user_param->num_of_qps / 2;
 
@@ -543,33 +548,30 @@ int set_up_connection(struct pingpong_context *ctx,
 
 	srand48(getpid() * time(NULL));
 
-	//in xrc with bidirectional,
-	//there are send qps and recv qps. the actual number of send/recv qps
-	//is num_of_qps / 2.
+	/*in xrc with bidirectional,
+	there are send qps and recv qps. the actual number of send/recv qps
+	is num_of_qps / 2.
+	*/
 	if ( (user_param->connection_type == DC || user_param->use_xrc) && (user_param->duplex || user_param->tst == LAT)) {
 		num_of_qps /= 2;
 		num_of_qps_per_port = num_of_qps / 2;
 	}
 
 	if (user_param->gid_index != -1) {
-        	if (ibv_query_port(ctx->context,user_param->ib_port,&attr))
-	                return 0;
+		if (ibv_query_port(ctx->context,user_param->ib_port,&attr))
+			return 0;
 
-		if (user_param->use_gid_user)
-		{
+		if (user_param->use_gid_user) {
 			if (ibv_query_gid(ctx->context,user_param->ib_port,user_param->gid_index,&temp_gid)) {
-                                return -1;
-                        }
-		}
-		else
-		{
+				return -1;
+			}
+		} else {
 			for (i=0 ; i < attr.gid_tbl_len; i++) {
 				if (ibv_query_gid(ctx->context,user_param->ib_port,i,&temp_gid)) {	
 					return -1;
 				}
 				is_ipv4 = ipv6_addr_v4mapped((struct in6_addr *)temp_gid.raw);
-				if ( (user_param->ipv6 && !is_ipv4) || (!user_param->ipv6 && is_ipv4) )
-				{
+				if ((user_param->ipv6 && !is_ipv4) || (!user_param->ipv6 && is_ipv4)) {
 					user_param->gid_index = i;
 					break;
 				}
@@ -577,28 +579,21 @@ int set_up_connection(struct pingpong_context *ctx,
 		}
 	}
 
-	if (user_param->dualport==ON)  //dual port case
-	{
-		if (user_param->gid_index2 != -1)
-		{
+	if (user_param->dualport==ON) {
+		if (user_param->gid_index2 != -1) {
 			if (ibv_query_port(ctx->context,user_param->ib_port2,&attr))
 				return 0;
 
-			if (user_param->use_gid_user)
-			{
-				if (ibv_query_gid(ctx->context,user_param->ib_port2,user_param->gid_index,&temp_gid2)) {
+			if (user_param->use_gid_user) {
+				if (ibv_query_gid(ctx->context,user_param->ib_port2,user_param->gid_index,&temp_gid2))
 					return -1;
-				}
-			}
-			else
-			{
+			} else {
 				for (i=0 ; i < attr.gid_tbl_len; i++) {
 					if (ibv_query_gid(ctx->context,user_param->ib_port2,i,&temp_gid2)) {
 						return -1;
 					}
 					is_ipv4 = ipv6_addr_v4mapped((struct in6_addr *)temp_gid2.raw);
-					if ( (user_param->ipv6 && !is_ipv4) || (!user_param->ipv6 && is_ipv4) )
-					{
+					if ((user_param->ipv6 && !is_ipv4) || (!user_param->ipv6 && is_ipv4)) {
 						user_param->gid_index = i;
 						break;
 					}
@@ -610,10 +605,11 @@ int set_up_connection(struct pingpong_context *ctx,
 	for (i = 0; i < user_param->num_of_qps; i++) {
 
 		if (user_param->dualport == ON) {
-			// first half of qps are for ib_port and second half are for ib_port2
-			// in xrc with bidirectional, the first half of qps are xrc_send qps and
-			// the second half are xrc_recv qps. the first half of the send/recv qps
-			// are for ib_port1 and the second half are for ib_port2
+			/*first half of qps are for ib_port and second half are for ib_port2
+			in xrc with bidirectional, the first half of qps are xrc_send qps and
+			the second half are xrc_recv qps. the first half of the send/recv qps
+			are for ib_port1 and the second half are for ib_port2
+			*/
 			if (i % num_of_qps < num_of_qps_per_port) {
 				my_dest[i].lid   = ctx_get_local_lid(ctx->context,user_param->ib_port);
 				my_dest[i].gid_index = user_param->gid_index;
@@ -621,7 +617,7 @@ int set_up_connection(struct pingpong_context *ctx,
 				my_dest[i].lid   = ctx_get_local_lid(ctx->context,user_param->ib_port2);
 				my_dest[i].gid_index = user_param->gid_index2;
 			}
-		// single-port case
+			/*single-port case*/
 		} else {
 			my_dest[i].lid   = ctx_get_local_lid(ctx->context,user_param->ib_port);
 			my_dest[i].gid_index = user_param->gid_index;
@@ -631,7 +627,7 @@ int set_up_connection(struct pingpong_context *ctx,
 		my_dest[i].psn   = lrand48() & 0xffffff;
 		my_dest[i].rkey  = ctx->mr->rkey;
 
-		// Each qp gives his receive buffer address .
+		/* Each qp gives his receive buffer address.*/
 		my_dest[i].out_reads = user_param->out_reads;
 		my_dest[i].vaddr = (uintptr_t)ctx->buf + (user_param->num_of_qps + i)*BUFF_SIZE(ctx->size,ctx->cycle_buffer);
 
@@ -640,22 +636,21 @@ int set_up_connection(struct pingpong_context *ctx,
 			if (i % num_of_qps < num_of_qps_per_port)
 				memcpy(my_dest[i].gid.raw,temp_gid.raw ,16);
 
-			else {
+			else
 				memcpy(my_dest[i].gid.raw,temp_gid2.raw ,16);
-			}
-
-		} else
+		} else {
 			memcpy(my_dest[i].gid.raw,temp_gid.raw ,16);
+		}
 
-/*
-		// We do not fail test upon lid above RoCE.
+		/*
+		We do not fail test upon lid above RoCE.
 		if ( (user_param->gid_index < 0) ||  ((user_param->gid_index2 < 0) && (user_param->dualport == ON))  ){
 			if (!my_dest[i].lid) {
 				fprintf(stderr," Local lid 0x0 detected. Is an SM running? \n");
 				return -1;
 			}
 		}
-*/
+		*/
 	}
 
 	#ifdef HAVE_XRCD
@@ -668,7 +663,7 @@ int set_up_connection(struct pingpong_context *ctx,
 		}
 	}
 	#endif
-	
+
 	#ifdef HAVE_DC
 	if(user_param->machine == SERVER || user_param->duplex || user_param->tst == LAT) {
 		if (user_param->connection_type == DC) {
@@ -687,15 +682,15 @@ int set_up_connection(struct pingpong_context *ctx,
 /******************************************************************************
  *
  ******************************************************************************/
-int rdma_client_connect(struct pingpong_context *ctx,struct perftest_parameters *user_param) {
-
-    char *service;
-    int temp,num_of_retry= NUM_OF_RETRIES;
-    struct sockaddr_in sin;
-    struct addrinfo *res;
-    struct rdma_cm_event *event;
-    struct rdma_conn_param conn_param;
-    struct addrinfo hints;
+int rdma_client_connect(struct pingpong_context *ctx,struct perftest_parameters *user_param)
+{
+	char *service;
+	int temp,num_of_retry= NUM_OF_RETRIES;
+	struct sockaddr_in sin;
+	struct addrinfo *res;
+	struct rdma_cm_event *event;
+	struct rdma_conn_param conn_param;
+	struct addrinfo hints;
 
 	memset(&hints, 0, sizeof hints);
 	hints.ai_family   = AF_UNSPEC;
@@ -712,36 +707,36 @@ int rdma_client_connect(struct pingpong_context *ctx,struct perftest_parameters
 
 	while (1) {
 
-	if (num_of_retry == 0) {
-	    fprintf(stderr, "Received %d times ADDR_ERROR\n",NUM_OF_RETRIES);
-	    return FAILURE;
-	}
+		if (num_of_retry == 0) {
+			fprintf(stderr, "Received %d times ADDR_ERROR\n",NUM_OF_RETRIES);
+			return FAILURE;
+		}
 
-	if (rdma_resolve_addr(ctx->cm_id, NULL,(struct sockaddr *)&sin,2000)) {
-	    fprintf(stderr, "rdma_resolve_addr failed\n");
-	    return FAILURE;
-	}
+		if (rdma_resolve_addr(ctx->cm_id, NULL,(struct sockaddr *)&sin,2000)) {
+			fprintf(stderr, "rdma_resolve_addr failed\n");
+			return FAILURE;
+		}
 
-	if (rdma_get_cm_event(ctx->cm_channel,&event)) {
-	    fprintf(stderr, "rdma_get_cm_events failed\n");
-	    return FAILURE;
-	}
+		if (rdma_get_cm_event(ctx->cm_channel,&event)) {
+			fprintf(stderr, "rdma_get_cm_events failed\n");
+			return FAILURE;
+		}
 
-	if (event->event == RDMA_CM_EVENT_ADDR_ERROR) {
-	    num_of_retry--;
-	    rdma_ack_cm_event(event);
-	    continue;
-	}
+		if (event->event == RDMA_CM_EVENT_ADDR_ERROR) {
+			num_of_retry--;
+			rdma_ack_cm_event(event);
+			continue;
+		}
 
-	if (event->event != RDMA_CM_EVENT_ADDR_RESOLVED) {
-	    fprintf(stderr, "unexpected CM event %d\n",event->event);
-	    rdma_ack_cm_event(event);
-	    return FAILURE;
-	}
+		if (event->event != RDMA_CM_EVENT_ADDR_RESOLVED) {
+			fprintf(stderr, "unexpected CM event %d\n",event->event);
+			rdma_ack_cm_event(event);
+			return FAILURE;
+		}
 
-	rdma_ack_cm_event(event);
-	break;
-   }
+		rdma_ack_cm_event(event);
+		break;
+	}
 
 	if (user_param->tos != DEF_TOS) {
 
@@ -751,7 +746,7 @@ int rdma_client_connect(struct pingpong_context *ctx,struct perftest_parameters
 		}
 	}
 
-    while (1) {
+	while (1) {
 
 		if (num_of_retry <= 0) {
 			fprintf(stderr, "Received %d times ADDR_ERROR - aborting\n",NUM_OF_RETRIES);
@@ -800,7 +795,7 @@ int rdma_client_connect(struct pingpong_context *ctx,struct perftest_parameters
 	}
 	user_param->work_rdma_cm = temp;
 	conn_param.retry_count = user_param->retry_count;
-        conn_param.rnr_retry_count = 7;
+	conn_param.rnr_retry_count = 7;
 
 	if (user_param->work_rdma_cm == OFF) {
 
@@ -828,15 +823,15 @@ int rdma_client_connect(struct pingpong_context *ctx,struct perftest_parameters
 
 	if (user_param->connection_type == UD) {
 
-        user_param->rem_ud_qpn  = event->param.ud.qp_num;
-        user_param->rem_ud_qkey = event->param.ud.qkey;
+		user_param->rem_ud_qpn  = event->param.ud.qp_num;
+		user_param->rem_ud_qkey = event->param.ud.qkey;
 
 		ctx->ah[0] = ibv_create_ah(ctx->pd,&event->param.ud.ah_attr);
 
 		if (!ctx->ah) {
 			printf(" Unable to create address handler for UD QP\n");
 			return FAILURE;
-        }
+		}
 
 		if (user_param->tst == LAT || (user_param->tst == BW && user_param->duplex)) {
 
@@ -855,7 +850,8 @@ int rdma_client_connect(struct pingpong_context *ctx,struct perftest_parameters
  *
  ******************************************************************************/
 int retry_rdma_connect(struct pingpong_context *ctx,
-			struct perftest_parameters *user_param) {
+		struct perftest_parameters *user_param)
+{
 	int i, max_retries = 10;
 	int delay = 100000; /* 100 millisec */
 
@@ -863,7 +859,7 @@ int retry_rdma_connect(struct pingpong_context *ctx,
 		if (create_rdma_resources(ctx,user_param)) {
 			fprintf(stderr," Unable to create rdma resources\n");
 			return FAILURE;
-	    	}
+		}
 		if (rdma_client_connect(ctx,user_param) == SUCCESS)
 			return SUCCESS;
 
@@ -878,11 +874,11 @@ int retry_rdma_connect(struct pingpong_context *ctx,
 }
 
 /******************************************************************************
-+ *
-+ ******************************************************************************/
- int rdma_server_connect(struct pingpong_context *ctx,
-						struct perftest_parameters *user_param) {
-
+  + *
+  + ******************************************************************************/
+int rdma_server_connect(struct pingpong_context *ctx,
+		struct perftest_parameters *user_param)
+{
 	int temp;
 	struct addrinfo *res;
 	struct rdma_cm_event *event;
@@ -972,7 +968,7 @@ int retry_rdma_connect(struct pingpong_context *ctx,
 	if (rdma_accept(ctx->cm_id, &conn_param)) {
 		fprintf(stderr, "Function rdma_accept failed\n");
 		return 1;
-    }
+	}
 
 	if (user_param->work_rdma_cm && user_param->connection_type == UD) {
 
@@ -986,17 +982,16 @@ int retry_rdma_connect(struct pingpong_context *ctx,
 
 	rdma_ack_cm_event(event);
 	rdma_destroy_id(ctx->cm_id_control);
-    freeaddrinfo(res);
-    return 0;
+	freeaddrinfo(res);
+	return 0;
 }
 
 /******************************************************************************
  *
  ******************************************************************************/
 int create_comm_struct(struct perftest_comm *comm,
-					   struct perftest_parameters *user_param) {
-
-
+		struct perftest_parameters *user_param)
+{
 	ALLOCATE(comm->rdma_params,struct perftest_parameters,1);
 	memset(comm->rdma_params,0,sizeof(struct perftest_parameters));
 
@@ -1045,8 +1040,8 @@ int create_comm_struct(struct perftest_comm *comm,
 /******************************************************************************
  *
  ******************************************************************************/
-int establish_connection(struct perftest_comm *comm) {
-
+int establish_connection(struct perftest_comm *comm)
+{
 	int (*ptr)(struct perftest_comm*);
 
 	if (comm->rdma_params->use_rdma_cm) {
@@ -1061,7 +1056,7 @@ int establish_connection(struct perftest_comm *comm) {
 		} else {
 
 			if (rdma_server_connect(comm->rdma_ctx,comm->rdma_params)) {
-				fprintf(stderr," Unable to perform rdma_client function\n");
+				fprintf(stderr," Unable to perform rdma_server function\n");
 				return 1;
 			}
 		}
@@ -1083,9 +1078,9 @@ int establish_connection(struct perftest_comm *comm) {
  *
  ******************************************************************************/
 int ctx_hand_shake(struct perftest_comm *comm,
-				   struct pingpong_dest *my_dest,
-				   struct pingpong_dest *rem_dest) {
-
+		struct pingpong_dest *my_dest,
+		struct pingpong_dest *rem_dest)
+{
 	int (*read_func_ptr) (struct pingpong_dest*,struct perftest_comm*);
 	int (*write_func_ptr)(struct pingpong_dest*,struct perftest_comm*);
 
@@ -1110,7 +1105,7 @@ int ctx_hand_shake(struct perftest_comm *comm,
 			return 1;
 		}
 
-	// Server side will wait for the client side to reach the write function.
+		/*Server side will wait for the client side to reach the write function.*/
 	} else {
 
 		if ((*read_func_ptr)(rem_dest,comm)) {
@@ -1134,9 +1129,9 @@ int ctx_hand_shake(struct perftest_comm *comm,
  *
  ******************************************************************************/
 int ctx_xchg_data_ethernet( struct perftest_comm *comm,
-				   void *my_data,
-				   void *rem_data,int size) {
-
+		void *my_data,
+		void *rem_data,int size)
+{
 	if (comm->rdma_params->servername) {
 		if (ethernet_write_data(comm, (char *) my_data, size)) {
 			fprintf(stderr," Unable to write to socket/rdam_cm\n");
@@ -1148,7 +1143,7 @@ int ctx_xchg_data_ethernet( struct perftest_comm *comm,
 			return 1;
 		}
 
-	// Server side will wait for the client side to reach the write function.
+		/*Server side will wait for the client side to reach the write function.*/
 	} else {
 
 		if (ethernet_read_data(comm, (char *) rem_data, size)) {
@@ -1168,9 +1163,9 @@ int ctx_xchg_data_ethernet( struct perftest_comm *comm,
  *
  ******************************************************************************/
 int ctx_xchg_data_rdma( struct perftest_comm *comm,
-				   void *my_data,
-				   void *rem_data,int size) {
-
+		void *my_data,
+		void *rem_data,int size)
+{
 	if (comm->rdma_params->servername) {
 		if (rdma_write_data(my_data,comm,size)) {
 			fprintf(stderr," Unable to write to socket/rdam_cm\n");
@@ -1182,7 +1177,7 @@ int ctx_xchg_data_rdma( struct perftest_comm *comm,
 			return 1;
 		}
 
-	// Server side will wait for the client side to reach the write function.
+		/*Server side will wait for the client side to reach the write function.*/
 	} else {
 
 		if (rdma_read_data(rem_data,comm,size)) {
@@ -1203,8 +1198,8 @@ int ctx_xchg_data_rdma( struct perftest_comm *comm,
  *
  ******************************************************************************/
 int rdma_read_data(void *data,
-						  struct perftest_comm *comm, int size) {
-
+		struct perftest_comm *comm, int size)
+{
 	struct ibv_wc wc;
 	int ne;
 
@@ -1231,8 +1226,8 @@ int rdma_read_data(void *data,
  *
  ******************************************************************************/
 int rdma_write_data(void *data,
-						   struct perftest_comm *comm, int size) {
-
+		struct perftest_comm *comm, int size)
+{
 	struct ibv_send_wr wr;
 	struct ibv_send_wr *bad_wr;
 	struct ibv_sge list;
@@ -1271,22 +1266,22 @@ int rdma_write_data(void *data,
 /******************************************************************************
  *
  ******************************************************************************/
-int ethernet_write_data(struct perftest_comm *comm, char *msg, size_t size) {
-
-		if (write(comm->rdma_params->sockfd, msg, size) != size) {
-			perror("client write");
-			fprintf(stderr, "Couldn't send reports\n");
-			return 1;
-		}
+int ethernet_write_data(struct perftest_comm *comm, char *msg, size_t size)
+{
+	if (write(comm->rdma_params->sockfd, msg, size) != size) {
+		perror("client write");
+		fprintf(stderr, "Couldn't send reports\n");
+		return 1;
+	}
 
-    return 0;
+	return 0;
 
 }
 /******************************************************************************
  *
  ******************************************************************************/
-int ethernet_read_data(struct perftest_comm *comm, char *recv_msg, size_t size) {
-
+int ethernet_read_data(struct perftest_comm *comm, char *recv_msg, size_t size)
+{
 	if (read(comm->rdma_params->sockfd, recv_msg, size) != size) {
 		fprintf(stderr, "ethernet_read_data: Couldn't read reports\n");
 		return 1;
@@ -1300,23 +1295,23 @@ int ethernet_read_data(struct perftest_comm *comm, char *recv_msg, size_t size)
  *
  ******************************************************************************/
 int ctx_xchg_data( struct perftest_comm *comm,
-				   void *my_data,
-				   void *rem_data,int size) {
-
+		void *my_data,
+		void *rem_data,int size)
+{
 	if (comm->rdma_params->use_rdma_cm || comm->rdma_params->work_rdma_cm)
 		ctx_xchg_data_rdma(comm,my_data,rem_data,size);
 	else
 		ctx_xchg_data_ethernet(comm,my_data,rem_data,size);
 
-    return 0;
+	return 0;
 }
 
 /******************************************************************************
  *
  ******************************************************************************/
 void xchg_bw_reports (struct perftest_comm *comm, struct bw_report_data *my_bw_rep,
-							struct bw_report_data *rem_bw_rep, float remote_version) {
-
+		struct bw_report_data *rem_bw_rep, float remote_version)
+{
 	struct bw_report_data temp;
 	int size;
 
@@ -1338,7 +1333,7 @@ void xchg_bw_reports (struct perftest_comm *comm, struct bw_report_data *my_bw_r
 	/*******************Exchange Reports*******************/
 	if (ctx_xchg_data(comm, (void*) (&temp.size), (void*) (&rem_bw_rep->size), sizeof(unsigned long))) {
 		fprintf(stderr," Failed to exchange data between server and clients\n");
-			exit(1);
+		exit(1);
 	}
 
 	size = (remote_version >= 5.33) ? sizeof(uint64_t) : sizeof(int);
@@ -1360,9 +1355,8 @@ void xchg_bw_reports (struct perftest_comm *comm, struct bw_report_data *my_bw_r
 		exit(1);
 	}
 
-	//exchange data for report per port feature. should keep compatibility
-	if (comm->rdma_params->report_per_port)
-	{
+	/*exchange data for report per port feature. should keep compatibility*/
+	if (comm->rdma_params->report_per_port) {
 		if (ctx_xchg_data(comm, (void*) (&temp.bw_avg_p1), (void*) (&rem_bw_rep->bw_avg_p1), sizeof(double))) {
 			fprintf(stderr," Failed to exchange data between server and clients\n");
 			exit(1);
@@ -1402,13 +1396,13 @@ void xchg_bw_reports (struct perftest_comm *comm, struct bw_report_data *my_bw_r
  *
  ******************************************************************************/
 void ctx_print_pingpong_data(struct pingpong_dest *element,
-							 struct perftest_comm *comm) {
-
+		struct perftest_comm *comm)
+{
 	int is_there_mgid,local_mgid,remote_mgid;
 	if (comm->rdma_params->output != FULL_VERBOSITY)
 		return;
-	// First of all we print the basic format.
-    printf(BASIC_ADDR_FMT,sideArray[comm->rdma_params->side],element->lid,element->qpn,element->psn);
+	/*First of all we print the basic format.*/
+	printf(BASIC_ADDR_FMT,sideArray[comm->rdma_params->side],element->lid,element->qpn,element->psn);
 
 	switch (comm->rdma_params->verb) {
 		case 2  : printf(READ_FMT,element->out_reads);
@@ -1418,7 +1412,6 @@ void ctx_print_pingpong_data(struct pingpong_dest *element,
 
 	if (comm->rdma_params->use_xrc) {
 		printf(XRC_FMT,element->srqn);
-
 	} else if (comm->rdma_params->connection_type == DC){
 		printf(DC_FMT,element->srqn);
 	}
@@ -1434,11 +1427,11 @@ void ctx_print_pingpong_data(struct pingpong_dest *element,
 		printf(PERF_GID_FMT,gidArray[comm->rdma_params->use_mcg && is_there_mgid],
 				element->gid.raw[0], element->gid.raw[1],
 				element->gid.raw[2], element->gid.raw[3],
-			    element->gid.raw[4], element->gid.raw[5],
-			    element->gid.raw[6], element->gid.raw[7],
-			   	element->gid.raw[8], element->gid.raw[9],
-			    element->gid.raw[10],element->gid.raw[11],
-			    element->gid.raw[12],element->gid.raw[13],
+				element->gid.raw[4], element->gid.raw[5],
+				element->gid.raw[6], element->gid.raw[7],
+				element->gid.raw[8], element->gid.raw[9],
+				element->gid.raw[10],element->gid.raw[11],
+				element->gid.raw[12],element->gid.raw[13],
 				element->gid.raw[14],element->gid.raw[15]);
 	}
 }
@@ -1447,21 +1440,21 @@ void ctx_print_pingpong_data(struct pingpong_dest *element,
  *
  ******************************************************************************/
 int ctx_close_connection(struct perftest_comm *comm,
-						 struct pingpong_dest *my_dest,
-						 struct pingpong_dest *rem_dest) {
-
-	// Signal client is finished.
-    if (ctx_hand_shake(comm,my_dest,rem_dest)) {
-        return 1;
-    }
+		struct pingpong_dest *my_dest,
+		struct pingpong_dest *rem_dest)
+{
+	/*Signal client is finished.*/
+	if (ctx_hand_shake(comm,my_dest,rem_dest)) {
+		return 1;
+	}
 
 	if (!comm->rdma_params->use_rdma_cm && !comm->rdma_params->work_rdma_cm) {
 
-        if (write(comm->rdma_params->sockfd,"done",sizeof "done") != sizeof "done") {
-                perror(" Client write");
-                fprintf(stderr,"Couldn't write to socket\n");
-                return -1;
-        }
+		if (write(comm->rdma_params->sockfd,"done",sizeof "done") != sizeof "done") {
+			perror(" Client write");
+			fprintf(stderr,"Couldn't write to socket\n");
+			return -1;
+		}
 
 		close(comm->rdma_params->sockfd);
 		return 0;
@@ -1473,8 +1466,8 @@ int ctx_close_connection(struct perftest_comm *comm,
 /******************************************************************************
  *
  ******************************************************************************/
-void exchange_versions(struct perftest_comm *user_comm, struct perftest_parameters *user_param) {
-
+void exchange_versions(struct perftest_comm *user_comm, struct perftest_parameters *user_param)
+{
 	if (!user_param->dont_xchg_versions) {
 		if (ctx_xchg_data(user_comm,(void*)(&user_param->version),(void*)(&user_param->rem_version),sizeof(user_param->rem_version))) {
 			fprintf(stderr," Failed to exchange data between server and clients\n");
@@ -1494,9 +1487,8 @@ void check_sys_data(struct perftest_comm *user_comm, struct perftest_parameters
 	int m_cycle_buffer = hton_int(user_param->cycle_buffer);
 	int m_cache_line_size = hton_int(user_param->cache_line_size);
 
-	//keep compatibility between older versions, without this feature.
-	if ( !(atof(user_param->rem_version) >= 5.32) )
-	{
+	/*keep compatibility between older versions, without this feature.*/
+	if ( !(atof(user_param->rem_version) >= 5.32) ) {
 		return;
 	}
 
@@ -1514,13 +1506,12 @@ void check_sys_data(struct perftest_comm *user_comm, struct perftest_parameters
 	rem_cycle_buffer = ntoh_int(rem_cycle_buffer);
 	rem_cache_line_size = ntoh_int(rem_cache_line_size);
 
-	//take the max and update usr_param
+	/*take the max and update user_param*/
 	user_param->cycle_buffer = (rem_cycle_buffer > user_param->cycle_buffer) ? rem_cycle_buffer : user_param->cycle_buffer;
 	user_param->cache_line_size = (rem_cache_line_size > user_param->cache_line_size) ? rem_cache_line_size : user_param->cache_line_size;
 
-	//update user_comm as well
-	if (user_param->use_rdma_cm)
-	{
+	/*update user_comm as well*/
+	if (user_param->use_rdma_cm) {
 		user_comm->rdma_ctx->buff_size = user_param->cycle_buffer;
 	}
 
@@ -1546,7 +1537,7 @@ int check_mtu(struct ibv_context *context,struct perftest_parameters *user_param
 			if (strverscmp(user_param->rem_version, "5.1") >= 0) {
 				sprintf(cur,"%d",curr_mtu);
 
-				//fix a buffer overflow issue in ppc.
+				/*fix a buffer overflow issue in ppc.*/
 				size_of_cur = (strverscmp(user_param->rem_version, "5.31") >= 0) ? sizeof(char[2]) : sizeof(int);
 
 				if (ctx_xchg_data(user_comm,(void*)(cur),(void*)(rem),size_of_cur)) {
@@ -1559,12 +1550,10 @@ int check_mtu(struct ibv_context *context,struct perftest_parameters *user_param
 				user_param->curr_mtu = (enum ibv_mtu)(curr_mtu);
 			}
 		} else {
-                	user_param->curr_mtu = (enum ibv_mtu)(curr_mtu);
+			user_param->curr_mtu = (enum ibv_mtu)(curr_mtu);
 		}
 	}
 
-	//exchange_mtu(&user_comm, &user_param);
-
 	if (user_param->connection_type == UD && user_param->size > MTU_SIZE(user_param->curr_mtu)) {
 
 		if (user_param->test_method == RUN_ALL) {
@@ -1573,7 +1562,7 @@ int check_mtu(struct ibv_context *context,struct perftest_parameters *user_param
 		}
 		user_param->size = MTU_SIZE(user_param->curr_mtu);
 	}
-	//checking msg size in raw ethernet
+	/*checking msg size in raw ethernet*/
 	if (user_param->connection_type == RawEth){
 		if (user_param->size > user_param->curr_mtu) {
 			fprintf(stderr," Max msg size in RawEth is MTU %d\n",user_param->curr_mtu);
@@ -1589,11 +1578,11 @@ int check_mtu(struct ibv_context *context,struct perftest_parameters *user_param
 }
 
 int ctx_check_gid_compatibility(struct pingpong_dest *my_dest,
-                                         struct pingpong_dest *rem_dest)
+		struct pingpong_dest *rem_dest)
 {
 	int gid_type1, gid_type2;
 
-	//ipv4 - 1 , ipv6 - 0
+	/*ipv4 - 1 , ipv6 - 0 */
 	gid_type1 = ipv6_addr_v4mapped((struct in6_addr *)my_dest->gid.raw);
 	gid_type2 = ipv6_addr_v4mapped((struct in6_addr *)rem_dest->gid.raw);
 
diff --git a/src/perftest_communication.h b/src/perftest_communication.h
index 78081b6..a317f9a 100755
--- a/src/perftest_communication.h
+++ b/src/perftest_communication.h
@@ -44,63 +44,63 @@
 #include <rdma/rdma_cma.h>
 #include "perftest_resources.h"
 
-//Macro for 64 bit variables to switch to/from net
+/* Macro for 64 bit variables to switch to/from net */
 #if __BYTE_ORDER == __BIG_ENDIAN || __BYTE_ORDER == __LITTLE_ENDIAN
-#  if __BYTE_ORDER == __BIG_ENDIAN
-#    define ntoh_64(x) (x)
-#    define hton_64(x) (x)
-#    define ntoh_double(x) (x)
-#    define hton_double(x) (x)
-#  else
-#    define ntoh_64(x) bswap_64(x)
-#    define hton_64(x) bswap_64(x)
-#    define ntoh_double(x) bswap_double(x)
-#    define hton_double(x) bswap_double(x)
-#  endif
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define ntoh_64(x) (x)
+#define hton_64(x) (x)
+#define ntoh_double(x) (x)
+#define hton_double(x) (x)
 #else
-#  error "Only BIG_ENDIAN and LITTLE_ENDIAN are supported."
+#define ntoh_64(x) bswap_64(x)
+#define hton_64(x) bswap_64(x)
+#define ntoh_double(x) bswap_double(x)
+#define hton_double(x) bswap_double(x)
+#endif
+#else
+#error "Only BIG_ENDIAN and LITTLE_ENDIAN are supported."
 #endif
 
-// long is 64-bit in LP64 mode, 32-bit in LLP64 mode.
+/* long is 64-bit in LP64 mode, 32-bit in LLP64 mode. */
 #if defined(_LP64) || defined(__LP64__)
-#  define ntoh_long(x) ntoh_64(x)
-#  define hton_long(x) hton_64(x)
+#define ntoh_long(x) ntoh_64(x)
+#define hton_long(x) hton_64(x)
 #else
-#  define ntoh_long(x) ntohl(x)
-#  define hton_long(x) htonl(x)
+#define ntoh_long(x) ntohl(x)
+#define hton_long(x) htonl(x)
 #endif
 
-// int is 32-bit in both LP64 and LLP64 modes.
+/* int is 32-bit in both LP64 and LLP64 modes. */
 #define ntoh_int(x) (int) ntohl((uint32_t) (x))
 #define hton_int(x) (int) htonl((uint32_t) (x))
 
-#define KEY_MSG_SIZE 	 (59)   // Message size without gid.
-#define KEY_MSG_SIZE_GID (108)   // Message size with gid (MGID as well).
+#define KEY_MSG_SIZE 	 (59)   /* Message size without gid. */
+#define KEY_MSG_SIZE_GID (108)   /* Message size with gid (MGID as well). */
 #define SYNC_SPEC_ID	 (5)
 
-// The Format of the message we pass through sockets , without passing Gid.
+/* The Format of the message we pass through sockets , without passing Gid. */
 #define KEY_PRINT_FMT "%04x:%04x:%06x:%06x:%08x:%016Lx:%08x"
 
-// The Format of the message we pass through sockets (With Gid).
+/* The Format of the message we pass through sockets (With Gid). */
 #define KEY_PRINT_FMT_GID "%04x:%04x:%06x:%06x:%08x:%016Lx:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%08x:"
 
-// The Basic print format for all verbs.
+/* The Basic print format for all verbs. */
 #define BASIC_ADDR_FMT " %s address: LID %#04x QPN %#06x PSN %#06x"
 
-// Addition format string for READ - the outstanding reads.
+/* Addition format string for READ - the outstanding reads. */
 #define READ_FMT       " OUT %#04x"
 
-// The print format of the pingpong_dest element for RDMA verbs.
+/* The print format of the pingpong_dest element for RDMA verbs. */
 #define RDMA_FMT       " RKey %#08x VAddr %#016Lx"
 
-// The print number of SRQ in case of XRC
+/* The print number of SRQ in case of XRC */
 #define XRC_FMT 	   " SRQn %#08x"
 #define DC_FMT         " SRQn %#08x"
 
-// The print format of a global address or a multicast address.
+/* The print format of a global address or a multicast address. */
 #define PERF_GID_FMT " %s: %02d:%02d:%02d:%02d:%02d:%02d:%02d:%02d:%02d:%02d:%02d:%02d:%02d:%02d:%02d:%02d\n"
 
-// The print format of a global address or a multicast address.
+/* The print format of a global address or a multicast address. */
 #define PERF_RAW_MGID_FMT " %s: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n"
 
 struct perftest_comm {
@@ -131,7 +131,7 @@ double bswap_double(double x);
  * Return Value : SUCCESS,FAILURE.
  */
 int create_comm_struct (struct perftest_comm *comm,
-						struct perftest_parameters *user_param);
+		struct perftest_parameters *user_param);
 
 
 /* set_up_connection .
@@ -147,8 +147,8 @@ int create_comm_struct (struct perftest_comm *comm,
  * Return Value : SUCCESS,FAILURE.
  */
 int set_up_connection(struct pingpong_context *ctx,
-					  struct perftest_parameters *user_param,
-					  struct pingpong_dest *my_dest);
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *my_dest);
 
 /* establish_connection .
  *
@@ -176,7 +176,7 @@ int establish_connection(struct perftest_comm *comm);
  * Return Value : SUCCESS,FAILURE.
  */
 int rdma_client_connect(struct pingpong_context *ctx,
-						struct perftest_parameters *user_param);
+		struct perftest_parameters *user_param);
 
 /* retry_rdma_connect .
  *
@@ -190,7 +190,7 @@ int rdma_client_connect(struct pingpong_context *ctx,
  * Return Value : SUCCESS,FAILURE.
  */
 int retry_rdma_connect(struct pingpong_context *ctx,
-						struct perftest_parameters *user_param);
+		struct perftest_parameters *user_param);
 
 /* rdma_server_connect .
  *
@@ -203,7 +203,7 @@ int retry_rdma_connect(struct pingpong_context *ctx,
  * Return Value : SUCCESS,FAILURE.
  */
 int rdma_server_connect(struct pingpong_context *ctx,
-						struct perftest_parameters *user_param);
+		struct perftest_parameters *user_param);
 /* ctx_hand_shake .
  *
  * Description :
@@ -223,8 +223,8 @@ int rdma_server_connect(struct pingpong_context *ctx,
  * Return Value : 0 upon success. -1 if it fails.
  */
 int ctx_hand_shake(struct perftest_comm *comm,
-				   struct pingpong_dest *my_dest,
-				   struct pingpong_dest *rem_dest);
+		struct pingpong_dest *my_dest,
+		struct pingpong_dest *rem_dest);
 
 
 
@@ -240,7 +240,7 @@ int ctx_hand_shake(struct perftest_comm *comm,
  *  element - The element to print.
  */
 void ctx_print_pingpong_data(struct pingpong_dest *element,
-							 struct perftest_comm *comm);
+		struct perftest_comm *comm);
 
 /* ctx_close_connection .
  *
@@ -257,8 +257,8 @@ void ctx_print_pingpong_data(struct pingpong_dest *element,
  * Return Value : 0 upon success. -1 if it fails.
  */
 int ctx_close_connection(struct perftest_comm *comm,
-				         struct pingpong_dest *my_dest,
-				         struct pingpong_dest *rem_dest);
+		struct pingpong_dest *my_dest,
+		struct pingpong_dest *rem_dest);
 
 /* ctx_xchg_data .
  *
@@ -279,8 +279,8 @@ int ctx_close_connection(struct perftest_comm *comm,
  * Return Value : 0 upon success. -1 if it fails.
  */
 int ctx_xchg_data( struct perftest_comm *comm,
-				   void *my_data,
-				   void *rem_data,int size);
+		void *my_data,
+		void *rem_data,int size);
 
 /* ethernet_write_data .
  *
@@ -313,7 +313,7 @@ int ethernet_write_data(struct perftest_comm *comm, char *msg, size_t size);
  *  size   - size of the message
  * Return Value : 0 upon success. -1 if it fails.
  */
-int ethernet_read_data(struct perftest_comm *comm, char *recv_msg, size_t size);;
+int ethernet_read_data(struct perftest_comm *comm, char *recv_msg, size_t size);
 
 /* rdma_write_data .
  *
@@ -400,8 +400,8 @@ int ctx_xchg_data_rdma( struct perftest_comm *comm, void *my_data, void *rem_dat
  * Return Value : 0 upon success. -1 if it fails.
  */
 void xchg_bw_reports (struct perftest_comm *comm, struct bw_report_data *my_bw_rep,
-                                                        struct bw_report_data *rem_bw_rep, float remote_version);
-														
+		struct bw_report_data *rem_bw_rep, float remote_version);
+
 /* exchange_versions.
  *
  * Description :
@@ -432,7 +432,7 @@ void check_sys_data(struct perftest_comm *user_comm, struct perftest_parameters
 int check_mtu(struct ibv_context *context,struct perftest_parameters *user_param, struct perftest_comm *user_comm);
 
 int ctx_check_gid_compatibility(struct pingpong_dest *my_dest,
-                                         struct pingpong_dest *rem_dest);
+		struct pingpong_dest *rem_dest);
 
 #endif /* PERFTEST_COMMUNICATION_H */
 
diff --git a/src/perftest_parameters.c b/src/perftest_parameters.c
index 9463040..482f416 100755
--- a/src/perftest_parameters.c
+++ b/src/perftest_parameters.c
@@ -27,46 +27,40 @@ static const char *atomicTypesStr[] = {"CMP_AND_SWAP","FETCH_AND_ADD"};
  *		*addr - pointer to output array
  *
  * Return Value : SUCCESS, FAILURE.
-******************************************************************************/
+ ******************************************************************************/
 static int parse_mac_from_str(char *mac, u_int8_t *addr)
 {
 	char tmpMac[MAC_LEN+1];
 	char *tmpField;
 	int fieldNum = 0;
 
-	if (strlen(mac) != MAC_LEN)
-	{
+	if (strlen(mac) != MAC_LEN) {
 		fprintf(stderr, "invalid MAC length\n");
 		return FAILURE;
 	}
-	if (addr == NULL)
-	{
+	if (addr == NULL) {
 		fprintf(stderr, "invalid  output addr array\n");
 		return FAILURE;
 	}
 
 	strcpy(tmpMac, mac);
 	tmpField = strtok(tmpMac, ":");
-	while (tmpField != NULL && fieldNum < MAC_ARR_LEN)
-	{
-	  char *chk;
-	  int tmpVal;
-	  tmpVal = strtoul(tmpField, &chk, HEX_BASE);
-	  if (tmpVal > 0xff)
-	  {
-		fprintf(stderr, "field %d value %X out of range\n", fieldNum, tmpVal);
-		return FAILURE;
-	  }
-	  if (*chk != 0)
-	  {
-		fprintf(stderr, "Non-digit character %c (%0x) detected in field %d\n", *chk, *chk, fieldNum);
-		return FAILURE;
-	  }
-	  addr[fieldNum++] = (u_int8_t) tmpVal;
-	  tmpField = strtok(NULL, ":");
+	while (tmpField != NULL && fieldNum < MAC_ARR_LEN) {
+		char *chk;
+		int tmpVal;
+		tmpVal = strtoul(tmpField, &chk, HEX_BASE);
+		if (tmpVal > 0xff) {
+			fprintf(stderr, "field %d value %X out of range\n", fieldNum, tmpVal);
+			return FAILURE;
+		}
+		if (*chk != 0) {
+			fprintf(stderr, "Non-digit character %c (%0x) detected in field %d\n", *chk, *chk, fieldNum);
+			return FAILURE;
+		}
+		addr[fieldNum++] = (u_int8_t) tmpVal;
+		tmpField = strtok(NULL, ":");
 	}
-	if (tmpField != NULL || fieldNum != MAC_ARR_LEN)
-	{
+	if (tmpField != NULL || fieldNum != MAC_ARR_LEN) {
 		fprintf(stderr, "MAC address longer than six fields\n");
 		return FAILURE;
 	}
@@ -77,8 +71,8 @@ static int parse_mac_from_str(char *mac, u_int8_t *addr)
   parse_ip_from_str.
  *
  * Description : Convert from presentation format of an Internet number in nuffer
-   starting at CP to the binary network format and store result for
-   interface type AF in buffer starting at BUF.
+ starting at CP to the binary network format and store result for
+ interface type AF in buffer starting at BUF.
  *
  *  Parameters :
  *		*ip - char* ip string.
@@ -105,14 +99,19 @@ int check_if_valid_udp_port(int udp_port)
 static int get_cache_line_size()
 {
 	int size = sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
-	if (size == 0)
-	{
-		char* file_name = "/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size";
+	if (size == 0) {
+		#if defined(__sparc__) && defined(__arch64__)
+		char* file_name =
+			"/sys/devices/system/cpu/cpu0/l2_cache_line_size";
+		#else
+		char* file_name =
+			"/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size";
+		#endif
+
 		FILE *fp;
 		char line[10];
-		fp = fopen(file_name, "r");      //open file , read only
-		if (fp == NULL)
-		{
+		fp = fopen(file_name, "r");
+		if (fp == NULL) {
 			return DEF_CACHE_LINE_SIZE;
 		}
 		fgets(line,10,fp);
@@ -128,16 +127,15 @@ static int get_cache_line_size()
 /******************************************************************************
  *
  ******************************************************************************/
-static void usage(const char *argv0,VerbType verb,TestType tst)	{
-
+static void usage(const char *argv0, VerbType verb, TestType tst, int connection_type)
+{
 	printf("Usage:\n");
 	printf("  %s            start a server and wait for connection\n", argv0);
 	printf("  %s <host>     connect to server at <host>\n", argv0);
 	printf("\n");
 	printf("Options:\n");
 
-	if (verb != ATOMIC) {
-
+	if (verb != ATOMIC && connection_type != RawEth) {
 		printf("  -a, --all ");
 		printf(" Run sizes from 2 till 2^23\n");
 	}
@@ -223,8 +221,8 @@ static void usage(const char *argv0,VerbType verb,TestType tst)	{
 	printf(" Number of exchanges (at least %d, default %d)\n", MIN_ITER, ((verb == WRITE) && (tst == BW)) ? DEF_ITERS_WB : DEF_ITERS);
 
 	if (tst == BW) {
-		printf("  -N, --no peak-bw ");
-		printf(" Cancel peak-bw calculation (default with peak)\n");
+		printf("  -N, --noPeak");
+		printf(" Cancel peak-bw calculation (default with peak up to iters=20000)\n");
 	}
 
 	if (verb == READ || verb == ATOMIC) {
@@ -300,7 +298,7 @@ static void usage(const char *argv0,VerbType verb,TestType tst)	{
 	printf("  -z, --com_rdma_cm ");
 	printf(" Communicate with rdma_cm module to exchange data - use regular QPs\n");
 
-	//Long flags
+	/*Long flags*/
 	putchar('\n');
 
 	printf("      --cpu_util ");
@@ -319,10 +317,16 @@ static void usage(const char *argv0,VerbType verb,TestType tst)	{
 
 	if (tst == LAT) {
 		printf("      --latency_gap=<delay_time> ");
-                printf(" delay time between each post send\n");
+		printf(" delay time between each post send\n");
 	}
+
+	#ifdef HAVE_ODP
+	printf("      --odp ");
+	printf(" Use On Demand Paging instead of Memory Registration.\n");
+	#endif
+
 	printf("      --output=<units>");
-	printf(" Set verbosity output level: bandwidth , message_rate, latency_typical \n");
+	printf(" Set verbosity output level: bandwidth , message_rate, latency \n");
 
 	printf("      --pkey_index=<pkey index> PKey index to use for QP\n");
 
@@ -343,8 +347,8 @@ static void usage(const char *argv0,VerbType verb,TestType tst)	{
 		printf(" Run test forever, print results every <duration> seconds\n");
 	}
 
-        printf("      --retry_count=<value> ");
-        printf(" Set retry count value in rdma_cm mode\n");
+	printf("      --retry_count=<value> ");
+	printf(" Set retry count value in rdma_cm mode\n");
 
 	#ifdef HAVE_CUDA
 	printf("      --use_cuda ");
@@ -356,9 +360,12 @@ static void usage(const char *argv0,VerbType verb,TestType tst)	{
 	printf(" Use Experimental verbs in data path. Default is OFF.\n");
 	#endif
 
-	#ifdef HAVE_ODP
-	printf("      --odp ");
-	printf(" Use On Demand Paging instead of Memory Registration.\n");
+	#ifdef HAVE_ACCL_VERBS
+	printf("      --use_res_domain ");
+	printf(" Use shared resource domain\n");
+
+	printf("      --verb_type=<option> ");
+	printf(" Set verb type: normal, accl. Default is normal.\n");
 	#endif
 
 	if (tst == BW) {
@@ -366,11 +373,11 @@ static void usage(const char *argv0,VerbType verb,TestType tst)	{
 		printf("      --burst_size=<size>");
 		printf(" Set the amount of messages to send in a burst when using rate limiter\n");
 
-		printf("      --rate_limit=<rate[pps]>");
-		printf(" Set the maximum rate of sent packages\n");
+		printf("      --rate_limit=<rate>");
+		printf(" Set the maximum rate of sent packages. default unit is [pps]. use --rate_units to change that.\n");
 
 		printf("      --rate_units=<units>");
-		printf(" [Mgp] Set the units for rate limit to MBps (M), Gbps (g) or pps (p)\n");
+		printf(" [Mgp] Set the units for rate limit to MBps (M), Gbps (g) or pps (p). default is pps (p)\n");
 	}
 
 	putchar('\n');
@@ -378,141 +385,147 @@ static void usage(const char *argv0,VerbType verb,TestType tst)	{
 /******************************************************************************
   usage
  ******************************************************************************/
-void usage_raw_ethernet(){
-		printf("  Raw Ethernet options :\n");
-		printf("  -B, --source_mac ");
-		printf(" source MAC address by this format XX:XX:XX:XX:XX:XX (default take the MAC address form GID)\n");
+void usage_raw_ethernet()
+{
+	printf("  Raw Ethernet options :\n");
+	printf("  -B, --source_mac ");
+	printf(" source MAC address by this format XX:XX:XX:XX:XX:XX (default take the MAC address form GID)\n");
 
-		printf("  -E, --dest_mac ");
-		printf(" destination MAC address by this format XX:XX:XX:XX:XX:XX **MUST** be entered \n");
+	printf("  -E, --dest_mac ");
+	printf(" destination MAC address by this format XX:XX:XX:XX:XX:XX **MUST** be entered \n");
 
-		printf("  -J, --dest_ip ");
-		printf(" destination ip address by this format X.X.X.X (using to send packets with IP header)\n");
+	printf("  -G, --use_rss ");
+	printf(" use RSS on server side. need to open 2^x qps (using -q flag. default is -q 2). open 2^x clients that transmit to this server\n");
 
-		printf("  -j, --source_ip ");
-		printf(" source ip address by this format X.X.X.X (using to send packets with IP header)\n");
+	printf("  -J, --dest_ip ");
+	printf(" destination ip address by this format X.X.X.X (using to send packets with IP header)\n");
 
-		printf("  -K, --dest_port ");
-		printf(" destination port number (using to send packets with UDP header as default, or you can use --tcp flag to send TCP Header)\n");
+	printf("  -j, --source_ip ");
+	printf(" source ip address by this format X.X.X.X (using to send packets with IP header)\n");
 
-		printf("  -k, --source_port ");
-		printf(" source port number (using to send packets with UDP header as default, or you can use --tcp flag to send TCP Header)\n");
+	printf("  -K, --dest_port ");
+	printf(" destination port number (using to send packets with UDP header as default, or you can use --tcp flag to send TCP Header)\n");
 
-		printf("  -Z, --server ");
-		printf(" choose server side for the current machine (--server/--client must be selected )\n");
+	printf("  -k, --source_port ");
+	printf(" source port number (using to send packets with UDP header as default, or you can use --tcp flag to send TCP Header)\n");
 
-		printf("  -P, --client ");
-		printf(" choose client side for the current machine (--server/--client must be selected)\n");
+	printf("  -Z, --server ");
+	printf(" choose server side for the current machine (--server/--client must be selected )\n");
 
-		printf("  -v, --mac_fwd ");
-		printf(" run mac forwarding test \n");
+	printf("  -P, --client ");
+	printf(" choose client side for the current machine (--server/--client must be selected)\n");
 
-		printf("      --promiscuous");
-		printf(" run promiscuous mode.\n");
+	printf("  -v, --mac_fwd ");
+	printf(" run mac forwarding test \n");
 
-		printf("      --tcp ");
-		printf(" send TCP Packets. must include IP and Ports information.\n");
+	printf("      --promiscuous");
+	printf(" run promiscuous mode.\n");
 
-		printf("\n");
+	printf("      --tcp ");
+	printf(" send TCP Packets. must include IP and Ports information.\n");
+
+	printf("\n");
 
 }
 /******************************************************************************
  *
  ******************************************************************************/
-static void init_perftest_params(struct perftest_parameters *user_param) {
-
-	user_param->port       	= DEF_PORT;
-	user_param->ib_port    	= DEF_IB_PORT;
-	user_param->ib_port2	= DEF_IB_PORT2;
-	user_param->size       	= (user_param->tst == BW ) ? DEF_SIZE_BW : DEF_SIZE_LAT;
-	user_param->tx_depth   	= (user_param->tst == BW ) ? DEF_TX_BW : DEF_TX_LAT;
-	user_param->qp_timeout 	= DEF_QP_TIME;
-	user_param->test_method = RUN_REGULAR;
-	user_param->cpu_freq_f 	= OFF;
-	user_param->connection_type = (user_param->connection_type == RawEth) ? RawEth : RC;
-	user_param->use_event  	= OFF;
-	user_param->num_of_qps 	= DEF_NUM_QPS;
-	user_param->gid_index  	= DEF_GID_INDEX;
-	user_param->gid_index2  = DEF_GID_INDEX;
-	user_param->use_gid_user = 0;
-	user_param->inline_size = DEF_INLINE;
-	user_param->use_mcg     = OFF;
-	user_param->use_rdma_cm = OFF;
-	user_param->work_rdma_cm = OFF;
-	user_param->rx_depth    = user_param->verb == SEND ? DEF_RX_SEND : DEF_RX_RDMA;
-	user_param->duplex	= OFF;
-	user_param->noPeak	= OFF;
-	user_param->cq_mod	= DEF_CQ_MOD;
-	user_param->iters = (user_param->tst == BW && user_param->verb == WRITE) ? DEF_ITERS_WB : DEF_ITERS;
-	user_param->dualport	= OFF;
-	user_param->post_list	= 1;
-	user_param->use_srq = OFF;
-	user_param->use_xrc = OFF;
-	user_param->use_rss = OFF;
-	user_param->srq_exists = OFF;
-	user_param->duration	= DEF_DURATION;
-	user_param->margin	= DEF_INIT_MARGIN;
-	user_param->test_type	= ITERATIONS;
-	user_param->state	= START_STATE;
-	user_param->tos		= DEF_TOS;
-	user_param->mac_fwd	= OFF;
-	user_param->report_fmt = MBS;
-	user_param->report_both = OFF;
-	user_param->is_reversed = OFF;
-	user_param->is_limit_bw = OFF;
-	user_param->limit_bw = 0;
-	user_param->is_limit_msgrate = OFF;
-	user_param->limit_msgrate = 0;
-	user_param->pkey_index    = 0;
-	user_param->raw_qos 	  = 0;
-	user_param->inline_recv_size = 0;
-	user_param->tcp = 0;
-	user_param->is_rate_limiting = 0;
-	user_param->burst_size = 0;
-	user_param->rate_limit = 0;
-	user_param->rate_units = MEGA_BYTE_PS;
-	user_param->output = -1;
-	user_param->use_cuda = 0;
-	user_param->iters_per_port[0] = 0;
-	user_param->iters_per_port[1] = 0;
+static void init_perftest_params(struct perftest_parameters *user_param)
+{
+	user_param->port		= DEF_PORT;
+	user_param->ib_port		= DEF_IB_PORT;
+	user_param->ib_port2		= DEF_IB_PORT2;
+	user_param->size		= (user_param->tst == BW ) ? DEF_SIZE_BW : DEF_SIZE_LAT;
+	user_param->tx_depth		= (user_param->tst == BW ) ? DEF_TX_BW : DEF_TX_LAT;
+	user_param->qp_timeout		= DEF_QP_TIME;
+	user_param->test_method		= RUN_REGULAR;
+	user_param->cpu_freq_f		= OFF;
+	user_param->connection_type	= (user_param->connection_type == RawEth) ? RawEth : RC;
+	user_param->use_event		= OFF;
+	user_param->num_of_qps		= DEF_NUM_QPS;
+	user_param->gid_index		= DEF_GID_INDEX;
+	user_param->gid_index2		= DEF_GID_INDEX;
+	user_param->use_gid_user	= 0;
+	user_param->inline_size		= DEF_INLINE;
+	user_param->use_mcg		= OFF;
+	user_param->use_rdma_cm		= OFF;
+	user_param->work_rdma_cm	= OFF;
+	user_param->rx_depth		= user_param->verb == SEND ? DEF_RX_SEND : DEF_RX_RDMA;
+	user_param->duplex		= OFF;
+	user_param->noPeak		= OFF;
+	user_param->cq_mod		= DEF_CQ_MOD;
+	user_param->iters		= (user_param->tst == BW && user_param->verb == WRITE) ? DEF_ITERS_WB : DEF_ITERS;
+	user_param->dualport		= OFF;
+	user_param->post_list		= 1;
+	user_param->use_srq		= OFF;
+	user_param->use_xrc		= OFF;
+	user_param->use_rss		= OFF;
+	user_param->srq_exists		= OFF;
+	user_param->duration		= DEF_DURATION;
+	user_param->margin		= DEF_INIT_MARGIN;
+	user_param->test_type		= ITERATIONS;
+	user_param->state		= START_STATE;
+	user_param->tos			= DEF_TOS;
+	user_param->mac_fwd		= OFF;
+	user_param->report_fmt		= MBS;
+	user_param->report_both		= OFF;
+	user_param->is_reversed		= OFF;
+	user_param->is_limit_bw		= OFF;
+	user_param->limit_bw		= 0;
+	user_param->is_limit_msgrate	= OFF;
+	user_param->limit_msgrate	= 0;
+	user_param->pkey_index		= 0;
+	user_param->raw_qos		= 0;
+	user_param->inline_recv_size	= 0;
+	user_param->tcp			= 0;
+	user_param->is_rate_limiting	= 0;
+	user_param->burst_size		= 0;
+	user_param->rate_limit		= 0;
+	user_param->rate_units		= MEGA_BYTE_PS;
+	user_param->output		= -1;
+	user_param->use_cuda		= 0;
+	user_param->iters_per_port[0]	= 0;
+	user_param->iters_per_port[1]	= 0;
 
 	if (user_param->tst == LAT) {
-		user_param->r_flag->unsorted  = OFF;
-		user_param->r_flag->histogram = OFF;
-		user_param->r_flag->cycles    = OFF;
+		user_param->r_flag->unsorted	= OFF;
+		user_param->r_flag->histogram	= OFF;
+		user_param->r_flag->cycles	= OFF;
 	}
 
 	if (user_param->verb == ATOMIC) {
-		user_param->atomicType = FETCH_AND_ADD;
-		user_param->size = DEF_SIZE_ATOMIC;
-	}
-
-	user_param->cpu_util = 0;
-	user_param->cpu_util_data.enable = 0;
-	user_param->retry_count = DEF_RETRY_COUNT;
-	user_param->dont_xchg_versions = 0;
-	user_param->use_exp = 0;
-	user_param->ipv6 = 0;
-	user_param->report_per_port = 0;
-	user_param->use_odp = 0;
-	user_param->use_promiscuous = 0;
-	user_param->check_alive_exited = 0;
-	user_param->raw_mcast = 0;
-	user_param->masked_atomics = 0;
-
-	user_param->cache_line_size = get_cache_line_size();
-
-	user_param->cycle_buffer = sysconf(_SC_PAGESIZE);
-	if (user_param->cycle_buffer <= 0)
-	{
+		user_param->atomicType	= FETCH_AND_ADD;
+		user_param->size	= DEF_SIZE_ATOMIC;
+	}
+
+	user_param->cpu_util			= 0;
+	user_param->cpu_util_data.enable	= 0;
+	user_param->retry_count			= DEF_RETRY_COUNT;
+	user_param->dont_xchg_versions		= 0;
+	user_param->use_exp			= 0;
+	user_param->ipv6			= 0;
+	user_param->report_per_port		= 0;
+	user_param->use_odp			= 0;
+	user_param->use_promiscuous		= 0;
+	user_param->check_alive_exited		= 0;
+	user_param->raw_mcast			= 0;
+	user_param->masked_atomics		= 0;
+	user_param->cache_line_size		= get_cache_line_size();
+	user_param->cycle_buffer		= sysconf(_SC_PAGESIZE);
+
+	if (user_param->cycle_buffer <= 0) {
 		user_param->cycle_buffer = DEF_PAGE_SIZE;
 	}
 
+	user_param->verb_type = NORMAL_INTF;
+	user_param->is_exp_cq = 0;
+	user_param->is_exp_qp = 0;
+	user_param->use_res_domain = 0;
 }
 
- /******************************************************************************
-  *
-  ******************************************************************************/
+/******************************************************************************
+ *
+ ******************************************************************************/
 static int ctx_chk_pkey_index(struct ibv_context *context,int pkey_idx) 
 {
 	int idx = 0;
@@ -539,16 +552,16 @@ static int ctx_chk_pkey_index(struct ibv_context *context,int pkey_idx)
 /******************************************************************************
  *
  ******************************************************************************/
-static void change_conn_type(int *cptr,VerbType verb,const char *optarg) {
-
+static void change_conn_type(int *cptr,VerbType verb,const char *optarg)
+{
 	if (strcmp(connStr[0],optarg)==0)
 		*cptr = RC;
 
 	else if (strcmp(connStr[1],optarg)==0) {
 		*cptr = UC;
 		if (verb == READ || verb == ATOMIC) {
-			  fprintf(stderr," UC connection not possible in READ/ATOMIC verbs\n");
-			  exit(1);
+			fprintf(stderr," UC connection not possible in READ/ATOMIC verbs\n");
+			exit(1);
 		}
 
 	} else if (strcmp(connStr[2],optarg)==0)  {
@@ -561,31 +574,31 @@ static void change_conn_type(int *cptr,VerbType verb,const char *optarg) {
 		*cptr = RawEth;
 
 	} else if(strcmp(connStr[4],optarg)==0) {
-#ifdef HAVE_XRCD
+		#ifdef HAVE_XRCD
 		*cptr = XRC;
-#else
+		#else
 		fprintf(stderr," XRC not detected in libibverbs\n");
 		exit(1);
-#endif
+		#endif
 	} else if (strcmp(connStr[5],optarg)==0) {
-#ifdef HAVE_DC
+		#ifdef HAVE_DC
 		*cptr = DC;
-#else
+		#else
 		fprintf(stderr," DC not detected in libibverbs\n");
 		exit(1);
-#endif
+		#endif
 	} else {
 		fprintf(stderr," Invalid Connection type . please choose from {RC,UC,UD}\n");
 		exit(1);
 	}
 }
 /******************************************************************************
-  *
-  ******************************************************************************/
-int set_eth_mtu(struct perftest_parameters *user_param) {
-
+ *
+ ******************************************************************************/
+int set_eth_mtu(struct perftest_parameters *user_param)
+{
 	if (user_param->mtu == 0) {
-		user_param->mtu = 1518;//1500
+		user_param->mtu = 1518;
 	}
 
 	if(user_param->mtu >= MIN_MTU_RAW_ETERNET && user_param->mtu <= MAX_MTU_RAW_ETERNET) {
@@ -603,9 +616,9 @@ int set_eth_mtu(struct perftest_parameters *user_param) {
 /******************************************************************************
  *
  ******************************************************************************/
-static void force_dependecies(struct perftest_parameters *user_param) {
-
-	// Additional configuration and assignments.
+static void force_dependecies(struct perftest_parameters *user_param)
+{
+	/*Additional configuration and assignments.*/
 	if (user_param->test_type == ITERATIONS) {
 
 		if (user_param->tx_depth > user_param->iters) {
@@ -616,10 +629,8 @@ static void force_dependecies(struct perftest_parameters *user_param) {
 			user_param->rx_depth = user_param->iters;
 		}
 
-		if (user_param->connection_type == UD || user_param->connection_type == UC)
-		{
-			if (user_param->rx_depth == DEF_RX_SEND)
-			{
+		if (user_param->connection_type == UD || user_param->connection_type == UC) {
+			if (user_param->rx_depth == DEF_RX_SEND) {
 				user_param->rx_depth = (user_param->iters < UC_MAX_RX) ? user_param->iters : UC_MAX_RX;
 			}
 		} 
@@ -645,10 +656,10 @@ static void force_dependecies(struct perftest_parameters *user_param) {
 		exit (1);
 	}
 
-	if (user_param->dualport==ON) {
+	if (user_param->dualport == ON) {
 
 		user_param->num_of_qps *= 2;
-		if (!user_param->tst==BW) {
+		if (user_param->tst != BW) {
 			printf(" Dual-port mode only supports BW tests.\n");
 			exit (1);
 		}
@@ -663,24 +674,19 @@ static void force_dependecies(struct perftest_parameters *user_param) {
 		user_param->cq_mod = user_param->post_list;
 		printf(RESULT_LINE);
 		printf("Post List requested - CQ moderation will be the size of the post list\n");
-
-		if (user_param->num_of_qps > 1) {
-			user_param->tx_depth = 128;
-			printf(RESULT_LINE);
-			printf(" Reducing TX depth to 128 to diaphragm time between post sends of each time\n");
-		}
 	}
 
 	if (user_param->test_type==DURATION) {
 
-		// When working with Duration, iters=0 helps us to satisfy loop cond. in run_iter_bw.
-		// We also use it for "global" counter of packets.
+		/* When working with Duration, iters=0 helps us to satisfy loop cond. in run_iter_bw.
+		We also use it for "global" counter of packets.
+		*/
 		user_param->iters = 0;
 		user_param->noPeak = ON;
 
 		if (user_param->use_event) {
 			printf(RESULT_LINE);
-		    fprintf(stderr,"Duration mode doesn't work with events.\n");
+			fprintf(stderr,"Duration mode doesn't work with events.\n");
 			exit(1);
 		}
 
@@ -700,7 +706,14 @@ static void force_dependecies(struct perftest_parameters *user_param) {
 	}
 
 	if (user_param->use_mcg &&  user_param->gid_index == -1) {
-			user_param->gid_index = 0;
+		user_param->gid_index = 0;
+	}
+
+
+	if (user_param->verb == ATOMIC && user_param->connection_type == DC) {
+		printf(RESULT_LINE);
+		fprintf(stderr, " ATOMIC tests don't support DC transport\n");
+		exit(1);
 	}
 
 	if (user_param->work_rdma_cm) {
@@ -758,6 +771,11 @@ static void force_dependecies(struct perftest_parameters *user_param) {
 	}
 	if (user_param->connection_type == RawEth) {
 
+		if (user_param->test_method == RUN_ALL) {
+			fprintf(stderr, "Raw Ethernet tests do not support -a / --all flag.\n");
+			exit(1);
+		}
+
 		if (user_param->num_of_qps > 1 && !user_param->use_rss) {
 			printf(RESULT_LINE);
 			fprintf(stdout," Raw Ethernet test supports only 1 QP for now\n");
@@ -776,31 +794,24 @@ static void force_dependecies(struct perftest_parameters *user_param) {
 			exit(1);
 		}
 
-		// if((user_param->is_server_ip == ON && user_param->is_client_ip == OFF) || (user_param->is_server_ip == OFF && user_param->is_client_ip == ON)) {
-			// printf(RESULT_LINE);
-			// fprintf(stderr," Invalid Command line.\n if you would like to send IP header,\n you must enter server&client ip addresses --server_ip X.X.X.X --client_ip X.X.X.X\n");
-			// exit(1);
-		// }
-
 		if((user_param->is_server_port == ON && user_param->is_client_port == OFF) || (user_param->is_server_port == OFF && user_param->is_client_port == ON)) {
 			printf(RESULT_LINE);
 			fprintf(stderr," Invalid Command line.\n if you would like to send UDP header,\n you must enter server&client port --server_port X --client_port X\n");
 			exit(1);
 		}
 
-		// Mac forwarding dependencies
+		/* Mac forwarding dependencies */
 		if (user_param->duplex == OFF && user_param->mac_fwd == ON) {
 			printf("mac_fwd should run in duplex mode only. changing to duplex mode.\n");
 			user_param->duplex = ON;
 		}
-        if (user_param->mac_fwd == ON && user_param->cq_mod >= user_param->rx_depth) {
-            fprintf(stderr," CQ moderation can't be grater than rx depth.\n");
-            user_param->cq_mod = user_param->rx_depth < user_param->tx_depth ? user_param->rx_depth : user_param->tx_depth;
-            fprintf(stderr," Changing CQ moderation to min( rx depth , tx depth) = %d.\n",user_param->cq_mod);
-        }
+		if (user_param->mac_fwd == ON && user_param->cq_mod >= user_param->rx_depth) {
+			fprintf(stderr," CQ moderation can't be grater than rx depth.\n");
+			user_param->cq_mod = user_param->rx_depth < user_param->tx_depth ? user_param->rx_depth : user_param->tx_depth;
+			fprintf(stderr," Changing CQ moderation to min( rx depth , tx depth) = %d.\n",user_param->cq_mod);
+		}
 
-		if (user_param->raw_mcast && user_param->duplex)
-		{
+		if (user_param->raw_mcast && user_param->duplex) {
 			printf(" Multicast feature works on unidirectional traffic only\n");
 			exit(1);
 		}
@@ -810,7 +821,7 @@ static void force_dependecies(struct perftest_parameters *user_param) {
 	if (user_param->verb == SEND && user_param->tst == BW && user_param->machine == SERVER && !user_param->duplex )
 		user_param->noPeak = ON;
 
-	// Run infinitely dependencies
+	/* Run infinitely dependencies */
 	if (user_param->test_method == RUN_INFINITELY) {
 		user_param->noPeak = ON;
 		user_param->test_type = DURATION;
@@ -834,8 +845,9 @@ static void force_dependecies(struct perftest_parameters *user_param) {
 		}
 	}
 
-	//raw ethernet send latency
-	//client and server must enter the destination mac
+	/*raw ethernet send latency
+	client and server must enter the destination mac
+	*/
 	if (user_param->connection_type == RawEth && user_param->tst == LAT && user_param->verb == SEND) {
 
 		if (user_param-> is_dest_mac == OFF) {
@@ -849,9 +861,8 @@ static void force_dependecies(struct perftest_parameters *user_param) {
 	if (user_param->connection_type == DC && !user_param->use_srq)
 		user_param->use_srq = 1;
 
-	// XRC Part
+	/* XRC Part */
 	if (user_param->connection_type == XRC) {
-
 		if (user_param->work_rdma_cm == ON) {
 			printf(RESULT_LINE);
 			fprintf(stderr," XRC does not support RDMA_CM\n");
@@ -945,25 +956,72 @@ static void force_dependecies(struct perftest_parameters *user_param) {
 
 	if ( (user_param->connection_type == UD) && (user_param->inline_size > MAX_INLINE_UD) ) {
 		printf(RESULT_LINE);
-		fprintf(stderr,"Setting inline size to %d (Max inline size in UD)\n",MAX_INLINE_UD);
+		fprintf(stderr, "Setting inline size to %d (Max inline size in UD)\n",MAX_INLINE_UD);
 		user_param->inline_size = MAX_INLINE_UD;
 	}
 
-	if (user_param->report_per_port && (user_param->test_type != DURATION || !user_param->dualport))
-	{
+	if (user_param->report_per_port && (user_param->test_type != DURATION || !user_param->dualport)) {
+		printf(RESULT_LINE);
+		fprintf(stderr, "report per port feature work only with Duration and Dualport\n");
+		exit(1);
+	}
+
+	/* WA for a bug when rx_depth is odd in SEND */
+	if (user_param->verb == SEND && (user_param->rx_depth % 2 == 1) && user_param->test_method == RUN_REGULAR)
+		user_param->rx_depth += 1;
+
+	if (user_param->test_type == ITERATIONS && user_param->iters > 20000 && user_param->noPeak == OFF && user_param->tst == BW)
+		user_param->noPeak = ON;
+
+	if (!(user_param->duration > 2*user_param->margin)) {
 		printf(RESULT_LINE);
-		fprintf(stderr,"report per port feature work only with Duration and Dualport\n");
+		fprintf(stderr, "please check that DURATION > 2*MARGIN\n");
 		exit(1);
 	}
 
+	#ifdef HAVE_ACCL_VERBS
+	if (user_param->verb_type != NORMAL_INTF || user_param->use_res_domain) {
+		user_param->is_exp_cq = 1;
+		user_param->use_exp = 1;
+	}
+
+	if (user_param->verb_type == ACCL_INTF) {
+		if (user_param->connection_type != RC &&
+			user_param->connection_type != UC && user_param->connection_type != RawEth) {
+			fprintf(stderr, "Accelerated verbs support RC/UC/RAW_ETH connections only.\n");
+			exit(1);
+		}
+		if (user_param->verb != SEND) {
+			fprintf(stderr, "Accelerated verbs support SEND opcode only.\n");
+			exit(1);
+		}
+		if (user_param->num_of_qps > 1) {
+			fprintf(stderr, "Accelerated verbs in perftest support only 1 qp for now.\n");
+			exit(1);
+		}
+		if (user_param->post_list > 1) {
+			fprintf(stderr, "Accelerated verbs in perftest does not support in postlist feature for now.\n");
+			exit(1);
+		}
+		if (user_param->tst != BW) {
+			fprintf(stderr, "Accelerated verbs in perftest supports only BW tests for now.\n");
+			exit(1);
+		}
+		if (user_param->duplex) {
+			fprintf(stderr, "Accelerated verbs in perftest supports only unidir tests for now\n");
+			exit(1);
+		}
+	}
+	#endif
+
 	return;
 }
 
 /******************************************************************************
  *
  ******************************************************************************/
-const char *transport_str(enum ibv_transport_type type) {
-
+const char *transport_str(enum ibv_transport_type type)
+{
 	switch (type) {
 		case IBV_TRANSPORT_IB:
 			return "IB";
@@ -979,29 +1037,29 @@ const char *transport_str(enum ibv_transport_type type) {
 /******************************************************************************
  *
  ******************************************************************************/
-const char *link_layer_str(uint8_t link_layer) {
-
+const char *link_layer_str(uint8_t link_layer)
+{
 	switch (link_layer) {
 
-        case IBV_LINK_LAYER_UNSPECIFIED:
-        case IBV_LINK_LAYER_INFINIBAND:
+		case IBV_LINK_LAYER_UNSPECIFIED:
+		case IBV_LINK_LAYER_INFINIBAND:
 			return "IB";
-        case IBV_LINK_LAYER_ETHERNET:
+		case IBV_LINK_LAYER_ETHERNET:
 			return "Ethernet";
 		#ifdef HAVE_SCIF
 		case IBV_LINK_LAYER_SCIF:
 			return "SCIF";
 		#endif
-        default:
-		    return "Unknown";
-    }
+		default:
+			return "Unknown";
+	}
 }
 
 /******************************************************************************
  *
  ******************************************************************************/
-enum ctx_device ib_dev_name(struct ibv_context *context) {
-
+enum ctx_device ib_dev_name(struct ibv_context *context)
+{
 	enum ctx_device dev_fname = UNKNOWN;
 	struct ibv_device_attr attr;
 
@@ -1019,11 +1077,16 @@ enum ctx_device ib_dev_name(struct ibv_context *context) {
 			default : dev_fname = UNKNOWN; break;
 		}
 
-	// Assuming it's Mellanox HCA or unknown.
-	// If you want Inline support in other vendor devices, please send patch to idos at dev.mellanox.co.il
+		/* Assuming it's Mellanox HCA or unknown.
+		If you want Inline support in other vendor devices, please send patch to gilr at dev.mellanox.co.il
+		*/
 	} else {
 
 		switch (attr.vendor_part_id) {
+			case 4115  : dev_fname = CONNECTX4; break;
+			case 4116  : dev_fname = CONNECTX4; break;
+			case 4117  : dev_fname = CONNECTX4LX; break;
+			case 4118  : dev_fname = CONNECTX4LX; break;
 			case 4113  : dev_fname = CONNECTIB; break;
 			case 4099  : dev_fname = CONNECTX3; break;
 			case 4100  : dev_fname = CONNECTX3; break;
@@ -1051,36 +1114,37 @@ enum ctx_device ib_dev_name(struct ibv_context *context) {
 /******************************************************************************
  *
  ******************************************************************************/
-enum ibv_mtu set_mtu(struct ibv_context *context,uint8_t ib_port,int user_mtu) {
-
+enum ibv_mtu set_mtu(struct ibv_context *context,uint8_t ib_port,int user_mtu)
+{
 	struct ibv_port_attr port_attr;
 	enum ibv_mtu curr_mtu;
 
-	ibv_query_port(context,ib_port,&port_attr);
+	if (ibv_query_port(context,ib_port,&port_attr)) {
+		fprintf(stderr," Error when trying to query port\n");
+		exit(1);
+	}
 
-	// User did not ask for specific mtu.
+	/* User did not ask for specific mtu. */
 	if (user_mtu == 0) {
 		enum ctx_device current_dev = ib_dev_name(context);
 		curr_mtu = port_attr.active_mtu;
-		//CX3_PRO and CX3 have a HW bug in 4K MTU, so we're forcing it to be 2K MTU
+		/* CX3_PRO and CX3 have a HW bug in 4K MTU, so we're forcing it to be 2K MTU */
 		if (curr_mtu == IBV_MTU_4096 && (current_dev == CONNECTX3_PRO || current_dev == CONNECTX3))
 			curr_mtu = IBV_MTU_2048;
 	}
 
 	else {
-
 		switch (user_mtu) {
-
 			case 256  :	curr_mtu = IBV_MTU_256;	 break;
 			case 512  : curr_mtu = IBV_MTU_512;	 break;
 			case 1024 :	curr_mtu = IBV_MTU_1024; break;
 			case 2048 :	curr_mtu = IBV_MTU_2048; break;
 			case 4096 :	curr_mtu = IBV_MTU_4096; break;
 			default   :
-				fprintf(stderr," Invalid MTU - %d \n",user_mtu);
-				fprintf(stderr," Please choose mtu from {256,512,1024,2048,4096}\n");
-				fprintf(stderr," Will run with the port active mtu - %d\n",port_attr.active_mtu);
-				curr_mtu = port_attr.active_mtu;
+					fprintf(stderr," Invalid MTU - %d \n",user_mtu);
+					fprintf(stderr," Please choose mtu from {256,512,1024,2048,4096}\n");
+					fprintf(stderr," Will run with the port active mtu - %d\n",port_attr.active_mtu);
+					curr_mtu = port_attr.active_mtu;
 		}
 
 		if (curr_mtu > port_attr.active_mtu) {
@@ -1095,8 +1159,8 @@ enum ibv_mtu set_mtu(struct ibv_context *context,uint8_t ib_port,int user_mtu) {
 /******************************************************************************
  *
  ******************************************************************************/
-static uint8_t set_link_layer(struct ibv_context *context,uint8_t ib_port) {
-
+static uint8_t set_link_layer(struct ibv_context *context,uint8_t ib_port)
+{
 	struct ibv_port_attr port_attr;
 	uint8_t curr_link;
 
@@ -1107,27 +1171,25 @@ static uint8_t set_link_layer(struct ibv_context *context,uint8_t ib_port) {
 
 	if (port_attr.state != IBV_PORT_ACTIVE) {
 		fprintf(stderr," Port number %d state is %s\n"
-					  ,ib_port
-					  ,portStates[port_attr.state]);
+				,ib_port
+				,portStates[port_attr.state]);
 		return LINK_FAILURE;
 	}
 
 	curr_link = port_attr.link_layer;
 	if (!strcmp(link_layer_str(curr_link),"Unknown")) {
-			fprintf(stderr," Unable to determine link layer \n");
-			return LINK_FAILURE;
+		fprintf(stderr," Unable to determine link layer \n");
+		return LINK_FAILURE;
 	}
-	//return curr_link;
-	//printf("link_layer: %d\n",port_attr.link_layer);
+
 	return port_attr.link_layer;
 }
 
 /******************************************************************************
  *
  ******************************************************************************/
-static int ctx_set_out_reads(struct ibv_context *context,int num_user_reads) {
-
-
+static int ctx_set_out_reads(struct ibv_context *context,int num_user_reads)
+{
 	int max_reads = 0;
 	struct ibv_device_attr attr;
 
@@ -1151,9 +1213,8 @@ static int ctx_set_out_reads(struct ibv_context *context,int num_user_reads) {
 /******************************************************************************
  *
  ******************************************************************************/
-static void ctx_set_max_inline(struct ibv_context *context,struct perftest_parameters *user_param) {
-
-
+static void ctx_set_max_inline(struct ibv_context *context,struct perftest_parameters *user_param)
+{
 	enum ctx_device current_dev = ib_dev_name(context);
 
 	if (current_dev == UNKNOWN || current_dev == DEVICE_ERROR) {
@@ -1174,7 +1235,7 @@ static void ctx_set_max_inline(struct ibv_context *context,struct perftest_param
 
 				case WRITE: user_param->inline_size = (user_param->connection_type == DC)? DEF_INLINE_DC : DEF_INLINE_WRITE; break;
 				case SEND : user_param->inline_size = (user_param->connection_type == DC)? DEF_INLINE_DC : (user_param->connection_type == UD)? DEF_INLINE_SEND_UD :
-					((user_param->connection_type == XRC) ? DEF_INLINE_SEND_XRC : DEF_INLINE_SEND_RC_UC) ; break;
+					    ((user_param->connection_type == XRC) ? DEF_INLINE_SEND_XRC : DEF_INLINE_SEND_RC_UC) ; break;
 				default   : user_param->inline_size = 0;
 			}
 
@@ -1188,8 +1249,8 @@ static void ctx_set_max_inline(struct ibv_context *context,struct perftest_param
 /******************************************************************************
  *
  ******************************************************************************/
-int parser(struct perftest_parameters *user_param,char *argv[], int argc) {
-
+int parser(struct perftest_parameters *user_param,char *argv[], int argc)
+{
 	int c,size_len;
 	int size_factor = 1;
 	static int run_inf_flag = 0;
@@ -1215,6 +1276,8 @@ int parser(struct perftest_parameters *user_param,char *argv[], int argc) {
 	static int odp_flag = 0;
 	static int use_promiscuous_flag = 0;
 	static int raw_mcast_flag = 0;
+	static int verb_type_flag = 0;
+	static int use_res_domain_flag = 0;
 
 	init_perftest_params(user_param);
 
@@ -1223,87 +1286,91 @@ int parser(struct perftest_parameters *user_param,char *argv[], int argc) {
 
 	while (1) {
 		static const struct option long_options[] = {
-			{ .name = "port",           .has_arg = 1, .val = 'p' },
-			{ .name = "ib-dev",         .has_arg = 1, .val = 'd' },
-			{ .name = "ib-port",        .has_arg = 1, .val = 'i' },
-			{ .name = "mtu",            .has_arg = 1, .val = 'm' },
-			{ .name = "size",           .has_arg = 1, .val = 's' },
-			{ .name = "iters",          .has_arg = 1, .val = 'n' },
-			{ .name = "tx-depth",       .has_arg = 1, .val = 't' },
-			{ .name = "qp-timeout",     .has_arg = 1, .val = 'u' },
-			{ .name = "sl",             .has_arg = 1, .val = 'S' },
-			{ .name = "gid-index",      .has_arg = 1, .val = 'x' },
-			{ .name = "all",            .has_arg = 0, .val = 'a' },
-			{ .name = "CPU-freq",       .has_arg = 0, .val = 'F' },
-			{ .name = "connection",     .has_arg = 1, .val = 'c' },
-			{ .name = "qp",             .has_arg = 1, .val = 'q' },
-			{ .name = "events",         .has_arg = 0, .val = 'e' },
-			{ .name = "inline_size",    .has_arg = 1, .val = 'I' },
-			{ .name = "outs",           .has_arg = 1, .val = 'o' },
-			{ .name = "mcg",            .has_arg = 0, .val = 'g' },
-			{ .name = "comm_rdma_cm",   .has_arg = 0, .val = 'z' },
-			{ .name = "rdma_cm",   	    .has_arg = 0, .val = 'R' },
-			{ .name = "tos",            .has_arg = 1, .val = 'T' },
-			{ .name = "help",           .has_arg = 0, .val = 'h' },
-			{ .name = "MGID",           .has_arg = 1, .val = 'M' },
-			{ .name = "rx-depth",       .has_arg = 1, .val = 'r' },
-			{ .name = "bidirectional",  .has_arg = 0, .val = 'b' },
-			{ .name = "cq-mod",  	    .has_arg = 1, .val = 'Q' },
-			{ .name = "noPeak",         .has_arg = 0, .val = 'N' },
-			{ .name = "version",        .has_arg = 0, .val = 'V' },
-			{ .name = "report-cycles",  .has_arg = 0, .val = 'C' },
-			{ .name = "report-histogrm",.has_arg = 0, .val = 'H' },
-			{ .name = "report-unsorted",.has_arg = 0, .val = 'U' },
-			{ .name = "atomic_type",    .has_arg = 1, .val = 'A' },
-			{ .name = "dualport",       .has_arg = 0, .val = 'O' },
-			{ .name = "post_list",      .has_arg = 1, .val = 'l' },
-			{ .name = "duration",       .has_arg = 1, .val = 'D' },
-			{ .name = "margin",         .has_arg = 1, .val = 'f' },
-			{ .name = "source_mac",     .has_arg = 1, .val = 'B' },
-			{ .name = "dest_mac",       .has_arg = 1, .val = 'E' },
-			{ .name = "dest_ip",        .has_arg = 1, .val = 'J' },
-			{ .name = "source_ip",      .has_arg = 1, .val = 'j' },
-			{ .name = "dest_port", 		.has_arg = 1, .val = 'K' },
-			{ .name = "source_port",    .has_arg = 1, .val = 'k' },
-			{ .name = "limit_bw",       .has_arg = 1, .val = 'w' },
-			{ .name = "limit_msgrate",  .has_arg = 1, .val = 'y' },
-			{ .name = "server",         .has_arg = 0, .val = 'Z' },
-			{ .name = "client",         .has_arg = 0, .val = 'P' },
-			{ .name = "mac_fwd",        .has_arg = 0, .val = 'v' },
-			{ .name = "use_rss",        .has_arg = 0, .val = 'G' },
-			{ .name = "run_infinitely", .has_arg = 0, .flag = &run_inf_flag, .val = 1 },
-			{ .name = "report_gbits",   .has_arg = 0, .flag = &report_fmt_flag, .val = 1},
-			{ .name = "use-srq",        .has_arg = 0, .flag = &srq_flag, .val = 1},
-			{ .name = "report-both",    .has_arg = 0, .flag = &report_both_flag, .val = 1},
-			{ .name = "reversed",       .has_arg = 0, .flag = &is_reversed_flag, .val = 1},
-			{ .name = "pkey_index",     .has_arg = 1, .flag = &pkey_flag, .val = 1},
-			{ .name = "inline_recv",    .has_arg = 1, .flag = &inline_recv_flag, .val = 1},
+			{ .name = "port",		.has_arg = 1, .val = 'p' },
+			{ .name = "ib-dev",		.has_arg = 1, .val = 'd' },
+			{ .name = "ib-port",		.has_arg = 1, .val = 'i' },
+			{ .name = "mtu",		.has_arg = 1, .val = 'm' },
+			{ .name = "size",		.has_arg = 1, .val = 's' },
+			{ .name = "iters",		.has_arg = 1, .val = 'n' },
+			{ .name = "tx-depth",		.has_arg = 1, .val = 't' },
+			{ .name = "qp-timeout",		.has_arg = 1, .val = 'u' },
+			{ .name = "sl",			.has_arg = 1, .val = 'S' },
+			{ .name = "gid-index",		.has_arg = 1, .val = 'x' },
+			{ .name = "all",		.has_arg = 0, .val = 'a' },
+			{ .name = "CPU-freq",		.has_arg = 0, .val = 'F' },
+			{ .name = "connection",		.has_arg = 1, .val = 'c' },
+			{ .name = "qp",			.has_arg = 1, .val = 'q' },
+			{ .name = "events",		.has_arg = 0, .val = 'e' },
+			{ .name = "inline_size",	.has_arg = 1, .val = 'I' },
+			{ .name = "outs",		.has_arg = 1, .val = 'o' },
+			{ .name = "mcg",		.has_arg = 0, .val = 'g' },
+			{ .name = "comm_rdma_cm",	.has_arg = 0, .val = 'z' },
+			{ .name = "rdma_cm",		.has_arg = 0, .val = 'R' },
+			{ .name = "tos",		.has_arg = 1, .val = 'T' },
+			{ .name = "help",		.has_arg = 0, .val = 'h' },
+			{ .name = "MGID",		.has_arg = 1, .val = 'M' },
+			{ .name = "rx-depth",		.has_arg = 1, .val = 'r' },
+			{ .name = "bidirectional",	.has_arg = 0, .val = 'b' },
+			{ .name = "cq-mod",		.has_arg = 1, .val = 'Q' },
+			{ .name = "noPeak",		.has_arg = 0, .val = 'N' },
+			{ .name = "version",		.has_arg = 0, .val = 'V' },
+			{ .name = "report-cycles",	.has_arg = 0, .val = 'C' },
+			{ .name = "report-histogrm",	.has_arg = 0, .val = 'H' },
+			{ .name = "report-unsorted",	.has_arg = 0, .val = 'U' },
+			{ .name = "atomic_type",	.has_arg = 1, .val = 'A' },
+			{ .name = "dualport",		.has_arg = 0, .val = 'O' },
+			{ .name = "post_list",		.has_arg = 1, .val = 'l' },
+			{ .name = "duration",		.has_arg = 1, .val = 'D' },
+			{ .name = "margin",		.has_arg = 1, .val = 'f' },
+			{ .name = "source_mac",		.has_arg = 1, .val = 'B' },
+			{ .name = "dest_mac",		.has_arg = 1, .val = 'E' },
+			{ .name = "dest_ip",		.has_arg = 1, .val = 'J' },
+			{ .name = "source_ip",		.has_arg = 1, .val = 'j' },
+			{ .name = "dest_port",		.has_arg = 1, .val = 'K' },
+			{ .name = "source_port",	.has_arg = 1, .val = 'k' },
+			{ .name = "limit_bw",		.has_arg = 1, .val = 'w' },
+			{ .name = "limit_msgrate",	.has_arg = 1, .val = 'y' },
+			{ .name = "server",		.has_arg = 0, .val = 'Z' },
+			{ .name = "client",		.has_arg = 0, .val = 'P' },
+			{ .name = "mac_fwd",		.has_arg = 0, .val = 'v' },
+			{ .name = "use_rss",		.has_arg = 0, .val = 'G' },
+			{ .name = "run_infinitely",	.has_arg = 0, .flag = &run_inf_flag, .val = 1 },
+			{ .name = "report_gbits",	.has_arg = 0, .flag = &report_fmt_flag, .val = 1},
+			{ .name = "use-srq",		.has_arg = 0, .flag = &srq_flag, .val = 1},
+			{ .name = "report-both",	.has_arg = 0, .flag = &report_both_flag, .val = 1},
+			{ .name = "reversed",		.has_arg = 0, .flag = &is_reversed_flag, .val = 1},
+			{ .name = "pkey_index",		.has_arg = 1, .flag = &pkey_flag, .val = 1},
+			{ .name = "inline_recv",	.has_arg = 1, .flag = &inline_recv_flag, .val = 1},
 			{ .name = "tcp",		.has_arg = 0, .flag = &tcp_flag, .val = 1},
 			{ .name = "burst_size",		.has_arg = 1, .flag = &burst_size_flag, .val = 1},
 			{ .name = "rate_limit",		.has_arg = 1, .flag = &rate_limit_flag, .val = 1},
 			{ .name = "rate_units",		.has_arg = 1, .flag = &rate_units_flag, .val = 1},
 			{ .name = "output",		.has_arg = 1, .flag = &verbosity_output_flag, .val = 1},
-			{ .name = "cpu_util",           .has_arg = 0, .flag = &cpu_util_flag, .val = 1},
-			{ .name = "latency_gap",        .has_arg = 1, .flag = &latency_gap_flag, .val = 1},
-			{ .name = "retry_count",        .has_arg = 1, .flag = &retry_count_flag, .val = 1},
-			{ .name = "dont_xchg_versions",        .has_arg = 0, .flag = &dont_xchg_versions_flag, .val = 1},
-			#ifdef HAVE_VERBS_EXP
-			{ .name = "use_exp",           .has_arg = 0, .flag = &use_exp_flag, .val = 1},
-			#endif
+			{ .name = "cpu_util",		.has_arg = 0, .flag = &cpu_util_flag, .val = 1},
+			{ .name = "latency_gap",	.has_arg = 1, .flag = &latency_gap_flag, .val = 1},
+			{ .name = "retry_count",	.has_arg = 1, .flag = &retry_count_flag, .val = 1},
+			{ .name = "dont_xchg_versions",	.has_arg = 0, .flag = &dont_xchg_versions_flag, .val = 1},
 			{ .name = "use_cuda",		.has_arg = 0, .flag = &use_cuda_flag, .val = 1},
 			{ .name = "ipv6",		.has_arg = 0, .flag = &ipv6_flag, .val = 1},
-			{ .name = "report-per-port",		.has_arg = 0, .flag = &report_per_port_flag, .val = 1},
+			{ .name = "report-per-port",	.has_arg = 0, .flag = &report_per_port_flag, .val = 1},
 			{ .name = "odp",		.has_arg = 0, .flag = &odp_flag, .val = 1},
-			{ .name = "promiscuous",		.has_arg = 0, .flag = &use_promiscuous_flag, .val = 1},
+			{ .name = "promiscuous",	.has_arg = 0, .flag = &use_promiscuous_flag, .val = 1},
 			{ .name = "raw_mcast",		.has_arg = 0, .flag = &raw_mcast_flag, .val = 1},
-            { 0 }
-        };
-        c = getopt_long(argc,argv,"w:y:p:d:i:m:s:n:t:u:S:x:c:q:I:o:M:r:Q:A:l:D:f:B:T:E:J:j:K:k:aFegzRvhbNVCHUOZP",long_options,NULL);
+			#ifdef HAVE_VERBS_EXP
+			{ .name = "use_exp",		.has_arg = 0, .flag = &use_exp_flag, .val = 1},
+			#endif
+			#ifdef HAVE_ACCL_VERBS
+			{ .name = "verb_type",		.has_arg = 1, .flag = &verb_type_flag, .val = 1},
+			{ .name = "use_res_domain",	.has_arg = 0, .flag = &use_res_domain_flag, .val = 1},
+			#endif
+			{ 0 }
+		};
+		c = getopt_long(argc,argv,"w:y:p:d:i:m:s:n:t:u:S:x:c:q:I:o:M:r:Q:A:l:D:f:B:T:E:J:j:K:k:aFegzRvhbNVCHUOZP",long_options,NULL);
 
-        if (c == -1)
+		if (c == -1)
 			break;
 
-        switch (c) {
+		switch (c) {
 
 			case 'p': user_param->port = strtol(optarg, NULL, 0); break;
 			case 'd': GET_STRING(user_param->ib_devname,strdupa(optarg)); break;
@@ -1314,288 +1381,293 @@ int parser(struct perftest_parameters *user_param,char *argv[], int argc) {
 			case 'T': CHECK_VALUE(user_param->tos,int,MIN_TOS,MAX_TOS,"TOS"); break;
 			case 'u': user_param->qp_timeout = (uint8_t)strtol(optarg, NULL, 0); break;
 			case 'S': user_param->sl = (uint8_t)strtol(optarg, NULL, 0);
-				if (user_param->sl > MAX_SL) {
-					fprintf(stderr," Only %d Service levels\n",MAX_SL);
-					return 1;
-				}
-				if (user_param->connection_type == RawEth)
-					user_param->raw_qos = 1;
-				break;
+				  if (user_param->sl > MAX_SL) {
+					  fprintf(stderr," Only %d Service levels\n",MAX_SL);
+					  return 1;
+				  }
+				  if (user_param->connection_type == RawEth)
+					  user_param->raw_qos = 1;
+				  break;
 			case 'x': CHECK_VALUE(user_param->gid_index,uint8_t,MIN_GID_IX,MAX_GID_IX,"Gid index"); 
 				  user_param->use_gid_user = 1; break;
 			case 'c': change_conn_type(&user_param->connection_type,user_param->verb,optarg); break;
 			case 'q':
-				if (user_param->tst != BW) {
-					fprintf(stderr," Multiple QPs only available on bw tests\n");
-					return 1;
-				}
-				CHECK_VALUE(user_param->num_of_qps,int,MIN_QP_NUM,MAX_QP_NUM,"num of Qps");
-				break;
+				  if (user_param->tst != BW) {
+					  fprintf(stderr," Multiple QPs only available on bw tests\n");
+					  return 1;
+				  }
+				  CHECK_VALUE(user_param->num_of_qps,int,MIN_QP_NUM,MAX_QP_NUM,"num of Qps");
+				  break;
 			case 'I': CHECK_VALUE(user_param->inline_size,int,0,MAX_INLINE,"Max inline");
-				if (user_param->verb == READ || user_param->verb ==ATOMIC) {
-					fprintf(stderr," Inline feature not available on READ/Atomic verbs\n");
-					return 1;
-				} break;
+				  if (user_param->verb == READ || user_param->verb ==ATOMIC) {
+					  fprintf(stderr," Inline feature not available on READ/Atomic verbs\n");
+					  return 1;
+				  } break;
 			case 'o': user_param->out_reads = strtol(optarg, NULL, 0);
-				if (user_param->verb != READ && user_param->verb != ATOMIC) {
-					fprintf(stderr," Setting Outstanding reads only available on READ verb\n");
-					return 1;
-				} break;
+				  if (user_param->verb != READ && user_param->verb != ATOMIC) {
+					  fprintf(stderr," Setting Outstanding reads only available on READ verb\n");
+					  return 1;
+				  } break;
 			case 'M': GET_STRING(user_param->user_mgid,strdupa(optarg)); break;
 			case 'r': CHECK_VALUE(user_param->rx_depth,int,MIN_RX,MAX_RX," Rx depth");
-				if (user_param->verb != SEND && user_param->rx_depth > DEF_RX_RDMA) {
-					fprintf(stderr," On RDMA verbs rx depth can be only 1\n");
-					return 1;
-				} break;
+				  if (user_param->verb != SEND && user_param->rx_depth > DEF_RX_RDMA) {
+					  fprintf(stderr," On RDMA verbs rx depth can be only 1\n");
+					  return 1;
+				  } break;
 			case 'Q': CHECK_VALUE(user_param->cq_mod,int,MIN_CQ_MOD,MAX_CQ_MOD,"CQ moderation"); break;
 			case 'A':
-				if (user_param->verb != ATOMIC) {
-					fprintf(stderr," You are not running the atomic_lat/bw test!\n");
-					fprintf(stderr," To change the atomic action type, you must run one of the atomic tests\n");
-					return 1;
-				}
+				  if (user_param->verb != ATOMIC) {
+					  fprintf(stderr," You are not running the atomic_lat/bw test!\n");
+					  fprintf(stderr," To change the atomic action type, you must run one of the atomic tests\n");
+					  return 1;
+				  }
 
-				if (strcmp(atomicTypesStr[0],optarg)==0)
-					user_param->atomicType = CMP_AND_SWAP;
+				  if (strcmp(atomicTypesStr[0],optarg)==0)
+					  user_param->atomicType = CMP_AND_SWAP;
 
-				else if (strcmp(atomicTypesStr[1],optarg)==0)
-					user_param->atomicType = FETCH_AND_ADD;
+				  else if (strcmp(atomicTypesStr[1],optarg)==0)
+					  user_param->atomicType = FETCH_AND_ADD;
 
-				else {
-					fprintf(stderr," Invalid Atomic type! please choose from {CMP_AND_SWAP,FETCH_AND_ADD}\n");
-					exit(1);
-				}
-				break;
+				  else {
+					  fprintf(stderr," Invalid Atomic type! please choose from {CMP_AND_SWAP,FETCH_AND_ADD}\n");
+					  exit(1);
+				  }
+				  break;
 			case 'l': user_param->post_list = strtol(optarg, NULL, 0); break;
 			case 'D': user_param->duration = strtol(optarg, NULL, 0);
-				if (user_param->duration <= 0) {
-						fprintf(stderr," Duration period must be greater than 0\n");
-						return 1;
-				}
-				user_param->test_type = DURATION;
-				break;
+				  if (user_param->duration <= 0) {
+					  fprintf(stderr," Duration period must be greater than 0\n");
+					  return 1;
+				  }
+				  user_param->test_type = DURATION;
+				  break;
 			case 'f': user_param->margin = strtol(optarg, NULL, 0);
- 				if (user_param->margin < 0) {
-					fprintf(stderr," margin must be positive.\n");
-					return 1;
-				} break;
+				  if (user_param->margin < 0) {
+					  fprintf(stderr," margin must be positive.\n");
+					  return 1;
+				  } break;
 			case 'O':
-				user_param->ib_port  = DEF_IB_PORT;
-				user_param->ib_port2 = DEF_IB_PORT2;
-				user_param->dualport = ON;
-				break;
+				  user_param->ib_port  = DEF_IB_PORT;
+				  user_param->ib_port2 = DEF_IB_PORT2;
+				  user_param->dualport = ON;
+				  break;
 			case 'a': user_param->test_method = RUN_ALL; break;
 			case 'F': user_param->cpu_freq_f = ON; break;
 			case 'V': printf("Version: %s\n",user_param->version); return VERSION_EXIT;
-			case 'h': usage(argv[0],user_param->verb,user_param->tst);
-					  if(user_param->connection_type == RawEth)
-					  {
-						 usage_raw_ethernet();
-					  }
-					  return HELP_EXIT;
+			case 'h': usage(argv[0], user_param->verb, user_param->tst, user_param->connection_type);
+				  if(user_param->connection_type == RawEth) {
+					  usage_raw_ethernet();
+				  }
+				  return HELP_EXIT;
 			case 'z': user_param->use_rdma_cm = ON; break;
 			case 'R': user_param->work_rdma_cm = ON; break;
 			case 's': size_len = (int)strlen(optarg);
 				  if (optarg[size_len-1] == 'K') {
-				  	optarg[size_len-1] = '\0';
-					size_factor = 1024;
+					  optarg[size_len-1] = '\0';
+					  size_factor = 1024;
 				  }
 				  if (optarg[size_len-1] == 'M') {
-				  	optarg[size_len-1] = '\0';
-					size_factor = 1024*1024;
+					  optarg[size_len-1] = '\0';
+					  size_factor = 1024*1024;
 				  }
 				  user_param->size = (uint64_t)strtol(optarg, NULL, 0) * size_factor;
 				  if (user_param->size < 1 || user_param->size > (UINT_MAX / 2)) {
-				  	fprintf(stderr," Message Size should be between %d and %d\n",1,UINT_MAX/2);
-					return 1;
+					  fprintf(stderr," Message Size should be between %d and %d\n",1,UINT_MAX/2);
+					  return 1;
 				  }	
 				  break;
 			case 'e': user_param->use_event = ON;
-				if (user_param->verb == WRITE) {
-					fprintf(stderr," Events feature not available on WRITE verb\n");
-					return 1;
-				} break;
+				  if (user_param->verb == WRITE) {
+					  fprintf(stderr," Events feature not available on WRITE verb\n");
+					  return 1;
+				  } break;
 			case 'b': user_param->duplex = ON;
-				if (user_param->tst == LAT) {
-					fprintf(stderr," Bidirectional is only available in BW test\n");
-					return 1;
-				} break;
+				  if (user_param->tst == LAT) {
+					  fprintf(stderr," Bidirectional is only available in BW test\n");
+					  return 1;
+				  } break;
 			case 'N': user_param->noPeak = ON;
-				if (user_param->tst == LAT) {
-					fprintf(stderr," NoPeak only valid for BW tests\n");
-					return 1;
-				} break;
+				  if (user_param->tst == LAT) {
+					  fprintf(stderr," NoPeak only valid for BW tests\n");
+					  return 1;
+				  } break;
 			case 'C':
-				if (user_param->tst != LAT) {
-					fprintf(stderr," Availible only on Latency tests\n");
-					return 1;
-				}
-				user_param->r_flag->cycles = ON;
-				break;
+				  if (user_param->tst != LAT) {
+					  fprintf(stderr," Availible only on Latency tests\n");
+					  return 1;
+				  }
+				  user_param->r_flag->cycles = ON;
+				  break;
 			case 'g': user_param->use_mcg = ON;
-				if (user_param->verb != SEND) {
-					fprintf(stderr," MultiCast feature only available on SEND verb\n");
-					return 1;
-				} break;
+				  if (user_param->verb != SEND) {
+					  fprintf(stderr," MultiCast feature only available on SEND verb\n");
+					  return 1;
+				  } break;
 			case 'H':
-				if (user_param->tst != LAT) {
-					fprintf(stderr," Availible only on Latency tests\n");
-					return 1;
-				}
-				user_param->r_flag->histogram = ON;
-				break;
-				case 'U':
-				if (user_param->tst != LAT) {
-					fprintf(stderr," Availible only on Latency tests\n");
-					return 1;
-				}
-				user_param->r_flag->unsorted = ON;
-				break;
+				  if (user_param->tst != LAT) {
+					  fprintf(stderr," Availible only on Latency tests\n");
+					  return 1;
+				  }
+				  user_param->r_flag->histogram = ON;
+				  break;
+			case 'U':
+				  if (user_param->tst != LAT) {
+					  fprintf(stderr," Availible only on Latency tests\n");
+					  return 1;
+				  }
+				  user_param->r_flag->unsorted = ON;
+				  break;
 			case 'B':
-				user_param->is_source_mac = ON;
-				if(parse_mac_from_str(optarg, user_param->source_mac))
-					return FAILURE;
-				break;
+				  user_param->is_source_mac = ON;
+				  if(parse_mac_from_str(optarg, user_param->source_mac))
+					  return FAILURE;
+				  break;
 			case 'E':
-				user_param->is_dest_mac = ON;
-				if(parse_mac_from_str(optarg, user_param->dest_mac))
-					return FAILURE;
-				break;
+				  user_param->is_dest_mac = ON;
+				  if(parse_mac_from_str(optarg, user_param->dest_mac))
+					  return FAILURE;
+				  break;
 			case 'J':
-				user_param->is_server_ip = ON;
-				if(1 != parse_ip_from_str(optarg, &(user_param->server_ip)))
-				{
-					fprintf(stderr," Invalid server IP address\n");
-					return FAILURE;
-				}
-				break;
+				  user_param->is_server_ip = ON;
+				  if(1 != parse_ip_from_str(optarg, &(user_param->server_ip))) {
+					  fprintf(stderr," Invalid server IP address\n");
+					  return FAILURE;
+				  }
+				  break;
 			case 'j':
-				user_param->is_client_ip = ON;
-				if(1 != parse_ip_from_str(optarg, &(user_param->client_ip)))
-				{
-					fprintf(stderr," Invalid client IP address\n");
-					return FAILURE;
-				}
-				break;
+				  user_param->is_client_ip = ON;
+				  if(1 != parse_ip_from_str(optarg, &(user_param->client_ip))) {
+					  fprintf(stderr," Invalid client IP address\n");
+					  return FAILURE;
+				  }
+				  break;
 			case 'K':
-				user_param->is_server_port = ON;
-				user_param->server_port = strtol(optarg, NULL, 0);
-				if(OFF == check_if_valid_udp_port(user_param->server_port))
-				{
-					fprintf(stderr," Invalid server UDP port\n");
-					return FAILURE;
-				}
-				break;
+				  user_param->is_server_port = ON;
+				  user_param->server_port = strtol(optarg, NULL, 0);
+				  if(OFF == check_if_valid_udp_port(user_param->server_port)) {
+					  fprintf(stderr," Invalid server UDP port\n");
+					  return FAILURE;
+				  }
+				  break;
 			case 'k':
-				user_param->is_client_port = ON;
-				user_param->client_port = strtol(optarg, NULL, 0);
-				if(OFF == check_if_valid_udp_port(user_param->client_port))
-				{
-					fprintf(stderr," Invalid client UDP port\n");
-					return FAILURE;
-				}
-				break;
+				  user_param->is_client_port = ON;
+				  user_param->client_port = strtol(optarg, NULL, 0);
+				  if(OFF == check_if_valid_udp_port(user_param->client_port)) {
+					  fprintf(stderr," Invalid client UDP port\n");
+					  return FAILURE;
+				  }
+				  break;
 			case 'w':
-				user_param->is_limit_bw = ON;
-				user_param->limit_bw = strtof(optarg,NULL);
-				if (user_param->limit_bw < 0) {
-
-					fprintf(stderr, " Invalid Minimum BW Limit\n");
-					return FAILURE;
-				}
-				break;
+				  user_param->is_limit_bw = ON;
+				  user_param->limit_bw = strtof(optarg,NULL);
+				  if (user_param->limit_bw < 0) {
+					  fprintf(stderr, " Invalid Minimum BW Limit\n");
+					  return FAILURE;
+				  }
+				  break;
 			case 'y':
-				user_param->is_limit_msgrate = ON;
-				user_param->limit_msgrate = strtof(optarg,NULL);
-				if (user_param->limit_msgrate < 0) {
-
-					fprintf(stderr, " Invalid Minimum msgRate Limit\n");
-					return FAILURE;
-				}
-				break;
+				  user_param->is_limit_msgrate = ON;
+				  user_param->limit_msgrate = strtof(optarg,NULL);
+				  if (user_param->limit_msgrate < 0) {
+					  fprintf(stderr, " Invalid Minimum msgRate Limit\n");
+					  return FAILURE;
+				  }
+				  break;
 			case 'P': user_param->machine = CLIENT; break;
 			case 'Z': user_param->machine = SERVER; break;
 			case 'v': user_param->mac_fwd = ON; break;
 			case 'G': user_param->use_rss = ON; break;
-			case 0: // required for long options to work.
-				if (pkey_flag) {
-					user_param->pkey_index = strtol(optarg,NULL,0);
-					pkey_flag = 0;
-				}
-				if (inline_recv_flag) {
-					user_param->inline_recv_size = strtol(optarg,NULL,0);
-					inline_recv_flag = 0;
-				}
-				if (rate_limit_flag) {
-					user_param->is_rate_limiting = 1;
-					user_param->rate_limit = strtol(optarg,NULL,0);
-					if (user_param->rate_limit < 0) {
-						fprintf(stderr, " Rate limit must be non-negative\n");
-						return FAILURE;
-					}
-					rate_limit_flag = 0;
-				}
-				if (burst_size_flag) {
-					user_param->burst_size = strtol(optarg,NULL,0);
-					if (user_param->burst_size < 0) {
-						fprintf(stderr, " Burst size must be non-negative\n");
-						return FAILURE;
-					}
-					burst_size_flag = 0;
-				}
-				if (rate_units_flag) {
-					if (strcmp("M",optarg) == 0) {
-						user_param->rate_units = MEGA_BYTE_PS;
-					} else if (strcmp("g",optarg) == 0) {
-						user_param->rate_units = GIGA_BIT_PS;
-					} else if (strcmp("p",optarg) == 0) {
-						user_param->rate_units = PACKET_PS;
-					} else {
-						fprintf(stderr, " Invalid rate limit units. Please use M,g or p\n");
-						return FAILURE;
-					}
-					rate_units_flag = 0;
-				}
-				if (verbosity_output_flag) {
-					if (strcmp("bandwidth",optarg) == 0) {
-						user_param->output = OUTPUT_BW;
-					} else if (strcmp("message_rate",optarg) == 0) {
-						user_param->output = OUTPUT_MR;
-					} else if (strcmp("latency",optarg) == 0) {
-						user_param->output = OUTPUT_LAT;
-					} else {
-						fprintf(stderr, " Invalid verbosity level output flag. Please use bandwidth, latency, message_rate\n");
-						return FAILURE;
-					}
-					verbosity_output_flag = 0;
-				}
-				if (latency_gap_flag) {
-					user_param->latency_gap = strtol(optarg,NULL,0);
-					if (user_param->latency_gap < 0) {
-                                                fprintf(stderr, " Latency gap time must be non-negative\n");
-                                                return FAILURE;
-                                        }
-                                        latency_gap_flag = 0;
-                                }
-				if (retry_count_flag) {
-					user_param->retry_count = strtol(optarg,NULL,0);
-					if (user_param->retry_count < 0) {
-						fprintf(stderr, " Retry Count value must be positive\n");
-						return FAILURE;
-					}
-					retry_count_flag = 0;
-				}
-				break;
+			case 0: /* required for long options to work. */
+				  if (pkey_flag) {
+					  user_param->pkey_index = strtol(optarg,NULL,0);
+					  pkey_flag = 0;
+				  }
+				  if (inline_recv_flag) {
+					  user_param->inline_recv_size = strtol(optarg,NULL,0);
+					  inline_recv_flag = 0;
+				  }
+				  if (rate_limit_flag) {
+					  user_param->is_rate_limiting = 1;
+					  user_param->rate_limit = strtol(optarg,NULL,0);
+					  if (user_param->rate_limit < 0) {
+						  fprintf(stderr, " Rate limit must be non-negative\n");
+						  return FAILURE;
+					  }
+					  rate_limit_flag = 0;
+				  }
+				  if (burst_size_flag) {
+					  user_param->burst_size = strtol(optarg,NULL,0);
+					  if (user_param->burst_size < 0) {
+						  fprintf(stderr, " Burst size must be non-negative\n");
+						  return FAILURE;
+					  }
+					  burst_size_flag = 0;
+				  }
+				  if (rate_units_flag) {
+					  if (strcmp("M",optarg) == 0) {
+						  user_param->rate_units = MEGA_BYTE_PS;
+					  } else if (strcmp("g",optarg) == 0) {
+						  user_param->rate_units = GIGA_BIT_PS;
+					  } else if (strcmp("p",optarg) == 0) {
+						  user_param->rate_units = PACKET_PS;
+					  } else {
+						  fprintf(stderr, " Invalid rate limit units. Please use M,g or p\n");
+						  return FAILURE;
+					  }
+					  rate_units_flag = 0;
+				  }
+				  if (verbosity_output_flag) {
+					  if (strcmp("bandwidth",optarg) == 0) {
+						  user_param->output = OUTPUT_BW;
+					  } else if (strcmp("message_rate",optarg) == 0) {
+						  user_param->output = OUTPUT_MR;
+					  } else if (strcmp("latency",optarg) == 0) {
+						  user_param->output = OUTPUT_LAT;
+					  } else {
+						  fprintf(stderr, " Invalid verbosity level output flag. Please use bandwidth, latency, message_rate\n");
+						  return FAILURE;
+					  }
+					  verbosity_output_flag = 0;
+				  }
+				  if (latency_gap_flag) {
+					  user_param->latency_gap = strtol(optarg,NULL,0);
+					  if (user_param->latency_gap < 0) {
+						  fprintf(stderr, " Latency gap time must be non-negative\n");
+						  return FAILURE;
+					  }
+					  latency_gap_flag = 0;
+				  }
+				  if (retry_count_flag) {
+					  user_param->retry_count = strtol(optarg,NULL,0);
+					  if (user_param->retry_count < 0) {
+						  fprintf(stderr, " Retry Count value must be positive\n");
+						  return FAILURE;
+					  }
+					  retry_count_flag = 0;
+				  }
+				  if (verb_type_flag) {
+					  if (strcmp("normal",optarg) == 0) {
+						  user_param->verb_type = NORMAL_INTF;
+					  } else if (strcmp("accl",optarg) == 0) {
+						  user_param->verb_type = ACCL_INTF;
+					  } else {
+						  fprintf(stderr, " Invalid verb type. Please choose normal/accl.\n");
+						  return FAILURE;
+					  }
+					  verb_type_flag = 0;
+				  }
+
+				  break;
 
 			default:
-				fprintf(stderr," Invalid Command or flag.\n");
-				fprintf(stderr," Please check command line and run again.\n\n");
-				usage(argv[0],user_param->verb,user_param->tst);
-				if(user_param->connection_type == RawEth) {
-					usage_raw_ethernet();
-				}
-				return 1;
-		 }
+				  fprintf(stderr," Invalid Command or flag.\n");
+				  fprintf(stderr," Please check command line and run again.\n\n");
+				  usage(argv[0], user_param->verb, user_param->tst, user_param->connection_type);
+				  if(user_param->connection_type == RawEth) {
+					  usage_raw_ethernet();
+				  }
+				  return 1;
+		}
 	}
 
 	if (tcp_flag) {
@@ -1621,19 +1693,23 @@ int parser(struct perftest_parameters *user_param,char *argv[], int argc) {
 		user_param->use_exp = 1;
 	}
 
+	if (use_res_domain_flag) {
+		user_param->use_res_domain = 1;
+	}
+
 	if (use_cuda_flag) {
 		user_param->use_cuda = 1;
 	}
 	if (report_both_flag) {
 		user_param->report_both = 1;
 	}
-	
+
 	if (is_reversed_flag) {
 		user_param->is_reversed = 1;
 	}
 
 	if (cpu_util_flag) {
-                user_param->cpu_util = 1;
+		user_param->cpu_util = 1;
 	}
 
 	if (report_per_port_flag) {
@@ -1641,7 +1717,7 @@ int parser(struct perftest_parameters *user_param,char *argv[], int argc) {
 	}
 
 	if (ipv6_flag) {
-                user_param->ipv6 = 1;
+		user_param->ipv6 = 1;
 	}
 
 	if(odp_flag) {
@@ -1666,7 +1742,7 @@ int parser(struct perftest_parameters *user_param,char *argv[], int argc) {
 	if(user_param->connection_type != RawEth)
 		user_param->machine = user_param->servername ? CLIENT : SERVER;
 
-	//fan-in addition
+	/* fan-in addition */
 	if (user_param->is_reversed) {
 		if (user_param->machine == SERVER)
 			user_param->machine = CLIENT;
@@ -1675,14 +1751,14 @@ int parser(struct perftest_parameters *user_param,char *argv[], int argc) {
 	}
 
 	force_dependecies(user_param);
-    return 0;
+	return 0;
 }
 
 /******************************************************************************
  *
  ******************************************************************************/
-int check_link_and_mtu(struct ibv_context *context,struct perftest_parameters *user_param) {
-
+int check_link_and_mtu(struct ibv_context *context,struct perftest_parameters *user_param)
+{
 	user_param->transport_type = context->device->transport_type;
 	user_param->link_type = set_link_layer(context,user_param->ib_port);
 
@@ -1692,7 +1768,7 @@ int check_link_and_mtu(struct ibv_context *context,struct perftest_parameters *u
 	}
 
 	if (user_param->link_type == IBV_LINK_LAYER_ETHERNET &&  user_param->gid_index == -1) {
-			user_param->gid_index = 0;
+		user_param->gid_index = 0;
 	}
 
 	if (user_param->connection_type == RawEth) {
@@ -1710,7 +1786,6 @@ int check_link_and_mtu(struct ibv_context *context,struct perftest_parameters *u
 		user_param->curr_mtu = set_mtu(context,user_param->ib_port,user_param->mtu);
 	}
 
-	// in case of dual-port mode
 	if (user_param->dualport==ON) {
 
 		user_param->link_type2 = set_link_layer(context,user_param->ib_port2);
@@ -1723,7 +1798,7 @@ int check_link_and_mtu(struct ibv_context *context,struct perftest_parameters *u
 		}
 	}
 
-	// Compute Max inline size with pre found statistics values
+	/* Compute Max inline size with pre found statistics values */
 	ctx_set_max_inline(context,user_param);
 
 	if (user_param->verb == READ || user_param->verb == ATOMIC)
@@ -1739,7 +1814,8 @@ int check_link_and_mtu(struct ibv_context *context,struct perftest_parameters *u
 		}
 		user_param->size = MTU_SIZE(user_param->curr_mtu);
 	}
-	//checking msg size in raw ethernet
+
+	/* checking msg size in raw ethernet */
 	if (user_param->connection_type == RawEth){
 		if (user_param->size > user_param->curr_mtu) {
 			fprintf(stderr," Max msg size in RawEth is MTU %d\n",user_param->curr_mtu);
@@ -1763,8 +1839,8 @@ int check_link_and_mtu(struct ibv_context *context,struct perftest_parameters *u
 /******************************************************************************
  *
  ******************************************************************************/
-int check_link(struct ibv_context *context,struct perftest_parameters *user_param) {
-
+int check_link(struct ibv_context *context,struct perftest_parameters *user_param)
+{
 	user_param->transport_type = context->device->transport_type;
 	user_param->link_type = set_link_layer(context,user_param->ib_port);
 
@@ -1774,7 +1850,7 @@ int check_link(struct ibv_context *context,struct perftest_parameters *user_para
 	}
 
 	if (user_param->link_type == IBV_LINK_LAYER_ETHERNET &&  user_param->gid_index == -1) {
-			user_param->gid_index = 0;
+		user_param->gid_index = 0;
 	}
 
 	if (user_param->connection_type == RawEth) {
@@ -1785,9 +1861,8 @@ int check_link(struct ibv_context *context,struct perftest_parameters *user_para
 		}
 	}
 
-	// in case of dual-port mode
+	/* in case of dual-port mode */
 	if (user_param->dualport==ON) {
-
 		user_param->link_type2 = set_link_layer(context,user_param->ib_port2);
 		if (user_param->link_type2 == IBV_LINK_LAYER_ETHERNET &&  user_param->gid_index2 == -1) {
 			user_param->gid_index2 = 1;
@@ -1798,7 +1873,7 @@ int check_link(struct ibv_context *context,struct perftest_parameters *user_para
 		}
 	}
 
-	// Compute Max inline size with pre found statistics values
+	/* Compute Max inline size with pre found statistics values */
 	ctx_set_max_inline(context,user_param);
 
 	if (user_param->verb == READ || user_param->verb == ATOMIC)
@@ -1820,8 +1895,8 @@ int check_link(struct ibv_context *context,struct perftest_parameters *user_para
 /******************************************************************************
  *
  ******************************************************************************/
-void ctx_print_test_info(struct perftest_parameters *user_param) {
-
+void ctx_print_test_info(struct perftest_parameters *user_param)
+{
 	int temp = 0;
 
 	if (user_param->output != FULL_VERBOSITY)
@@ -1890,9 +1965,9 @@ void ctx_print_test_info(struct perftest_parameters *user_param) {
 	printf(" Mtu             : %lu[B]\n",user_param->connection_type == RawEth ? user_param->curr_mtu : MTU_SIZE(user_param->curr_mtu));
 	printf(" Link type       : %s\n" ,link_layer_str(user_param->link_type));
 
-    //we use the receive buffer only for mac forwarding.
-    if (user_param->mac_fwd == ON)
-    	printf(" Buffer size     : %d[B]\n" ,user_param->buff_size/2);
+	/* we use the receive buffer only for mac forwarding. */
+	if (user_param->mac_fwd == ON)
+		printf(" Buffer size     : %d[B]\n" ,user_param->buff_size/2);
 
 	if (user_param->gid_index != DEF_GID_INDEX)
 		printf(" Gid index       : %d\n" ,user_param->gid_index);
@@ -1915,8 +1990,8 @@ void ctx_print_test_info(struct perftest_parameters *user_param) {
 	if (user_param->work_rdma_cm) {
 
 		if (user_param->tos != DEF_TOS) {
-                        printf(" \tTOS    : %d",user_param->tos);
-                }
+			printf(" \tTOS    : %d",user_param->tos);
+		}
 
 		if (user_param->machine == SERVER) {
 			putchar('\n');
@@ -1936,6 +2011,7 @@ static float calc_cpu_util (struct perftest_parameters *user_param)
 	long long ustat_diff, idle_diff;
 	ustat_diff = user_param->cpu_util_data.ustat[1] - user_param->cpu_util_data.ustat[0];
 	idle_diff = user_param->cpu_util_data.idle[1] - user_param->cpu_util_data.idle[0];
+
 	if ((ustat_diff + idle_diff) != 0)
 		return ((float)ustat_diff / (ustat_diff + idle_diff)) * 100;
 	else
@@ -1945,8 +2021,8 @@ static float calc_cpu_util (struct perftest_parameters *user_param)
 /******************************************************************************
  *
  ******************************************************************************/
-void print_report_bw (struct perftest_parameters *user_param, struct bw_report_data *my_bw_rep) {
-
+void print_report_bw (struct perftest_parameters *user_param, struct bw_report_data *my_bw_rep)
+{
 	double cycles_to_units,sum_of_test_cycles;
 	int location_arr;
 	int opt_completed = 0;
@@ -1966,7 +2042,7 @@ void print_report_bw (struct perftest_parameters *user_param, struct bw_report_d
 		num_of_qps /= 2;
 
 	if (user_param->noPeak == OFF) {
-		/* Find the peak bandwidth unless asked not to in command line*/
+		/* Find the peak bandwidth unless asked not to in command line */
 		for (i = 0; i < user_param->iters * num_of_qps; ++i) {
 			for (j = i; j < user_param->iters * num_of_qps; ++j) {
 				t = (user_param->tcompleted[j] - user_param->tposted[i]) / (j - i + 1);
@@ -1989,7 +2065,7 @@ void print_report_bw (struct perftest_parameters *user_param, struct bw_report_d
 	tsize = run_inf_bi_factor * user_param->size;
 	num_of_calculated_iters *= (user_param->test_type == DURATION) ? 1 : num_of_qps;
 	location_arr = (user_param->noPeak) ? 0 : user_param->iters*num_of_qps - 1;
-	//support in GBS format
+	/* support in GBS format */
 	format_factor = (user_param->report_fmt == MBS) ? 0x100000 : 125000000;
 
 	sum_of_test_cycles = ((double)(user_param->tcompleted[location_arr] - user_param->tposted[0]));
@@ -2024,7 +2100,7 @@ void print_report_bw (struct perftest_parameters *user_param, struct bw_report_d
 	my_bw_rep->sl = user_param->sl;
 
 	if (!user_param->duplex || (user_param->verb == SEND && user_param->test_type == DURATION) 
-							|| user_param->test_method == RUN_INFINITELY || user_param->connection_type == RawEth)
+			|| user_param->test_method == RUN_INFINITELY || user_param->connection_type == RawEth)
 		print_full_bw_report(user_param, my_bw_rep, NULL);
 
 	if (free_my_bw_rep == 1) {
@@ -2039,18 +2115,18 @@ void print_report_bw (struct perftest_parameters *user_param, struct bw_report_d
 void print_full_bw_report (struct perftest_parameters *user_param, struct bw_report_data *my_bw_rep, struct bw_report_data *rem_bw_rep)
 {
 
- 	double bw_peak     = my_bw_rep->bw_peak;
- 	double bw_avg      = my_bw_rep->bw_avg;
+	double bw_peak     = my_bw_rep->bw_peak;
+	double bw_avg      = my_bw_rep->bw_avg;
 	double bw_avg_p1      = my_bw_rep->bw_avg_p1;
 	double bw_avg_p2      = my_bw_rep->bw_avg_p2;
- 	double msgRate_avg = my_bw_rep->msgRate_avg;
+	double msgRate_avg = my_bw_rep->msgRate_avg;
 	double msgRate_avg_p1 = my_bw_rep->msgRate_avg_p1;
 	double msgRate_avg_p2 = my_bw_rep->msgRate_avg_p2;
 	int inc_accuracy = ((bw_avg < 0.1) && (user_param->report_fmt == GBS));
 
 	if (rem_bw_rep != NULL) {
- 		bw_peak     += rem_bw_rep->bw_peak;
- 		bw_avg      += rem_bw_rep->bw_avg;
+		bw_peak     += rem_bw_rep->bw_peak;
+		bw_avg      += rem_bw_rep->bw_avg;
 		bw_avg_p1      += rem_bw_rep->bw_avg_p1;
 		bw_avg_p2      += rem_bw_rep->bw_avg_p2;
 		msgRate_avg += rem_bw_rep->msgRate_avg;
@@ -2058,8 +2134,8 @@ void print_full_bw_report (struct perftest_parameters *user_param, struct bw_rep
 		msgRate_avg_p2 += rem_bw_rep->msgRate_avg_p2;
 	}
 
-	if ( (user_param->duplex && rem_bw_rep != NULL) ||  (!user_param->duplex && rem_bw_rep == NULL)) {//bibw test, and not report-both printing
-		// Verify Limits
+	if ( (user_param->duplex && rem_bw_rep != NULL) ||  (!user_param->duplex && rem_bw_rep == NULL)) {
+		/* Verify Limits */
 		if ( ((user_param->is_limit_bw == ON )&& (user_param->limit_bw > bw_avg)) )
 			user_param->is_bw_limit_passed |= 0;
 		else
@@ -2089,10 +2165,10 @@ void print_full_bw_report (struct perftest_parameters *user_param, struct bw_rep
  ******************************************************************************/
 static inline cycles_t get_median(int n, cycles_t delta[])
 {
-    if ((n - 1) % 2)
-        return(delta[n / 2] + delta[n / 2 - 1]) / 2;
-    else
-        return delta[n / 2];
+	if ((n - 1) % 2)
+		return(delta[n / 2] + delta[n / 2 - 1]) / 2;
+	else
+		return delta[n / 2];
 }
 
 /******************************************************************************
@@ -2100,12 +2176,12 @@ static inline cycles_t get_median(int n, cycles_t delta[])
  ******************************************************************************/
 static int cycles_compare(const void *aptr, const void *bptr)
 {
-    const cycles_t *a = aptr;
-    const cycles_t *b = bptr;
-    if (*a < *b) return -1;
-    if (*a > *b) return 1;
-    return 0;
+	const cycles_t *a = aptr;
+	const cycles_t *b = bptr;
+	if (*a < *b) return -1;
+	if (*a > *b) return 1;
 
+	return 0;
 }
 
 /******************************************************************************
@@ -2114,49 +2190,49 @@ static int cycles_compare(const void *aptr, const void *bptr)
 void print_report_lat (struct perftest_parameters *user_param)
 {
 
-    int i;
+	int i;
 	int rtt_factor;
 	double cycles_to_units;
-    cycles_t median;
+	cycles_t median;
 	cycles_t *delta = NULL;
-    const char* units;
+	const char* units;
 	double latency;
 
 	rtt_factor = (user_param->verb == READ || user_param->verb == ATOMIC) ? 1 : 2;
 	ALLOCATE(delta,cycles_t,user_param->iters - 1);
 
-    for (i = 0; i < user_param->iters - 1; ++i)
-        delta[i] = user_param->tposted[i + 1] - user_param->tposted[i];
+	for (i = 0; i < user_param->iters - 1; ++i)
+		delta[i] = user_param->tposted[i + 1] - user_param->tposted[i];
 
-    if (user_param->r_flag->cycles) {
-        cycles_to_units = 1;
-        units = "cycles";
+	if (user_param->r_flag->cycles) {
+		cycles_to_units = 1;
+		units = "cycles";
 
-    } else {
-        cycles_to_units = get_cpu_mhz(user_param->cpu_freq_f);
+	} else {
+		cycles_to_units = get_cpu_mhz(user_param->cpu_freq_f);
 		if ((cycles_to_units == 0 && !user_param->cpu_freq_f)) {
 			fprintf(stderr,"Can't produce a report\n");
 			exit(1);
 		}
 
-        units = "usec";
-    }
+		units = "usec";
+	}
 
-    if (user_param->r_flag->unsorted) {
-        printf("#, %s\n", units);
-        for (i = 0; i < user_param->iters - 1; ++i)
-		    printf("%d, %g\n", i + 1, delta[i] / cycles_to_units / rtt_factor);
-    }
+	if (user_param->r_flag->unsorted) {
+		printf("#, %s\n", units);
+		for (i = 0; i < user_param->iters - 1; ++i)
+			printf("%d, %g\n", i + 1, delta[i] / cycles_to_units / rtt_factor);
+	}
 
-    qsort(delta, user_param->iters - 1, sizeof *delta, cycles_compare);
+	qsort(delta, user_param->iters - 1, sizeof *delta, cycles_compare);
 
-    if (user_param->r_flag->histogram) {
-        printf("#, %s\n", units);
-        for (i = 0; i < user_param->iters - 1; ++i)
-            printf("%d, %g\n", i + 1, delta[i] / cycles_to_units / rtt_factor);
-    }
+	if (user_param->r_flag->histogram) {
+		printf("#, %s\n", units);
+		for (i = 0; i < user_param->iters - 1; ++i)
+			printf("%d, %g\n", i + 1, delta[i] / cycles_to_units / rtt_factor);
+	}
 
-    median = get_median(user_param->iters - 1, delta);
+	median = get_median(user_param->iters - 1, delta);
 
 	latency = median / cycles_to_units / rtt_factor;
 
@@ -2172,7 +2248,7 @@ void print_report_lat (struct perftest_parameters *user_param)
 				latency);
 		printf( user_param->cpu_util_data.enable ? REPORT_EXT_CPU_UTIL : REPORT_EXT , calc_cpu_util(user_param));
 	}
-    free(delta);
+	free(delta);
 }
 
 /******************************************************************************
@@ -2200,9 +2276,9 @@ void print_report_lat_duration (struct perftest_parameters *user_param)
 	}
 	else {
 		printf(REPORT_FMT_LAT_DUR,
-			user_param->size,
-			user_param->iters,
-			latency);
+				user_param->size,
+				user_param->iters,
+				latency);
 		printf( user_param->cpu_util_data.enable ? REPORT_EXT_CPU_UTIL : REPORT_EXT , calc_cpu_util(user_param));
 	}
 }
diff --git a/src/perftest_parameters.h b/src/perftest_parameters.h
index b2393b4..3ccdedf 100755
--- a/src/perftest_parameters.h
+++ b/src/perftest_parameters.h
@@ -53,7 +53,6 @@
 #ifndef PERFTEST_PARAMETERS_H
 #define PERFTEST_PARAMETERS_H
 
-// Files included for work.
 #include <infiniband/verbs.h>
 #include <unistd.h>
 #include <malloc.h>
@@ -71,7 +70,7 @@
 #include CUDA_PATH
 #endif
 
-// Connection types available.
+/* Connection types available. */
 #define RC  (0)
 #define UC  (1)
 #define UD  (2)
@@ -79,7 +78,7 @@
 #define XRC (4)
 #define DC  (5)
 
-// Genral control definitions
+/* Genral control definitions */
 #define OFF	     (0)
 #define ON 	     (1)
 #define SUCCESS	     (0)
@@ -95,7 +94,7 @@
 #define RAWETH_ADDITION    (18)
 #define HW_CRC_ADDITION    (4)
 
-// Default Values of perftest parameters
+/* Default Values of perftest parameters */
 #define DEF_PORT      (18515)
 #define DEF_IB_PORT   (1)
 #define DEF_IB_PORT2  (2)
@@ -123,18 +122,18 @@
 #define DEF_CACHE_LINE_SIZE (64)
 #define DEF_PAGE_SIZE (4096)
 
-// Optimal Values for Inline
+/* Optimal Values for Inline */
 #define DEF_INLINE_WRITE (220)
 #define DEF_INLINE_SEND_RC_UC (236)
 #define DEF_INLINE_SEND_XRC (236)
 #define DEF_INLINE_SEND_UD (188)
 #define DEF_INLINE_DC (150)
 
-// Max and Min allowed values for perftest parameters.
+/* Max and Min allowed values for perftest parameters. */
 #define MIN_TOS		(0)
 #define MAX_TOS		(256)
 #define MIN_IB_PORT   (1)
-#define MAX_IB_PORT   (3)  //was 2
+#define MAX_IB_PORT   (3)
 #define MIN_ITER      (5)
 #define MAX_ITER      (100000000)
 #define MIN_TX 	      (1)
@@ -155,7 +154,7 @@
 #define MAX_INLINE    (912)
 #define MAX_INLINE_UD (884)
 
-// Raw etherent defines
+/* Raw etherent defines */
 #define RAWETH_MIN_MSG_SIZE	(64)
 #define MIN_MTU_RAW_ETERNET	(64)
 #define MAX_MTU_RAW_ETERNET	(9600)
@@ -165,7 +164,7 @@
 
 #define RESULT_LINE_PER_PORT "-------------------------------------------------------------------------------------------------------------------------------------------------------------------\n"
 
-// The format of the results
+/* The format of the results */
 #define RESULT_FMT		" #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]   MsgRate[Mpps]"
 
 #define RESULT_FMT_PER_PORT	" #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]   MsgRate[Mpps]   BW Port1[MB/sec]   MsgRate Port1[Mpps]   BW Port2[MB/sec]   MsgRate Port2[Mpps]"
@@ -186,7 +185,7 @@
 
 #define RESULT_EXT_CPU_UTIL "    CPU_Util[%%]\n"
 
-// Result print format
+/* Result print format */
 #define REPORT_FMT     " %-7lu    %-10lu       %-7.2lf            %-7.2lf		   %-7.6lf"
 
 #define REPORT_FMT_EXT     " %-7lu    %lu           %-7.6lf            %-7.6lf            %-7.6lf"
@@ -199,59 +198,59 @@
 
 #define REPORT_FMT_QOS " %-7lu    %d           %lu           %-7.2lf            %-7.2lf                  %-7.6lf\n"
 
-// Result print format for latency tests.
+/* Result print format for latency tests. */
 #define REPORT_FMT_LAT " %-7lu %d          %-7.2f        %-7.2f      %-7.2f"
 
 #define REPORT_FMT_LAT_DUR " %-7lu       %d            %-7.2f"
 
 #define CHECK_VALUE(arg,type,minv,maxv,name) 						    					\
-	{ arg = (type)strtol(optarg, NULL, 0); if ((arg < minv) || (arg > maxv))                \
+{ arg = (type)strtol(optarg, NULL, 0); if ((arg < minv) || (arg > maxv))                \
 	{ fprintf(stderr," %s should be between %d and %d\n",name,minv,maxv); return 1; }}
 
-// Macro for allocating.
+/* Macro for allocating. */
 #define ALLOCATE(var,type,size)                                     \
-    { if((var = (type*)malloc(sizeof(type)*(size))) == NULL)        \
-        { fprintf(stderr," Cannot Allocate\n"); exit(1);}}
+{ if((var = (type*)malloc(sizeof(type)*(size))) == NULL)        \
+	{ fprintf(stderr," Cannot Allocate\n"); exit(1);}}
 
-// This is our string builder
+/* This is our string builder */
 #define GET_STRING(orig,temp) 						            \
-	{ ALLOCATE(orig,char,(strlen(temp) + 1)); strcpy(orig,temp); }
+{ ALLOCATE(orig,char,(strlen(temp) + 1)); strcpy(orig,temp); }
 
 #define MTU_SIZE(mtu_ind) (((uint64_t)1 << (MTU_FIX + mtu_ind)))
 
-#define MAX_VERSION 16		// Reserve 15 bytes for version numbers
+#define MAX_VERSION 16	/* Reserve 15 bytes for version numbers */
 
-// The Verb of the benchmark.
+/* The Verb of the benchmark. */
 typedef enum { SEND , WRITE, READ, ATOMIC } VerbType;
 
-// The type of the test
+/* The type of the test */
 typedef enum { LAT , BW } TestType;
 
-// The type of the machine ( server or client actually).
+/* The type of the machine ( server or client actually). */
 typedef enum { SERVER , CLIENT , UNCHOSEN} MachineType;
 
-// The type of the machine ( server or client actually).
+/* The type of the machine ( server or client actually). */
 typedef enum { LOCAL , REMOTE } PrintDataSide;
 
-// The atomic test type
+/* The atomic test type */
 typedef enum {CMP_AND_SWAP, FETCH_AND_ADD} AtomicType;
 
-// Type of test method.
+/* Type of test method. */
 typedef enum { ITERATIONS , DURATION } TestMethod;
 
-//for duration calculation
+/* for duration calculation */
 typedef enum { START_STATE, SAMPLE_STATE, STOP_SAMPLE_STATE, END_STATE} DurationStates;
 
-//Report format (Gbit/s VS MB/s)
+/* Report format (Gbit/s VS MB/s) */
 enum ctx_report_fmt { GBS, MBS };
 
-// Test method
+/* Test method */
 enum ctx_test_method {RUN_REGULAR, RUN_ALL, RUN_INFINITELY};
 
-// The type of the device
+/* The type of the device */
 enum ctx_device {
-	DEVICE_ERROR 	= -1 ,
-	UNKNOWN 		= 0,
+	DEVICE_ERROR		= -1,
+	UNKNOWN			= 0,
 	CONNECTX 		= 1,
 	CONNECTX2 		= 2,
 	CONNECTX3 		= 3,
@@ -260,19 +259,27 @@ enum ctx_device {
 	CHELSIO_T4 		= 6,
 	CHELSIO_T5 		= 7,
 	CONNECTX3_PRO		= 8,
-	SKYHAWK			= 9
+	SKYHAWK			= 9,
+	CONNECTX4		= 10,
+	CONNECTX4LX		= 11
 };
 
-// Units for rate limiter
+/* Units for rate limiter */
 enum rate_limiter_units {MEGA_BYTE_PS, GIGA_BIT_PS, PACKET_PS};
 
-// Verbosity Levels for test report
+/* Verbosity Levels for test report */
 enum verbosity_level {FULL_VERBOSITY=-1, OUTPUT_BW=0, OUTPUT_MR, OUTPUT_LAT };
 
+/*Accelerated verbs */
+enum verbs_intf {
+	NORMAL_INTF,
+	ACCL_INTF,
+};
+
 struct cpu_util_data {
 	int enable;
-        long long ustat[2];
-        long long idle[2];
+	long long ustat[2];
+	long long idle[2];
 };
 
 struct check_alive_data {
@@ -368,17 +375,17 @@ struct perftest_parameters {
 	int             		pkey_index;
 	int				raw_qos;
 	int				use_cuda;
-	// New test params format pilot. will be used in all flags soon,.
+	/* New test params format pilot. will be used in all flags soon,. */
 	enum ctx_test_method 		test_method;
 	enum ibv_transport_type 	transport_type;
 	enum ctx_report_fmt		report_fmt;
 	struct report_options  		*r_flag	;
 	int 				mac_fwd;
-	int report_both; //in bidirectional tests, report tx and rx separately
-	//results limits
+	int report_both; /* in bidirectional tests, report tx and rx separately */
+	/* results limits */
 	float 				min_bw_limit;
 	float 				min_msgRate_limit;
-	// Rate Limiter
+	/* Rate Limiter */
 	int 				is_rate_limiting;
 	int 				rate_limit;
 	int 				burst_size;
@@ -400,6 +407,10 @@ struct perftest_parameters {
 	int				masked_atomics;
 	int				cycle_buffer;
 	int				cache_line_size;
+	enum verbs_intf			verb_type;
+	int				is_exp_cq;
+	int				is_exp_qp;
+	int				use_res_domain;
 };
 
 struct report_options {
diff --git a/src/perftest_resources.c b/src/perftest_resources.c
index 8aed9d8..3e603ae 100755
--- a/src/perftest_resources.c
+++ b/src/perftest_resources.c
@@ -13,7 +13,7 @@
 #include "perftest_resources.h"
 #include "config.h"
 
-#if defined(HAVE_VERBS_EXP)
+#ifdef HAVE_VERBS_EXP
 static enum ibv_exp_wr_opcode exp_opcode_verbs_array[] = {IBV_EXP_WR_SEND,IBV_EXP_WR_RDMA_WRITE,IBV_EXP_WR_RDMA_READ};
 static enum ibv_exp_wr_opcode exp_opcode_atomic_array[] = {IBV_EXP_WR_ATOMIC_CMP_AND_SWP,IBV_EXP_WR_ATOMIC_FETCH_AND_ADD};
 #endif
@@ -29,22 +29,18 @@ struct check_alive_data check_alive_data;
  * Beginning
  ******************************************************************************/
 #ifdef HAVE_CUDA
-#define ASSERT(x)                                                       \
-    do                                                                  \
-        {                                                               \
-            if (!(x))                                                   \
-                {                                                       \
-                    fprintf(stdout, "Assertion \"%s\" failed at %s:%d\n", #x, __FILE__, __LINE__); \
-                    /*exit(EXIT_FAILURE);*/                                 \
-                }                                                       \
-        } while (0)
-
-#define CUCHECK(stmt)                           \
-    do                                          \
-        {                                       \
-            CUresult result = (stmt);           \
-            ASSERT(CUDA_SUCCESS == result);     \
-        } while (0)
+#define ASSERT(x)										\
+	do {											\
+	if (!(x)) {										\
+		fprintf(stdout, "Assertion \"%s\" failed at %s:%d\n", #x, __FILE__, __LINE__);	\
+	}											\
+} while (0)
+
+#define CUCHECK(stmt)				\
+	do {					\
+	CUresult result = (stmt);		\
+	ASSERT(CUDA_SUCCESS == result);		\
+} while (0)
 
 /*----------------------------------------------------------------------------*/
 
@@ -69,7 +65,7 @@ static int pp_init_gpu(struct pingpong_context *ctx, size_t _size)
 		printf("cuDeviceGetCount() returned %d\n", error);
 		exit(1);
 	}
-	// This function call returns 0 if there are no CUDA capable devices.
+	/* This function call returns 0 if there are no CUDA capable devices. */
 	if (deviceCount == 0) {
 		printf("There are no available device(s) that support CUDA\n");
 		return 1;
@@ -79,15 +75,16 @@ static int pp_init_gpu(struct pingpong_context *ctx, size_t _size)
 		printf("There are %d devices supporting CUDA, picking first...\n", deviceCount);
 
 	int devID = 0;
-	// pick up device with zero ordinal (default, or devID)
-	CUCHECK(cuDeviceGet(&cuDevice, devID));
 
-        char name[128];
-        CUCHECK(cuDeviceGetName(name, sizeof(name), devID));
-        printf("[pid = %d, dev = %d] device name = [%s]\n", getpid(), cuDevice, name);
+	/* pick up device with zero ordinal (default, or devID) */
+	CUCHECK(cuDeviceGet(&cuDevice, devID));
 
+	char name[128];
+	CUCHECK(cuDeviceGetName(name, sizeof(name), devID));
+	printf("[pid = %d, dev = %d] device name = [%s]\n", getpid(), cuDevice, name);
 	printf("creating CUDA Ctx\n");
-	// Create context
+
+	/* Create context */
 	error = cuCtxCreate(&cuContext, CU_CTX_MAP_HOST, cuDevice);
 	if (error != CUDA_SUCCESS) {
 		printf("cuCtxCreate() error=%d\n", error);
@@ -130,9 +127,9 @@ static int pp_free_gpu(struct pingpong_context *ctx)
 }
 #endif
 
-#if defined(HAVE_VERBS_EXP)
-static void get_verbs_pointers(struct pingpong_context *ctx) {
-	//get verbs pointers
+#ifdef HAVE_VERBS_EXP
+static void get_verbs_pointers(struct pingpong_context *ctx)
+{
 	ctx->exp_post_send_func_pointer = ibv_exp_get_provider_func(ctx->context,IBV_EXP_POST_SEND_FUNC);
 	if (!ctx->exp_post_send_func_pointer) {
 		fprintf(stderr, "Couldn't get ibv_exp_post_send pointer\n");
@@ -144,49 +141,49 @@ static void get_verbs_pointers(struct pingpong_context *ctx) {
 		ctx->post_send_func_pointer = &ibv_post_send;
 	}
 	ctx->poll_cq_func_pointer = ibv_exp_get_provider_func(ctx->context,IBV_POLL_CQ_FUNC);
-        if (!ctx->poll_cq_func_pointer) {
-                fprintf(stderr, "Couldn't get ibv_poll_cq pointer\n");
-        }
+	if (!ctx->poll_cq_func_pointer) {
+		fprintf(stderr, "Couldn't get ibv_poll_cq pointer\n");
+	}
 }
 #endif
 
 static int next_word_string(char* input, char* output, int from_index)
 {
-    int i = from_index;
-    int j = 0;
+	int i = from_index;
+	int j = 0;
 
-    while (input[i] != ' ') {
-       	output[j] = input[i];
-       	j++; i++;
-    }
+	while (input[i] != ' ') {
+		output[j] = input[i];
+		j++; i++;
+	}
 
-    output[j]=0;
-    return i+1;
+	output[j]=0;
+	return i+1;
 }
 
 static int get_n_word_string(char *input, char *output,int from_index, int iters)
 {
-    for (;iters > 0; iters--) {
-	from_index = next_word_string(input,output,from_index);
-    }
+	for (;iters > 0; iters--) {
+		from_index = next_word_string(input,output,from_index);
+	}
 
-    return from_index;
+	return from_index;
 }
 static void compress_spaces(char *str, char *dst)
 {
-    for (; *str; ++str) {
-        *dst++ = *str;
+	for (; *str; ++str) {
+		*dst++ = *str;
 
-        if (isspace(*str)) {
-            do ++str;
+		if (isspace(*str)) {
+			do ++str;
 
-            while (isspace(*str));
+			while (isspace(*str));
 
-            --str;
-        }
-    }
+			--str;
+		}
+	}
 
-    *dst = 0;
+	*dst = 0;
 }
 
 static void get_cpu_stats(struct perftest_parameters *duration_param,int stat_index)
@@ -196,14 +193,14 @@ static void get_cpu_stats(struct perftest_parameters *duration_param,int stat_in
 	char line[100];
 	char tmp[100];
 	int index=0;
-	fp = fopen(file_name, "r");      //open file , read only
+	fp = fopen(file_name, "r");
 
 	fgets(line,100,fp);
 	compress_spaces(line,line);
-	index=get_n_word_string(line,tmp,index,2); //skip first word
+	index=get_n_word_string(line,tmp,index,2); /* skip first word */
 	duration_param->cpu_util_data.ustat[stat_index-1] = atoll(tmp);
 
-	index=get_n_word_string(line,tmp,index,3); //skip 2 stats
+	index=get_n_word_string(line,tmp,index,3); /* skip 2 stats */
 	duration_param->cpu_util_data.idle[stat_index-1] = atoll(tmp);
 
 	fclose(fp);
@@ -212,15 +209,15 @@ static void get_cpu_stats(struct perftest_parameters *duration_param,int stat_in
 static int check_for_contig_pages_support(struct ibv_context *context)
 {
 	int answer;
-#ifdef HAVE_VERBS_EXP
+	#ifdef HAVE_VERBS_EXP
 	struct ibv_exp_device_attr attr;
 	memset(&attr,0,sizeof attr);
 	if (ibv_exp_query_device(context,&attr)) {
-                fprintf(stderr, "Couldn't get device attributes\n");
-                return FAILURE;
-        }
+		fprintf(stderr, "Couldn't get device attributes\n");
+		return FAILURE;
+	}
 	answer = ( attr.exp_device_cap_flags &= IBV_EXP_DEVICE_MR_ALLOCATE) ? SUCCESS : FAILURE;
-#else
+	#else
 	struct ibv_device_attr attr;
 
 	if (ibv_query_device(context,&attr)) {
@@ -234,7 +231,7 @@ static int check_for_contig_pages_support(struct ibv_context *context)
 	 * Warning: this bit can represent others things in different devices.
 	 */
 	answer = attr.device_cap_flags & (1 << 23) ? SUCCESS : FAILURE;
-#endif
+	#endif
 	return answer;
 }
 
@@ -305,13 +302,18 @@ static int ctx_xrc_srq_create(struct pingpong_context *ctx,struct perftest_param
 static struct ibv_qp *ctx_xrc_qp_create(struct pingpong_context *ctx,struct perftest_parameters *user_param,int qp_index)
 {
 	struct ibv_qp* qp = NULL;
-	struct ibv_qp_init_attr_ex qp_init_attr;
 	int num_of_qps = user_param->num_of_qps / 2;
 
+	#ifdef HAVE_VERBS_EXP
+	struct ibv_exp_qp_init_attr qp_init_attr;
+	#else
+	struct ibv_qp_init_attr_ex qp_init_attr;
+	#endif
+
 	memset(&qp_init_attr, 0, sizeof(qp_init_attr));
 
 	if ( (!(user_param->duplex || user_param->tst == LAT) && (user_param->machine == SERVER) )
-						|| ((user_param->duplex || user_param->tst == LAT) && (qp_index >= num_of_qps))) {
+			|| ((user_param->duplex || user_param->tst == LAT) && (qp_index >= num_of_qps))) {
 		qp_init_attr.qp_type = IBV_QPT_XRC_RECV;
 		qp_init_attr.comp_mask = IBV_QP_INIT_ATTR_XRCD;
 		qp_init_attr.xrcd = ctx->xrc_domain;
@@ -329,40 +331,24 @@ static struct ibv_qp *ctx_xrc_qp_create(struct pingpong_context *ctx,struct perf
 		qp_init_attr.cap.max_inline_data = user_param->inline_size;
 	}
 
-	qp = ibv_create_qp_ex(ctx->context,&qp_init_attr);
-	return qp;
-}
-#endif
-
-#ifdef HAVE_DC
-/******************************************************************************
- *
- ******************************************************************************/
-static struct ibv_qp *ctx_dc_qp_create(struct pingpong_context *ctx,struct perftest_parameters *user_param,int qp_index)
-{
-	struct ibv_qp_init_attr_ex qp_init_attr;
-	struct ibv_qp* qp = NULL;
+	#ifdef HAVE_ACCL_VERBS
+	if (user_param->use_res_domain) {
+		qp_init_attr.comp_mask |= IBV_EXP_QP_INIT_ATTR_RES_DOMAIN;
+		qp_init_attr.res_domain = ctx->res_domain;
+	}
+	#endif
 
-	memset(&qp_init_attr, 0, sizeof(struct ibv_qp_init_attr_ex));
-
-	qp_init_attr.send_cq = ctx->send_cq;
-	qp_init_attr.recv_cq = (user_param->verb == SEND) ? ctx->recv_cq : ctx->send_cq;
-	qp_init_attr.cap.max_inline_data = user_param->inline_size;
-	qp_init_attr.pd = ctx->pd;
-	qp_init_attr.comp_mask = IBV_QP_INIT_ATTR_PD;
-#if defined(HAVE_VERBS_EXP)
-	qp_init_attr.qp_type = IBV_EXP_QPT_DC_INI;
-#else
-	qp_init_attr.qp_type = IBV_QPT_DC_INI;
-#endif
-	qp_init_attr.srq = NULL;
-	qp_init_attr.cap.max_send_wr  = user_param->tx_depth;
-	qp_init_attr.cap.max_send_sge = MAX_SEND_SGE;
+	#ifdef HAVE_VERBS_EXP
+	qp = ibv_exp_create_qp(ctx->context, &qp_init_attr);
+	#else
+	qp = ibv_create_qp_ex(ctx->context, &qp_init_attr);
+	#endif
 
-	qp = ibv_create_qp_ex(ctx->context,&qp_init_attr);
 	return qp;
 }
+#endif
 
+#ifdef HAVE_DC
 /******************************************************************************
  *
  ******************************************************************************/
@@ -376,18 +362,20 @@ static int ctx_dc_tgt_create(struct pingpong_context *ctx,struct perftest_parame
 
 	memset(&dattr,0,sizeof(struct ibv_exp_device_attr));
 
-	//in dc with bidirectional,
-	//there are send qps and recv qps. the actual number of send/recv qps
-	//is num_of_qps / 2.
+	/* in dc with bidirectional,
+	 * there are send qps and recv qps. the actual number of send/recv qps
+	 * is num_of_qps / 2.
+	 */
 	if (user_param->duplex || user_param->tst == LAT) {
 		num_of_qps /= 2;
 		num_of_qps_per_port = num_of_qps / 2;
 	}
 
-	// first half of qps are for ib_port and second half are for ib_port2
-	// in dc with bidirectional, the first half of qps are dc_ini qps and
-	// the second half are dc_tgts . the first half of the send/recv qps
-	// are for ib_port1 and the second half are for ib_port2
+	/* first half of qps are for ib_port and second half are for ib_port2
+	 * in dc with bidirectional, the first half of qps are dc_ini qps and
+	 * the second half are dc_tgts . the first half of the send/recv qps
+	 * are for ib_port1 and the second half are for ib_port2
+	 */
 	if (user_param->dualport == ON && (dct_index % num_of_qps >= num_of_qps_per_port))
 		port_num = user_param->ib_port2;
 	else
@@ -436,13 +424,13 @@ static int ctx_dc_tgt_create(struct pingpong_context *ctx,struct perftest_parame
 		.pkey_index = user_param->pkey_index,
 		.gid_index = user_param->gid_index,
 		.hop_limit = 1,
-		.inline_size = user_param->inline_recv_size,
+		.inline_size = user_param->inline_size,
 	};
 
 	ctx->dct[dct_index] = ibv_exp_create_dct(ctx->context, &dctattr);
 	if (!ctx->dct[dct_index]) {
 		printf("create dct failed\n");
-		return -1;
+		return FAILURE;
 	}
 
 	struct ibv_exp_dct_attr dcqattr;
@@ -451,15 +439,15 @@ static int ctx_dc_tgt_create(struct pingpong_context *ctx,struct perftest_parame
 	err = ibv_exp_query_dct(ctx->dct[dct_index], &dcqattr);
 	if (err) {
 		printf("query dct failed\n");
-		return -1;
+		return FAILURE;
 	} else if (dcqattr.dc_key != user_param->dct_key) {
 		printf("queried dckry (0x%llx) is different then provided at create (0x%llx)\n",
-			   (unsigned long long)dcqattr.dc_key,
-			   (unsigned long long)user_param->dct_key);
-		return -1;
+				(unsigned long long)dcqattr.dc_key,
+				(unsigned long long)user_param->dct_key);
+		return FAILURE;
 	} else if (dcqattr.state != IBV_EXP_DCT_STATE_ACTIVE) {
 		printf("state is not active %d\n", dcqattr.state);
-		return -1;
+		return FAILURE;
 	}
 
 	return 0;
@@ -486,21 +474,21 @@ static struct ibv_qp *ctx_rss_eth_qp_create(struct pingpong_context *ctx,struct
 	attr.comp_mask = IBV_EXP_QP_INIT_ATTR_PD | IBV_EXP_QP_INIT_ATTR_QPG;
 	attr.pd = ctx->pd;
 
-	if (qp_index == 0) { //rss parent
-	#if defined(HAVE_VERBS_EXP)
+	if (qp_index == 0) { /* rss parent */
+		#ifdef HAVE_VERBS_EXP
 		attr.qpg.qpg_type = IBV_EXP_QPG_PARENT;
-	#else
+		#else
 		attr.qpg.qpg_type = IBV_QPG_PARENT;
-	#endif
+		#endif
 		attr.qpg.qpg_parent = NULL;
 		attr.qpg.parent_attrib.tss_child_count = 0;
 		attr.qpg.parent_attrib.rss_child_count = user_param->num_of_qps - 1;
-	} else { //rss childs
-	#if defined(HAVE_VERBS_EXP)
+	} else { /* rss childs */
+		#ifdef HAVE_VERBS_EXP
 		attr.qpg.qpg_type = IBV_EXP_QPG_CHILD_RX;
-	#else
+		#else
 		attr.qpg.qpg_type = IBV_QPG_CHILD_RX;
-	#endif 
+		#endif
 		attr.qpg.qpg_parent = ctx->qp[0];
 	}
 	qp = ibv_exp_create_qp(ctx->context,&attr);
@@ -514,15 +502,15 @@ static struct ibv_qp *ctx_rss_eth_qp_create(struct pingpong_context *ctx,struct
  *
  ******************************************************************************/
 int check_add_port(char **service,int port,
-				   const char *servername,
-				   struct addrinfo *hints,
-				   struct addrinfo **res) {
-
+		const char *servername,
+		struct addrinfo *hints,
+		struct addrinfo **res)
+{
 	int number;
 
 	if (asprintf(service,"%d", port) < 0) {
 		return FAILURE;
-	 }
+	}
 
 	number = getaddrinfo(servername,*service,hints,res);
 
@@ -538,11 +526,11 @@ int check_add_port(char **service,int port,
  *
  ******************************************************************************/
 int create_rdma_resources(struct pingpong_context *ctx,
-						  struct perftest_parameters *user_param) {
-
+		struct perftest_parameters *user_param)
+{
 	int is_udp_ps = user_param->connection_type == UD || user_param->connection_type == RawEth;
-
 	enum rdma_port_space port_space = (is_udp_ps) ? RDMA_PS_UDP : RDMA_PS_TCP;
+	struct rdma_cm_id **cm_id = (user_param->machine == CLIENT) ? &ctx->cm_id : &ctx->cm_id_control;
 
 	ctx->cm_channel = rdma_create_event_channel();
 	if (ctx->cm_channel == NULL) {
@@ -550,20 +538,9 @@ int create_rdma_resources(struct pingpong_context *ctx,
 		return FAILURE;
 	}
 
-	if (user_param->machine == CLIENT) {
-
-		if (rdma_create_id(ctx->cm_channel,&ctx->cm_id,NULL,port_space)) {
-			fprintf(stderr,"rdma_create_id failed\n");
-			return FAILURE;
-		}
-
-	} else {
-
-		if (rdma_create_id(ctx->cm_channel,&ctx->cm_id_control,NULL,port_space)) {
-			fprintf(stderr,"rdma_create_id failed\n");
-			return FAILURE;
-		}
-
+	if (rdma_create_id(ctx->cm_channel,cm_id,NULL,port_space)) {
+		fprintf(stderr,"rdma_create_id failed\n");
+		return FAILURE;
 	}
 
 	return SUCCESS;
@@ -573,7 +550,8 @@ int create_rdma_resources(struct pingpong_context *ctx,
  *
  ******************************************************************************/
 int destroy_rdma_resources(struct pingpong_context *ctx,
-					struct perftest_parameters *user_param) {
+		struct perftest_parameters *user_param)
+{
 	int ret;
 	if (user_param->machine == CLIENT) {
 		ret = rdma_destroy_id(ctx->cm_id);	
@@ -585,10 +563,10 @@ int destroy_rdma_resources(struct pingpong_context *ctx,
 }
 
 /******************************************************************************
-+ *
-+ ******************************************************************************/
-struct ibv_device* ctx_find_dev(const char *ib_devname) {
-
+  + *
+  + ******************************************************************************/
+struct ibv_device* ctx_find_dev(const char *ib_devname)
+{
 	int num_of_device;
 	struct ibv_device **dev_list;
 	struct ibv_device *ib_dev = NULL;
@@ -620,9 +598,9 @@ struct ibv_device* ctx_find_dev(const char *ib_devname) {
 /******************************************************************************
  *
  ******************************************************************************/
-void alloc_ctx(struct pingpong_context *ctx,struct perftest_parameters *user_param) {
-
-	int tarr_size;
+void alloc_ctx(struct pingpong_context *ctx,struct perftest_parameters *user_param)
+{
+	uint64_t tarr_size;
 
 	ctx->cycle_buffer = user_param->cycle_buffer;
 	ctx->cache_line_size = user_param->cache_line_size;
@@ -637,14 +615,17 @@ void alloc_ctx(struct pingpong_context *ctx,struct perftest_parameters *user_par
 		ALLOCATE(user_param->tcompleted,cycles_t,1);
 
 	ALLOCATE(ctx->qp,struct ibv_qp*,user_param->num_of_qps);
+	#ifdef HAVE_ACCL_VERBS
+	ALLOCATE(ctx->qp_burst_family, struct ibv_exp_qp_burst_family*, user_param->num_of_qps);
+	#endif
 
 	#ifdef HAVE_DC
 	if (user_param->connection_type == DC) {
-	#if defined(HAVE_VERBS_EXP)
+		#ifdef HAVE_VERBS_EXP
 		ALLOCATE(ctx->dct,struct ibv_exp_dct*,user_param->num_of_qps);
-	#else
+		#else
 		ALLOCATE(ctx->dct,struct ibv_dct*,user_param->num_of_qps);
-	#endif
+		#endif
 	}
 	#endif
 
@@ -669,9 +650,9 @@ void alloc_ctx(struct pingpong_context *ctx,struct perftest_parameters *user_par
 	if (user_param->machine == CLIENT || user_param->tst == LAT || user_param->duplex) {
 
 		ALLOCATE(ctx->sge_list,struct ibv_sge,user_param->num_of_qps*user_param->post_list);
-	#if defined(HAVE_VERBS_EXP)
+		#ifdef HAVE_VERBS_EXP
 		ALLOCATE(ctx->exp_wr,struct ibv_exp_send_wr,user_param->num_of_qps*user_param->post_list);
-	#endif
+		#endif
 		ALLOCATE(ctx->wr,struct ibv_send_wr,user_param->num_of_qps*user_param->post_list);
 		if ((user_param->verb == SEND && user_param->connection_type == UD ) || user_param->connection_type == DC) {
 			ALLOCATE(ctx->ah,struct ibv_ah*,user_param->num_of_qps);
@@ -684,13 +665,13 @@ void alloc_ctx(struct pingpong_context *ctx,struct perftest_parameters *user_par
 		ALLOCATE(ctx->rwr,struct ibv_recv_wr,user_param->num_of_qps);
 		ALLOCATE(ctx->rx_buffer_addr,uint64_t,user_param->num_of_qps);
 	}
-    if (user_param->mac_fwd == ON ) 
-        ctx->cycle_buffer = user_param->size * user_param->rx_depth;
+	if (user_param->mac_fwd == ON )
+		ctx->cycle_buffer = user_param->size * user_param->rx_depth;
 
 	ctx->size = user_param->size;
 	ctx->buff_size = BUFF_SIZE(ctx->size,ctx->cycle_buffer)*2*user_param->num_of_qps;
 
-    user_param->buff_size = ctx->buff_size;
+	user_param->buff_size = ctx->buff_size;
 	if (user_param->connection_type == UD)
 		ctx->buff_size += ctx->cache_line_size;
 }
@@ -699,8 +680,8 @@ void alloc_ctx(struct pingpong_context *ctx,struct perftest_parameters *user_par
  *
  ******************************************************************************/
 int destroy_ctx(struct pingpong_context *ctx,
-				struct perftest_parameters *user_param)  {
-
+		struct perftest_parameters *user_param)
+{
 	int i, first;
 	int test_result = 0;
 	int num_of_qps = user_param->num_of_qps;
@@ -708,12 +689,14 @@ int destroy_ctx(struct pingpong_context *ctx,
 	if (user_param->work_rdma_cm == ON)
 		rdma_disconnect(ctx->cm_id);
 
-	//in dc with bidirectional,
-	//there are send qps and recv qps. the actual number of send/recv qps
-	//is num_of_qps / 2.
+	/* in dc with bidirectional,
+	 * there are send qps and recv qps. the actual number of send/recv qps
+	 * is num_of_qps / 2.
+	 */
 	if (user_param->duplex || user_param->tst == LAT) {
 		num_of_qps /= 2;
 	}
+
 	/* RSS parent should be last */
 	if (user_param->use_rss)
 		first = 1;
@@ -722,22 +705,22 @@ int destroy_ctx(struct pingpong_context *ctx,
 	for (i = first; i < user_param->num_of_qps; i++) {
 
 		if (( (user_param->connection_type == DC && !((!(user_param->duplex || user_param->tst == LAT) && (user_param->machine == SERVER) )
-								|| ((user_param->duplex || user_param->tst == LAT) && (i >= num_of_qps)))) || 
-										user_param->connection_type == UD) && (user_param->tst == LAT || user_param->machine == CLIENT || user_param->duplex)) {
+							|| ((user_param->duplex || user_param->tst == LAT) && (i >= num_of_qps)))) ||
+					user_param->connection_type == UD) && (user_param->tst == LAT || user_param->machine == CLIENT || user_param->duplex)) {
 			if (ibv_destroy_ah(ctx->ah[i])) {
 				fprintf(stderr, "failed to destroy AH\n");
 				test_result = 1;
 			}
 		}
 		#ifdef HAVE_DC
-		if (user_param->connection_type == DC &&   ((!(user_param->duplex || user_param->tst == LAT) 
-			&& (user_param->machine == SERVER)) || ((user_param->duplex || user_param->tst == LAT) && (i >= num_of_qps)))) {
-				if (ibv_exp_destroy_dct(ctx->dct[i])) {
-					fprintf(stderr, "failed to destroy dct\n");
-					test_result = 1;
-				}
-				if ( i == user_param->num_of_qps -1 )
-					return test_result;
+		if (user_param->connection_type == DC && ((!(user_param->duplex || user_param->tst == LAT)
+						&& (user_param->machine == SERVER)) || ((user_param->duplex || user_param->tst == LAT) && (i >= num_of_qps)))) {
+			if (ibv_exp_destroy_dct(ctx->dct[i])) {
+				fprintf(stderr, "failed to destroy dct\n");
+				test_result = 1;
+			}
+			if ( i == user_param->num_of_qps -1 )
+				return test_result;
 		} else
 		#endif
 		if (ibv_destroy_qp(ctx->qp[i])) {
@@ -765,8 +748,8 @@ int destroy_ctx(struct pingpong_context *ctx,
 			test_result = 1;
 		}
 	}
-#ifdef HAVE_XRCD
 
+	#ifdef HAVE_XRCD
 	if (user_param->use_xrc) {
 
 		if (ibv_close_xrcd(ctx->xrc_domain)) {
@@ -780,8 +763,7 @@ int destroy_ctx(struct pingpong_context *ctx,
 		}
 
 	}
-
-#endif
+	#endif
 
 	if (ibv_destroy_cq(ctx->send_cq)) {
 		fprintf(stderr, "failed to destroy CQ\n");
@@ -832,10 +814,10 @@ int destroy_ctx(struct pingpong_context *ctx,
 	}
 
 	#ifdef HAVE_CUDA
-		if (user_param->use_cuda) {
-			pp_free_gpu(ctx);
-		}
-		else
+	if (user_param->use_cuda) {
+		pp_free_gpu(ctx);
+	}
+	else
 	#endif
 	if (ctx->is_contig_supported == FAILURE)
 		free(ctx->buf);
@@ -875,124 +857,232 @@ int destroy_ctx(struct pingpong_context *ctx,
 	return test_result;
 }
 
-#if defined(HAVE_VERBS_EXP)
-
-static struct ibv_qp* ctx_qp_create_inline_recv(struct pingpong_context *ctx,
-							 struct perftest_parameters *user_param) {
-
-	struct ibv_exp_qp_init_attr attr;
+#ifdef HAVE_VERBS_EXP
+static int check_inline_recv_support(struct pingpong_context *ctx,
+					struct perftest_parameters *user_param)
+{
 	struct ibv_exp_device_attr dattr;
-	struct ibv_qp* qp = NULL;
-	int ret;
+	int ret = 0;
 
-	memset(&attr, 0, sizeof(attr));
 	memset(&dattr, 0, sizeof(dattr));
 
 	dattr.comp_mask |= IBV_EXP_DEVICE_ATTR_INLINE_RECV_SZ;
 	ret = ibv_exp_query_device(ctx->context, &dattr);
 	if (ret) {
-			printf("  Couldn't query device for inline-receive capabilities.\n");
-		} else if (!(dattr.comp_mask & IBV_EXP_DEVICE_ATTR_INLINE_RECV_SZ)) {
-			printf("  Inline-receive not supported by driver.\n");
-		} else if (dattr.inline_recv_sz < user_param->inline_recv_size) {
-			printf("  Max inline-receive(%d) < Requested inline-receive(%d).\n",
-			       dattr.inline_recv_sz, user_param->inline_recv_size);
+		printf("  Couldn't query device for inline-receive capabilities.\n");
+	} else if (!(dattr.comp_mask & IBV_EXP_DEVICE_ATTR_INLINE_RECV_SZ)) {
+		printf("  Inline-receive not supported by driver.\n");
+		ret = 1;
+	} else if (dattr.inline_recv_sz < user_param->inline_recv_size) {
+		printf("  Max inline-receive(%d) < Requested inline-receive(%d).\n",
+			dattr.inline_recv_sz, user_param->inline_recv_size);
 	}
 
-	attr.send_cq = ctx->send_cq;
-	attr.recv_cq = (user_param->verb == SEND) ? ctx->recv_cq : ctx->send_cq;
-	attr.cap.max_send_wr  = user_param->tx_depth;
-	attr.cap.max_send_sge = MAX_SEND_SGE;
-	attr.cap.max_inline_data = user_param->inline_size;
-	attr.max_inl_recv = user_param->inline_recv_size;
-	attr.pd = ctx->pd;
-	attr.comp_mask = IBV_EXP_QP_INIT_ATTR_PD;
-	attr.comp_mask |= IBV_EXP_QP_INIT_ATTR_INL_RECV;
+	return ret;
 
-	if (user_param->use_srq && (user_param->tst == LAT || user_param->machine == SERVER || user_param->duplex == ON)) {
-		attr.srq = ctx->srq;
-		attr.cap.max_recv_wr  = 0;
-		attr.cap.max_recv_sge = 0;
-	} else {
-		attr.srq = NULL;
-		attr.cap.max_recv_wr  = user_param->rx_depth;
-		attr.cap.max_recv_sge = MAX_RECV_SGE;
-	}
+}
+#endif
 
-	switch (user_param->connection_type) {
+#ifdef HAVE_ODP
+static int check_odp_support(struct pingpong_context *ctx)
+{
+	struct ibv_exp_device_attr dattr;
+	int ret = ibv_exp_query_device(ctx->context, &dattr);
+	if (ret) {
+		fprintf(stderr, " Couldn't query device for on-demand paging capabilities.\n");
+		return 0;
+	} else if (!(dattr.comp_mask & IBV_EXP_DEVICE_ATTR_ODP)) {
+		fprintf(stderr, " On-demand paging not supported by driver.\n");
+		return 0;
+	} else if (!(dattr.odp_caps.per_transport_caps.rc_odp_caps & IBV_EXP_ODP_SUPPORT_SEND)) {
+		fprintf(stderr, " Send is not supported for RC transport.\n");
+		return 0;
+	} else if (!(dattr.odp_caps.per_transport_caps.rc_odp_caps & IBV_EXP_ODP_SUPPORT_RECV)) {
+		fprintf(stderr, " Receive is not supported for RC transport.\n");
+		return 0;
+	}
 
-		case RC : attr.qp_type = IBV_QPT_RC; break;
-		case UC : attr.qp_type = IBV_QPT_UC; break;
-		case UD : attr.qp_type = IBV_QPT_UD; break;
-#ifdef HAVE_XRCD
-		case XRC : attr.qp_type = IBV_QPT_XRC; break;
+	return 1;
+}
 #endif
-#ifdef HAVE_RAW_ETH
-		case RawEth : attr.qp_type = IBV_QPT_RAW_PACKET; break;
+
+int create_reg_cqs(struct pingpong_context *ctx,
+		   struct perftest_parameters *user_param,
+		   int tx_buffer_depth, int need_recv_cq)
+{
+
+	ctx->send_cq = ibv_create_cq(ctx->context,tx_buffer_depth *
+					user_param->num_of_qps,NULL,ctx->channel,0);
+	if (!ctx->send_cq) {
+		fprintf(stderr, "Couldn't create CQ\n");
+		return FAILURE;
+	}
+
+	if (need_recv_cq) {
+		ctx->recv_cq = ibv_create_cq(ctx->context,user_param->rx_depth *
+						user_param->num_of_qps,NULL,ctx->channel,0);
+		if (!ctx->recv_cq) {
+			fprintf(stderr, "Couldn't create a receiver CQ\n");
+			return FAILURE;
+		}
+	}
+
+	return SUCCESS;
+}
+
+#ifdef HAVE_VERBS_EXP
+int create_exp_cqs(struct pingpong_context *ctx,
+		   struct perftest_parameters *user_param,
+		   int tx_buffer_depth, int need_recv_cq)
+{
+	struct ibv_exp_cq_init_attr attr;
+	#ifdef HAVE_ACCL_VERBS
+	enum ibv_exp_query_intf_status intf_status;
+	struct ibv_exp_query_intf_params intf_params;
+	#endif
+
+	memset(&attr, 0, sizeof(attr));
+
+	#ifdef HAVE_ACCL_VERBS
+	if (user_param->use_res_domain) {
+		attr.res_domain = ctx->res_domain;
+	}
+
+	if (user_param->verb_type == ACCL_INTF) {
+		memset(&intf_params, 0, sizeof(intf_params));
+		intf_params.intf_scope = IBV_EXP_INTF_GLOBAL;
+		intf_params.intf = IBV_EXP_INTF_CQ;
+	}
+	#endif
+
+	ctx->send_cq = ibv_exp_create_cq(ctx->context, tx_buffer_depth *
+						user_param->num_of_qps, NULL,
+						ctx->channel, 0, &attr);
+	if (!ctx->send_cq) {
+		fprintf(stderr, "Couldn't create exp CQ\n");
+		return FAILURE;
+	}
+
+	if (need_recv_cq) {
+		ctx->recv_cq = ibv_create_cq(ctx->context,user_param->rx_depth *
+						user_param->num_of_qps,NULL,ctx->channel,0);
+		if (!ctx->recv_cq) {
+			fprintf(stderr, "Couldn't create a receiver CQ\n");
+			return FAILURE;
+		}
+	}
+
+	#ifdef HAVE_ACCL_VERBS
+	if (user_param->verb_type == ACCL_INTF) {
+		/* Check CQ family */
+		intf_params.obj = ctx->send_cq;
+		ctx->send_cq_family = ibv_exp_query_intf(ctx->context, &intf_params, &intf_status);
+		intf_params.obj = ctx->recv_cq;
+		ctx->recv_cq_family = ibv_exp_query_intf(ctx->context, &intf_params, &intf_status);
+
+		if (!ctx->send_cq_family || (!ctx->recv_cq_family && need_recv_cq)) {
+			fprintf(stderr, "Couldn't create CQ family.\n");
+			return FAILURE;
+		}
+	}
+	#endif
+
+	return SUCCESS;
+}
 #endif
-		default:  fprintf(stderr, "Unknown connection type \n");
-			return NULL;
+
+int create_cqs(struct pingpong_context *ctx, struct perftest_parameters *user_param)
+{
+	int ret;
+	int dct_only = 0, need_recv_cq = 0;
+	int tx_buffer_depth = user_param->tx_depth;
+
+	if (user_param->connection_type == DC) {
+		dct_only = (user_param->machine == SERVER && !(user_param->duplex || user_param->tst == LAT));
 	}
 
-	qp = ibv_exp_create_qp(ctx->context, &attr);
+	if (dct_only)
+		tx_buffer_depth = user_param->rx_depth;
 
-	if (user_param->inline_recv_size > attr.max_inl_recv)
-			printf("  Actual inline-receive(%d) < requested inline-receive(%d)\n",
-			       attr.max_inl_recv, user_param->inline_recv_size);
+	if ((user_param->connection_type == DC && !dct_only) || (user_param->verb == SEND))
+		need_recv_cq = 1;
 
-	return qp;
+	#ifdef HAVE_VERBS_EXP
+	if (user_param->is_exp_cq)
+		ret = create_exp_cqs(ctx, user_param, tx_buffer_depth, need_recv_cq);
+	else
+	#endif
+		ret = create_reg_cqs(ctx, user_param, tx_buffer_depth, need_recv_cq);
+
+	return ret;
+}
+#ifdef HAVE_ACCL_VERBS
+struct ibv_exp_res_domain* create_res_domain(struct pingpong_context *ctx, struct perftest_parameters *user_param)
+{
+	struct ibv_exp_res_domain_init_attr res_domain_attr;
+	struct ibv_exp_device_attr dattr;
+	uint32_t req_comp_mask;
+
+	/* Query device */
+	req_comp_mask = IBV_EXP_DEVICE_ATTR_CALC_CAP		|
+			IBV_EXP_DEVICE_ATTR_EXP_CAP_FLAGS	|
+			IBV_EXP_DEVICE_ATTR_MAX_CTX_RES_DOMAIN;
+	dattr.comp_mask = req_comp_mask;
+
+	if (ibv_exp_query_device(ctx->context, &dattr)) {
+		fprintf(stderr, "Couldn't query device capabilities.\n");
+		return NULL;
+	} else if (dattr.comp_mask !=  req_comp_mask) {
+		fprintf(stderr, "This device does not support resource domain / accelerated verbs.\n");
+		return NULL;
+	}
+
+	/* Allocate resource domain */
+	res_domain_attr.comp_mask = IBV_EXP_RES_DOMAIN_THREAD_MODEL | IBV_EXP_RES_DOMAIN_MSG_MODEL;
+	res_domain_attr.thread_model = IBV_EXP_THREAD_SINGLE;
+	if (user_param->tst == BW)
+		res_domain_attr.msg_model = IBV_EXP_MSG_HIGH_BW;
+	else if (user_param->tst == LAT)
+		res_domain_attr.msg_model = IBV_EXP_MSG_LOW_LATENCY;
+	else
+		res_domain_attr.msg_model = IBV_EXP_MSG_DEFAULT;
+
+	return ibv_exp_create_res_domain(ctx->context, &res_domain_attr);
 }
 #endif
 
 /******************************************************************************
  *
  ******************************************************************************/
-int ctx_init(struct pingpong_context *ctx,struct perftest_parameters *user_param) {
-
+int ctx_init(struct pingpong_context *ctx, struct perftest_parameters *user_param)
+{
 	int i;
 	int flags = IBV_ACCESS_LOCAL_WRITE;
 	int num_of_qps = user_param->num_of_qps / 2;
-	uint64_t init_flag = 0;
-	int only_dct = 0;
-	int tx_buffer_depth = user_param->tx_depth;
-	#if defined(HAVE_VERBS_EXP)
+	#ifdef HAVE_ACCL_VERBS
+	enum ibv_exp_query_intf_status intf_status;
+	struct ibv_exp_query_intf_params intf_params;
+	#endif
+	#ifdef HAVE_VERBS_EXP
 	struct ibv_exp_reg_mr_in reg_mr_exp_in;
 	uint64_t exp_flags = IBV_EXP_ACCESS_LOCAL_WRITE;
 	struct ibv_exp_device_attr dattr;
 
 	memset(&dattr, 0, sizeof(dattr));
-
 	get_verbs_pointers(ctx);
 	#endif
 
-	if (user_param->connection_type == DC) {
-		only_dct = (user_param->machine == SERVER && !(user_param->duplex || user_param->tst == LAT));
-	}
-
 	ctx->is_contig_supported  = check_for_contig_pages_support(ctx->context);
 
-	//ODP
+	/* ODP */
 	#ifdef HAVE_ODP
 	if (user_param->use_odp) {
-		//ODP does not support contig pages
+		if ( !check_odp_support(ctx) )
+			return 1;
+
+		/* ODP does not support contig pages */
 		ctx->is_contig_supported = FAILURE;
 		exp_flags |= IBV_EXP_ACCESS_ON_DEMAND;
-
-		/*
-		dattr.comp_mask |= IBV_EXP_DEVICE_ATTR_ODP;
-		int ret = ibv_exp_query_device(ctx->context, &dattr);
-		if (ret) {
-			printf(" Couldn't query device for on-demand\
-			       paging capabilities.\n");
-		} else if (!(dattr.comp_mask & IBV_EXP_DEVICE_ATTR_ODP)) {
-			printf(" On-demand paging not supported by driver.\n");
-		} else if (!(dattr.odp_caps.per_transport_caps.rc_odp_caps &
-			   IBV_EXP_ODP_SUPPORT_SEND)) {
-			printf(" Send is not supported for RC transport.\n");
-		} else if (!(dattr.odp_caps.per_transport_caps.rc_odp_caps &
-			   IBV_EXP_ODP_SUPPORT_RECV)) {
-			printf(" Receive is not supported for RC transport.\n");
-		}*/
 	}
 	#endif
 
@@ -1006,10 +1096,9 @@ int ctx_init(struct pingpong_context *ctx,struct perftest_parameters *user_param
 	}
 	else {
 	#endif
-		// Allocating buffer for data, in case driver not support contig pages.
+		/* Allocating buffer for data, in case driver not support contig pages. */
 		if (ctx->is_contig_supported == FAILURE) {
-
-			ctx->buf = memalign(sysconf(_SC_PAGESIZE),ctx->buff_size);
+			ctx->buf = memalign(user_param->cycle_buffer,ctx->buff_size);
 			if (!ctx->buf) {
 				fprintf(stderr, "Couldn't allocate work buf.\n");
 				exit(1);
@@ -1019,16 +1108,17 @@ int ctx_init(struct pingpong_context *ctx,struct perftest_parameters *user_param
 
 		} else {
 			ctx->buf = NULL;
-		#if defined(HAVE_VERBS_EXP)
+			#ifdef HAVE_VERBS_EXP
 			exp_flags |= IBV_EXP_ACCESS_ALLOCATE_MR;
-		#else
+			#else
 			flags |= (1 << 5);
-		#endif
+			#endif
 		}
-#ifdef HAVE_CUDA
+	#ifdef HAVE_CUDA
 	}
-#endif
-	// Allocating an event channel if requested.
+	#endif
+
+	/* Allocating an event channel if requested. */
 	if (user_param->use_event) {
 		ctx->channel = ibv_create_comp_channel(ctx->context);
 		if (!ctx->channel) {
@@ -1037,13 +1127,23 @@ int ctx_init(struct pingpong_context *ctx,struct perftest_parameters *user_param
 		}
 	}
 
-	// Allocating the Protection domain.
+	/* Allocating the Protection domain. */
 	ctx->pd = ibv_alloc_pd(ctx->context);
 	if (!ctx->pd) {
 		fprintf(stderr, "Couldn't allocate PD\n");
 		return FAILURE;
 	}
 
+	#ifdef HAVE_ACCL_VERBS
+	if (user_param->use_res_domain) {
+		ctx->res_domain = create_res_domain(ctx, user_param);
+		if (!ctx->res_domain) {
+			fprintf(stderr, "Couldn't create resource domain\n");
+			return FAILURE;
+		}
+	}
+	#endif
+
 	if (user_param->verb == WRITE) {
 		flags |= IBV_ACCESS_REMOTE_WRITE;
 		#ifdef HAVE_VERBS_EXP
@@ -1053,37 +1153,38 @@ int ctx_init(struct pingpong_context *ctx,struct perftest_parameters *user_param
 	} else if (user_param->verb == READ) {
 		flags |= IBV_ACCESS_REMOTE_READ;
 		#ifdef HAVE_VERBS_EXP
-                exp_flags |= IBV_EXP_ACCESS_REMOTE_READ;
-                #endif
-	if (user_param->transport_type == IBV_TRANSPORT_IWARP)
-		flags |= IBV_ACCESS_REMOTE_WRITE;
+		exp_flags |= IBV_EXP_ACCESS_REMOTE_READ;
+		#endif
+		if (user_param->transport_type == IBV_TRANSPORT_IWARP)
+			flags |= IBV_ACCESS_REMOTE_WRITE;
 		#ifdef HAVE_VERBS_EXP
-                exp_flags |= IBV_EXP_ACCESS_REMOTE_WRITE;
-                #endif
+		exp_flags |= IBV_EXP_ACCESS_REMOTE_WRITE;
+		#endif
 
 	} else if (user_param->verb == ATOMIC) {
 		flags |= IBV_ACCESS_REMOTE_ATOMIC;
 		#ifdef HAVE_VERBS_EXP
-                exp_flags |= IBV_EXP_ACCESS_REMOTE_ATOMIC;
-                #endif
+		exp_flags |= IBV_EXP_ACCESS_REMOTE_ATOMIC;
+		#endif
 	}
 
-	// Allocating Memory region and assigning our buffer to it.
-#if defined(HAVE_VERBS_EXP)
-	reg_mr_exp_in.pd = ctx->pd;
-	reg_mr_exp_in.addr = ctx->buf;
-	reg_mr_exp_in.length = ctx->buff_size;
-	reg_mr_exp_in.exp_access = exp_flags;
-	reg_mr_exp_in.comp_mask = 0;
+	/* Allocating Memory region and assigning our buffer to it. */
+	#ifdef HAVE_VERBS_EXP
+	if (ctx->is_contig_supported == SUCCESS || user_param->use_odp) {
+		reg_mr_exp_in.pd = ctx->pd;
+		reg_mr_exp_in.addr = ctx->buf;
+		reg_mr_exp_in.length = ctx->buff_size;
+		reg_mr_exp_in.exp_access = exp_flags;
+		reg_mr_exp_in.comp_mask = 0;
 
-	if (ctx->is_contig_supported == SUCCESS || user_param->use_odp){
 		ctx->mr = ibv_exp_reg_mr(&reg_mr_exp_in);
 	}
 	else
 		ctx->mr = ibv_reg_mr(ctx->pd,ctx->buf,ctx->buff_size,flags);
-#else
+	#else
 	ctx->mr = ibv_reg_mr(ctx->pd,ctx->buf,ctx->buff_size,flags);
-#endif
+	#endif
+
 	if (!ctx->mr) {
 		fprintf(stderr, "Couldn't allocate MR\n");
 		return FAILURE;
@@ -1092,23 +1193,11 @@ int ctx_init(struct pingpong_context *ctx,struct perftest_parameters *user_param
 	if (ctx->is_contig_supported == SUCCESS)
 		ctx->buf = ctx->mr->addr;
 
-	if (only_dct == 1)
-		tx_buffer_depth = user_param->rx_depth;
-
-	ctx->send_cq = ibv_create_cq(ctx->context,tx_buffer_depth*user_param->num_of_qps,NULL,ctx->channel,0);
-	if (!ctx->send_cq) {
-		fprintf(stderr, "Couldn't create CQ\n");
-		return FAILURE;
-	}
-	if ((user_param->connection_type == DC && only_dct == 0) || (user_param->verb == SEND)){
-		ctx->recv_cq = ibv_create_cq(ctx->context,user_param->rx_depth*user_param->num_of_qps,NULL,ctx->channel,0);
-		if (!ctx->recv_cq) {
-			fprintf(stderr, "Couldn't create a receiver CQ\n");
-			return FAILURE;
-		}
+	if (create_cqs(ctx, user_param)) {
+		fprintf(stderr, "Failed to create CQs\n");
 	}
 
-#ifdef HAVE_XRCD
+	#ifdef HAVE_XRCD
 	if (user_param->use_xrc) {
 
 		if (ctx_xrcd_create(ctx,user_param)) {
@@ -1121,39 +1210,41 @@ int ctx_init(struct pingpong_context *ctx,struct perftest_parameters *user_param
 			return FAILURE;
 		}
 	}
-#endif
+	#endif
 
-	if (user_param->use_srq && !user_param->use_xrc && (user_param->tst == LAT || user_param->machine == SERVER || user_param->duplex == ON)) {
+	if (user_param->use_srq && !user_param->use_xrc && (user_param->tst == LAT || 
+				user_param->machine == SERVER || user_param->duplex == ON)) {
 
 		struct ibv_srq_init_attr attr = {
-				.attr = {
-					//when using sreq, rx_depth sets the max_wr
-					.max_wr  = user_param->rx_depth,
-					.max_sge = 1
-				}
+			.attr = {
+				/* when using sreq, rx_depth sets the max_wr */
+				.max_wr  = user_param->rx_depth,
+				.max_sge = 1
+			}
 		};
 
 		ctx->srq = ibv_create_srq(ctx->pd, &attr);
 		if (!ctx->srq)  {
-				fprintf(stderr, "Couldn't create SRQ\n");
-				return FAILURE;
+			fprintf(stderr, "Couldn't create SRQ\n");
+			return FAILURE;
 		}
 	}
-#ifdef HAVE_RSS_EXP
+
+	#ifdef HAVE_RSS_EXP
 	if (user_param->use_rss) {
 		struct ibv_exp_device_attr attr;
 
 		attr.comp_mask = IBV_EXP_DEVICE_ATTR_EXP_CAP_FLAGS |
-				 IBV_EXP_DEVICE_ATTR_RSS_TBL_SZ;
+			IBV_EXP_DEVICE_ATTR_RSS_TBL_SZ;
 		if (ibv_exp_query_device(ctx->context, &attr)) {
 			fprintf(stderr, "Experimental ibv_exp_query_device.\n");
 			exit(1);
 		}
 
 		if (!((attr.exp_device_cap_flags & IBV_EXP_DEVICE_QPG) &&
-		      (attr.exp_device_cap_flags & IBV_EXP_DEVICE_UD_RSS) &&
-		      (attr.comp_mask & IBV_EXP_DEVICE_ATTR_RSS_TBL_SZ) &&
-		      (attr.max_rss_tbl_sz > 0))) {
+					(attr.exp_device_cap_flags & IBV_EXP_DEVICE_UD_RSS) &&
+					(attr.comp_mask & IBV_EXP_DEVICE_ATTR_RSS_TBL_SZ) &&
+					(attr.max_rss_tbl_sz > 0))) {
 			fprintf(stderr, "RSS not supported .\n");
 			exit(1);
 		}
@@ -1161,96 +1252,67 @@ int ctx_init(struct pingpong_context *ctx,struct perftest_parameters *user_param
 		/* num of qps includes the parent */
 		if (user_param->num_of_qps > attr.max_rss_tbl_sz + 1) {
 			fprintf(stderr, "RSS limit is %d .\n",
-				attr.max_rss_tbl_sz);
+					attr.max_rss_tbl_sz);
 			exit(1);
 		}
 	}
-#endif
+	#endif
+
 	for (i=0; i < user_param->num_of_qps; i++) {
 
-		if(user_param->connection_type == DC) {
-			#ifdef HAVE_DC
-				if ( (!(user_param->duplex || user_param->tst == LAT) && (user_param->machine == SERVER) )
-								|| ((user_param->duplex || user_param->tst == LAT) && (i >= num_of_qps))) {
+		if (create_qp_main(ctx, user_param, i, num_of_qps)) {
+			fprintf(stderr, "Failed to create QP.\n");
+			return FAILURE;
+		}
 
-					ctx_dc_tgt_create(ctx,user_param,i);
-					//in order to not change anything in the test
-					ALLOCATE(ctx->qp[i],struct ibv_qp,1);
-					ctx->qp[i]->qp_num = ctx->dct[i]->dct_num;
-				}
-				else {
-					ctx->qp[i] = ctx_dc_qp_create(ctx,user_param,i);
-				}
-			#endif
-				if (ctx->qp[i] == NULL) {
-					fprintf(stderr," Unable to create DC QP.\n");
-					return FAILURE;
-				}
-		} else if (user_param->use_rss && user_param->connection_type == RawEth) {
-			#ifdef HAVE_RSS_EXP
-			ctx->qp[i] = ctx_rss_eth_qp_create(ctx,user_param,i);
-			#endif
-			if (ctx->qp[i] == NULL) {
-				fprintf(stderr," Unable to create RSS QP.\n");
-				return FAILURE;
-			}
-		} else if (user_param->use_xrc) {
-			#ifdef HAVE_XRCD
-				ctx->qp[i] = ctx_xrc_qp_create(ctx,user_param,i);
-			#endif
-				if (ctx->qp[i] == NULL) {
-					fprintf(stderr," Unable to create XRC QP.\n");
+		if (user_param->work_rdma_cm == OFF) {
+			modify_qp_to_init(ctx, user_param, i, num_of_qps);
+			#ifdef HAVE_ACCL_VERBS
+			if (user_param->verb_type == ACCL_INTF) {
+				memset(&intf_params, 0, sizeof(intf_params));
+				intf_params.intf_scope = IBV_EXP_INTF_GLOBAL;
+				intf_params.intf = IBV_EXP_INTF_QP_BURST;
+				intf_params.obj = ctx->qp[i];
+				ctx->qp_burst_family[i] = ibv_exp_query_intf(ctx->context, &intf_params, &intf_status);
+				if (!ctx->qp_burst_family[i]) {
+					fprintf(stderr, "Couldn't get QP burst family.\n");
 					return FAILURE;
 				}
-		} else if (user_param->inline_recv_size) {
-			#if defined(HAVE_VERBS_EXP)
-			ctx->qp[i] = ctx_qp_create_inline_recv(ctx,user_param);
-			#endif
-			if (ctx->qp[i] == NULL) {
-				fprintf(stderr," Unable to create Inline Recv QP.\n");
-				return FAILURE;
 			}
-		} else if (user_param->masked_atomics == 1) {
-			#ifdef HAVE_MASKED_ATOMICS
-			ctx->qp[i] = ctx_atomic_qp_create(ctx,user_param);
 			#endif
-			if (ctx->qp[i] == NULL) {
-				fprintf(stderr," Unable to create Masked Atomic QP.\n");
-				return FAILURE;
-			}
-		} else {
-			ctx->qp[i] = ctx_qp_create(ctx,user_param);
-			if (ctx->qp[i] == NULL) {
-				fprintf(stderr," Unable to create QP.\n");
-				return FAILURE;
-			}
 		}
+	}
 
-		if (user_param->work_rdma_cm == OFF) {
-			#ifdef HAVE_RSS_EXP
-			if (i == 0 && user_param->use_rss) {
-				init_flag = IBV_EXP_QP_GROUP_RSS;
-			}
-			else
-			#endif
-				init_flag = 0;
+	return SUCCESS;
+}
 
-			if(user_param->connection_type == DC) {
-				if ( !((!(user_param->duplex || user_param->tst == LAT) && (user_param->machine == SERVER) )
-								|| ((user_param->duplex || user_param->tst == LAT) && (i >= num_of_qps)))) {
-				#ifdef HAVE_DC
-					if (ctx_modify_dc_qp_to_init(ctx->qp[i],user_param)) {
-						fprintf(stderr," Unable to create DC QP.\n");
-						return FAILURE;
-					}
-				#endif
-				}
-			} else {
-				if (ctx_modify_qp_to_init(ctx->qp[i],user_param,init_flag)) {
-					fprintf(stderr, "Failed to modify QP to INIT\n");
-					return FAILURE;
-				}
+int modify_qp_to_init(struct pingpong_context *ctx,
+		struct perftest_parameters *user_param, int qp_index, int num_of_qps)
+{
+	uint64_t init_flag = 0;
+
+	#ifdef HAVE_RSS_EXP
+	if (qp_index == 0 && user_param->use_rss) {
+		init_flag = IBV_EXP_QP_GROUP_RSS;
+	}
+	else
+	#endif
+		init_flag = 0;
+
+	if(user_param->connection_type == DC) {
+		if ( !((!(user_param->duplex || user_param->tst == LAT) && (user_param->machine == SERVER) )
+					|| ((user_param->duplex || user_param->tst == LAT) && (qp_index >= num_of_qps)))) {
+			#ifdef HAVE_DC
+			if (ctx_modify_dc_qp_to_init(ctx->qp[qp_index],user_param)) {
+				fprintf(stderr," Unable to create DC QP.\n");
+				return FAILURE;
 			}
+			#endif
+		}
+	} else {
+		if (ctx_modify_qp_to_init(ctx->qp[qp_index],user_param,init_flag)) {
+			fprintf(stderr, "Failed to modify QP to INIT\n");
+			return FAILURE;
 		}
 	}
 
@@ -1260,9 +1322,189 @@ int ctx_init(struct pingpong_context *ctx,struct perftest_parameters *user_param
 /******************************************************************************
  *
  ******************************************************************************/
-struct ibv_qp* ctx_qp_create(struct pingpong_context *ctx,
-							 struct perftest_parameters *user_param) {
+int create_reg_qp_main(struct pingpong_context *ctx,
+		struct perftest_parameters *user_param, int i, int num_of_qps)
+{
+	ctx->qp[i] = ctx_qp_create(ctx,user_param);
+	if (ctx->qp[i] == NULL) {
+		fprintf(stderr," Unable to create QP.\n");
+		return FAILURE;
+	}
+
+	return SUCCESS;
+}
+
+
+int create_exp_qp_main(struct pingpong_context *ctx,
+		struct perftest_parameters *user_param, int i, int num_of_qps)
+{
+	int is_dc_tgt_query = 0;
+	is_dc_tgt_query |= !(user_param->duplex || user_param->tst == LAT) && (user_param->machine == SERVER);
+	is_dc_tgt_query |= (user_param->duplex || user_param->tst == LAT) && (i >= num_of_qps);
+	is_dc_tgt_query &= user_param->connection_type == DC;
+
+	if (is_dc_tgt_query) {
+		#ifdef HAVE_DC
+		if(ctx_dc_tgt_create(ctx,user_param,i)) {
+			return FAILURE;
+		}
+		/* in order to not change anything in the test */
+		ALLOCATE(ctx->qp[i], struct ibv_qp, 1);
+		ctx->qp[i]->qp_num = ctx->dct[i]->dct_num;
+		#else
+		fprintf(stderr, "DC is not supported.\n");
+		return FAILURE;
+		#endif
+	} else if (user_param->use_rss && user_param->connection_type == RawEth) {
+		#ifdef HAVE_RSS_EXP
+		ctx->qp[i] = ctx_rss_eth_qp_create(ctx, user_param, i);
+		#endif
+		if (ctx->qp[i] == NULL) {
+			fprintf(stderr," Unable to create RSS QP.\n");
+			return FAILURE;
+		}
+	} else if (user_param->use_xrc) {
+		#ifdef HAVE_XRCD
+		ctx->qp[i] = ctx_xrc_qp_create(ctx, user_param, i);
+		#endif
+		if (ctx->qp[i] == NULL) {
+			fprintf(stderr," Unable to create XRC QP.\n");
+			return FAILURE;
+		}
+	} else {
+		#ifdef HAVE_VERBS_EXP
+		ctx->qp[i] = ctx_exp_qp_create(ctx, user_param, i);
+		#endif
+		if (ctx->qp[i] == NULL) {
+			fprintf(stderr, " Unable to create exp QP.\n");
+			return FAILURE;
+		}
+	}
+	return SUCCESS;
+}
+
+int create_qp_main(struct pingpong_context *ctx,
+		struct perftest_parameters *user_param, int i, int num_of_qps)
+{
+	int ret, query;
+
+	/* flag that indicates that we are going to use exp QP */
+	query = (user_param->connection_type == DC);
+	query |= (user_param->use_rss && user_param->connection_type == RawEth);
+	query |= user_param->use_xrc;
+	query |= user_param->inline_recv_size != 0;
+	query |= user_param->masked_atomics;
+	query |= user_param->verb_type != NORMAL_INTF;
+	query |= user_param->use_res_domain;
+
+	if (query == 1)
+		user_param->is_exp_qp = 1;
+
+	#ifdef HAVE_VERBS_EXP
+	if (user_param->is_exp_qp)
+		ret = create_exp_qp_main(ctx, user_param, i, num_of_qps);
+	else
+	#endif
+		ret = create_reg_qp_main(ctx, user_param, i, num_of_qps);
 
+	return ret;
+}
+
+
+
+#ifdef HAVE_VERBS_EXP
+struct ibv_qp* ctx_exp_qp_create(struct pingpong_context *ctx,
+		struct perftest_parameters *user_param, int qp_index)
+{
+	struct ibv_exp_qp_init_attr attr;
+	struct ibv_qp* qp = NULL;
+	struct ibv_exp_device_attr dev_attr;
+
+	memset(&attr, 0, sizeof(attr));
+	memset(&dev_attr, 0, sizeof(dev_attr));
+	attr.comp_mask = IBV_EXP_QP_INIT_ATTR_PD | IBV_EXP_QP_INIT_ATTR_CREATE_FLAGS;
+
+	if (user_param->masked_atomics) {
+		#ifdef HAVE_MASKED_ATOMICS
+		dev_attr.comp_mask = IBV_EXP_DEVICE_ATTR_EXT_ATOMIC_ARGS | IBV_EXP_DEVICE_ATTR_EXP_CAP_FLAGS;
+
+		if (ibv_exp_query_device(ctx->context, &dev_attr)) {
+			fprintf(stderr, "ibv_exp_query_device failed\n");
+			return NULL;
+		}
+
+		attr.max_atomic_arg = pow(2,dev_attr.ext_atom.log_max_atomic_inline);
+		attr.exp_create_flags |= IBV_EXP_QP_CREATE_ATOMIC_BE_REPLY;
+		attr.comp_mask |= IBV_EXP_QP_INIT_ATTR_ATOMICS_ARG;
+		#else
+		fprintf(stderr, "Can't create masked atomic QP.\n");
+		return NULL;
+		#endif
+	}
+
+	if (user_param->inline_recv_size) {
+
+		if (check_inline_recv_support(ctx, user_param)) {
+			fprintf(stderr, "Failed to create QP with inline receive.\n");
+			return NULL;
+		}
+
+		attr.comp_mask |= IBV_EXP_QP_INIT_ATTR_INL_RECV;
+		attr.max_inl_recv = user_param->inline_recv_size;
+	}
+
+	#ifdef HAVE_ACCL_VERBS
+	if (user_param->use_res_domain) {
+		attr.comp_mask |= IBV_EXP_QP_INIT_ATTR_RES_DOMAIN;
+		attr.res_domain = ctx->res_domain;
+	}
+	#endif
+
+	attr.pd = ctx->pd;
+	attr.send_cq = ctx->send_cq;
+	attr.recv_cq = (user_param->verb == SEND) ? ctx->recv_cq : ctx->send_cq;
+	attr.cap.max_send_wr  = user_param->tx_depth;
+	attr.cap.max_send_sge = MAX_SEND_SGE;
+	attr.cap.max_inline_data = user_param->inline_size;
+
+	if (user_param->use_srq && (user_param->tst == LAT || user_param->machine == SERVER || user_param->duplex == ON)) {
+		attr.srq = ctx->srq;
+		attr.cap.max_recv_wr  = 0;
+		attr.cap.max_recv_sge = 0;
+	} else {
+		attr.srq = NULL;
+		attr.cap.max_recv_wr  = user_param->rx_depth;
+		attr.cap.max_recv_sge = MAX_RECV_SGE;
+	}
+
+	switch (user_param->connection_type) {
+
+		case RC : attr.qp_type = IBV_QPT_RC; break;
+		case UC : attr.qp_type = IBV_QPT_UC; break;
+		case UD : attr.qp_type = IBV_QPT_UD; break;
+		#ifdef HAVE_RAW_ETH
+		case RawEth : attr.qp_type = IBV_QPT_RAW_PACKET; break;
+		#endif
+		case DC : attr.qp_type = IBV_EXP_QPT_DC_INI; break;
+		default:  fprintf(stderr, "Unknown connection type \n");
+			  return NULL;
+	}
+
+	qp = ibv_exp_create_qp(ctx->context, &attr);
+	if (!qp)
+		return NULL;
+
+	if (user_param->inline_recv_size > attr.max_inl_recv)
+		printf("  Actual inline-receive(%d) < requested inline-receive(%d)\n",
+				attr.max_inl_recv, user_param->inline_recv_size);
+
+	return qp;
+}
+#endif
+
+struct ibv_qp* ctx_qp_create(struct pingpong_context *ctx,
+		struct perftest_parameters *user_param)
+{
 	struct ibv_qp_init_attr attr;
 	struct ibv_qp* qp = NULL;
 
@@ -1288,18 +1530,14 @@ struct ibv_qp* ctx_qp_create(struct pingpong_context *ctx,
 		case RC : attr.qp_type = IBV_QPT_RC; break;
 		case UC : attr.qp_type = IBV_QPT_UC; break;
 		case UD : attr.qp_type = IBV_QPT_UD; break;
-#ifdef HAVEE_XRCD
-		case XRC : attr.qp_type = IBV_QPT_XRC; break;
-#endif
-#ifdef HAVE_RAW_ETH
+		#ifdef HAVE_RAW_ETH
 		case RawEth : attr.qp_type = IBV_QPT_RAW_PACKET; break;
-#endif
+		#endif
 		default:  fprintf(stderr, "Unknown connection type \n");
-			return NULL;
+			  return NULL;
 	}
 
 	if (user_param->work_rdma_cm) {
-
 		if (rdma_create_qp(ctx->cm_id,ctx->pd,&attr)) {
 			fprintf(stderr, " Couldn't create rdma QP - %s\n",strerror(errno));
 			return NULL;
@@ -1318,8 +1556,8 @@ struct ibv_qp* ctx_qp_create(struct pingpong_context *ctx,
  *
  ******************************************************************************/
 struct ibv_qp* ctx_atomic_qp_create(struct pingpong_context *ctx,
-							 struct perftest_parameters *user_param) {
-
+		struct perftest_parameters *user_param)
+{
 	struct ibv_exp_qp_init_attr	attr;
 	struct ibv_qp* qp = NULL;
 	struct ibv_exp_device_attr dev_attr;
@@ -1360,14 +1598,14 @@ struct ibv_qp* ctx_atomic_qp_create(struct pingpong_context *ctx,
 		case RC : attr.qp_type = IBV_QPT_RC; break;
 		case UC : attr.qp_type = IBV_QPT_UC; break;
 		case UD : attr.qp_type = IBV_QPT_UD; break;
-#ifdef HAVE_XRCD
+		#ifdef HAVE_XRCD
 		case XRC : attr.qp_type = IBV_QPT_XRC; break;
-#endif
-#ifdef HAVE_RAW_ETH
+		#endif
+		#ifdef HAVE_RAW_ETH
 		case RawEth : attr.qp_type = IBV_QPT_RAW_PACKET; break;
-#endif
+		#endif
 		default:  fprintf(stderr, "Unknown connection type \n");
-			return NULL;
+			  return NULL;
 	}
 
 	qp = ibv_exp_create_qp(ctx->context, &attr);
@@ -1377,29 +1615,27 @@ struct ibv_qp* ctx_atomic_qp_create(struct pingpong_context *ctx,
 #endif
 
 #ifdef HAVE_DC
-
- /******************************************************************************
+/******************************************************************************
  *
  ******************************************************************************/
-int ctx_modify_dc_qp_to_init(struct ibv_qp *qp,struct perftest_parameters *user_param)  {
-
+int ctx_modify_dc_qp_to_init(struct ibv_qp *qp,struct perftest_parameters *user_param)
+{
 	int num_of_qps = user_param->num_of_qps;
 	int num_of_qps_per_port = user_param->num_of_qps / 2;
 	int err;
 	uint64_t flags;
 
-#if defined(HAVE_VERBS_EXP)
+	#ifdef HAVE_VERBS_EXP
 	struct ibv_exp_qp_attr attr;
 	memset(&attr, 0, sizeof(struct ibv_exp_qp_attr));
 	flags = IBV_EXP_QP_STATE | IBV_EXP_QP_PKEY_INDEX | IBV_EXP_QP_PORT;
-#else
+	#else
 	struct ibv_qp_attr attr;
 	memset(&attr, 0, sizeof(struct ibv_qp_attr));
 	flags = IBV_QP_STATE | IBV_QP_PKEY_INDEX | IBV_QP_PORT;
-#endif
+	#endif
 
-	static int portindex=0;  // for dual-port support
-	memset(&attr, 0,sizeof(struct ibv_qp_attr));
+	static int portindex=0;  /* for dual-port support */
 
 	attr.qp_state        = IBV_QPS_INIT;
 	attr.pkey_index      = user_param->pkey_index;
@@ -1413,7 +1649,7 @@ int ctx_modify_dc_qp_to_init(struct ibv_qp *qp,struct perftest_parameters *user_
 
 	if (user_param->dualport==ON) {
 		if (portindex % num_of_qps < num_of_qps_per_port) {
-	        attr.port_num = user_param->ib_port;
+			attr.port_num = user_param->ib_port;
 			user_param->port_by_qp[portindex] = 0;
 		} else {
 			attr.port_num = user_param->ib_port2;
@@ -1426,17 +1662,14 @@ int ctx_modify_dc_qp_to_init(struct ibv_qp *qp,struct perftest_parameters *user_
 		attr.port_num = user_param->ib_port;
 	}
 
-#if defined(HAVE_VERBS_EXP)
+	#ifdef HAVE_VERBS_EXP
 	flags |= IBV_EXP_QP_DC_KEY;
-//	attr.exp_attr_mask   = IBV_EXP_QP_DC_KEY;
-//	attr.comp_mask       = IBV_EXP_QP_ATTR_DCT_KEY | IBV_EXP_QP_ATTR_EXP_MASK;
 	err = ibv_exp_modify_qp(qp,&attr,flags);
-#else
+	#else
 	flags |= IBV_QP_DC_KEY;
 	attr.comp_mask = IBV_QP_ATTR_DCT_KEY;
 	err = ibv_modify_qp(qp,&attr,flags);
-#endif
-
+	#endif
 
 	if (err) {
 		fprintf(stderr, "Failed to modify QP to INIT\n");
@@ -1446,34 +1679,34 @@ int ctx_modify_dc_qp_to_init(struct ibv_qp *qp,struct perftest_parameters *user_
 }
 #endif
 
- /******************************************************************************
+/******************************************************************************
  *
  ******************************************************************************/
-int ctx_modify_qp_to_init(struct ibv_qp *qp,struct perftest_parameters *user_param, uint64_t init_flag)  {
-
+int ctx_modify_qp_to_init(struct ibv_qp *qp,struct perftest_parameters *user_param, uint64_t init_flag)
+{
 	int num_of_qps = user_param->num_of_qps;
 	int num_of_qps_per_port = user_param->num_of_qps / 2;
 
 	struct ibv_qp_attr attr;
-        int flags = IBV_QP_STATE | IBV_QP_PKEY_INDEX | IBV_QP_PORT;
+	int flags = IBV_QP_STATE | IBV_QP_PKEY_INDEX | IBV_QP_PORT;
 
 	#ifdef HAVE_VERBS_EXP
 	struct ibv_exp_qp_attr exp_attr;
 	uint64_t exp_flags = 0;
 	#endif
 
-	static int portindex=0;  // for dual-port support
+	static int portindex=0;  /* for dual-port support */
 	int ret = 0;
 
 	memset(&attr, 0, sizeof(struct ibv_qp_attr));
 	attr.qp_state        = IBV_QPS_INIT;
 	attr.pkey_index      = user_param->pkey_index;
 
-        #ifdef HAVE_VERBS_EXP
-        memset(&exp_attr, 0, sizeof(struct ibv_exp_qp_attr));
-        exp_attr.qp_state        = attr.qp_state;
-        exp_attr.pkey_index      = attr.pkey_index;
-        #endif
+	#ifdef HAVE_VERBS_EXP
+	memset(&exp_attr, 0, sizeof(struct ibv_exp_qp_attr));
+	exp_attr.qp_state        = attr.qp_state;
+	exp_attr.pkey_index      = attr.pkey_index;
+	#endif
 
 	if ( user_param->use_xrc && (user_param->duplex || user_param->tst == LAT)) {
 		num_of_qps /= 2;
@@ -1482,7 +1715,7 @@ int ctx_modify_qp_to_init(struct ibv_qp *qp,struct perftest_parameters *user_par
 
 	if (user_param->dualport==ON) {
 		if (portindex % num_of_qps < num_of_qps_per_port) {
-	        attr.port_num = user_param->ib_port;
+			attr.port_num = user_param->ib_port;
 			user_param->port_by_qp[portindex] = 0;
 		} else {
 			attr.port_num = user_param->ib_port2;
@@ -1501,9 +1734,9 @@ int ctx_modify_qp_to_init(struct ibv_qp *qp,struct perftest_parameters *user_par
 
 	if (user_param->connection_type == RawEth) {
 		flags = IBV_QP_STATE | IBV_QP_PORT;
-                #ifdef HAVE_VERBS_EXP
-                exp_flags = init_flag | IBV_EXP_QP_STATE | IBV_EXP_QP_PKEY_INDEX;
-                #endif
+		#ifdef HAVE_VERBS_EXP
+		exp_flags = init_flag | IBV_EXP_QP_STATE | IBV_EXP_QP_PORT;
+		#endif
 
 	} else if (user_param->connection_type == UD) {
 		attr.qkey = DEFF_QKEY;
@@ -1520,8 +1753,7 @@ int ctx_modify_qp_to_init(struct ibv_qp *qp,struct perftest_parameters *user_par
 	}
 
 	#ifdef HAVE_MASKED_ATOMICS
-	if (user_param->masked_atomics)
-	{
+	if (user_param->masked_atomics) {
 		exp_attr.qp_access_flags = IBV_ACCESS_REMOTE_ATOMIC | IBV_ACCESS_REMOTE_WRITE | IBV_ACCESS_REMOTE_READ;
 		exp_flags = IBV_EXP_QP_STATE | IBV_EXP_QP_PKEY_INDEX | IBV_EXP_QP_PORT | IBV_EXP_QP_ACCESS_FLAGS;
 	}
@@ -1529,11 +1761,11 @@ int ctx_modify_qp_to_init(struct ibv_qp *qp,struct perftest_parameters *user_par
 
 	#ifdef HAVE_VERBS_EXP
 	if ( (init_flag != 0 && user_param->use_rss) || user_param->masked_atomics ) {
-			ret = ibv_exp_modify_qp(qp,&exp_attr,exp_flags);
+		ret = ibv_exp_modify_qp(qp,&exp_attr,exp_flags);
 	}
 	else
 	#endif
-			ret = ibv_modify_qp(qp,&attr,flags);
+		ret = ibv_modify_qp(qp,&attr,flags);
 
 	if (ret) {
 		fprintf(stderr, "Failed to modify QP to INIT, ret=%d\n",ret);
@@ -1547,12 +1779,12 @@ int ctx_modify_qp_to_init(struct ibv_qp *qp,struct perftest_parameters *user_par
  *
  ******************************************************************************/
 static int ctx_modify_dc_qp_to_rtr(struct ibv_qp *qp,
-								struct ibv_exp_qp_attr *attr,
-								struct perftest_parameters *user_param,
-								struct pingpong_dest *dest,
-								struct pingpong_dest *my_dest,
-								int qpindex) {
-
+		struct ibv_exp_qp_attr *attr,
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *dest,
+		struct pingpong_dest *my_dest,
+		int qpindex)
+{
 	int num_of_qps = user_param->num_of_qps;
 	int num_of_qps_per_port = user_param->num_of_qps / 2;
 
@@ -1560,18 +1792,20 @@ static int ctx_modify_dc_qp_to_rtr(struct ibv_qp *qp,
 	attr->qp_state = IBV_QPS_RTR;
 	attr->ah_attr.src_path_bits = 0;
 
-	//in DC with bidirectional,
-	//there are send qps and recv qps. the actual number of send/recv qps
-	//is num_of_qps / 2.
+	/* in DC with bidirectional,
+	 * there are send qps and recv qps. the actual number of send/recv qps
+	 * is num_of_qps / 2.
+	 */
 	if (user_param->duplex || user_param->tst == LAT) {
 		num_of_qps /= 2;
 		num_of_qps_per_port = num_of_qps / 2;
 	}
 
-	// first half of qps are for ib_port and second half are for ib_port2
-	// in DC with bidirectional, the first half of qps are DC_INI qps and
-	// the second half are DC_TGT qps. the first half of the send/recv qps
-	// are for ib_port1 and the second half are for ib_port2
+	/* first half of qps are for ib_port and second half are for ib_port2
+	 * in DC with bidirectional, the first half of qps are DC_INI qps and
+	 * the second half are DC_TGT qps. the first half of the send/recv qps
+	 * are for ib_port1 and the second half are for ib_port2
+	 */
 	if (user_param->dualport == ON && (qpindex % num_of_qps >= num_of_qps_per_port))
 		attr->ah_attr.port_num = user_param->ib_port2;
 	else
@@ -1604,12 +1838,12 @@ static int ctx_modify_dc_qp_to_rtr(struct ibv_qp *qp,
  *
  ******************************************************************************/
 static int ctx_modify_qp_to_rtr(struct ibv_qp *qp,
-								struct ibv_qp_attr *attr,
-								struct perftest_parameters *user_param,
-								struct pingpong_dest *dest,
-								struct pingpong_dest *my_dest,
-								int qpindex) {
-
+		struct ibv_qp_attr *attr,
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *dest,
+		struct pingpong_dest *my_dest,
+		int qpindex)
+{
 	int num_of_qps = user_param->num_of_qps;
 	int num_of_qps_per_port = user_param->num_of_qps / 2;
 
@@ -1617,18 +1851,20 @@ static int ctx_modify_qp_to_rtr(struct ibv_qp *qp,
 	attr->qp_state = IBV_QPS_RTR;
 	attr->ah_attr.src_path_bits = 0;
 
-	//in xrc with bidirectional,
-	//there are send qps and recv qps. the actual number of send/recv qps
-	//is num_of_qps / 2.
+	/* in xrc with bidirectional,
+	 * there are send qps and recv qps. the actual number of send/recv qps
+	 * is num_of_qps / 2.
+	 */
 	if ( user_param->use_xrc && (user_param->duplex || user_param->tst == LAT)) {
 		num_of_qps /= 2;
 		num_of_qps_per_port = num_of_qps / 2;
 	}
 
-	// first half of qps are for ib_port and second half are for ib_port2
-	// in xrc with bidirectional, the first half of qps are xrc_send qps and
-	// the second half are xrc_recv qps. the first half of the send/recv qps
-	// are for ib_port1 and the second half are for ib_port2
+	/* first half of qps are for ib_port and second half are for ib_port2
+	 * in xrc with bidirectional, the first half of qps are xrc_send qps and
+	 * the second half are xrc_recv qps. the first half of the send/recv qps
+	 * are for ib_port1 and the second half are for ib_port2
+	 */
 	if (user_param->dualport == ON && (qpindex % num_of_qps >= num_of_qps_per_port))
 		attr->ah_attr.port_num = user_param->ib_port2;
 	else
@@ -1637,19 +1873,18 @@ static int ctx_modify_qp_to_rtr(struct ibv_qp *qp,
 	if (user_param->connection_type != RawEth) {
 
 		attr->ah_attr.dlid = dest->lid;
+		attr->ah_attr.sl = user_param->sl;
+
 		if (((attr->ah_attr.port_num == user_param->ib_port) && (user_param->gid_index == DEF_GID_INDEX))
-			|| ((attr->ah_attr.port_num == user_param->ib_port2) && (user_param->gid_index2 == DEF_GID_INDEX) && user_param->dualport)) {
+				|| ((attr->ah_attr.port_num == user_param->ib_port2) && (user_param->gid_index2 == DEF_GID_INDEX) && user_param->dualport)) {
 
 			attr->ah_attr.is_global = 0;
-			attr->ah_attr.sl = user_param->sl;
-
 		} else {
 
 			attr->ah_attr.is_global  = 1;
 			attr->ah_attr.grh.dgid = dest->gid;
 			attr->ah_attr.grh.sgid_index = (attr->ah_attr.port_num == user_param->ib_port) ? user_param->gid_index : user_param->gid_index2;
 			attr->ah_attr.grh.hop_limit = 1;
-			attr->ah_attr.sl = 0;
 		}
 
 		if (user_param->connection_type != UD) {
@@ -1668,7 +1903,7 @@ static int ctx_modify_qp_to_rtr(struct ibv_qp *qp,
 			}
 		}
 	}
-	else if (user_param->raw_qos){
+	else if (user_param->raw_qos) {
 		attr->ah_attr.sl = user_param->sl;
 		flags |= IBV_QP_AV;
 	}
@@ -1680,21 +1915,22 @@ static int ctx_modify_qp_to_rtr(struct ibv_qp *qp,
  *
  ******************************************************************************/
 static int ctx_modify_dc_qp_to_rts(struct ibv_qp *qp,
-							#if defined(HAVE_VERBS_EXP)
-								struct ibv_exp_qp_attr *attr,
-							#else
-								struct ibv_qp_attr_ex *attr,
-							#endif
-								struct perftest_parameters *user_param,
-								struct pingpong_dest *dest,
-								struct pingpong_dest *my_dest)
+		#ifdef HAVE_VERBS_EXP
+		struct ibv_exp_qp_attr *attr,
+		#else
+		struct ibv_qp_attr_ex *attr,
+		#endif
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *dest,
+		struct pingpong_dest *my_dest)
 {
 
-#if defined(HAVE_VERBS_EXP)
-       	int flags = IBV_EXP_QP_STATE | IBV_EXP_QP_TIMEOUT | IBV_EXP_QP_RETRY_CNT | IBV_EXP_QP_RNR_RETRY | IBV_EXP_QP_MAX_QP_RD_ATOMIC;
-#else
+	#ifdef HAVE_VERBS_EXP
+	int flags = IBV_EXP_QP_STATE | IBV_EXP_QP_TIMEOUT | IBV_EXP_QP_RETRY_CNT |
+					 IBV_EXP_QP_RNR_RETRY | IBV_EXP_QP_MAX_QP_RD_ATOMIC;
+	#else
 	int flags = IBV_QP_STATE | IBV_QP_TIMEOUT | IBV_QP_RETRY_CNT | IBV_QP_RNR_RETRY | IBV_QP_MAX_QP_RD_ATOMIC;
-#endif
+	#endif
 
 	attr->qp_state = IBV_QPS_RTS;
 
@@ -1703,11 +1939,11 @@ static int ctx_modify_dc_qp_to_rts(struct ibv_qp *qp,
 	attr->rnr_retry = 7;
 	attr->max_rd_atomic  = dest->out_reads;
 
-#if defined(HAVE_VERBS_EXP)
+	#ifdef HAVE_VERBS_EXP
 	return ibv_exp_modify_qp(qp,attr,flags);
-#else
+	#else
 	return ibv_modify_qp_ex(qp,attr,flags);
-#endif
+	#endif
 }
 #endif
 
@@ -1715,10 +1951,10 @@ static int ctx_modify_dc_qp_to_rts(struct ibv_qp *qp,
  *
  ******************************************************************************/
 static int ctx_modify_qp_to_rts(struct ibv_qp *qp,
-								struct ibv_qp_attr *attr,
-								struct perftest_parameters *user_param,
-								struct pingpong_dest *dest,
-								struct pingpong_dest *my_dest)
+		struct ibv_qp_attr *attr,
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *dest,
+		struct pingpong_dest *my_dest)
 {
 
 	int flags = IBV_QP_STATE;
@@ -1739,6 +1975,7 @@ static int ctx_modify_qp_to_rts(struct ibv_qp *qp,
 			flags |= (IBV_QP_TIMEOUT | IBV_QP_RETRY_CNT | IBV_QP_RNR_RETRY | IBV_QP_MAX_QP_RD_ATOMIC);
 		}
 	}
+
 	return ibv_modify_qp(qp,attr,flags);
 }
 
@@ -1746,18 +1983,18 @@ static int ctx_modify_qp_to_rts(struct ibv_qp *qp,
  *
  ******************************************************************************/
 int ctx_connect(struct pingpong_context *ctx,
-				struct pingpong_dest *dest,
-				struct perftest_parameters *user_param,
-				struct pingpong_dest *my_dest) {
-
+		struct pingpong_dest *dest,
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *my_dest)
+{
 	int i;
-#ifdef HAVE_DC
-	#if defined(HAVE_VERBS_EXP)
+	#ifdef HAVE_DC
+	#ifdef HAVE_VERBS_EXP
 	struct ibv_exp_qp_attr attr_ex;
 	#else
 	struct ibv_qp_attr_ex attr_ex;
 	#endif
-#endif
+	#endif
 	struct ibv_qp_attr attr;
 	int xrc_offset = 0;
 
@@ -1768,25 +2005,25 @@ int ctx_connect(struct pingpong_context *ctx,
 
 		if (user_param->connection_type == DC) {
 			if ( ((!(user_param->duplex || user_param->tst == LAT) && (user_param->machine == SERVER) )
-										|| ((user_param->duplex || user_param->tst == LAT) && (i >= user_param->num_of_qps/2)))) {
+						|| ((user_param->duplex || user_param->tst == LAT) && (i >= user_param->num_of_qps/2)))) {
 				continue;
 			}
 		}
-	#ifdef HAVE_DC
+		#ifdef HAVE_DC
 		memset(&attr_ex, 0, sizeof attr_ex);
-	#endif
+		#endif
 		memset(&attr, 0, sizeof attr);
 
 		if ( (i >= xrc_offset) && (user_param->use_xrc || user_param->connection_type == DC) && (user_param->duplex || user_param->tst == LAT))
 			xrc_offset = -1*xrc_offset;
 
 		if(user_param->connection_type == DC) {
-		#ifdef HAVE_DC
+			#ifdef HAVE_DC
 			if(ctx_modify_dc_qp_to_rtr(ctx->qp[i],&attr_ex,user_param,&dest[xrc_offset + i],&my_dest[i],i)) {
 				fprintf(stderr, "Failed to modify QP %d to RTR\n",ctx->qp[i]->qp_num);
 				return FAILURE;
 			}
-		#endif
+			#endif
 		} else {
 			if(ctx_modify_qp_to_rtr(ctx->qp[i],&attr,user_param,&dest[xrc_offset + i],&my_dest[i],i)) {
 				fprintf(stderr, "Failed to modify QP %d to RTR\n",ctx->qp[i]->qp_num);
@@ -1796,12 +2033,12 @@ int ctx_connect(struct pingpong_context *ctx,
 
 		if (user_param->tst == LAT || user_param->machine == CLIENT || user_param->duplex) {
 			if(user_param->connection_type == DC) {
-			#ifdef HAVE_DC
+				#ifdef HAVE_DC
 				if(ctx_modify_dc_qp_to_rts(ctx->qp[i],&attr_ex,user_param,&dest[xrc_offset + i],&my_dest[i])) {
 					fprintf(stderr, "Failed to modify QP to RTS\n");
 					return FAILURE;
 				}
-			#endif
+				#endif
 			} else {
 				if(ctx_modify_qp_to_rts(ctx->qp[i],&attr,user_param,&dest[xrc_offset + i],&my_dest[i])) {
 					fprintf(stderr, "Failed to modify QP to RTS\n");
@@ -1810,21 +2047,21 @@ int ctx_connect(struct pingpong_context *ctx,
 			}
 		}
 
-			if ((user_param->connection_type == UD || user_param->connection_type == DC) &&
+		if ((user_param->connection_type == UD || user_param->connection_type == DC) &&
 				(user_param->tst == LAT || user_param->machine == CLIENT || user_param->duplex)) {
 
-				#ifdef HAVE_DC
-				if(user_param->connection_type == DC)
-					ctx->ah[i] = ibv_create_ah(ctx->pd,&(attr_ex.ah_attr));
-				else
-				#endif
-					ctx->ah[i] = ibv_create_ah(ctx->pd,&(attr.ah_attr));
+			#ifdef HAVE_DC
+			if(user_param->connection_type == DC)
+				ctx->ah[i] = ibv_create_ah(ctx->pd,&(attr_ex.ah_attr));
+			else
+			#endif
+				ctx->ah[i] = ibv_create_ah(ctx->pd,&(attr.ah_attr));
 
 
-				if (!ctx->ah[i]) {
-					fprintf(stderr, "Failed to create AH for UD\n");
-					return FAILURE;
-				}
+			if (!ctx->ah[i]) {
+				fprintf(stderr, "Failed to create AH for UD\n");
+				return FAILURE;
+			}
 		}
 
 		if((user_param->use_xrc || user_param->connection_type == DC) && (user_param->duplex || user_param->tst == LAT))
@@ -1838,8 +2075,9 @@ int ctx_connect(struct pingpong_context *ctx,
  *
  ******************************************************************************/
 void ctx_set_send_wqes(struct pingpong_context *ctx,
-					   struct perftest_parameters *user_param,
-					   struct pingpong_dest *rem_dest) {
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *rem_dest)
+{
 
 	#ifdef HAVE_VERBS_EXP
 	if (user_param->use_exp == 1) {
@@ -1854,13 +2092,13 @@ void ctx_set_send_wqes(struct pingpong_context *ctx,
 }
 
 #ifdef HAVE_VERBS_EXP
-
 /******************************************************************************
  *
  ******************************************************************************/
 void ctx_set_send_exp_wqes(struct pingpong_context *ctx,
-					   struct perftest_parameters *user_param,
-					   struct pingpong_dest *rem_dest) {
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *rem_dest)
+{
 	int i,j;
 	int num_of_qps = user_param->num_of_qps;
 	int xrc_offset = 0;
@@ -1871,7 +2109,7 @@ void ctx_set_send_exp_wqes(struct pingpong_context *ctx,
 	}
 
 	for (i = 0; i < num_of_qps ; i++) {
-		memset(&ctx->exp_wr[i],0,sizeof(struct ibv_exp_send_wr));
+		memset(&ctx->exp_wr[i*user_param->post_list],0,sizeof(struct ibv_exp_send_wr));
 		ctx->sge_list[i*user_param->post_list].addr = (uintptr_t)ctx->buf + (i*BUFF_SIZE(ctx->size,ctx->cycle_buffer));
 		if (user_param->mac_fwd)
 			ctx->sge_list[i*user_param->post_list].addr = (uintptr_t)ctx->buf + (num_of_qps + i)*BUFF_SIZE(ctx->size,ctx->cycle_buffer);
@@ -1893,7 +2131,9 @@ void ctx_set_send_exp_wqes(struct pingpong_context *ctx,
 
 		for (j = 0; j < user_param->post_list; j++) {
 
-			ctx->sge_list[i*user_param->post_list + j].length =  (user_param->connection_type == RawEth) ? (user_param->size - HW_CRC_ADDITION) : user_param->size;
+			ctx->sge_list[i*user_param->post_list + j].length =
+				(user_param->connection_type == RawEth) ? (user_param->size - HW_CRC_ADDITION) : user_param->size;
+
 			ctx->sge_list[i*user_param->post_list + j].lkey = ctx->mr->lkey;
 
 			if (j > 0) {
@@ -1902,7 +2142,7 @@ void ctx_set_send_exp_wqes(struct pingpong_context *ctx,
 
 				if ((user_param->tst == BW ) && user_param->size <= (ctx->cycle_buffer / 2))
 					increase_loc_addr(&ctx->sge_list[i*user_param->post_list +j],user_param->size,
-									j-1,ctx->my_addr[i],0,ctx->cache_line_size,ctx->cycle_buffer);
+							j-1,ctx->my_addr[i],0,ctx->cache_line_size,ctx->cycle_buffer);
 			}
 
 			ctx->exp_wr[i*user_param->post_list + j].sg_list = &ctx->sge_list[i*user_param->post_list + j];
@@ -1910,7 +2150,13 @@ void ctx_set_send_exp_wqes(struct pingpong_context *ctx,
 			ctx->exp_wr[i*user_param->post_list + j].wr_id   = i;
 
 			if (j == (user_param->post_list - 1)) {
-				ctx->exp_wr[i*user_param->post_list + j].exp_send_flags = IBV_EXP_SEND_SIGNALED;
+				#ifdef HAVE_ACCL_VERBS
+				if (user_param->verb_type == ACCL_INTF)
+					ctx->exp_wr[i*user_param->post_list + j].exp_send_flags = IBV_EXP_QP_BURST_SIGNALED;
+				else
+				#endif
+					ctx->exp_wr[i*user_param->post_list + j].exp_send_flags = IBV_EXP_SEND_SIGNALED;
+
 				ctx->exp_wr[i*user_param->post_list + j].next = NULL;
 			}
 
@@ -1935,7 +2181,7 @@ void ctx_set_send_exp_wqes(struct pingpong_context *ctx,
 
 					if ((user_param->tst == BW) && user_param->size <= (ctx->cycle_buffer / 2))
 						increase_exp_rem_addr(&ctx->exp_wr[i*user_param->post_list + j],user_param->size,
-												j-1,ctx->rem_addr[i],WRITE,ctx->cache_line_size,ctx->cycle_buffer);
+								j-1,ctx->rem_addr[i],WRITE,ctx->cache_line_size,ctx->cycle_buffer);
 				}
 
 			} else if (user_param->verb == ATOMIC) {
@@ -1947,7 +2193,7 @@ void ctx_set_send_exp_wqes(struct pingpong_context *ctx,
 					ctx->exp_wr[i*user_param->post_list + j].wr.atomic.remote_addr = ctx->exp_wr[i*user_param->post_list + j-1].wr.atomic.remote_addr;
 					if ((user_param->tst == BW))
 						increase_exp_rem_addr(&ctx->exp_wr[i*user_param->post_list + j],user_param->size,
-												j-1,ctx->rem_addr[i],ATOMIC,ctx->cache_line_size,ctx->cycle_buffer);
+								j-1,ctx->rem_addr[i],ATOMIC,ctx->cache_line_size,ctx->cycle_buffer);
 				}
 
 				if (user_param->atomicType == FETCH_AND_ADD)
@@ -1982,21 +2228,21 @@ void ctx_set_send_exp_wqes(struct pingpong_context *ctx,
 			}
 
 			#ifdef HAVE_DC
-				if (user_param->connection_type == DC) {
-					ctx->exp_wr[i*user_param->post_list + j].dc.ah = ctx->ah[i];
-					ctx->exp_wr[i*user_param->post_list + j].dc.dct_access_key = user_param->dct_key;
-					ctx->exp_wr[i*user_param->post_list + j].dc.dct_number = rem_dest[xrc_offset + i].qpn;
-				}
+			if (user_param->connection_type == DC) {
+				ctx->exp_wr[i*user_param->post_list + j].dc.ah = ctx->ah[i];
+				ctx->exp_wr[i*user_param->post_list + j].dc.dct_access_key = user_param->dct_key;
+				ctx->exp_wr[i*user_param->post_list + j].dc.dct_number = rem_dest[xrc_offset + i].qpn;
+			}
 			#endif
 
 
 			if ((user_param->verb == SEND || user_param->verb == WRITE) && user_param->size <= user_param->inline_size)
 				ctx->exp_wr[i*user_param->post_list + j].exp_send_flags |= IBV_EXP_SEND_INLINE;
 
-		#ifdef HAVE_XRCD
+			#ifdef HAVE_XRCD
 			if (user_param->use_xrc)
 				ctx->exp_wr[i*user_param->post_list + j].qp_type.xrc.remote_srqn = rem_dest[xrc_offset + i].srqn;
-		#endif
+			#endif
 		}
 	}
 }
@@ -2006,9 +2252,9 @@ void ctx_set_send_exp_wqes(struct pingpong_context *ctx,
  *
  ******************************************************************************/
 void ctx_set_send_reg_wqes(struct pingpong_context *ctx,
-					   struct perftest_parameters *user_param,
-					   struct pingpong_dest *rem_dest) {
-
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *rem_dest)
+{
 	int i,j;
 	int num_of_qps = user_param->num_of_qps;
 	int xrc_offset = 0;
@@ -2019,7 +2265,7 @@ void ctx_set_send_reg_wqes(struct pingpong_context *ctx,
 	}
 
 	for (i = 0; i < num_of_qps ; i++) {
-		memset(&ctx->wr[i],0,sizeof(struct ibv_send_wr));
+		memset(&ctx->wr[i*user_param->post_list],0,sizeof(struct ibv_send_wr));
 		ctx->sge_list[i*user_param->post_list].addr = (uintptr_t)ctx->buf + (i*BUFF_SIZE(ctx->size,ctx->cycle_buffer));
 		if (user_param->mac_fwd)
 			ctx->sge_list[i*user_param->post_list].addr = (uintptr_t)ctx->buf + (num_of_qps + i)*BUFF_SIZE(ctx->size,ctx->cycle_buffer);
@@ -2041,7 +2287,9 @@ void ctx_set_send_reg_wqes(struct pingpong_context *ctx,
 
 		for (j = 0; j < user_param->post_list; j++) {
 
-			ctx->sge_list[i*user_param->post_list + j].length =  (user_param->connection_type == RawEth) ? (user_param->size - HW_CRC_ADDITION) : user_param->size;
+			ctx->sge_list[i*user_param->post_list + j].length =
+				(user_param->connection_type == RawEth) ? (user_param->size - HW_CRC_ADDITION) : user_param->size;
+
 			ctx->sge_list[i*user_param->post_list + j].lkey = ctx->mr->lkey;
 
 			if (j > 0) {
@@ -2050,7 +2298,7 @@ void ctx_set_send_reg_wqes(struct pingpong_context *ctx,
 
 				if ((user_param->tst == BW ) && user_param->size <= (ctx->cycle_buffer / 2))
 					increase_loc_addr(&ctx->sge_list[i*user_param->post_list +j],user_param->size,
-									j-1,ctx->my_addr[i],0,ctx->cache_line_size,ctx->cycle_buffer);
+							j-1,ctx->my_addr[i],0,ctx->cache_line_size,ctx->cycle_buffer);
 			}
 
 			ctx->wr[i*user_param->post_list + j].sg_list = &ctx->sge_list[i*user_param->post_list + j];
@@ -2079,11 +2327,12 @@ void ctx_set_send_reg_wqes(struct pingpong_context *ctx,
 
 				if (j > 0) {
 
-					ctx->wr[i*user_param->post_list + j].wr.rdma.remote_addr = ctx->wr[i*user_param->post_list + (j-1)].wr.rdma.remote_addr;
+					ctx->wr[i*user_param->post_list + j].wr.rdma.remote_addr =
+						ctx->wr[i*user_param->post_list + (j-1)].wr.rdma.remote_addr;
 
 					if ((user_param->tst == BW) && user_param->size <= (ctx->cycle_buffer / 2))
 						increase_rem_addr(&ctx->wr[i*user_param->post_list + j],user_param->size,
-											j-1,ctx->rem_addr[i],WRITE,ctx->cache_line_size,ctx->cycle_buffer);
+								j-1,ctx->rem_addr[i],WRITE,ctx->cache_line_size,ctx->cycle_buffer);
 				}
 
 			} else if (user_param->verb == ATOMIC) {
@@ -2092,10 +2341,11 @@ void ctx_set_send_reg_wqes(struct pingpong_context *ctx,
 
 				if (j > 0) {
 
-					ctx->wr[i*user_param->post_list + j].wr.atomic.remote_addr = ctx->wr[i*user_param->post_list + j-1].wr.atomic.remote_addr;
+					ctx->wr[i*user_param->post_list + j].wr.atomic.remote_addr =
+						ctx->wr[i*user_param->post_list + j-1].wr.atomic.remote_addr;
 					if ((user_param->tst == BW))
 						increase_rem_addr(&ctx->wr[i*user_param->post_list + j],user_param->size,
-											j-1,ctx->rem_addr[i],ATOMIC,ctx->cache_line_size,ctx->cycle_buffer);
+								j-1,ctx->rem_addr[i],ATOMIC,ctx->cache_line_size,ctx->cycle_buffer);
 				}
 
 				if (user_param->atomicType == FETCH_AND_ADD)
@@ -2125,10 +2375,10 @@ void ctx_set_send_reg_wqes(struct pingpong_context *ctx,
 			if ((user_param->verb == SEND || user_param->verb == WRITE) && user_param->size <= user_param->inline_size)
 				ctx->wr[i*user_param->post_list + j].send_flags |= IBV_SEND_INLINE;
 
-		#ifdef HAVE_XRCD
+			#ifdef HAVE_XRCD
 			if (user_param->use_xrc)
 				ctx->wr[i*user_param->post_list + j].qp_type.xrc.remote_srqn = rem_dest[xrc_offset + i].srqn;
-		#endif
+			#endif
 		}
 	}
 }
@@ -2136,21 +2386,23 @@ void ctx_set_send_reg_wqes(struct pingpong_context *ctx,
 /******************************************************************************
  *
  ******************************************************************************/
-int ctx_set_recv_wqes(struct pingpong_context *ctx,struct perftest_parameters *user_param) {
-
+int ctx_set_recv_wqes(struct pingpong_context *ctx,struct perftest_parameters *user_param)
+{
 	int	i,j,k;
 	int num_of_qps = user_param->num_of_qps;
 	struct ibv_recv_wr  *bad_wr_recv;
 	i = 0;
 	int size_per_qp = user_param->rx_depth;
 
-	if((user_param->use_xrc || user_param->connection_type == DC) && (user_param->duplex || user_param->tst == LAT)) {
+	if((user_param->use_xrc || user_param->connection_type == DC) &&
+				(user_param->duplex || user_param->tst == LAT)) {
+
 		i = user_param->num_of_qps / 2;
 		num_of_qps /= 2;
 	}
 
 	if (user_param->use_srq)
-			size_per_qp /= user_param->num_of_qps;
+		size_per_qp /= user_param->num_of_qps;
 
 	if (user_param->use_rss) {
 		i = 1;
@@ -2158,7 +2410,8 @@ int ctx_set_recv_wqes(struct pingpong_context *ctx,struct perftest_parameters *u
 	}
 	for (k = 0; i < user_param->num_of_qps; i++,k++) {
 
-		ctx->recv_sge_list[i].addr  = (uintptr_t)ctx->buf + (num_of_qps + k)*BUFF_SIZE(ctx->size,ctx->cycle_buffer);
+		ctx->recv_sge_list[i].addr  = (uintptr_t)ctx->buf +
+			(num_of_qps + k)*BUFF_SIZE(ctx->size,ctx->cycle_buffer);
 
 		if (user_param->connection_type == UD)
 			ctx->recv_sge_list[i].addr += (ctx->cache_line_size - UD_ADDITION);
@@ -2194,10 +2447,10 @@ int ctx_set_recv_wqes(struct pingpong_context *ctx,struct perftest_parameters *u
 			if ((user_param->tst == BW) && user_param->size <= (ctx->cycle_buffer / 2)) {
 
 				increase_loc_addr(&ctx->recv_sge_list[i],
-								  user_param->size,
-								  j,
-								  ctx->rx_buffer_addr[i],
-								  user_param->connection_type,ctx->cache_line_size,ctx->cycle_buffer);
+						user_param->size,
+						j,
+						ctx->rx_buffer_addr[i],
+						user_param->connection_type,ctx->cache_line_size,ctx->cycle_buffer);
 			}
 		}
 	}
@@ -2205,8 +2458,8 @@ int ctx_set_recv_wqes(struct pingpong_context *ctx,struct perftest_parameters *u
 }
 
 int ctx_alloc_credit(struct pingpong_context *ctx,
-			struct perftest_parameters *user_param,
-			struct pingpong_dest *my_dest)
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *my_dest)
 {
 	int buf_size = 2*user_param->num_of_qps*sizeof(uint32_t);
 	int flags = IBV_ACCESS_LOCAL_WRITE | IBV_ACCESS_REMOTE_WRITE;
@@ -2232,8 +2485,8 @@ int ctx_alloc_credit(struct pingpong_context *ctx,
 
 /* Should be called after the remote keys have been exchanged */
 int ctx_set_credit_wqes(struct pingpong_context *ctx,
-			struct perftest_parameters *user_param,
-			struct pingpong_dest *rem_dest)
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *rem_dest)
 {
 	int i;
 	ALLOCATE(ctx->ctrl_wr,struct ibv_send_wr,user_param->num_of_qps);
@@ -2274,7 +2527,7 @@ static int clean_scq_credit(int send_cnt,struct pingpong_context *ctx,struct per
 			for (i = 0; i < sne; i++) {
 				if (swc[i].status != IBV_WC_SUCCESS) {
 					fprintf(stderr, "Poll send CQ error status=%u qp %d\n",
-						swc[i].status,(int)swc[i].wr_id);
+							swc[i].status,(int)swc[i].wr_id);
 					return_value = 1;
 					goto cleaning;
 				}
@@ -2296,13 +2549,13 @@ cleaning:
 /******************************************************************************
  *
  ******************************************************************************/
-int perform_warm_up(struct pingpong_context *ctx,struct perftest_parameters *user_param) {
-
+int perform_warm_up(struct pingpong_context *ctx,struct perftest_parameters *user_param)
+{
 	int 			ne,index,warmindex,warmupsession;
 	int 			err = 0;
-#if defined(HAVE_VERBS_EXP)
+	#ifdef HAVE_VERBS_EXP
 	struct ibv_exp_send_wr 	*bad_exp_wr = NULL;
-#endif
+	#endif
 	struct ibv_send_wr 	*bad_wr = NULL;
 	struct ibv_wc 		wc;
 	struct ibv_wc 		*wc_for_cleaning = NULL;
@@ -2315,26 +2568,28 @@ int perform_warm_up(struct pingpong_context *ctx,struct perftest_parameters *use
 	warmupsession = (user_param->post_list == 1) ? user_param->tx_depth : user_param->post_list;
 	ALLOCATE(wc_for_cleaning,struct ibv_wc,user_param->tx_depth);
 
-	// Clean up the pipe
+	/* Clean up the pipe */
 	ne = ibv_poll_cq(ctx->send_cq,user_param->tx_depth,wc_for_cleaning);
 
 	for (index=0 ; index < num_of_qps ; index++) {
 
 		for (warmindex = 0 ;warmindex < warmupsession ;warmindex += user_param->post_list) {
 
-	    		#if defined(HAVE_VERBS_EXP)
+			#ifdef HAVE_VERBS_EXP
 			if (user_param->use_exp == 1)
-            			err = (ctx->exp_post_send_func_pointer)(ctx->qp[index],&ctx->exp_wr[index*user_param->post_list],&bad_exp_wr);
+				err = (ctx->exp_post_send_func_pointer)(ctx->qp[index],
+					&ctx->exp_wr[index*user_param->post_list], &bad_exp_wr);
 			else
 				err = (ctx->post_send_func_pointer)(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
-            	#else
-            		err = ibv_post_send(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
-            	#endif
+			#else
+			err = ibv_post_send(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
+			#endif
+
 			if (err) {
-            			fprintf(stderr,"Couldn't post send during warm up: qp %d scnt=%d \n",index,warmindex);
-            			return_value = 1;
+				fprintf(stderr,"Couldn't post send during warm up: qp %d scnt=%d \n",index,warmindex);
+				return_value = 1;
 				goto cleaning;
-        		}
+			}
 		}
 
 		do {
@@ -2355,7 +2610,6 @@ int perform_warm_up(struct pingpong_context *ctx,struct perftest_parameters *use
 			}
 
 		} while (warmindex);
-
 	}
 
 cleaning:
@@ -2366,32 +2620,32 @@ cleaning:
 /******************************************************************************
  *
  ******************************************************************************/
-int run_iter_bw(struct pingpong_context *ctx,struct perftest_parameters *user_param) {
-
+int run_iter_bw(struct pingpong_context *ctx,struct perftest_parameters *user_param)
+{
 	uint64_t           	totscnt = 0;
 	uint64_t       	   	totccnt = 0;
 	int                	i = 0;
 	int                	index,ne;
 	uint64_t	   	tot_iters;
 	int			err = 0;
-#if defined(HAVE_VERBS_EXP)
+	#ifdef HAVE_VERBS_EXP
 	struct ibv_exp_send_wr 	*bad_exp_wr = NULL;
-#endif
+	#endif
 	struct ibv_send_wr 	*bad_wr = NULL;
 	struct ibv_wc 	   	*wc = NULL;
 	int 			num_of_qps = user_param->num_of_qps;
 
 	/* Rate Limiter*/
 	int 			rate_limit_pps = 0;
-	double 			gap_time = 0;	//in usec
-	cycles_t 		gap_cycles = 0;	//in cycles
+	double 			gap_time = 0;	/* in usec */
+	cycles_t 		gap_cycles = 0;	/* in cycles */
 	cycles_t 		gap_deadline = 0;
 	unsigned int 		number_of_bursts = 0;
 	int 			burst_iter = 0;
 	int 			is_sending_burst = 0;
 	int 			cpu_mhz = 0;
 	int 			return_value = 0;
-	/**/
+	int			wc_id;
 
 	ALLOCATE(wc ,struct ibv_wc ,CTX_POLL_BATCH);
 
@@ -2402,16 +2656,16 @@ int run_iter_bw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 		if (user_param->margin > 0 )
 			alarm(user_param->margin);
 		else
-			catch_alarm(0); //move to next state
+			catch_alarm(0); /* move to next state */
 
 		user_param->iters = 0;
 	}
 
-	// Will be 0, in case of Duration (look at force_dependencies or in the exp above).
 	if (user_param->duplex && (user_param->use_xrc || user_param->connection_type == DC))
 		num_of_qps /= 2;
 
-	tot_iters = user_param->iters*num_of_qps;
+	/* Will be 0, in case of Duration (look at force_dependencies or in the exp above). */
+	tot_iters = (uint64_t)user_param->iters*num_of_qps;
 
 	if (user_param->test_type == DURATION && user_param->state != START_STATE && user_param->margin > 0) {
 		fprintf(stderr, "Failed: margin is not long enough (taking samples before warmup ends)\n");
@@ -2423,15 +2677,15 @@ int run_iter_bw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 	if (user_param->test_type == ITERATIONS && user_param->noPeak == ON)
 		user_param->tposted[0] = get_cycles();
 
-	// If using rate limiter, calculate gap time between bursts
+	/* If using rate limiter, calculate gap time between bursts */
 	if (user_param->is_rate_limiting == 1) {
-		// Calculate rate limit in pps
+		/* Calculate rate limit in pps */
 		switch (user_param->rate_units) {
 			case MEGA_BYTE_PS:
-				rate_limit_pps = ((double)(user_param->rate_limit) / user_param->size) * 1048576;		//1024^2
+				rate_limit_pps = ((double)(user_param->rate_limit) / user_param->size) * 1048576;
 				break;
 			case GIGA_BIT_PS:
-				rate_limit_pps = ((double)(user_param->rate_limit) / (user_param->size * 8)) * 1000000000;	//1000^3
+				rate_limit_pps = ((double)(user_param->rate_limit) / (user_param->size * 8)) * 1000000000;
 				break;
 			case PACKET_PS:
 				rate_limit_pps = user_param->rate_limit;
@@ -2450,15 +2704,16 @@ int run_iter_bw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 		gap_cycles = cpu_mhz * gap_time;
 	}
 
-	// main loop for posting
-	while (totscnt < tot_iters  || totccnt < tot_iters || (user_param->test_type == DURATION && user_param->state != END_STATE) ) {
+	/* main loop for posting */
+	while (totscnt < tot_iters  || totccnt < tot_iters ||
+		(user_param->test_type == DURATION && user_param->state != END_STATE) ) {
 
-		// main loop to run over all the qps and post each time n messages
+		/* main loop to run over all the qps and post each time n messages */
 		for (index =0 ; index < num_of_qps ; index++) {
 
 			if (user_param->is_rate_limiting == 1 && is_sending_burst == 0) {
 				if (gap_deadline > get_cycles()) {
-					//Go right to cq polling until gap time is over.
+					/* Go right to cq polling until gap time is over. */
 					continue;
 				}
 				gap_deadline = get_cycles() + gap_cycles;
@@ -2467,20 +2722,29 @@ int run_iter_bw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 			}
 
 			while ((ctx->scnt[index] < user_param->iters || user_param->test_type == DURATION) && (ctx->scnt[index] - ctx->ccnt[index]) < (user_param->tx_depth) &&
-				!(user_param->is_rate_limiting && is_sending_burst == 0)) {
-
+					!(user_param->is_rate_limiting && is_sending_burst == 0)) {
 				if (ctx->send_rcredit) {
 					uint32_t swindow = ctx->scnt[index] + user_param->post_list - ctx->credit_buf[index];
 					if (swindow >= user_param->rx_depth)
 						break;
 				}
-				if (user_param->post_list == 1 && (ctx->scnt[index] % user_param->cq_mod == 0 && user_param->cq_mod > 1)) {
+				if (user_param->post_list == 1 && (ctx->scnt[index] % user_param->cq_mod == 0 && user_param->cq_mod > 1)
+					&& !(ctx->scnt[index] == (user_param->iters - 1) && user_param->test_type == ITERATIONS)) {
+
 					#ifdef HAVE_VERBS_EXP
-					if (user_param->use_exp == 1)
-						ctx->exp_wr[index].exp_send_flags &= ~IBV_EXP_SEND_SIGNALED;
-					else
+					#ifdef HAVE_ACCL_VERBS
+					if (user_param->verb_type == ACCL_INTF)
+						ctx->exp_wr[index].exp_send_flags &= ~IBV_EXP_QP_BURST_SIGNALED;
+					else {
+					#endif
+						if (user_param->use_exp == 1)
+							ctx->exp_wr[index].exp_send_flags &= ~IBV_EXP_SEND_SIGNALED;
+						else
+					#endif
+							ctx->wr[index].send_flags &= ~IBV_SEND_SIGNALED;
+					#ifdef HAVE_ACCL_VERBS
+					}
 					#endif
-						ctx->wr[index].send_flags &= ~IBV_SEND_SIGNALED;
 				}
 
 				if (user_param->noPeak == OFF)
@@ -2489,60 +2753,81 @@ int run_iter_bw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 				if (user_param->test_type == DURATION && user_param->state == END_STATE)
 					break;
 
-				#if defined(HAVE_VERBS_EXP)
-				if (user_param->use_exp == 1) {
-            				err = (ctx->exp_post_send_func_pointer)(ctx->qp[index],&ctx->exp_wr[index*user_param->post_list],&bad_exp_wr);
-				}
-				else {
-					err = (ctx->post_send_func_pointer)(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
+				#ifdef HAVE_VERBS_EXP
+				#ifdef HAVE_ACCL_VERBS
+				if (user_param->verb_type == ACCL_INTF) {
+					struct ibv_sge *sg_l = ctx->exp_wr[index*user_param->post_list].sg_list;
+					err = ctx->qp_burst_family[index]->send_burst(ctx->qp[index], sg_l, 1, ctx->exp_wr[index].exp_send_flags);
+				} else {
+				#endif
+					if (user_param->use_exp == 1) {
+						err = (ctx->exp_post_send_func_pointer)(ctx->qp[index],
+							&ctx->exp_wr[index*user_param->post_list],&bad_exp_wr);
+					}
+					else {
+						err = (ctx->post_send_func_pointer)(ctx->qp[index],
+							&ctx->wr[index*user_param->post_list],&bad_wr);
+					}
+				#ifdef HAVE_ACCL_VERBS
 				}
+				#endif
 				#else
-					err = ibv_post_send(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
+				err = ibv_post_send(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
 				#endif
 				if (err) {
-            				fprintf(stderr,"Couldn't post send: qp %d scnt=%lu \n",index,ctx->scnt[index]);
-            				return_value = 1;
+					fprintf(stderr,"Couldn't post send: qp %d scnt=%lu \n",index,ctx->scnt[index]);
+					return_value = 1;
 					goto cleaning;
-        			}
+				}
 
 				if (user_param->post_list == 1 && user_param->size <= (ctx->cycle_buffer / 2)) {
+					#ifdef HAVE_VERBS_EXP
+					if (user_param->use_exp == 1)
+						increase_loc_addr(ctx->exp_wr[index].sg_list,user_param->size,
+								ctx->scnt[index],ctx->my_addr[index],0,ctx->cache_line_size,ctx->cycle_buffer);
+					else
+					#endif
+						increase_loc_addr(ctx->wr[index].sg_list,user_param->size,ctx->scnt[index],
+								ctx->my_addr[index],0,ctx->cache_line_size,ctx->cycle_buffer);
+
+					if (user_param->verb != SEND) {
 						#ifdef HAVE_VERBS_EXP
 						if (user_param->use_exp == 1)
-							increase_loc_addr(ctx->exp_wr[index].sg_list,user_param->size,
-											ctx->scnt[index],ctx->my_addr[index],0,ctx->cache_line_size,ctx->cycle_buffer);
+							increase_exp_rem_addr(&ctx->exp_wr[index],user_param->size,
+									ctx->scnt[index],ctx->rem_addr[index],user_param->verb,ctx->cache_line_size,
+									ctx->cycle_buffer);
 						else
 						#endif
-							increase_loc_addr(ctx->wr[index].sg_list,user_param->size,ctx->scnt[index],
-													ctx->my_addr[index],0,ctx->cache_line_size,ctx->cycle_buffer);
-
-						if (user_param->verb != SEND) {
-							#ifdef HAVE_VERBS_EXP
-							if (user_param->use_exp == 1)
-								increase_exp_rem_addr(&ctx->exp_wr[index],user_param->size,
-										ctx->scnt[index],ctx->rem_addr[index],user_param->verb,ctx->cache_line_size,
-																		ctx->cycle_buffer);
-							else
-							#endif
-								increase_rem_addr(&ctx->wr[index],user_param->size,
-										ctx->scnt[index],ctx->rem_addr[index],user_param->verb,ctx->cache_line_size,
-																		ctx->cycle_buffer);
-						}
+							increase_rem_addr(&ctx->wr[index],user_param->size,
+									ctx->scnt[index],ctx->rem_addr[index],user_param->verb,ctx->cache_line_size,
+									ctx->cycle_buffer);
+					}
 				}
 
 				ctx->scnt[index] += user_param->post_list;
 				totscnt += user_param->post_list;
 
+				/* ask for completion on this wr */
 				if (user_param->post_list == 1 &&
-				   (ctx->scnt[index]%user_param->cq_mod == user_param->cq_mod - 1 || (user_param->test_type == ITERATIONS && ctx->scnt[index] == user_param->iters - 1))) {
+						(ctx->scnt[index]%user_param->cq_mod == user_param->cq_mod - 1 ||
+							(user_param->test_type == ITERATIONS && ctx->scnt[index] == user_param->iters - 1))) {
 					#ifdef HAVE_VERBS_EXP
-					if (user_param->use_exp == 1)
-						ctx->exp_wr[index].exp_send_flags |= IBV_EXP_SEND_SIGNALED;
-					else
+					#ifdef HAVE_ACCL_VERBS
+					if (user_param->verb_type == ACCL_INTF)
+						ctx->exp_wr[index].exp_send_flags |= IBV_EXP_QP_BURST_SIGNALED;
+					else {
+					#endif
+						if (user_param->use_exp == 1)
+							ctx->exp_wr[index].exp_send_flags |= IBV_EXP_SEND_SIGNALED;
+						else
+					#endif
+							ctx->wr[index].send_flags |= IBV_SEND_SIGNALED;
+					#ifdef HAVE_ACCL_VERBS
+					}
 					#endif
-						ctx->wr[index].send_flags |= IBV_SEND_SIGNALED;
 				}
 
-				// Check if a full burst was sent.
+				/* Check if a full burst was sent. */
 				if (user_param->is_rate_limiting == 1) {
 					burst_iter += user_param->post_list;
 					if (burst_iter >= user_param->burst_size) {
@@ -2561,17 +2846,27 @@ int run_iter_bw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 				}
 			}
 
-			ne = ibv_poll_cq(ctx->send_cq,CTX_POLL_BATCH,wc);
+			#ifdef HAVE_ACCL_VERBS
+			if (user_param->verb_type == ACCL_INTF)
+				ne = ctx->send_cq_family->poll_cnt(ctx->send_cq, CTX_POLL_BATCH);
+			else
+			#endif
+				ne = ibv_poll_cq(ctx->send_cq,CTX_POLL_BATCH,wc);
 
 			if (ne > 0) {
 				for (i = 0; i < ne; i++) {
-					if (wc[i].status != IBV_WC_SUCCESS)
-					{
-						NOTIFY_COMP_ERROR_SEND(wc[i],totscnt,totccnt);
-						return_value = 1;
-						goto cleaning;
+					wc_id = (user_param->verb_type == ACCL_INTF) ?
+						0 : (int)wc[i].wr_id;
+
+					if (user_param->verb_type != ACCL_INTF) {
+						if (wc[i].status != IBV_WC_SUCCESS) {
+							NOTIFY_COMP_ERROR_SEND(wc[i],totscnt,totccnt);
+							return_value = 1;
+							goto cleaning;
+						}
 					}
-					ctx->ccnt[(int)wc[i].wr_id] += user_param->cq_mod;
+
+					ctx->ccnt[wc_id] += user_param->cq_mod;
 					totccnt += user_param->cq_mod;
 
 					if (user_param->noPeak == OFF) {
@@ -2582,11 +2877,9 @@ int run_iter_bw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 							user_param->tcompleted[totccnt-1] = get_cycles();
 					}
 
-					if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE)
-					{
-						if (user_param->report_per_port) 
-						{
-							user_param->iters_per_port[user_param->port_by_qp[(int)wc[i].wr_id]] += user_param->cq_mod;
+					if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE) {
+						if (user_param->report_per_port) {
+							user_param->iters_per_port[user_param->port_by_qp[wc_id]] += user_param->cq_mod;
 						}
 						user_param->iters += user_param->cq_mod;
 					}
@@ -2625,7 +2918,7 @@ static inline void set_on_first_rx_packet(struct perftest_parameters *user_param
 		else
 			catch_alarm(0);
 
-	} else if (user_param->tst == BW){
+	} else if (user_param->tst == BW) {
 		user_param->tposted[0] = get_cycles();
 	}
 }
@@ -2645,8 +2938,10 @@ int run_iter_bw_server(struct pingpong_context *ctx, struct perftest_parameters
 	long 			*scredit_for_qp = NULL;
 	int 			tot_scredit = 0;
 	int 			firstRx = 1;
-	int 			size_per_qp = (user_param->use_srq) ? user_param->rx_depth/user_param->num_of_qps : user_param->rx_depth;
+	int 			size_per_qp = (user_param->use_srq) ?
+					user_param->rx_depth/user_param->num_of_qps : user_param->rx_depth;
 	int 			return_value = 0;
+	int			wc_id;
 
 	ALLOCATE(wc ,struct ibv_wc ,CTX_POLL_BATCH);
 	ALLOCATE(swc ,struct ibv_wc ,user_param->tx_depth);
@@ -2658,14 +2953,14 @@ int run_iter_bw_server(struct pingpong_context *ctx, struct perftest_parameters
 	memset(scredit_for_qp,0,sizeof(long)*user_param->num_of_qps);
 
 	if (user_param->use_rss)
-		tot_iters = user_param->iters*(user_param->num_of_qps-1);
+		tot_iters = (uint64_t)user_param->iters*(user_param->num_of_qps-1);
 	else
-		tot_iters = user_param->iters*user_param->num_of_qps;
+		tot_iters = (uint64_t)user_param->iters*user_param->num_of_qps;
 
 	if (user_param->test_type == ITERATIONS) {
 		check_alive_data.is_events = user_param->use_event;
-                signal(SIGALRM, check_alive);
-                alarm(60);
+		signal(SIGALRM, check_alive);
+		alarm(60);
 	}
 
 	check_alive_data.g_total_iters = tot_iters;
@@ -2681,10 +2976,19 @@ int run_iter_bw_server(struct pingpong_context *ctx, struct perftest_parameters
 		}
 
 		do {
-			if (user_param->connection_type == DC)
-				ne = ibv_poll_cq(ctx->send_cq,CTX_POLL_BATCH,wc);
-			else
-				ne = ibv_poll_cq(ctx->recv_cq,CTX_POLL_BATCH,wc);
+			#ifdef HAVE_ACCL_VERBS
+			if (user_param->verb_type == ACCL_INTF)
+				ne = ctx->recv_cq_family->poll_cnt(ctx->recv_cq, CTX_POLL_BATCH);
+			else {
+			#endif
+				if (user_param->connection_type == DC)
+					ne = ibv_poll_cq(ctx->send_cq,CTX_POLL_BATCH,wc);
+				else
+					ne = ibv_poll_cq(ctx->recv_cq,CTX_POLL_BATCH,wc);
+			#ifdef HAVE_ACCL_VERBS
+			}
+			#endif
+
 			if (ne > 0) {
 				if (firstRx) {
 					set_on_first_rx_packet(user_param);
@@ -2692,70 +2996,82 @@ int run_iter_bw_server(struct pingpong_context *ctx, struct perftest_parameters
 				}
 
 				for (i = 0; i < ne; i++) {
+					wc_id = (user_param->verb_type == ACCL_INTF) ?
+						0 : (int)wc[i].wr_id;
 
-					if (wc[i].status != IBV_WC_SUCCESS) {
+					if (user_param->verb_type != ACCL_INTF) {
+						if (wc[i].status != IBV_WC_SUCCESS) {
 
-						NOTIFY_COMP_ERROR_RECV(wc[i],rcnt_for_qp[0]);
-						return_value = 1;
-						goto cleaning;
+							NOTIFY_COMP_ERROR_RECV(wc[i],rcnt_for_qp[wc_id]);
+							return_value = 1;
+							goto cleaning;
+						}
 					}
 
-					rcnt_for_qp[wc[i].wr_id]++;
+					rcnt_for_qp[wc_id]++;
 					rcnt++;
 					check_alive_data.current_totrcnt = rcnt;
 
- 					if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE)
-					{
-						if (user_param->report_per_port)
-						{
-							user_param->iters_per_port[user_param->port_by_qp[(int)wc[i].wr_id]]++;
+					if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE) {
+						if (user_param->report_per_port) {
+							user_param->iters_per_port[user_param->port_by_qp[wc_id]]++;
 						}
 						user_param->iters++;
 					}
 
-					if (user_param->test_type==DURATION || rcnt_for_qp[wc[i].wr_id] + size_per_qp <= user_param->iters) {
-
-						if (user_param->use_srq) {
-							if (ibv_post_srq_recv(ctx->srq, &ctx->rwr[wc[i].wr_id],&bad_wr_recv)) {
-								fprintf(stderr, "Couldn't post recv SRQ. QP = %d: counter=%lu\n",(int)wc[i].wr_id,rcnt);
+					if (user_param->test_type==DURATION || rcnt_for_qp[wc_id] + size_per_qp <= user_param->iters) {
+						#ifdef HAVE_ACCL_VERBS
+						if (user_param->verb_type == ACCL_INTF) {
+							if (ctx->qp_burst_family[wc_id]->recv_burst(ctx->qp[wc_id], ctx->rwr[wc_id].sg_list, 1)) {
+								fprintf(stderr, "Couldn't post recv burst (accelerated verbs).\n");
 								return_value = 1;
 								goto cleaning;
 							}
-
 						} else {
-							if (ibv_post_recv(ctx->qp[wc[i].wr_id],&ctx->rwr[wc[i].wr_id],&bad_wr_recv)) {
-								fprintf(stderr, "Couldn't post recv Qp=%d rcnt=%ld\n",(int)wc[i].wr_id,rcnt_for_qp[wc[i].wr_id]);
-								return_value = 15;
-								goto cleaning;
-							}
+						#endif
+							if (user_param->use_srq) {
+								if (ibv_post_srq_recv(ctx->srq, &ctx->rwr[wc_id],&bad_wr_recv)) {
+									fprintf(stderr, "Couldn't post recv SRQ. QP = %d: counter=%lu\n", wc_id,rcnt);
+									return_value = 1;
+									goto cleaning;
+								}
 
-						}
+							} else {
+								if (ibv_post_recv(ctx->qp[wc_id],&ctx->rwr[wc_id],&bad_wr_recv)) {
+									fprintf(stderr, "Couldn't post recv Qp=%d rcnt=%ld\n",wc_id,rcnt_for_qp[wc_id]);
+									return_value = 15;
+									goto cleaning;
+								}
 
+							}
+						#ifdef HAVE_ACCL_VERBS
+						}
+						#endif
 						if (SIZE(user_param->connection_type,user_param->size,!(int)user_param->machine) <= (ctx->cycle_buffer / 2)) {
-							increase_loc_addr(ctx->rwr[wc[i].wr_id].sg_list,
-											  user_param->size,
-											  rcnt_for_qp[wc[i].wr_id] + size_per_qp,
-											  ctx->rx_buffer_addr[wc[i].wr_id],
-											  user_param->connection_type,ctx->cache_line_size,ctx->cycle_buffer);
+							increase_loc_addr(ctx->rwr[wc_id].sg_list,
+									user_param->size,
+									rcnt_for_qp[wc_id] + size_per_qp,
+									ctx->rx_buffer_addr[wc_id],
+									user_param->connection_type,ctx->cache_line_size,ctx->cycle_buffer);
 						}
 					}
 
 					if (ctx->send_rcredit) {
-						int credit_cnt = rcnt_for_qp[wc[i].wr_id]%user_param->rx_depth;
+						int credit_cnt = rcnt_for_qp[wc_id]%user_param->rx_depth;
 
 						if (credit_cnt%ctx->credit_cnt == 0) {
 							struct ibv_send_wr *bad_wr = NULL;
 							int sne = 0, j = 0;
-							ctx->ctrl_buf[wc[i].wr_id] = rcnt_for_qp[wc[i].wr_id];
+							ctx->ctrl_buf[wc_id] = rcnt_for_qp[wc_id];
 
-							while (scredit_for_qp[wc[i].wr_id] == user_param->tx_depth) {
+							while (scredit_for_qp[wc_id] == user_param->tx_depth) {
 								sne = ibv_poll_cq(ctx->send_cq,user_param->tx_depth,swc);
 								if (sne > 0) {
 									for (j = 0; j < sne; j++) {
 										if (swc[j].status != IBV_WC_SUCCESS) {
 											fprintf(stderr, "Poll send CQ error status=%u qp %d credit=%lu scredit=%lu\n",
-												swc[j].status,(int)swc[j].wr_id,
-												rcnt_for_qp[swc[j].wr_id],scredit_for_qp[swc[j].wr_id]);
+													swc[j].status,(int)swc[j].wr_id,
+													rcnt_for_qp[swc[j].wr_id],scredit_for_qp[swc[j].wr_id]);
 											return_value = 1;
 											goto cleaning;
 										}
@@ -2768,13 +3084,13 @@ int run_iter_bw_server(struct pingpong_context *ctx, struct perftest_parameters
 									goto cleaning;
 								}
 							}
-							if (ibv_post_send(ctx->qp[wc[i].wr_id],&ctx->ctrl_wr[wc[i].wr_id],&bad_wr)) {
+							if (ibv_post_send(ctx->qp[wc_id],&ctx->ctrl_wr[wc_id],&bad_wr)) {
 								fprintf(stderr,"Couldn't post send qp %d credit = %lu\n",
-									(int)wc[i].wr_id,rcnt_for_qp[wc[i].wr_id]);
+										wc_id,rcnt_for_qp[wc_id]);
 								return_value = 1;
 								goto cleaning;
 							}
-							scredit_for_qp[wc[i].wr_id]++;
+							scredit_for_qp[wc_id]++;
 							tot_scredit++;
 						}
 					}
@@ -2783,24 +3099,19 @@ int run_iter_bw_server(struct pingpong_context *ctx, struct perftest_parameters
 
 		} while (ne > 0);
 
-		if (ne < 0)
-		{
-			fprintf(stderr, "Poll Recieve CQ failed %d\n", ne);
+		if (ne < 0) {
+			fprintf(stderr, "Poll Receive CQ failed %d\n", ne);
 			return_value = 1;
 			goto cleaning;
 		}
-		else if (ne == 0)
-		{
-			if (check_alive_data.to_exit)
-			{
+		else if (ne == 0) {
+			if (check_alive_data.to_exit) {
 				user_param->check_alive_exited = 1;
 				return_value = 0;
 				goto cleaning;
 			}
 		}
 
-
-
 	}
 	if (user_param->test_type == ITERATIONS)
 		user_param->tcompleted[0] = get_cycles();
@@ -2811,18 +3122,12 @@ cleaning:
 			return_value = 1;
 	}
 
-	/*
-	//print rcnt per rss child qp.
-	if (user_param->use_rss) {
-		for (i = 1; i < user_param->num_of_qps; i++)
-			fprintf(stderr,"child %d count = %ld\n",i,rcnt_for_qp[i]);
-	}*/
-
 	check_alive_data.last_totrcnt=0;
 	free(wc);
 	free(rcnt_for_qp);
 	free(swc);
 	free(scredit_for_qp);
+
 	return return_value;
 }
 
@@ -2834,9 +3139,9 @@ int run_iter_bw_infinitely(struct pingpong_context *ctx,struct perftest_paramete
 	int 			i,j = 0;
 	int 			index = 0,ne;
 	int 			err = 0;
-#if defined(HAVE_VERBS_EXP)
+	#ifdef HAVE_VERBS_EXP
 	struct ibv_exp_send_wr 	*bad_exp_wr = NULL;
-#endif
+	#endif
 	uint64_t		*scnt_for_qp = NULL;
 	struct ibv_send_wr 	*bad_wr = NULL;
 	struct ibv_wc 		*wc = NULL;
@@ -2852,7 +3157,7 @@ int run_iter_bw_infinitely(struct pingpong_context *ctx,struct perftest_paramete
 	alarm(user_param->duration);
 	user_param->iters = 0;
 
-	// Will be 0, in case of Duration (look at force_dependencies or in the exp above)
+	/* Will be 0, in case of Duration (look at force_dependencies or in the exp above) */
 	if (user_param->duplex && (user_param->use_xrc || user_param->connection_type == DC))
 		num_of_qps /= 2;
 
@@ -2868,10 +3173,10 @@ int run_iter_bw_infinitely(struct pingpong_context *ctx,struct perftest_paramete
 
 	user_param->tposted[0] = get_cycles();
 
-	// main loop for posting
+	/* main loop for posting */
 	while (1) {
 
-		// main loop to run over all the qps and post each time n messages
+		/* main loop to run over all the qps and post each time n messages */
 		for (index =0 ; index < num_of_qps ; index++) {
 
 			while (ctx->scnt[index] < user_param->tx_depth) {
@@ -2880,14 +3185,14 @@ int run_iter_bw_infinitely(struct pingpong_context *ctx,struct perftest_paramete
 					if (swindow >= user_param->rx_depth)
 						break;
 				}
-				#if defined(HAVE_VERBS_EXP)
+				#ifdef HAVE_VERBS_EXP
 				if (user_param->use_exp == 1)
 					err = (ctx->exp_post_send_func_pointer)(ctx->qp[index],&ctx->exp_wr[index*user_param->post_list],&bad_exp_wr);
 				else
 					err = (ctx->post_send_func_pointer)(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
-            			#else
-            				err = ibv_post_send(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
-            			#endif
+				#else
+				err = ibv_post_send(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
+				#endif
 				if (err) {
 					fprintf(stderr,"Couldn't post send: %d scnt=%lu \n",index,ctx->scnt[index]);
 					return_value = 1;
@@ -2904,8 +3209,7 @@ int run_iter_bw_infinitely(struct pingpong_context *ctx,struct perftest_paramete
 		if (ne > 0) {
 
 			for (i = 0; i < ne; i++) {
-				if (wc[i].status != IBV_WC_SUCCESS)
-				{
+				if (wc[i].status != IBV_WC_SUCCESS) {
 					NOTIFY_COMP_ERROR_SEND(wc[i],ctx->scnt[(int)wc[i].wr_id],ctx->scnt[(int)wc[i].wr_id]);
 					return_value = 1;
 					goto cleaning;
@@ -2930,8 +3234,8 @@ cleaning:
 /******************************************************************************
  *
  ******************************************************************************/
-int run_iter_bw_infinitely_server(struct pingpong_context *ctx, struct perftest_parameters *user_param) {
-
+int run_iter_bw_infinitely_server(struct pingpong_context *ctx, struct perftest_parameters *user_param)
+{
 	int 			i,ne;
 	struct ibv_wc 		*wc          = NULL;
 	struct ibv_wc 		*swc         = NULL;
@@ -2998,8 +3302,8 @@ int run_iter_bw_infinitely_server(struct pingpong_context *ctx, struct perftest_
 									for (j = 0; j < sne; j++) {
 										if (swc[j].status != IBV_WC_SUCCESS) {
 											fprintf(stderr, "Poll send CQ error status=%u qp %d credit=%lu scredit=%lu\n",
-												swc[j].status,(int)swc[j].wr_id,
-												rcnt_for_qp[swc[j].wr_id],ccnt_for_qp[swc[j].wr_id]);
+													swc[j].status,(int)swc[j].wr_id,
+													rcnt_for_qp[swc[j].wr_id],ccnt_for_qp[swc[j].wr_id]);
 											return_value = 1;
 											goto cleaning;
 										}
@@ -3014,7 +3318,7 @@ int run_iter_bw_infinitely_server(struct pingpong_context *ctx, struct perftest_
 							}
 							if (ibv_post_send(ctx->qp[wc[i].wr_id],&ctx->ctrl_wr[wc[i].wr_id],&bad_wr)) {
 								fprintf(stderr,"Couldn't post send qp %d credit=%lu\n",
-											(int)wc[i].wr_id,rcnt_for_qp[wc[i].wr_id]);
+										(int)wc[i].wr_id,rcnt_for_qp[wc[i].wr_id]);
 								return_value = 1;
 								goto cleaning;
 							}
@@ -3045,7 +3349,7 @@ cleaning:
  *
  ******************************************************************************/
 int run_iter_bi(struct pingpong_context *ctx,
-				struct perftest_parameters *user_param)  {
+		struct perftest_parameters *user_param)  {
 
 	uint64_t 		totscnt    = 0;
 	uint64_t 		totccnt    = 0;
@@ -3061,12 +3365,12 @@ int run_iter_bi(struct pingpong_context *ctx,
 	struct ibv_wc 		*wc = NULL;
 	struct ibv_wc 		*wc_tx = NULL;
 	struct ibv_recv_wr 	*bad_wr_recv = NULL;
-#if defined(HAVE_VERBS_EXP)
+	#ifdef HAVE_VERBS_EXP
 	struct ibv_exp_send_wr 	*bad_exp_wr      = NULL;
-#endif
+	#endif
 	struct ibv_send_wr 	*bad_wr      = NULL;
 	int 			num_of_qps = user_param->num_of_qps;
-	// This is to ensure SERVER will not start to send packets before CLIENT start the test.
+	/* This is to ensure SERVER will not start to send packets before CLIENT start the test. */
 	int 			before_first_rx = ON;
 	int 			size_per_qp = (user_param->use_srq) ? user_param->rx_depth/user_param->num_of_qps : user_param->rx_depth;
 	int 			return_value = 0;
@@ -3074,10 +3378,6 @@ int run_iter_bi(struct pingpong_context *ctx,
 	ALLOCATE(wc_tx,struct ibv_wc,CTX_POLL_BATCH);
 	ALLOCATE(rcnt_for_qp,uint64_t,user_param->num_of_qps);
 	ALLOCATE(scredit_for_qp,int,user_param->num_of_qps);
-
-	/* This is a very important point. Since this function do RX and TX
-	in the same time, we need to give some priority to RX to avoid
-	deadlock in UC/UD test scenarios (Recv WQEs depleted due to fast TX) */
 	ALLOCATE(wc,struct ibv_wc,user_param->rx_depth);
 
 	memset(rcnt_for_qp,0,sizeof(uint64_t)*user_param->num_of_qps);
@@ -3086,6 +3386,9 @@ int run_iter_bi(struct pingpong_context *ctx,
 	if (user_param->noPeak == ON)
 		user_param->tposted[0] = get_cycles();
 
+	/* This is a very important point. Since this function do RX and TX
+	   in the same time, we need to give some priority to RX to avoid
+	   deadlock in UC/UD test scenarios (Recv WQEs depleted due to fast TX) */
 	if (user_param->machine == CLIENT) {
 
 		before_first_rx = OFF;
@@ -3096,37 +3399,39 @@ int run_iter_bi(struct pingpong_context *ctx,
 			signal(SIGALRM, catch_alarm);
 
 			if (user_param->margin > 0 )
-	                        alarm(user_param->margin);
-        	        else
-                	        catch_alarm(0); //move to next state
+				alarm(user_param->margin);
+			else
+				catch_alarm(0); /* move to next state */
 		}
 	}
 
 	if (user_param->test_type == ITERATIONS) {
 		check_alive_data.is_events = user_param->use_event;
-                signal(SIGALRM, check_alive);
-                alarm(60);
+		signal(SIGALRM, check_alive);
+		alarm(60);
 	}
 
 
 	if(user_param->duplex && (user_param->use_xrc || user_param->connection_type == DC))
 		num_of_qps /= 2;
 
-	tot_iters = user_param->iters*num_of_qps;
+	tot_iters = (uint64_t)user_param->iters*num_of_qps;
 	iters=user_param->iters;
 	check_alive_data.g_total_iters = tot_iters;
 
-	while ((user_param->test_type == DURATION && user_param->state != END_STATE) || totccnt < tot_iters || totrcnt < tot_iters ) {
+	while ((user_param->test_type == DURATION && user_param->state != END_STATE) ||
+							totccnt < tot_iters || totrcnt < tot_iters ) {
 
 		for (index=0; index < num_of_qps; index++) {
 			while (before_first_rx == OFF && (ctx->scnt[index] < iters || user_param->test_type == DURATION) &&
-				((ctx->scnt[index] + scredit_for_qp[index] - ctx->ccnt[index]) < user_param->tx_depth)) {
+					((ctx->scnt[index] + scredit_for_qp[index] - ctx->ccnt[index]) < user_param->tx_depth)) {
 				if (ctx->send_rcredit) {
 					uint32_t swindow = ctx->scnt[index] + user_param->post_list - ctx->credit_buf[index];
 					if (swindow >= user_param->rx_depth)
 						break;
 				}
-				if (user_param->post_list == 1 && (ctx->scnt[index] % user_param->cq_mod == 0 && user_param->cq_mod > 1)) {
+				if (user_param->post_list == 1 && (ctx->scnt[index] % user_param->cq_mod == 0 && user_param->cq_mod > 1)
+					&& !(ctx->scnt[index] == (user_param->iters - 1) && user_param->test_type == ITERATIONS)) {
 					#ifdef HAVE_VERBS_EXP
 					if (user_param->use_exp ==1)
 						ctx->exp_wr[index].exp_send_flags &= ~IBV_EXP_SEND_SIGNALED;
@@ -3140,35 +3445,40 @@ int run_iter_bi(struct pingpong_context *ctx,
 				if (user_param->test_type == DURATION && duration_param->state == END_STATE)
 					break;
 
-				#if defined(HAVE_VERBS_EXP)
+				#ifdef HAVE_VERBS_EXP
 				if (user_param->use_exp == 1)
-		            err = (ctx->exp_post_send_func_pointer)(ctx->qp[index],&ctx->exp_wr[index*user_param->post_list],&bad_exp_wr);
+					err = (ctx->exp_post_send_func_pointer)(ctx->qp[index],
+						&ctx->exp_wr[index*user_param->post_list],&bad_exp_wr);
 				else
-					err = (ctx->post_send_func_pointer)(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
-            	#else
-            	err = ibv_post_send(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
-            	#endif
+					err = (ctx->post_send_func_pointer)(ctx->qp[index],
+						&ctx->wr[index*user_param->post_list],&bad_wr);
+				#else
+				err = ibv_post_send(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
+				#endif
 				if (err) {
-            				fprintf(stderr,"Couldn't post send: qp %d scnt=%lu \n",index,ctx->scnt[index]);
-            				return_value = 1;
+					fprintf(stderr,"Couldn't post send: qp %d scnt=%lu \n",index,ctx->scnt[index]);
+					return_value = 1;
 					goto cleaning;
-        			}
+				}
 
 				if (user_param->post_list == 1 && user_param->size <= (ctx->cycle_buffer / 2)) {
 					#ifdef HAVE_VERBS_EXP
 					if (user_param->use_exp == 1)
 						increase_loc_addr(ctx->exp_wr[index].sg_list,user_param->size,ctx->scnt[index],
-												ctx->my_addr[index],0,ctx->cache_line_size,ctx->cycle_buffer);
+								ctx->my_addr[index],0,ctx->cache_line_size,ctx->cycle_buffer);
 					else
 					#endif
 						increase_loc_addr(ctx->wr[index].sg_list,user_param->size,ctx->scnt[index],
-												ctx->my_addr[index],0,ctx->cache_line_size,ctx->cycle_buffer);
+								ctx->my_addr[index],0,ctx->cache_line_size,ctx->cycle_buffer);
 				}
 
 				ctx->scnt[index] += user_param->post_list;
 				totscnt += user_param->post_list;
 
-				if (user_param->post_list == 1 && (ctx->scnt[index]%user_param->cq_mod == user_param->cq_mod - 1 || (user_param->test_type == ITERATIONS && ctx->scnt[index] == iters-1))) {
+				if (user_param->post_list == 1 &&
+					(ctx->scnt[index]%user_param->cq_mod == user_param->cq_mod - 1 ||
+						(user_param->test_type == ITERATIONS && ctx->scnt[index] == iters-1))) {
+
 					#ifdef HAVE_VERBS_EXP
 					if (user_param->use_exp == 1)
 						ctx->exp_wr[index].exp_send_flags |= IBV_EXP_SEND_SIGNALED;
@@ -3186,6 +3496,7 @@ int run_iter_bi(struct pingpong_context *ctx,
 				goto cleaning;
 			}
 		}
+
 		ne = ibv_poll_cq(ctx->recv_cq,user_param->rx_depth,wc);
 		if (ne > 0) {
 
@@ -3197,9 +3508,9 @@ int run_iter_bi(struct pingpong_context *ctx,
 					duration_param->state = START_STATE;
 					signal(SIGALRM, catch_alarm);
 					if (user_param->margin > 0 )
-			                        alarm(user_param->margin);
-                			else
-			                        catch_alarm(0); //move to next state
+						alarm(user_param->margin);
+					else
+						catch_alarm(0); /* move to next state */
 				}
 			}
 
@@ -3214,10 +3525,8 @@ int run_iter_bi(struct pingpong_context *ctx,
 				totrcnt++;
 				check_alive_data.current_totrcnt = totrcnt;
 
-				if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE)
-				{
-					if (user_param->report_per_port)
-					{
+				if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE) {
+					if (user_param->report_per_port) {
 						user_param->iters_per_port[user_param->port_by_qp[(int)wc[i].wr_id]]++;
 					}
 					user_param->iters++;
@@ -3242,10 +3551,10 @@ int run_iter_bi(struct pingpong_context *ctx,
 
 					if (SIZE(user_param->connection_type,user_param->size,!(int)user_param->machine) <= (ctx->cycle_buffer / 2)) {
 						increase_loc_addr(ctx->rwr[wc[i].wr_id].sg_list,
-										  user_param->size,
-										  rcnt_for_qp[wc[i].wr_id] + size_per_qp -1,
-										  ctx->rx_buffer_addr[wc[i].wr_id],user_param->connection_type,
-										  ctx->cache_line_size,ctx->cycle_buffer);
+								user_param->size,
+								rcnt_for_qp[wc[i].wr_id] + size_per_qp -1,
+								ctx->rx_buffer_addr[wc[i].wr_id],user_param->connection_type,
+								ctx->cache_line_size,ctx->cycle_buffer);
 					}
 				}
 				if (ctx->send_rcredit) {
@@ -3262,10 +3571,10 @@ int run_iter_bi(struct pingpong_context *ctx,
 							if (sne > 0) {
 								if (credit_wc.status != IBV_WC_SUCCESS) {
 									fprintf(stderr, "Poll send CQ error status=%u qp %d credit=%lu scredit=%d\n",
-										credit_wc.status,(int)credit_wc.wr_id,
-										rcnt_for_qp[credit_wc.wr_id],scredit_for_qp[credit_wc.wr_id]);
-										return_value = 1;
-										goto cleaning;
+											credit_wc.status,(int)credit_wc.wr_id,
+											rcnt_for_qp[credit_wc.wr_id],scredit_for_qp[credit_wc.wr_id]);
+									return_value = 1;
+									goto cleaning;
 								}
 
 								if (credit_wc.opcode == IBV_WC_RDMA_WRITE) {
@@ -3307,8 +3616,7 @@ int run_iter_bi(struct pingpong_context *ctx,
 			goto cleaning;
 		}
 		else if (ne == 0) {
-			if (check_alive_data.to_exit)
-			{
+			if (check_alive_data.to_exit) {
 				user_param->check_alive_exited = 1;
 				return_value = 0;
 				goto cleaning;
@@ -3319,8 +3627,7 @@ int run_iter_bi(struct pingpong_context *ctx,
 
 		if (ne > 0) {
 			for (i = 0; i < ne; i++) {
-				if (wc_tx[i].status != IBV_WC_SUCCESS)
-				{
+				if (wc_tx[i].status != IBV_WC_SUCCESS) {
 					NOTIFY_COMP_ERROR_SEND(wc_tx[i],totscnt,totccnt);
 					return_value = 1;
 					goto cleaning;
@@ -3346,10 +3653,8 @@ int run_iter_bi(struct pingpong_context *ctx,
 							user_param->tcompleted[totccnt-1] = get_cycles();
 					}
 
-					if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE)
-					{
-						if (user_param->report_per_port)
-						{
+					if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE) {
+						if (user_param->report_per_port) {
 							user_param->iters_per_port[user_param->port_by_qp[(int)wc[i].wr_id]] += user_param->cq_mod;
 						}
 						user_param->iters += user_param->cq_mod;
@@ -3365,13 +3670,14 @@ int run_iter_bi(struct pingpong_context *ctx,
 	}
 
 	if (user_param->noPeak == ON && user_param->test_type == ITERATIONS) {
-			user_param->tcompleted[0] = get_cycles();
+		user_param->tcompleted[0] = get_cycles();
 	}
 
 	if (ctx->send_rcredit) {
-		if (clean_scq_credit(tot_scredit, ctx, user_param))
+		if (clean_scq_credit(tot_scredit, ctx, user_param)) {
 			return_value = 1;
 			goto cleaning;
+		}
 	}
 
 cleaning:
@@ -3396,15 +3702,15 @@ int run_iter_lat_write(struct pingpong_context *ctx,struct perftest_parameters *
 	int 			poll_buf_offset = 0;
 	volatile char           *poll_buf = NULL;
 	volatile char           *post_buf = NULL;
-#if defined(HAVE_VERBS_EXP)
+	#ifdef HAVE_VERBS_EXP
 	struct ibv_exp_send_wr  *bad_exp_wr = NULL;
-#endif
+	#endif
 	struct ibv_send_wr      *bad_wr = NULL;
 	struct ibv_wc           wc;
 
 	int 			cpu_mhz = get_cpu_mhz(user_param->cpu_freq_f);
-        int 			total_gap_cycles = user_param->latency_gap * cpu_mhz;
-        cycles_t 		end_cycle, start_gap=0;
+	int 			total_gap_cycles = user_param->latency_gap * cpu_mhz;
+	cycles_t 		end_cycle, start_gap=0;
 
 	#ifdef HAVE_VERBS_EXP
 	if (user_param->use_exp == 1) {
@@ -3427,16 +3733,16 @@ int run_iter_lat_write(struct pingpong_context *ctx,struct perftest_parameters *
 	post_buf = (char*)ctx->buf + user_param->size - 1;
 	poll_buf = (char*)ctx->buf + (user_param->num_of_qps + poll_buf_offset)*BUFF_SIZE(ctx->size,ctx->cycle_buffer) + user_param->size - 1;
 
-	// Duration support in latency tests.
+	/* Duration support in latency tests. */
 	if (user_param->test_type == DURATION) {
 		duration_param=user_param;
 		duration_param->state = START_STATE;
 		signal(SIGALRM, catch_alarm);
 		user_param->iters = 0;
 		if (user_param->margin > 0)
-                        alarm(user_param->margin);
-                else
-                        catch_alarm(0);
+			alarm(user_param->margin);
+		else
+			catch_alarm(0);
 	}
 
 	/* Done with setup. Start the test. */
@@ -3462,18 +3768,18 @@ int run_iter_lat_write(struct pingpong_context *ctx,struct perftest_parameters *
 				user_param->tposted[scnt] = get_cycles();
 
 			*post_buf = (char)++scnt;
-		#if defined(HAVE_VERBS_EXP)
+			#ifdef HAVE_VERBS_EXP
 			if (user_param->use_exp == 1)
-        			err = (ctx->exp_post_send_func_pointer)(ctx->qp[0],&ctx->exp_wr[0],&bad_exp_wr);
+				err = (ctx->exp_post_send_func_pointer)(ctx->qp[0],&ctx->exp_wr[0],&bad_exp_wr);
 			else
 				err = (ctx->post_send_func_pointer)(ctx->qp[0],&ctx->wr[0],&bad_wr);
-        	#else
-        		err = ibv_post_send(ctx->qp[0],&ctx->wr[0],&bad_wr);
-        	#endif
+			#else
+			err = ibv_post_send(ctx->qp[0],&ctx->wr[0],&bad_wr);
+			#endif
 			if (err) {
-        			fprintf(stderr,"Couldn't post send: scnt=%lu\n",scnt);
-        			return 1;
-    			}
+				fprintf(stderr,"Couldn't post send: scnt=%lu\n",scnt);
+				return 1;
+			}
 		}
 
 		if (user_param->test_type == DURATION && user_param->state == END_STATE)
@@ -3485,8 +3791,7 @@ int run_iter_lat_write(struct pingpong_context *ctx,struct perftest_parameters *
 
 			if(ne > 0) {
 
-				if (wc.status != IBV_WC_SUCCESS)
-				{
+				if (wc.status != IBV_WC_SUCCESS) {
 					NOTIFY_COMP_ERROR_SEND(wc,scnt,ccnt);
 					return 1;
 				}
@@ -3512,9 +3817,9 @@ int run_iter_lat(struct pingpong_context *ctx,struct perftest_parameters *user_p
 	uint64_t	scnt = 0;
 	int 		ne;
 	int		err = 0;
-#if defined(HAVE_VERBS_EXP)
+	#ifdef HAVE_VERBS_EXP
 	struct 		ibv_exp_send_wr *bad_exp_wr = NULL;
-#endif
+	#endif
 	struct 		ibv_send_wr *bad_wr = NULL;
 	struct 		ibv_wc wc;
 
@@ -3533,8 +3838,8 @@ int run_iter_lat(struct pingpong_context *ctx,struct perftest_parameters *user_p
 	#ifdef HAVE_VERBS_EXP
 	}
 	#endif
-	
-	// Duration support in latency tests.
+
+	/* Duration support in latency tests. */
 	if (user_param->test_type == DURATION) {
 		duration_param=user_param;
 		duration_param->state = START_STATE;
@@ -3557,17 +3862,17 @@ int run_iter_lat(struct pingpong_context *ctx,struct perftest_parameters *user_p
 		if (user_param->test_type == ITERATIONS)
 			user_param->tposted[scnt++] = get_cycles();
 
-		#if defined(HAVE_VERBS_EXP)
+		#ifdef HAVE_VERBS_EXP
 		if (user_param->use_exp == 1)
-    			err = (ctx->exp_post_send_func_pointer)(ctx->qp[0],&ctx->exp_wr[0],&bad_exp_wr);
+			err = (ctx->exp_post_send_func_pointer)(ctx->qp[0],&ctx->exp_wr[0],&bad_exp_wr);
 		else
 			err = (ctx->post_send_func_pointer)(ctx->qp[0],&ctx->wr[0],&bad_wr);
-    	#else
-    		err = ibv_post_send(ctx->qp[0],&ctx->wr[0],&bad_wr);
-    	#endif
+		#else
+		err = ibv_post_send(ctx->qp[0],&ctx->wr[0],&bad_wr);
+		#endif
 		if (err) {
-    			fprintf(stderr,"Couldn't post send: scnt=%lu\n",scnt);
-	    		return 1;
+			fprintf(stderr,"Couldn't post send: scnt=%lu\n",scnt);
+			return 1;
 		}
 
 		if (user_param->test_type == DURATION && user_param->state == END_STATE)
@@ -3584,8 +3889,7 @@ int run_iter_lat(struct pingpong_context *ctx,struct perftest_parameters *user_p
 			ne = ibv_poll_cq(ctx->send_cq, 1, &wc);
 
 			if(ne > 0) {
-				if (wc.status != IBV_WC_SUCCESS) 
-				{
+				if (wc.status != IBV_WC_SUCCESS) {
 					NOTIFY_COMP_ERROR_SEND(wc,scnt,scnt);
 					return 1;
 				}
@@ -3599,6 +3903,7 @@ int run_iter_lat(struct pingpong_context *ctx,struct perftest_parameters *user_p
 
 		} while (!user_param->use_event && ne == 0);
 	}
+
 	return 0;
 }
 
@@ -3607,25 +3912,26 @@ int run_iter_lat(struct pingpong_context *ctx,struct perftest_parameters *user_p
  ******************************************************************************/
 int run_iter_lat_send(struct pingpong_context *ctx,struct perftest_parameters *user_param)
 {
-	uint64_t		scnt = 0; //sent packets counter
-	uint64_t		rcnt = 0; //received packets counter
+	uint64_t		scnt = 0; /* sent packets counter */
+	uint64_t		rcnt = 0; /* received packets counter */
 	int			poll = 0;
 	int			ne;
 	int			err = 0;
 	struct ibv_wc		wc;
 	struct ibv_recv_wr	*bad_wr_recv;
-#if defined(HAVE_VERBS_EXP)
+	#ifdef HAVE_VERBS_EXP
 	struct ibv_exp_send_wr	*bad_exp_wr;
-#endif
+	#endif
 	struct ibv_send_wr	*bad_wr;
 	int  			firstRx = 1;
-	int 			size_per_qp = (user_param->use_srq) ? user_param->rx_depth/user_param->num_of_qps : user_param->rx_depth;
+	int 			size_per_qp = (user_param->use_srq) ?
+					user_param->rx_depth/user_param->num_of_qps : user_param->rx_depth;
 	int 			cpu_mhz = get_cpu_mhz(user_param->cpu_freq_f);
 	int			total_gap_cycles = user_param->latency_gap * cpu_mhz;
 	cycles_t 		end_cycle, start_gap=0;
 
 	if (user_param->connection_type != RawEth) {
-		#if defined(HAVE_VERBS_EXP)
+		#ifdef HAVE_VERBS_EXP
 		if (user_param->use_exp == 1) {
 			ctx->exp_wr[0].sg_list->length = user_param->size;
 			ctx->exp_wr[0].exp_send_flags = 0;
@@ -3636,11 +3942,11 @@ int run_iter_lat_send(struct pingpong_context *ctx,struct perftest_parameters *u
 		#ifdef HAVE_VERBS_EXP
 		}
 		#endif
-		
+
 	}
 
 	if (user_param->size <= user_param->inline_size) {
-		#if defined(HAVE_VERBS_EXP)
+		#ifdef HAVE_VERBS_EXP
 		if (user_param->use_exp == 1)
 			ctx->exp_wr[0].exp_send_flags |= IBV_EXP_SEND_INLINE;
 		else
@@ -3677,8 +3983,7 @@ int run_iter_lat_send(struct pingpong_context *ctx,struct perftest_parameters *u
 						firstRx = 0;
 					}
 
-					if (wc.status != IBV_WC_SUCCESS)
-					{
+					if (wc.status != IBV_WC_SUCCESS) {
 						NOTIFY_COMP_ERROR_RECV(wc,rcnt);
 						return 1;
 					}
@@ -3687,7 +3992,10 @@ int run_iter_lat_send(struct pingpong_context *ctx,struct perftest_parameters *u
 					if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE)
 						user_param->iters++;
 
-					//if we're in duration mode or there is enough space in the rx_depth, post that you received a packet
+					/*if we're in duration mode or there
+					 * is enough space in the rx_depth,
+					 * post that you received a packet.
+					 */
 					if (user_param->test_type==DURATION || (rcnt + size_per_qp  <= user_param->iters)) {
 
 						if (user_param->use_srq) {
@@ -3705,6 +4013,9 @@ int run_iter_lat_send(struct pingpong_context *ctx,struct perftest_parameters *u
 							}
 						}
 					}
+				} else if (ne < 0) {
+					fprintf(stderr, "poll CQ failed %d\n", ne);
+					return 1;
 				}
 			} while (!user_param->use_event && ne == 0);
 		}
@@ -3726,31 +4037,31 @@ int run_iter_lat_send(struct pingpong_context *ctx,struct perftest_parameters *u
 
 			if (scnt % user_param->cq_mod == 0 || (user_param->test_type == ITERATIONS && scnt == user_param->iters)) {
 				poll = 1;
-			#if defined(HAVE_VERBS_EXP)
-			if (user_param->use_exp == 1)
-				ctx->exp_wr[0].exp_send_flags |= IBV_EXP_SEND_SIGNALED;
-			else
-			#endif
-				ctx->wr[0].send_flags |= IBV_SEND_SIGNALED;
+				#ifdef HAVE_VERBS_EXP
+				if (user_param->use_exp == 1)
+					ctx->exp_wr[0].exp_send_flags |= IBV_EXP_SEND_SIGNALED;
+				else
+				#endif
+					ctx->wr[0].send_flags |= IBV_SEND_SIGNALED;
 			}
 
-			//if we're in duration mode and the time is over, exit from this function
+			/* if we're in duration mode and the time is over, exit from this function */
 			if (user_param->test_type == DURATION && user_param->state == END_STATE)
 				break;
 
-			//send the packet that's in index 0 on the buffer
-		#if defined(HAVE_VERBS_EXP)
+			/* send the packet that's in index 0 on the buffer */
+			#ifdef HAVE_VERBS_EXP
 			if (user_param->use_exp == 1)
-        			err = (ctx->exp_post_send_func_pointer)(ctx->qp[0],&ctx->exp_wr[0],&bad_exp_wr);
+				err = (ctx->exp_post_send_func_pointer)(ctx->qp[0],&ctx->exp_wr[0],&bad_exp_wr);
 			else
 				err = (ctx->post_send_func_pointer)(ctx->qp[0],&ctx->wr[0],&bad_wr);
-        	#else
-        		err = ibv_post_send(ctx->qp[0],&ctx->wr[0],&bad_wr);
-        	#endif
+			#else
+			err = ibv_post_send(ctx->qp[0],&ctx->wr[0],&bad_wr);
+			#endif
 			if (err) {
-        			fprintf(stderr,"Couldn't post send: scnt=%lu \n",scnt);
-        			return 1;
-    			}
+				fprintf(stderr,"Couldn't post send: scnt=%lu \n",scnt);
+				return 1;
+			}
 
 			if (poll == 1) {
 
@@ -3764,7 +4075,7 @@ int run_iter_lat_send(struct pingpong_context *ctx,struct perftest_parameters *u
 					}
 				}
 
-				//wait until you get a cq for the last packet
+				/* wait until you get a cq for the last packet */
 				do {
 					s_ne = ibv_poll_cq(ctx->send_cq, 1, &s_wc);
 				} while (!user_param->use_event && s_ne == 0);
@@ -3776,14 +4087,13 @@ int run_iter_lat_send(struct pingpong_context *ctx,struct perftest_parameters *u
 					return FAILURE;
 				}
 
-				if (s_wc.status != IBV_WC_SUCCESS)
-				{
+				if (s_wc.status != IBV_WC_SUCCESS) {
 					NOTIFY_COMP_ERROR_SEND(s_wc,scnt,scnt)
-					return 1;
+						return 1;
 				}
 				poll = 0;
 
-				#if defined(HAVE_VERBS_EXP)
+				#ifdef HAVE_VERBS_EXP
 				if (user_param->use_exp == 1)
 					ctx->exp_wr[0].exp_send_flags &= ~IBV_EXP_SEND_SIGNALED;
 				else
@@ -3799,8 +4109,8 @@ int run_iter_lat_send(struct pingpong_context *ctx,struct perftest_parameters *u
 /******************************************************************************
  *
  ******************************************************************************/
-uint16_t ctx_get_local_lid(struct ibv_context *context,int port) {
-
+uint16_t ctx_get_local_lid(struct ibv_context *context,int port)
+{
 	struct ibv_port_attr attr;
 
 	if (ibv_query_port(context,port,&attr))
@@ -3812,7 +4122,8 @@ uint16_t ctx_get_local_lid(struct ibv_context *context,int port) {
 /******************************************************************************
  *
  ******************************************************************************/
-void catch_alarm(int sig) {
+void catch_alarm(int sig)
+{
 	switch (duration_param->state) {
 		case START_STATE:
 			duration_param->state = SAMPLE_STATE;
@@ -3838,20 +4149,21 @@ void catch_alarm(int sig) {
 	}
 }
 
-void check_alive(int sig) {
+void check_alive(int sig)
+{
 	if (check_alive_data.current_totrcnt > check_alive_data.last_totrcnt) {
 		check_alive_data.last_totrcnt = check_alive_data.current_totrcnt;
 		alarm(60);
 	} else if (check_alive_data.current_totrcnt == check_alive_data.last_totrcnt && check_alive_data.current_totrcnt < check_alive_data.g_total_iters) {
 		fprintf(stderr," Did not get Message for 120 Seconds, exiting..\n Total Received=%d, Total Iters Required=%d\n",check_alive_data.current_totrcnt, check_alive_data.g_total_iters);
 
-		if (check_alive_data.is_events)
-		{ // Can't report BW, as we are stuck in event_loop
+		if (check_alive_data.is_events) {
+			/* Can't report BW, as we are stuck in event_loop */
 			fprintf(stderr," Due to this issue, Perftest cannot produce a report when in event mode.\n");
 			exit(0);
 		}
-		else
-		{ // exit nice from run_iter function and report known bw/mr
+		else {
+			/* exit nice from run_iter function and report known bw/mr */
 			check_alive_data.to_exit = 1;
 		}
 	} 
@@ -3870,6 +4182,27 @@ void catch_alarm_infintely(int sig)
 }
 
 /******************************************************************************
+ *
+ ******************************************************************************/
+#ifdef HAVE_MASKED_ATOMICS
+int check_masked_atomics_support(struct pingpong_context *ctx)
+{
+	struct ibv_exp_device_attr attr;
+        memset(&attr,0,sizeof (struct ibv_exp_device_attr));
+
+	attr.comp_mask = IBV_EXP_DEVICE_ATTR_EXT_ATOMIC_ARGS | IBV_EXP_DEVICE_ATTR_EXP_CAP_FLAGS;
+	attr.exp_atomic_cap = IBV_EXP_ATOMIC_HCA_REPLY_BE;
+
+	if (ibv_exp_query_device(ctx->context, &attr)) {
+		fprintf(stderr, "ibv_exp_query_device failed\n");
+		return -1;
+	}
+
+	return MASK_IS_SET(IBV_EXP_ATOMIC_HCA_REPLY_BE, attr.exp_atomic_cap) &&
+		MASK_IS_SET(IBV_EXP_DEVICE_EXT_ATOMICS, attr.exp_device_cap_flags);
+}
+#endif
+/******************************************************************************
  * End
  ******************************************************************************/
 
diff --git a/src/perftest_resources.h b/src/perftest_resources.h
index 23f8ee3..1e47e34 100755
--- a/src/perftest_resources.h
+++ b/src/perftest_resources.h
@@ -51,7 +51,6 @@
 #ifndef PERFTEST_RESOURCES_H
 #define PERFTEST_RESOURCES_H
 
-// Files included for work.
 #include <infiniband/verbs.h>
 #include <rdma/rdma_cma.h>
 #include <stdint.h>
@@ -63,26 +62,24 @@
 #include <sys/socket.h>
 #include <netdb.h>
 #include <fcntl.h>
-
 #include "perftest_parameters.h"
 
 #define NUM_OF_RETRIES		(10)
 
-
-// Outstanding reads for "read" verb only.
-#define MAX_SEND_SGE        (1)
-#define MAX_RECV_SGE        (1)
-#define CTX_POLL_BATCH      (16)
-#define PL					(1)
-#define ATOMIC_ADD_VALUE    (1)
-#define ATOMIC_SWAP_VALUE   (0)
-
-// Space for GRH when we scatter the packet in UD.
-#define PINGPONG_SEND_WRID   (60)
-#define PINGPONG_RDMA_WRID	 (3)
-#define PINGPONG_READ_WRID	 (1)
-#define PINGPONG_ATOMIC_WRID (22)
-#define DEFF_QKEY            (0x11111111)
+/* Outstanding reads for "read" verb only. */
+#define MAX_SEND_SGE		(1)
+#define MAX_RECV_SGE		(1)
+#define CTX_POLL_BATCH		(16)
+#define PL			(1)
+#define ATOMIC_ADD_VALUE	(1)
+#define ATOMIC_SWAP_VALUE	(0)
+
+/* Space for GRH when we scatter the packet in UD. */
+#define PINGPONG_SEND_WRID	(60)
+#define PINGPONG_RDMA_WRID	(3)
+#define PINGPONG_READ_WRID	(1)
+#define PINGPONG_ATOMIC_WRID	(22)
+#define DEFF_QKEY		(0x11111111)
 
 #ifdef HAVE_XRCD
 #define SERVER_FD "/tmp/xrc_domain_server"
@@ -100,50 +97,47 @@
 	  fprintf(stderr," Failed status %d: wr_id %d syndrom 0x%x\n",wc.status,(int) wc.wr_id,wc.vendor_err);	\
 	  fprintf(stderr," rcnt=%lu\n",rcnt); }
 
-// Macro to determine packet size in case of UD.
-// The UD addition is for the GRH .
+/* Macro to determine packet size in case of UD. The UD addition is for the GRH . */
 #define SIZE(type,size,valid) ((type == UD && valid) ? (size + UD_ADDITION) : (size))
 
-// Macro to define the buffer size (according to "Nahalem" chip set).
-// for small message size (under 4K) , we allocate 4K buffer , and the RDMA write
-// verb will write in cycle on the buffer. this improves the BW in "Nahalem" systems.
+/* Macro to define the buffer size (according to "Nahalem" chip set).
+ * for small message size (under 4K) , we allocate 4K buffer , and the RDMA write
+ * verb will write in cycle on the buffer. this improves the BW in "Nahalem" systems.
+ */
 #define BUFF_SIZE(size,cycle_buffer) ((size < cycle_buffer) ? (cycle_buffer) : (size))
 
-// UD addition to the buffer.
+/* UD addition to the buffer. */
 #define IF_UD_ADD(type,cache_line_size) ((type == UD) ? (cache_line_size) : (0))
 
-// Macro that defines the adress where we write in RDMA.
-// If message size is smaller then CACHE_LINE size then we write in CACHE_LINE jumps.
+/* Macro that defines the adress where we write in RDMA.
+ * If message size is smaller then CACHE_LINE size then we write in CACHE_LINE jumps.
+ */
 #define INC(size,cache_line_size) ((size > cache_line_size) ? ((size%cache_line_size == 0) ?  \
 	       (size) : (cache_line_size*(size/cache_line_size+1))) : (cache_line_size))
 
 #define UD_MSG_2_EXP(size) ((log(size))/(log(2)))
 
+#define MASK_IS_SET(mask, attr)      (((mask)&(attr))!=0)
+
 /******************************************************************************
  * Perftest resources Structures and data types.
  ******************************************************************************/
 struct pingpong_context {
-	struct rdma_event_channel	*cm_channel;
+	struct rdma_event_channel		*cm_channel;
 	struct rdma_cm_id			*cm_id_control;
 	struct rdma_cm_id			*cm_id;
 	struct ibv_context			*context;
-	struct ibv_comp_channel		*channel;
+	struct ibv_comp_channel			*channel;
 	struct ibv_pd				*pd;
 	struct ibv_mr				*mr;
 	struct ibv_cq				*send_cq;
 	struct ibv_cq				*recv_cq;
-	void						*buf;
+	void					*buf;
 	struct ibv_ah				**ah;
 	struct ibv_qp				**qp;
-#if defined(HAVE_VERBS_EXP)
-	struct ibv_exp_dct			**dct;
-#endif
 	struct ibv_srq				*srq;
 	struct ibv_sge				*sge_list;
 	struct ibv_sge				*recv_sge_list;
-#if defined(HAVE_VERBS_EXP)
-	struct ibv_exp_send_wr			*exp_wr;
-#endif
 	struct ibv_send_wr			*wr;
 	struct ibv_recv_wr			*rwr;
 	uint64_t				size;
@@ -164,15 +158,24 @@ struct pingpong_context {
 	int                                     credit_cnt;
 	int					cache_line_size;
 	int					cycle_buffer;
-#ifdef HAVE_XRCD
+	#ifdef HAVE_XRCD
 	struct ibv_xrcd				*xrc_domain;
 	int 					fd;
-#endif
-#if defined(HAVE_VERBS_EXP) 
-        drv_exp_post_send_func exp_post_send_func_pointer;
-        drv_post_send_func post_send_func_pointer;
-	drv_poll_cq_func poll_cq_func_pointer;
-#endif
+	#endif
+	#if defined(HAVE_VERBS_EXP)
+        drv_exp_post_send_func			exp_post_send_func_pointer;
+        drv_post_send_func			post_send_func_pointer;
+	drv_poll_cq_func			poll_cq_func_pointer;
+	struct ibv_exp_dct			**dct;
+	struct ibv_exp_send_wr			*exp_wr;
+	#endif
+	#ifdef HAVE_ACCL_VERBS
+	struct ibv_exp_res_domain		*res_domain;
+	struct ibv_exp_cq_family		*send_cq_family;
+	struct ibv_exp_cq_family		*recv_cq_family;
+	struct ibv_exp_qp_burst_family		**qp_burst_family;
+	#endif
+
 };
 
  struct pingpong_dest {
@@ -188,7 +191,7 @@ struct pingpong_context {
  };
 
 /******************************************************************************
- * Perftest resources Methods and interface utilitizes.f
+ * Perftest resources Methods and interface utilitizes.
  ******************************************************************************/
 
 /* link_layer_str
@@ -591,7 +594,8 @@ uint16_t ctx_get_local_lid(struct ibv_context *context,int ib_port);
  *
  * Return Value : SUCCESS, FAILURE.
  */
-static __inline int ctx_notify_events(struct ibv_comp_channel *channel) {
+static __inline int ctx_notify_events(struct ibv_comp_channel *channel)
+{
 
 	struct ibv_cq       *ev_cq;
 	void                *ev_ctx;
@@ -643,8 +647,8 @@ void gen_udp_header(void* UDP_header_buffer,int* sPort ,int* dPort,uint32_t sadd
  */
 
 #if defined(HAVE_VERBS_EXP)
-static __inline void increase_exp_rem_addr(struct ibv_exp_send_wr *wr,int size,uint64_t scnt,uint64_t prim_addr,VerbType verb, int cache_line_size, int cycle_buffer) {
-
+static __inline void increase_exp_rem_addr(struct ibv_exp_send_wr *wr,int size,uint64_t scnt,uint64_t prim_addr,VerbType verb, int cache_line_size, int cycle_buffer)
+{
 	if (verb == ATOMIC)
 		wr->wr.atomic.remote_addr += INC(size,cache_line_size);
 
@@ -661,8 +665,8 @@ static __inline void increase_exp_rem_addr(struct ibv_exp_send_wr *wr,int size,u
 	}
 }
 #endif
-static __inline void increase_rem_addr(struct ibv_send_wr *wr,int size,uint64_t scnt,uint64_t prim_addr,VerbType verb, int cache_line_size, int cycle_buffer) {
-
+static __inline void increase_rem_addr(struct ibv_send_wr *wr,int size,uint64_t scnt,uint64_t prim_addr,VerbType verb, int cache_line_size, int cycle_buffer)
+{
 	if (verb == ATOMIC)
 		wr->wr.atomic.remote_addr += INC(size,cache_line_size);
 
@@ -693,8 +697,8 @@ static __inline void increase_rem_addr(struct ibv_send_wr *wr,int size,uint64_t
  *		prim_addr - The address of the original buffer.
  *		server_is_ud - Indication to weather we are in UD mode.
  */
-static __inline void increase_loc_addr(struct ibv_sge *sg,int size,uint64_t rcnt,uint64_t prim_addr,int server_is_ud, int cache_line_size, int cycle_buffer) {
-
+static __inline void increase_loc_addr(struct ibv_sge *sg,int size,uint64_t rcnt,uint64_t prim_addr,int server_is_ud, int cache_line_size, int cycle_buffer)
+{
 	sg->addr  += INC(size,cache_line_size);
 
 	if ( ((rcnt+1) % (cycle_buffer/ INC(size,cache_line_size))) == 0 )
@@ -745,10 +749,32 @@ int perform_warm_up(struct pingpong_context *ctx,struct perftest_parameters *use
 
 #ifdef HAVE_MASKED_ATOMICS
 struct ibv_qp* ctx_atomic_qp_create(struct pingpong_context *ctx,
-							 struct perftest_parameters *user_param);
+					struct perftest_parameters *user_param);
+int check_masked_atomics_support(struct pingpong_context *ctx);
 #endif
-/******************************************************************************
- *
- ******************************************************************************/
+
+#ifdef HAVE_ACCL_VERBS
+struct ibv_exp_res_domain* create_res_domain(struct pingpong_context *ctx,
+						struct perftest_parameters *user_param);
+#endif
+
+int create_reg_qp_main(struct pingpong_context *ctx,
+		struct perftest_parameters *user_param, int i, int num_of_qps);
+
+#ifdef HAVE_VERBS_EXP
+int create_exp_qp_main(struct pingpong_context *ctx,
+		struct perftest_parameters *user_param, int i, int num_of_qps);
+#endif
+
+int create_qp_main(struct pingpong_context *ctx,
+		struct perftest_parameters *user_param, int i, int num_of_qps);
+
+#ifdef HAVE_VERBS_EXP
+struct ibv_qp* ctx_exp_qp_create(struct pingpong_context *ctx,
+		struct perftest_parameters *user_param, int qp_index);
+#endif
+
+int modify_qp_to_init(struct pingpong_context *ctx,
+                struct perftest_parameters *user_param, int qp_index, int num_of_qps);
 
 #endif /* PERFTEST_RESOURCES_H */
diff --git a/src/raw_ethernet_resources.c b/src/raw_ethernet_resources.c
index 18c9776..4b37e46 100755
--- a/src/raw_ethernet_resources.c
+++ b/src/raw_ethernet_resources.c
@@ -49,11 +49,12 @@
 
 struct perftest_parameters* duration_param;
 
-int check_flow_steering_support() {
+int check_flow_steering_support()
+{
 	char* file_name = "/sys/module/mlx4_core/parameters/log_num_mgm_entry_size";
 	FILE *fp;
 	char line[4];
-	fp = fopen(file_name, "r");      //open file , read only
+	fp = fopen(file_name, "r");
 	fgets(line,4,fp);
 	int val = atoi(line);
 
@@ -75,11 +76,11 @@ int check_flow_steering_support() {
  ******************************************************************************/
 static void mac_from_gid(uint8_t   *mac, uint8_t *gid, uint32_t port)
 {
-    memcpy(mac, gid + 8, 3);
-    memcpy(mac + 3, gid + 13, 3);
-    if(port==1) {
-	mac[0] ^= 2;
-    }
+	memcpy(mac, gid + 8, 3);
+	memcpy(mac + 3, gid + 13, 3);
+	if(port==1) {
+		mac[0] ^= 2;
+	}
 }
 
 /******************************************************************************
@@ -87,7 +88,7 @@ static void mac_from_gid(uint8_t   *mac, uint8_t *gid, uint32_t port)
  ******************************************************************************/
 static void mac_from_user(uint8_t   *mac, uint8_t *gid,int size )
 {
-    memcpy(mac,gid,size);
+	memcpy(mac,gid,size);
 }
 
 /******************************************************************************
@@ -95,20 +96,20 @@ static void mac_from_user(uint8_t   *mac, uint8_t *gid,int size )
  ******************************************************************************/
 static uint16_t ip_checksum	(void * buf,size_t 	  hdr_len)
 {
-       unsigned long sum = 0;
-       const uint16_t *ip1;
-        ip1 = buf;
-        while (hdr_len > 1)
-        {
-                 sum += *ip1++;
-                if (sum & 0x80000000)
-                         sum = (sum & 0xFFFF) + (sum >> 16);
-                 hdr_len -= 2;
-        }
-        while (sum >> 16)
-                sum = (sum & 0xFFFF) + (sum >> 16);
-        return(~sum);
- }
+	unsigned long sum = 0;
+	const uint16_t *ip1;
+	ip1 = buf;
+	while (hdr_len > 1) {
+		sum += *ip1++;
+		if (sum & 0x80000000)
+			sum = (sum & 0xFFFF) + (sum >> 16);
+		hdr_len -= 2;
+	}
+	while (sum >> 16)
+		sum = (sum & 0xFFFF) + (sum >> 16);
+
+	return(~sum);
+}
 
 /******************************************************************************
  *
@@ -137,8 +138,8 @@ void gen_ip_header(void* ip_header_buffer,uint32_t* saddr ,uint32_t* daddr , uin
 /******************************************************************************
  *
  ******************************************************************************/
-void gen_udp_header(void* UDP_header_buffer,int* sPort ,int* dPort,uint32_t saddr,uint32_t daddr,int sizePkt) {
-
+void gen_udp_header(void* UDP_header_buffer,int* sPort ,int* dPort,uint32_t saddr,uint32_t daddr,int sizePkt)
+{
 	struct UDP_header udp_header;
 
 	memset(&udp_header,0,sizeof(struct UDP_header));
@@ -153,30 +154,26 @@ void gen_udp_header(void* UDP_header_buffer,int* sPort ,int* dPort,uint32_t sadd
 
 }
 /******************************************************************************
-*
-******************************************************************************/
-void gen_tcp_header(void* TCP_header_buffer,int* sPort ,int* dPort) {
-
-       struct TCP_header tcp_header;
+ *
+ ******************************************************************************/
+void gen_tcp_header(void* TCP_header_buffer,int* sPort ,int* dPort)
+{
+	struct TCP_header tcp_header;
 
-       memset(&tcp_header,0,sizeof(struct TCP_header));
+	memset(&tcp_header,0,sizeof(struct TCP_header));
 
-       tcp_header.th_sport = htons(*sPort);
-       tcp_header.th_dport = htons(*dPort);
-       tcp_header.th_doff = 5;
-       tcp_header.th_window = htons(8192);
-       memcpy(TCP_header_buffer, &tcp_header, sizeof(struct TCP_header));
+	tcp_header.th_sport = htons(*sPort);
+	tcp_header.th_dport = htons(*dPort);
+	tcp_header.th_doff = 5;
+	tcp_header.th_window = htons(8192);
+	memcpy(TCP_header_buffer, &tcp_header, sizeof(struct TCP_header));
 }
 
-/******************************************************************************
-*
-******************************************************************************/
-
 /*****************************************************************************
-* generates a new ethernet header
-*****************************************************************************/
+ * generates a new ethernet header
+ *****************************************************************************/
 void gen_eth_header(struct ETH_header* eth_header,uint8_t* src_mac,
-											uint8_t* dst_mac, uint16_t eth_type)
+		uint8_t* dst_mac, uint16_t eth_type)
 {
 	memcpy(eth_header->src_mac, src_mac, 6);
 	memcpy(eth_header->dst_mac, dst_mac, 6);
@@ -187,7 +184,6 @@ void gen_eth_header(struct ETH_header* eth_header,uint8_t* src_mac,
 /******************************************************************************
  * print test specification
  ******************************************************************************/
-
 #ifdef HAVE_RAW_ETH_EXP
 void print_spec(struct ibv_exp_flow_attr* flow_rules,struct perftest_parameters* user_param)
 {
@@ -195,77 +191,76 @@ void print_spec(struct ibv_exp_flow_attr* flow_rules,struct perftest_parameters*
 #else
 void print_spec(struct ibv_flow_attr* flow_rules,struct perftest_parameters* user_param)
 {
-        struct ibv_flow_spec* spec_info = NULL;
+		struct ibv_flow_spec* spec_info = NULL;
 #endif
-	void* header_buff = (void*)flow_rules;
+		void* header_buff = (void*)flow_rules;
 
-	if (user_param->output != FULL_VERBOSITY)
-	{
-		return;
-	}
+		if (user_param->output != FULL_VERBOSITY) {
+			return;
+		}
 
-	if (flow_rules == NULL) {
-		printf("error : spec is NULL\n");
-		return;
-	}
+		if (flow_rules == NULL) {
+			printf("error : spec is NULL\n");
+			return;
+		}
 
-#ifdef HAVE_RAW_ETH_EXP
-	header_buff = header_buff + sizeof(struct ibv_exp_flow_attr);
-	spec_info = (struct ibv_exp_flow_spec*)header_buff;
-#else
-        header_buff = header_buff + sizeof(struct ibv_flow_attr);
-        spec_info = (struct ibv_flow_spec*)header_buff;
-#endif
-	printf("MAC attached  : %02X:%02X:%02X:%02X:%02X:%02X\n",
-			spec_info->eth.val.dst_mac[0],
-			spec_info->eth.val.dst_mac[1],
-			spec_info->eth.val.dst_mac[2],
-			spec_info->eth.val.dst_mac[3],
-			spec_info->eth.val.dst_mac[4],
-			spec_info->eth.val.dst_mac[5]);
-
-	if (user_param->is_server_ip && user_param->is_client_ip) {
-		char str_ip_s[INET_ADDRSTRLEN] = {0};
-		char str_ip_d[INET_ADDRSTRLEN] = {0};
-#ifdef HAVE_RAW_ETH_EXP
-		header_buff = header_buff + sizeof(struct ibv_exp_flow_spec_eth);
+		#ifdef HAVE_RAW_ETH_EXP
+		header_buff = header_buff + sizeof(struct ibv_exp_flow_attr);
 		spec_info = (struct ibv_exp_flow_spec*)header_buff;
-#else
-                header_buff = header_buff + sizeof(struct ibv_flow_spec_eth);
-                spec_info = (struct ibv_flow_spec*)header_buff;
-#endif
-		uint32_t dst_ip = spec_info->ipv4.val.dst_ip;
-		uint32_t src_ip = spec_info->ipv4.val.src_ip;
-		inet_ntop(AF_INET, &dst_ip, str_ip_d, INET_ADDRSTRLEN);
-		printf("spec_info - dst_ip   : %s\n",str_ip_d);
-		inet_ntop(AF_INET, &src_ip, str_ip_s, INET_ADDRSTRLEN);
-		printf("spec_info - src_ip   : %s\n",str_ip_s);
-	}
+		#else
+		header_buff = header_buff + sizeof(struct ibv_flow_attr);
+		spec_info = (struct ibv_flow_spec*)header_buff;
+		#endif
+		printf("MAC attached  : %02X:%02X:%02X:%02X:%02X:%02X\n",
+				spec_info->eth.val.dst_mac[0],
+				spec_info->eth.val.dst_mac[1],
+				spec_info->eth.val.dst_mac[2],
+				spec_info->eth.val.dst_mac[3],
+				spec_info->eth.val.dst_mac[4],
+				spec_info->eth.val.dst_mac[5]);
+
+		if (user_param->is_server_ip && user_param->is_client_ip) {
+			char str_ip_s[INET_ADDRSTRLEN] = {0};
+			char str_ip_d[INET_ADDRSTRLEN] = {0};
+			#ifdef HAVE_RAW_ETH_EXP
+			header_buff = header_buff + sizeof(struct ibv_exp_flow_spec_eth);
+			spec_info = (struct ibv_exp_flow_spec*)header_buff;
+			#else
+			header_buff = header_buff + sizeof(struct ibv_flow_spec_eth);
+			spec_info = (struct ibv_flow_spec*)header_buff;
+			#endif
+			uint32_t dst_ip = spec_info->ipv4.val.dst_ip;
+			uint32_t src_ip = spec_info->ipv4.val.src_ip;
+			inet_ntop(AF_INET, &dst_ip, str_ip_d, INET_ADDRSTRLEN);
+			printf("spec_info - dst_ip   : %s\n",str_ip_d);
+			inet_ntop(AF_INET, &src_ip, str_ip_s, INET_ADDRSTRLEN);
+			printf("spec_info - src_ip   : %s\n",str_ip_s);
+		}
+
+		if (user_param->is_server_port && user_param->is_client_port) {
+			#ifdef HAVE_RAW_ETH_EXP
+			header_buff = header_buff + sizeof(struct ibv_exp_flow_spec_ipv4);
+			spec_info = (struct ibv_exp_flow_spec*)header_buff;
+			#else
+			header_buff = header_buff + sizeof(struct ibv_flow_spec_ipv4);
+			spec_info = (struct ibv_flow_spec*)header_buff;
+			#endif
+			printf("spec_info - dst_port : %d\n",ntohs(spec_info->tcp_udp.val.dst_port));
+			printf("spec_info - src_port : %d\n",ntohs(spec_info->tcp_udp.val.src_port));
+		}
 
-	if (user_param->is_server_port && user_param->is_client_port) {
-#ifdef HAVE_RAW_ETH_EXP
-		header_buff = header_buff + sizeof(struct ibv_exp_flow_spec_ipv4);
-		spec_info = (struct ibv_exp_flow_spec*)header_buff;
-#else
-		header_buff = header_buff + sizeof(struct ibv_flow_spec_ipv4);
-                spec_info = (struct ibv_flow_spec*)header_buff;
-#endif
-		printf("spec_info - dst_port : %d\n",ntohs(spec_info->tcp_udp.val.dst_port));
-		printf("spec_info - src_port : %d\n",ntohs(spec_info->tcp_udp.val.src_port));
 	}
 
-}
 /******************************************************************************
  *
  ******************************************************************************/
 void print_ethernet_header(struct ETH_header* p_ethernet_header)
 {
-
-	if (NULL == p_ethernet_header)
-	{
+	if (NULL == p_ethernet_header) {
 		fprintf(stderr, "ETH_header pointer is Null\n");
 		return;
 	}
+
 	printf("**raw ethernet header****************************************\n\n");
 	printf("--------------------------------------------------------------\n");
 	printf("| Dest MAC         | Src MAC          | Packet Type          |\n");
@@ -297,70 +292,69 @@ void print_ethernet_header(struct ETH_header* p_ethernet_header)
  ******************************************************************************/
 void print_ip_header(struct IP_V4_header* ip_header)
 {
-		char str_ip_s[INET_ADDRSTRLEN];
-		char str_ip_d[INET_ADDRSTRLEN];
-		if (NULL == ip_header)
-		{
-			fprintf(stderr, "IP_V4_header pointer is Null\n");
-			return;
-		}
+	char str_ip_s[INET_ADDRSTRLEN];
+	char str_ip_d[INET_ADDRSTRLEN];
+	if (NULL == ip_header) {
+		fprintf(stderr, "IP_V4_header pointer is Null\n");
+		return;
+	}
 
-		printf("**IP header**************\n");
-		printf("|-----------------------|\n");
-		printf("|Version   |%-12d|\n",ip_header->version);
-		printf("|Ihl       |%-12d|\n",ip_header->ihl);
-		printf("|TOS       |%-12d|\n",ip_header->tos);
-		printf("|TOT LEN   |%-12d|\n",ntohs(ip_header->tot_len));
-		printf("|ID        |%-12d|\n",ntohs(ip_header->id));
-		printf("|Frag      |%-12d|\n",ntohs(ip_header->frag_off));
-		printf("|TTL       |%-12d|\n",ip_header->ttl);
-		if (ip_header->protocol)
-            printf("|protocol  |%-12s|\n",ip_header->protocol == UDP_PROTOCOL ? "UDP" : "TCP");
-        else
-            printf("|protocol  |%-12s|\n","EMPTY");
-		printf("|Check sum |%-12X|\n",ntohs(ip_header->check));
-		inet_ntop(AF_INET, &ip_header->saddr, str_ip_s, INET_ADDRSTRLEN);
-		printf("|Source IP |%-12s|\n",str_ip_s);
-		inet_ntop(AF_INET, &ip_header->daddr, str_ip_d, INET_ADDRSTRLEN);
-		printf("|Dest IP   |%-12s|\n",str_ip_d);
-		printf("|-----------------------|\n\n");
+	printf("**IP header**************\n");
+	printf("|-----------------------|\n");
+	printf("|Version   |%-12d|\n",ip_header->version);
+	printf("|Ihl       |%-12d|\n",ip_header->ihl);
+	printf("|TOS       |%-12d|\n",ip_header->tos);
+	printf("|TOT LEN   |%-12d|\n",ntohs(ip_header->tot_len));
+	printf("|ID        |%-12d|\n",ntohs(ip_header->id));
+	printf("|Frag      |%-12d|\n",ntohs(ip_header->frag_off));
+	printf("|TTL       |%-12d|\n",ip_header->ttl);
+
+	if (ip_header->protocol)
+		printf("|protocol  |%-12s|\n",ip_header->protocol == UDP_PROTOCOL ? "UDP" : "TCP");
+	else
+		printf("|protocol  |%-12s|\n","EMPTY");
+	printf("|Check sum |%-12X|\n",ntohs(ip_header->check));
+	inet_ntop(AF_INET, &ip_header->saddr, str_ip_s, INET_ADDRSTRLEN);
+	printf("|Source IP |%-12s|\n",str_ip_s);
+	inet_ntop(AF_INET, &ip_header->daddr, str_ip_d, INET_ADDRSTRLEN);
+	printf("|Dest IP   |%-12s|\n",str_ip_d);
+	printf("|-----------------------|\n\n");
 }
+
 /******************************************************************************
  *
  ******************************************************************************/
 void print_udp_header(struct UDP_header* udp_header)
 {
-		if(NULL == udp_header)
-		{
-			fprintf(stderr, "udp_header pointer is Null\n");
-			return;
-		}
-		printf("**UDP header***********\n");
-		printf("|---------------------|\n");
-		printf("|Src  Port |%-10d|\n",ntohs(udp_header->uh_sport));
-		printf("|Dest Port |%-10d|\n",ntohs(udp_header->uh_dport));
-		printf("|Len       |%-10d|\n",ntohs(udp_header->uh_ulen));
-		printf("|check sum |%-10d|\n",ntohs(udp_header->uh_sum));
-		printf("|---------------------|\n");
+	if(NULL == udp_header) {
+		fprintf(stderr, "udp_header pointer is Null\n");
+		return;
+	}
+	printf("**UDP header***********\n");
+	printf("|---------------------|\n");
+	printf("|Src  Port |%-10d|\n",ntohs(udp_header->uh_sport));
+	printf("|Dest Port |%-10d|\n",ntohs(udp_header->uh_dport));
+	printf("|Len       |%-10d|\n",ntohs(udp_header->uh_ulen));
+	printf("|check sum |%-10d|\n",ntohs(udp_header->uh_sum));
+	printf("|---------------------|\n");
 }
-/******************************************************************************
-*
-******************************************************************************/
 
+/******************************************************************************
+ *
+ ******************************************************************************/
 void print_tcp_header(struct TCP_header* tcp_header)
 {
-   if(NULL == tcp_header)
-   {
-		   fprintf(stderr, "tcp_header pointer is Null\n");
-		   return;
-   }
-   printf("**TCP header***********\n");
-   printf("|---------------------|\n");
-   printf("|Src  Port |%-10d|\n",ntohs(tcp_header->th_sport));
-   printf("|Dest Port |%-10d|\n",ntohs(tcp_header->th_dport));
-   printf("|offset    |%-10d|\n",tcp_header->th_doff);
-   printf("|window    |%-10d|\n",ntohs(tcp_header->th_window));
-   printf("|---------------------|\n");
+	if(NULL == tcp_header) {
+		fprintf(stderr, "tcp_header pointer is Null\n");
+		return;
+	}
+	printf("**TCP header***********\n");
+	printf("|---------------------|\n");
+	printf("|Src  Port |%-10d|\n",ntohs(tcp_header->th_sport));
+	printf("|Dest Port |%-10d|\n",ntohs(tcp_header->th_dport));
+	printf("|offset    |%-10d|\n",tcp_header->th_doff);
+	printf("|window    |%-10d|\n",ntohs(tcp_header->th_window));
+	printf("|---------------------|\n");
 }
 
 /******************************************************************************
@@ -371,27 +365,24 @@ void print_pkt(void* pkt,struct perftest_parameters *user_param)
 {
 
 	if (user_param->output != FULL_VERBOSITY)
-	{
 		return;
-	}
 
-	if(NULL == pkt)
-	{
+	if(NULL == pkt) {
 		printf("pkt is null:error happened can't print packet\n");
 		return;
 	}
+
 	print_ethernet_header((struct ETH_header*)pkt);
-	if(user_param->is_client_ip || user_param->is_server_ip)
-	{
+	if(user_param->is_client_ip || user_param->is_server_ip) {
 		pkt = (void*)pkt + sizeof(struct ETH_header);
 		print_ip_header((struct IP_V4_header*)pkt);
 	}
-	if(user_param->is_client_port && user_param->is_server_port)
-	{
+
+	if(user_param->is_client_port && user_param->is_server_port) {
 		pkt = pkt + sizeof(struct IP_V4_header);
 		if (user_param->tcp)
 			print_tcp_header((struct TCP_header*)pkt);
-	    else
+		else
 			print_udp_header((struct UDP_header*)pkt);
 	}
 }
@@ -399,69 +390,67 @@ void print_pkt(void* pkt,struct perftest_parameters *user_param)
  *build single packet on ctx buffer
  ******************************************************************************/
 void build_pkt_on_buffer(struct ETH_header* eth_header,
-						 struct raw_ethernet_info *my_dest_info,
-						 struct raw_ethernet_info *rem_dest_info,
-						 struct perftest_parameters *user_param,
-						 uint16_t eth_type,
-						 uint16_t ip_next_protocol,
-						 int print_flag,
-						 int sizePkt)
+		struct raw_ethernet_info *my_dest_info,
+		struct raw_ethernet_info *rem_dest_info,
+		struct perftest_parameters *user_param,
+		uint16_t eth_type,
+		uint16_t ip_next_protocol,
+		int print_flag,
+		int sizePkt)
 {
 	void* header_buff = NULL;
 	gen_eth_header(eth_header,my_dest_info->mac,rem_dest_info->mac,eth_type);
-	if(user_param->is_client_ip || user_param->is_server_ip)
-	{
+	if(user_param->is_client_ip || user_param->is_server_ip) {
 		header_buff = (void*)eth_header + sizeof(struct ETH_header);
 		gen_ip_header(header_buff,&my_dest_info->ip,&rem_dest_info->ip,ip_next_protocol,sizePkt, user_param->tos);
 	}
-	if(user_param->is_client_port && user_param->is_server_port)
-	{
+	if(user_param->is_client_port && user_param->is_server_port) {
 		header_buff = header_buff + sizeof(struct IP_V4_header);
 		if (user_param->tcp)
 			gen_tcp_header(header_buff,&my_dest_info->port,&rem_dest_info->port);
-	    else
+		else
 			gen_udp_header(header_buff,&my_dest_info->port,&rem_dest_info->port,my_dest_info->ip,rem_dest_info->ip,sizePkt);
 
 	}
 
-	if(print_flag == PRINT_ON)
-	{
+	if(print_flag == PRINT_ON) {
 		print_pkt((void*)eth_header,user_param);
 	}
 }
+
 /******************************************************************************
  *create_raw_eth_pkt - build raw Ethernet packet by user arguments
  *on bw test, build one packet and duplicate it on the buffer
  *on lat test, build only one packet on the buffer (for the ping pong method)
  ******************************************************************************/
 void create_raw_eth_pkt( struct perftest_parameters *user_param,
-						 struct pingpong_context 	*ctx ,
-						 struct raw_ethernet_info	*my_dest_info,
-						 struct raw_ethernet_info	*rem_dest_info)
+		struct pingpong_context 	*ctx ,
+		struct raw_ethernet_info	*my_dest_info,
+		struct raw_ethernet_info	*rem_dest_info)
 {
 	int offset = 0;
 	struct ETH_header* eth_header;
 	uint16_t ip_next_protocol = 0;
-    uint16_t eth_type = (user_param->is_client_ip || user_param->is_server_ip ? IP_ETHER_TYPE : (ctx->size-RAWETH_ADDITION));
-    if(user_param->is_client_port && user_param->is_server_port)
+	uint16_t eth_type = (user_param->is_client_ip || user_param->is_server_ip ? IP_ETHER_TYPE : (ctx->size-RAWETH_ADDITION));
+	if(user_param->is_client_port && user_param->is_server_port)
 		ip_next_protocol = (user_param->tcp ? TCP_PROTOCOL : UDP_PROTOCOL);
 
-    DEBUG_LOG(TRACE,">>>>>>%s",__FUNCTION__);
+	DEBUG_LOG(TRACE,">>>>>>%s",__FUNCTION__);
 
-    eth_header = (void*)ctx->buf;
+	eth_header = (void*)ctx->buf;
 
-    //build single packet on ctx buffer
+	/* build single packet on ctx buffer */
 	build_pkt_on_buffer(eth_header,my_dest_info,rem_dest_info,user_param,eth_type,ip_next_protocol,PRINT_ON,ctx->size-RAWETH_ADDITION);
 
 	if (user_param->tst == BW) {
-		//fill ctx buffer with same packets
+		/* fill ctx buffer with same packets */
 		if (ctx->size <= (ctx->cycle_buffer / 2)) {
 			while (offset < ctx->cycle_buffer-INC(ctx->size,ctx->cache_line_size)) {
 				offset += INC(ctx->size,ctx->cache_line_size);
 				eth_header = (void*)ctx->buf+offset;
 				build_pkt_on_buffer(eth_header,my_dest_info,rem_dest_info,
-										user_param,eth_type,ip_next_protocol,
-											PRINT_OFF,ctx->size-RAWETH_ADDITION);
+						user_param,eth_type,ip_next_protocol,
+						PRINT_OFF,ctx->size-RAWETH_ADDITION);
 			}
 		}
 	}
@@ -470,41 +459,42 @@ void create_raw_eth_pkt( struct perftest_parameters *user_param,
 }
 
 /******************************************************************************
- calc_flow_rules_size
+  calc_flow_rules_size
  ******************************************************************************/
 int calc_flow_rules_size(int is_ip_header,int is_udp_header)
 {
-#ifdef HAVE_RAW_ETH_EXP
+	#ifdef HAVE_RAW_ETH_EXP
 	int tot_size = sizeof(struct ibv_exp_flow_attr);
 	tot_size += sizeof(struct ibv_exp_flow_spec_eth);
 	if (is_ip_header)
 		tot_size += sizeof(struct ibv_exp_flow_spec_ipv4);
 	if (is_udp_header)
 		tot_size += sizeof(struct ibv_exp_flow_spec_tcp_udp);
-#else
-        int tot_size = sizeof(struct ibv_flow_attr);
-        tot_size += sizeof(struct ibv_flow_spec_eth);
-        if (is_ip_header)
-                tot_size += sizeof(struct ibv_flow_spec_ipv4);
-        if (is_udp_header)
-                tot_size += sizeof(struct ibv_flow_spec_tcp_udp);
-#endif
+	#else
+	int tot_size = sizeof(struct ibv_flow_attr);
+	tot_size += sizeof(struct ibv_flow_spec_eth);
+	if (is_ip_header)
+		tot_size += sizeof(struct ibv_flow_spec_ipv4);
+	if (is_udp_header)
+		tot_size += sizeof(struct ibv_flow_spec_tcp_udp);
+	#endif
+
 	return tot_size;
 }
 
 /******************************************************************************
  *send_set_up_connection - init raw_ethernet_info and ibv_flow_spec to user args
  ******************************************************************************/
- int send_set_up_connection(
-#ifdef HAVE_RAW_ETH_EXP
-	struct ibv_exp_flow_attr **flow_rules,
-#else
-	struct ibv_flow_attr **flow_rules,
-#endif
-	struct pingpong_context *ctx,
-	struct perftest_parameters *user_param,
-	struct raw_ethernet_info* my_dest_info,
-	struct raw_ethernet_info* rem_dest_info)
+int send_set_up_connection(
+		#ifdef HAVE_RAW_ETH_EXP
+		struct ibv_exp_flow_attr **flow_rules,
+		#else
+		struct ibv_flow_attr **flow_rules,
+		#endif
+		struct pingpong_context *ctx,
+		struct perftest_parameters *user_param,
+		struct raw_ethernet_info* my_dest_info,
+		struct raw_ethernet_info* rem_dest_info)
 {
 
 	union ibv_gid temp_gid;
@@ -518,16 +508,16 @@ int calc_flow_rules_size(int is_ip_header,int is_udp_header)
 
 	if (user_param->machine == SERVER || user_param->duplex) {
 
-		void* header_buff;
-#ifdef HAVE_RAW_ETH_EXP
+		#ifdef HAVE_RAW_ETH_EXP
 		struct ibv_exp_flow_spec* spec_info;
 		struct ibv_exp_flow_attr* attr_info;
-#else
-                struct ibv_flow_spec* spec_info;
-                struct ibv_flow_attr* attr_info;
-#endif
-		int flow_rules_size;
+		#else
+		struct ibv_flow_spec* spec_info;
+		struct ibv_flow_attr* attr_info;
+		#endif
 
+		void* header_buff;
+		int flow_rules_size;
 		int is_ip = user_param->is_server_ip || user_param->is_client_ip;
 		int is_port = user_param->is_server_port || user_param->is_client_port;
 
@@ -536,31 +526,35 @@ int calc_flow_rules_size(int is_ip_header,int is_udp_header)
 		ALLOCATE(header_buff,uint8_t,flow_rules_size);
 
 		memset(header_buff, 0,flow_rules_size);
-	#ifdef HAVE_RAW_ETH_EXP
+
+		#ifdef HAVE_RAW_ETH_EXP
 		*flow_rules = (struct ibv_exp_flow_attr*)header_buff;
 		attr_info = (struct ibv_exp_flow_attr*)header_buff;
-	#else
-                *flow_rules = (struct ibv_flow_attr*)header_buff;
-                attr_info = (struct ibv_flow_attr*)header_buff;
-	#endif
+		#else
+		*flow_rules = (struct ibv_flow_attr*)header_buff;
+		attr_info = (struct ibv_flow_attr*)header_buff;
+		#endif
+
 		attr_info->size = flow_rules_size;
 		attr_info->priority = 0;
 		attr_info->num_of_specs = 1 + is_ip + is_port;
 		attr_info->port = user_param->ib_port;
 		attr_info->flags = 0;
-	#ifdef HAVE_RAW_ETH_EXP
+
+		#ifdef HAVE_RAW_ETH_EXP
 		attr_info->type = IBV_EXP_FLOW_ATTR_NORMAL;
 		header_buff = header_buff + sizeof(struct ibv_exp_flow_attr);
 		spec_info = (struct ibv_exp_flow_spec*)header_buff;
 		spec_info->eth.type = IBV_EXP_FLOW_SPEC_ETH;
 		spec_info->eth.size = sizeof(struct ibv_exp_flow_spec_eth);
-	#else
-                attr_info->type = IBV_FLOW_ATTR_NORMAL;
-                header_buff = header_buff + sizeof(struct ibv_flow_attr);
-                spec_info = (struct ibv_flow_spec*)header_buff;
-                spec_info->eth.type = IBV_FLOW_SPEC_ETH;
-                spec_info->eth.size = sizeof(struct ibv_flow_spec_eth);
-	#endif
+		#else
+		attr_info->type = IBV_FLOW_ATTR_NORMAL;
+		header_buff = header_buff + sizeof(struct ibv_flow_attr);
+		spec_info = (struct ibv_flow_spec*)header_buff;
+		spec_info->eth.type = IBV_FLOW_SPEC_ETH;
+		spec_info->eth.size = sizeof(struct ibv_flow_spec_eth);
+		#endif
+
 		spec_info->eth.val.ether_type = 0;
 
 		if(user_param->is_source_mac) {
@@ -571,17 +565,18 @@ int calc_flow_rules_size(int is_ip_header,int is_udp_header)
 
 		memset(spec_info->eth.mask.dst_mac, 0xFF,sizeof(spec_info->eth.mask.src_mac));
 		if(user_param->is_server_ip || user_param->is_client_ip) {
-		#ifdef HAVE_RAW_ETH_EXP
+			#ifdef HAVE_RAW_ETH_EXP
 			header_buff = header_buff + sizeof(struct ibv_exp_flow_spec_eth);
 			spec_info = (struct ibv_exp_flow_spec*)header_buff;
 			spec_info->ipv4.type = IBV_EXP_FLOW_SPEC_IPV4;
 			spec_info->ipv4.size = sizeof(struct ibv_exp_flow_spec_ipv4);
-		#else
-                        header_buff = header_buff + sizeof(struct ibv_flow_spec_eth);
-                        spec_info = (struct ibv_flow_spec*)header_buff;
-                        spec_info->ipv4.type = IBV_FLOW_SPEC_IPV4;
-                        spec_info->ipv4.size = sizeof(struct ibv_flow_spec_ipv4);
-		#endif
+			#else
+			header_buff = header_buff + sizeof(struct ibv_flow_spec_eth);
+			spec_info = (struct ibv_flow_spec*)header_buff;
+			spec_info->ipv4.type = IBV_FLOW_SPEC_IPV4;
+			spec_info->ipv4.size = sizeof(struct ibv_flow_spec_ipv4);
+			#endif
+
 			if(user_param->machine == SERVER) {
 
 				spec_info->ipv4.val.dst_ip = user_param->server_ip;
@@ -598,17 +593,17 @@ int calc_flow_rules_size(int is_ip_header,int is_udp_header)
 		}
 
 		if(user_param->is_server_port && user_param->is_client_port) {
-		#ifdef HAVE_RAW_ETH_EXP
+			#ifdef HAVE_RAW_ETH_EXP
 			header_buff = header_buff + sizeof(struct ibv_exp_flow_spec_ipv4);
 			spec_info = (struct ibv_exp_flow_spec*)header_buff;
 			spec_info->tcp_udp.type = (user_param->tcp) ? IBV_EXP_FLOW_SPEC_TCP : IBV_EXP_FLOW_SPEC_UDP;
 			spec_info->tcp_udp.size = sizeof(struct ibv_exp_flow_spec_tcp_udp);
-		#else
+			#else
 			header_buff = header_buff + sizeof(struct ibv_flow_spec_ipv4);
-                        spec_info = (struct ibv_flow_spec*)header_buff;
-                        spec_info->tcp_udp.type = (user_param->tcp) ? IBV_FLOW_SPEC_TCP : IBV_FLOW_SPEC_UDP;
-                        spec_info->tcp_udp.size = sizeof(struct ibv_flow_spec_tcp_udp);
-		#endif
+			spec_info = (struct ibv_flow_spec*)header_buff;
+			spec_info->tcp_udp.type = (user_param->tcp) ? IBV_FLOW_SPEC_TCP : IBV_FLOW_SPEC_UDP;
+			spec_info->tcp_udp.size = sizeof(struct ibv_flow_spec_tcp_udp);
+			#endif
 			if(user_param->machine == SERVER) {
 
 				spec_info->tcp_udp.val.dst_port = htons(user_param->server_port);
@@ -626,7 +621,7 @@ int calc_flow_rules_size(int is_ip_header,int is_udp_header)
 
 	if (user_param->machine == CLIENT || user_param->duplex) {
 
-		//set source mac
+		/* set source mac */
 		if(user_param->is_source_mac) {
 			mac_from_user(my_dest_info->mac , &(user_param->source_mac[0]) , sizeof(user_param->source_mac) );
 
@@ -634,7 +629,7 @@ int calc_flow_rules_size(int is_ip_header,int is_udp_header)
 			mac_from_gid(my_dest_info->mac, temp_gid.raw, user_param->ib_port);
 		}
 
-		//set dest mac
+		/* set dest mac */
 		mac_from_user(rem_dest_info->mac , &(user_param->dest_mac[0]) , sizeof(user_param->dest_mac) );
 
 		if(user_param->is_client_ip) {
@@ -677,13 +672,14 @@ int run_iter_fw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 	struct ibv_wc		*wc = NULL;
 	struct ibv_wc		*wc_tx = NULL;
 	struct ibv_recv_wr	*bad_wr_recv = NULL;
-#if defined(HAVE_VERBS_EXP)
+	#if defined(HAVE_VERBS_EXP)
 	struct ibv_exp_send_wr	*bad_exp_wr = NULL;
-#endif
+	#endif
 	struct ibv_send_wr	*bad_wr = NULL;
 	int			firstRx = 1;
-    	int 			rwqe_sent = user_param->rx_depth;
+	int 			rwqe_sent = user_param->rx_depth;
 	int			return_value = 0;
+	int			wc_id;
 
 	ALLOCATE(wc,struct ibv_wc,CTX_POLL_BATCH);
 	ALLOCATE(wc_tx,struct ibv_wc,CTX_POLL_BATCH);
@@ -691,7 +687,7 @@ int run_iter_fw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 
 	memset(rcnt_for_qp,0,sizeof(uint64_t)*user_param->num_of_qps);
 
-	tot_iters = user_param->iters*user_param->num_of_qps;
+	tot_iters = (uint64_t)user_param->iters*user_param->num_of_qps;
 	iters=user_param->iters;
 
 	if (user_param->noPeak == ON)
@@ -714,13 +710,21 @@ int run_iter_fw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 					((ctx->scnt[index] - ctx->ccnt[index]) < user_param->tx_depth) && (rcnt_for_qp[index] - ctx->scnt[index] > 0)) {
 
 				if (user_param->post_list == 1 && (ctx->scnt[index] % user_param->cq_mod == 0 && user_param->cq_mod > 1)) {
-                                        #ifdef HAVE_VERBS_EXP
-                                        if (user_param->use_exp == 1)
-                                                ctx->exp_wr[index].exp_send_flags &= ~IBV_EXP_SEND_SIGNALED;
-                                        else
-                                        #endif
-                                                ctx->wr[index].send_flags &= ~IBV_SEND_SIGNALED;
-                                }
+					#ifdef HAVE_VERBS_EXP
+					#ifdef HAVE_ACCL_VERBS
+					if (user_param->verb_type == ACCL_INTF)
+						ctx->exp_wr[index].exp_send_flags &= ~IBV_EXP_QP_BURST_SIGNALED;
+					else {
+					#endif
+						if (user_param->use_exp == 1)
+							ctx->exp_wr[index].exp_send_flags &= ~IBV_EXP_SEND_SIGNALED;
+						else
+					#endif
+							ctx->wr[index].send_flags &= ~IBV_SEND_SIGNALED;
+					#ifdef HAVE_ACCL_VERBS
+					}
+					#endif
+				}
 
 				if (user_param->noPeak == OFF)
 					user_param->tposted[totscnt] = get_cycles();
@@ -729,42 +733,63 @@ int run_iter_fw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 					break;
 				switch_smac_dmac(ctx->wr[index*user_param->post_list].sg_list);
 
-				#if defined(HAVE_VERBS_EXP)
-                                if (user_param->use_exp == 1) {
-                                        err = (ctx->exp_post_send_func_pointer)(ctx->qp[index],&ctx->exp_wr[index*user_param->post_list],&bad_exp_wr);
-                                }
-                                else {
-                                        err = (ctx->post_send_func_pointer)(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
-                                }
-                                #else
-                                        err = ibv_post_send(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
-                                #endif
+				#ifdef HAVE_VERBS_EXP
+				#ifdef HAVE_ACCL_VERBS
+				if (user_param->verb_type == ACCL_INTF) {
+					struct ibv_sge *sg_l = ctx->exp_wr[index*user_param->post_list].sg_list;
+					err = ctx->qp_burst_family[index]->send_burst(ctx->qp[index], sg_l, 1, ctx->exp_wr[index].exp_send_flags);
+				} else {
+				#endif
+					if (user_param->use_exp == 1) {
+						err = (ctx->exp_post_send_func_pointer)(ctx->qp[index],
+							&ctx->exp_wr[index*user_param->post_list],&bad_exp_wr);
+					}
+					else {
+						err = (ctx->post_send_func_pointer)(ctx->qp[index],
+							&ctx->wr[index*user_param->post_list],&bad_wr);
+					}
+				#ifdef HAVE_ACCL_VERBS
+				}
+				#endif
+				#else
+				err = ibv_post_send(ctx->qp[index],&ctx->wr[index*user_param->post_list],&bad_wr);
+				#endif
 				if(err) {
-                                        fprintf(stderr,"Couldn't post send: qp %d scnt=%lu \n",index,ctx->scnt[index]);
-                                        return_value = 1;
+					fprintf(stderr,"Couldn't post send: qp %d scnt=%lu \n",index,ctx->scnt[index]);
+					return_value = 1;
 					goto cleaning;
-                                }
+				}
 
 				if (user_param->post_list == 1 && user_param->size <= (ctx->cycle_buffer / 2)) {
 					#ifdef HAVE_VERBS_EXP
-                                        if (user_param->use_exp == 1)
-	                                        increase_loc_addr(ctx->exp_wr[index].sg_list,user_param->size,
-										ctx->scnt[index],ctx->my_addr[index],0,ctx->cache_line_size,ctx->cycle_buffer);
-                                        else
-                                        #endif
-                                                increase_loc_addr(ctx->wr[index].sg_list,user_param->size,
-										ctx->scnt[index],ctx->my_addr[index],0,ctx->cache_line_size,ctx->cycle_buffer);
+					if (user_param->use_exp == 1)
+						increase_loc_addr(ctx->exp_wr[index].sg_list,user_param->size,
+								ctx->scnt[index],ctx->my_addr[index],0,ctx->cache_line_size,ctx->cycle_buffer);
+					else
+					#endif
+						increase_loc_addr(ctx->wr[index].sg_list,user_param->size,
+								ctx->scnt[index],ctx->my_addr[index],0,ctx->cache_line_size,ctx->cycle_buffer);
 				}
 				ctx->scnt[index] += user_param->post_list;
 				totscnt += user_param->post_list;
 
-				if (user_param->post_list == 1 && (ctx->scnt[index]%user_param->cq_mod == user_param->cq_mod - 1 || (user_param->test_type == ITERATIONS && ctx->scnt[index] == iters-1))){
+				if (user_param->post_list == 1 &&
+					(ctx->scnt[index]%user_param->cq_mod == user_param->cq_mod - 1 ||
+						(user_param->test_type == ITERATIONS && ctx->scnt[index] == iters-1))){
 					#ifdef HAVE_VERBS_EXP
-                                        if (user_param->use_exp == 1)
-                                                ctx->exp_wr[index].exp_send_flags |= IBV_EXP_SEND_SIGNALED;
-                                        else
-                                        #endif
-                                                ctx->wr[index].send_flags |= IBV_SEND_SIGNALED;
+					#ifdef HAVE_ACCL_VERBS
+					if (user_param->verb_type == ACCL_INTF)
+						ctx->exp_wr[index].exp_send_flags |= IBV_EXP_QP_BURST_SIGNALED;
+					else {
+					#endif
+						if (user_param->use_exp == 1)
+							ctx->exp_wr[index].exp_send_flags |= IBV_EXP_SEND_SIGNALED;
+						else
+					#endif
+							ctx->wr[index].send_flags |= IBV_SEND_SIGNALED;
+					#ifdef HAVE_ACCL_VERBS
+					}
+					#endif
 				}
 			}
 		}
@@ -779,7 +804,13 @@ int run_iter_fw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 		}
 
 		if ((user_param->test_type == ITERATIONS && (totrcnt < tot_iters)) || (user_param->test_type == DURATION && user_param->state != END_STATE)) {
-			ne = ibv_poll_cq(ctx->recv_cq,CTX_POLL_BATCH,wc);
+			#ifdef HAVE_ACCL_VERBS
+			if (user_param->verb_type == ACCL_INTF)
+				ne = ctx->recv_cq_family->poll_cnt(ctx->recv_cq, CTX_POLL_BATCH);
+			else
+			#endif
+				ne = ibv_poll_cq(ctx->recv_cq,CTX_POLL_BATCH,wc);
+
 			if (ne > 0) {
 				if (user_param->machine == SERVER && firstRx && user_param->test_type == DURATION) {
 					firstRx = OFF;
@@ -791,11 +822,16 @@ int run_iter_fw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 				}
 
 				for (i = 0; i < ne; i++) {
-					if (wc[i].status != IBV_WC_SUCCESS) {
-						NOTIFY_COMP_ERROR_RECV(wc[i],totrcnt);
+					wc_id = (user_param->verb_type == ACCL_INTF) ?
+						0 : (int)wc[i].wr_id;
+
+					if (user_param->verb_type != ACCL_INTF) {
+						if (wc[i].status != IBV_WC_SUCCESS) {
+							NOTIFY_COMP_ERROR_RECV(wc[i],totrcnt);
+						}
 					}
 
-					rcnt_for_qp[wc[i].wr_id]++;
+					rcnt_for_qp[wc_id]++;
 					totrcnt++;
 				}
 			} else if (ne < 0) {
@@ -805,14 +841,25 @@ int run_iter_fw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 			}
 		}
 		if ((totccnt < tot_iters) || (user_param->test_type == DURATION && user_param->state != END_STATE)) {
-			ne = ibv_poll_cq(ctx->send_cq,CTX_POLL_BATCH,wc_tx);
+			#ifdef HAVE_ACCL_VERBS
+			if (user_param->verb_type == ACCL_INTF)
+				ne = ctx->send_cq_family->poll_cnt(ctx->send_cq, CTX_POLL_BATCH);
+			else
+			#endif
+				ne = ibv_poll_cq(ctx->send_cq,CTX_POLL_BATCH,wc_tx);
+
 			if (ne > 0) {
 				for (i = 0; i < ne; i++) {
-					if (wc_tx[i].status != IBV_WC_SUCCESS)
-						NOTIFY_COMP_ERROR_SEND(wc_tx[i],totscnt,totccnt);
+					wc_id = (user_param->verb_type == ACCL_INTF) ?
+						0 : (int)wc[i].wr_id;
+
+					if (user_param->verb_type != ACCL_INTF) {
+						if (wc_tx[i].status != IBV_WC_SUCCESS)
+							NOTIFY_COMP_ERROR_SEND(wc_tx[i],totscnt,totccnt);
+					}
 
 					totccnt += user_param->cq_mod;
-					ctx->ccnt[(int)wc_tx[i].wr_id] += user_param->cq_mod;
+					ctx->ccnt[wc_id] += user_param->cq_mod;
 
 					if (user_param->noPeak == OFF) {
 
@@ -823,30 +870,43 @@ int run_iter_fw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
 					}
 
 					if (user_param->test_type==DURATION && user_param->state == SAMPLE_STATE)
-    					user_param->iters += user_param->cq_mod;
+						user_param->iters += user_param->cq_mod;
 				}
 			} else if (ne < 0) {
 				fprintf(stderr, "poll CQ failed %d\n", ne);
 				return_value = 1;
 				goto cleaning;
 			}
-            while (rwqe_sent - totccnt < user_param->rx_depth) {    // Post more than buffer_size
-    		    if (user_param->test_type==DURATION || rcnt_for_qp[0] + user_param->rx_depth <= user_param->iters) { 
-					if (ibv_post_recv(ctx->qp[0],&ctx->rwr[0],&bad_wr_recv)) {
-						fprintf(stderr, "Couldn't post recv Qp=%d rcnt=%lu\n",0,rcnt_for_qp[0]);
-						return_value = 15;
-						goto cleaning;
+			while (rwqe_sent - totccnt < user_param->rx_depth) {    /* Post more than buffer_size */
+				if (user_param->test_type==DURATION || rcnt_for_qp[0] + user_param->rx_depth <= user_param->iters) {
+					#ifdef HAVE_ACCL_VERBS
+					if (user_param->verb_type == ACCL_INTF) {
+						if (ctx->qp_burst_family[0]->recv_burst(ctx->qp[0], ctx->rwr[0].sg_list, 1)) {
+							fprintf(stderr, "Couldn't post recv burst (accelerated verbs).\n");
+							return_value = 1;
+							goto cleaning;
+						}
+					} else {
+					#endif
+						if (ibv_post_recv(ctx->qp[0],&ctx->rwr[0],&bad_wr_recv)) {
+							fprintf(stderr, "Couldn't post recv Qp=%d rcnt=%lu\n",0,rcnt_for_qp[0]);
+							return_value = 15;
+							goto cleaning;
+						}
+					#ifdef HAVE_ACCL_VERBS
 					}
+					#endif
+
 					if (SIZE(user_param->connection_type,user_param->size,!(int)user_param->machine) <= (ctx->cycle_buffer / 2)) {
 						increase_loc_addr(ctx->rwr[0].sg_list,
-										user_param->size,
-										rwqe_sent ,
-										ctx->rx_buffer_addr[0],user_param->connection_type,
-										ctx->cache_line_size,ctx->cycle_buffer);
+								user_param->size,
+								rwqe_sent ,
+								ctx->rx_buffer_addr[0],user_param->connection_type,
+								ctx->cache_line_size,ctx->cycle_buffer);
 					}
 				}
-                rwqe_sent++;
-           }
+				rwqe_sent++;
+			}
 
 
 		}
diff --git a/src/raw_ethernet_resources.h b/src/raw_ethernet_resources.h
index e25ec31..d02f890 100644
--- a/src/raw_ethernet_resources.h
+++ b/src/raw_ethernet_resources.h
@@ -59,22 +59,22 @@ struct ETH_header {
 }__attribute__((packed));
 
 struct IP_V4_header{
-#if defined(__LITTLE_ENDIAN_BITFIELD)
-    uint8_t ihl:4;
-    uint8_t version:4;
-#elif defined(__BIG_ENDIAN_BITFIELD)
-    uint8_t version:4;
-    uint8_t ihl:4;
-#endif
-    uint8_t tos;
-    uint16_t tot_len;
-    uint16_t id;
-    uint16_t frag_off;
-    uint8_t ttl;
-    uint8_t protocol;
-    uint16_t check;
-    uint32_t saddr;
-    uint32_t daddr;
+	#if defined(__LITTLE_ENDIAN_BITFIELD)
+	uint8_t		ihl:4;
+	uint8_t		version:4;
+	#elif defined(__BIG_ENDIAN_BITFIELD)
+	uint8_t		version:4;
+	uint8_t		ihl:4;
+	#endif
+	uint8_t		tos;
+	uint16_t 	tot_len;
+	uint16_t	id;
+	uint16_t	frag_off;
+	uint8_t		ttl;
+	uint8_t		protocol;
+	uint16_t	check;
+	uint32_t	saddr;
+	uint32_t	daddr;
 }__attribute__((packed));
 
 struct UDP_header {
@@ -85,16 +85,16 @@ struct UDP_header {
 }__attribute__((packed));
 
 struct TCP_header {
-       uint16_t        th_sport;               /* source port */
-       uint16_t        th_dport;               /* destination port */
-       uint32_t        th_seq;
-       uint32_t        th_ack;
-       uint8_t         th_rsv:4;
-       uint8_t         th_doff:4;
-       uint8_t         th_falgs;
-       uint16_t        th_window;
-       uint16_t        th_check;
-       uint16_t        th_urgptr;
+	uint16_t        th_sport;               /* source port */
+	uint16_t        th_dport;               /* destination port */
+	uint32_t        th_seq;
+	uint32_t        th_ack;
+	uint8_t         th_rsv:4;
+	uint8_t         th_doff:4;
+	uint8_t         th_falgs;
+	uint16_t        th_window;
+	uint16_t        th_check;
+	uint16_t        th_urgptr;
 }__attribute__((packed));
 
 void gen_eth_header(struct ETH_header* eth_header,uint8_t* src_mac,uint8_t* dst_mac, uint16_t eth_type);
@@ -124,13 +124,13 @@ int check_flow_steering_support();
  *		sizePkt - size of the requested packet
  */
 void build_pkt_on_buffer(struct ETH_header* eth_header,
-						 struct raw_ethernet_info *my_dest_info,
-						 struct raw_ethernet_info *rem_dest_info,
-						 struct perftest_parameters *user_param,
-						 uint16_t eth_type,
-						 uint16_t ip_next_protocol,
-						 int print_flag,
-						 int sizePkt);
+		struct raw_ethernet_info *my_dest_info,
+		struct raw_ethernet_info *rem_dest_info,
+		struct perftest_parameters *user_param,
+		uint16_t eth_type,
+		uint16_t ip_next_protocol,
+		int print_flag,
+		int sizePkt);
 
 /*  create_raw_eth_pkt
  * 	Description: build raw Ethernet packet by user arguments
@@ -142,19 +142,19 @@ void build_pkt_on_buffer(struct ETH_header* eth_header,
  *				ctx - Test Context.
  *				my_dest_info - ethernet information of me
  *				rem_dest_info - ethernet information of the remote
-*/
+ */
 void create_raw_eth_pkt( struct perftest_parameters *user_param,
-						 struct pingpong_context 	*ctx ,
-						 struct raw_ethernet_info	*my_dest_info,
-						 struct raw_ethernet_info	*rem_dest_info);
+		struct pingpong_context 	*ctx ,
+		struct raw_ethernet_info	*my_dest_info,
+		struct raw_ethernet_info	*rem_dest_info);
 
 /*calc_flow_rules_size
-* Description: calculate the size of the flow(size of headers - ib, ethernet and ip/udp if available)
-* Parameters:
-*				is_ip_header - if ip header is exist, count the header's size
-*				is_udp_header - if udp header is exist, count the header's size
-*
-*/
+ * Description: calculate the size of the flow(size of headers - ib, ethernet and ip/udp if available)
+ * Parameters:
+ *				is_ip_header - if ip header is exist, count the header's size
+ *				is_udp_header - if udp header is exist, count the header's size
+ *
+ */
 int calc_flow_rules_size(int is_ip_header,int is_udp_header);
 
 /* send_set_up_connection
@@ -167,18 +167,18 @@ int calc_flow_rules_size(int is_ip_header,int is_udp_header);
  *				my_dest_info - ethernet information of me
  *				rem_dest_info - ethernet information of the remote
  *
-*/
+ */
 
 int send_set_up_connection(
-#ifdef HAVE_RAW_ETH_EXP
-	struct ibv_exp_flow_attr **flow_rules,
-#else
-	struct ibv_flow_attr **flow_rules,
-#endif
-	struct pingpong_context *ctx,
-	struct perftest_parameters *user_param,
-	struct raw_ethernet_info* my_dest_info,
-	struct raw_ethernet_info* rem_dest_info);
+		#ifdef HAVE_RAW_ETH_EXP
+		struct ibv_exp_flow_attr **flow_rules,
+		#else
+		struct ibv_flow_attr **flow_rules,
+		#endif
+		struct pingpong_context *ctx,
+		struct perftest_parameters *user_param,
+		struct raw_ethernet_info* my_dest_info,
+		struct raw_ethernet_info* rem_dest_info);
 
 /* gen_ip_header .
 
@@ -238,7 +238,7 @@ int run_iter_fw(struct pingpong_context *ctx,struct perftest_parameters *user_pa
  * Parameters :
  *
  *  sg     - sg->addr is pointer to the buffer.
-*/
+ */
 static __inline void switch_smac_dmac(struct ibv_sge *sg)
 {
 	struct ETH_header* eth_header;
@@ -249,4 +249,4 @@ static __inline void switch_smac_dmac(struct ibv_sge *sg)
 	memcpy((uint8_t *)eth_header->dst_mac  , tmp_mac ,sizeof(tmp_mac));
 }
 
-#endif //RAW_ETHERNET_RESOURCES_H
+#endif /* RAW_ETHERNET_RESOURCES_H */
diff --git a/src/raw_ethernet_send_bw.c b/src/raw_ethernet_send_bw.c
index df70b26..0f0ccc7 100755
--- a/src/raw_ethernet_send_bw.c
+++ b/src/raw_ethernet_send_bw.c
@@ -52,22 +52,22 @@
 /******************************************************************************
  *
  ******************************************************************************/
-int main(int argc, char *argv[]) {
-
+int main(int argc, char *argv[])
+{
 	struct ibv_device		*ib_dev = NULL;
 	struct pingpong_context		ctx;
 	struct raw_ethernet_info	my_dest_info,rem_dest_info;
 	int				ret_parser;
 	struct perftest_parameters	user_param;
 
-#ifdef HAVE_RAW_ETH_EXP
+	#ifdef HAVE_RAW_ETH_EXP
 	struct ibv_exp_flow		*flow_create_result = NULL;
 	struct ibv_exp_flow_attr	*flow_rules = NULL;
 	struct ibv_exp_flow 		*flow_promisc = NULL;
-#else
+	#else
 	struct ibv_flow			*flow_create_result = NULL;
 	struct ibv_flow_attr		*flow_rules = NULL;
-#endif	
+	#endif
 
 	union ibv_gid mgid;
 
@@ -83,7 +83,7 @@ int main(int argc, char *argv[]) {
 	user_param.connection_type = RawEth;
 
 	if (check_flow_steering_support()) {
-	    return 1;
+		return 1;
 	}
 
 	ret_parser = parser(&user_param,argv,argc);
@@ -96,10 +96,8 @@ int main(int argc, char *argv[]) {
 		return 1;
 	}
 
-	//Multicast stuff
-	if (user_param.raw_mcast)
-	{
-		//Transform IPv4 to Multicast MAC
+	if (user_param.raw_mcast) {
+		/* Transform IPv4 to Multicast MAC */
 		user_param.dest_mac[0] = 0x01;
 		user_param.dest_mac[1] = 0x00;
 		user_param.dest_mac[2] = 0x5e;
@@ -111,50 +109,50 @@ int main(int argc, char *argv[]) {
 		memset (&mgid, 0, sizeof (union ibv_gid));
 		memcpy (&mgid.raw[10], &user_param.dest_mac[0], 6);
 
-		//Multicast send so no response UDP port
+		/* Multicast send so no response UDP port */
 		user_param.client_port = 0;
 
 	}
 
-	if (user_param.use_rss)
-	{
-		//if num_of_qps is not even, set it to 2.
-		//need to add a check if num_of_qps is in 2^n form.
+	if (user_param.use_rss) {
+		/* if num_of_qps is not even, set it to 2. */
 		if (user_param.num_of_qps % 2)
-		{
 			user_param.num_of_qps = 2;
-		}
 
-		//add another one for rss parent QP
-		user_param.num_of_qps += 1; //parent rss + 2^n child_rx
+		/* add another one for rss parent QP */
+		user_param.num_of_qps += 1;
 	}
 
-	// Finding the IB device selected (or default if no selected).
+	/* Finding the IB device selected (or default if no selected). */
 	ib_dev = ctx_find_dev(user_param.ib_devname);
 	if (!ib_dev) {
 		fprintf(stderr," Unable to find the Infiniband/RoCE device\n");
 		DEBUG_LOG(TRACE,"<<<<<<%s",__FUNCTION__);
- 		return 1;
+		return 1;
 	}
-	// Getting the relevant context from the device
+
+	/* Getting the relevant context from the device */
 	ctx.context = ibv_open_device(ib_dev);
 	if (!ctx.context) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		DEBUG_LOG(TRACE,"<<<<<<%s",__FUNCTION__);
 		return 1;
 	}
-	// See if MTU and link type are valid and supported.
+
+	/* See if MTU and link type are valid and supported. */
 	if (check_link_and_mtu(ctx.context,&user_param)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		DEBUG_LOG(TRACE,"<<<<<<%s",__FUNCTION__);
 		return FAILURE;
 	}
-	// Allocating arrays needed for the test.
+
+	/* Allocating arrays needed for the test. */
 	alloc_ctx(&ctx,&user_param);
-	// Print basic test information.
+
+	/* Print basic test information. */
 	ctx_print_test_info(&user_param);
 
-	//set mac address by user choose
+	/* set mac address by user choose */
 	if (send_set_up_connection(&flow_rules,&ctx,&user_param,&my_dest_info,&rem_dest_info)) {
 		fprintf(stderr," Unable to set up socket connection\n");
 		return 1;
@@ -164,7 +162,7 @@ int main(int argc, char *argv[]) {
 		print_spec(flow_rules,&user_param);
 	}
 
-	// Create (if necessary) the rdma_cm ids and channel.
+	/* Create (if necessary) the rdma_cm ids and channel. */
 	if (user_param.work_rdma_cm == ON) {
 
 		if (create_rdma_resources(&ctx,&user_param)) {
@@ -173,7 +171,6 @@ int main(int argc, char *argv[]) {
 		}
 
 		if (user_param.machine == CLIENT) {
-
 			if (rdma_client_connect(&ctx,&user_param)) {
 				fprintf(stderr,"Unable to perform rdma_client function\n");
 				return FAILURE;
@@ -186,19 +183,19 @@ int main(int argc, char *argv[]) {
 
 	} else {
 
-		// create all the basic IB resources (data buffer, PD, MR, CQ and events channel)
+		/* create all the basic IB resources (data buffer, PD, MR, CQ and events channel) */
 		if (ctx_init(&ctx,&user_param)) {
 			fprintf(stderr, " Couldn't create IB resources\n");
 			return FAILURE;
 		}
 	}
 
-	//build raw Ethernet packets on ctx buffer
-	if((user_param.machine == CLIENT || user_param.duplex) && !user_param.mac_fwd){
+	/* build raw Ethernet packets on ctx buffer */
+	if((user_param.machine == CLIENT || user_param.duplex) && !user_param.mac_fwd) {
 		create_raw_eth_pkt(&user_param,&ctx, &my_dest_info , &rem_dest_info);
 	}
 
-	// Prepare IB resources for rtr/rts.
+	/* Prepare IB resources for rtr/rts. */
 	if (user_param.work_rdma_cm == OFF) {
 		if (ctx_connect(&ctx,NULL,&user_param,NULL)) {
 			fprintf(stderr," Unable to Connect the HCA's through the link\n");
@@ -207,39 +204,36 @@ int main(int argc, char *argv[]) {
 		}
 	}
 
-	if (user_param.raw_mcast)
-	{
-		if (user_param.machine == SERVER)
-		{	
-			//join Multicast group by MGID
+	if (user_param.raw_mcast) {
+		if (user_param.machine == SERVER) {
+			/* join Multicast group by MGID */
 			ibv_attach_mcast(ctx.qp[0], &mgid, 0);
 			printf(PERF_RAW_MGID_FMT,"MGID",
-				mgid.raw[0], mgid.raw[1],
-				mgid.raw[2], mgid.raw[3],
-			    mgid.raw[4], mgid.raw[5],
-			    mgid.raw[6], mgid.raw[7],
-			   	mgid.raw[8], mgid.raw[9],
-			    mgid.raw[10],mgid.raw[11],
-			    mgid.raw[12],mgid.raw[13],
-				mgid.raw[14],mgid.raw[15]);
+					mgid.raw[0], mgid.raw[1],
+					mgid.raw[2], mgid.raw[3],
+					mgid.raw[4], mgid.raw[5],
+					mgid.raw[6], mgid.raw[7],
+					mgid.raw[8], mgid.raw[9],
+					mgid.raw[10],mgid.raw[11],
+					mgid.raw[12],mgid.raw[13],
+					mgid.raw[14],mgid.raw[15]);
 		}
 	}
-	else
-	{
-		//attaching the qp to the spec
+	else {
+		/* attaching the qp to the spec */
 		if(user_param.machine == SERVER || user_param.duplex) {
-		#ifdef HAVE_RAW_ETH_EXP
+			#ifdef HAVE_RAW_ETH_EXP
 			flow_create_result = ibv_exp_create_flow(ctx.qp[0], flow_rules);
-		#else
+			#else
 			flow_create_result = ibv_create_flow(ctx.qp[0], flow_rules);
-		#endif
+			#endif
 			if (!flow_create_result){
 				perror("error");
 				fprintf(stderr, "Couldn't attach QP\n");
 				return FAILURE;
 			}
 
-		#ifdef HAVE_RAW_ETH_EXP
+			#ifdef HAVE_RAW_ETH_EXP
 			if (user_param.use_promiscuous) {
 				struct ibv_exp_flow_attr attr = {
 					.type = IBV_EXP_FLOW_ATTR_ALL_DEFAULT,
@@ -253,13 +247,13 @@ int main(int argc, char *argv[]) {
 					fprintf(stderr, "Couldn't attach promiscous rule QP\n");
 				}
 			}
-		#endif
+			#endif
 
 		}
 	}
 
 	if (user_param.output == FULL_VERBOSITY) {
-                printf(RESULT_LINE);
+		printf(RESULT_LINE);
 		if (user_param.raw_qos)
 			printf((user_param.report_fmt == MBS ? RESULT_FMT_QOS : RESULT_FMT_G_QOS));
 		else
@@ -341,16 +335,12 @@ int main(int argc, char *argv[]) {
 
 	if(user_param.machine == SERVER || user_param.duplex) {
 
-		if (user_param.raw_mcast)
-		{
-			if (ibv_detach_mcast(ctx.qp[0], &mgid,0))
-			{
-					perror("error");
-					fprintf(stderr,"Couldn't leave multicast group\n");
+		if (user_param.raw_mcast) {
+			if (ibv_detach_mcast(ctx.qp[0], &mgid,0)) {
+				perror("error");
+				fprintf(stderr,"Couldn't leave multicast group\n");
 			}
-		}
-		else
-		{
+		} else {
 			#ifdef HAVE_RAW_ETH_EXP
 			if (user_param.use_promiscuous) {
 				if (ibv_exp_destroy_flow(flow_promisc)) {
@@ -379,11 +369,12 @@ int main(int argc, char *argv[]) {
 		DEBUG_LOG(TRACE,"<<<<<<%s",__FUNCTION__);
 		return 1;
 	}
-	//limit verifier
+
+	/* limit verifier */
 	if (!user_param.is_bw_limit_passed && (user_param.is_limit_bw == ON ) ) {
-                fprintf(stderr,"Error: BW result is below bw limit\n");
-                return 1;
-        }
+		fprintf(stderr,"Error: BW result is below bw limit\n");
+		return 1;
+	}
 
 	if (user_param.output == FULL_VERBOSITY)
 		printf(RESULT_LINE);
diff --git a/src/raw_ethernet_send_lat.c b/src/raw_ethernet_send_lat.c
index e7c9e37..d07b279 100755
--- a/src/raw_ethernet_send_lat.c
+++ b/src/raw_ethernet_send_lat.c
@@ -49,8 +49,8 @@
 
 
 /*
-* Main function. implements raw_ethernet_send_lat
-*/
+ * Main function. implements raw_ethernet_send_lat
+ */
 int main(int argc, char *argv[])
 {
 
@@ -59,25 +59,25 @@ int main(int argc, char *argv[])
 	struct raw_ethernet_info	my_dest_info,rem_dest_info;
 	int				ret_parser;
 	struct perftest_parameters	user_param;
-#ifdef HAVE_RAW_ETH_EXP
+	#ifdef HAVE_RAW_ETH_EXP
 	struct ibv_exp_flow		*flow_create_result = NULL;
 	struct ibv_exp_flow_attr	*flow_rules = NULL;
 	struct ibv_exp_flow 		*flow_promisc = NULL;
-#else
+	#else
 	struct ibv_flow		*flow_create_result = NULL;
 	struct ibv_flow_attr	*flow_rules = NULL;
-#endif
+	#endif
 	struct report_options		report;
 
-	//allocate memory space for user parameters
+	/* allocate memory space for user parameters &*/
 	memset(&ctx,		0, sizeof(struct pingpong_context));
 	memset(&user_param, 0, sizeof(struct perftest_parameters));
 	memset(&my_dest_info, 0 , sizeof(struct raw_ethernet_info));
 	memset(&rem_dest_info, 0 , sizeof(struct raw_ethernet_info));
 
 	/* init default values to user's parameters that's relvant for this test:
-	* Raw Ethernet Send Latency Test
-	*/
+	 * Raw Ethernet Send Latency Test
+	 */
 	user_param.verb    = SEND;
 	user_param.tst     = LAT;
 	strncpy(user_param.version, VERSION, sizeof(user_param.version));
@@ -85,14 +85,14 @@ int main(int argc, char *argv[])
 	user_param.r_flag  = &report;
 
 	if (check_flow_steering_support()) {
-            return 1;
-        }
+		return 1;
+	}
 
 	/* Configure the parameters values according to user
-												arguments or default values. */
+	   arguments or default values. */
 	ret_parser = parser(&user_param, argv,argc);
 
-	//check for parsing errors
+	/* check for parsing errors */
 	if (ret_parser) {
 		if (ret_parser != VERSION_EXIT && ret_parser != HELP_EXIT)
 			fprintf(stderr," Parser function exited with Error\n");
@@ -100,13 +100,13 @@ int main(int argc, char *argv[])
 		return 1;
 	}
 
-	//this is a bidirectional test, so we need to let the init functions
-	//to think we are in duplex mode
-	//TODO: ask Ido if that's ok, or should I add another field in user_param
+	/*this is a bidirectional test, so we need to let the init functions
+	 * think we are in duplex mode
+	 */
 	user_param.duplex  = 1;
 
 
-	// Find the selected IB device (or default if the user didn't select one).
+	/* Find the selected IB device (or default if the user didn't select one). */
 	ib_dev = ctx_find_dev(user_param.ib_devname);
 	if (!ib_dev) {
 		fprintf(stderr," Unable to find the Infiniband/RoCE device\n");
@@ -114,7 +114,7 @@ int main(int argc, char *argv[])
 		return 1;
 	}
 
-	// Getting the relevant context from the device
+	/* Getting the relevant context from the device */
 	ctx.context = ibv_open_device(ib_dev);
 	if (!ctx.context) {
 		fprintf(stderr, " Couldn't get context for the device\n");
@@ -122,33 +122,32 @@ int main(int argc, char *argv[])
 		return 1;
 	}
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_link_and_mtu(ctx.context, &user_param)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		DEBUG_LOG(TRACE,"<<<<<<%s",__FUNCTION__);
 		return FAILURE;
 	}
 
-	// Allocating arrays needed for the test.
+	/* Allocating arrays needed for the test. */
 	alloc_ctx(&ctx, &user_param);
 
-	// Print basic test information.
+	/* Print basic test information. */
 	ctx_print_test_info(&user_param);
 
-	//set up the connection, return the required flow rules (notice that user_param->duplex == TRUE)
-	//so the function will setup like it's a bidirectional test
+	/*set up the connection, return the required flow rules (notice that user_param->duplex == TRUE)
+	 * so the function will setup like it's a bidirectional test
+	 */
 	if (send_set_up_connection(&flow_rules, &ctx, &user_param, &my_dest_info, &rem_dest_info)) {
 		fprintf(stderr," Unable to set up socket connection\n");
 		return 1;
 	}
 
-	//print specifications of the test
 	print_spec(flow_rules,&user_param);
 
-	// Create (if necessary) the rdma_cm ids and channel.
+	/* Create (if necessary) the rdma_cm ids and channel. */
 	if (user_param.work_rdma_cm == ON) {
 
-		//create resources
 		if (create_rdma_resources(&ctx, &user_param)) {
 			fprintf(stderr," Unable to create the rdma_resources\n");
 			return FAILURE;
@@ -156,21 +155,21 @@ int main(int argc, char *argv[])
 
 		if (user_param.machine == CLIENT) {
 
-			//Connects the client to a QP on the other machine with rdma_cm
+			/* Connects the client to a QP on the other machine with rdma_cm */
 			if (rdma_client_connect(&ctx, &user_param)) {
 				fprintf(stderr,"Unable to perform rdma_client function\n");
 				return FAILURE;
 			}
 
 		} else if (rdma_server_connect(&ctx, &user_param)) {
-			//Assigning a server to listen on rdma_cm port and connect to it.
+			/* Assigning a server to listen on rdma_cm port and connect to it. */
 			fprintf(stderr,"Unable to perform rdma_server function\n");
 			return FAILURE;
 		}
 
 	} else {
 
-		// initalize IB resources (data buffer, PD, MR, CQ and events channel)
+		/* initalize IB resources (data buffer, PD, MR, CQ and events channel) */
 		if (ctx_init(&ctx, &user_param)) {
 			fprintf(stderr, " Couldn't create IB resources\n");
 			return FAILURE;
@@ -178,19 +177,20 @@ int main(int argc, char *argv[])
 	}
 
 
-	//attaching the qp to the spec
-#ifdef HAVE_RAW_ETH_EXP
+	/* attaching the qp to the spec */
+	#ifdef HAVE_RAW_ETH_EXP
 	flow_create_result = ibv_exp_create_flow(ctx.qp[0], flow_rules);
-#else
+	#else
 	flow_create_result = ibv_create_flow(ctx.qp[0], flow_rules);
-#endif
+	#endif
+
 	if (!flow_create_result){
 		perror("error");
 		fprintf(stderr, "Couldn't attach QP\n");
 		return FAILURE;
 	}
 
-#ifdef HAVE_RAW_ETH_EXP
+	#ifdef HAVE_RAW_ETH_EXP
 	if (user_param.use_promiscuous) {
 		struct ibv_exp_flow_attr attr = {
 			.type = IBV_EXP_FLOW_ATTR_ALL_DEFAULT,
@@ -204,18 +204,18 @@ int main(int argc, char *argv[])
 			fprintf(stderr, "Couldn't attach promiscous rule QP\n");
 		}
 	}
-#endif
+	#endif
 
-	//build ONE Raw Ethernet packets on ctx buffer
+	/* build ONE Raw Ethernet packets on ctx buffer */
 	create_raw_eth_pkt(&user_param,&ctx, &my_dest_info , &rem_dest_info);
 
 	if (user_param.output == FULL_VERBOSITY) {
-                printf(RESULT_LINE);
-                printf("%s",(user_param.test_type == ITERATIONS) ? RESULT_FMT_LAT : RESULT_FMT_LAT_DUR);
-                printf((user_param.cpu_util_data.enable ? RESULT_EXT_CPU_UTIL : RESULT_EXT));
-        }
+		printf(RESULT_LINE);
+		printf("%s",(user_param.test_type == ITERATIONS) ? RESULT_FMT_LAT : RESULT_FMT_LAT_DUR);
+		printf((user_param.cpu_util_data.enable ? RESULT_EXT_CPU_UTIL : RESULT_EXT));
+	}
 
-	// Prepare IB resources for rtr(ready to read)/rts(ready to send)
+	/* modify QPs to rtr/rts */
 	if (user_param.work_rdma_cm == OFF) {
 		if (ctx_connect(&ctx, NULL, &user_param, NULL)) {
 			fprintf(stderr," Unable to Connect the HCA's through the link\n");
@@ -224,29 +224,26 @@ int main(int argc, char *argv[])
 		}
 	}
 
-
-	//Post Send send_wqes for current message size
 	ctx_set_send_wqes(&ctx,&user_param,NULL);
 
-	// Post receive recv_wqes for current message size
 	if (ctx_set_recv_wqes(&ctx,&user_param)) {
 		fprintf(stderr," Failed to post receive recv_wqes\n");
 		return 1;
 	}
 
-	//latency test function for SEND verb latency test.
-	if (run_iter_lat_send(&ctx, &user_param))
-	{
+	/* latency test function for SEND verb latency test. */
+	if (run_iter_lat_send(&ctx, &user_param)) {
 		return 17;
 	}
 
-	//print report (like print_report_bw) in the correct format
-	// (as set before: FMT_LAT or FMT_LAT_DUR)
+	/* print report (like print_report_bw) in the correct format
+	 * (as set before: FMT_LAT or FMT_LAT_DUR)
+	 */
 	user_param.test_type == ITERATIONS ? print_report_lat(&user_param) :
-										print_report_lat_duration(&user_param);
+		print_report_lat_duration(&user_param);
 
-	//destory promisc flow
-#ifdef HAVE_RAW_ETH_EXP
+	/* destory promisc flow */
+	#ifdef HAVE_RAW_ETH_EXP
 	if (user_param.use_promiscuous) {
 		if (ibv_exp_destroy_flow(flow_promisc)) {
 			perror("error");
@@ -254,24 +251,23 @@ int main(int argc, char *argv[])
 			return FAILURE;
 		}
 	}
-#endif
+	#endif
 
 
-	//destroy flow
-#ifdef HAVE_RAW_ETH_EXP
+	/* destroy flow */
+	#ifdef HAVE_RAW_ETH_EXP
 	if (ibv_exp_destroy_flow(flow_create_result)) {
-#else
+	#else
 	if (ibv_destroy_flow(flow_create_result)) {
-#endif
+	#endif
 		perror("error");
 		fprintf(stderr, "Couldn't Destory flow\n");
 		return FAILURE;
 	}
-	free(flow_rules);
-
 
+	free(flow_rules);
 
-	//Deallocate all perftest resources.
+	/* Deallocate all perftest resources. */
 	if (destroy_ctx(&ctx, &user_param)) {
 		fprintf(stderr,"Failed to destroy_ctx\n");
 		DEBUG_LOG(TRACE,"<<<<<<%s",__FUNCTION__);
diff --git a/src/read_bw.c b/src/read_bw.c
index 36dd156..d5dde51 100755
--- a/src/read_bw.c
+++ b/src/read_bw.c
@@ -45,10 +45,10 @@
 /******************************************************************************
  *
  ******************************************************************************/
-int main(int argc, char *argv[]) {
-
+int main(int argc, char *argv[])
+{
 	int                        ret_parser,i = 0;
-	struct ibv_device		   *ib_dev = NULL;
+	struct ibv_device	   *ib_dev = NULL;
 	struct pingpong_context    ctx;
 	struct pingpong_dest       *my_dest = NULL;
 	struct pingpong_dest       *rem_dest = NULL;
@@ -80,20 +80,20 @@ int main(int argc, char *argv[]) {
 	if (!ib_dev)
 		return 7;
 
-	// Getting the relevant context from the device
+	/* Getting the relevant context from the device */
 	ctx.context = ibv_open_device(ib_dev);
 	if (!ctx.context) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return 1;
 	}
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_link(ctx.context,&user_param)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// copy the relevant user parameters to the comm struct + creating rdma_cm resources.
+	/* copy the relevant user parameters to the comm struct + creating rdma_cm resources. */
 	if (create_comm_struct(&user_comm,&user_param)) {
 		fprintf(stderr," Unable to create RDMA_CM resources\n");
 		return 1;
@@ -105,7 +105,7 @@ int main(int argc, char *argv[]) {
 		printf("************************************\n");
 	}
 
-	// Initialize the connection and print the local data.
+	/* Initialize the connection and print the local data. */
 	if (establish_connection(&user_comm)) {
 		fprintf(stderr," Unable to init the socket connection\n");
 		return FAILURE;
@@ -115,13 +115,13 @@ int main(int argc, char *argv[]) {
 
 	check_sys_data(&user_comm, &user_param);
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_mtu(ctx.context,&user_param, &user_comm)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// Print basic test information.
+	/* Print basic test information. */
 	ctx_print_test_info(&user_param);
 
 	ALLOCATE(my_dest , struct pingpong_dest , user_param.num_of_qps);
@@ -129,10 +129,10 @@ int main(int argc, char *argv[]) {
 	ALLOCATE(rem_dest , struct pingpong_dest , user_param.num_of_qps);
 	memset(rem_dest, 0, sizeof(struct pingpong_dest)*user_param.num_of_qps);
 
-	// Allocating arrays needed for the test.
+	/* Allocating arrays needed for the test. */
 	alloc_ctx(&ctx,&user_param);
 
-	// Create (if nessacery) the rdma_cm ids and channel.
+	/* Create (if nessacery) the rdma_cm ids and channel. */
 	if (user_param.work_rdma_cm == ON) {
 
 		if (user_param.machine == CLIENT) {
@@ -142,10 +142,10 @@ int main(int argc, char *argv[]) {
 			}
 
 		} else {
-    		if (create_rdma_resources(&ctx,&user_param)) {
+			if (create_rdma_resources(&ctx,&user_param)) {
 				fprintf(stderr," Unable to create the rdma_resources\n");
 				return FAILURE;
-    		}
+			}
 			if (rdma_server_connect(&ctx,&user_param)) {
 				fprintf(stderr,"Unable to perform rdma_client function\n");
 				return FAILURE;
@@ -153,21 +153,20 @@ int main(int argc, char *argv[]) {
 		}
 
 	} else {
-
-		// create all the basic IB resources.
-	    if (ctx_init(&ctx,&user_param)) {
+		/* create all the basic IB resources. */
+		if (ctx_init(&ctx,&user_param)) {
 			fprintf(stderr, " Couldn't create IB resources\n");
 			return FAILURE;
-	    }
+		}
 	}
 
-	// Set up the Connection.
+	/* Set up the Connection. */
 	if (set_up_connection(&ctx,&user_param,my_dest)) {
 		fprintf(stderr," Unable to set up socket connection\n");
 		return FAILURE;
 	}
 
-	// Print this machine QP information
+	/* Print this machine QP information */
 	for (i=0; i < user_param.num_of_qps; i++)
 		ctx_print_pingpong_data(&my_dest[i],&user_comm);
 
@@ -175,7 +174,7 @@ int main(int argc, char *argv[]) {
 
 	for (i=0; i < user_param.num_of_qps; i++) {
 
-		// shaking hands and gather the other side info.
+		/* shaking hands and gather the other side info. */
 		if (ctx_hand_shake(&user_comm,&my_dest[i],&rem_dest[i])) {
 			fprintf(stderr,"Failed to exchange data between server and clients\n");
 			return 1;
@@ -183,15 +182,13 @@ int main(int argc, char *argv[]) {
 		ctx_print_pingpong_data(&rem_dest[i],&user_comm);
 	}
 
-        if (user_param.work_rdma_cm == OFF)
-        {
-                if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0]))
-                {
-                        fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
-                        fprintf(stderr," Please Try to use a different IP version.\n\n");
-                        return 1;
-                }
-        }
+	if (user_param.work_rdma_cm == OFF) {
+		if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0])) {
+			fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
+			fprintf(stderr," Please Try to use a different IP version.\n\n");
+			return 1;
+		}
+	}
 
 	if (user_param.work_rdma_cm == OFF) {
 
@@ -201,11 +198,11 @@ int main(int argc, char *argv[]) {
 		}
 	}
 
-	// An additional handshake is required after moving qp to RTR.
+	/* An additional handshake is required after moving qp to RTR. */
 	if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
-        fprintf(stderr,"Failed to exchange data between server and clients\n");
-        return 1;
-    }
+		fprintf(stderr,"Failed to exchange data between server and clients\n");
+		return 1;
+	}
 
 	if (user_param.output == FULL_VERBOSITY) {
 		if (user_param.report_per_port) {
@@ -219,7 +216,7 @@ int main(int argc, char *argv[]) {
 		printf((user_param.cpu_util_data.enable ? RESULT_EXT_CPU_UTIL : RESULT_EXT));
 	}
 
-	// For half duplex tests, server just waits for client to exit
+	/* For half duplex tests, server just waits for client to exit */
 	if (user_param.machine == SERVER && !user_param.duplex) {
 
 		if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
@@ -246,6 +243,7 @@ int main(int argc, char *argv[]) {
 				fprintf(stderr, "Failed to destroy resources\n");
 				return 1;
 			}
+			user_comm.rdma_params->work_rdma_cm = ON;
 			return destroy_ctx(user_comm.rdma_ctx,user_comm.rdma_params);
 		}
 
@@ -268,8 +266,8 @@ int main(int argc, char *argv[]) {
 			ctx_set_send_wqes(&ctx,&user_param,rem_dest);
 
 			if(perform_warm_up(&ctx,&user_param)) {
-					fprintf(stderr,"Problems with warm up\n");
-					return 1;
+				fprintf(stderr,"Problems with warm up\n");
+				return 1;
 			}
 
 			if(user_param.duplex) {
@@ -294,7 +292,7 @@ int main(int argc, char *argv[]) {
 			if (user_param.duplex) {
 				xchg_bw_reports(&user_comm, &my_bw_rep,&rem_bw_rep,atof(user_param.rem_version));
 				print_full_bw_report(&user_param, &my_bw_rep, &rem_bw_rep);
-                	}
+			}
 		}
 
 	} else if (user_param.test_method == RUN_REGULAR) {
@@ -302,16 +300,16 @@ int main(int argc, char *argv[]) {
 		ctx_set_send_wqes(&ctx,&user_param,rem_dest);
 
 		if(perform_warm_up(&ctx,&user_param)) {
-					fprintf(stderr,"Problems with warm up\n");
-					return 1;
-			}
+			fprintf(stderr,"Problems with warm up\n");
+			return 1;
+		}
 
 		if(user_param.duplex) {
-				if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
-					fprintf(stderr,"Failed to sync between server and client between different msg sizes\n");
-					return 1;
-				}
+			if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
+				fprintf(stderr,"Failed to sync between server and client between different msg sizes\n");
+				return 1;
 			}
+		}
 
 		if(run_iter_bw(&ctx,&user_param)) {
 			fprintf(stderr," Failed to complete run_iter_bw function successfully\n");
@@ -323,7 +321,7 @@ int main(int argc, char *argv[]) {
 		if (user_param.duplex) {
 			xchg_bw_reports(&user_comm, &my_bw_rep,&rem_bw_rep,atof(user_param.rem_version));
 			print_full_bw_report(&user_param, &my_bw_rep, &rem_bw_rep);
-                }
+		}
 
 		if (user_param.report_both && user_param.duplex) {
 			printf(RESULT_LINE);
@@ -357,7 +355,7 @@ int main(int argc, char *argv[]) {
 			printf(RESULT_LINE);
 	}
 
-	// For half duplex tests, server just waits for client to exit
+	/* For half duplex tests, server just waits for client to exit */
 	if (user_param.machine == CLIENT && !user_param.duplex) {
 
 		if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
@@ -388,6 +386,7 @@ int main(int argc, char *argv[]) {
 			fprintf(stderr, "Failed to destroy resources\n");
 			return 1;
 		}
+		user_comm.rdma_params->work_rdma_cm = ON;
 		return destroy_ctx(user_comm.rdma_ctx,user_comm.rdma_params);
 	}
 
diff --git a/src/read_lat.c b/src/read_lat.c
index 7e299b7..2a9beb9 100755
--- a/src/read_lat.c
+++ b/src/read_lat.c
@@ -49,8 +49,8 @@
 /******************************************************************************
  *
  ******************************************************************************/
-int main(int argc, char *argv[]) {
-
+int main(int argc, char *argv[])
+{
 	int                         ret_parser,i = 0;
 	struct report_options       report;
 	struct pingpong_context     ctx;
@@ -70,7 +70,7 @@ int main(int argc, char *argv[]) {
 	user_param.r_flag  = &report;
 	strncpy(user_param.version, VERSION, sizeof(user_param.version));
 
-	// Configure the parameters values according to user arguments or defalut values.
+	/* Configure the parameters values according to user arguments or defalut values. */
 	ret_parser = parser(&user_param,argv,argc);
 	if (ret_parser) {
 		if (ret_parser != VERSION_EXIT && ret_parser != HELP_EXIT)
@@ -82,27 +82,27 @@ int main(int argc, char *argv[]) {
 		user_param.num_of_qps *= 2;
 	}
 
-	// Finding the IB device selected (or defalut if no selected).
+	/* Finding the IB device selected (or defalut if no selected). */
 	ib_dev = ctx_find_dev(user_param.ib_devname);
 	if (!ib_dev) {
 		fprintf(stderr," Unable to find the Infiniband/RoCE device\n");
 		return FAILURE;
 	}
 
-	// Getting the relevant context from the device
+	/* Getting the relevant context from the device */
 	ctx.context = ibv_open_device(ib_dev);
 	if (!ctx.context) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return 1;
 	}
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_link(ctx.context,&user_param)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// copy the relevant user parameters to the comm struct + creating rdma_cm resources.
+	/* copy the relevant user parameters to the comm struct + creating rdma_cm resources. */
 	if (create_comm_struct(&user_comm,&user_param)) {
 		fprintf(stderr," Unable to create RDMA_CM resources\n");
 		return 1;
@@ -114,7 +114,7 @@ int main(int argc, char *argv[]) {
 		printf("************************************\n");
 	}
 
-	// Initialize the connection and print the local data.
+	/* Initialize the connection and print the local data. */
 	if (establish_connection(&user_comm)) {
 		fprintf(stderr," Unable to init the socket connection\n");
 		return FAILURE;
@@ -124,13 +124,13 @@ int main(int argc, char *argv[]) {
 
 	check_sys_data(&user_comm, &user_param);
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_mtu(ctx.context,&user_param, &user_comm)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// Print basic test information.
+	/* Print basic test information. */
 	ctx_print_test_info(&user_param);
 
 	ALLOCATE(my_dest , struct pingpong_dest , user_param.num_of_qps);
@@ -138,10 +138,10 @@ int main(int argc, char *argv[]) {
 	ALLOCATE(rem_dest , struct pingpong_dest , user_param.num_of_qps);
 	memset(rem_dest, 0, sizeof(struct pingpong_dest)*user_param.num_of_qps);
 
-	// Allocate arrays
+	/* Allocate arrays */
 	alloc_ctx(&ctx,&user_param);
 
-	// Create (if nessacery) the rdma_cm ids and channel.
+	/* Create (if nessacery) the rdma_cm ids and channel. */
 	if (user_param.work_rdma_cm == ON) {
 
 		if (user_param.machine == CLIENT) {
@@ -151,10 +151,10 @@ int main(int argc, char *argv[]) {
 			}
 
 		} else {
-    		if (create_rdma_resources(&ctx,&user_param)) {
+			if (create_rdma_resources(&ctx,&user_param)) {
 				fprintf(stderr," Unable to create the rdma_resources\n");
 				return FAILURE;
-    		}
+			}
 			if (rdma_server_connect(&ctx,&user_param)) {
 				fprintf(stderr,"Unable to perform rdma_client function\n");
 				return FAILURE;
@@ -163,14 +163,14 @@ int main(int argc, char *argv[]) {
 
 	} else {
 
-		// create all the basic IB resources (data buffer, PD, MR, CQ and events channel)
-	    if (ctx_init(&ctx,&user_param)) {
+		/* create all the basic IB resources (data buffer, PD, MR, CQ and events channel) */
+		if (ctx_init(&ctx,&user_param)) {
 			fprintf(stderr, " Couldn't create IB resources\n");
 			return FAILURE;
-	    }
+		}
 	}
 
-	// Set up the Connection.
+	/* Set up the Connection. */
 	if (set_up_connection(&ctx,&user_param,my_dest)) {
 		fprintf(stderr," Unable to set up socket connection\n");
 		return 1;
@@ -179,7 +179,7 @@ int main(int argc, char *argv[]) {
 	for (i=0; i < user_param.num_of_qps; i++)
 		ctx_print_pingpong_data(&my_dest[i],&user_comm);
 
-	//  shaking hands and gather the other side info.
+	/*  shaking hands and gather the other side info. */
 	if (ctx_hand_shake(&user_comm,my_dest,rem_dest)) {
 		fprintf(stderr,"Failed to exchange data between server and clients\n");
 		return 1;
@@ -188,7 +188,7 @@ int main(int argc, char *argv[]) {
 	user_comm.rdma_params->side = REMOTE;
 	for (i=0; i < user_param.num_of_qps; i++) {
 
-		// shaking hands and gather the other side info.
+		/* shaking hands and gather the other side info. */
 		if (ctx_hand_shake(&user_comm,&my_dest[i],&rem_dest[i])) {
 			fprintf(stderr,"Failed to exchange data between server and clients\n");
 			return 1;
@@ -197,15 +197,13 @@ int main(int argc, char *argv[]) {
 		ctx_print_pingpong_data(&rem_dest[i],&user_comm);
 	}
 
-        if (user_param.work_rdma_cm == OFF)
-        {
-                if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0]))
-                {
-                        fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
-                        fprintf(stderr," Please Try to use a different IP version.\n\n");
-                        return 1;
-                }
-        }
+	if (user_param.work_rdma_cm == OFF) {
+		if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0])) {
+			fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
+			fprintf(stderr," Please Try to use a different IP version.\n\n");
+			return 1;
+		}
+	}
 
 	if (user_param.work_rdma_cm == OFF) {
 
@@ -215,23 +213,23 @@ int main(int argc, char *argv[]) {
 		}
 	}
 
-	// An additional handshake is required after moving qp to RTR.
+	/* An additional handshake is required after moving qp to RTR. */
 	if (ctx_hand_shake(&user_comm,my_dest,rem_dest)) {
-       fprintf(stderr,"Failed to exchange data between server and clients\n");
-       return 1;
-    }
+		fprintf(stderr,"Failed to exchange data between server and clients\n");
+		return 1;
+	}
 
-	// Only Client post read request.
+	/* Only Client post read request. */
 	if (user_param.machine == SERVER) {
 
 		if (ctx_close_connection(&user_comm,my_dest,rem_dest)) {
-		 	fprintf(stderr,"Failed to close connection between server and client\n");
-		 	return 1;
+			fprintf(stderr,"Failed to close connection between server and client\n");
+			return 1;
 		}
 		if (user_param.output == FULL_VERBOSITY) {
 			printf(RESULT_LINE);
 		}
-		return 0; // destroy_ctx(&ctx,&user_param);
+		return 0;
 
 	}
 
@@ -247,6 +245,7 @@ int main(int argc, char *argv[]) {
 		printf("%s",(user_param.test_type == ITERATIONS) ? RESULT_FMT_LAT : RESULT_FMT_LAT_DUR);
 		printf((user_param.cpu_util_data.enable ? RESULT_EXT_CPU_UTIL : RESULT_EXT));
 	}
+
 	ctx_set_send_wqes(&ctx,&user_param,rem_dest);
 
 	if (user_param.test_method == RUN_ALL) {
@@ -265,12 +264,12 @@ int main(int argc, char *argv[]) {
 	}
 
 	if (ctx_close_connection(&user_comm,my_dest,rem_dest)) {
-	 	fprintf(stderr,"Failed to close connection between server and client\n");
-	 	return 1;
+		fprintf(stderr,"Failed to close connection between server and client\n");
+		return 1;
 	}
 
 	if (user_param.output == FULL_VERBOSITY) {
 		printf(RESULT_LINE);
 	}
-	return 0; // destroy_ctx(&ctx,&user_param);
+	return 0;
 }
diff --git a/src/send_bw.c b/src/send_bw.c
index bc11d28..8184c2f 100755
--- a/src/send_bw.c
+++ b/src/send_bw.c
@@ -47,13 +47,13 @@
  *
  ******************************************************************************/
 static int set_mcast_group(struct pingpong_context *ctx,
-						   struct perftest_parameters *user_param,
-						   struct mcast_parameters *mcg_params) {
-
+		struct perftest_parameters *user_param,
+		struct mcast_parameters *mcg_params)
+{
 	struct ibv_port_attr port_attr;
 
 	if (ibv_query_gid(ctx->context,user_param->ib_port,user_param->gid_index,&mcg_params->port_gid)) {
-			return 1;
+		return 1;
 	}
 
 	if (ibv_query_pkey(ctx->context,user_param->ib_port,DEF_PKEY_IDX,&mcg_params->pkey)) {
@@ -68,7 +68,7 @@ static int set_mcast_group(struct pingpong_context *ctx,
 	mcg_params->ib_port = user_param->ib_port;
 
 	if (!strcmp(link_layer_str(user_param->link_type),"IB")) {
-		// Request for Mcast group create registery in SM.
+		/* Request for Mcast group create registery in SM. */
 		if (join_multicast_group(SUBN_ADM_METHOD_SET,mcg_params)) {
 			fprintf(stderr,"Couldn't Register the Mcast group on the SM\n");
 			return 1;
@@ -81,10 +81,10 @@ static int set_mcast_group(struct pingpong_context *ctx,
  *
  ******************************************************************************/
 static int send_set_up_connection(struct pingpong_context *ctx,
-								  struct perftest_parameters *user_param,
-								  struct pingpong_dest *my_dest,
-								  struct mcast_parameters *mcg_params,
-								  struct perftest_comm *comm)
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *my_dest,
+		struct mcast_parameters *mcg_params,
+		struct perftest_comm *comm)
 {
 	int i;
 
@@ -120,9 +120,9 @@ static int send_set_up_connection(struct pingpong_context *ctx,
  *
  ******************************************************************************/
 static int send_destroy_ctx(
-	struct pingpong_context *ctx,
-	struct perftest_parameters *user_param,
-	struct mcast_parameters *mcg_params)
+		struct pingpong_context *ctx,
+		struct perftest_parameters *user_param,
+		struct mcast_parameters *mcg_params)
 {
 	int i;
 	if (user_param->use_mcg) {
@@ -136,7 +136,7 @@ static int send_destroy_ctx(
 			}
 		}
 
-		// Removal Request for Mcast group in SM if needed.
+		/* Removal Request for Mcast group in SM if needed. */
 		if (!strcmp(link_layer_str(user_param->link_type),"IB")) {
 			if (join_multicast_group(SUBN_ADM_METHOD_DELETE,mcg_params)) {
 				fprintf(stderr,"Couldn't Unregister the Mcast group on the SM\n");
@@ -150,8 +150,8 @@ static int send_destroy_ctx(
 /******************************************************************************
  *
  ******************************************************************************/
-int main(int argc, char *argv[]) {
-
+int main(int argc, char *argv[])
+{
 	struct ibv_device		*ib_dev = NULL;
 	struct pingpong_context  	ctx;
 	struct pingpong_dest	 	*my_dest  = NULL;
@@ -173,7 +173,7 @@ int main(int argc, char *argv[]) {
 	user_param.tst     = BW;
 	strncpy(user_param.version, VERSION, sizeof(user_param.version));
 
-	// Configure the parameters values according to user arguments or defalut values.
+	/* Configure the parameters values according to user arguments or defalut values. */
 	ret_parser = parser(&user_param,argv,argc);
 	if (ret_parser) {
 		if (ret_parser != VERSION_EXIT && ret_parser != HELP_EXIT)
@@ -183,14 +183,14 @@ int main(int argc, char *argv[]) {
 	if((user_param.connection_type == DC || user_param.use_xrc) && user_param.duplex) {
 		user_param.num_of_qps *= 2;
 	}
-	//Checking that the user did not run with RawEth. for this we have raw_etherent_bw test.
+	/* Checking that the user did not run with RawEth. for this we have raw_etherent_bw test. */
 	if (user_param.connection_type == RawEth) {
 		fprintf(stderr," This test cannot run Raw Ethernet QPs (you have chosen RawEth as connection type\n");
 		fprintf(stderr," For this we have raw_ethernet_bw test in this package.\n");
 		return FAILURE;
 	}
 
-	// Finding the IB device selected (or defalut if no selected).
+	/* Finding the IB device selected (or defalut if no selected). */
 	ib_dev = ctx_find_dev(user_param.ib_devname);
 	if (!ib_dev) {
 		fprintf(stderr," Unable to find the Infiniband/RoCE device\n");
@@ -200,7 +200,7 @@ int main(int argc, char *argv[]) {
 	if (user_param.use_mcg)
 		GET_STRING(mcg_params.ib_devname,ibv_get_device_name(ib_dev));
 
-	// Getting the relevant context from the device
+	/* Getting the relevant context from the device */
 	ctx.context = ibv_open_device(ib_dev);
 	if (!ctx.context) {
 		fprintf(stderr, " Couldn't get context for the device\n");
@@ -208,13 +208,13 @@ int main(int argc, char *argv[]) {
 	}
 
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_link(ctx.context,&user_param)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// copy the relevant user parameters to the comm struct + creating rdma_cm resources.
+	/* copy the relevant user parameters to the comm struct + creating rdma_cm resources. */
 	if (create_comm_struct(&user_comm,&user_param)) {
 		fprintf(stderr," Unable to create RDMA_CM resources\n");
 		return 1;
@@ -226,7 +226,7 @@ int main(int argc, char *argv[]) {
 		printf("************************************\n");
 	}
 
-	// Initialize the connection and print the local data.
+	/* Initialize the connection and print the local data. */
 	if (establish_connection(&user_comm)) {
 		fprintf(stderr," Unable to init the socket connection\n");
 		return FAILURE;
@@ -236,13 +236,13 @@ int main(int argc, char *argv[]) {
 
 	check_sys_data(&user_comm, &user_param);
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_mtu(ctx.context,&user_param, &user_comm)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// Print basic test information.
+	/* Print basic test information. */
 	ctx_print_test_info(&user_param);
 
 	ALLOCATE(my_dest , struct pingpong_dest , user_param.num_of_qps);
@@ -253,23 +253,23 @@ int main(int argc, char *argv[]) {
 	if (user_param.transport_type == IBV_TRANSPORT_IWARP)
 		ctx.send_rcredit = 1;
 
-	// Allocating arrays needed for the test.
+	/* Allocating arrays needed for the test. */
 	alloc_ctx(&ctx,&user_param);
 
-	// Create (if nessacery) the rdma_cm ids and channel.
+	/* Create (if nessacery) the rdma_cm ids and channel. */
 	if (user_param.work_rdma_cm == ON) {
 
-	    if (user_param.machine == CLIENT) {
+		if (user_param.machine == CLIENT) {
 			if (retry_rdma_connect(&ctx,&user_param)) {
 				fprintf(stderr,"Unable to perform rdma_client function\n");
 				return FAILURE;
 			}
 
 		} else {
-    		if (create_rdma_resources(&ctx,&user_param)) {
+			if (create_rdma_resources(&ctx,&user_param)) {
 				fprintf(stderr," Unable to create the rdma_resources\n");
 				return FAILURE;
-    		}
+			}
 			if (rdma_server_connect(&ctx,&user_param)) {
 				fprintf(stderr,"Unable to perform rdma_client function\n");
 				return FAILURE;
@@ -278,18 +278,19 @@ int main(int argc, char *argv[]) {
 
 	} else {
 
-		// create all the basic IB resources (data buffer, PD, MR, CQ and events channel)
-	    if (ctx_init(&ctx,&user_param)) {
+		/* create all the basic IB resources (data buffer, PD, MR, CQ and events channel) */
+		if (ctx_init(&ctx,&user_param)) {
 			fprintf(stderr, " Couldn't create IB resources\n");
 			return FAILURE;
-	    }
+		}
 	}
 
-	// Set up the Connection.
+	/* Set up the Connection. */
 	if (send_set_up_connection(&ctx,&user_param,my_dest,&mcg_params,&user_comm)) {
 		fprintf(stderr," Unable to set up socket connection\n");
 		return 1;
 	}
+
 	if (ctx.send_rcredit)
 		ctx_alloc_credit(&ctx,&user_param,my_dest);
 
@@ -299,7 +300,7 @@ int main(int argc, char *argv[]) {
 	user_comm.rdma_params->side = REMOTE;
 	for (i=0; i < user_param.num_of_qps; i++) {
 
-		// shaking hands and gather the other side info.
+		/* shaking hands and gather the other side info. */
 		if (ctx_hand_shake(&user_comm,&my_dest[i],&rem_dest[i])) {
 			fprintf(stderr,"Failed to exchange data between server and clients\n");
 			return 1;
@@ -308,23 +309,22 @@ int main(int argc, char *argv[]) {
 		ctx_print_pingpong_data(&rem_dest[i],&user_comm);
 	}
 
-        if (user_param.work_rdma_cm == OFF)
-        {
-                if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0]))
-                {
-                        fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
-                        fprintf(stderr," Please Try to use a different IP version.\n\n");
-                        return 1;
-                }
-        }
+	if (user_param.work_rdma_cm == OFF) {
+		if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0])) {
+			fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
+			fprintf(stderr," Please Try to use a different IP version.\n\n");
+			return 1;
+		}
+	}
 
 	/* If credit for available recieve buffers is necessary,
 	 * the credit sending is done via RDMA WRITE ops and the ctx_hand_shake above
-	 * is used to exchange the rkeys and buf addresses for the RDMA WRITEs */
+	 * is used to exchange the rkeys and buf addresses for the RDMA WRITEs
+	 */
 	if (ctx.send_rcredit)
 		ctx_set_credit_wqes(&ctx,&user_param,rem_dest);
 
-	// Joining the Send side port the Mcast gid
+	/* Joining the Send side port the Mcast gid */
 	if (user_param.use_mcg && (user_param.machine == CLIENT || user_param.duplex)) {
 
 		memcpy(mcg_params.mgid.raw, rem_dest[0].gid.raw, 16);
@@ -340,46 +340,44 @@ int main(int argc, char *argv[]) {
 		 * what happened before this fix was client reaching the post_send
 		 * code segment in about 350 ns from here, and the switch(es) dropped
 		 * the packet because join request wasn't finished.
-		*/
+		 */
 		usleep(50000);
 	}
 
 	if (user_param.work_rdma_cm == OFF) {
 
-		// Prepare IB resources for rtr/rts.
+		/* Prepare IB resources for rtr/rts. */
 		if (ctx_connect(&ctx,rem_dest,&user_param,my_dest)) {
 			fprintf(stderr," Unable to Connect the HCA's through the link\n");
 			return 1;
 		}
 	}
 
-	// shaking hands and gather the other side info.
+	/* shaking hands and gather the other side info. */
 	if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
 		fprintf(stderr,"Failed to exchange data between server and clients\n");
 		return 1;
 	}
 
-    if (user_param.use_event) {
+	if (user_param.use_event) {
 
 		if (ibv_req_notify_cq(ctx.send_cq, 0)) {
 			fprintf(stderr, " Couldn't request CQ notification\n");
-            return 1;
-        }
+			return 1;
+		}
 
 		if (ibv_req_notify_cq(ctx.recv_cq, 0)) {
 			fprintf(stderr, " Couldn't request CQ notification\n");
-            return 1;
-        }
-    }
+			return 1;
+		}
+	}
 
 	if (user_param.output == FULL_VERBOSITY) {
-		if (user_param.report_per_port)
-		{
+		if (user_param.report_per_port) {
 			printf(RESULT_LINE_PER_PORT);
 			printf((user_param.report_fmt == MBS ? RESULT_FMT_PER_PORT : RESULT_FMT_G_PER_PORT));
 		}
-		else
-		{
+		else {
 			printf(RESULT_LINE);
 			printf((user_param.report_fmt == MBS ? RESULT_FMT : RESULT_FMT_G));
 		}
@@ -389,7 +387,7 @@ int main(int argc, char *argv[]) {
 	if (user_param.test_method == RUN_ALL) {
 
 		if (user_param.connection_type == UD)
-		   size_max_pow =  (int)UD_MSG_2_EXP(MTU_SIZE(user_param.curr_mtu)) + 1;
+			size_max_pow =  (int)UD_MSG_2_EXP(MTU_SIZE(user_param.curr_mtu)) + 1;
 
 		for (i = 1; i < size_max_pow ; ++i) {
 
@@ -416,8 +414,7 @@ int main(int argc, char *argv[]) {
 					ctx.credit_buf[j] = 0;
 			}
 
-			if (user_param.duplex)
-			{
+			if (user_param.duplex) {
 				if(run_iter_bi(&ctx,&user_param))
 					return 17;
 
@@ -439,13 +436,13 @@ int main(int argc, char *argv[]) {
 			if (user_param.duplex && user_param.test_type != DURATION) {
 				xchg_bw_reports(&user_comm, &my_bw_rep,&rem_bw_rep,atof(user_param.rem_version));
 				print_full_bw_report(&user_param, &my_bw_rep, &rem_bw_rep);
-                        }
+			}
 			if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
 				fprintf(stderr,"Failed to exchange data between server and clients\n");
 				return 1;
 			}
 
-			//Check if last iteration ended well in UC/UD
+			/* Check if last iteration ended well in UC/UD */
 			if (user_param.check_alive_exited) {
 				break;
 			}
@@ -552,15 +549,17 @@ int main(int argc, char *argv[]) {
 		fprintf(stderr," Trying to close this side resources\n");
 	}
 
-	// Destory all test resources, including Mcast if exists
+	/* Destory all test resources, including Mcast if exists */
 	if (send_destroy_ctx(&ctx,&user_param,&mcg_params)) {
 		fprintf(stderr,"Couldn't Destory all SEND resources\n");
 		return FAILURE;
 	}
-	if (user_param.work_rdma_cm == ON)
+	if (user_param.work_rdma_cm == ON) {
+		user_comm.rdma_params->work_rdma_cm = ON;
 		if (destroy_ctx(user_comm.rdma_ctx,user_comm.rdma_params)) {
 			fprintf(stderr,"Failed to destroy resources\n");
 			return 1;
+		}
 	}
 
 	if (!user_param.is_bw_limit_passed && (user_param.is_limit_bw == ON ) ) {
@@ -575,4 +574,3 @@ int main(int argc, char *argv[]) {
 
 	return 0;
 }
-
diff --git a/src/send_lat.c b/src/send_lat.c
index 8d40314..920b838 100755
--- a/src/send_lat.c
+++ b/src/send_lat.c
@@ -52,14 +52,14 @@
  *
  ******************************************************************************/
 static int set_mcast_group(struct pingpong_context *ctx,
-						   struct perftest_parameters *user_param,
-						   struct mcast_parameters *mcg_params) {
-
+		struct perftest_parameters *user_param,
+		struct mcast_parameters *mcg_params)
+{
 	int i;
 	struct ibv_port_attr port_attr;
 
 	if (ibv_query_gid(ctx->context,user_param->ib_port,user_param->gid_index,&mcg_params->port_gid)) {
-			return 1;
+		return 1;
 	}
 
 	if (ibv_query_pkey(ctx->context,user_param->ib_port,DEF_PKEY_IDX,&mcg_params->pkey)) {
@@ -76,7 +76,7 @@ static int set_mcast_group(struct pingpong_context *ctx,
 	set_multicast_gid(mcg_params,ctx->qp[0]->qp_num,(int)user_param->machine);
 
 	if (!strcmp(link_layer_str(user_param->link_type),"IB")) {
-		// Request for Mcast group create registery in SM.
+		/* Request for Mcast group create registery in SM. */
 		if (join_multicast_group(SUBN_ADM_METHOD_SET,mcg_params)) {
 			fprintf(stderr," Failed to Join Mcast request\n");
 			return 1;
@@ -99,10 +99,11 @@ static int set_mcast_group(struct pingpong_context *ctx,
  *
  ******************************************************************************/
 static int send_set_up_connection(struct pingpong_context *ctx,
-								  struct perftest_parameters *user_param,
-								  struct pingpong_dest *my_dest,
-								  struct mcast_parameters *mcg_params,
-								  struct perftest_comm *comm) {
+		struct perftest_parameters *user_param,
+		struct pingpong_dest *my_dest,
+		struct mcast_parameters *mcg_params,
+		struct perftest_comm *comm)
+{
 	int i;
 	srand48(getpid() * time(NULL));
 	union ibv_gid temp_gid;
@@ -112,8 +113,7 @@ static int send_set_up_connection(struct pingpong_context *ctx,
 			return -1;
 		}
 	}
-	for (i = 0; i < user_param->num_of_qps; i++)
-	{
+	for (i = 0; i < user_param->num_of_qps; i++) {
 		if (user_param->use_mcg) {
 
 			if (set_mcast_group(ctx,user_param,mcg_params)) {
@@ -132,7 +132,7 @@ static int send_set_up_connection(struct pingpong_context *ctx,
 
 		my_dest[i].psn = lrand48() & 0xffffff;
 
-		// We do not fail test upon lid above RoCE.
+		/* We do not fail test upon lid above RoCE. */
 		if (user_param->gid_index < 0) {
 			if (!my_dest->lid) {
 				fprintf(stderr," Local lid 0x0 detected,without any use of gid. Is SM running?\n");
@@ -166,8 +166,8 @@ static int send_set_up_connection(struct pingpong_context *ctx,
  *
  ******************************************************************************/
 static int send_destroy_ctx(struct pingpong_context *ctx,
-	struct perftest_parameters *user_param,
-	struct mcast_parameters *mcg_params)
+		struct perftest_parameters *user_param,
+		struct mcast_parameters *mcg_params)
 {
 	int i;
 	if (user_param->use_mcg) {
@@ -188,23 +188,23 @@ static int send_destroy_ctx(struct pingpong_context *ctx,
 
 			memcpy(mcg_params->mgid.raw,mcg_params->base_mgid.raw,16);
 
-            if (join_multicast_group(SUBN_ADM_METHOD_DELETE,mcg_params)) {
-                fprintf(stderr,"Couldn't Unregister the Mcast group on the SM\n");
-                return FAILURE;
-            }
-        }
-    }
-    return destroy_ctx(ctx,user_param);
+			if (join_multicast_group(SUBN_ADM_METHOD_DELETE,mcg_params)) {
+				fprintf(stderr,"Couldn't Unregister the Mcast group on the SM\n");
+				return FAILURE;
+			}
+		}
+	}
+	return destroy_ctx(ctx,user_param);
 }
 
 /******************************************************************************
  *
  ******************************************************************************/
-int main(int argc, char *argv[]) {
-
+int main(int argc, char *argv[])
+{
 	int                        i = 0;
 	int                        size_max_pow = 24;
-	int						   ret_val;
+	int			   ret_val;
 	struct report_options      report;
 	struct pingpong_context    ctx;
 	struct pingpong_dest	   *my_dest  = NULL;
@@ -225,7 +225,7 @@ int main(int argc, char *argv[]) {
 	strncpy(user_param.version, VERSION, sizeof(user_param.version));
 	user_param.r_flag  = &report;
 
-	// Configure the parameters values according to user arguments or defalut values.
+	/* Configure the parameters values according to user arguments or defalut values. */
 	ret_val = parser(&user_param,argv,argc);
 	if (ret_val) {
 		if (ret_val != VERSION_EXIT && ret_val != HELP_EXIT)
@@ -237,13 +237,13 @@ int main(int argc, char *argv[]) {
 		user_param.num_of_qps *= 2;
 	}
 
-	//Checking that the user did not run with RawEth. for this we have raw_etherent_bw test.
+	/* Checking that the user did not run with RawEth. for this we have raw_etherent_bw test. */
 	if (user_param.connection_type == RawEth) {
-        fprintf(stderr," This test cannot run Raw Ethernet QPs (you have chosen RawEth as connection type\n");
-        return FAILURE;
-    }
+		fprintf(stderr," This test cannot run Raw Ethernet QPs (you have chosen RawEth as connection type\n");
+		return FAILURE;
+	}
 
-	// Finding the IB device selected (or defalut if no selected).
+	/* Finding the IB device selected (or defalut if no selected). */
 	ib_dev = ctx_find_dev(user_param.ib_devname);
 	if (!ib_dev) {
 		fprintf(stderr," Unable to find the Infiniband/RoCE device\n");
@@ -253,20 +253,20 @@ int main(int argc, char *argv[]) {
 	if (user_param.use_mcg)
 		GET_STRING(mcg_params.ib_devname,ibv_get_device_name(ib_dev));
 
-	// Getting the relevant context from the device
+	/* Getting the relevant context from the device */
 	ctx.context = ibv_open_device(ib_dev);
 	if (!ctx.context) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return 1;
 	}
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_link(ctx.context,&user_param)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// copy the relevant user parameters to the comm struct + creating rdma_cm resources.
+	/* copy the relevant user parameters to the comm struct + creating rdma_cm resources. */
 	if (create_comm_struct(&user_comm,&user_param)) {
 		fprintf(stderr," Unable to create RDMA_CM resources\n");
 		return 1;
@@ -278,7 +278,7 @@ int main(int argc, char *argv[]) {
 		printf("************************************\n");
 	}
 
-	// Initialize the connection and print the local data.
+	/* Initialize the connection and print the local data. */
 	if (establish_connection(&user_comm)) {
 		fprintf(stderr," Unable to init the socket connection\n");
 		return FAILURE;
@@ -288,13 +288,13 @@ int main(int argc, char *argv[]) {
 
 	check_sys_data(&user_comm, &user_param);
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_mtu(ctx.context,&user_param, &user_comm)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// Print basic test information.
+	/* Print basic test information. */
 	ctx_print_test_info(&user_param);
 
 	ALLOCATE(my_dest , struct pingpong_dest , user_param.num_of_qps);
@@ -302,23 +302,23 @@ int main(int argc, char *argv[]) {
 	ALLOCATE(rem_dest , struct pingpong_dest , user_param.num_of_qps);
 	memset(rem_dest, 0, sizeof(struct pingpong_dest)*user_param.num_of_qps);
 
-	// Allocating arrays needed for the test.
+	/* Allocating arrays needed for the test. */
 	alloc_ctx(&ctx,&user_param);
 
-	// Create (if nessacery) the rdma_cm ids and channel.
+	/* Create (if nessacery) the rdma_cm ids and channel. */
 	if (user_param.work_rdma_cm == ON) {
 
-	    if (user_param.machine == CLIENT) {
+		if (user_param.machine == CLIENT) {
 			if (retry_rdma_connect(&ctx,&user_param)) {
 				fprintf(stderr,"Unable to perform rdma_client function\n");
 				return FAILURE;
 			}
 
 		} else {
-    		if (create_rdma_resources(&ctx,&user_param)) {
+			if (create_rdma_resources(&ctx,&user_param)) {
 				fprintf(stderr," Unable to create the rdma_resources\n");
 				return FAILURE;
-    		}
+			}
 			if (rdma_server_connect(&ctx,&user_param)) {
 				fprintf(stderr,"Unable to perform rdma_client function\n");
 				return FAILURE;
@@ -327,14 +327,14 @@ int main(int argc, char *argv[]) {
 
 	} else {
 
-		 // create all the basic IB resources (data buffer, PD, MR, CQ and events channel)
-	    if (ctx_init(&ctx,&user_param)) {
+		/* create all the basic IB resources (data buffer, PD, MR, CQ and events channel) */
+		if (ctx_init(&ctx,&user_param)) {
 			fprintf(stderr, " Couldn't create IB resources\n");
 			return FAILURE;
-	    }
+		}
 	}
 
-	// Set up the Connection.
+	/* Set up the Connection. */
 	if (send_set_up_connection(&ctx,&user_param,my_dest,&mcg_params,&user_comm)) {
 		fprintf(stderr," Unable to set up socket connection\n");
 		return 1;
@@ -346,7 +346,7 @@ int main(int argc, char *argv[]) {
 	user_comm.rdma_params->side = REMOTE;
 	for (i=0; i < user_param.num_of_qps; i++) {
 
-		// shaking hands and gather the other side info.
+		/* shaking hands and gather the other side info. */
 		if (ctx_hand_shake(&user_comm,&my_dest[i],&rem_dest[i])) {
 			fprintf(stderr,"Failed to exchange data between server and clients\n");
 			return 1;
@@ -355,15 +355,13 @@ int main(int argc, char *argv[]) {
 		ctx_print_pingpong_data(&rem_dest[i],&user_comm);
 	}
 
-        if (user_param.work_rdma_cm == OFF)
-        {
-                if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0]))
-                {
-                        fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
-                        fprintf(stderr," Please Try to use a different IP version.\n\n");
-                        return 1;
-                }
-        }
+	if (user_param.work_rdma_cm == OFF) {
+		if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0])) {
+			fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
+			fprintf(stderr," Please Try to use a different IP version.\n\n");
+			return 1;
+		}
+	}
 
 	if (user_param.use_mcg) {
 
@@ -372,7 +370,7 @@ int main(int argc, char *argv[]) {
 		mcg_params.base_mlid = mcg_params.mlid;
 		mcg_params.is_2nd_mgid_used = ON;
 		if (!strcmp(link_layer_str(user_param.link_type),"IB")) {
-			// Request for Mcast group create registery in SM.
+			/* Request for Mcast group create registery in SM. */
 			if (join_multicast_group(SUBN_ADM_METHOD_SET,&mcg_params)) {
 				fprintf(stderr," Failed to Join Mcast request\n");
 				return 1;
@@ -393,20 +391,20 @@ int main(int argc, char *argv[]) {
 
 	if (user_param.work_rdma_cm == OFF) {
 
-		// Prepare IB resources for rtr/rts.
+		/* Prepare IB resources for rtr/rts. */
 		if (ctx_connect(&ctx,rem_dest,&user_param,my_dest)) {
 			fprintf(stderr," Unable to Connect the HCA's through the link\n");
 			return 1;
 		}
 	}
 
-	// shaking hands and gather the other side info.
+	/* shaking hands and gather the other side info. */
 	if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
 		fprintf(stderr,"Failed to exchange data between server and clients\n");
 		return 1;
 	}
 
-    if (user_param.use_event) {
+	if (user_param.use_event) {
 
 		if (ibv_req_notify_cq(ctx.send_cq, 0)) {
 			fprintf(stderr, "Couldn't request RCQ notification\n");
@@ -417,7 +415,7 @@ int main(int argc, char *argv[]) {
 			fprintf(stderr, "Couldn't request RCQ notification\n");
 			return 1;
 		}
-    }
+	}
 	if (user_param.output == FULL_VERBOSITY) {
 		printf(RESULT_LINE);
 		printf("%s",(user_param.test_type == ITERATIONS) ? RESULT_FMT_LAT : RESULT_FMT_LAT_DUR);
@@ -435,14 +433,16 @@ int main(int argc, char *argv[]) {
 
 			user_param.size = (uint64_t)1 << i;
 
-			// Post recevie recv_wqes fo current message size
+			/* Post receive recv_wqes fo current message size */
 			if (ctx_set_recv_wqes(&ctx,&user_param)) {
 				fprintf(stderr," Failed to post receive recv_wqes\n");
 				return 1;
 			}
 
-			// Sync between the client and server so the client won't send packets
-			// Before the server has posted his receive wqes (in UC/UD it will result in a deadlock).
+			/* Sync between the client and server so the client won't send packets
+			 * Before the server has posted his receive wqes (in UC/UD it will result in a deadlock).
+			 */
+
 			if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
 				fprintf(stderr,"Failed to exchange data between server and clients\n");
 				return 1;
@@ -456,14 +456,16 @@ int main(int argc, char *argv[]) {
 
 	} else {
 
-		// Post recevie recv_wqes fo current message size
+		/* Post recevie recv_wqes fo current message size */
 		if (ctx_set_recv_wqes(&ctx,&user_param)) {
 			fprintf(stderr," Failed to post receive recv_wqes\n");
 			return 1;
 		}
 
-		// Sync between the client and server so the client won't send packets
-		// Before the server has posted his receive wqes (in UC/UD it will result in a deadlock).
+		/* Sync between the client and server so the client won't send packets
+		 * Before the server has posted his receive wqes (in UC/UD it will result in a deadlock).
+		 */
+
 		if (ctx_hand_shake(&user_comm,my_dest,rem_dest)) {
 			fprintf(stderr,"Failed to exchange data between server and clients\n");
 			return 1;
diff --git a/src/write_bw.c b/src/write_bw.c
index 124d8cc..cb31410 100755
--- a/src/write_bw.c
+++ b/src/write_bw.c
@@ -45,10 +45,10 @@
 
 /******************************************************************************
  ******************************************************************************/
-int main(int argc, char *argv[]) {
-
-	int							ret_parser,i = 0;
-	struct ibv_device			*ib_dev = NULL;
+int main(int argc, char *argv[])
+{
+	int				ret_parser,i = 0;
+	struct ibv_device		*ib_dev = NULL;
 	struct pingpong_context		ctx;
 	struct pingpong_dest		*my_dest,*rem_dest;
 	struct perftest_parameters	user_param;
@@ -64,7 +64,7 @@ int main(int argc, char *argv[]) {
 	user_param.tst     = BW;
 	strncpy(user_param.version, VERSION, sizeof(user_param.version));
 
-	// Configure the parameters values according to user arguments or default values.
+	/* Configure the parameters values according to user arguments or default values. */
 	ret_parser = parser(&user_param,argv,argc);
 	if (ret_parser) {
 		if (ret_parser != VERSION_EXIT && ret_parser != HELP_EXIT)
@@ -76,27 +76,27 @@ int main(int argc, char *argv[]) {
 		user_param.num_of_qps *= 2;
 	}
 
-	// Finding the IB device selected (or default if none is selected).
+	/* Finding the IB device selected (or default if none is selected). */
 	ib_dev = ctx_find_dev(user_param.ib_devname);
 	if (!ib_dev) {
 		fprintf(stderr," Unable to find the Infiniband/RoCE device\n");
 		return 1;
 	}
 
-	// Getting the relevant context from the device
+	/* Getting the relevant context from the device */
 	ctx.context = ibv_open_device(ib_dev);
 	if (!ctx.context) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return 1;
 	}
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_link(ctx.context,&user_param)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// copy the relevant user parameters to the comm struct + creating rdma_cm resources.
+	/* copy the relevant user parameters to the comm struct + creating rdma_cm resources. */
 	if (create_comm_struct(&user_comm,&user_param)) {
 		fprintf(stderr," Unable to create RDMA_CM resources\n");
 		return 1;
@@ -108,7 +108,7 @@ int main(int argc, char *argv[]) {
 		printf("************************************\n");
 	}
 
-	// Initialize the connection and print the local data.
+	/* Initialize the connection and print the local data. */
 	if (establish_connection(&user_comm)) {
 		fprintf(stderr," Unable to init the socket connection\n");
 		return FAILURE;
@@ -118,12 +118,13 @@ int main(int argc, char *argv[]) {
 
 	check_sys_data(&user_comm, &user_param);
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_mtu(ctx.context,&user_param, &user_comm)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
-	// Print basic test information.
+
+	/* Print basic test information. */
 	ctx_print_test_info(&user_param);
 
 	ALLOCATE(my_dest , struct pingpong_dest , user_param.num_of_qps);
@@ -131,23 +132,23 @@ int main(int argc, char *argv[]) {
 	ALLOCATE(rem_dest , struct pingpong_dest , user_param.num_of_qps);
 	memset(rem_dest, 0, sizeof(struct pingpong_dest)*user_param.num_of_qps);
 
-	// Allocating arrays needed for the test.
+	/* Allocating arrays needed for the test. */
 	alloc_ctx(&ctx,&user_param);
 
-	// Create (if necessary) the rdma_cm ids and channel.
+	/* Create (if necessary) the rdma_cm ids and channel. */
 	if (user_param.work_rdma_cm == ON) {
 
-	    if (user_param.machine == CLIENT) {
+		if (user_param.machine == CLIENT) {
 			if (retry_rdma_connect(&ctx,&user_param)) {
 				fprintf(stderr,"Unable to perform rdma_client function\n");
 				return FAILURE;
 			}
 
 		} else {
-    		if (create_rdma_resources(&ctx,&user_param)) {
+			if (create_rdma_resources(&ctx,&user_param)) {
 				fprintf(stderr," Unable to create the rdma_resources\n");
 				return FAILURE;
-    		}
+			}
 			if (rdma_server_connect(&ctx,&user_param)) {
 				fprintf(stderr,"Unable to perform rdma_client function\n");
 				return FAILURE;
@@ -156,20 +157,20 @@ int main(int argc, char *argv[]) {
 
 	} else {
 
-	    // create all the basic IB resources (data buffer, PD, MR, CQ and events channel)
-	    if (ctx_init(&ctx, &user_param)) {
+		/* create all the basic IB resources (data buffer, PD, MR, CQ and events channel) */
+		if (ctx_init(&ctx, &user_param)) {
 			fprintf(stderr, " Couldn't create IB resources\n");
 			return FAILURE;
-	    }
+		}
 	}
 
-	// Set up the Connection.
+	/* Set up the Connection. */
 	if (set_up_connection(&ctx,&user_param,my_dest)) {
 		fprintf(stderr," Unable to set up socket connection\n");
 		return FAILURE;
 	}
 
-	// Print this machine QP information
+	/* Print this machine QP information */
 	for (i=0; i < user_param.num_of_qps; i++)
 		ctx_print_pingpong_data(&my_dest[i],&user_comm);
 
@@ -185,15 +186,13 @@ int main(int argc, char *argv[]) {
 		ctx_print_pingpong_data(&rem_dest[i],&user_comm);
 	}
 
-        if (user_param.work_rdma_cm == OFF)
-        {
-                if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0]))
-                {
-                        fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
-                        fprintf(stderr," Please Try to use a different IP version.\n\n");
-                        return 1;
-                }
-        }
+	if (user_param.work_rdma_cm == OFF) {
+		if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0])) {
+			fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
+			fprintf(stderr," Please Try to use a different IP version.\n\n");
+			return 1;
+		}
+	}
 
 	if (user_param.work_rdma_cm == OFF) {
 		if (ctx_connect(&ctx,rem_dest,&user_param,my_dest)) {
@@ -202,7 +201,7 @@ int main(int argc, char *argv[]) {
 		}
 	}
 
-	// An additional handshake is required after moving qp to RTR.
+	/* An additional handshake is required after moving qp to RTR. */
 	if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
 		fprintf(stderr," Failed to exchange data between server and clients\n");
 		return FAILURE;
@@ -221,7 +220,7 @@ int main(int argc, char *argv[]) {
 		printf((user_param.cpu_util_data.enable ? RESULT_EXT_CPU_UTIL : RESULT_EXT));
 	}
 
-	// For half duplex tests, server just waits for client to exit
+	/* For half duplex tests, server just waits for client to exit */
 	if (user_param.machine == SERVER && !user_param.duplex) {
 
 		if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
@@ -249,6 +248,7 @@ int main(int argc, char *argv[]) {
 				fprintf(stderr, "Failed to destroy resources\n");
 				return 1;
 			}
+			user_comm.rdma_params->work_rdma_cm = ON;
 			return destroy_ctx(user_comm.rdma_ctx,user_comm.rdma_params);
 		}
 
@@ -263,8 +263,8 @@ int main(int argc, char *argv[]) {
 			ctx_set_send_wqes(&ctx,&user_param,rem_dest);
 
 			if(perform_warm_up(&ctx,&user_param)) {
-					fprintf(stderr,"Problems with warm up\n");
-					return 1;
+				fprintf(stderr,"Problems with warm up\n");
+				return 1;
 			}
 
 			if(user_param.duplex) {
@@ -291,7 +291,7 @@ int main(int argc, char *argv[]) {
 			if (user_param.duplex) {
 				xchg_bw_reports(&user_comm, &my_bw_rep,&rem_bw_rep,atof(user_param.rem_version));
 				print_full_bw_report(&user_param, &my_bw_rep, &rem_bw_rep);
-            }
+			}
 		}
 
 	} else if (user_param.test_method == RUN_REGULAR) {
@@ -306,11 +306,11 @@ int main(int argc, char *argv[]) {
 		}
 
 		if(user_param.duplex) {
-				if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
-					fprintf(stderr,"Failed to sync between server and client between different msg sizes\n");
-					return 1;
-				}
+			if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
+				fprintf(stderr,"Failed to sync between server and client between different msg sizes\n");
+				return 1;
 			}
+		}
 
 		if(run_iter_bw(&ctx,&user_param)) {
 			fprintf(stderr," Failed to complete run_iter_bw function successfully\n");
@@ -356,7 +356,7 @@ int main(int argc, char *argv[]) {
 			printf(RESULT_LINE);
 	}
 
-	// For half duplex tests, server just waits for client to exit
+	/* For half duplex tests, server just waits for client to exit */
 	if (user_param.machine == CLIENT && !user_param.duplex) {
 
 		if (ctx_hand_shake(&user_comm,&my_dest[0],&rem_dest[0])) {
@@ -366,9 +366,10 @@ int main(int argc, char *argv[]) {
 
 		xchg_bw_reports(&user_comm, &my_bw_rep,&rem_bw_rep,atof(user_param.rem_version));
 	}
-	// Closing connection.
+
+	/* Closing connection. */
 	if (ctx_close_connection(&user_comm,&my_dest[0],&rem_dest[0])) {
-	 	fprintf(stderr,"Failed to close connection between server and client\n");
+		fprintf(stderr,"Failed to close connection between server and client\n");
 		return 1;
 	}
 
@@ -390,9 +391,9 @@ int main(int argc, char *argv[]) {
 			fprintf(stderr, "Failed to destroy resources\n");
 			return 1;
 		}
+		user_comm.rdma_params->work_rdma_cm = ON;
 		return destroy_ctx(user_comm.rdma_ctx,user_comm.rdma_params);
 	}
 
 	return destroy_ctx(&ctx,&user_param);
 }
-
diff --git a/src/write_lat.c b/src/write_lat.c
index e195c0e..5e83260 100755
--- a/src/write_lat.c
+++ b/src/write_lat.c
@@ -49,15 +49,15 @@
 /******************************************************************************
  *
  ******************************************************************************/
-int main(int argc, char *argv[]) {
-
-	int                         ret_parser,i = 0;
-	struct report_options       report;
-	struct pingpong_context     ctx;
-	struct pingpong_dest	    *my_dest  = NULL;
-	struct pingpong_dest	    *rem_dest = NULL;
-	struct ibv_device           *ib_dev;
-	struct perftest_parameters  user_param;
+int main(int argc, char *argv[])
+{
+	int				ret_parser,i = 0;
+	struct report_options		report;
+	struct pingpong_context		ctx;
+	struct pingpong_dest		*my_dest  = NULL;
+	struct pingpong_dest		*rem_dest = NULL;
+	struct ibv_device		*ib_dev;
+	struct perftest_parameters	user_param;
 	struct perftest_comm		user_comm;
 
 	/* init default values to user's parameters */
@@ -70,7 +70,7 @@ int main(int argc, char *argv[]) {
 	user_param.r_flag  = &report;
 	strncpy(user_param.version, VERSION, sizeof(user_param.version));
 
-	// Configure the parameters values according to user arguments or defalut values.
+	/* Configure the parameters values according to user arguments or defalut values. */
 	ret_parser = parser(&user_param,argv,argc);
 	if (ret_parser) {
 		if (ret_parser != VERSION_EXIT && ret_parser != HELP_EXIT)
@@ -82,27 +82,27 @@ int main(int argc, char *argv[]) {
 		user_param.num_of_qps *= 2;
 	}
 
-	// Finding the IB device selected (or defalut if no selected).
+	/* Finding the IB device selected (or defalut if no selected). */
 	ib_dev = ctx_find_dev(user_param.ib_devname);
 	if (!ib_dev) {
 		fprintf(stderr," Unable to find the Infiniband/RoCE device\n");
 		return FAILURE;
 	}
 
-	// Getting the relevant context from the device
+	/* Getting the relevant context from the device */
 	ctx.context = ibv_open_device(ib_dev);
 	if (!ctx.context) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return 1;
 	}
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_link(ctx.context,&user_param)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// copy the relevant user parameters to the comm struct + creating rdma_cm resources.
+	/* copy the relevant user parameters to the comm struct + creating rdma_cm resources. */
 	if (create_comm_struct(&user_comm,&user_param)) {
 		fprintf(stderr," Unable to create RDMA_CM resources\n");
 		return 1;
@@ -114,7 +114,7 @@ int main(int argc, char *argv[]) {
 		printf("************************************\n");
 	}
 
-	// Initialize the connection and print the local data.
+	/* Initialize the connection and print the local data. */
 	if (establish_connection(&user_comm)) {
 		fprintf(stderr," Unable to init the socket connection\n");
 		return FAILURE;
@@ -124,13 +124,13 @@ int main(int argc, char *argv[]) {
 
 	check_sys_data(&user_comm, &user_param);
 
-	// See if MTU and link type are valid and supported.
+	/* See if MTU and link type are valid and supported. */
 	if (check_mtu(ctx.context,&user_param, &user_comm)) {
 		fprintf(stderr, " Couldn't get context for the device\n");
 		return FAILURE;
 	}
 
-	// Print basic test information.
+	/* Print basic test information. */
 	ctx_print_test_info(&user_param);
 
 	ALLOCATE(my_dest , struct pingpong_dest , user_param.num_of_qps);
@@ -138,10 +138,10 @@ int main(int argc, char *argv[]) {
 	ALLOCATE(rem_dest , struct pingpong_dest , user_param.num_of_qps);
 	memset(rem_dest, 0, sizeof(struct pingpong_dest)*user_param.num_of_qps);
 
-	// Allocating arrays needed for the test.
+	/* Allocating arrays needed for the test. */
 	alloc_ctx(&ctx,&user_param);
 
-	// Create (if nessacery) the rdma_cm ids and channel.
+	/* Create (if nessacery) the rdma_cm ids and channel. */
 	if (user_param.work_rdma_cm == ON) {
 
 		if (user_param.machine == CLIENT) {
@@ -151,10 +151,10 @@ int main(int argc, char *argv[]) {
 			}
 
 		} else {
-    		if (create_rdma_resources(&ctx,&user_param)) {
+			if (create_rdma_resources(&ctx,&user_param)) {
 				fprintf(stderr," Unable to create the rdma_resources\n");
 				return FAILURE;
-    		}
+			}
 			if (rdma_server_connect(&ctx,&user_param)) {
 				fprintf(stderr,"Unable to perform rdma_client function\n");
 				return FAILURE;
@@ -163,14 +163,14 @@ int main(int argc, char *argv[]) {
 
 	} else {
 
-		// create all the basic IB resources (data buffer, PD, MR, CQ and events channel)
-	    if (ctx_init(&ctx,&user_param)) {
+		/* create all the basic IB resources (data buffer, PD, MR, CQ and events channel) */
+		if (ctx_init(&ctx,&user_param)) {
 			fprintf(stderr, " Couldn't create IB resources\n");
 			return FAILURE;
-	    }
+		}
 	}
 
-	// Set up the Connection.
+	/* Set up the Connection. */
 	if (set_up_connection(&ctx,&user_param,my_dest)) {
 		fprintf(stderr," Unable to set up socket connection\n");
 		return 1;
@@ -179,7 +179,7 @@ int main(int argc, char *argv[]) {
 	for (i=0; i < user_param.num_of_qps; i++)
 		ctx_print_pingpong_data(&my_dest[i],&user_comm);
 
-	// shaking hands and gather the other side info.
+	/* shaking hands and gather the other side info. */
 	if (ctx_hand_shake(&user_comm,my_dest,rem_dest)) {
 		fprintf(stderr,"Failed to exchange data between server and clients\n");
 		return 1;
@@ -188,7 +188,7 @@ int main(int argc, char *argv[]) {
 	user_comm.rdma_params->side = REMOTE;
 	for (i=0; i < user_param.num_of_qps; i++) {
 
-		// shaking hands and gather the other side info.
+		/* shaking hands and gather the other side info. */
 		if (ctx_hand_shake(&user_comm,&my_dest[i],&rem_dest[i])) {
 			fprintf(stderr,"Failed to exchange data between server and clients\n");
 			return 1;
@@ -197,29 +197,26 @@ int main(int argc, char *argv[]) {
 		ctx_print_pingpong_data(&rem_dest[i],&user_comm);
 	};
 
-        if (user_param.work_rdma_cm == OFF)
-        {
-                if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0]))
-                {
-                        fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
-                        fprintf(stderr," Please Try to use a different IP version.\n\n");
-                        return 1;
-                }
-        }
-
 	if (user_param.work_rdma_cm == OFF) {
+		if (ctx_check_gid_compatibility(&my_dest[0], &rem_dest[0])) {
+			fprintf(stderr,"\n Found Incompatibility issue with GID types.\n");
+			fprintf(stderr," Please Try to use a different IP version.\n\n");
+			return 1;
+		}
+	}
 
+	if (user_param.work_rdma_cm == OFF) {
 		if (ctx_connect(&ctx,rem_dest,&user_param,my_dest)) {
 			fprintf(stderr," Unable to Connect the HCA's through the link\n");
 			return 1;
 		}
 	}
 
-	// An additional handshake is required after moving qp to RTR.
+	/* An additional handshake is required after moving qp to RTR. */
 	if (ctx_hand_shake(&user_comm,my_dest,rem_dest)) {
-        fprintf(stderr,"Failed to exchange data between server and clients\n");
-        return 1;
-    }
+		fprintf(stderr,"Failed to exchange data between server and clients\n");
+		return 1;
+	}
 
 	ctx_set_send_wqes(&ctx,&user_param,rem_dest);
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ofed/perftest.git



More information about the Pkg-ofed-commits mailing list