All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RFC] osmtest/osmt_multicast.c: fix strict aliasing breakage warning
@ 2009-10-22 12:00 Sasha Khapyorsky
  0 siblings, 0 replies; only message in thread
From: Sasha Khapyorsky @ 2009-10-22 12:00 UTC (permalink / raw)
  To: linux-rdma


This eliminates compile warning (with >= gcc-4.4.0 and -O2 -Wall flags):

warning: dereferencing pointer ‘p_mc_res’ does break strict-aliasing rules

resulted by assignment (and later pointer use) like:

	ib_sa_mad_t res_sa_mad;
	ib_member_rec_t *p_mc_res;

	p_mc_res = ib_sa_mad_get_payload_ptr(&res_sa_mad);

ib_mad_t structure doesn't match p_mc_res pointer type and seems that
this violates gcc-4.4 strict aliasing rule.

After some googling around such and similar issues I found nothing
smarter than to shut this up by aggregating ib_mad_t structure into an
union where one of its members would match 'p_mc_res' pointer type.

Thoughts and/or any better ideas?

Signed-off-by: Sasha Khapyorsky <sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org>
---
 opensm/osmtest/osmt_multicast.c |  311 ++++++++++++++++++++-------------------
 1 files changed, 156 insertions(+), 155 deletions(-)

diff --git a/opensm/osmtest/osmt_multicast.c b/opensm/osmtest/osmt_multicast.c
index 2c6480f..e1a1899 100644
--- a/opensm/osmtest/osmt_multicast.c
+++ b/opensm/osmtest/osmt_multicast.c
@@ -464,8 +464,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	char gid_str2[INET6_ADDRSTRLEN];
 	ib_api_status_t status;
 	ib_member_rec_t mc_req_rec;
+	union {
+		ib_sa_mad_t sa_mad;
+		ib_member_rec_t mcmr;
+	} res;
+	ib_sa_mad_t *sa_mad;
 	ib_member_rec_t *p_mc_res;
-	ib_sa_mad_t res_sa_mad;
 	uint64_t comp_mask = 0;
 	ib_net64_t remote_port_guid = 0x0;
 	cl_qmap_t *p_mgrp_mlid_tbl;
@@ -545,7 +549,8 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	p_mgrp_mlid_tbl = &p_osmt->exp_subn.mgrp_mlid_tbl;
 	osmt_init_mc_query_rec(p_osmt, &mc_req_rec);
 
-	p_mc_res = ib_sa_mad_get_payload_ptr(&res_sa_mad);
+	sa_mad = &res.sa_mad;
+	p_mc_res = ib_sa_mad_get_payload_ptr(sa_mad);
 
 	/* Only when we are on single mode check flow - do the count comparison, otherwise skip */
 	if (p_osmt->opt.mmode == 1 || p_osmt->opt.mmode == 3) {
@@ -603,7 +608,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 		status = osmt_send_mcast_request(p_osmt, 0xff,	/* User Defined query Set */
 						 &mc_req_rec, comp_mask,
-						 &res_sa_mad);
+						 sa_mad);
 
 		OSM_LOG(&p_osmt->log, OSM_LOG_INFO,
 			"Joining an existing IPoIB multicast group\n");
@@ -659,7 +664,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 			mc_req_rec.mtu, mc_req_rec.rate);
 		status = osmt_send_mcast_request(p_osmt, 0xff,	/* User Defined query */
 						 &mc_req_rec, comp_mask,
-						 &res_sa_mad);
+						 sa_mad);
 		OSM_LOG(&p_osmt->log, OSM_LOG_INFO,
 			"Sent Join request using response values, response is : %s\n",
 			ib_get_err_str(status));
