android_kernel_motorola_sm6225/drivers
Jack Morgenstein ea54b10c77 IB/mlx4: Use multiple WQ blocks to post smaller send WQEs
ConnectX HCA supports shrinking WQEs, so that a single work request
can be made of multiple units of wqe_shift.  This way, WRs can differ
in size, and do not have to be a power of 2 in size, saving memory and
speeding up send WR posting.  Unfortunately, if we do this then the
wqe_index field in CQEs can't be used to look up the WR ID anymore, so
our implementation does this only if selective signaling is off.

Further, on 32-bit platforms, we can't use vmap() to make the QP
buffer virtually contigious. Thus we have to use constant-sized WRs to
make sure a WR is always fully within a single page-sized chunk.

Finally, we use WRs with the NOP opcode to avoid wrapping around the
queue buffer in the middle of posting a WR, and we set the
NoErrorCompletion bit to avoid getting completions with error for NOP
WRs.  However, NEC is only supported starting with firmware 2.2.232,
so we use constant-sized WRs for older firmware.  And, since MLX QPs
only support SEND, we use constant-sized WRs in this case.

When stamping during NOP posting, do stamping following setting of the
NOP WQE valid bit.

Signed-off-by: Michael S. Tsirkin <mst@dev.mellanox.co.il>
Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2008-02-08 13:30:02 -08:00
..
acorn/char
acpi latency.c: use QoS infrastructure 2008-02-05 09:44:22 -08:00
amba
ata iommu sg merging: sata_inic162x: use pci_set_dma_max_seg_size 2008-02-05 09:44:11 -08:00
atm
auxdisplay
base
block Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus 2008-02-04 08:00:54 -08:00
bluetooth Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-02-05 10:09:07 -08:00
cdrom
char Merge branch 'agp-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6 2008-02-05 09:54:10 -08:00
clocksource
connector
cpufreq
cpuidle pm qos infrastructure and interface 2008-02-05 09:44:22 -08:00
crypto
dca
dio dio: ARRAY_SIZE() cleanup 2008-02-05 09:44:23 -08:00
dma
edac
eisa
firewire
firmware
gpio gpiolib: pca9539 i2c gpio expander support 2008-02-05 09:44:13 -08:00
hid
hwmon
i2c deprecate obsolete pca9539 driver 2008-02-05 09:44:13 -08:00
ide
ieee1394
infiniband IB/mlx4: Use multiple WQ blocks to post smaller send WQEs 2008-02-08 13:30:02 -08:00
input
isdn
leds leds: add possibility to remove leds classdevs during suspend/resume 2008-02-05 09:44:23 -08:00
lguest
macintosh mac68k: macii adb comment correction 2008-02-05 09:44:24 -08:00
mca
md
media
message
mfd
misc
mmc
mtd
net mlx4_core: Clean up struct mlx4_buf 2008-02-06 21:17:59 -08:00
nubus nubus: kill drivers/nubus/nubus_syms.c 2008-02-05 09:44:23 -08:00
of
oprofile
parisc iommu sg merging: parisc: make iommu respect the segment size limits 2008-02-05 09:44:10 -08:00
parport
pci iommu sg merging: PCI: add dma segment boundary support 2008-02-05 09:44:12 -08:00
pcmcia drivers/pcmcia: add missing pci_dev_get 2008-02-05 09:44:09 -08:00
pnp
power
ps3
rapidio
rtc
s390 [S390] dcss: Initialize workqueue before using it. 2008-02-05 16:51:01 +01:00
sbus
scsi iommu sg merging: call dma_set_seg_boundary in __scsi_alloc_queue() 2008-02-05 09:44:12 -08:00
serial m68knommu: use ARRAY_SIZE in ColdFire serial driver 2008-02-05 09:44:21 -08:00
sh
sn
spi
ssb
tc
telephony
uio
usb
video
virtio virtio: balloon driver 2008-02-04 23:50:13 +11:00
w1
watchdog
xen
zorro
Kconfig gpiolib: add drivers/gpio directory 2008-02-05 09:44:12 -08:00
Makefile gpiolib: add drivers/gpio directory 2008-02-05 09:44:12 -08:00