linux/drivers/infiniband/hw
Mitko Haralanov b777f154a0 IB/hfi1: Remove usage of qp->s_cur_sge
The s_cur_sge field in the qp structure holds a pointer to the
SGE of the currently processed WQE. It assumes the protection
of the RVT_S_BUSY flag to prevent the changing of this field
while the send engine is using it. This scheme works as long
as there is only one instance of the send engine running at a
time.

Scaling of the send engine to multiple cores would break this
assumption as there could be multiple instances of the send engine
running on different CPUs. This opens a window where the QP's
RVT_S_BUSY flag is not set but the send engine is still running.

To prevent accidental changing of the s_cur_sge pointer, the QP's
dependence on it is removed. The SGE pointer is now stored in the
verbs_txreq, which is a per-packet data structure. This ensures
that each individual packet has it's own pointer, which is setup
while the RVT_S_BUSY flag is set.

Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Mitko Haralanov <mitko.haralanov@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2016-12-11 15:29:42 -05:00
..
cxgb3 IB/cxgb3: Move user vendor structures 2016-10-07 16:54:35 -04:00
cxgb4 Merge of primary rdma-core code for 4.9 2016-10-09 17:04:33 -07:00
hfi1 IB/hfi1: Remove usage of qp->s_cur_sge 2016-12-11 15:29:42 -05:00
hns IB/hns: Fix for removal of redundant code 2016-10-03 11:43:15 -04:00
i40iw Merge of primary rdma-core code for 4.9 2016-10-09 17:04:33 -07:00
mlx4 Merge of primary rdma-core code for 4.9 2016-10-09 17:04:33 -07:00
mlx5 Merge of primary rdma-core code for 4.9 2016-10-09 17:04:33 -07:00
mthca mm: replace get_user_pages() write/force parameters with gup_flags 2016-10-19 08:11:43 -07:00
nes IB/nes: Move user vendor structures 2016-10-07 16:54:37 -04:00
ocrdma Merge of primary rdma-core code for 4.9 2016-10-09 17:04:33 -07:00
qedr qedr: Add events support and register IB device 2016-10-14 15:00:10 -04:00
qib mm: replace get_user_pages() write/force parameters with gup_flags 2016-10-19 08:11:43 -07:00
usnic mm: replace get_user_pages() write/force parameters with gup_flags 2016-10-19 08:11:43 -07:00
Makefile qedr: Add RoCE driver framework 2016-10-14 15:00:10 -04:00