ControllerHandle,\r
This->DriverBindingHandle,\r
&gEfiUdp4ServiceBindingProtocolGuid,\r
- &Private->Udp4Child\r
+ &Private->Udp4ReadChild\r
);\r
\r
if (EFI_ERROR (Status)) {\r
goto ON_ERROR;\r
}\r
\r
+ //\r
+ // The UDP instance for EfiPxeBcUdpRead\r
+ //\r
Status = gBS->OpenProtocol (\r
- Private->Udp4Child,\r
+ Private->Udp4ReadChild,\r
&gEfiUdp4ProtocolGuid,\r
- (VOID **) &Private->Udp4,\r
+ (VOID **) &Private->Udp4Read,\r
This->DriverBindingHandle,\r
ControllerHandle,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
goto ON_ERROR;\r
}\r
\r
+ //\r
+ // The UDP instance for EfiPxeBcUdpWrite\r
+ //\r
+ Status = NetLibCreateServiceChild (\r
+ ControllerHandle, \r
+ This->DriverBindingHandle,\r
+ &gEfiUdp4ServiceBindingProtocolGuid,\r
+ &Private->Udp4WriteChild\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ goto ON_ERROR;\r
+ }\r
+\r
+ Status = gBS->OpenProtocol (\r
+ Private->Udp4WriteChild,\r
+ &gEfiUdp4ProtocolGuid,\r
+ (VOID **) &Private->Udp4Write,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle,\r
+ EFI_OPEN_PROTOCOL_BY_DRIVER\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ goto ON_ERROR;\r
+ }\r
ZeroMem (&Private->Udp4CfgData, sizeof (EFI_UDP4_CONFIG_DATA));\r
Private->Udp4CfgData.AcceptBroadcast = FALSE;\r
Private->Udp4CfgData.AcceptPromiscuous = FALSE;\r
- Private->Udp4CfgData.AcceptAnyPort = FALSE;\r
+ Private->Udp4CfgData.AcceptAnyPort = TRUE;\r
Private->Udp4CfgData.AllowDuplicatePort = TRUE;\r
Private->Udp4CfgData.TypeOfService = DEFAULT_ToS;\r
Private->Udp4CfgData.TimeToLive = DEFAULT_TTL;\r
Private->Udp4CfgData.DoNotFragment = FALSE;\r
- Private->Udp4CfgData.ReceiveTimeout = 10000; // 10 milliseconds\r
+ Private->Udp4CfgData.ReceiveTimeout = 50000; // 50 milliseconds\r
Private->Udp4CfgData.UseDefaultAddress = FALSE;\r
\r
- PxeBcInitSeedPacket (&Private->SeedPacket, Private->Udp4);\r
+ PxeBcInitSeedPacket (&Private->SeedPacket, Private->Udp4Read);\r
Private->MacLen = Private->SeedPacket.Dhcp4.Header.HwAddrLen;\r
CopyMem (&Private->Mac, &Private->SeedPacket.Dhcp4.Header.ClientHwAddr[0], Private->MacLen);\r
\r
\r
ON_ERROR:\r
\r
- if (Private->Udp4Child != NULL) {\r
+ if (Private->Udp4WriteChild != NULL) {\r
+ gBS->CloseProtocol (\r
+ Private->Udp4WriteChild,\r
+ &gEfiUdp4ProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle\r
+ );\r
+ NetLibDestroyServiceChild (\r
+ ControllerHandle,\r
+ This->DriverBindingHandle,\r
+ &gEfiUdp4ServiceBindingProtocolGuid,\r
+ Private->Udp4WriteChild\r
+ );\r
+ }\r
+\r
+ if (Private->Udp4ReadChild != NULL) {\r
gBS->CloseProtocol (\r
- Private->Udp4Child,\r
+ Private->Udp4ReadChild,\r
&gEfiUdp4ProtocolGuid,\r
This->DriverBindingHandle,\r
ControllerHandle\r
ControllerHandle,\r
This->DriverBindingHandle,\r
&gEfiUdp4ServiceBindingProtocolGuid,\r
- Private->Udp4Child\r
+ Private->Udp4ReadChild\r
);\r
}\r
\r
if (!EFI_ERROR (Status)) {\r
\r
gBS->CloseProtocol (\r
- Private->Udp4Child,\r
+ Private->Udp4WriteChild,\r
+ &gEfiUdp4ProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ NicHandle\r
+ );\r
+ NetLibDestroyServiceChild (\r
+ ControllerHandle,\r
+ This->DriverBindingHandle,\r
+ &gEfiUdp4ServiceBindingProtocolGuid,\r
+ Private->Udp4WriteChild\r
+ );\r
+\r
+ gBS->CloseProtocol (\r
+ Private->Udp4ReadChild,\r
&gEfiUdp4ProtocolGuid,\r
This->DriverBindingHandle,\r
NicHandle\r
NicHandle,\r
This->DriverBindingHandle,\r
&gEfiUdp4ServiceBindingProtocolGuid,\r
- Private->Udp4Child\r
+ Private->Udp4ReadChild\r
);\r
\r
gBS->CloseProtocol (\r