[WSD] Rework connection establishment/tear down
- Split IBSPAccept into two functions, one to check if connection should be
accepted, the other to actually accept the connection.
- Moved MRA into CF_DEFER case in IBSPAccept.
- Fixed IBSPAccept error case flow to properly cleanup.
- Moved allocation of incoming connection request to listen case only.
- Don't wait for RTU in IBSPAccept, continue optimistically assuming we'll
get the RTU. If we get a REJ, we'll tear down the socket and report an error.
- Close the switch socket from within IBSPAccept (or IBSPSocket for
duplication) before destroying the QP to prevent the QP destroy callback from
invoking the upcall to destroy the socket.
- Reduce lock contention and thrashing during socket cleanup/disconnection.
Signed-off-by: Fab Tillier (ftillier@silverstorm.com)
git-svn-id: svn://openib.tc.cornell.edu/gen1@97
ad392aa1-c5ef-ae45-8dd8-
e69d62a5ef86