DAT_IB_FETCH_AND_ADD and DAT_IB_CMP_AND_SWAP values in provider_specific_attr are always set to TRUE.
Set their value according to the device atomic capability.
Signed-off-by: Arlin Davis <arlin.r.davis@intel.com>
Signed-off-by: Amir Hanania <amir.hanania@intel.com>
ia_attr->extension_version = DAT_IB_EXTENSION_VERSION;
tp->na.ib_ext = "TRUE";
tp->na.i_data = "TRUE";
- tp->na.f_add = "TRUE";
- tp->na.c_swap = "TRUE";
+#ifdef _OPENIB_MCM_
+ if (MFO_EP(&hca_ptr->ib_trans.addr) && tp->self.node) {
+ tp->na.f_add = "FALSE";
+ tp->na.c_swap = "FALSE";
+ }
+ else
+#endif
+ {
+ tp->na.f_add = (dev_attr.atomic_cap == IBV_ATOMIC_NONE) ? "FALSE" : "TRUE";
+ tp->na.c_swap = (dev_attr.atomic_cap == IBV_ATOMIC_NONE) ? "FALSE" : "TRUE";
+ }
#ifdef _OPENIB_MCM_
if (!MXF_EP(&hca_ptr->ib_trans.addr))
#endif