/** @file\r
Mtftp6 Rrq process functions implementation.\r
\r
- Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
// Reset current retry count of the instance.\r
//\r
Instance->CurRetry = 0;\r
+ Instance->LastPacket = Packet;\r
\r
return Mtftp6TransmitPacket (Instance, Packet);\r
}\r
MTFTP6_EXT_OPTION_INFO ExtInfo;\r
EFI_STATUS Status;\r
INTN Expected;\r
+ EFI_UDP6_PROTOCOL *Udp6;\r
\r
*IsCompleted = FALSE;\r
+ Options = NULL;\r
\r
//\r
// If already started the master download, don't change the\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+ ASSERT (Options != NULL);\r
\r
//\r
// Parse the extensive options in the packet.\r
);\r
\r
Instance->McastPort = ExtInfo.McastPort;\r
- Instance->McastUdpIo = UdpIoCreateIo (\r
- Instance->Service->Controller,\r
- Instance->Service->Image,\r
- Mtftp6RrqConfigMcastUdpIo,\r
- UDP_IO_UDP6_VERSION,\r
- Instance\r
- );\r
+ if (Instance->McastUdpIo == NULL) {\r
+ Instance->McastUdpIo = UdpIoCreateIo (\r
+ Instance->Service->Controller,\r
+ Instance->Service->Image,\r
+ Mtftp6RrqConfigMcastUdpIo,\r
+ UDP_IO_UDP6_VERSION,\r
+ Instance\r
+ );\r
+ if (Instance->McastUdpIo != NULL) {\r
+ Status = gBS->OpenProtocol (\r
+ Instance->McastUdpIo->UdpHandle,\r
+ &gEfiUdp6ProtocolGuid,\r
+ (VOID **) &Udp6,\r
+ Instance->Service->Image,\r
+ Instance->Handle,\r
+ EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ UdpIoFreeIo (Instance->McastUdpIo);\r
+ Instance->McastUdpIo = NULL;\r
+ return EFI_DEVICE_ERROR;\r
+ }\r
+ }\r
+ }\r
\r
if (Instance->McastUdpIo == NULL) {\r
return EFI_DEVICE_ERROR;\r