}\r
}\r
\r
- Status = Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
+ Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
\r
//\r
// Dhcp(), Discover(), and Mtftp() set the IP filter, and return with the IP \r
} else {\r
Status = EFI_DEVICE_ERROR;\r
}\r
- return Status;\r
+ goto ON_EXIT;\r
} else {\r
PxeBcParseCachedDhcpPacket (&Private->PxeReply);\r
}\r
\r
ON_EXIT:\r
\r
- Status = Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
+ Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
\r
//\r
// Dhcp(), Discover(), and Mtftp() set the IP filter, and return with the IP \r
}\r
\r
if (EFI_ERROR (Status)) {\r
- return Status;\r
+ goto ON_EXIT;\r
}\r
\r
- Status = Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
+ON_EXIT:\r
+ Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
//\r
// Dhcp(), Discover(), and Mtftp() set the IP filter, and return with the IP \r
// receive filter list emptied and the filter set to EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP.\r
}\r
ReadSize = (UINTN) Reply->Size;\r
\r
+ //\r
+ // Start Udp6Read instance\r
+ //\r
+ Status = Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+ \r
Status = PxeBc->UdpRead (\r
PxeBc,\r
OpFlags,\r
&ReadSize,\r
(VOID *) &Reply->Dhcp6\r
);\r
+ //\r
+ // Stop Udp6Read instance\r
+ //\r
+ Private->Udp6Read->Configure (Private->Udp6Read, NULL);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
Status = PxeBcDhcp6Sarr (Private, Private->Dhcp6);\r
\r
if (EFI_ERROR (Status)) {\r
- return Status;\r
+ goto ON_EXIT;\r
}\r
-\r
- //\r
- // Configure Udp6Read instance\r
- //\r
- Status = Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData); \r
} else {\r
\r
//\r
Status = PxeBcDhcp4Dora (Private, Private->Dhcp4);\r
\r
if (EFI_ERROR (Status)) {\r
- return Status;\r
+ goto ON_EXIT;\r
}\r
-\r
- //\r
- // Configure Udp4Read instance\r
- //\r
- Status = Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
}\r
-\r
+ \r
+ON_EXIT:\r
+ if (Mode->UsingIpv6) {\r
+ Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData);\r
+ } else {\r
+ Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
+ }\r
//\r
// Dhcp(), Discover(), and Mtftp() set the IP filter, and return with the IP\r
// receive filter list emptied and the filter set to EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP.\r
}\r
\r
if (EFI_ERROR (Status)) {\r
- return Status; \r
+ goto ON_EXIT;\r
} else {\r
//\r
// Parse the cached PXE reply packet, and store it into mode data if valid.\r
ON_EXIT:\r
\r
if (Mode->UsingIpv6) {\r
- Status = Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData); \r
+ Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData);\r
} else {\r
- Status = Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData); \r
+ Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
}\r
\r
//\r
}\r
\r
if (EFI_ERROR (Status)) {\r
- return Status;\r
+ goto ON_EXIT;\r
}\r
-\r
+ \r
+ON_EXIT:\r
if (Mode->UsingIpv6) {\r
- Status = Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData); \r
+ Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData);\r
} else {\r
- Status = Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData); \r
+ Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
}\r
-\r
//\r
// Dhcp(), Discover(), and Mtftp() set the IP filter, and return with the IP\r
// receive filter list emptied and the filter set to EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP.\r