@@ -686,7 +691,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 0xee,	/* User Defined query Get */
-					 &mc_req_rec, comp_mask, &res_sa_mad);
+					 &mc_req_rec, comp_mask, sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status == IB_SUCCESS) {
@@ -715,7 +720,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 0xee,	/* User Defined query Get */
-					 &mc_req_rec, comp_mask, &res_sa_mad);
+					 &mc_req_rec, comp_mask, sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status == IB_SUCCESS) {
@@ -748,16 +753,16 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    ((ib_net16_t) (res_sa_mad.status & IB_SMP_STATUS_MASK)) !=
+	    ((ib_net16_t) (sa_mad->status & IB_SMP_STATUS_MASK)) !=
 	    IB_SA_MAD_STATUS_INSUF_COMPS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02EE: "
 			"Expectedd REMOTE ERROR IB_SA_MAD_STATUS_INSUF_COMPS got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -779,16 +784,16 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    ((ib_net16_t) (res_sa_mad.status & IB_SMP_STATUS_MASK)) !=
+	    ((ib_net16_t) (sa_mad->status & IB_SMP_STATUS_MASK)) !=
 	    IB_SA_MAD_STATUS_INSUF_COMPS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02ED: "
 			"Expectedd REMOTE ERROR IB_SA_MAD_STATUS_INSUF_COMPS got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -814,16 +819,16 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    ((ib_net16_t) (res_sa_mad.status & IB_SMP_STATUS_MASK)) !=
+	    ((ib_net16_t) (sa_mad->status & IB_SMP_STATUS_MASK)) !=
 	    IB_SA_MAD_STATUS_INSUF_COMPS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02EC: "
 			"Expected REMOTE ERROR IB_SA_MAD_STATUS_INSUF_COMPS got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -845,16 +850,16 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    ((ib_net16_t) (res_sa_mad.status & IB_SMP_STATUS_MASK)) !=
+	    ((ib_net16_t) (sa_mad->status & IB_SMP_STATUS_MASK)) !=
 	    IB_SA_MAD_STATUS_INSUF_COMPS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02EA: "
 			"Expected REMOTE ERROR IB_SA_MAD_STATUS_INSUF_COMPS got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -878,16 +883,16 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    ((ib_net16_t) (res_sa_mad.status & IB_SMP_STATUS_MASK)) !=
+	    ((ib_net16_t) (sa_mad->status & IB_SMP_STATUS_MASK)) !=
 	    IB_SA_MAD_STATUS_INSUF_COMPS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02E9: "
 			"Expected REMOTE ERROR IB_SA_MAD_STATUS_INSUF_COMPS got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -906,15 +911,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID) {
+	    sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0207: "
 			"Expected REMOTE ERROR IB_SA_MAD_STATUS_REQ_INVALID got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -932,15 +937,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID) {
+	    sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0208: "
 			"Expected REMOTE ERROR IB_SA_MAD_STATUS_REQ_INVALID got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -958,15 +963,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID) {
+	    sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02AB: "
 			"Expected REMOTE ERROR IB_SA_MAD_STATUS_REQ_INVALID got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -984,15 +989,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID) {
+	    sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02AC: "
 			"Expected REMOTE ERROR IB_SA_MAD_STATUS_REQ_INVALID got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1010,15 +1015,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID) {
+	    sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02AD: "
 			"Expected REMOTE ERROR IB_SA_MAD_STATUS_REQ_INVALID got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1034,15 +1039,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID) {
+	    sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02AE: "
 			"Expected REMOTE ERROR IB_SA_MAD_STATUS_REQ_INVALID got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1060,15 +1065,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID) {
+	    sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02AF: "
 			"Expected REMOTE ERROR IB_SA_MAD_STATUS_REQ_INVALID got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1097,16 +1102,16 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    ((ib_net16_t) (res_sa_mad.status & IB_SMP_STATUS_MASK)) !=
+	    ((ib_net16_t) (sa_mad->status & IB_SMP_STATUS_MASK)) !=
 	    IB_SA_MAD_STATUS_INSUF_COMPS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02A8: "
 			"Expected REMOTE ERROR IB_SA_MAD_STATUS_INSUF_COMPS got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1117,7 +1122,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02AA: "
 			"Could not get all MC Records in subnet, got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1152,16 +1157,16 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    ((ib_net16_t) (res_sa_mad.status & IB_SMP_STATUS_MASK)) !=
+	    ((ib_net16_t) (sa_mad->status & IB_SMP_STATUS_MASK)) !=
 	    IB_SA_MAD_STATUS_INSUF_COMPS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02A7: "
 			"Expected REMOTE ERROR IB_SA_MAD_STATUS_INSUF_COMPS got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1190,16 +1195,16 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR ||
-	    ((ib_net16_t) (res_sa_mad.status & IB_SMP_STATUS_MASK)) !=
+	    ((ib_net16_t) (sa_mad->status & IB_SMP_STATUS_MASK)) !=
 	    IB_SA_MAD_STATUS_INSUF_COMPS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02A6: "
 			"Expected REMOTE ERROR IB_SA_MAD_STATUS_INSUF_COMPS got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1220,12 +1225,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_RATE_SEL | IB_MCR_COMPMASK_RATE;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02A5: "
 			"Failed to create MCG for MGID=0 with higher than minimum RATE - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1244,12 +1249,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_RATE_SEL | IB_MCR_COMPMASK_RATE;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0211: "
 			"Failed to create MCG for MGID=0 with less than highest RATE - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1267,12 +1272,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_MTU_SEL | IB_MCR_COMPMASK_MTU;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0238: "
 			"Failed to create MCG for MGID=0 with less than highest MTU - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1289,12 +1294,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_MTU_SEL | IB_MCR_COMPMASK_MTU;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0239: "
 			"Failed to create MCG for MGID=0 with higher than lowest MTU - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1320,12 +1325,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_RATE_SEL | IB_MCR_COMPMASK_RATE;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0240: "
 			"Failed to create MCG for MGID=0 with exact MTU & RATE - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1347,12 +1352,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_RATE_SEL | IB_MCR_COMPMASK_RATE;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0241: "
 			"Failed to create MCG for MGID=0 with exact RATE - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1374,12 +1379,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_MTU_SEL | IB_MCR_COMPMASK_MTU;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0242: "
 			"Failed to create MCG for MGID=0 with exact MTU - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1428,12 +1433,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_LIFE | IB_MCR_COMPMASK_LIFE_SEL;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0210: "
 			"Failed to create MCG for MGID=0 - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1461,15 +1466,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1,	/* join */
-					 &mc_req_rec, comp_mask, &res_sa_mad);
+					 &mc_req_rec, comp_mask, sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if ((status != IB_REMOTE_ERROR) ||
-	    (res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID)) {
+	    (sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID)) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0301: "
 			"Tried joining group that shouldn't have existed - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1483,13 +1488,13 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 			  sizeof gid_str));
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0211: "
 			"Failed to create MCG for MGID=%s (o15.0.1.6) - got %s/%s\n",
 			inet_ntop(AF_INET6, good_mgid.raw, gid_str,
 				  sizeof gid_str), ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1521,15 +1526,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	mc_req_rec.mgid.raw[0] = 0xFA;
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if ((status != IB_REMOTE_ERROR) ||
-	    (res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID)) {
+	    (sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID)) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0213: "
 			"Failed to recognize MGID error for MGID=0xFA - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1544,15 +1549,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.scope_state = mc_req_rec.scope_state & 0x2F;	/* local scope */
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if ((status != IB_REMOTE_ERROR) ||
-	    (res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID)) {
+	    (sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID)) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0214: "
 			"Failed to recognize MGID error for A01B with link-local bit (status %s) (rem status %s)\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1567,15 +1572,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if ((status != IB_REMOTE_ERROR) ||
