summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Paul <wpaul@FreeBSD.org>2001-08-15 17:46:57 +0000
committerBill Paul <wpaul@FreeBSD.org>2001-08-15 17:46:57 +0000
commit0a4b345e9f52ef91eea5c2a105fc63c04957b70b (patch)
tree9980987414c5e6a08360f568dcf8e7295523449f
parent0219a4215565cddeb1e24915d291bbb42181ed7c (diff)
Notes
-rw-r--r--sys/dev/sf/if_sf.c7
-rw-r--r--sys/pci/if_sf.c7
2 files changed, 10 insertions, 4 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;
}
diff --git a/sys/pci/if_sf.c b/sys/pci/if_sf.c
index ac7717ecdcd6..69f5bc1bf6ed 100644
--- a/sys/pci/if_sf.c
+++ b/sys/pci/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;
}