]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Use default UNDI information if NII protocol not exists.
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 14 Apr 2009 08:52:06 +0000 (08:52 +0000)
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 14 Apr 2009 08:52:06 +0000 (08:52 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8082 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDhcp.c
MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDhcp.h
MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcDriver.c
MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcMtftp.c
MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf

index 920506b246c5d9c0d45e8f441bd2f7e099419f2f..95f6e9d4df612920e8e462c52873fcdfd99e261d 100644 (file)
@@ -1019,9 +1019,15 @@ PxeBcBuildDhcpOptions (
   OptList[Index]->OpCode  = PXEBC_PXE_DHCP4_TAG_UNDI;\r
   OptList[Index]->Length  = sizeof (PXEBC_DHCP4_OPTION_UNDI);\r
   OptEnt.Undi             = (PXEBC_DHCP4_OPTION_UNDI *) OptList[Index]->Data;\r
-  OptEnt.Undi->Type       = Private->Nii->Type;\r
-  OptEnt.Undi->MajorVer   = Private->Nii->MajorVer;\r
-  OptEnt.Undi->MinorVer   = Private->Nii->MinorVer;\r
+  if (Private->Nii != NULL) {\r
+    OptEnt.Undi->Type       = Private->Nii->Type;\r
+    OptEnt.Undi->MajorVer   = Private->Nii->MajorVer;\r
+    OptEnt.Undi->MinorVer   = Private->Nii->MinorVer;\r
+  } else {\r
+    OptEnt.Undi->Type       = DEFAULT_UNDI_TYPE;\r
+    OptEnt.Undi->MajorVer   = DEFAULT_UNDI_MAJOR;\r
+    OptEnt.Undi->MinorVer   = DEFAULT_UNDI_MINOR;\r
+  }\r
 \r
   Index++;\r
   OptList[Index] = GET_NEXT_DHCP_OPTION (OptList[Index - 1]);\r
@@ -1045,9 +1051,16 @@ PxeBcBuildDhcpOptions (
   OptEnt.Clid             = (PXEBC_DHCP4_OPTION_CLID *) OptList[Index]->Data;\r
   CopyMem (OptEnt.Clid, DEFAULT_CLASS_ID_DATA, sizeof (PXEBC_DHCP4_OPTION_CLID));\r
   CvtNum (SYS_ARCH, OptEnt.Clid->ArchitectureType, sizeof (OptEnt.Clid->ArchitectureType));\r
-  CopyMem (OptEnt.Clid->InterfaceName, Private->Nii->StringId, sizeof (OptEnt.Clid->InterfaceName));\r
-  CvtNum (Private->Nii->MajorVer, OptEnt.Clid->UndiMajor, sizeof (OptEnt.Clid->UndiMajor));\r
-  CvtNum (Private->Nii->MinorVer, OptEnt.Clid->UndiMinor, sizeof (OptEnt.Clid->UndiMinor));\r
+\r
+  if (Private->Nii != NULL) {\r
+    // \r
+    // If NII protocol exists, update DHCP option data\r
+    //\r
+    CopyMem (OptEnt.Clid->InterfaceName, Private->Nii->StringId, sizeof (OptEnt.Clid->InterfaceName));\r
+    CvtNum (Private->Nii->MajorVer, OptEnt.Clid->UndiMajor, sizeof (OptEnt.Clid->UndiMajor));\r
+    CvtNum (Private->Nii->MinorVer, OptEnt.Clid->UndiMinor, sizeof (OptEnt.Clid->UndiMinor));\r
+  }\r
+\r
   Index++;\r
 \r
   return Index;\r
index 6ad03a8cd9d0271a3520e643c151df7f55432fed..d1e6ca28d29fab82523da3eb73d7cafb64dcb995 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Dhcp and Discover routines for PxeBc.\r
 \r
-Copyright (c) 2007, 2009, Intel Corporation.<BR>\r
+Copyright (c) 2007 - 2009, Intel Corporation.<BR>\r
 All rights reserved. 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
@@ -193,7 +193,10 @@ typedef struct {
   UINT16  Type;\r
 } PXEBC_DHCP4_OPTION_ARCH;\r
 \r
-#define DEFAULT_CLASS_ID_DATA "PXEClient:Arch:?????:????:??????"\r
+#define DEFAULT_CLASS_ID_DATA "PXEClient:Arch:xxxxx:UNDI:003000"\r
+#define DEFAULT_UNDI_TYPE     1\r
+#define DEFAULT_UNDI_MAJOR    3\r
+#define DEFAULT_UNDI_MINOR    0\r
 \r
 typedef struct {\r
   UINT8 ClassIdentifier[10];\r
index 102f68586ac421bc03d4ff1d1a0c3de99b0b9241..a4951c88fdab18ed2261d0a6fee8a9e5d2719d8b 100644 (file)
@@ -174,7 +174,7 @@ PxeBcDriverBindingStart (
   }\r
 \r
   //\r
-  // Get the NII interface\r
+  // Get the NII interface if it exists.\r
   //\r
   Status = gBS->OpenProtocol (\r
                   ControllerHandle,\r
@@ -185,7 +185,7 @@ PxeBcDriverBindingStart (
                   EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    goto ON_ERROR;\r
+    Private->Nii = NULL;\r
   }\r
 \r
   Status = NetLibCreateServiceChild (\r
index e81d0695032ed48746c704f767cd2a3d39f0e5b4..d6d4cd581f5edcdd1798a9c9c4de3867791b9021 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   PxeBc MTFTP functions.\r
   \r
-Copyright (c) 2007, 2009, Intel Corporation.<BR>\r
+Copyright (c) 2007 - 2009, Intel Corporation.<BR>\r
 All rights reserved. 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
@@ -158,7 +158,7 @@ PxeBcTftpGetFileSize (
                     );\r
 \r
   if (EFI_ERROR (Status)) {\r
-    if (Packet->OpCode == EFI_MTFTP4_OPCODE_ERROR) {\r
+    if (Status == EFI_TFTP_ERROR) {\r
       Private->Mode.TftpErrorReceived = TRUE;\r
       Private->Mode.TftpError.ErrorCode = (UINT8) Packet->Error.ErrorCode;\r
       AsciiStrnCpy (\r
index 1350df40a185630dbe0a8e1b45f850b86ab9d916..f1c2e1c472c89ada4f841612f740110120873057 100644 (file)
@@ -1,7 +1,7 @@
 #/** @file\r
 # Component name for module UefiPxeBc\r
 #\r
-# Copyright (c) 2007 - 2008, Intel Corporation. All rights reserved.\r
+# Copyright (c) 2007 - 2009, Intel Corporation. All rights reserved.\r
 #\r
 #  All rights reserved. This program and the accompanying materials\r
 #  are licensed and made available under the terms and conditions of the BSD License\r
@@ -92,7 +92,7 @@
   gEfiLoadFileProtocolGuid                         # PROTOCOL ALWAYS_PRODUCED\r
   gEfiDhcp4ProtocolGuid                            # PROTOCOL ALWAYS_CONSUMED\r
   gEfiUdp4ProtocolGuid                             # PROTOCOL ALWAYS_CONSUMED\r
-  gEfiNetworkInterfaceIdentifierProtocolGuid_31    # PROTOCOL ALWAYS_CONSUMED\r
+  gEfiNetworkInterfaceIdentifierProtocolGuid_31    ## SOMETIMES_CONSUMES\r
   gEfiIp4ServiceBindingProtocolGuid                # PROTOCOL ALWAYS_CONSUMED\r
   gEfiIp4ProtocolGuid                              # PROTOCOL ALWAYS_CONSUMED\r
 \r