[openib-general] [PATCH ] RFC IB/cm do not track remote QPN in timewait state

Michael S. Tsirkin mst at mellanox.co.il
Mon Aug 28 13:41:18 PDT 2006


Quoting r. Sean Hefty <mshefty at ichips.intel.com>:
> Subject: Re: [PATCH ] RFC IB/cm do not track remote QPN in timewait state
> 
> Michael S. Tsirkin wrote:
> >>The CM tracks the remote QP, not the local.
> > 
> > 
> > I might not have been clear.
> > For connection in timewait state, spec explicitly says local QP
> > must be in reset, error or init.
> > Only after it goes out of timewait can you destroy the QP.
> > That's the tracking I think spec means CM needs to do.
> 
> I believe that this tracking is done, and is reported to the user by the 
> timewait exit event.  QP transitions are the responsibility of the user.
> 
> This is related to a problem that Arlin and I have been discussing.  There's 
> nothing that the CM does to prevent the QP from being destroyed, especially for 
> a usermode application.  The CM invokes a callback once a connection exits 
> timewait, indicating to the user that the QP may now be destroyed.  But if an 
> application crashes, uverbs automatically destroys the QP.
> 
> We may need better coordination between the CM and verbs wrt timewait to handle 
> userspace QPs, but this depends on this change.
> 
> >>The spec (12.4) seems to state
> >>that this is required by the CM.
> > 
> > 
> > Tracking, yes. But the not rejecting connections.
> 
> Section 12.4 indicates that the CM shall put both the local and remote QPNs into 
> timewait.  I was assuming that the remote QPN was tracked, in part, for 
> rejecting a stale connection.  I can see where it would only be needed to 
> validate repeated DREQs, which carry the remote QPN.

I believe communication id should be checked to detect duplicates. Right?
Remote QPN stale connection rule is only to avoid a case where we keep
connection in established state forever if the remote side rebooted.

> >> Do you disagree with my interpretation of
> >>12.4, or why do you think that this is obviously not what the spec intends?
> > 
> > 
> > It seems I disagree with your interpretation of the spec.
> > I think what the spec intends is CM must track 2 kinds of QPs:
> > 1. remote QPN used in Connected QPs - to detect stale connections
> > 2. Local QPs in timewait state - QP must not be destroyed immediately, but must
> >    stay in reset, error or init so that harware discards timewait packets
> > 
> > These 2 are mutually exclusive.
> > In case 1 a new REQ with same remote QPN means connection got stale.
> > In case 2 we exchanged DREQ/DREP so there's no issue.
> > 
> 
>  From 12.9.7.1 and 12.9.7.2, there's no action indicated that the CM should take 
> when receiving a REQ when in timewait.

But if the ID that REQ uses is not in timewait the usual rules apply.

> A stale connection check is explicitly 
> listed under the established state.  This may help clarify stale connections.

So we agree stale connection rule only applies if connection is in established
state?

-- 
MST




More information about the general mailing list