diff options
| -rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index 4d76afd13868..6d5f31e94358 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |||
| @@ -8020,29 +8020,23 @@ static int ixgbe_tx_map(struct ixgbe_ring *tx_ring, | |||
| 8020 | return 0; | 8020 | return 0; |
| 8021 | dma_error: | 8021 | dma_error: |
| 8022 | dev_err(tx_ring->dev, "TX DMA map failed\n"); | 8022 | dev_err(tx_ring->dev, "TX DMA map failed\n"); |
| 8023 | tx_buffer = &tx_ring->tx_buffer_info[i]; | ||
| 8024 | 8023 | ||
| 8025 | /* clear dma mappings for failed tx_buffer_info map */ | 8024 | /* clear dma mappings for failed tx_buffer_info map */ |
| 8026 | while (tx_buffer != first) { | 8025 | for (;;) { |
| 8026 | tx_buffer = &tx_ring->tx_buffer_info[i]; | ||
| 8027 | if (dma_unmap_len(tx_buffer, len)) | 8027 | if (dma_unmap_len(tx_buffer, len)) |
| 8028 | dma_unmap_page(tx_ring->dev, | 8028 | dma_unmap_page(tx_ring->dev, |
| 8029 | dma_unmap_addr(tx_buffer, dma), | 8029 | dma_unmap_addr(tx_buffer, dma), |
| 8030 | dma_unmap_len(tx_buffer, len), | 8030 | dma_unmap_len(tx_buffer, len), |
| 8031 | DMA_TO_DEVICE); | 8031 | DMA_TO_DEVICE); |
| 8032 | dma_unmap_len_set(tx_buffer, len, 0); | 8032 | dma_unmap_len_set(tx_buffer, len, 0); |
| 8033 | 8033 | if (tx_buffer == first) | |
| 8034 | if (i--) | 8034 | break; |
| 8035 | if (i == 0) | ||
| 8035 | i += tx_ring->count; | 8036 | i += tx_ring->count; |
| 8036 | tx_buffer = &tx_ring->tx_buffer_info[i]; | 8037 | i--; |
| 8037 | } | 8038 | } |
| 8038 | 8039 | ||
| 8039 | if (dma_unmap_len(tx_buffer, len)) | ||
| 8040 | dma_unmap_single(tx_ring->dev, | ||
| 8041 | dma_unmap_addr(tx_buffer, dma), | ||
| 8042 | dma_unmap_len(tx_buffer, len), | ||
| 8043 | DMA_TO_DEVICE); | ||
| 8044 | dma_unmap_len_set(tx_buffer, len, 0); | ||
| 8045 | |||
| 8046 | dev_kfree_skb_any(first->skb); | 8040 | dev_kfree_skb_any(first->skb); |
| 8047 | first->skb = NULL; | 8041 | first->skb = NULL; |
| 8048 | 8042 | ||
