ixgbe: Fix ixgbe_tx_map error path
Subsystems (2)
PATCH 1/1 ixgbe: Fix ixgbe_tx_map error path
Commit e5a43549f7a58509a91b299a51337d386697b92c (ixgbe: remove skb_dma_map/unmap calls from driver) looks to have introduced a bug in ixgbe_tx_map. If we get an error from a PCI DMA call, we loop backwards through count until it becomes -1 and return that.
The caller of ixgbe_tx_map expects 0 on error, so return that instead.
---
drivers/net/ixgbe/ixgbe_main.c +1 -1
@@ -5174,7 +5174,7 @@ dma_error:ixgbe_unmap_and_free_tx_resource (adapter, tx_buffer_info); } -return count; +return 0 ; } static void ixgbe_tx_queue(struct ixgbe_adapter *adapter,
Actually it looks like the bug for ixgbe is in the while (count >= 0) check. It should be just while (count > 0) insead.
It also appears there is an issue I may have introduced in igb as well. I will go back through the drivers and see about submitting some patches to address these issues.
Thanks,
Alex
-----Original Message-----
From: Anton Blanchard [mailto:[email protected]]
Sent: Tuesday, January 12, 2010 3:02 AM
To: Kirsher, Jeffrey T; Brandeburg, Jesse; Allan, Bruce W; Waskiewicz Jr, Peter P; Ronciak, John; Skidmore, Donald C; Zou, Yi; Duyck, Alexander H
Cc: [email protected]; [email protected]
Subject: [PATCH] ixgbe: Fix ixgbe_tx_map error path
Commit e5a43549f7a58509a91b299a51337d386697b92c (ixgbe: remove skb_dma_map/unmap calls from driver) looks to have introduced a bug in ixgbe_tx_map. If we get an error from a PCI DMA call, we loop backwards through count until it becomes -1 and return that.
The caller of ixgbe_tx_map expects 0 on error, so return that instead.
---
drivers/net/ixgbe/ixgbe_main.c +1 -1
@@ -5174,7 +5174,7 @@ dma_error:ixgbe_unmap_and_free_tx_resource (adapter, tx_buffer_info); } -return count; +return 0 ; } static void ixgbe_tx_queue(struct ixgbe_adapter *adapter,
Quoted 10 lines · Alexander H
Actually it looks like the bug for ixgbe is in the while (count >= 0) check. It should be just while (count > 0) insead.
It also appears there is an issue I may have introduced in igb as well. I will go back through the drivers and see about submitting some patches to address these issues.
Thanks,
Alex
It looks like we actually have some other patches in place that are addressing the count >= 0 issue. This patch addresses the remaining return value of -1 issues for ixgbe. I think we should probably pull it into Jeff's tree for testing, and I will generate a separate patch for the igb issues.
Thanks,
Alex
Quoted 34 lines
-----Original Message-----
From: Anton Blanchard [mailto:[email protected]]
Sent: Tuesday, January 12, 2010 3:02 AM
To: Kirsher, Jeffrey T; Brandeburg, Jesse; Allan, Bruce W; Waskiewicz Jr, Peter P; Ronciak, John; Skidmore, Donald C; Zou, Yi; Duyck, Alexander H
Cc: [email protected]; [email protected]
Subject: [PATCH] ixgbe: Fixixgbe_tx_maperror pathCommit
e5a43549f7a58509a91b299a51337d386697b92c(ixgbe: remove skb_dma_map/unmap calls from driver) looks to have introduced a bug inixgbe_tx_map. If we get an error from a PCI DMA call, we loop backwards
through count until it becomes -1 and return that.The caller of
ixgbe_tx_mapexpects 0 on error, so return that instead.---
drivers/net/ixgbe/ixgbe_main.c +1
-1@@ -5174,7 +5174,7 @@ dma_error:ixgbe_unmap_and_free_tx_resource (adapter, tx_buffer_info); } -return count; +return 0 ; } static void ixgbe_tx_queue(struct ixgbe_adapter *adapter,