linux/drivers/infiniband/hw
Mike Marciniszyn af061a644a IB/qib: Use RCU for qpn lookup
The heavy weight spinlock in qib_lookup_qpn() is replaced with RCU.
The hash list itself is now accessed via jhash functions instead of mod.

The changes should benefit multiple receive contexts in different
processors by not contending for the lock just to read the hash
structures.

The patch also adds a lookaside_qp (pointer) and a lookaside_qpn in
the context.  The interrupt handler will test the current packet's qpn
against lookaside_qpn if the lookaside_qp pointer is non-NULL.  The
pointer is NULL'ed when the interrupt handler exits.

Signed-off-by: Mike Marciniszyn <mike.marciniszyn@qlogic.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2011-10-21 09:38:54 -07:00
..
amso1100 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2011-07-22 14:50:12 -07:00
cxgb3 [SCSI] cxgb3i: convert cdev->l2opt to use rcu to prevent NULL dereference 2011-09-26 09:28:01 -05:00
cxgb4 atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
ehca atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
ipath Merge branches 'cma', 'cxgb4', 'ipath', 'misc', 'mlx4', 'mthca', 'qib' and 'srp' into for-next 2011-07-22 11:56:11 -07:00
mlx4 IB/mlx4: Support PMA counters for IBoE 2011-07-18 21:04:36 -07:00
mthca IB/mthca: Remove unnecessary read of PCI_CAP_ID_EXP 2011-07-18 12:01:22 -07:00
nes atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
qib IB/qib: Use RCU for qpn lookup 2011-10-21 09:38:54 -07:00