summaryrefslogtreecommitdiff
path: root/drivers/scsi/bnx2i/bnx2i_hwi.c
diff options
context:
space:
mode:
authorEddie Wai <eddie.wai@broadcom.com>2010-11-23 15:29:24 -0800
committerJames Bottomley <James.Bottomley@suse.de>2010-12-21 12:24:12 -0600
commit94810e824df1509ad3ba401e57f74b922fd928c5 (patch)
treecbecc4b016c531ffa0a1d76f2a703b2bbf118925 /drivers/scsi/bnx2i/bnx2i_hwi.c
parent5bf3f39f9bda2750145a7da69ea9ae76d0054956 (diff)
downloadlinux-3.10-94810e824df1509ad3ba401e57f74b922fd928c5.tar.gz
linux-3.10-94810e824df1509ad3ba401e57f74b922fd928c5.tar.bz2
linux-3.10-94810e824df1509ad3ba401e57f74b922fd928c5.zip
[SCSI] bnx2i: Fixed the remote TCP RST handling for the 570X (1g)
Modified the handling of the remote TCP RST code so the chip can now flush the tx pipe accordingly upon a remote TCP RST reception. Signed-off-by: Eddie Wai <eddie.wai@broadcom.com> Reviewed-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/bnx2i/bnx2i_hwi.c')
-rw-r--r--drivers/scsi/bnx2i/bnx2i_hwi.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/scsi/bnx2i/bnx2i_hwi.c b/drivers/scsi/bnx2i/bnx2i_hwi.c
index c9a3c0ff3c2..0d40daefd57 100644
--- a/drivers/scsi/bnx2i/bnx2i_hwi.c
+++ b/drivers/scsi/bnx2i/bnx2i_hwi.c
@@ -2350,10 +2350,14 @@ static void bnx2i_cm_remote_close(struct cnic_sock *cm_sk)
static void bnx2i_cm_remote_abort(struct cnic_sock *cm_sk)
{
struct bnx2i_endpoint *ep = (struct bnx2i_endpoint *) cm_sk->context;
+ u32 old_state = ep->state;
ep->state = EP_STATE_TCP_RST_RCVD;
- if (ep->conn)
- bnx2i_recovery_que_add_conn(ep->hba, ep->conn);
+ if (old_state == EP_STATE_DISCONN_START)
+ wake_up_interruptible(&ep->ofld_wait);
+ else
+ if (ep->conn)
+ bnx2i_recovery_que_add_conn(ep->hba, ep->conn);
}