summaryrefslogtreecommitdiff
path: root/NetworkPkg/Mtftp6Dxe
diff options
context:
space:
mode:
authorsfu5 <sfu5@6f19259b-4bc3-4df7-8a09-765794883524>2012-10-17 08:23:41 +0000
committersfu5 <sfu5@6f19259b-4bc3-4df7-8a09-765794883524>2012-10-17 08:23:41 +0000
commit75dce340624dba5e4a79b2e5b2dbe943bae0d0e9 (patch)
treebb2df9255ae3446520031fd0ab40294b9c001243 /NetworkPkg/Mtftp6Dxe
parente98e59c237e17f064a4ecffb39d45499f89720a1 (diff)
downloadedk2-platforms-75dce340624dba5e4a79b2e5b2dbe943bae0d0e9.tar.xz
1. Fix a bug in PXE driver that the PXE boot do not restart if a new boot option on the different IP stack is selected.
2. Retrieve the IP information after iSCSI TCPv6 connection established and fill it into iBFT table. 3. Generate a random IAID for each NIC port to require different IPv6 address in PXE driver. 4. Update function EfiMtftp6Configure() and Mtftp6RrqHandleOack() to allocate at most one UdpIo. 5. Fix a typo from “destory” to “destroy” in network code. Signed-off-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Ouyang Qian <qian.ouyang@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13859 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'NetworkPkg/Mtftp6Dxe')
-rw-r--r--NetworkPkg/Mtftp6Dxe/Mtftp6Driver.c26
-rw-r--r--NetworkPkg/Mtftp6Dxe/Mtftp6Impl.c22
-rw-r--r--NetworkPkg/Mtftp6Dxe/Mtftp6Impl.h6
-rw-r--r--NetworkPkg/Mtftp6Dxe/Mtftp6Rrq.c16
4 files changed, 37 insertions, 33 deletions
diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Driver.c b/NetworkPkg/Mtftp6Dxe/Mtftp6Driver.c
index 28aacf198a..432eea9cd4 100644
--- a/NetworkPkg/Mtftp6Dxe/Mtftp6Driver.c
+++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Driver.c
@@ -2,7 +2,7 @@
Driver Binding functions and Service Binding functions
implementation for Mtftp6 Driver.
- Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2012, 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
@@ -33,7 +33,7 @@ EFI_SERVICE_BINDING_PROTOCOL gMtftp6ServiceBindingTemplate = {
/**
- Destory the MTFTP6 service. The MTFTP6 service may be partly initialized,
+ Destroy the MTFTP6 service. The MTFTP6 service may be partly initialized,
or partly destroyed. If a resource is destroyed, it is marked as such in
case the destroy failed and is called again later.
@@ -46,7 +46,7 @@ Mtftp6DestroyService (
)
{
//
- // Make sure all children instances have been already destoryed.
+ // Make sure all children instances have been already destroyed.
//
ASSERT (Service->ChildrenNum == 0);
@@ -98,7 +98,7 @@ Mtftp6CreateService (
Mtftp6Srv->Signature = MTFTP6_SERVICE_SIGNATURE;
Mtftp6Srv->Controller = Controller;
Mtftp6Srv->Image = Image;
- Mtftp6Srv->InDestory = FALSE;
+ Mtftp6Srv->InDestroy = FALSE;
Mtftp6Srv->ChildrenNum = 0;
CopyMem (
@@ -219,7 +219,7 @@ Mtftp6CreateInstance (
}
Mtftp6Ins->Signature = MTFTP6_INSTANCE_SIGNATURE;
- Mtftp6Ins->InDestory = FALSE;
+ Mtftp6Ins->InDestroy = FALSE;
Mtftp6Ins->Service = Service;
CopyMem (
@@ -460,7 +460,7 @@ Mtftp6DriverBindingStop (
Service = MTFTP6_SERVICE_FROM_THIS (ServiceBinding);
- if (Service->InDestory) {
+ if (Service->InDestroy) {
return EFI_SUCCESS;
}
@@ -468,9 +468,9 @@ Mtftp6DriverBindingStop (
if (NumberOfChildren == 0) {
//
- // Destory the Mtftp6 service if there is no Mtftp6 child instance left.
+ // Destroy the Mtftp6 service if there is no Mtftp6 child instance left.
//
- Service->InDestory = TRUE;
+ Service->InDestroy = TRUE;
gBS->UninstallProtocolInterface (
NicHandle,
@@ -482,7 +482,7 @@ Mtftp6DriverBindingStop (
} else {
//
- // Destory the Mtftp6 child instance one by one.
+ // Destroy the Mtftp6 child instance one by one.
//
while (!IsListEmpty (&Service->Children)) {
Instance = NET_LIST_HEAD (&Service->Children, MTFTP6_INSTANCE, Link);
@@ -657,15 +657,15 @@ Mtftp6ServiceBindingDestroyChild (
}
//
- // Check whether the instance already in destory state.
+ // Check whether the instance already in Destroy state.
//
- if (Instance->InDestory) {
+ if (Instance->InDestroy) {
return EFI_SUCCESS;
}
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
- Instance->InDestory = TRUE;
+ Instance->InDestroy = TRUE;
gBS->CloseProtocol (
Service->DummyUdpIo->UdpHandle,
@@ -684,7 +684,7 @@ Mtftp6ServiceBindingDestroyChild (
);
if (EFI_ERROR (Status)) {
- Instance->InDestory = FALSE;
+ Instance->InDestroy = FALSE;
gBS->RestoreTPL (OldTpl);
return Status;
}
diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.c b/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.c
index 79ae6e0741..4a4e5b192c 100644
--- a/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.c
+++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.c
@@ -8,7 +8,7 @@
RFC2348 - TFTP Blocksize Option
RFC2349 - TFTP Timeout Interval and Transfer Size Options
- Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2012, 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
@@ -189,13 +189,15 @@ EfiMtftp6Configure (
// Don't configure the udpio here because each operation might override
// the configuration, so delay udpio configuration in each operation.
//
- Instance->UdpIo = UdpIoCreateIo (
- Service->Controller,
- Service->Image,
- Mtftp6ConfigDummyUdpIo,
- UDP_IO_UDP6_VERSION,
- NULL
- );
+ if (Instance->UdpIo == NULL) {
+ Instance->UdpIo = UdpIoCreateIo (
+ Service->Controller,
+ Service->Image,
+ Mtftp6ConfigDummyUdpIo,
+ UDP_IO_UDP6_VERSION,
+ NULL
+ );
+ }
if (Instance->UdpIo == NULL) {
Status = EFI_OUT_OF_RESOURCES;
@@ -620,11 +622,11 @@ EfiMtftp6Poll (
Instance = MTFTP6_INSTANCE_FROM_THIS (This);
//
- // Check the instance whether configured or in destory.
+ // Check the instance whether configured or in destroy.
//
if (Instance->Config == NULL) {
return EFI_NOT_STARTED;
- } else if (Instance->InDestory) {
+ } else if (Instance->InDestroy) {
return EFI_DEVICE_ERROR;
}
diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.h b/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.h
index 626aea0e34..68fa0da115 100644
--- a/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.h
+++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Impl.h
@@ -1,7 +1,7 @@
/** @file
Mtftp6 internal data structure and definition declaration.
- Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved. <BR>
+ Copyright (c) 2009 - 2012, 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
@@ -94,7 +94,7 @@ struct _MTFTP6_INSTANCE {
EFI_TPL OldTpl;
BOOLEAN IsTransmitted;
BOOLEAN IsMaster;
- BOOLEAN InDestory;
+ BOOLEAN InDestroy;
};
//
@@ -117,7 +117,7 @@ struct _MTFTP6_SERVICE {
// mtftp driver and udp driver.
//
UDP_IO *DummyUdpIo;
- BOOLEAN InDestory;
+ BOOLEAN InDestroy;
};
/**
diff --git a/NetworkPkg/Mtftp6Dxe/Mtftp6Rrq.c b/NetworkPkg/Mtftp6Dxe/Mtftp6Rrq.c
index 348a8f29c7..7fc613a665 100644
--- a/NetworkPkg/Mtftp6Dxe/Mtftp6Rrq.c
+++ b/NetworkPkg/Mtftp6Dxe/Mtftp6Rrq.c
@@ -547,13 +547,15 @@ Mtftp6RrqHandleOack (
);
Instance->McastPort = ExtInfo.McastPort;
- Instance->McastUdpIo = UdpIoCreateIo (
- Instance->Service->Controller,
- Instance->Service->Image,
- Mtftp6RrqConfigMcastUdpIo,
- UDP_IO_UDP6_VERSION,
- Instance
- );
+ if (Instance->McastUdpIo == NULL) {
+ Instance->McastUdpIo = UdpIoCreateIo (
+ Instance->Service->Controller,
+ Instance->Service->Image,
+ Mtftp6RrqConfigMcastUdpIo,
+ UDP_IO_UDP6_VERSION,
+ Instance
+ );
+ }
if (Instance->McastUdpIo == NULL) {
return EFI_DEVICE_ERROR;