[openib-general] Re: [PATCH] ib_mad: prevent duplicateoutstanding MADtransactions with same TID
Jack Morgenstein
jackm at mellanox.co.il
Sat Feb 25 23:32:30 PST 2006
On Friday 24 February 2006 19:52, Sean Hefty wrote:
> What I believe will happen is that one of the responses will be reassembled
> and returned to the user. On the SA side, all ACKs will match with the
> first response, and the second response will time out, never getting past
> the first segment.
I think, actually, that there is a race condition on the SA side once the
first receiver-requested retry occurs (i.e., the first time a single packet
is dropped in transmission from sender to receiver:
Sender Rcvr
---------- ------
Send seg1
compl S1, to wait list
Ack1
Send S2 - S65
Wait list for Ack
Drop, say S35
timeout, retry query
Send S'1 (new response session)
compl S'1, to wait list
(after Session S wait)
see as duplicate,
Ack34
S gets Ack, continues with S35
Compl S35 to wait list
(AFTER Session S')
continue until S65 Ack 65
S' Gets the ACK this time, interprets
as error (ack-ing unsent segment)
aborts the transfer with error IB_MGMT_RMPP_STATUS_W2S
See process_rmpp_ack().
Aborts
S1 times out, retries a few times.
No damage actually done, except that the transfer has failed -- and this can
occur if ANY packet gets dropped during the transfer. RMPP thus will not be
too reliable.
-- Jack
More information about the general
mailing list