X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=NetworkPkg%2FIScsiDxe%2FIScsiProto.c;h=29b3c24997ea7231c8ea06005ffebf0e0a534820;hp=3dabb00d4a614d227ae2e2f33ed14b5b7cde92c4;hb=0b10bb6f4387fd0587329d43e768a90371d63491;hpb=75dce340624dba5e4a79b2e5b2dbe943bae0d0e9 diff --git a/NetworkPkg/IScsiDxe/IScsiProto.c b/NetworkPkg/IScsiDxe/IScsiProto.c index 3dabb00d4a..29b3c24997 100644 --- a/NetworkPkg/IScsiDxe/IScsiProto.c +++ b/NetworkPkg/IScsiDxe/IScsiProto.c @@ -1,7 +1,7 @@ /** @file The implementation of iSCSI protocol based on RFC3720. -Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.
+Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.
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 @@ -228,7 +228,7 @@ IScsiCreateConnection ( Conn->PartialRspRcvd = FALSE; Conn->ParamNegotiated = FALSE; Conn->Cid = Session->NextCid++; - Conn->Ipv6Flag = mPrivate->Ipv6Flag; + Conn->Ipv6Flag = NvData->IpMode == IP_MODE_IP6 || Session->ConfigData->AutoConfigureMode == IP_MODE_AUTOCONFIG_IP6; Status = gBS->CreateEvent ( EVT_TIMER, @@ -259,15 +259,16 @@ IScsiCreateConnection ( CopyMem (&Tcp4IoConfig->Gateway, &NvData->Gateway, sizeof (EFI_IPv4_ADDRESS)); CopyMem (&Tcp4IoConfig->RemoteIp, &NvData->TargetIp, sizeof (EFI_IPv4_ADDRESS)); - Tcp4IoConfig->RemotePort = NvData->TargetPort; - Tcp4IoConfig->ActiveFlag = TRUE; - + Tcp4IoConfig->RemotePort = NvData->TargetPort; + Tcp4IoConfig->ActiveFlag = TRUE; + Tcp4IoConfig->StationPort = 0; } else { Tcp6IoConfig = &TcpIoConfig.Tcp6IoConfigData; CopyMem (&Tcp6IoConfig->RemoteIp, &NvData->TargetIp, sizeof (EFI_IPv6_ADDRESS)); - Tcp6IoConfig->RemotePort = NvData->TargetPort; - Tcp6IoConfig->ActiveFlag = TRUE; + Tcp6IoConfig->RemotePort = NvData->TargetPort; + Tcp6IoConfig->ActiveFlag = TRUE; + Tcp6IoConfig->StationPort = 0; } // @@ -471,7 +472,7 @@ IScsiSessionLogin ( if (!EFI_ERROR (Status)) { Session->State = SESSION_STATE_LOGGED_IN; - if (!mPrivate->Ipv6Flag) { + if (!Conn->Ipv6Flag) { ProtocolGuid = &gEfiTcp4ProtocolGuid; } else { ProtocolGuid = &gEfiTcp6ProtocolGuid; @@ -488,7 +489,7 @@ IScsiSessionLogin ( ASSERT_EFI_ERROR (Status); - if (mPrivate->Ipv6Flag) { + if (Conn->Ipv6Flag) { Status = IScsiGetIp6NicInfo (Conn); } } @@ -2851,7 +2852,8 @@ IScsiExecuteScsiCommand ( Timeout = 0; if (Session->State != SESSION_STATE_LOGGED_IN) { - return EFI_DEVICE_ERROR; + Status = EFI_DEVICE_ERROR; + goto ON_EXIT; } Conn = NET_LIST_USER_STRUCT_S ( @@ -3025,7 +3027,7 @@ IScsiSessionReinstatement ( { EFI_STATUS Status; - ASSERT (Session->State == SESSION_STATE_LOGGED_IN); + ASSERT (Session->State != SESSION_STATE_FREE); // // Abort the session and re-init it.