I missed that the default was from the RFC. I agree with you. -Jaben
> -----Original Message----- > From: Leif Lindholm [mailto:[email protected]] > Sent: Friday, April 29, 2016 11:00 AM > To: Carsey, Jaben <[email protected]> > Cc: Marcin Wojtas <[email protected]>; Fu, Siyuan <[email protected]>; > [email protected]; [email protected]; Gao, Liming > <[email protected]>; [email protected]; Kinney, Michael D > <[email protected]> > Subject: Re: [edk2] [RFC] MdeModulePkg, ShellPkg: increase TFTP block size > Importance: High > > Since the default is actually defined in the RFC, I would prefer this > to not be PCD configurable. Having it as an option to the shell command > makes a lot of sense, though. > > / > Leif > > On Fri, Apr 29, 2016 at 05:44:50PM +0000, Carsey, Jaben wrote: > > Maybe we should have a PCD control the default value so that people > > who build it can set it as per their own best value. Adding a > > parameter seems like a great (but separate) solution. > > > > -Jaben > > > > > -----Original Message----- > > > From: edk2-devel [mailto:[email protected]] On Behalf Of > > > Marcin Wojtas > > > Sent: Friday, April 29, 2016 2:15 AM > > > To: Fu, Siyuan <[email protected]> > > > Cc: [email protected]; [email protected]; Gao, Liming > > > <[email protected]>; [email protected]; [email protected]; > > > Kinney, Michael D <[email protected]> > > > Subject: Re: [edk2] [RFC] MdeModulePkg, ShellPkg: increase TFTP block > size > > > Importance: High > > > > > > Hi Siyuan, > > > > > > Thanks a lot for thorough explanation. The default 512B won't be > > > changed then - PCD and extending tftp command seem a good alternative. > > > We will come back later with more proper solution. > > > > > > Best regards, > > > Marcin > > > > > > 2016-04-29 10:40 GMT+02:00 Fu, Siyuan <[email protected]>: > > > > Hi, Marcin > > > > > > > > The RFC2348 has a detail discussion about the block size setting in tftp > and > > > give the answer: using value of MTU is not the best choice. You may find > you > > > still can gain more efficiency by increasing the block size over the path > MTU, > > > until the IP fragmentation gives more overhead than the tftp package > frame > > > and process. > > > > > > > > The default block size (512) of tftp is defined in the RFC1350, that's > > > > why > the > > > Mtftp driver use 512 as the default macro value. The MTFTP4 prococol > does > > > provide the interface to allow the caller to provide a "blksize" option in > the > > > MTFTP request, so I prefer to keep the default value to 512 in the Mtftp4 > > > driver, to follow RFC's definition. Another driver in edk2 stack which is > using > > > the mtftp protocol, like the PXE driver, provides a PCD > > > gEfiMdeModulePkgTokenSpaceGuid.PcdTftpBlockSize which allow the > users > > > to configure the default block size during PXE mtftp download. > > > > > > > > For the shell "tftp" command, I also suggest to add a new argument to > > > > let > > > user set the block size, not simply override it with 1468. > > > > > > > > Best Regards > > > > Siyuan > > > > > > > >> -----Original Message----- > > > >> From: edk2-devel [mailto:[email protected]] On Behalf > Of > > > >> Marcin Wojtas > > > >> Sent: Friday, April 29, 2016 9:09 AM > > > >> To: [email protected] > > > >> Cc: [email protected]; [email protected]; [email protected]; > > > Gao, > > > >> Liming <[email protected]>; Kinney, Michael D > > > >> <[email protected]> > > > >> Subject: [edk2] [RFC] MdeModulePkg, ShellPkg: increase TFTP block > size > > > >> > > > >> From: Bartosz Szczepanek <[email protected]> > > > >> > > > >> Hi, > > > >> > > > >> When dealing with low network speed during tftp, the analysis showed > > > >> two issues - UEFI tftp and network stack spend a lot of time (~3.5ms, > > > >> comparing to U-Boot's ~0.6ms) on preparing ACK packet after receiving > > > >> data block from host. The network driver itself is using SNP and its > > > >> time spent on executing SnpTransmit routine is negligible, so it is > > > >> definitely not a problem. > > > >> > > > >> This patch however is only releated to above mentioned problem. It > > > >> occurred that despite our MTU is set to 1500, each block of data has > > > >> to be split to 512 chunks, so the very long receive/ack sequence was > > > >> executed three times more than needed. > > > >> > > > >> Below is an example of a solution of increasing TFTP block size > > > >> to maximum allowed by 1500 MTU. The default block size is changed, > > > >> as well as this option is negotiatied with host. For sure a situation, > > > >> when proposed, increased block size is rejected by host (a default > > > >> fall back to 512 should happen) should be handled properly. > > > >> > > > >> Also a dynamic dependency between port's MTU was considered, but > > > there > > > >> are two problems - how to pass it to Mtftp4 module and way of > negotiating > > > >> size with host - option requires string format. Hence IMO it's better > > > >> to stick to arbitrary size. > > > >> > > > >> I would be very grateful for any comments and ideas, how to handle > > > >> this issue properly. > > > >> > > > >> Best reards, > > > >> Marcin > > > >> > > > >> --- > > > >> MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.h | 2 +- > > > >> ShellPkg/Library/UefiShellTftpCommandLib/Tftp.c | 5 +++++ > > > >> 2 files changed, 6 insertions(+), 1 deletion(-) > > > >> > > > >> diff --git > a/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.h > > > >> b/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.h > > > >> index 527fd1d..9a2d409 100644 > > > >> --- a/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.h > > > >> +++ b/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Impl.h > > > >> @@ -55,7 +55,7 @@ typedef struct _MTFTP4_PROTOCOL > > > >> MTFTP4_PROTOCOL; > > > >> #define MTFTP4_DEFAULT_SERVER_PORT 69 > > > >> #define MTFTP4_DEFAULT_TIMEOUT 3 > > > >> #define MTFTP4_DEFAULT_RETRY 5 > > > >> -#define MTFTP4_DEFAULT_BLKSIZE 512 > > > >> +#define MTFTP4_DEFAULT_BLKSIZE 1468 > > > >> #define MTFTP4_TIME_TO_GETMAP 5 > > > >> > > > >> #define MTFTP4_STATE_UNCONFIGED 0 > > > >> diff --git a/ShellPkg/Library/UefiShellTftpCommandLib/Tftp.c > > > >> b/ShellPkg/Library/UefiShellTftpCommandLib/Tftp.c > > > >> index 831b9c3..3e06b67 100644 > > > >> --- a/ShellPkg/Library/UefiShellTftpCommandLib/Tftp.c > > > >> +++ b/ShellPkg/Library/UefiShellTftpCommandLib/Tftp.c > > > >> @@ -894,12 +894,17 @@ DownloadFile ( > > > >> TftpContext->DownloadedNbOfBytes = 0; > > > >> TftpContext->LastReportedNbOfBytes = 0; > > > >> > > > >> + UINT8 name[] = "blksize"; > > > >> + UINT8 val[] = "1468"; > > > >> + EFI_MTFTP4_OPTION Blksize = { name, val }; > > > >> ZeroMem (&Mtftp4Token, sizeof (EFI_MTFTP4_TOKEN)); > > > >> Mtftp4Token.Filename = (UINT8*)AsciiFilePath; > > > >> Mtftp4Token.BufferSize = FileSize; > > > >> Mtftp4Token.Buffer = Buffer; > > > >> Mtftp4Token.CheckPacket = CheckPacket; > > > >> Mtftp4Token.Context = (VOID*)TftpContext; > > > >> + Mtftp4Token.OptionCount = 1; > > > >> + Mtftp4Token.OptionList = &Blksize; > > > >> > > > >> ShellPrintHiiEx ( > > > >> -1, -1, NULL, STRING_TOKEN (STR_TFTP_DOWNLOADING), > > > >> -- > > > >> 1.8.3.1 > > > >> > > > >> _______________________________________________ > > > >> edk2-devel mailing list > > > >> [email protected] > > > >> https://lists.01.org/mailman/listinfo/edk2-devel > > > _______________________________________________ > > > edk2-devel mailing list > > > [email protected] > > > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

