summaryrefslogtreecommitdiffstats
path: root/sys/dev/en
diff options
context:
space:
mode:
authorkjc <kjc@FreeBSD.org>1998-10-09 11:48:22 +0000
committerkjc <kjc@FreeBSD.org>1998-10-09 11:48:22 +0000
commit280e105f418b8fc9f19c18d76e76810d7605ab25 (patch)
treecf520383ac7d3cae08ce56c1a9ed775811d27919 /sys/dev/en
parentaac7427316dcb7e06c54c6c78b84598834fa0db0 (diff)
downloadFreeBSD-src-280e105f418b8fc9f19c18d76e76810d7605ab25.zip
FreeBSD-src-280e105f418b8fc9f19c18d76e76810d7605ab25.tar.gz
fix a bug which could lock up a transmitter.
don't use the entire buffer space. if WRTX becomes equal to RDTX, the transmitter stops assuming the buffer is empty.
Diffstat (limited to 'sys/dev/en')
-rw-r--r--sys/dev/en/midway.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/en/midway.c b/sys/dev/en/midway.c
index 91b17b6..2e22fd1 100644
--- a/sys/dev/en/midway.c
+++ b/sys/dev/en/midway.c
@@ -2119,7 +2119,11 @@ again:
goto dequeue_drop;
}
- if (launch.need > sc->txslot[chan].bfree) {
+ /*
+ * note: don't use the entire buffer space. if WRTX becomes equal
+ * to RDTX, the transmitter stops assuming the buffer is empty! --kjc
+ */
+ if (launch.need >= sc->txslot[chan].bfree) {
EN_COUNT(sc->txoutspace);
#ifdef EN_DEBUG
printf("%s: tx%d: out of transmit space\n", sc->sc_dev.dv_xname, chan);
OpenPOWER on IntegriCloud