summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/amso1100/c2_cq.c
diff options
context:
space:
mode:
authorSteve Wise <swise@opengridcomputing.com>2006-10-27 17:28:35 -0500
committerRoland Dreier <rolandd@cisco.com>2006-10-30 20:52:52 -0800
commit8de94ce19dd3c6fc6e9d9658da11cf3d76841ee5 (patch)
treea9dfc1ed6ebee7112a593cc6505563295185ace7 /drivers/infiniband/hw/amso1100/c2_cq.c
parent04d03bc576f244bfa9692452aab83fa357ac0d57 (diff)
IB/amso1100: Use dma_alloc_coherent() instead of kmalloc/dma_map_single
The Ammasso driver needs to use dma_alloc_coherent() for allocating memory that will be used by the HW for dma. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/amso1100/c2_cq.c')
-rw-r--r--drivers/infiniband/hw/amso1100/c2_cq.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/infiniband/hw/amso1100/c2_cq.c b/drivers/infiniband/hw/amso1100/c2_cq.c
index 9d7bcc5ade9..05c9154d46f 100644
--- a/drivers/infiniband/hw/amso1100/c2_cq.c
+++ b/drivers/infiniband/hw/amso1100/c2_cq.c
@@ -246,20 +246,17 @@ int c2_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify notify)
static void c2_free_cq_buf(struct c2_dev *c2dev, struct c2_mq *mq)
{
-
- dma_unmap_single(c2dev->ibdev.dma_device, pci_unmap_addr(mq, mapping),
- mq->q_size * mq->msg_size, DMA_FROM_DEVICE);
- free_pages((unsigned long) mq->msg_pool.host,
- get_order(mq->q_size * mq->msg_size));
+ dma_free_coherent(&c2dev->pcidev->dev, mq->q_size * mq->msg_size,
+ mq->msg_pool.host, pci_unmap_addr(mq, mapping));
}
static int c2_alloc_cq_buf(struct c2_dev *c2dev, struct c2_mq *mq, int q_size,
int msg_size)
{
- unsigned long pool_start;
+ u8 *pool_start;
- pool_start = __get_free_pages(GFP_KERNEL,
- get_order(q_size * msg_size));
+ pool_start = dma_alloc_coherent(&c2dev->pcidev->dev, q_size * msg_size,
+ &mq->host_dma, GFP_KERNEL);
if (!pool_start)
return -ENOMEM;
@@ -267,13 +264,10 @@ static int c2_alloc_cq_buf(struct c2_dev *c2dev, struct c2_mq *mq, int q_size,
0, /* index (currently unknown) */
q_size,
msg_size,
- (u8 *) pool_start,
+ pool_start,
NULL, /* peer (currently unknown) */
C2_MQ_HOST_TARGET);
- mq->host_dma = dma_map_single(c2dev->ibdev.dma_device,
- (void *)pool_start,
- q_size * msg_size, DMA_FROM_DEVICE);
pci_unmap_addr_set(mq, mapping, mq->host_dma);
return 0;