Re: [net-next 04/14] net: Fix issue with netdev_tx_reset_queue not resetting queue from XOFF state
flat view
From: Alexander Duyck <hidden>
Date: 2012-04-21 03:24:34
On Fri, Apr 20, 2012 at 2:31 PM, John Fastabend [off-list ref] wrote:
On 4/20/2012 2:19 PM, Tom Herbert wrote:quoted
Hi Jeff,quoted
@@ -3244,7 +3246,6 @@ static void igb_clean_tx_ring(struct igb_ring *tx_ring)buffer_info = &tx_ring->tx_buffer_info[i]; igb_unmap_and_free_tx_resource(tx_ring, buffer_info); } - netdev_tx_reset_queue(txring_txq(tx_ring));Why is it necessary to remove this? If rings are being freed with going through completion path then we would need this reset. Is this being done elsewhere maybe?Alex moved this into the igb_configure_tx_ring() iirc to catch an ethtool test case. He assured me when I reviewed the patch that igb_configure_tx_ring() would always be called before netif_carrier_on() so I think(?) that should be OK. The above removed case was called after netif_carrier_off() anyways.
I don't recall the exact reason now, as John said I think it had to do with the ethtool tests not using the same cleanup routine and leaving us in a bad state. I am pretty sure there was some path in which where the call was didn't work but I do not recall the exact details now. Most of the reason for moving it is due to the fact that the reset is now also clearing the bit, and from the driver perspective we didn't need it in two places. After looking it all over again, I suppose this causes a cosmetic issue for the bql "inflight" statistic in sysfs since the value will be retained until the interface is brought back up with this change. Is that an issue or something that can be lived with since the interface isn't active anyway in this case? Thanks, Alex