-	    (res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID)) {
+	    (sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID)) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0215: "
 			"Failed to recognize MGID PREFIX error for MGID=0xEF - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1592,13 +1597,13 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.mgid.raw[1] = 0x1F;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0216: "
 			"Failed to create MCG for MGID=%s - got %s/%s\n",
 			inet_ntop(AF_INET6, good_mgid.raw, gid_str,
 				  sizeof gid_str), ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1619,16 +1624,16 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.mgid.raw[1] = 0x22;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if ((status != IB_REMOTE_ERROR) ||
-	    (res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID)) {
+	    (sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID)) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0217: "
 			"Failed to recognize create with invalid flags value 0x2 - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1641,12 +1646,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.mgid = osm_link_local_mgid;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0218: "
 			"Failed to create MCG for MGID=0xFF02:0:0:0:0:0:0:1 - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1672,15 +1677,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.scope_state = 0x22;	/* link-local scope, non-member state */
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if ((status != IB_REMOTE_ERROR) ||
-	    (res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID)) {
+	    (sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID)) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0219: "
 			"Failed to recognize create with JoinState != FullMember - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1693,12 +1698,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.scope_state = 0x23;	/* link-local scope, non member and full member */
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0220: "
 			"Failed to create MCG with valid join state 0x3 - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1720,15 +1725,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.scope_state = 0x24;	/* link-local scope, send only member */
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if ((status != IB_REMOTE_ERROR) ||
-	    (res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID)) {
+	    (sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID)) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0221: "
 			"Failed to recognize create with JoinState != FullMember - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1743,12 +1748,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.scope_state = 0x2F;	/* link-local scope, Full member with all other bits turned on */
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0222: "
 			"Failed to create MCG with valid join state 0xF - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1771,11 +1776,11 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_PORT_GID | IB_MCR_COMPMASK_JOIN_STATE;
 
 	status = osmt_send_mcast_request(p_osmt, 0x1,	/* SubnAdmSet */
-					 &mc_req_rec, comp_mask, &res_sa_mad);
+					 &mc_req_rec, comp_mask, sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02CC: "
 			"Failed to join MCG with valid req, returned status = %s\n",
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1798,23 +1803,23 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	/* first, make sure  that the group exists */
 	mc_req_rec.scope_state = 0x21;
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02CD: "
 			"Failed to create/join as full member - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
 	mc_req_rec.scope_state = 0x22;	/* link-local scope, non-member */
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02D1: "
 			"Failed to update existing MGID - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1845,7 +1850,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.scope_state = 0x26;
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 0, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR) {
@@ -1859,12 +1864,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	/* link-local scope, NonMember bit, the FullMember bit should stay */
 	mc_req_rec.scope_state = 0x22;
 	status = osmt_send_mcast_request(p_osmt, 0, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02D3: "
 			"Failed to partially update JoinState : %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -1883,12 +1888,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.scope_state = 0x24;	/* link-local scope, send only  member */
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02C0: "
 			"Failed to update existing MCG - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1906,12 +1911,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.scope_state = 0x21;	/* link-local scope, full member */
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02C2: "
 			"Failed to update existing MGID - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -1931,12 +1936,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.scope_state = 0x22;	/* link-local scope,non member */
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02C4: "
 			"Failed to update existing MGID - got %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 	OSM_LOG(&p_osmt->log, OSM_LOG_INFO,
@@ -1976,15 +1981,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_RATE_SEL | IB_MCR_COMPMASK_RATE;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if ((status != IB_REMOTE_ERROR) ||
-	    (res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID)) {
+	    (sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID)) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02C6: "
 			"Failed to catch BAD RATE joining an existing MGID: %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -2001,15 +2006,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_MTU_SEL | IB_MCR_COMPMASK_MTU;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if ((status != IB_REMOTE_ERROR) ||
-	    (res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID)) {
+	    (sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID)) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02C7: "
 			"Failed to catch BAD RATE (higher than max) joining an existing MGID: %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -2026,15 +2031,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_MTU_SEL | IB_MCR_COMPMASK_MTU;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if ((status != IB_REMOTE_ERROR) ||
-	    (res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID)) {
+	    (sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID)) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02C8: "
 			"Failed to catch BAD RATE (less than min) joining an existing MGID: %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -2055,12 +2060,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.scope_state = 0x22;
 
 	status = osmt_send_mcast_request(p_osmt, 0, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02C9: "
 			"Fail to partially update JoinState during delete: %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -2079,12 +2084,12 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	mc_req_rec.scope_state = 0x25;
 	status = osmt_send_mcast_request(p_osmt, 0, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02CB: "
 			"Failed to update JoinState during delete: %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -2108,14 +2113,14 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1,	/* join */
-					 &mc_req_rec, comp_mask, &res_sa_mad);
+					 &mc_req_rec, comp_mask, sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status != IB_REMOTE_ERROR) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02BC: "
 			"Succeeded Joining Deleted Group: %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -2131,15 +2136,15 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.scope_state = 0x21;	/* delete full member */
 
 	status = osmt_send_mcast_request(p_osmt, 0,	/* delete flag */
-					 &mc_req_rec, comp_mask, &res_sa_mad);
+					 &mc_req_rec, comp_mask, sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if ((status != IB_REMOTE_ERROR) ||
-	    (res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID)) {
+	    (sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID)) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02BD: "
 			"Failed to catch BAD delete from IPoIB: %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -2158,13 +2163,13 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_LIFE | IB_MCR_COMPMASK_LIFE_SEL;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02BE: "
 			"Failed to create MCG for %s - got %s/%s\n",
 			inet_ntop(AF_INET6, good_mgid.raw, gid_str,
 				  sizeof gid_str), ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		goto Exit;
 	}
 
