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 <[email protected]> --- .../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 _______________________________________________ ewg mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg
