• Alex Elder's avatar
    net: ipa: use an array for transactions · 12382d11
    Alex Elder authored
    Transactions are always allocated one at a time.  The maximum number
    of them we could ever need occurs if each TRE is assigned to a
    transaction.  So a channel requires no more transactions than the
    number of TREs in its transfer ring.  That number is known to be a
    power-of-2 less than 65536.
    
    The transaction pool abstraction is used for other things, but for
    transactions we can use a simple array of transaction structures,
    and use a free index to indicate which entry in the array is the
    next one free for allocation.
    
    By having the number of elements in the array be a power-of-2, we
    can use an ever-incrementing 16-bit free index, and use it modulo
    the array size.  Distinguish a "trans_id" (whose value can exceed
    the number of entries in the transaction array) from a "trans_index"
    (which is less than the number of entries).
    Signed-off-by: default avatarAlex Elder <elder@linaro.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    12382d11
gsi.h 9.01 KB