@@ -2173,7 +2178,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 		"Checking Full Delete of a group (o15.0.1.14)...\n");
 	mc_req_rec.scope_state = 0x21;	/* the FullMember is the current JoinState */
 	status = osmt_send_mcast_request(p_osmt, 0, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS)
 		goto Exit;
 
@@ -2189,16 +2194,16 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	mc_req_rec.scope_state = 0x21;	/* delete full member */
 
 	status = osmt_send_mcast_request(p_osmt, 0,	/* delete flag */
-					 &mc_req_rec, comp_mask, &res_sa_mad);
+					 &mc_req_rec, comp_mask, sa_mad);
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if ((status != IB_REMOTE_ERROR) ||
-	    (res_sa_mad.status != IB_SA_MAD_STATUS_REQ_INVALID)) {
+	    (sa_mad->status != IB_SA_MAD_STATUS_REQ_INVALID)) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 0223: "
 			"Failed to catch BAD delete from IPoIB: %s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -2219,7 +2224,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 	    IB_MCR_COMPMASK_MTU_SEL | IB_MCR_COMPMASK_MTU;
 
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	if (status != IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02EB: "
 			"Failed to create new mgrp\n");
@@ -2240,14 +2245,14 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_START "\n");
 	status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec, comp_mask,
-					 &res_sa_mad);
+					 sa_mad);
 	OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
 	if (status == IB_SUCCESS) {
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02E4: "
 			"Expected REMOTE ERROR got:%s/%s\n",
 			ib_get_err_str(status),
-			ib_get_mad_status_str((ib_mad_t *) (&res_sa_mad)));
+			ib_get_mad_status_str((ib_mad_t *) sa_mad));
 		status = IB_ERROR;
 		goto Exit;
 	}
