diff options
Diffstat (limited to 'drivers/dahdi/voicebus/voicebus_net.c')
-rw-r--r-- | drivers/dahdi/voicebus/voicebus_net.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/dahdi/voicebus/voicebus_net.c b/drivers/dahdi/voicebus/voicebus_net.c index 4a82333..7d4af7f 100644 --- a/drivers/dahdi/voicebus/voicebus_net.c +++ b/drivers/dahdi/voicebus/voicebus_net.c @@ -3,7 +3,7 @@ * * Written by Shaun Ruffell <sruffell@digium.com> * - * Copyright (C) 2010 Digium, Inc. + * Copyright (C) 2010-2011 Digium, Inc. * * All rights reserved. @@ -57,8 +57,9 @@ static void * skb_to_vbb(struct voicebus *vb, struct sk_buff *skb) { int res; - void *vbb; + struct vbb *vbb; const int COMMON_HEADER = 30; + dma_addr_t dma_addr; if (skb->len != (VOICEBUS_SFRAME_SIZE + COMMON_HEADER)) { dev_warn(&vb->pdev->dev, "Packet of length %d is not the " @@ -67,13 +68,15 @@ skb_to_vbb(struct voicebus *vb, struct sk_buff *skb) return NULL; } - vbb = voicebus_alloc(vb); + vbb = dma_pool_alloc(vb->pool, GFP_KERNEL, &dma_addr); if (!vbb) return NULL; + + vbb->dma_addr = dma_addr; res = skb_copy_bits(skb, COMMON_HEADER, vbb, VOICEBUS_SFRAME_SIZE); if (res) { dev_warn(&vb->pdev->dev, "Failed call to skb_copy_bits.\n"); - voicebus_free(vb, vbb); + dma_pool_free(vb->pool, vbb, vbb->dma_addr); return NULL; } return vbb; |