On Tue, 2018-06-12 at 18:20 -0700, Vijay Immanuel wrote: > 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@xxxxxxxxxxxxxxxxx> This has been left to languish due to lack of competent review (both Jason and I beg off on this level of technical review of rxe). As a result, I've decided to go ahead and put this into for-next at the earliest possible stage so that it gets the most testing possible before the next merge window. So, thanks, applied to for-next. -- Doug Ledford <dledford@xxxxxxxxxx> GPG KeyID: B826A3330E572FDD Key fingerprint = AE6B 1BDA 122B 23B4 265B 1274 B826 A333 0E57 2FDD
Attachment:
signature.asc
Description: This is a digitally signed message part