@@ -2306,14 +2311,13 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 		comp_mask = IB_MCR_COMPMASK_MGID | IB_MCR_COMPMASK_PORT_GID | IB_MCR_COMPMASK_QKEY | IB_MCR_COMPMASK_PKEY | IB_MCR_COMPMASK_SL | IB_MCR_COMPMASK_FLOW | IB_MCR_COMPMASK_JOIN_STATE | IB_MCR_COMPMASK_TCLASS;	/* all above are required */
 
 		status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec,
-						 comp_mask, &res_sa_mad);
+						 comp_mask, sa_mad);
 		if (status != IB_SUCCESS) {
 			OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02B4: "
 				"Could not join on behalf of remote port 0x%016"
 				PRIx64 " remote status: %s\n",
 				cl_ntoh64(remote_port_guid),
-				ib_get_mad_status_str((ib_mad_t
-						       *) (&res_sa_mad)));
+				ib_get_mad_status_str((ib_mad_t *) sa_mad));
 			status = IB_ERROR;
 			goto Exit;
 		}
@@ -2336,7 +2340,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 
 		status = osmt_send_mcast_request(p_osmt, 0,	/* delete flag */
 						 &mc_req_rec,
-						 comp_mask, &res_sa_mad);
+						 comp_mask, sa_mad);
 
 		OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, EXPECTING_ERRORS_END "\n");
 
