There's some races (likely in the BAR handling, sigh) which is causing
the pause/resume code to not be called completely symmetrically. I'll chase down the root cause of that soon; this at least works around the bug and tells me when it happens.
This commit is contained in:
parent
68ade6e8fa
commit
d11d65f442
@ -2976,7 +2976,19 @@ ath_tx_tid_resume(struct ath_softc *sc, struct ath_tid *tid)
|
||||
{
|
||||
ATH_TX_LOCK_ASSERT(sc);
|
||||
|
||||
tid->paused--;
|
||||
/*
|
||||
* There's some odd places where ath_tx_tid_resume() is called
|
||||
* when it shouldn't be; this works around that particular issue
|
||||
* until it's actually resolved.
|
||||
*/
|
||||
if (tid->paused == 0) {
|
||||
device_printf(sc->sc_dev, "%s: %6D: paused=0?\n",
|
||||
__func__,
|
||||
tid->an->an_node.ni_macaddr,
|
||||
":");
|
||||
} else {
|
||||
tid->paused--;
|
||||
}
|
||||
|
||||
DPRINTF(sc, ATH_DEBUG_SW_TX_CTRL, "%s: unpaused = %d\n",
|
||||
__func__, tid->paused);
|
||||
|
Loading…
x
Reference in New Issue
Block a user