]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
ioat: implement a private tx_list
authorDan Williams <dan.j.williams@intel.com>
Wed, 9 Sep 2009 00:53:02 +0000 (17:53 -0700)
committerDan Williams <dan.j.williams@intel.com>
Wed, 9 Sep 2009 00:53:02 +0000 (17:53 -0700)
Drop ioatdma's use of tx_list from struct dma_async_tx_descriptor in
preparation for removal of this field.

Cc: Maciej Sosnowski <maciej.sosnowski@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/dma/ioat/dma.c
drivers/dma/ioat/dma.h

index 17a518d0386f2094be5416909a4e8702ad9ac36b..21527b89590cce79295e5aa3f6eccc9c735522d9 100644 (file)
@@ -251,12 +251,12 @@ static dma_cookie_t ioat1_tx_submit(struct dma_async_tx_descriptor *tx)
        dev_dbg(to_dev(&ioat->base), "%s: cookie: %d\n", __func__, cookie);
 
        /* write address into NextDescriptor field of last desc in chain */
-       first = to_ioat_desc(tx->tx_list.next);
+       first = to_ioat_desc(desc->tx_list.next);
        chain_tail = to_ioat_desc(ioat->used_desc.prev);
        /* make descriptor updates globally visible before chaining */
        wmb();
        chain_tail->hw->next = first->txd.phys;
-       list_splice_tail_init(&tx->tx_list, &ioat->used_desc);
+       list_splice_tail_init(&desc->tx_list, &ioat->used_desc);
        dump_desc_dbg(ioat, chain_tail);
        dump_desc_dbg(ioat, first);
 
@@ -297,6 +297,7 @@ ioat_dma_alloc_descriptor(struct ioat_dma_chan *ioat, gfp_t flags)
 
        memset(desc, 0, sizeof(*desc));
 
+       INIT_LIST_HEAD(&desc_sw->tx_list);
        dma_async_tx_descriptor_init(&desc_sw->txd, &ioat->base.common);
        desc_sw->txd.tx_submit = ioat1_tx_submit;
        desc_sw->hw = desc;
@@ -521,7 +522,7 @@ ioat1_dma_prep_memcpy(struct dma_chan *c, dma_addr_t dma_dest,
 
        desc->txd.flags = flags;
        desc->len = total_len;
-       list_splice(&chain, &desc->txd.tx_list);
+       list_splice(&chain, &desc->tx_list);
        hw->ctl_f.int_en = !!(flags & DMA_PREP_INTERRUPT);
        hw->ctl_f.compl_write = 1;
        hw->tx_cnt = tx_cnt;
index d9d6a7e3cd7676c743912ff8700f4cf712ebef52..8966fa5453a797770a5f2d0f89165055efb11043 100644 (file)
@@ -157,7 +157,7 @@ ioat_is_complete(struct dma_chan *c, dma_cookie_t cookie,
  * struct ioat_desc_sw - wrapper around hardware descriptor
  * @hw: hardware DMA descriptor
  * @node: this descriptor will either be on the free list,
- *     or attached to a transaction list (async_tx.tx_list)
+ *     or attached to a transaction list (tx_list)
  * @txd: the generic software descriptor for all engines
  * @id: identifier for debug
  */
@@ -165,6 +165,7 @@ struct ioat_desc_sw {
        struct ioat_dma_descriptor *hw;
        struct list_head node;
        size_t len;
+       struct list_head tx_list;
        struct dma_async_tx_descriptor txd;
        #ifdef DEBUG
        int id;