linux/drivers/infiniband/hw/cxgb4
Hariprasad S 944661dd97 RDMA/iw_cxgb4: atomically lookup ep and get a reference
There is a race between ULP threads calling c4iw_ep_disconnect() via
c4iw_modify_rc_qp() and the ingress CPL thread where the ULP thread
can free the endpoint just after the ingress CPL thread finds the ep
pointer in the tid table.  To avoid this, we now use the hwtid_idr table
for lookups instead of the LLD tid table so we can lock around insert,
remove, and lookup+get_ep to avoid the race.  The CPL handlers now will
either find the ep ptr and have a ref on it, or not find it and they
can discard the CPL.  Callers of get_ep_from_tid() will have a ref
on the ep if found, and thus must deref when they are done.
Negative advice in peer_abort_intr() need to dereference the ep.
therefore peer_abort() is scheduled to dereference the ep later.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2016-05-13 19:38:08 -04:00
..
cm.c RDMA/iw_cxgb4: atomically lookup ep and get a reference 2016-05-13 19:38:08 -04:00
cq.c RDMA/iw_cxgb4: Fix bar2 virt addr calculation for T4 chips 2016-04-26 12:47:09 -04:00
device.c Merge branches 'nes', 'cxgb4' and 'iwpm' into k.o/for-4.6 2016-03-16 13:57:43 -04:00
ev.c InfiniBand/RDMA changes for 3.20 merge window: 2015-02-21 12:53:21 -08:00
id_table.c drivers/infiniband/hw: rename random32() to prandom_u32() 2013-05-07 18:38:27 -07:00
iw_cxgb4.h RDMA/iw_cxgb4: stop_ep_timer() after MPA negotiation 2016-05-13 19:38:06 -04:00
Kconfig RDMA/cxgb4: Update Kconfig to include Chelsio T5 adapter 2014-04-28 17:29:41 -07:00
Makefile RDMA/cxgb4: Remove kfifo usage 2012-05-18 13:22:36 -07:00
mem.c RDMA/iw_cxgb4: set the correct FID value in DSGL commands 2016-05-13 19:38:05 -04:00
provider.c iw_cxgb4: initialize ibdev.iwcm->ifname for port mapping 2016-04-26 12:46:54 -04:00
qp.c RDMA/iw_cxgb4: Fix bar2 virt addr calculation for T4 chips 2016-04-26 12:47:09 -04:00
resource.c RDMA/cxgb4: Add missing debug stats 2014-04-11 11:36:09 -07:00
t4.h iw_cxgb4: Pass qid range to user space driver 2015-12-24 00:17:30 -05:00
t4fw_ri_api.h cxgb4, iw_cxgb4: move delayed ack macro definitions 2016-03-22 00:25:05 -07:00
user.h iw_cxgb4: Pass qid range to user space driver 2015-12-24 00:17:30 -05:00