Lines Matching full:transaction

24  * A GSI transaction abstracts the behavior of a GSI channel by representing
28 * by the GSI transaction core, allowing users to simply describe commands
29 * to be performed. When a transaction has completed a callback function
31 * cleanup of resources associated with the transaction.
33 * To perform a command (or set of them), a user of the GSI transaction
34 * interface allocates a transaction, indicating the number of TREs required
36 * for use in the transaction and the allocation succeeds. This way
38 * as early as possible. All resources required to complete a transaction
39 * are allocated at transaction allocation time.
41 * Commands performed as part of a transaction are represented in an array
43 * transaction, and its entries are initialized using standard scatterlist
46 * Once a transaction's scatterlist structures have been initialized, the
47 * transaction is committed. The caller is responsible for mapping buffers
49 * the transaction. Between a successful allocation and commit of a
50 * transaction no errors should occur.
52 * Committing transfers ownership of the entire transaction to the GSI
53 * transaction core. The GSI transaction code formats the content of
57 * The last TRE in each transaction is marked to interrupt the AP when the
60 * TRE in the transaction is sufficient to indicate the full transaction
63 * When a transaction is complete, ipa_gsi_trans_complete() is called by the
65 * required before the transaction is freed.
237 /* Map a given ring entry index to the transaction associated with it */
245 /* Return the transaction mapped to a given ring entry */
253 /* Return the oldest completed transaction for a channel (or null) */
260 /* Move a transaction from the allocated list to the pending list */
273 /* Move a transaction and all of its predecessors from the pending list
284 /* Move this transaction and all predecessors to completed list */ in gsi_trans_move_complete()
291 /* Move a transaction from the completed list to the polled list */
327 /* Allocate a GSI transaction on a channel */
346 /* Allocate and initialize non-zero fields in the the transaction */ in gsi_channel_trans_alloc()
370 /* Free a previously-allocated transaction */
398 * (if present) info[] arrays, plus the transaction itself. in gsi_trans_free()
403 /* Add an immediate command to a transaction */
419 * When a transaction completes, the SGL is normally unmapped. in gsi_trans_cmd_add()
420 * A command transaction has direction DMA_NONE, which tells in gsi_trans_cmd_add()
438 /* Add a page transfer to a transaction. It will fill the only TRE. */
453 trans->used++; /* Transaction now owns the (DMA mapped) page */ in gsi_trans_page_add()
458 /* Add an SKB transfer to a transaction. No other TREs will be used. */
478 trans->used += used; /* Transaction now owns the (DMA mapped) skb */ in gsi_trans_skb_add()
531 * __gsi_trans_commit() - Common GSI transaction commit code
532 * @trans: Transaction to commit
536 * Maps a transaction pointer to the last ring entry used for the transaction,
537 * so it can be recovered when it completes. Moves the transaction to the
589 /* Associate the last TRE with the transaction */ in __gsi_trans_commit()
603 /* Commit a GSI transaction */
612 /* Commit a GSI transaction and wait for it to complete */
628 /* Commit a GSI transaction and wait for it to complete, with timeout */
633 unsigned long remaining = 1; /* In case of empty transaction */ in gsi_trans_commit_wait_timeout()
650 /* Process the completion of a transaction; called while polling */
721 /* Initialize a channel's GSI transaction info */
732 /* The map array is used to determine what transaction is associated in gsi_channel_trans_init()
744 * Worst case is one TRE per transaction (but we actually limit in gsi_channel_trans_init()
746 * for transactions (including transaction structures) based on in gsi_channel_trans_init()
757 /* A transaction uses a scatterlist array to represent the data in gsi_channel_trans_init()
758 * transfers implemented by the transaction. Each scatterlist in gsi_channel_trans_init()
759 * element is used to fill a single TRE when the transaction is in gsi_channel_trans_init()
763 * All TREs in a transaction must fit within the channel's TLV FIFO. in gsi_channel_trans_init()
764 * A transaction on a channel can allocate as many TREs as that but in gsi_channel_trans_init()
774 * of outstanding transactions and their resources. A transaction in gsi_channel_trans_init()
776 * what the transaction might need. Transaction resource pools are in gsi_channel_trans_init()