From cfbc1a7537d55ff0066b5635855f5739d02d15dc Mon Sep 17 00:00:00 2001 From: hhuan13 Date: Wed, 18 Aug 2010 00:47:26 +0000 Subject: [PATCH] 1. Introduce PcdTftpBlockSize to let platform DSC customize block size. 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 | 5 +++++ .../Universal/Network/UefiPxeBcDxe/PxeBcImpl.c | 14 +++++++++++++- .../Universal/Network/UefiPxeBcDxe/PxeBcImpl.h | 1 + .../Network/UefiPxeBcDxe/UefiPxeBcDxe.inf | 4 ++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec index 5bd23ffc53..b3ada524e3 100644 --- a/MdeModulePkg/MdeModulePkg.dec +++ b/MdeModulePkg/MdeModulePkg.dec @@ -352,6 +352,11 @@ ## Smbios version gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosVersion|0x0206|UINT16|0x00010055 + ## TFTP BlockSize. Initial value 0 means using default block size which is (MTU-IP_HEADER-UDP_HEADER-TFTP_HEADER) + # to handle all link layers. If the value is non zero, the PCD value will be used as block size. + # + gEfiMdeModulePkgTokenSpaceGuid.PcdTftpBlockSize|0x0|UINT64|0x30001026 + [PcdsFixedAtBuild,PcdsPatchableInModule] ## Maximun number of performance log entries during PEI phase. gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries|40|UINT8|0x0001002f diff --git a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c index 6721d9a083..989da79b85 100644 --- a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c +++ b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c @@ -347,7 +347,19 @@ EfiPxeBcStart ( return Status; } - Private->BlockSize = 0x8000; + + // + // Configure block size for TFTP as a default value to handle all link layers. + // + Private->BlockSize = (UINTN) (MIN (Private->Ip4MaxPacketSize, PXEBC_DEFAULT_PACKET_SIZE) - + PXEBC_DEFAULT_UDP_OVERHEAD_SIZE - PXEBC_DEFAULT_TFTP_OVERHEAD_SIZE); + // + // If PcdTftpBlockSize is set to non-zero, override the default value. + // + if (PcdGet64 (PcdTftpBlockSize) != 0) { + Private->BlockSize = (UINTN) PcdGet64 (PcdTftpBlockSize); + } + Private->AddressIsOk = FALSE; ZeroMem (Mode, sizeof (EFI_PXE_BASE_CODE_MODE)); diff --git a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.h b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.h index 7510096eaf..ddc1eba034 100644 --- a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.h +++ b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.h @@ -40,6 +40,7 @@ typedef struct _PXEBC_PRIVATE_DATA PXEBC_PRIVATE_DATA; #include #include #include +#include #include "PxeBcDriver.h" #include "PxeBcDhcp.h" diff --git a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf index c0b49dc4eb..3ac4fb041f 100644 --- a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf +++ b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe.inf @@ -64,6 +64,7 @@ DebugLib NetLib DpcLib + PcdLib [Guids] gEfiSmbiosTableGuid # ALWAYS_CONSUMED @@ -83,3 +84,6 @@ gEfiNetworkInterfaceIdentifierProtocolGuid_31 ## SOMETIMES_CONSUMES gEfiIp4ServiceBindingProtocolGuid # PROTOCOL ALWAYS_CONSUMED gEfiIp4ProtocolGuid # PROTOCOL ALWAYS_CONSUMED + +[Pcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdTftpBlockSize ## CONSUMES -- 2.39.2