RDMA/nes: Fix terminate during AE
authorTatyana Nikolova <Tatyana.E.Nikolova@intel.com>
Mon, 5 Dec 2011 17:39:12 +0000 (11:39 -0600)
committerRoland Dreier <roland@purestorage.com>
Wed, 4 Jan 2012 17:12:39 +0000 (09:12 -0800)
Fix for reset which happens right after sending a terminate message.
Terminate timer is not deleted when the connection is closed.

Signed-off-by: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com>
Signed-off-by: Faisal Latif <Faisal.Latif@intel.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/hw/nes/nes_cm.c
drivers/infiniband/hw/nes/nes_hw.c

index 0a52d72..db0831d 100644 (file)
@@ -2838,6 +2838,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
                issue_disconn = 1;
                issue_close = 1;
                nesqp->cm_id = NULL;
+               del_timer(&nesqp->terminate_timer);
                if (nesqp->flush_issued == 0) {
                        nesqp->flush_issued = 1;
                        issue_flush = 1;
index 6ee570b..055f4b5 100644 (file)
@@ -3619,10 +3619,6 @@ static void nes_process_iwarp_aeqe(struct nes_device *nesdev,
                        }
                        break;
                case NES_AEQE_AEID_LLP_CLOSE_COMPLETE:
-                       if (nesqp->term_flags) {
-                               nes_terminate_done(nesqp, 0);
-                               return;
-                       }
                        spin_lock_irqsave(&nesqp->lock, flags);
                        nesqp->hw_iwarp_state = iwarp_state;
                        nesqp->hw_tcp_state = tcp_state;