freebsd-dev/sys/mips
Adrian Chadd a043f08ec2 if_arge has had a strange bug that only appears during high traffic
levels. TX would hang, RX wouldn't. A bit of digging showed the interface
send queue was full, but IFF_DRV_OACTIVE was clear and the hardware TX
queue was empty.

It turns out that there wasn't a check to drain the interface send
queue once hardware TX had completed, so if the interface send queue
had filled up in the meantime, subsequent packets would be dropped
by the higher layers and if_start (and thus arge_start()) would never
be called.

The fix is simple - call arge_start_locked() in the software interrupt
handler after the hardware TX queue has been handled or a TX underrun
occured. This way the interface send queue gets drained.
2011-04-05 06:46:07 +00:00
..
adm5120 - dump_avail layout should be sequence of [start, end) 2010-12-09 07:47:40 +00:00
alchemy - dump_avail layout should be sequence of [start, end) 2010-12-09 07:47:40 +00:00
atheros if_arge has had a strange bug that only appears during high traffic 2011-04-05 06:46:07 +00:00
cavium o) Set MAC addresses starting at the MAC base for all management ports, not 2011-03-16 22:51:34 +00:00
compile
conf Import the initial CPU support for the MIPS RALink RT305x SoC. 2011-04-03 14:39:55 +00:00
idt - dump_avail layout should be sequence of [start, end) 2010-12-09 07:47:40 +00:00
include o) Properly size caches and TLB on Octeon. 2011-03-16 08:22:29 +00:00
malta - dump_avail layout should be sequence of [start, end) 2010-12-09 07:47:40 +00:00
mips o) Properly size caches and TLB on Octeon. 2011-03-16 08:22:29 +00:00
rmi - Correct EHCI interrupt disabling at detach. 2011-04-03 20:17:49 +00:00
rt305x Import the initial CPU support for the MIPS RALink RT305x SoC. 2011-04-03 14:39:55 +00:00
sentry5 - dump_avail layout should be sequence of [start, end) 2010-12-09 07:47:40 +00:00
sibyte Fix typos - remove duplicate "the". 2011-02-21 09:01:34 +00:00