linux/drivers/infiniband/hw/qib
Michael J. Ruhl d310c4bf8a IB/{rdmavt, hfi1, qib}: Remove AH refcount for UD QPs
Historically rdmavt destroy_ah() has returned an -EBUSY when the AH has a
non-zero reference count.  IBTA 11.2.2 notes no such return value or error
case:

	Output Modifiers:
	- Verb results:
	- Operation completed successfully.
	- Invalid HCA handle.
	- Invalid address handle.

ULPs never test for this error and this will leak memory.

The reference count exists to allow for driver independent progress
mechanisms to process UD SWQEs in parallel with post sends.  The SWQE will
hold a reference count until the UD SWQE completes and then drops the
reference.

Fix by removing need to reference count the AH.  Add a UD specific
allocation to each SWQE entry to cache the necessary information for
independent progress.  Copy the information during the post send
processing.

Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2019-06-28 22:34:26 -03:00
..
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
qib.h qib: Convert qib_unit_table to XArray 2019-04-01 13:31:35 -03:00
qib_6120_regs.h
qib_7220.h Merge branch 'timer_setup' into for-next 2017-10-18 13:12:09 -04:00
qib_7220_regs.h
qib_7322_regs.h
qib_common.h infiniband/qib: Fix typo in comment 2019-04-22 14:08:15 -03:00
qib_debugfs.c infiniband: qib: no need to check return value of debugfs_create functions 2019-01-24 09:22:29 -07:00
qib_debugfs.h IB/qib: Convert opcode counters to per-context 2013-06-21 17:19:50 -07:00
qib_diag.c RDMA: Use u64_to_user_ptr everywhere 2018-03-29 13:42:29 -06:00
qib_driver.c qib: Convert qib_unit_table to XArray 2019-04-01 13:31:35 -03:00
qib_eeprom.c IB/{hfi1, qib}: Fix a concurrency issue with device name in logging 2018-01-05 13:34:55 -05:00
qib_file_ops.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
qib_fs.c qib: Convert qib_unit_table to XArray 2019-04-01 13:31:35 -03:00
qib_iba6120.c drivers: Remove explicit invocations of mmiowb() 2019-04-08 12:01:02 +01:00
qib_iba7220.c drivers: Remove explicit invocations of mmiowb() 2019-04-08 12:01:02 +01:00
qib_iba7322.c 5.2 Merge Window pull request 2019-05-09 09:02:46 -07:00
qib_init.c qib: Convert qib_unit_table to XArray 2019-04-01 13:31:35 -03:00
qib_intr.c IB/qib: Convert timers to use timer_setup() 2017-10-09 12:19:41 -04:00
qib_mad.c RDMA: Mark if destroy address handle is in a sleepable context 2018-12-19 16:28:03 -07:00
qib_mad.h IB/core: Add core header changes needed for OPA 2015-08-28 22:54:50 -04:00
qib_pcie.c IB/qib: fix spelling mistake "colescing" -> "coalescing" 2018-11-26 16:45:06 -07:00
qib_pio_copy.c
qib_qp.c IB/{rdmavt, hfi1, qib}: Remove AH refcount for UD QPs 2019-06-28 22:34:26 -03:00
qib_qsfp.c IB/qib: Remove empty function 2017-01-24 16:20:37 -05:00
qib_qsfp.h IB/qib: Remove empty function 2017-01-24 16:20:37 -05:00
qib_rc.c IB/{hfi1, qib, rdmavt}: Put qp in error state when cq is full 2019-06-28 22:34:26 -03:00
qib_ruc.c IB/{hfi1, qib, rdmavt}: Move ruc_loopback to rdmavt 2018-10-03 16:38:28 -06:00
qib_sd7220.c drivers: Remove explicit invocations of mmiowb() 2019-04-08 12:01:02 +01:00
qib_sdma.c IB/{hfi1, qib, rvt} Cleanup open coded sge usage 2019-01-30 14:22:32 -05:00
qib_sysfs.c RDMA: Introduce and use rdma_device_to_ibdev() 2019-01-14 13:12:03 -07:00
qib_twsi.c IB/qib: Add blank line after declaration 2015-02-20 09:04:12 -08:00
qib_tx.c Merge branch 'timer_setup' into for-next 2017-10-18 13:12:09 -04:00
qib_uc.c IB/{hfi1, qib, rdmavt}: Put qp in error state when cq is full 2019-06-28 22:34:26 -03:00
qib_ud.c IB/{rdmavt, hfi1, qib}: Remove AH refcount for UD QPs 2019-06-28 22:34:26 -03:00
qib_user_pages.c RDMA: Convert put_page() to put_user_page*() 2019-05-27 20:11:11 -03:00
qib_user_sdma.c IB/qib: Use struct_size() helper 2019-05-30 15:40:50 -03:00
qib_user_sdma.h
qib_verbs.c Linux 5.2-rc6 2019-06-28 21:18:23 -03:00
qib_verbs.h IB/rdmavt: Fix ab/ba include issues 2019-04-24 11:31:49 -03:00
qib_wc_ppc64.c
qib_wc_x86_64.c IB/qib: fix test of unsigned variable 2015-05-12 13:55:41 -04:00