[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