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