]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c
1. Introduce PcdTftpBlockSize to let platform DSC customize block size.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / UefiPxeBcDxe / PxeBcImpl.c
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