On Wed, 2018-06-13 at 18:48 -0700, Vijay Immanuel wrote: > 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@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