NicHandle = NetLibGetNicHandle (Controller, &gEfiUdp4ProtocolGuid);\r
\r
if (NicHandle == NULL) {\r
- return EFI_SUCCESS;\r
+ return EFI_DEVICE_ERROR;\r
}\r
\r
Status = gBS->OpenProtocol (\r
return EFI_SUCCESS;\r
}\r
\r
- OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
- MtftpSb->InDestory = TRUE;\r
+ OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
\r
- while (!NetListIsEmpty (&MtftpSb->Children)) {\r
- Instance = NET_LIST_HEAD (&MtftpSb->Children, MTFTP4_PROTOCOL, Link);\r
- Mtftp4ServiceBindingDestroyChild (ServiceBinding, Instance->Handle);\r
- }\r
+ if (NumberOfChildren == 0) {\r
\r
- if (MtftpSb->ChildrenNum != 0) {\r
- Status = EFI_DEVICE_ERROR;\r
- goto ON_ERROR;\r
- }\r
+ MtftpSb->InDestory = TRUE;\r
\r
- Status = gBS->UninstallProtocolInterface (\r
- NicHandle,\r
- &gEfiMtftp4ServiceBindingProtocolGuid,\r
- ServiceBinding\r
- );\r
+ gBS->UninstallProtocolInterface (\r
+ NicHandle,\r
+ &gEfiMtftp4ServiceBindingProtocolGuid,\r
+ ServiceBinding\r
+ );\r
\r
- if (EFI_ERROR (Status)) {\r
- goto ON_ERROR;\r
- }\r
+ Mtftp4CleanService (MtftpSb);\r
\r
- Mtftp4CleanService (MtftpSb);\r
- NetFreePool (MtftpSb);\r
+ NetFreePool (MtftpSb);\r
+ } else {\r
\r
- NET_RESTORE_TPL (OldTpl);\r
- return EFI_SUCCESS;\r
+ while (!NetListIsEmpty (&MtftpSb->Children)) {\r
+ Instance = NET_LIST_HEAD (&MtftpSb->Children, MTFTP4_PROTOCOL, Link);\r
+ Mtftp4ServiceBindingDestroyChild (ServiceBinding, Instance->Handle);\r
+ }\r
\r
-ON_ERROR:\r
- MtftpSb->InDestory = FALSE;\r
+ if (MtftpSb->ChildrenNum != 0) {\r
+ Status = EFI_DEVICE_ERROR;\r
+ }\r
+ }\r
\r
NET_RESTORE_TPL (OldTpl);\r
return Status;\r