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:
parent
0219a42155
commit
0a4b345e9f
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user