Hi, Samer
Should below if condition + if (!(EFI_ERROR (Status) || Smbios30Table == NULL)) { to be if (!(EFI_ERROR (Status) && Smbios30Table != NULL)) Siyuan -----Original Message----- From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Samer El-Haj-Mahmoud Sent: Thursday, September 17, 2015 2:00 AM To: edk2-devel@lists.01.org Cc: Tian, Feng <feng.t...@intel.com>; Samer El-Haj-Mahmoud <samer.el-haj-mahm...@hp.com> Subject: [edk2] [PATCH 1/1] MdeModulePkg: Add SMBIOS 3.0 support in NetLibGetSystemGuid NetLibGetSystemGuid gets the UUID from SMBIOS table to use as the System GUID (in DHCP and other network use cases). This change adds support to get the UUID from either SMBIOS 2.x or 3.0, since SMBIOS 3.0 uses a different GUID in the System Configuration Table. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Samer El-Haj-Mahmoud <samer.el-haj-mahm...@hpe.com<mailto:samer.el-haj-mahm...@hpe.com>> --- MdeModulePkg/Library/DxeNetLib/DxeNetLib.c | 33 ++++++++++++++++++---------- MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf | 2 ++ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c index 57e8f9f..1f7f043 100644 --- a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c +++ b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c @@ -2,6 +2,8 @@ Network library. Copyright (c) 2005 - 2015, Intel Corporation. All rights reserved.<BR> +(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR> + This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -3254,21 +3256,30 @@ NetLibGetSystemGuid ( OUT EFI_GUID *SystemGuid ) { - EFI_STATUS Status; - SMBIOS_TABLE_ENTRY_POINT *SmbiosTable; - SMBIOS_STRUCTURE_POINTER Smbios; - SMBIOS_STRUCTURE_POINTER SmbiosEnd; - CHAR8 *String; - + EFI_STATUS Status; + SMBIOS_TABLE_ENTRY_POINT *SmbiosTable; + SMBIOS_TABLE_3_0_ENTRY_POINT *Smbios30Table; + SMBIOS_STRUCTURE_POINTER Smbios; + SMBIOS_STRUCTURE_POINTER SmbiosEnd; + CHAR8 *String; + SmbiosTable = NULL; - Status = EfiGetSystemConfigurationTable (&gEfiSmbiosTableGuid, (VOID **) &SmbiosTable); - if (EFI_ERROR (Status) || SmbiosTable == NULL) { - return EFI_NOT_FOUND; + Status = EfiGetSystemConfigurationTable (&gEfiSmbios3TableGuid, (VOID + **) &Smbios30Table); if (!(EFI_ERROR (Status) || Smbios30Table == NULL)) { + Smbios.Hdr = (SMBIOS_STRUCTURE *) (UINTN) Smbios30Table->TableAddress; + SmbiosEnd.Raw = (UINT8 *) (UINTN) (Smbios30Table->TableAddress + + Smbios30Table->TableMaximumSize); } else { + Status = EfiGetSystemConfigurationTable (&gEfiSmbiosTableGuid, (VOID **) &SmbiosTable); + + if (EFI_ERROR (Status) || SmbiosTable == NULL) { + return EFI_NOT_FOUND; + } + + Smbios.Hdr = (SMBIOS_STRUCTURE *) (UINTN) SmbiosTable->TableAddress; + SmbiosEnd.Raw = (UINT8 *) (UINTN) (SmbiosTable->TableAddress + + SmbiosTable->TableLength); } - Smbios.Hdr = (SMBIOS_STRUCTURE *) (UINTN) SmbiosTable->TableAddress; - SmbiosEnd.Raw = (UINT8 *) (UINTN) (SmbiosTable->TableAddress + SmbiosTable->TableLength); do { if (Smbios.Hdr->Type == 1) { diff --git a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf index 50fbcc2..1ff3a4f 100644 --- a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf +++ b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf @@ -2,6 +2,7 @@ # This library instance provides the basic network services. # # Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR> +# (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR> # This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at @@ -52,6 +53,7 @@ [Guids] gEfiSmbiosTableGuid ## SOMETIMES_CONSUMES ## SystemTable + gEfiSmbios3TableGuid ## SOMETIMES_CONSUMES ## SystemTable [Protocols] -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel