summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg/Universal/Network/MnpDxe/MnpConfig.c
diff options
context:
space:
mode:
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2007-07-30 02:37:10 +0000
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2007-07-30 02:37:10 +0000
commit772db4bb33ae66fa20e39f786b5f80d107d450a5 (patch)
tree206a2d4756e0f7e245e08ca75f3ba10df2e1cf7a /MdeModulePkg/Universal/Network/MnpDxe/MnpConfig.c
parenteca7eaf49be5f23e3c79270621df7097ef585349 (diff)
downloadedk2-772db4bb33ae66fa20e39f786b5f80d107d450a5.tar.gz
edk2-772db4bb33ae66fa20e39f786b5f80d107d450a5.tar.bz2
edk2-772db4bb33ae66fa20e39f786b5f80d107d450a5.zip
Import ArpDxe, Dhcp4Dxe, Ip4Dxe, Mtftp4Dxe, PxeBcDxe and PxeDhcp4Dxe.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3492 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Universal/Network/MnpDxe/MnpConfig.c')
-rw-r--r--MdeModulePkg/Universal/Network/MnpDxe/MnpConfig.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/MdeModulePkg/Universal/Network/MnpDxe/MnpConfig.c b/MdeModulePkg/Universal/Network/MnpDxe/MnpConfig.c
index 5a648f5ffc..83fc3c6ae4 100644
--- a/MdeModulePkg/Universal/Network/MnpDxe/MnpConfig.c
+++ b/MdeModulePkg/Universal/Network/MnpDxe/MnpConfig.c
@@ -139,7 +139,7 @@ MnpAddFreeNbuf (
for (Index = 0; Index < Count; Index++) {
- Nbuf = NetbufAlloc (MnpServiceData->BufferLength);
+ Nbuf = NetbufAlloc (MnpServiceData->BufferLength + MnpServiceData->PaddingSize);
if (Nbuf == NULL) {
MNP_DEBUG_ERROR (("MnpAddFreeNbuf: NetBufAlloc failed.\n"));
@@ -147,6 +147,14 @@ MnpAddFreeNbuf (
break;
}
+ if (MnpServiceData->PaddingSize > 0) {
+ //
+ // Pad padding bytes before the media header
+ //
+ NetbufAllocSpace (Nbuf, MnpServiceData->PaddingSize, NET_BUF_TAIL);
+ NetbufTrim (Nbuf, MnpServiceData->PaddingSize, NET_BUF_HEAD);
+ }
+
NetbufQueAppend (&MnpServiceData->FreeNbufQue, Nbuf);
}
@@ -329,6 +337,12 @@ MnpInitializeServiceData (
MnpServiceData->BufferLength = MnpServiceData->Mtu + SnpMode->MediaHeaderSize + NET_ETHER_FCS_SIZE;
//
+ // Make sure the protocol headers immediately following the media header
+ // 4-byte aligned
+ //
+ MnpServiceData->PaddingSize = (4 - SnpMode->MediaHeaderSize) & 0x3;
+
+ //
// Initialize the FreeNetBufQue and pre-allocate some NET_BUFs.
//
NetbufQueInit (&MnpServiceData->FreeNbufQue);