diff options
author | kjc <kjc@FreeBSD.org> | 1998-10-09 11:48:22 +0000 |
---|---|---|
committer | kjc <kjc@FreeBSD.org> | 1998-10-09 11:48:22 +0000 |
commit | 280e105f418b8fc9f19c18d76e76810d7605ab25 (patch) | |
tree | cf520383ac7d3cae08ce56c1a9ed775811d27919 /sys/dev/en | |
parent | aac7427316dcb7e06c54c6c78b84598834fa0db0 (diff) | |
download | FreeBSD-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.c | 6 |
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); |