/** @file\r
UEFI Component Name(2) protocol implementation for UefiPxeBc driver.\r
\r
- Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2018, 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
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php.\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
OUT CHAR16 **DriverName\r
);\r
\r
-\r
/**\r
Retrieves a Unicode string that is the user-readable name of the controller\r
that is being managed by a driver.\r
driver specified by This was returned in\r
DriverName.\r
\r
- @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
+ @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
\r
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL, and it is not a valid\r
EFI_HANDLE.\r
OUT CHAR16 **ControllerName\r
);\r
\r
-\r
//\r
// EFI Component Name Protocol\r
//\r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gPxeBcComponentName = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gPxeBcComponentName = {\r
PxeBcComponentNameGetDriverName,\r
PxeBcComponentNameGetControllerName,\r
"eng"\r
//\r
// EFI Component Name 2 Protocol\r
//\r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gPxeBcComponentName2 = {\r
- (EFI_COMPONENT_NAME2_GET_DRIVER_NAME) PxeBcComponentNameGetDriverName,\r
- (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) PxeBcComponentNameGetControllerName,\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gPxeBcComponentName2 = {\r
+ (EFI_COMPONENT_NAME2_GET_DRIVER_NAME)PxeBcComponentNameGetDriverName,\r
+ (EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME)PxeBcComponentNameGetControllerName,\r
"en"\r
};\r
\r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mPxeBcDriverNameTable[] = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mPxeBcDriverNameTable[] = {\r
{\r
"eng;en",\r
L"UEFI PXE Base Code Driver"\r
}\r
};\r
\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mPxeBcControllerNameTable[] = {\r
+ {\r
+ "eng;en",\r
+ L"PXE Controller"\r
+ },\r
+ {\r
+ NULL,\r
+ NULL\r
+ }\r
+};\r
\r
/**\r
Retrieves a Unicode string that is the user-readable name of the driver.\r
OUT CHAR16 **DriverName\r
)\r
{\r
- return LookupUnicodeString2(\r
+ return LookupUnicodeString2 (\r
Language,\r
This->SupportedLanguages,\r
mPxeBcDriverNameTable,\r
);\r
}\r
\r
-\r
/**\r
Retrieves a Unicode string that is the user-readable name of the controller\r
that is being managed by a driver.\r
driver specified by This was returned in\r
DriverName.\r
\r
- @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
+ @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
\r
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
EFI_HANDLE.\r
OUT CHAR16 **ControllerName\r
)\r
{\r
- return EFI_UNSUPPORTED;\r
-}\r
+ EFI_STATUS Status;\r
+ EFI_HANDLE NicHandle;\r
+ PXEBC_PRIVATE_PROTOCOL *Id;\r
+\r
+ if ((ControllerHandle == NULL) || (ChildHandle != NULL)) {\r
+ return EFI_UNSUPPORTED;\r
+ }\r
+\r
+ NicHandle = PxeBcGetNicByIp4Children (ControllerHandle);\r
+ if (NicHandle == NULL) {\r
+ NicHandle = PxeBcGetNicByIp6Children (ControllerHandle);\r
+ if (NicHandle == NULL) {\r
+ return EFI_UNSUPPORTED;\r
+ }\r
+ }\r
+\r
+ //\r
+ // Try to retrieve the private data by PxeBcPrivate protocol.\r
+ //\r
+ Status = gBS->OpenProtocol (\r
+ NicHandle,\r
+ &gEfiCallerIdGuid,\r
+ (VOID **)&Id,\r
+ NULL,\r
+ NULL,\r
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
\r
+ return LookupUnicodeString2 (\r
+ Language,\r
+ This->SupportedLanguages,\r
+ mPxeBcControllerNameTable,\r
+ ControllerName,\r
+ (BOOLEAN)(This == &gPxeBcComponentName)\r
+ );\r
+}\r