]> git.proxmox.com Git - mirror_edk2.git/commitdiff
1. Introduce PcdTftpBlockSize to let platform DSC customize block size.
authorhhuan13 <hhuan13@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 18 Aug 2010 00:47:26 +0000 (00:47 +0000)
committerhhuan13 <hhuan13@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 18 Aug 2010 00:47:26 +0000 (00:47 +0000)
2. Roll back the default block size to handle all link layers.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10803 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/MdeModulePkg.dec
MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c
MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.h
MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf

index 5bd23ffc5376af2b1fa42bbe65ab0c9fc0c6bfa8..b3ada524e363b4842cbbffc9c56683e3b7207a1a 100644 (file)
   ## Smbios version\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion|0x0206|UINT16|0x00010055\r
 \r
+  ## TFTP BlockSize. Initial value 0 means using default block size which is (MTU-IP_HEADER-UDP_HEADER-TFTP_HEADER)\r
+  #  to handle all link layers. If the value is non zero, the PCD value will be used as block size.\r
+  #\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdTftpBlockSize|0x0|UINT64|0x30001026\r
+\r
 [PcdsFixedAtBuild,PcdsPatchableInModule]\r
   ## Maximun number of performance log entries during PEI phase.\r
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries|40|UINT8|0x0001002f\r
index 6721d9a08336f4463f95b241923c2ae2134f423b..989da79b850f042341631f7eb7d4ce7efcd5546c 100644 (file)
@@ -347,7 +347,19 @@ EfiPxeBcStart (
     return Status;\r
   }\r
 \r
-  Private->BlockSize   = 0x8000;\r
+\r
+  //\r
+  // Configure block size for TFTP as a default value to handle all link layers.\r
+  // \r
+  Private->BlockSize   = (UINTN) (MIN (Private->Ip4MaxPacketSize, PXEBC_DEFAULT_PACKET_SIZE) - \r
+                           PXEBC_DEFAULT_UDP_OVERHEAD_SIZE - PXEBC_DEFAULT_TFTP_OVERHEAD_SIZE);\r
+  //\r
+  // If PcdTftpBlockSize is set to non-zero, override the default value.\r
+  //\r
+  if (PcdGet64 (PcdTftpBlockSize) != 0) {\r
+    Private->BlockSize   = (UINTN) PcdGet64 (PcdTftpBlockSize);\r
+  }\r
+  \r
   Private->AddressIsOk = FALSE;\r
 \r
   ZeroMem (Mode, sizeof (EFI_PXE_BASE_CODE_MODE));\r
index 7510096eaf53d3e3d77ae501c914f33fc3268b4c..ddc1eba034e333c11487ae6c55d04bfac938c63a 100644 (file)
@@ -40,6 +40,7 @@ typedef struct _PXEBC_PRIVATE_DATA  PXEBC_PRIVATE_DATA;
 #include <Library/BaseLib.h>\r
 #include <Library/NetLib.h>\r
 #include <Library/DpcLib.h>\r
+#include <Library/PcdLib.h>\r
 \r
 #include "PxeBcDriver.h"\r
 #include "PxeBcDhcp.h"\r
index c0b49dc4eb26a951122bfb9954af09c4704a468c..3ac4fb041f0402f7075a7280a5245ac818e3b4e5 100644 (file)
@@ -64,6 +64,7 @@
   DebugLib\r
   NetLib\r
   DpcLib\r
+  PcdLib\r
 \r
 [Guids]\r
   gEfiSmbiosTableGuid                              # ALWAYS_CONSUMED\r
@@ -83,3 +84,6 @@
   gEfiNetworkInterfaceIdentifierProtocolGuid_31    ## SOMETIMES_CONSUMES\r
   gEfiIp4ServiceBindingProtocolGuid                # PROTOCOL ALWAYS_CONSUMED\r
   gEfiIp4ProtocolGuid                              # PROTOCOL ALWAYS_CONSUMED\r
+\r
+[Pcd]  \r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdTftpBlockSize     ## CONSUMES  \r