lkml.org 
[lkml]   [2010]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[077/116] iwlwifi: use dma_alloc_coherent
    2.6.32-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Stanislaw Gruszka <sgruszka@redhat.com>

    commit f36d04abe684f9e2b07c6ebe9f77ae20eb5c1e84 upstream.

    Change pci_alloc_consistent() to dma_alloc_coherent() so we can use
    GFP_KERNEL flag.

    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/net/wireless/iwlwifi/iwl-3945.c | 8 +++-----
    drivers/net/wireless/iwlwifi/iwl-core.c | 12 ++++++------
    drivers/net/wireless/iwlwifi/iwl-helpers.h | 7 ++++---
    drivers/net/wireless/iwlwifi/iwl-rx.c | 21 +++++++++++----------
    drivers/net/wireless/iwlwifi/iwl-tx.c | 23 ++++++++++++-----------
    drivers/net/wireless/iwlwifi/iwl3945-base.c | 16 ++++++++--------
    6 files changed, 44 insertions(+), 43 deletions(-)

    --- a/drivers/net/wireless/iwlwifi/iwl-3945.c
    +++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
    @@ -2545,11 +2545,9 @@ int iwl3945_hw_set_hw_params(struct iwl_
    memset((void *)&priv->hw_params, 0,
    sizeof(struct iwl_hw_params));

    - priv->shared_virt =
    - pci_alloc_consistent(priv->pci_dev,
    - sizeof(struct iwl3945_shared),
    - &priv->shared_phys);
    -
    + priv->shared_virt = dma_alloc_coherent(&priv->pci_dev->dev,
    + sizeof(struct iwl3945_shared),
    + &priv->shared_phys, GFP_KERNEL);
    if (!priv->shared_virt) {
    IWL_ERR(priv, "failed to allocate pci memory\n");
    mutex_unlock(&priv->mutex);
    --- a/drivers/net/wireless/iwlwifi/iwl-core.c
    +++ b/drivers/net/wireless/iwlwifi/iwl-core.c
    @@ -1598,9 +1598,9 @@ EXPORT_SYMBOL(iwl_uninit_drv);
    void iwl_free_isr_ict(struct iwl_priv *priv)
    {
    if (priv->ict_tbl_vir) {
    - pci_free_consistent(priv->pci_dev, (sizeof(u32) * ICT_COUNT) +
    - PAGE_SIZE, priv->ict_tbl_vir,
    - priv->ict_tbl_dma);
    + dma_free_coherent(&priv->pci_dev->dev,
    + (sizeof(u32) * ICT_COUNT) + PAGE_SIZE,
    + priv->ict_tbl_vir, priv->ict_tbl_dma);
    priv->ict_tbl_vir = NULL;
    }
    }
    @@ -1616,9 +1616,9 @@ int iwl_alloc_isr_ict(struct iwl_priv *p
    if (priv->cfg->use_isr_legacy)
    return 0;
    /* allocate shrared data table */
    - priv->ict_tbl_vir = pci_alloc_consistent(priv->pci_dev, (sizeof(u32) *
    - ICT_COUNT) + PAGE_SIZE,
    - &priv->ict_tbl_dma);
    + priv->ict_tbl_vir = dma_alloc_coherent(&priv->pci_dev->dev,
    + (sizeof(u32) * ICT_COUNT) + PAGE_SIZE,
    + &priv->ict_tbl_dma, GFP_KERNEL);
    if (!priv->ict_tbl_vir)
    return -ENOMEM;

    --- a/drivers/net/wireless/iwlwifi/iwl-helpers.h
    +++ b/drivers/net/wireless/iwlwifi/iwl-helpers.h
    @@ -80,8 +80,8 @@ static inline void iwl_free_fw_desc(stru
    struct fw_desc *desc)
    {
    if (desc->v_addr)
    - pci_free_consistent(pci_dev, desc->len,
    - desc->v_addr, desc->p_addr);
    + dma_free_coherent(&pci_dev->dev, desc->len,
    + desc->v_addr, desc->p_addr);
    desc->v_addr = NULL;
    desc->len = 0;
    }
    @@ -89,7 +89,8 @@ static inline void iwl_free_fw_desc(stru
    static inline int iwl_alloc_fw_desc(struct pci_dev *pci_dev,
    struct fw_desc *desc)
    {
    - desc->v_addr = pci_alloc_consistent(pci_dev, desc->len, &desc->p_addr);
    + desc->v_addr = dma_alloc_coherent(&pci_dev->dev, desc->len,
    + &desc->p_addr, GFP_KERNEL);
    return (desc->v_addr != NULL) ? 0 : -ENOMEM;
    }

    --- a/drivers/net/wireless/iwlwifi/iwl-rx.c
    +++ b/drivers/net/wireless/iwlwifi/iwl-rx.c
    @@ -345,10 +345,10 @@ void iwl_rx_queue_free(struct iwl_priv *
    }
    }

    - pci_free_consistent(priv->pci_dev, 4 * RX_QUEUE_SIZE, rxq->bd,
    - rxq->dma_addr);
    - pci_free_consistent(priv->pci_dev, sizeof(struct iwl_rb_status),
    - rxq->rb_stts, rxq->rb_stts_dma);
    + dma_free_coherent(&priv->pci_dev->dev, 4 * RX_QUEUE_SIZE, rxq->bd,
    + rxq->dma_addr);
    + dma_free_coherent(&priv->pci_dev->dev, sizeof(struct iwl_rb_status),
    + rxq->rb_stts, rxq->rb_stts_dma);
    rxq->bd = NULL;
    rxq->rb_stts = NULL;
    }
    @@ -357,7 +357,7 @@ EXPORT_SYMBOL(iwl_rx_queue_free);
    int iwl_rx_queue_alloc(struct iwl_priv *priv)
    {
    struct iwl_rx_queue *rxq = &priv->rxq;
    - struct pci_dev *dev = priv->pci_dev;
    + struct device *dev = &priv->pci_dev->dev;
    int i;

    spin_lock_init(&rxq->lock);
    @@ -365,12 +365,13 @@ int iwl_rx_queue_alloc(struct iwl_priv *
    INIT_LIST_HEAD(&rxq->rx_used);

    /* Alloc the circular buffer of Read Buffer Descriptors (RBDs) */
    - rxq->bd = pci_alloc_consistent(dev, 4 * RX_QUEUE_SIZE, &rxq->dma_addr);
    + rxq->bd = dma_alloc_coherent(dev, 4 * RX_QUEUE_SIZE, &rxq->dma_addr,
    + GFP_KERNEL);
    if (!rxq->bd)
    goto err_bd;

    - rxq->rb_stts = pci_alloc_consistent(dev, sizeof(struct iwl_rb_status),
    - &rxq->rb_stts_dma);
    + rxq->rb_stts = dma_alloc_coherent(dev, sizeof(struct iwl_rb_status),
    + &rxq->rb_stts_dma, GFP_KERNEL);
    if (!rxq->rb_stts)
    goto err_rb;

    @@ -387,8 +388,8 @@ int iwl_rx_queue_alloc(struct iwl_priv *
    return 0;

    err_rb:
    - pci_free_consistent(priv->pci_dev, 4 * RX_QUEUE_SIZE, rxq->bd,
    - rxq->dma_addr);
    + dma_free_coherent(&priv->pci_dev->dev, 4 * RX_QUEUE_SIZE, rxq->bd,
    + rxq->dma_addr);
    err_bd:
    return -ENOMEM;
    }
    --- a/drivers/net/wireless/iwlwifi/iwl-tx.c
    +++ b/drivers/net/wireless/iwlwifi/iwl-tx.c
    @@ -60,7 +60,8 @@ static const u16 default_tid_to_tx_fifo[
    static inline int iwl_alloc_dma_ptr(struct iwl_priv *priv,
    struct iwl_dma_ptr *ptr, size_t size)
    {
    - ptr->addr = pci_alloc_consistent(priv->pci_dev, size, &ptr->dma);
    + ptr->addr = dma_alloc_coherent(&priv->pci_dev->dev, size, &ptr->dma,
    + GFP_KERNEL);
    if (!ptr->addr)
    return -ENOMEM;
    ptr->size = size;
    @@ -73,7 +74,7 @@ static inline void iwl_free_dma_ptr(stru
    if (unlikely(!ptr->addr))
    return;

    - pci_free_consistent(priv->pci_dev, ptr->size, ptr->addr, ptr->dma);
    + dma_free_coherent(&priv->pci_dev->dev, ptr->size, ptr->addr, ptr->dma);
    memset(ptr, 0, sizeof(*ptr));
    }

    @@ -145,7 +146,7 @@ void iwl_tx_queue_free(struct iwl_priv *
    {
    struct iwl_tx_queue *txq = &priv->txq[txq_id];
    struct iwl_queue *q = &txq->q;
    - struct pci_dev *dev = priv->pci_dev;
    + struct device *dev = &priv->pci_dev->dev;
    int i, len;

    if (q->n_bd == 0)
    @@ -164,8 +165,8 @@ void iwl_tx_queue_free(struct iwl_priv *

    /* De-alloc circular buffer of TFDs */
    if (txq->q.n_bd)
    - pci_free_consistent(dev, priv->hw_params.tfd_size *
    - txq->q.n_bd, txq->tfds, txq->q.dma_addr);
    + dma_free_coherent(dev, priv->hw_params.tfd_size *
    + txq->q.n_bd, txq->tfds, txq->q.dma_addr);

    /* De-alloc array of per-TFD driver data */
    kfree(txq->txb);
    @@ -194,7 +195,7 @@ void iwl_cmd_queue_free(struct iwl_priv
    {
    struct iwl_tx_queue *txq = &priv->txq[IWL_CMD_QUEUE_NUM];
    struct iwl_queue *q = &txq->q;
    - struct pci_dev *dev = priv->pci_dev;
    + struct device *dev = &priv->pci_dev->dev;
    int i, len;

    if (q->n_bd == 0)
    @@ -209,8 +210,8 @@ void iwl_cmd_queue_free(struct iwl_priv

    /* De-alloc circular buffer of TFDs */
    if (txq->q.n_bd)
    - pci_free_consistent(dev, priv->hw_params.tfd_size *
    - txq->q.n_bd, txq->tfds, txq->q.dma_addr);
    + dma_free_coherent(dev, priv->hw_params.tfd_size * txq->q.n_bd,
    + txq->tfds, txq->q.dma_addr);

    /* deallocate arrays */
    kfree(txq->cmd);
    @@ -301,7 +302,7 @@ static int iwl_queue_init(struct iwl_pri
    static int iwl_tx_queue_alloc(struct iwl_priv *priv,
    struct iwl_tx_queue *txq, u32 id)
    {
    - struct pci_dev *dev = priv->pci_dev;
    + struct device *dev = &priv->pci_dev->dev;
    size_t tfd_sz = priv->hw_params.tfd_size * TFD_QUEUE_SIZE_MAX;

    /* Driver private data, only for Tx (not command) queues,
    @@ -320,8 +321,8 @@ static int iwl_tx_queue_alloc(struct iwl

    /* Circular buffer of transmit frame descriptors (TFDs),
    * shared with device */
    - txq->tfds = pci_alloc_consistent(dev, tfd_sz, &txq->q.dma_addr);
    -
    + txq->tfds = dma_alloc_coherent(dev, tfd_sz, &txq->q.dma_addr,
    + GFP_KERNEL);
    if (!txq->tfds) {
    IWL_ERR(priv, "pci_alloc_consistent(%zd) failed\n", tfd_sz);
    goto error;
    --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
    +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
    @@ -356,10 +356,10 @@ static int iwl3945_send_beacon_cmd(struc
    static void iwl3945_unset_hw_params(struct iwl_priv *priv)
    {
    if (priv->shared_virt)
    - pci_free_consistent(priv->pci_dev,
    - sizeof(struct iwl3945_shared),
    - priv->shared_virt,
    - priv->shared_phys);
    + dma_free_coherent(&priv->pci_dev->dev,
    + sizeof(struct iwl3945_shared),
    + priv->shared_virt,
    + priv->shared_phys);
    }

    static void iwl3945_build_tx_cmd_hwcrypto(struct iwl_priv *priv,
    @@ -1272,10 +1272,10 @@ static void iwl3945_rx_queue_free(struct
    }
    }

    - pci_free_consistent(priv->pci_dev, 4 * RX_QUEUE_SIZE, rxq->bd,
    - rxq->dma_addr);
    - pci_free_consistent(priv->pci_dev, sizeof(struct iwl_rb_status),
    - rxq->rb_stts, rxq->rb_stts_dma);
    + dma_free_coherent(&priv->pci_dev->dev, 4 * RX_QUEUE_SIZE, rxq->bd,
    + rxq->dma_addr);
    + dma_free_coherent(&priv->pci_dev->dev, sizeof(struct iwl_rb_status),
    + rxq->rb_stts, rxq->rb_stts_dma);
    rxq->bd = NULL;
    rxq->rb_stts = NULL;
    }



    \
     
     \ /
      Last update: 2010-03-31 02:07    [W:4.042 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site