linux_dsm_epyc7002/drivers/infiniband/sw/rxe
Vijay Immanuel 030e46e495 IB/rxe: fixes for rdma read retry
When a read request is retried for the remaining partial
data, the response may restart from read response first
or read response only. So support those cases.

Do not advance the comp psn beyond the current wqe's last_psn
as that could skip over an entire read wqe and will cause the
req_retry() logic to set an incorrect req psn.
An example sequence is as follows:
Write        PSN 40 -- this is the current WQE.
Read request PSN 41
Write        PSN 42
Receive ACK  PSN 42 -- this will complete the current WQE
for PSN 40, and set the comp psn to 42 which is a problem
because the read request at PSN 41 has been skipped over.
So when req_retry() tries to retransmit the read request,
it sets the req psn to 42 which is incorrect.

When retrying a read request, calculate the number of psns
completed based on the dma resid instead of the wqe first_psn.
The wqe first_psn could have moved if the read request was
retried multiple times.

Set the reth length to the dma resid to handle read retries for
the remaining partial data.

Signed-off-by: Vijay Immanuel <vijayi@attalasystems.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2018-08-30 17:27:15 -04:00
..
Kconfig IB: Fix RDMA_RXE and INFINIBAND_RDMAVT dependencies for DMA_VIRT_OPS 2018-05-15 10:48:16 -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
rxe_av.c RDMA: Convert drivers to use sgid_attr instead of sgid_index 2018-06-18 11:11:26 -06:00
rxe_comp.c IB/rxe: fixes for rdma read retry 2018-08-30 17:27:15 -04:00
rxe_cq.c RDMA/rxe: Use structs to describe the uABI instead of opencoding 2018-03-15 15:58:02 -06:00
rxe_hdr.h IB/rxe: Enable type checking on SKB_TO_PKT() and PKT_TO_SKB() arguments 2017-01-10 16:52:47 -05:00
rxe_hw_counters.c IB/rxe: Make rxe_counter_name static 2017-08-24 16:44:48 -04:00
rxe_hw_counters.h IB/rxe: Add port protocol stats 2017-04-21 10:43:28 -04:00
rxe_icrc.c IB/rxe: Offload CRC calculation when possible 2017-04-21 10:45:02 -04:00
rxe_loc.h IB/rxe: Simplify rxe_find_route() to avoid GID query for netdev 2018-08-30 16:31:50 -04:00
rxe_mcast.c IB/rxe: Remove a pointless indirection layer 2017-01-10 16:52:47 -05:00
rxe_mmap.c IB/rxe: Constify static rxe_vm_ops 2017-07-24 08:43:12 -04:00
rxe_mr.c IB/rxe: Refactor lookup memory function 2018-08-30 16:31:50 -04:00
rxe_net.c IB/rxe: Simplify rxe_find_route() to avoid GID query for netdev 2018-08-30 16:31:50 -04:00
rxe_net.h IB/rxe: make rxe_release_udp_tunnel static 2018-04-19 13:58:04 -04:00
rxe_opcode.c IB/rxe: add RXE_START_MASK for rxe_opcode IB_OPCODE_RC_SEND_ONLY_INV 2018-04-27 14:20:47 -04:00
rxe_opcode.h
rxe_param.h IB/rxe: increase max MR limit 2018-06-18 13:15:48 -06:00
rxe_pool.c IB/rxe: Avoid NULL check when search is successful 2018-08-30 16:31:50 -04:00
rxe_pool.h IB/rxe: Change pool state enums to capital letters 2018-08-30 16:31:50 -04:00
rxe_qp.c IB/rxe: vary the source udp port for receive scaling 2018-08-30 16:31:50 -04:00
rxe_queue.c RDMA/rxe: Use structs to describe the uABI instead of opencoding 2018-03-15 15:58:02 -06:00
rxe_queue.h RDMA/rxe: Use structs to describe the uABI instead of opencoding 2018-03-15 15:58:02 -06:00
rxe_recv.c IB/rxe: remove redudant qpn check 2018-08-30 16:31:50 -04:00
rxe_req.c IB/rxe: fixes for rdma read retry 2018-08-30 17:27:15 -04:00
rxe_resp.c IB/rxe: fix for duplicate request processing and ack psns 2018-08-30 17:22:12 -04:00
rxe_srq.c RDMA/rxe: Use structs to describe the uABI instead of opencoding 2018-03-15 15:58:02 -06:00
rxe_sysfs.c IB/rxe: improved debug prints & code cleanup 2016-10-06 13:50:04 -04:00
rxe_task.c RDMA/rxe: Suppress gcc 7 fall-through complaints 2017-10-14 20:47:07 -04:00
rxe_task.h IB/rxe: Wait for tasklets to finish before tearing down QP 2016-12-12 16:31:45 -05:00
rxe_verbs.c RDMA, core and ULPs: Declare ib_post_send() and ib_post_recv() arguments const 2018-07-30 20:09:34 -06:00
rxe_verbs.h IB/rxe: avoid back-to-back retries 2018-08-30 17:27:15 -04:00
rxe.c IB/core: add max_send_sge and max_recv_sge attributes 2018-06-18 13:17:28 -06:00
rxe.h IB/rxe: change rxe_set_mtu function type to void 2018-04-27 12:18:29 -04:00