]> git.openfabrics.org - ~shefty/rdma-win.git/commit
[IBAL] ib/cm: fix handling failed send completions
authorStan Smith <stan.smith@intel.com>
Tue, 5 Jan 2010 18:59:21 +0000 (18:59 +0000)
committerStan Smith <stan.smith@intel.com>
Tue, 5 Jan 2010 18:59:21 +0000 (18:59 +0000)
commita71255e5caa010e6ed7fdd47caff5d812ac8691e
tree8ebcb054bec1d85cae3b87aaad82a6488d5fc842
parente4dd52e3f69e07ab0ecf5b1009b456d23a178c64
[IBAL] ib/cm: fix handling failed send completions
__cep_mad_send_cb() assumes that the mad being processed is
associated with the current state of the CEP.  This may not be
the case.
For example, for a short lived connection, it was observed that
a REP mad completed with status canceled.  This is normal.  However,
the user already attempted to disconnect the connection by sending
a DREQ.  This left the cep in the DREQ_SENT state by the time that
the REP mad completed.  Since the REP status was not success, but the
state was DREQ_SENT, the code assumed that the DREQ had failed and
transitioned the cep into TIMEWAIT.  The result is that the DREQ is never
>matched with a DREP or canceled, but holds a reference on the CEP.
Until the DREQ times out (time depends on connection, but easily
up to a minute), attempts to destroy the CEP are blocked.
Fix this by simply discarding any completed sends that were not
sent from the current state of the cep when the completion handler
is invoked.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2652 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
branches/WOF2-2/core/al/kernel/al_cm.c
branches/WOF2-2/core/al/kernel/al_cm_cep.c