- Status = UpdateName(IScsiController, Ipv6Flag);\r
- if (EFI_ERROR(Status)) {\r
- return Status;\r
+ if(ChildHandle != NULL) {\r
+ if(!Ipv6Flag) {\r
+ //\r
+ // Make sure this driver produced ChildHandle\r
+ //\r
+ Status = EfiTestChildHandle (\r
+ ControllerHandle,\r
+ ChildHandle,\r
+ &gEfiTcp4ProtocolGuid\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+ } else {\r
+ //\r
+ // Make sure this driver produced ChildHandle\r
+ //\r
+ Status = EfiTestChildHandle (\r
+ ControllerHandle,\r
+ ChildHandle,\r
+ &gEfiTcp6ProtocolGuid\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+ }\r
+ \r
+ //\r
+ // Retrieve an instance of a produced protocol from ChildHandle\r
+ //\r
+ Status = gBS->OpenProtocol (\r
+ ChildHandle,\r
+ &gEfiExtScsiPassThruProtocolGuid,\r
+ (VOID **)&IScsiExtScsiPassThru,\r
+ NULL,\r
+ NULL,\r
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+ \r
+ //\r
+ // Update the component name for this child handle.\r
+ //\r
+ Status = UpdateName (IScsiExtScsiPassThru, Ipv6Flag);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r