linux-sg2042/drivers
Eli Cohen 57ce41d1d1 IB/ipoib: Fix transmit queue stalling forever
Commit f56bcd80 ("IPoIB: Use separate CQ for UD send completions")
introduced a bug where the transmit queue could get stopped and never
woken up.  The problem is that send completions are only polled at the
end of the xmit function, so if the send queue fills up and the xmit
path stops the queue, then there is no way for send completions to
ever get polled, and so the transmit queue stays stopped forever.

Fix this by arming the send CQ just before posting the last send
request that fills the send queue.  Then, when the completion event
handler is called, drain the send CQ.  Since it is possible that not
enough send completions are in the CQ, verify that the the net queue
has been woken up after draining the send CQ, and if not arm a timer
and drain again at the timer function.

Signed-off-by: Roland Dreier <rolandd@cisco.com>
2008-04-30 20:02:45 -07:00
..
acorn/char
acpi Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86-bigbox-pci 2008-04-29 08:26:51 -07:00
amba
ata ahci: SB600 ahci can't do MSI, blacklist that capability 2008-04-29 17:42:04 -04:00
atm drivers: atm, char fix integer as NULL pointer warnings 2008-04-28 17:29:18 -07:00
auxdisplay
base Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86-bigbox-pci 2008-04-29 08:26:51 -07:00
block Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block 2008-04-29 08:18:03 -07:00
bluetooth hci_usb: remove code obfuscation 2008-04-19 18:17:26 -07:00
cdrom Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block 2008-04-29 08:18:03 -07:00
char Merge branch 'audit.b50' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current 2008-04-29 11:41:22 -07:00
clocksource tclib: Fix compile warnings 2008-03-13 22:53:29 +01:00
connector connector: convert to single-threaded workqueue 2008-03-23 21:51:12 -07:00
cpufreq [CPUFREQ] state info wrong after resume 2008-04-28 16:27:08 -04:00
cpuidle cpuidle: fix 100% C0 statistics regression 2008-03-26 00:58:19 -04:00
crypto [CRYPTO] padlock-aes: Use generic setkey function 2008-04-21 10:19:34 +08:00
dca
dio
dma DMA engine: typo fixes 2008-04-21 22:38:45 +00:00
edac edac: fix module initialization on several modules 2nd time 2008-04-29 08:06:26 -07:00
eisa
firewire Convert asm/semaphore.h users to linux/semaphore.h 2008-04-18 22:22:54 -04:00
firmware edd: add default mode CONFIG_EDD_OFF=n, override with edd={on,off} 2008-04-29 08:06:23 -07:00
gpio i2c: Convert most new-style drivers to use module aliasing 2008-04-29 23:11:40 +02:00
hid hid-core: use get_unaligned_* helpers 2008-04-29 08:06:27 -07:00
hwmon i2c: Convert most new-style drivers to use module aliasing 2008-04-29 23:11:40 +02:00
i2c i2c: Convert most new-style drivers to use module aliasing 2008-04-29 23:11:40 +02:00
ide alim15x3: disable init_hwif_ali15x3 for PowerPC 2008-04-29 22:57:38 +02:00
ieee1394 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2008-04-25 12:24:06 -07:00
infiniband IB/ipoib: Fix transmit queue stalling forever 2008-04-30 20:02:45 -07:00
input input: use get_unaligned_* helpers 2008-04-29 08:06:27 -07:00
isdn isdn: use non-racy method for proc entries creation 2008-04-29 08:06:22 -07:00
leds Remove duplicated unlikely() in IS_ERR() 2008-04-29 08:06:25 -07:00
lguest drivers: Remove unnecessary inclusions of asm/semaphore.h 2008-04-18 22:16:32 -04:00
macintosh [POWERPC] windfarm: Add PowerMac 12,1 support 2008-04-29 15:57:35 +10:00
mca proc: remove proc_root from drivers 2008-04-29 08:06:18 -07:00
md dm: use unlocked variants of queue flag check/set 2008-04-29 10:21:12 -07:00
media Merge git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/v4l-dvb 2008-04-29 14:53:40 -07:00
memstick memstick: convert struct class_device to struct device 2008-04-19 19:10:29 -07:00
message Remove duplicated unlikely() in IS_ERR() 2008-04-29 08:06:25 -07:00
mfd Merge master.kernel.org:/home/rmk/linux-2.6-arm 2008-04-29 15:18:06 -07:00
misc drivers: use non-racy method for proc entries creation (2) 2008-04-29 08:06:22 -07:00
mmc Merge master.kernel.org:/home/rmk/linux-2.6-arm 2008-04-29 15:18:06 -07:00
mtd drivers: fix integer as NULL pointer warnings 2008-04-28 17:31:13 -07:00
net Merge master.kernel.org:/home/rmk/linux-2.6-arm 2008-04-29 15:18:06 -07:00
nubus proc: convert /proc/bus/nubus to seq_file interface 2008-04-29 08:06:19 -07:00
of [POWERPC] drivers/of/of_i2c.c: Add MODULE_LICENSE 2008-04-24 20:58:01 +10:00
oprofile oprofile: change cpu_buffer from array to per_cpu variable 2008-04-28 08:58:31 -07:00
parisc parisc: use non-racy method for proc entries creation 2008-04-29 08:06:22 -07:00
parport parport_pc: wrap PNP probe code in #ifdef CONFIG_PNP 2008-04-29 08:06:26 -07:00
pci Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2008-04-29 10:17:59 -07:00
pcmcia drivers/pcmcia/pcmcia_ioctl.c: fix build 2008-04-29 11:00:39 -07:00
pnp drivers: use non-racy method for proc entries creation (2) 2008-04-29 08:06:22 -07:00
power x86: olpc: add One Laptop Per Child architecture support 2008-04-29 08:06:07 -07:00
ps3 [POWERPC] PS3: Sys-manager Wake-on-LAN support 2008-04-01 20:43:08 +11:00
rapidio [RAPIDIO] Auto-probe the RapidIO system size 2008-04-29 19:40:28 +10:00
rtc i2c: Convert most new-style drivers to use module aliasing 2008-04-29 23:11:40 +02:00
s390 s390: use non-racy method for proc entries creation 2008-04-29 08:06:21 -07:00
sbus
scsi Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block 2008-04-29 08:18:03 -07:00
serial Merge master.kernel.org:/home/rmk/linux-2.6-arm 2008-04-29 15:18:06 -07:00
sh
sn ioc3.c: replace remaining __FUNCTION__ occurrences 2008-03-17 08:11:48 -04:00
spi spi: spi_imx updates 2008-04-28 08:58:31 -07:00
ssb ssb: Fix all-ones boardflags 2008-04-23 21:25:35 -04:00
tc
telephony
thermal acpi thermal trip points increased to 12 2008-04-15 19:35:41 -07:00
uio UIO: hold a reference to the device's owner while the device is open 2008-04-19 19:10:18 -07:00
usb usb: use get/put_unaligned_* helpers 2008-04-29 08:06:28 -07:00
video video: use get/put_unaligned_* helpers 2008-04-29 08:06:28 -07:00
virtio virtio: remove overzealous BUG_ON. 2008-04-07 13:14:22 -07:00
w1
watchdog Convert asm/semaphore.h users to linux/semaphore.h 2008-04-18 22:22:54 -04:00
xen xen: add balloon driver 2008-04-24 23:57:33 +02:00
zorro zorro: use non-racy method for proc entries creation 2008-04-29 08:06:21 -07:00
Kconfig xen: add balloon driver 2008-04-24 23:57:33 +02:00
Makefile