android_kernel_samsung_msm8976/drivers/infiniband/core
Michael S. Tsirkin 9f81036c54 IB/cm: Improve local id allocation
The IB CM uses an idr for local id allocations, with a running counter
as start_id.  This fails to generate distinct ids if

1. An id is constantly created and destroyed
2. A chunk of ids just beyond the current next_id value is occupied

This in turn leads to an increased chance of connection request being
mis-detected as a duplicate, sometimes for several retries, until
next_id gets past the block of allocated ids. This has been observed
in practice.

As a fix, remember the last id allocated and start immediately above it.
This also fixes a problem with the old code, where next_id might
overflow and become negative.

Signed-off-by: Michael S. Tsirkin <mst@dev.mellanox.co.il>
Acked-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2007-05-21 13:41:29 -07:00
..
addr.c IB: Remove redundant "_wq" from workqueue names 2007-02-10 08:00:50 -08:00
agent.c
agent.h
cache.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
cm.c IB/cm: Improve local id allocation 2007-05-21 13:41:29 -07:00
cm_msgs.h
cma.c RDMA/cma: Add check to validate that cm_id is bound to a device 2007-05-14 14:10:32 -07:00
core_priv.h
device.c IB/core: Use start_port() and end_port() 2007-05-19 08:51:54 -07:00
fmr_pool.c IB/fmr_pool: Add prefix to all printks 2007-05-06 21:18:11 -07:00
iwcm.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
iwcm.h RDMA: iWARP Connection Manager. 2006-09-22 15:22:46 -07:00
mad.c IB: Add CQ comp_vector support 2007-05-06 21:18:11 -07:00
mad_priv.h PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
mad_rmpp.c WorkStruct: make allyesconfig 2006-11-22 14:57:56 +00:00
mad_rmpp.h
Makefile IB/uverbs: Export ib_umem_get()/ib_umem_release() to modules 2007-05-08 18:00:37 -07:00
multicast.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
packer.c
sa.h IB/sa: Track multicast join/leave requests 2007-02-16 14:20:02 -08:00
sa_query.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
smi.c IB/mad: Change SMI to use enums rather than magic return codes 2007-04-24 16:31:12 -07:00
smi.h IB/mad: Change SMI to use enums rather than magic return codes 2007-04-24 16:31:12 -07:00
sysfs.c IB: Set class_dev->dev in core for nice device symlink 2007-04-24 21:30:38 -07:00
ucm.c IB/ucm: Simplify ib_ucm_event() 2007-04-24 16:31:11 -07:00
ucma.c RDMA/ucma: Simplify ucma_get_event() 2007-04-24 16:31:11 -07:00
ud_header.c
umem.c IB/core: Free umem when mm is already gone 2007-05-19 08:51:53 -07:00
user_mad.c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
uverbs.h IB/uverbs: Export ib_umem_get()/ib_umem_release() to modules 2007-05-08 18:00:37 -07:00
uverbs_cmd.c IB/uverbs: Export ib_umem_get()/ib_umem_release() to modules 2007-05-08 18:00:37 -07:00
uverbs_main.c IB/uverbs: Export ib_umem_get()/ib_umem_release() to modules 2007-05-08 18:00:37 -07:00
uverbs_marshall.c RDMA/cma: Export rdma cm interface to userspace 2006-12-12 11:50:22 -08:00
verbs.c IB: Add CQ comp_vector support 2007-05-06 21:18:11 -07:00