@@ -93,7 +93,8 @@ ib_api_status_t osm_req_get(IN osm_sm_t * sm, IN const osm_dr_path_t * p_path,
goto Exit;
}
- tid = cl_hton64((uint64_t) cl_atomic_inc(&sm->sm_trans_id));
+ tid = cl_hton64((uint64_t) cl_atomic_inc(&sm->sm_trans_id)
+ & (uint64_t)(0xFFFFFFFF));
OSM_LOG(sm->p_log, OSM_LOG_DEBUG,
"Getting %s (0x%X), modifier 0x%X, TID 0x%" PRIx64 "\n",
@@ -161,7 +162,8 @@ osm_madw_t *osm_prepare_req_set(IN osm_sm_t * sm, IN const osm_dr_path_t * p_pat
goto Exit;
}
- tid = cl_hton64((uint64_t) cl_atomic_inc(&sm->sm_trans_id));
+ tid = cl_hton64((uint64_t) cl_atomic_inc(&sm->sm_trans_id)
+ & (uint64_t)(0xFFFFFFFF));
OSM_LOG(sm->p_log, OSM_LOG_DEBUG,
"Setting %s (0x%X), modifier 0x%X, TID 0x%" PRIx64 "\n",
@@ -277,7 +279,8 @@ int osm_send_trap144(osm_sm_t * sm, ib_net16_t local)
smp->mgmt_class = IB_MCLASS_SUBN_LID;
smp->class_ver = 1;
smp->method = IB_MAD_METHOD_TRAP;
- smp->trans_id = cl_hton64((uint64_t) cl_atomic_inc(&sm->sm_trans_id));
+ smp->trans_id = cl_hton64((uint64_t) cl_atomic_inc(&sm->sm_trans_id)
+ & (uint64_t)(0xFFFFFFFF));
smp->attr_id = IB_MAD_ATTR_NOTICE;
ntc = (ib_mad_notice_attr_t *) smp->data;
cl_atomic() returns signed int32, so without the casting sm_trans_id > 0x7fffffff were messed up. Signed-off-by: Alex Netes <alexne@mellanox.com> --- opensm/osm_req.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)