@@ -2348,8 +2352,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 					  p_mgrp->mcmember_rec.mgid.raw,
 					  gid_str, sizeof gid_str),
 				ib_get_err_str(status),
-				ib_get_mad_status_str((ib_mad_t
-						       *) (&res_sa_mad)));
+				ib_get_mad_status_str((ib_mad_t *) sa_mad));
 			status = IB_ERROR;
 			goto Exit;
 		}
@@ -2367,7 +2370,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 		    IB_MCR_COMPMASK_PORT_GID | IB_MCR_COMPMASK_JOIN_STATE;
 		status = osmt_send_mcast_request(p_osmt, 0,	/* delete flag */
 						 &mc_req_rec,
-						 comp_mask, &res_sa_mad);
+						 comp_mask, sa_mad);
 		if (status != IB_SUCCESS) {
 			OSM_LOG(&p_osmt->log, OSM_LOG_ERROR, "ERR 02B0: "
 				"Failed to delete mgid with remote port guid MGID : "
@@ -2376,8 +2379,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 					  p_mgrp->mcmember_rec.mgid.raw,
 					  gid_str, sizeof gid_str),
 				ib_get_err_str(status),
-				ib_get_mad_status_str((ib_mad_t
-						       *) (&res_sa_mad)));
+				ib_get_mad_status_str((ib_mad_t *) sa_mad));
 			goto Exit;
 		}
 	} else
@@ -2412,8 +2414,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 			comp_mask = IB_MCR_COMPMASK_MGID | IB_MCR_COMPMASK_PORT_GID | IB_MCR_COMPMASK_QKEY | IB_MCR_COMPMASK_PKEY | IB_MCR_COMPMASK_SL | IB_MCR_COMPMASK_FLOW | IB_MCR_COMPMASK_JOIN_STATE | IB_MCR_COMPMASK_TCLASS |	/* all above are required */
 			    IB_MCR_COMPMASK_MLID;
 			status = osmt_send_mcast_request(p_osmt, 1, &mc_req_rec,
-							 comp_mask,
-							 &res_sa_mad);
+							 comp_mask, sa_mad);
 			if (status == IB_SUCCESS) {
 				cur_mlid = cl_ntoh16(p_mc_res->mlid);
 				/* Save the mlid created in test_created_mlids map */
@@ -2433,7 +2434,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 				osm_dump_mc_record(&p_osmt->log, p_mc_res,
 						   OSM_LOG_VERBOSE);
 				goto Exit;
-			} else if ((res_sa_mad.status & IB_SMP_STATUS_MASK) ==
+			} else if ((sa_mad->status & IB_SMP_STATUS_MASK) ==
 				   IB_SA_MAD_STATUS_NO_RESOURCES)
 				/* You can quietly exit the loop since no available mlid in SA DB
 				   i.e. reached the maximum valid avalable mlid */
@@ -2492,7 +2493,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 				mc_req_rec.scope_state);
 			status = osmt_send_mcast_request(p_osmt, 0,	/* delete flag */
 							 &mc_req_rec, comp_mask,
-							 &res_sa_mad);
+							 sa_mad);
 			if (status != IB_SUCCESS) {
 				OSM_LOG(&p_osmt->log, OSM_LOG_ERROR,
 					"ERR 02FF: Failed to delete MGID : %s"
@@ -2502,7 +2503,7 @@ ib_api_status_t osmt_run_mcast_flow(IN osmtest_t * const p_osmt)
 						  gid_str, sizeof gid_str),
 					ib_get_err_str(status),
 					ib_get_mad_status_str((ib_mad_t *)
-							      (&res_sa_mad)));
+							      sa_mad));
 				fail_to_delete_mcg++;
 			}
 		} else
-- 
1.6.5.1

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2009-10-22 12:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-22 12:00 [PATCH RFC] osmtest/osmt_multicast.c: fix strict aliasing breakage warning Sasha Khapyorsky

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.