summaryrefslogtreecommitdiffstats
path: root/NetworkPkg
diff options
context:
space:
mode:
authorYe Ting <ting.ye@intel.com>2015-09-25 03:51:46 +0000
committertye1 <tye1@Edk2>2015-09-25 03:51:46 +0000
commit87ce4210f52c0a9cf3f97937ec03c7155398e190 (patch)
tree8206bbc556d56f7248ca6145515be336a5a21c41 /NetworkPkg
parent953bcbcce425f56bf48ef029daea7ec9e6421f4f (diff)
downloadedk2-87ce4210f52c0a9cf3f97937ec03c7155398e190.tar.gz
edk2-87ce4210f52c0a9cf3f97937ec03c7155398e190.tar.bz2
edk2-87ce4210f52c0a9cf3f97937ec03c7155398e190.zip
NetworkPkg:Fix iSCSI driver issue to work with iSCSI LIO target
The patch fixes iSCSI driver can't reinstate itself when configured in AutoConfigure mode and IPv6 stack is actually used. The issue occurs when iSCSI driver communicates with iSCSI LIO target in IPv6 path and the target sends back TCP FIN packets randomly. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Fu siyuan <siyuan.fu@intel.com> Reviewed-by: Wu jiaxin <jiaxin.wu@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18546 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'NetworkPkg')
-rw-r--r--NetworkPkg/IScsiDxe/IScsiConfig.h4
-rw-r--r--NetworkPkg/IScsiDxe/IScsiDriver.c4
-rw-r--r--NetworkPkg/IScsiDxe/IScsiDriver.h3
-rw-r--r--NetworkPkg/IScsiDxe/IScsiMisc.c3
4 files changed, 7 insertions, 7 deletions
diff --git a/NetworkPkg/IScsiDxe/IScsiConfig.h b/NetworkPkg/IScsiDxe/IScsiConfig.h
index 7fd18a0ae2..daa0d34382 100644
--- a/NetworkPkg/IScsiDxe/IScsiConfig.h
+++ b/NetworkPkg/IScsiDxe/IScsiConfig.h
@@ -2,7 +2,7 @@
The header file of functions for configuring or getting the parameters
relating to iSCSI.
-Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -78,7 +78,7 @@ struct _ISCSI_ATTEMPT_CONFIG_NVDATA {
union {
ISCSI_CHAP_AUTH_CONFIG_NVDATA CHAP;
} AuthConfigData;
-
+ BOOLEAN AutoConfigureSuccess;
};
///
diff --git a/NetworkPkg/IScsiDxe/IScsiDriver.c b/NetworkPkg/IScsiDxe/IScsiDriver.c
index 5e5d700e47..363daadc8f 100644
--- a/NetworkPkg/IScsiDxe/IScsiDriver.c
+++ b/NetworkPkg/IScsiDxe/IScsiDriver.c
@@ -477,7 +477,7 @@ IScsiStart (
// Don't process the autoconfigure path if it is already established.
//
if (AttemptConfigData->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG &&
- AttemptConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_SUCCESS) {
+ AttemptConfigData->AutoConfigureSuccess) {
continue;
}
@@ -576,7 +576,7 @@ IScsiStart (
// IScsi session success. Update the attempt state to NVR.
//
if (AttemptConfigData->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG) {
- AttemptConfigData->AutoConfigureMode = IP_MODE_AUTOCONFIG_SUCCESS;
+ AttemptConfigData->AutoConfigureSuccess = TRUE;
}
gRT->SetVariable (
diff --git a/NetworkPkg/IScsiDxe/IScsiDriver.h b/NetworkPkg/IScsiDxe/IScsiDriver.h
index 825394a1d2..338e3dcf18 100644
--- a/NetworkPkg/IScsiDxe/IScsiDriver.h
+++ b/NetworkPkg/IScsiDxe/IScsiDriver.h
@@ -1,7 +1,7 @@
/** @file
The header file of IScsiDriver.c.
-Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -29,7 +29,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#define IP_MODE_AUTOCONFIG_IP4 3
#define IP_MODE_AUTOCONFIG_IP6 4
-#define IP_MODE_AUTOCONFIG_SUCCESS 5
extern EFI_COMPONENT_NAME2_PROTOCOL gIScsiComponentName2;
extern EFI_COMPONENT_NAME_PROTOCOL gIScsiComponentName;
diff --git a/NetworkPkg/IScsiDxe/IScsiMisc.c b/NetworkPkg/IScsiDxe/IScsiMisc.c
index f5c54e7018..e7198d5ab0 100644
--- a/NetworkPkg/IScsiDxe/IScsiMisc.c
+++ b/NetworkPkg/IScsiDxe/IScsiMisc.c
@@ -1054,7 +1054,7 @@ IScsiGetConfigData (
// Check the autoconfig path to see whether it should be retried.
//
if (AttemptTmp->SessionConfigData.IpMode == IP_MODE_AUTOCONFIG &&
- AttemptTmp->AutoConfigureMode != IP_MODE_AUTOCONFIG_SUCCESS) {
+ !AttemptTmp->AutoConfigureSuccess) {
if (mPrivate->Ipv6Flag &&
AttemptTmp->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP6) {
//
@@ -1197,6 +1197,7 @@ IScsiGetConfigData (
AttemptConfigData->AutoConfigureMode =
(UINT8) (mPrivate->Ipv6Flag ? IP_MODE_AUTOCONFIG_IP6 : IP_MODE_AUTOCONFIG_IP4);
+ AttemptConfigData->AutoConfigureSuccess = FALSE;
}
//