[ewg] [PATCH] RDMA/nes: Fix terminate during fatal AE

Tatyana Nikolova Tatyana.E.Nikolova at intel.com
Mon Dec 5 08:52:59 PST 2011


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 at intel.com>
Signed-off-by: Faisal Latif <Faisal.Latif at intel.com>
---
 kernel_patches/fixes/nes_0064_term_rst_fix.patch |   30 ++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)
 create mode 100644 kernel_patches/fixes/nes_0064_term_rst_fix.patch

diff --git a/kernel_patches/fixes/nes_0064_term_rst_fix.patch b/kernel_patches/fixes/nes_0064_term_rst_fix.patch
new file mode 100644
index 0000000..802e90d
--- /dev/null
+++ b/kernel_patches/fixes/nes_0064_term_rst_fix.patch
@@ -0,0 +1,30 @@
+diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c
+index 597b993..3fb164d 100644
+--- a/drivers/infiniband/hw/nes/nes_cm.c
++++ b/drivers/infiniband/hw/nes/nes_cm.c
+@@ -2835,6 +2835,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;
+diff --git a/drivers/infiniband/hw/nes/nes_hw.c b/drivers/infiniband/hw/nes/nes_hw.c
+index 485a1b3..1b4d61d 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.c
++++ b/drivers/infiniband/hw/nes/nes_hw.c
+@@ -3627,10 +3627,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;
+--
+1.7.1
+
-- 
1.7.1




More information about the ewg mailing list