summaryrefslogtreecommitdiff
path: root/sys/dev/sf/if_sf.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/sf/if_sf.c')
-rw-r--r--sys/dev/sf/if_sf.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/sf/if_sf.c b/sys/dev/sf/if_sf.c
index ac7717ecdcd6..69f5bc1bf6ed 100644
--- a/sys/dev/sf/if_sf.c
+++ b/sys/dev/sf/if_sf.c
@@ -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;
}