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 <[email protected]>
---
 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to