Browse Source

RDMA/nes: Fix terminate during AE

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>
Tatyana Nikolova 13 years ago
parent
commit
196f40c846
2 changed files with 1 additions and 4 deletions
  1. 1 0
      drivers/infiniband/hw/nes/nes_cm.c
  2. 0 4
      drivers/infiniband/hw/nes/nes_hw.c

+ 1 - 0
drivers/infiniband/hw/nes/nes_cm.c

@@ -2838,6 +2838,7 @@ static int nes_cm_disconn_true(struct nes_qp *nesqp)
 		issue_disconn = 1;
 		issue_disconn = 1;
 		issue_close = 1;
 		issue_close = 1;
 		nesqp->cm_id = NULL;
 		nesqp->cm_id = NULL;
+		del_timer(&nesqp->terminate_timer);
 		if (nesqp->flush_issued == 0) {
 		if (nesqp->flush_issued == 0) {
 			nesqp->flush_issued = 1;
 			nesqp->flush_issued = 1;
 			issue_flush = 1;
 			issue_flush = 1;

+ 0 - 4
drivers/infiniband/hw/nes/nes_hw.c

@@ -3619,10 +3619,6 @@ static void nes_process_iwarp_aeqe(struct nes_device *nesdev,
 			}
 			}
 			break;
 			break;
 		case NES_AEQE_AEID_LLP_CLOSE_COMPLETE:
 		case NES_AEQE_AEID_LLP_CLOSE_COMPLETE:
-			if (nesqp->term_flags) {
-				nes_terminate_done(nesqp, 0);
-				return;
-			}
 			spin_lock_irqsave(&nesqp->lock, flags);
 			spin_lock_irqsave(&nesqp->lock, flags);
 			nesqp->hw_iwarp_state = iwarp_state;
 			nesqp->hw_iwarp_state = iwarp_state;
 			nesqp->hw_tcp_state = tcp_state;
 			nesqp->hw_tcp_state = tcp_state;