"blksize",\r
"timeout",\r
"tsize",\r
- "multicast"\r
+ "multicast",\r
+ "windowsize"\r
};\r
\r
\r
IN EFI_MTFTP6_CONFIG_DATA *Config,\r
IN UINT8 *Filename,\r
IN UINTN *BlockSize,\r
+ IN UINTN *WindowSize,\r
IN OUT UINT64 *BufferSize\r
)\r
{\r
EFI_MTFTP6_PROTOCOL *Mtftp6;\r
- EFI_MTFTP6_OPTION ReqOpt[2];\r
+ EFI_MTFTP6_OPTION ReqOpt[3];\r
EFI_MTFTP6_PACKET *Packet;\r
EFI_MTFTP6_OPTION *Option;\r
UINT32 PktLen;\r
- UINT8 OptBuf[128];\r
+ UINT8 OptBuf[PXE_MTFTP_OPTBUF_MAXNUM_INDEX];\r
+ UINTN OptBufSize;\r
UINT32 OptCnt;\r
EFI_STATUS Status;\r
\r
Packet = NULL;\r
Option = NULL;\r
PktLen = 0;\r
+ OptBufSize = PXE_MTFTP_OPTBUF_MAXNUM_INDEX;\r
OptCnt = 1;\r
Config->InitialServerPort = PXEBC_BS_DOWNLOAD_PORT;\r
\r
// Build the required options for get info.\r
//\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_TSIZE_INDEX];\r
- PxeBcUintnToAscDec (0, OptBuf, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
+ PxeBcUintnToAscDec (0, OptBuf, OptBufSize);\r
ReqOpt[0].ValueStr = OptBuf;\r
\r
if (BlockSize != NULL) {\r
- ReqOpt[1].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
- ReqOpt[1].ValueStr = (UINT8 *) (ReqOpt[0].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[0].ValueStr) + 1);\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[1].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX - (AsciiStrLen ((CHAR8 *) ReqOpt[0].ValueStr) + 1));\r
+ ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
+ ReqOpt[OptCnt].ValueStr = (UINT8 *) (ReqOpt[OptCnt-1].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1);\r
+ OptBufSize -= (AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1);\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[OptCnt].ValueStr, OptBufSize);\r
+ OptCnt++;\r
+ }\r
+\r
+ if (WindowSize != NULL) {\r
+ ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX];\r
+ ReqOpt[OptCnt].ValueStr = (UINT8 *) (ReqOpt[OptCnt-1].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1);\r
+ OptBufSize -= (AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1);\r
+ PxeBcUintnToAscDec (*WindowSize, ReqOpt[OptCnt].ValueStr, OptBufSize);\r
OptCnt++;\r
}\r
\r
IN EFI_MTFTP6_CONFIG_DATA *Config,\r
IN UINT8 *Filename,\r
IN UINTN *BlockSize,\r
+ IN UINTN *WindowSize,\r
IN UINT8 *BufferPtr,\r
IN OUT UINT64 *BufferSize,\r
IN BOOLEAN DontUseBuffer\r
{\r
EFI_MTFTP6_PROTOCOL *Mtftp6;\r
EFI_MTFTP6_TOKEN Token;\r
- EFI_MTFTP6_OPTION ReqOpt[1];\r
+ EFI_MTFTP6_OPTION ReqOpt[2];\r
UINT32 OptCnt;\r
- UINT8 OptBuf[128];\r
+ UINT8 BlksizeBuf[10];\r
+ UINT8 WindowsizeBuf[10];\r
EFI_STATUS Status;\r
\r
Status = EFI_DEVICE_ERROR;\r
}\r
\r
if (BlockSize != NULL) {\r
- ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
- ReqOpt[0].ValueStr = OptBuf;\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
+ ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
+ ReqOpt[OptCnt].ValueStr = BlksizeBuf;\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[OptCnt].ValueStr, sizeof (BlksizeBuf));\r
OptCnt++;\r
}\r
\r
+ if (WindowSize != NULL) {\r
+ ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX];\r
+ ReqOpt[OptCnt].ValueStr = WindowsizeBuf;\r
+ PxeBcUintnToAscDec (*WindowSize, ReqOpt[OptCnt].ValueStr, sizeof (WindowsizeBuf));\r
+ OptCnt++;\r
+ }\r
+\r
+\r
Token.Event = NULL;\r
Token.OverrideData = NULL;\r
Token.Filename = Filename;\r
IN EFI_MTFTP6_CONFIG_DATA *Config,\r
IN UINT8 *Filename,\r
IN UINTN *BlockSize,\r
+ IN UINTN *WindowSize,\r
IN UINT8 *BufferPtr,\r
IN OUT UINT64 *BufferSize,\r
IN BOOLEAN DontUseBuffer\r
{\r
EFI_MTFTP6_PROTOCOL *Mtftp6;\r
EFI_MTFTP6_TOKEN Token;\r
- EFI_MTFTP6_OPTION ReqOpt[1];\r
+ EFI_MTFTP6_OPTION ReqOpt[2];\r
UINT32 OptCnt;\r
- UINT8 OptBuf[128];\r
+ UINT8 BlksizeBuf[10];\r
+ UINT8 WindowsizeBuf[10];\r
EFI_STATUS Status;\r
\r
Status = EFI_DEVICE_ERROR;\r
}\r
\r
if (BlockSize != NULL) {\r
- ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
- ReqOpt[0].ValueStr = OptBuf;\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
+ ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
+ ReqOpt[OptCnt].ValueStr = BlksizeBuf;\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[OptCnt].ValueStr, sizeof (BlksizeBuf));\r
+ OptCnt++;\r
+ }\r
+\r
+ if (WindowSize != NULL) {\r
+ ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX];\r
+ ReqOpt[OptCnt].ValueStr = WindowsizeBuf;\r
+ PxeBcUintnToAscDec (*WindowSize, ReqOpt[OptCnt].ValueStr, sizeof (WindowsizeBuf));\r
OptCnt++;\r
}\r
\r
IN EFI_MTFTP4_CONFIG_DATA *Config,\r
IN UINT8 *Filename,\r
IN UINTN *BlockSize,\r
+ IN UINTN *WindowSize,\r
IN OUT UINT64 *BufferSize\r
)\r
{\r
EFI_MTFTP4_PROTOCOL *Mtftp4;\r
- EFI_MTFTP4_OPTION ReqOpt[2];\r
+ EFI_MTFTP4_OPTION ReqOpt[3];\r
EFI_MTFTP4_PACKET *Packet;\r
EFI_MTFTP4_OPTION *Option;\r
UINT32 PktLen;\r
- UINT8 OptBuf[128];\r
+ UINT8 OptBuf[PXE_MTFTP_OPTBUF_MAXNUM_INDEX];\r
+ UINTN OptBufSize;\r
UINT32 OptCnt;\r
EFI_STATUS Status;\r
\r
Packet = NULL;\r
Option = NULL;\r
PktLen = 0;\r
+ OptBufSize = PXE_MTFTP_OPTBUF_MAXNUM_INDEX;\r
OptCnt = 1;\r
Config->InitialServerPort = PXEBC_BS_DOWNLOAD_PORT;\r
\r
// Build the required options for get info.\r
//\r
ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_TSIZE_INDEX];\r
- PxeBcUintnToAscDec (0, OptBuf, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
+ PxeBcUintnToAscDec (0, OptBuf, OptBufSize);\r
ReqOpt[0].ValueStr = OptBuf;\r
\r
if (BlockSize != NULL) {\r
- ReqOpt[1].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
- ReqOpt[1].ValueStr = (UINT8 *) (ReqOpt[0].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[0].ValueStr) + 1);\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[1].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX - (AsciiStrLen ((CHAR8 *) ReqOpt[0].ValueStr) + 1));\r
+ ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
+ ReqOpt[OptCnt].ValueStr = (UINT8 *) (ReqOpt[OptCnt-1].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1);\r
+ OptBufSize -= (AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1);\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[OptCnt].ValueStr, OptBufSize);\r
+ OptCnt++;\r
+ }\r
+\r
+ if (WindowSize != NULL) {\r
+ ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX];\r
+ ReqOpt[OptCnt].ValueStr = (UINT8 *) (ReqOpt[OptCnt-1].ValueStr + AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1);\r
+ OptBufSize -= (AsciiStrLen ((CHAR8 *) ReqOpt[OptCnt-1].ValueStr) + 1);\r
+ PxeBcUintnToAscDec (*WindowSize, ReqOpt[OptCnt].ValueStr, OptBufSize);\r
OptCnt++;\r
}\r
\r
IN EFI_MTFTP4_CONFIG_DATA *Config,\r
IN UINT8 *Filename,\r
IN UINTN *BlockSize,\r
+ IN UINTN *WindowSize,\r
IN UINT8 *BufferPtr,\r
IN OUT UINT64 *BufferSize,\r
IN BOOLEAN DontUseBuffer\r
{\r
EFI_MTFTP4_PROTOCOL *Mtftp4;\r
EFI_MTFTP4_TOKEN Token;\r
- EFI_MTFTP4_OPTION ReqOpt[1];\r
+ EFI_MTFTP4_OPTION ReqOpt[2];\r
UINT32 OptCnt;\r
- UINT8 OptBuf[128];\r
+ UINT8 BlksizeBuf[10];\r
+ UINT8 WindowsizeBuf[10];\r
EFI_STATUS Status;\r
\r
Status = EFI_DEVICE_ERROR;\r
}\r
\r
if (BlockSize != NULL) {\r
- ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
- ReqOpt[0].ValueStr = OptBuf;\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
+ ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
+ ReqOpt[OptCnt].ValueStr = BlksizeBuf;\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[OptCnt].ValueStr, sizeof (BlksizeBuf));\r
+ OptCnt++;\r
+ }\r
+\r
+ if (WindowSize != NULL) {\r
+ ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX];\r
+ ReqOpt[OptCnt].ValueStr = WindowsizeBuf;\r
+ PxeBcUintnToAscDec (*WindowSize, ReqOpt[OptCnt].ValueStr, sizeof (WindowsizeBuf));\r
OptCnt++;\r
}\r
\r
IN EFI_MTFTP4_CONFIG_DATA *Config,\r
IN UINT8 *Filename,\r
IN UINTN *BlockSize,\r
+ IN UINTN *WindowSize,\r
IN UINT8 *BufferPtr,\r
IN OUT UINT64 *BufferSize,\r
IN BOOLEAN DontUseBuffer\r
{\r
EFI_MTFTP4_PROTOCOL *Mtftp4;\r
EFI_MTFTP4_TOKEN Token;\r
- EFI_MTFTP4_OPTION ReqOpt[1];\r
+ EFI_MTFTP4_OPTION ReqOpt[2];\r
UINT32 OptCnt;\r
- UINT8 OptBuf[128];\r
+ UINT8 BlksizeBuf[10];\r
+ UINT8 WindowsizeBuf[10];\r
EFI_STATUS Status;\r
\r
Status = EFI_DEVICE_ERROR;\r
}\r
\r
if (BlockSize != NULL) {\r
- ReqOpt[0].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
- ReqOpt[0].ValueStr = OptBuf;\r
- PxeBcUintnToAscDec (*BlockSize, ReqOpt[0].ValueStr, PXE_MTFTP_OPTBUF_MAXNUM_INDEX);\r
+ ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_BLKSIZE_INDEX];\r
+ ReqOpt[OptCnt].ValueStr = BlksizeBuf;\r
+ PxeBcUintnToAscDec (*BlockSize, ReqOpt[OptCnt].ValueStr, sizeof (BlksizeBuf));\r
+ OptCnt++;\r
+ }\r
+\r
+ if (WindowSize != NULL) {\r
+ ReqOpt[OptCnt].OptionStr = (UINT8 *) mMtftpOptions[PXE_MTFTP_OPTION_WINDOWSIZE_INDEX];\r
+ ReqOpt[OptCnt].ValueStr = WindowsizeBuf;\r
+ PxeBcUintnToAscDec (*WindowSize, ReqOpt[OptCnt].ValueStr, sizeof (WindowsizeBuf));\r
OptCnt++;\r
}\r
\r
IN VOID *Config,\r
IN UINT8 *Filename,\r
IN UINTN *BlockSize,\r
+ IN UINTN *WindowSize,\r
IN OUT UINT64 *BufferSize\r
)\r
{\r
(EFI_MTFTP6_CONFIG_DATA *) Config,\r
Filename,\r
BlockSize,\r
+ WindowSize,\r
BufferSize\r
);\r
} else {\r
(EFI_MTFTP4_CONFIG_DATA *) Config,\r
Filename,\r
BlockSize,\r
+ WindowSize,\r
BufferSize\r
);\r
}\r
IN VOID *Config,\r
IN UINT8 *Filename,\r
IN UINTN *BlockSize,\r
+ IN UINTN *WindowSize,\r
IN UINT8 *BufferPtr,\r
IN OUT UINT64 *BufferSize,\r
IN BOOLEAN DontUseBuffer\r
(EFI_MTFTP6_CONFIG_DATA *) Config,\r
Filename,\r
BlockSize,\r
+ WindowSize,\r
BufferPtr,\r
BufferSize,\r
DontUseBuffer\r
(EFI_MTFTP4_CONFIG_DATA *) Config,\r
Filename,\r
BlockSize,\r
+ WindowSize,\r
BufferPtr,\r
BufferSize,\r
DontUseBuffer\r
IN VOID *Config,\r
IN UINT8 *Filename,\r
IN UINTN *BlockSize,\r
+ IN UINTN *WindowSize,\r
IN UINT8 *BufferPtr,\r
IN OUT UINT64 *BufferSize,\r
IN BOOLEAN DontUseBuffer\r
(EFI_MTFTP6_CONFIG_DATA *) Config,\r
Filename,\r
BlockSize,\r
+ WindowSize,\r
BufferPtr,\r
BufferSize,\r
DontUseBuffer\r
(EFI_MTFTP4_CONFIG_DATA *) Config,\r
Filename,\r
BlockSize,\r
+ WindowSize,\r
BufferPtr,\r
BufferSize,\r
DontUseBuffer\r