PLength = GET_RXSTATUS_PACKET_LENGTH(RxFifoStatus);\r
LanDriver->Stats.RxTotalBytes += (PLength - 4);\r
\r
- // Check buffer size\r
- if (*BuffSize < PLength) {\r
- *BuffSize = PLength;\r
- return EFI_BUFFER_TOO_SMALL;\r
- }\r
-\r
// If padding is applied, read more DWORDs\r
if (PLength % 4) {\r
Padding = 4 - (PLength % 4);\r
Padding = 0;\r
}\r
\r
+ // Check buffer size\r
+ if (*BuffSize < (PLength + Padding)) {\r
+ *BuffSize = PLength + Padding;\r
+ return EFI_BUFFER_TOO_SMALL;\r
+ }\r
+\r
// Set the amount of data to be transfered out of FIFO for THIS packet\r
// This can be used to trigger an interrupt, and status can be checked\r
RxCfgValue = MmioRead32 (LAN9118_RX_CFG);\r