freebsd-dev/sys/mips/atheros
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
..
apb.c bus_add_child: change type of order parameter to u_int 2010-09-10 11:19:03 +00:00
apbvar.h - Add intr counters for APB interrupts 2009-11-18 22:53:05 +00:00
ar71xx_bus_space_reversed.c - Handle byte-order issue for non-word accesses to memory mapped 2009-04-19 22:56:35 +00:00
ar71xx_bus_space_reversed.h - Handle byte-order issue for non-word accesses to memory mapped 2009-04-19 22:56:35 +00:00
ar71xx_chip.c Implement PLL generalisation in preparation for use in if_arge. 2010-08-19 16:25:15 +00:00
ar71xx_chip.h Preparation work for supporting the AR91xx and AR724x. 2010-08-19 02:03:12 +00:00
ar71xx_cpudef.h add the PLL set functions to cpuops 2010-08-19 16:15:30 +00:00
ar71xx_ehci.c - Correct EHCI interrupt disabling at detach. 2011-04-03 20:17:49 +00:00
ar71xx_gpio.c - Fix values of CS1_EN and CS2_EN flags 2010-09-29 23:06:41 +00:00
ar71xx_gpiovar.h Add AR71XX GPIO bus driver. 2010-09-28 03:31:34 +00:00
ar71xx_machdep.c The previous commit didn't completely rename this to what it should be. 2011-03-28 09:10:59 +00:00
ar71xx_ohci.c - include register definitions for respective controllers 2009-11-12 20:48:04 +00:00
ar71xx_pci_bus_space.c - Add pci bus space that translates byte order to little endian, 2009-05-15 21:36:50 +00:00
ar71xx_pci_bus_space.h - Add pci bus space that translates byte order to little endian, 2009-05-15 21:36:50 +00:00
ar71xx_pci.c Make the PCI initialisation path use the new cpuops rather than directly 2010-08-19 02:05:16 +00:00
ar71xx_setup.c Fix mistaken indenting. 2010-08-19 12:52:49 +00:00
ar71xx_setup.h Preparation work for supporting the AR91xx and AR724x. 2010-08-19 02:03:12 +00:00
ar71xx_spi.c - Remove unnecessary register writes in activate_device 2010-01-21 00:15:59 +00:00
ar71xx_wdog.c Preparation work for supporting the AR91xx and AR724x. 2010-08-19 02:03:12 +00:00
ar71xxreg.h - Fix values of CS1_EN and CS2_EN flags 2010-09-29 23:06:41 +00:00
ar91xx_chip.c * Add wireless MAC reset, in prep for bringing over AR9130 support. 2011-03-13 08:46:58 +00:00
ar91xx_chip.h Add initial Atheros AR91XX support. 2010-08-19 11:40:10 +00:00
ar91xxreg.h Add missing ar91xx definition for the WMAC reset control. 2011-01-09 06:17:46 +00:00
ar724x_chip.c Implement AR724x USB initialisation code. 2011-03-31 02:36:22 +00:00
ar724x_chip.h Add some initial AR724X chipset support. 2010-08-19 11:53:55 +00:00
ar724xreg.h Implement AR724x USB initialisation code. 2011-03-31 02:36:22 +00:00
files.ar71xx Add AR71XX GPIO bus driver. 2010-09-28 03:31:34 +00:00
if_arge.c if_arge has had a strange bug that only appears during high traffic 2011-04-05 06:46:07 +00:00
if_argevar.h * Add some more debugging to if_arge 2011-04-05 06:33:35 +00:00
pcf2123_rtc.c - Add driver for PCF2123, SPI real time clock/calendar 2010-01-22 22:14:12 +00:00
pcf2123reg.h - Add driver for PCF2123, SPI real time clock/calendar 2010-01-22 22:14:12 +00:00
std.ar71xx Remove the 'machine mips' from DEFAULTS. Put the proper 'machine mips 2010-11-13 22:34:12 +00:00
uart_bus_ar71xx.c Preparation work for supporting the AR91xx and AR724x. 2010-08-19 02:03:12 +00:00
uart_cpu_ar71xx.c Preparation work for supporting the AR91xx and AR724x. 2010-08-19 02:03:12 +00:00