[PATCH v2.6.28] gianfar: Fix DMA unmap invocations

Previous thread: Re: Fwd: [Bug 470774] New: [RFC1981-PMTU]Multicast Destination - One Router test failed by Brian Haley on Wednesday, November 12, 2008 - 8:12 am. (1 message)

Next thread: Fw: [Bug 12014] New: Incorrect Urgent Pointer in outgoing packets by Stephen Hemminger on Wednesday, November 12, 2008 - 9:27 am. (2 messages)
From: Andy Fleming
Date: Wednesday, November 12, 2008 - 9:07 am

We weren't unmapping DMA memory, which will break when gianfar gets used
on systems with more than 32-bits of memory.  Also, it's just plain wrong.

Signed-off-by: Andy Fleming <afleming@freescale.com>
---
 drivers/net/gianfar.c |   15 ++++++++-------
 1 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index 83a5cb6..c4af949 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -1407,6 +1407,10 @@ static int gfar_clean_tx_ring(struct net_device *dev)
 		if (bdp->status & TXBD_DEF)
 			dev->stats.collisions++;
 
+		/* Unmap the DMA memory */
+		dma_unmap_single(&priv->dev->dev, bdp->bufPtr,
+				bdp->length, DMA_TO_DEVICE);
+
 		/* Free the sk buffer associated with this TxBD */
 		dev_kfree_skb_irq(priv->tx_skbuff[priv->skb_dirtytx]);
 
@@ -1666,6 +1670,9 @@ int gfar_clean_rx_ring(struct net_device *dev, int rx_work_limit)
 
 		skb = priv->rx_skbuff[priv->skb_currx];
 
+		dma_unmap_single(&priv->dev->dev, bdp->bufPtr,
+				priv->rx_buffer_size, DMA_FROM_DEVICE);
+
 		/* We drop the frame if we failed to allocate a new buffer */
 		if (unlikely(!newskb || !(bdp->status & RXBD_LAST) ||
 				 bdp->status & RXBD_ERR)) {
@@ -1674,14 +1681,8 @@ int gfar_clean_rx_ring(struct net_device *dev, int rx_work_limit)
 			if (unlikely(!newskb))
 				newskb = skb;
 
-			if (skb) {
-				dma_unmap_single(&priv->dev->dev,
-						bdp->bufPtr,
-						priv->rx_buffer_size,
-						DMA_FROM_DEVICE);
-
+			if (skb)
 				dev_kfree_skb_any(skb);
-			}
 		} else {
 			/* Increment the number of packets */
 			dev->stats.rx_packets++;
-- 
1.5.4.GIT

--

Previous thread: Re: Fwd: [Bug 470774] New: [RFC1981-PMTU]Multicast Destination - One Router test failed by Brian Haley on Wednesday, November 12, 2008 - 8:12 am. (1 message)

Next thread: Fw: [Bug 12014] New: Incorrect Urgent Pointer in outgoing packets by Stephen Hemminger on Wednesday, November 12, 2008 - 9:27 am. (2 messages)