[ewg] [PATCH] RDMA/nes: Modified FIN handling causes hang in A0 cards

Faisal Latif faisal.latif at intel.com
Wed Sep 1 08:43:18 PDT 2010


The changing state to CLOSING when FIN is received causes A0 cards to hang and
the interface will not be active. Now in the FIN handling, a check is made
if it is A0 card or not.

Signed-off-by: Faisal Latif <faisal.latif at intel.com>
---
 .../fixes/nes_0045_fin_back_compat.patch         |   29 ++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)
 create mode 100644 kernel_patches/fixes/nes_0045_fin_back_compat.patch

diff --git a/kernel_patches/fixes/nes_0045_fin_back_compat.patch b/kernel_patches/fixes/nes_0045_fin_back_compat.patch
new file mode 100644
index 0000000..82f993a
--- /dev/null
+++ b/kernel_patches/fixes/nes_0045_fin_back_compat.patch
@@ -0,0 +1,29 @@
+diff --git a/drivers/infiniband/hw/nes/nes_hw.c b/drivers/infiniband/hw/nes/nes_hw.c
+index fe86528..ef4efaa 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.c
++++ b/drivers/infiniband/hw/nes/nes_hw.c
+@@ -3470,7 +3470,8 @@ static void nes_process_iwarp_aeqe(struct nes_device *nesdev,
+ 				return; /* Ignore it, wait for close complete */
+ 			if (atomic_inc_return(&nesqp->close_timer_started) == 1) {
+ 				if ((tcp_state == NES_AEQE_TCP_STATE_CLOSE_WAIT) &&
+-					(nesqp->ibqp_state == IB_QPS_RTS)) {
++					(nesqp->ibqp_state == IB_QPS_RTS) &&
++					((nesadapter->eeprom_version >> 16) != NES_A0)) {
+ 					spin_lock_irqsave(&nesqp->lock, flags);
+ 					nesqp->hw_iwarp_state = iwarp_state;
+ 					nesqp->hw_tcp_state = tcp_state;
+diff --git a/drivers/infiniband/hw/nes/nes_hw.h b/drivers/infiniband/hw/nes/nes_hw.h
+index ecd8494..19c5633 100644
+--- a/drivers/infiniband/hw/nes/nes_hw.h
++++ b/drivers/infiniband/hw/nes/nes_hw.h
+@@ -45,6 +45,7 @@
+ #define NES_PHY_TYPE_KR	       9
+
+ #define NES_MULTICAST_PF_MAX 8
++#define NES_A0 3
+
+ enum pci_regs {
+ 	NES_INT_STAT = 0x0000,
+--
+1.6.0
+
-- 
1.6.0




More information about the ewg mailing list