41 lines
1.3 KiB
Diff
41 lines
1.3 KiB
Diff
From a7ebd27a13757248863cd61e541af7fa9e7727ee Mon Sep 17 00:00:00 2001
|
|
From: Neil Turton <nturton@solarflare.com>
|
|
Date: Wed, 23 Dec 2009 13:47:13 +0000
|
|
Subject: [PATCH 3/8] sfc: Fix DMA mapping cleanup in case of an error in TSO
|
|
|
|
We need buffer->len to remain valid to work out the correct address to
|
|
be unmapped. We therefore need to clear buffer->len after the unmap
|
|
operation.
|
|
|
|
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/sfc/tx.c | 4 ++--
|
|
1 files changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/net/sfc/tx.c b/drivers/net/sfc/tx.c
|
|
index e669f94..a8b70ef 100644
|
|
--- a/drivers/net/sfc/tx.c
|
|
+++ b/drivers/net/sfc/tx.c
|
|
@@ -821,8 +821,6 @@ static void efx_enqueue_unwind(struct efx_tx_queue *tx_queue)
|
|
EFX_TXQ_MASK];
|
|
efx_tsoh_free(tx_queue, buffer);
|
|
EFX_BUG_ON_PARANOID(buffer->skb);
|
|
- buffer->len = 0;
|
|
- buffer->continuation = true;
|
|
if (buffer->unmap_len) {
|
|
unmap_addr = (buffer->dma_addr + buffer->len -
|
|
buffer->unmap_len);
|
|
@@ -836,6 +834,8 @@ static void efx_enqueue_unwind(struct efx_tx_queue *tx_queue)
|
|
PCI_DMA_TODEVICE);
|
|
buffer->unmap_len = 0;
|
|
}
|
|
+ buffer->len = 0;
|
|
+ buffer->continuation = true;
|
|
}
|
|
}
|
|
|
|
--
|
|
1.6.5.7
|
|
|