linux/drivers/infiniband/hw/qib
Dennis Dalessandro 5da0fc9dbf IB/hfi1: Prepare resource waits for dual leg
Current implementation allows each qp to have only one send engine.  As
such, each qp has only one list to queue prebuilt packets when send engine
resources are not available. To improve performance, it is desired to
support multiple send engines for each qp.

This patch creates the framework to support two send engines
(two legs) for each qp for the TID RDMA protocol, which can be easily
extended to support more send engines. It achieves the goal by creating a
leg specific struct, iowait_work in the iowait struct, to hold the
work_struct and the tx_list as well as a pointer to the parent iowait
struct.

The hfi1_pkt_state now has an additional field to record the current legs
work structure and that is now passed to all egress waiters to determine
the leg that needs to wait via a new iowait helper.  The APIs are adjusted
to use the new leg specific struct as required.

Many new and modified helpers are added to support this change.

Reviewed-by: Mitko Haralanov <mitko.haralanov@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Kaike Wan <kaike.wan@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2018-09-30 19:21:12 -06:00
..
Kconfig IB: Move PCI dependency from root KConfig to HW's KConfigs 2017-09-27 08:54:19 -04: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_6120_regs.h
qib_7220_regs.h
qib_7220.h Merge branch 'timer_setup' into for-next 2017-10-18 13:12:09 -04:00
qib_7322_regs.h
qib_common.h IB/hfi1, qib, rdmavt: Move AETH credit functions into rdmavt 2017-02-19 09:18:38 -05:00
qib_debugfs.c IB/qib: Convert qp_stats debugfs interface to use new iterator API 2017-08-28 19:12:30 -04:00
qib_debugfs.h
qib_diag.c RDMA: Use u64_to_user_ptr everywhere 2018-03-29 13:42:29 -06:00
qib_driver.c IB/{hfi1, qib}: Fix a concurrency issue with device name in logging 2018-01-05 13:34:55 -05: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 IB/qib: Fix DMA api warning with debug kernel 2018-05-24 09:39:25 -06:00
qib_fs.c fs: constify tree_descr arrays passed to simple_fill_super() 2017-04-26 23:54:06 -04:00
qib_iba6120.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
qib_iba7220.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
qib_iba7322.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
qib_init.c treewide: Use array_size() in vzalloc() 2018-06-12 16:19:22 -07:00
qib_intr.c IB/qib: Convert timers to use timer_setup() 2017-10-09 12:19:41 -04:00
qib_mad.c Merge branch 'timer_setup' into for-next 2017-10-18 13:12:09 -04: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: Remove set-but-not-used variables 2017-10-14 20:47:07 -04:00
qib_pio_copy.c
qib_qp.c IB/{hfi1, qib, rdmavt}: Schedule multi RC/UC packets instead of posting 2018-09-11 09:55:02 -06: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}: Move logic to allocate receive WQE into rdmavt 2018-05-09 15:53:30 -04:00
qib_ruc.c IB/{hfi1, qib, rdmavt}: Move logic to allocate receive WQE into rdmavt 2018-05-09 15:53:30 -04:00
qib_sd7220.c Merge branch 'timer_setup' into for-next 2017-10-18 13:12:09 -04:00
qib_sdma.c IB/qib: Move char *qib_sdma_state_names[] and constify while there. 2018-02-28 13:57:40 -07:00
qib_sysfs.c IB/qib: add const to bin_attribute structures 2017-08-18 14:06:09 -04:00
qib_twsi.c
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}: Move logic to allocate receive WQE into rdmavt 2018-05-09 15:53:30 -04:00
qib_ud.c IB/{hfi1, qib, rdmavt}: Move logic to allocate receive WQE into rdmavt 2018-05-09 15:53:30 -04:00
qib_user_pages.c IB/qib: Fix DMA api warning with debug kernel 2018-05-24 09:39:25 -06:00
qib_user_sdma.c RDMA/qib: use rb_entry() 2017-01-12 11:38:41 -05:00
qib_user_sdma.h
qib_verbs.c IB/hfi1: Prepare resource waits for dual leg 2018-09-30 19:21:12 -06:00
qib_verbs.h IB/hfi1: Prepare resource waits for dual leg 2018-09-30 19:21:12 -06: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
qib.h IB/qib: Fix DMA api warning with debug kernel 2018-05-24 09:39:25 -06:00