return Status;\r
}\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
Private->AddressIsOk = FALSE;\r
\r
ZeroMem (Mode, sizeof (EFI_PXE_BASE_CODE_MODE));\r
return EFI_NOT_STARTED;\r
}\r
\r
- Private->FileSize = 0;\r
-\r
if (NewDhcpDiscoverValid != NULL) {\r
Mode->DhcpDiscoverValid = *NewDhcpDiscoverValid;\r
}\r
UINT16 Type;\r
UINT16 Layer;\r
BOOLEAN UseBis;\r
- UINTN BlockSize;\r
PXEBC_CACHED_DHCP4_PACKET *Packet;\r
UINT16 Value;\r
\r
}\r
\r
*BufferSize = 0;\r
- BlockSize = 0x8000;\r
\r
//\r
// Get bootfile name and (m)tftp server ip addresss\r
Buffer,\r
FALSE,\r
BufferSize,\r
- &BlockSize,\r
+ &Private->BlockSize,\r
&Private->ServerIp,\r
(UINT8 *) Private->BootFileName,\r
NULL,\r
PXEBC_PRIVATE_DATA *Private;\r
EFI_PXE_BASE_CODE_PROTOCOL *PxeBc;\r
BOOLEAN NewMakeCallback;\r
- UINTN BlockSize;\r
EFI_STATUS Status;\r
UINT64 TmpBufSize;\r
+ BOOLEAN MediaPresent;\r
\r
Private = PXEBC_PRIVATE_DATA_FROM_LOADFILE (This);\r
PxeBc = &Private->PxeBc;\r
NewMakeCallback = FALSE;\r
- BlockSize = 0x8000;\r
Status = EFI_DEVICE_ERROR;\r
\r
if (This == NULL || BufferSize == NULL) {\r
return EFI_UNSUPPORTED;\r
}\r
\r
+ //\r
+ // Check media status before PXE start\r
+ //\r
+ MediaPresent = TRUE;\r
+ NetLibDetectMedia (Private->Controller, &MediaPresent);\r
+ if (!MediaPresent) {\r
+ return EFI_NO_MEDIA;\r
+ }\r
+\r
Status = PxeBc->Start (PxeBc, FALSE);\r
if (EFI_ERROR (Status) && (Status != EFI_ALREADY_STARTED)) {\r
return Status;\r
Buffer,\r
FALSE,\r
&TmpBufSize,\r
- &BlockSize,\r
+ &Private->BlockSize,\r
&Private->ServerIp,\r
(UINT8 *) Private->BootFileName,\r
NULL,\r
Buffer,\r
FALSE,\r
&TmpBufSize,\r
- &BlockSize,\r
+ &Private->BlockSize,\r
&Private->ServerIp,\r
(UINT8 *) Private->BootFileName,\r
NULL,\r
if (Buffer != NULL) {\r
AsciiPrint ("PXE-E05: Download buffer is smaller than requested file.\n");\r
} else {\r
- PxeBc->Stop (PxeBc);\r
+ //\r
+ // The functionality of PXE Base Code protocol will not be stopped.\r
+ //\r
return Status;\r
}\r
\r