Tweak the interrupt handler so that we call the txeof handler more often,

to hopefully prevent the TX DMA queue from filling up and never getting
flushed.
This commit is contained in:
Bill Paul 2001-08-15 17:46:57 +00:00
parent 0219a42155
commit 0a4b345e9f
2 changed files with 10 additions and 4 deletions

View File

@ -1094,7 +1094,10 @@ static void sf_intr(arg)
if (status & SF_ISR_RXDQ1_DMADONE)
sf_rxeof(sc);
if (status & SF_ISR_TX_TXDONE)
if (status & SF_ISR_TX_TXDONE ||
status & SF_ISR_TX_DMADONE ||
status & SF_ISR_TX_QUEUEDONE ||
status & SF_ISR_TX_LOFIFO)
sf_txeof(sc);
if (status & SF_ISR_ABNORMALINTR) {
@ -1305,7 +1308,7 @@ static void sf_start(ifp)
sc = ifp->if_softc;
SF_LOCK(sc);
if (!sc->sf_link) {
if (!sc->sf_link && ifp->if_snd.ifq_len < 10) {
SF_UNLOCK(sc);
return;
}

View File

@ -1094,7 +1094,10 @@ static void sf_intr(arg)
if (status & SF_ISR_RXDQ1_DMADONE)
sf_rxeof(sc);
if (status & SF_ISR_TX_TXDONE)
if (status & SF_ISR_TX_TXDONE ||
status & SF_ISR_TX_DMADONE ||
status & SF_ISR_TX_QUEUEDONE ||
status & SF_ISR_TX_LOFIFO)
sf_txeof(sc);
if (status & SF_ISR_ABNORMALINTR) {
@ -1305,7 +1308,7 @@ static void sf_start(ifp)
sc = ifp->if_softc;
SF_LOCK(sc);
if (!sc->sf_link) {
if (!sc->sf_link && ifp->if_snd.ifq_len < 10) {
SF_UNLOCK(sc);
return;
}