linux/drivers/infiniband/sw/rxe
Vijay Immanuel b97db58557 IB/rxe: fix for duplicate request processing and ack psns
Don't reset the resp opcode for a replayed read response.
The resp opcode could be in the middle of a write or send
sequence, when the duplicate read request was received.
An example sequence is as follows:
- Receive read request for 12KB PSN 20. Transmit read response
  first, middle and last with PSNs 20,21,22.
- Receive write first PSN 23.
  At this point the resp psn is 24 and resp opcode is write first.
- The sender notices that PSN 20 is dropped and retransmits.
  Receive read request for 12KB PSN 20. Transmit read response
  first, middle and last with PSNs 20,21,22. The resp opcode is
  set to -1, the resp psn remains 24.
- Receive write first PSN 23. This is processed by duplicate_request().
  The resp opcode remains -1 and resp psn remains 24.
- Receive write middle PSN 24. check_op_seq() reports a missing
  first error since the resp opcode is -1.

When sending an ack for a duplicate send or write request,
use the psn of the previous ack sent. Do not use the psn
of a read response for the ack.
An example sequence is as follows:
- Receive write PSN 30. Transmit ACK for PSN 30.
- Receive read request 4KB PSN 31. Transmit read response with
  PSN 31. The resp psn is now 32.
- The sender notices that PSN 30 is dropped and retransmits.
  Receive write PSN 30. duplicate_request() sends an ACK with
  PSN 31. That is incorrect since PSN 31 was a read request.

Signed-off-by: Vijay Immanuel <vijayi@attalasystems.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
2018-08-30 17:22:12 -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 RDMA/rxe: Set wqe->status correctly if an unexpected response is received 2018-08-08 09:57:30 -06: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: Simplify rxe_find_route() to avoid GID query for netdev 2018-08-30 16:31:50 -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: fix for duplicate request processing and ack psns 2018-08-30 17:22:12 -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