diff options
author | vanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524> | 2007-07-30 02:37:10 +0000 |
---|---|---|
committer | vanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524> | 2007-07-30 02:37:10 +0000 |
commit | 772db4bb33ae66fa20e39f786b5f80d107d450a5 (patch) | |
tree | 206a2d4756e0f7e245e08ca75f3ba10df2e1cf7a /MdeModulePkg/Universal/Network/MnpDxe | |
parent | eca7eaf49be5f23e3c79270621df7097ef585349 (diff) | |
download | edk2-platforms-772db4bb33ae66fa20e39f786b5f80d107d450a5.tar.xz |
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')
-rw-r--r-- | MdeModulePkg/Universal/Network/MnpDxe/MnpConfig.c | 16 | ||||
-rw-r--r-- | MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.c | 1 | ||||
-rw-r--r-- | MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h | 1 | ||||
-rw-r--r-- | MdeModulePkg/Universal/Network/MnpDxe/MnpIo.c | 5 |
4 files changed, 20 insertions, 3 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);
diff --git a/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.c b/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.c index 07be21dced..932b21c5ef 100644 --- a/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.c +++ b/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.c @@ -521,7 +521,6 @@ MnpServiceBindingDestroyChild ( return Status;
}
-//@MT: EFI_DRIVER_ENTRY_POINT (MnpDriverEntryPoint)
EFI_STATUS
EFIAPI
diff --git a/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h b/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h index 48ad0960cd..a387eb05d0 100644 --- a/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h +++ b/MdeModulePkg/Universal/Network/MnpDxe/MnpDriver.h @@ -82,6 +82,7 @@ typedef struct _MNP_SERVICE_DATA { // store a packet. // UINT32 BufferLength; + UINT32 PaddingSize; NET_BUF *RxNbufCache; UINT8 *TxBuf; } MNP_SERVICE_DATA; diff --git a/MdeModulePkg/Universal/Network/MnpDxe/MnpIo.c b/MdeModulePkg/Universal/Network/MnpDxe/MnpIo.c index 91b8d4e0b8..aafc8433a5 100644 --- a/MdeModulePkg/Universal/Network/MnpDxe/MnpIo.c +++ b/MdeModulePkg/Universal/Network/MnpDxe/MnpIo.c @@ -974,7 +974,10 @@ MnpReceivePacket ( //
// No receiver for this packet.
//
- NetbufAllocSpace (Nbuf, Trimmed, NET_BUF_TAIL);
+ if (Trimmed > 0) {
+ NetbufAllocSpace (Nbuf, Trimmed, NET_BUF_TAIL);
+ }
+
goto EXIT;
}
//
|