## 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
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
#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
DebugLib\r
NetLib\r
DpcLib\r
+ PcdLib\r
\r
[Guids]\r
gEfiSmbiosTableGuid # ALWAYS_CONSUMED\r
gEfiNetworkInterfaceIdentifierProtocolGuid_31 ## SOMETIMES_CONSUMES\r
gEfiIp4ServiceBindingProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
gEfiIp4ProtocolGuid # PROTOCOL ALWAYS_CONSUMED\r
+\r
+[Pcd] \r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdTftpBlockSize ## CONSUMES \r