IB/core: Add support for masked atomic operations

Previous thread: Revert "ima: remove ACPI dependency" by Linux Kernel Mailing List on Thursday, May 20, 2010 - 10:59 am. (1 message)

Next thread: IPoIB: Allow disabling/enabling TSO on the fly through ethtool by Linux Kernel Mailing List on Thursday, May 20, 2010 - 10:59 am. (1 message)
From: Linux Kernel Mailing List
Date: Thursday, May 20, 2010 - 10:59 am

Gitweb:     http://git.kernel.org/linus/5e80ba8ff0bd33ff4af2365969a231cbdb98cafb
Commit:     5e80ba8ff0bd33ff4af2365969a231cbdb98cafb
Parent:     0eddb519b9127c73d53db4bf3ec1d45b13f844d1
Author:     Vladimir Sokolovsky <vlad@mellanox.co.il>
AuthorDate: Wed Apr 14 17:23:01 2010 +0300
Committer:  Roland Dreier <rolandd@cisco.com>
CommitDate: Wed Apr 21 16:37:48 2010 -0700

    IB/core: Add support for masked atomic operations
    
     - Add new IB_WR_MASKED_ATOMIC_CMP_AND_SWP and IB_WR_MASKED_ATOMIC_FETCH_AND_ADD
       send opcodes that can be used to post "masked atomic compare and
       swap" and "masked atomic fetch and add" work request respectively.
     - Add masked_atomic_cap capability.
     - Add mask fields to atomic struct of ib_send_wr
     - Add new opcodes to ib_wc_opcode
    
    The new operations are described more precisely below:
    
    * 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
    pseudo code 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 generation and packet format for MskCmpSwap is as for
    standard IB Atomic operations.
    
    * 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 ...
Previous thread: Revert "ima: remove ACPI dependency" by Linux Kernel Mailing List on Thursday, May 20, 2010 - 10:59 am. (1 message)

Next thread: IPoIB: Allow disabling/enabling TSO on the fly through ethtool by Linux Kernel Mailing List on Thursday, May 20, 2010 - 10:59 am. (1 message)