]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Don't free the work queue entry that we're using to hold the scatter-gather
authorjmallett <jmallett@FreeBSD.org>
Mon, 29 Nov 2010 21:04:00 +0000 (21:04 +0000)
committerjmallett <jmallett@FreeBSD.org>
Mon, 29 Nov 2010 21:04:00 +0000 (21:04 +0000)
commite4700dbe992ecea72d4f07afbfa3ecd5dd21586f
tree815f4119f68097ad62c107e3ef2c38abc65dec7f
parent0ea34870f88c7ebc41847365459d29781c736002
Don't free the work queue entry that we're using to hold the scatter-gather
list on exit from the transmit path.  The scatter-gather list itself can be
asynchronously DMAed to the transmit hardware, and we could actually lock up
the transmitter if any of a number of races around this were lost.

Instead, let the PKO free the scatter-gather list when it is done with it, and
use the "i" bit in each segment of the packet to avoid having them go into the
FPA.

This fixes an unrecoverable transmit stall under transmit load.

MFC after: 3 days
sys/mips/cavium/octe/ethernet-tx.c