User Manual
Features Overview and ConfigurationRev 2.3-1.0.1
Mellanox Technologies
150
For further information on how to increase dom0_mem, please refer to:
http://support.citrix.com/article/CTX126531
b. Lower the
mlx4_vnic driver memory consumption by decreasing its RX/TX rings number and
length,
For further information, please refer to Section 3.2.5.3.4.1, “Module Parameters”, on page 146.
3.2.6 Advanced Transport
3.2.6.1 Atomic Operations
3.2.6.1.1 Atomic Operations in mlx5 Driver
Atomic Operations in Connect-IB® (mlx5 driver) are fully supported on big-endian machines
(e.g. PPC). Their support is limited on little-endian machines (e.g. x86)
When using
ibv_exp_query_device on little-endian machines with Connect-IB® the
attr.exp_atomic_cap is set to IBV_EXP_ATOMIC_HCA_REPLY_BE which indicates that if enabled,
the atomic operation replied value is big-endian and contradicts the host endianness.
To enable atomic operation with this endianness contradiction use the
ibv_exp_create_qp to
create the QP and set the
IBV_EXP_QP_CREATE_ATOMIC_BE_REPLY flag on exp_create_flags.
3.2.6.1.2 Enhanced Atomic Operations
ConnectX® implements a set of Extended Atomic Operations beyond those defined by the IB
spec. Atomicity guarantees, Atomic Ack generation, ordering rules and error behavior for this set
of extended Atomic operations is the same as that for IB standard Atomic operations (as defined
in section 9.4.5 of the IB spec).
3.2.6.1.2.1 Masked Compare and Swap (MskCmpSwap)
The MskCmpSwap atomic operation is an extension to the CmpSwap operation defined in the IB
spec. MskCmpSwap allows the user to select a portion of the 64 bit target data for the "compare"
check as well as to restrict the swap to a (possibly different) portion. The pseudocode below
describes the operation:
| atomic_response = *va
| if (!((compare_add ^ *va) & compare_add_mask)) then
| *va = (*va & ~(swap_mask)) | (swap & swap_mask)
|
| return atomic_response
The additional operands are carried in the Extended Transport Header. Atomic response genera-
tion and packet format for MskCmpSwap is as for standard IB Atomic operations.
3.2.6.1.2.2 Masked Fetch and Add (MFetchAdd)
The MFetchAdd Atomic operation extends the functionality of the standard IB FetchAdd by
allowing the user to split the target into multiple fields of selectable length. The atomic add is
done independently on each one of this fields. A bit set in the field_boundary parameter specifies
the field boundaries. The pseudocode below describes the operation:
| bit_adder(ci, b1, b2, *co)
| {
| value = ci + b1 + b2