summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2007-08-30 06:58:37 +0000
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2007-08-30 06:58:37 +0000
commitb61439a709bb961f2f9dff1d1a4112e30a063f51 (patch)
tree67a555871171cf54ad9a662957f8cd49c7035b02
parentdc59293a36f538eb6c32517c409d5992d8c2d763 (diff)
downloadedk2-platforms-b61439a709bb961f2f9dff1d1a4112e30a063f51.tar.xz
1. Fixed one bug in Undi driver.
2. Add default branch to meet CYGWINGCC build in Tcp4Dispatcher.c. 3. Sync the latest network stack library. 4. Fixed one bug in Mtftp4Support.c, for AsciiStrCpy() return the pointer to head of string, not the tail of string. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3741 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--MdeModulePkg/Bus/Pci/UndiRuntimeDxe/E100b.c94
-rw-r--r--MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c13
-rw-r--r--MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf1
-rw-r--r--MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c27
-rw-r--r--MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf1
-rw-r--r--MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Support.c9
-rw-r--r--MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dispatcher.c2
7 files changed, 83 insertions, 64 deletions
diff --git a/MdeModulePkg/Bus/Pci/UndiRuntimeDxe/E100b.c b/MdeModulePkg/Bus/Pci/UndiRuntimeDxe/E100b.c
index 4ca431c520..2bd7813b18 100644
--- a/MdeModulePkg/Bus/Pci/UndiRuntimeDxe/E100b.c
+++ b/MdeModulePkg/Bus/Pci/UndiRuntimeDxe/E100b.c
@@ -1,17 +1,17 @@
/*++
-Copyright (c) 2006, Intel Corporation
-All rights reserved. This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution. The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
Module Name:
-
-
+
+
E100B.C
Abstract:
@@ -33,7 +33,7 @@ static UINT8 basic_config_cmd[22] = {
0x60, 0,
(UINT8)0xf2, 0x48,
0, 0x40,
- (UINT8)0xf2, (UINT8)0x80, // 0x40=Force full-duplex
+ (UINT8)0xf2, (UINT8)0x80, // 0x40=Force full-duplex
0x3f, 0x05,
};
@@ -61,9 +61,9 @@ Routine Description:
This function calls the MemIo callback to read a byte from the device's
address space
Since UNDI3.0 uses the TmpMemIo function (instead of the callback routine)
- which also takes the UniqueId parameter (as in UNDI3.1 spec) we don't have
+ which also takes the UniqueId parameter (as in UNDI3.1 spec) we don't have
to make undi3.0 a special case
-
+
Arguments:
Port - Which port to read from.
@@ -76,9 +76,9 @@ Returns:
UINT8 Results;
(*AdapterInfo->Mem_Io) (
- AdapterInfo->Unique_ID,
- PXE_MEM_READ,
- 1,
+ AdapterInfo->Unique_ID,
+ PXE_MEM_READ,
+ 1,
(UINT64)Port,
(UINT64) (UINTN) &Results
);
@@ -96,7 +96,7 @@ Routine Description:
This function calls the MemIo callback to read a word from the device's
address space
Since UNDI3.0 uses the TmpMemIo function (instead of the callback routine)
- which also takes the UniqueId parameter (as in UNDI3.1 spec) we don't have
+ which also takes the UniqueId parameter (as in UNDI3.1 spec) we don't have
to make undi3.0 a special case
Arguments:
@@ -131,7 +131,7 @@ Routine Description:
This function calls the MemIo callback to read a dword from the device's
address space
Since UNDI3.0 uses the TmpMemIo function (instead of the callback routine)
- which also takes the UniqueId parameter (as in UNDI3.1 spec) we don't have
+ which also takes the UniqueId parameter (as in UNDI3.1 spec) we don't have
to make undi3.0 a special case
Arguments:
@@ -167,7 +167,7 @@ Routine Description:
This function calls the MemIo callback to write a byte from the device's
address space
Since UNDI3.0 uses the TmpMemIo function (instead of the callback routine)
- which also takes the UniqueId parameter (as in UNDI3.1 spec) we don't have
+ which also takes the UniqueId parameter (as in UNDI3.1 spec) we don't have
to make undi3.0 a special case
Arguments:
@@ -205,7 +205,7 @@ Routine Description:
This function calls the MemIo callback to write a word from the device's
address space
Since UNDI3.0 uses the TmpMemIo function (instead of the callback routine)
- which also takes the UniqueId parameter (as in UNDI3.1 spec) we don't have
+ which also takes the UniqueId parameter (as in UNDI3.1 spec) we don't have
to make undi3.0 a special case
Arguments:
@@ -243,7 +243,7 @@ Routine Description:
This function calls the MemIo callback to write a dword from the device's
address space
Since UNDI3.0 uses the TmpMemIo function (instead of the callback routine)
- which also takes the UniqueId parameter (as in UNDI3.1 spec) we don't have
+ which also takes the UniqueId parameter (as in UNDI3.1 spec) we don't have
to make undi3.0 a special case
Arguments:
@@ -854,7 +854,7 @@ Returns:
AdapterInfo->rx_phy_addr = AdapterInfo->Mapped_MemoryPtr;
AdapterInfo->tx_phy_addr = AdapterInfo->Mapped_MemoryPtr + rx_size;
AdapterInfo->stat_phy_addr = AdapterInfo->tx_phy_addr + tx_size;
-
+
//
// auto detect.
//
@@ -1559,7 +1559,7 @@ Returns:
cur_ptr[Index].PhysTCBAddress =
(UINT32) AdapterInfo->tx_phy_addr + (Index * sizeof (TxCB));
- cur_ptr[Index].PhysArrayAddr = (UINT32)(cur_ptr[Index].PhysTCBAddress + array_off);
+ cur_ptr[Index].PhysArrayAddr = (UINT32)(cur_ptr[Index].PhysTCBAddress + array_off);
cur_ptr[Index].PhysTBDArrayAddres = (UINT32)(cur_ptr[Index].PhysTCBAddress + array_off);
cur_ptr->free_data_ptr = (UINT64) 0;
@@ -2032,7 +2032,7 @@ Returns:
UINTN wait;
UINT8 tmp;
- if ((AdapterInfo->DeviceID == D102_DEVICE_ID) ||
+ if ((AdapterInfo->DeviceID == D102_DEVICE_ID) ||
(AdapterInfo->RevID >= D102_REVID)) {
wait = 500;
@@ -2074,12 +2074,12 @@ Arguments:
Returns:
None
-
+
--*/
{
UINT8 tmp;
- if ((AdapterInfo->DeviceID == D102_DEVICE_ID) ||
+ if ((AdapterInfo->DeviceID == D102_DEVICE_ID) ||
(AdapterInfo->RevID >= D102_REVID)) {
tmp = InByte (AdapterInfo, AdapterInfo->ioaddr + SCBGenCtrl2);
@@ -2396,7 +2396,7 @@ Returns:
db.Data[0x08] = AdapterInfo->statistics->rx_crc_errs +
AdapterInfo->statistics->rx_align_errs;
- db.Data[0x04] = db.Data[0x02] +
+ db.Data[0x04] = db.Data[0x02] +
db.Data[0x08] +
AdapterInfo->statistics->rx_resource_errs +
AdapterInfo->statistics->rx_overrun_errs;
@@ -2557,9 +2557,9 @@ MdiWrite (
Routine Description:
This routine will write a value to the specified MII register
- of an external MDI compliant device (e.g. PHY 100). The command will
+ of an external MDI compliant device (e.g. PHY 100). The command will
execute in polled mode.
-
+
Arguments:
AdapterInfo - pointer to the structure that contains the NIC's context.
RegAddress - The MII register that we are writing to
@@ -2567,13 +2567,13 @@ Arguments:
DataValue - The value that we are writing to the MII register.
Returns:
- nothing
+ nothing
--*/
{
UINT32 WriteCommand;
WriteCommand = ((UINT32) DataValue) |
- ((UINT32)(RegAddress << 16)) |
+ ((UINT32)(RegAddress << 16)) |
((UINT32)(PhyAddress << 21)) |
((UINT32)(MDI_WRITE << 26));
@@ -2589,7 +2589,7 @@ Returns:
//
// poll for the mdi write to complete
- while ((InLong (AdapterInfo, AdapterInfo->ioaddr + SCBCtrlMDI) &
+ while ((InLong (AdapterInfo, AdapterInfo->ioaddr + SCBCtrlMDI) &
MDI_PHY_READY) == 0){
DelayIt (AdapterInfo, 20);
}
@@ -2608,7 +2608,7 @@ Routine Description:
This routine will read a value from the specified MII register
of an external MDI compliant device (e.g. PHY 100), and return
it to the calling routine. The command will execute in polled mode.
-
+
Arguments:
AdapterInfo - pointer to the structure that contains the NIC's context.
RegAddress - The MII register that we are reading from
@@ -2616,7 +2616,7 @@ Arguments:
DataValue - pointer to the value that we read from the MII register.
Returns:
-
+
--*/
{
UINT32 ReadCommand;
@@ -2655,19 +2655,19 @@ PhyReset (
Routine Description:
This routine will reset the PHY that the adapter is currently
- configured to use.
-
+ configured to use.
+
Arguments:
AdapterInfo - pointer to the structure that contains the NIC's context.
Returns:
-
+
--*/
{
UINT16 MdiControlReg;
- MdiControlReg = (MDI_CR_AUTO_SELECT |
- MDI_CR_RESTART_AUTO_NEG |
+ MdiControlReg = (MDI_CR_AUTO_SELECT |
+ MDI_CR_RESTART_AUTO_NEG |
MDI_CR_RESET);
//
@@ -2721,14 +2721,14 @@ Routine Description:
this range.
6. Driver ignores FORCEFDX and SPEED overrides if a 503 interface
is detected.
-
+
Arguments:
AdapterInfo - pointer to the structure that contains the NIC's context.
Returns:
TRUE - If a Phy was detected, and configured correctly.
- FALSE - If a valid phy could not be detected and configured.
-
+ FALSE - If a valid phy could not be detected and configured.
+
--*/
{
UINT16 *eedata;
@@ -2788,7 +2788,7 @@ Returns:
&MdiStatusReg
);
- if (!((MdiControlReg == 0xffff) ||
+ if (!((MdiControlReg == 0xffff) ||
((MdiStatusReg == 0) && (MdiControlReg == 0)))) {
//
@@ -3030,9 +3030,9 @@ Arguments:
Returns:
TRUE - If the phy could be configured correctly
- FALSE - If the phy couldn't be configured correctly, because an
+ FALSE - If the phy couldn't be configured correctly, because an
unsupported over-ride option was used
-
+
--*/
{
UINT16 MdiControlReg;
@@ -3258,7 +3258,7 @@ Returns:
// value accordingly
//
AdapterInfo->LinkSpeed = AdapterInfo->LinkSpeedReq;
- AdapterInfo->Duplex = (UINT8) ((AdapterInfo->DuplexReq & PXE_FORCE_FULL_DUPLEX) ?
+ AdapterInfo->Duplex = (UINT8) ((AdapterInfo->DuplexReq & PXE_FORCE_FULL_DUPLEX) ?
FULL_DUPLEX : HALF_DUPLEX);
//
@@ -3363,7 +3363,7 @@ Returns:
// advertised ablilities, and then assuming that the highest common
// denominator was chosed by NWAY.
//
- if ((MdiLinkPartnerAdReg & NWAY_LP_ABILITY) &&
+ if ((MdiLinkPartnerAdReg & NWAY_LP_ABILITY) &&
(MdiStatusReg & MDI_SR_AUTO_NEG_COMPLETE)) {
//
diff --git a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c
index 98df75df11..cc869717dd 100644
--- a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c
+++ b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c
@@ -29,6 +29,7 @@ Abstract:
#include <Library/DebugLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/MemoryAllocationLib.h>
+#include <Library/BaseMemoryLib.h>
#define NET_PROTO_HDR(Buf, Type) ((Type *) ((Buf)->BlockOp[0].Head))
@@ -416,13 +417,13 @@ IpIoCreateSndEntry (
//
// Set the fields of OverrideData
//
- *OverrideData = * (EFI_IP4_OVERRIDE_DATA *) Override;
+ NetCopyMem (OverrideData, Override, sizeof (*OverrideData));
}
//
// Set the fields of TxData
//
- EFI_IP4 (TxData->DestinationAddress) = Dest;
+ NetCopyMem (&TxData->DestinationAddress, &Dest, sizeof (EFI_IPv4_ADDRESS));
TxData->OverrideData = OverrideData;
TxData->OptionsLength = 0;
TxData->OptionsBuffer = NULL;
@@ -761,7 +762,6 @@ IpIoOpen (
{
EFI_STATUS Status;
EFI_IP4_PROTOCOL *Ip;
- EFI_IPv4_ADDRESS ZeroIp;
if (IpIo->IsConfigured) {
return EFI_ACCESS_DENIED;
@@ -782,8 +782,7 @@ IpIoOpen (
// (0.0.0.0, 0.0.0.0, 0.0.0.0). Delete this statement if Ip modified
// its code
//
- EFI_IP4 (ZeroIp) = 0;
- Status = Ip->Routes (Ip, TRUE, &ZeroIp, &ZeroIp, &ZeroIp);
+ Status = Ip->Routes (Ip, TRUE, &mZeroIp4Addr, &mZeroIp4Addr, &mZeroIp4Addr);
if (EFI_ERROR (Status) && (EFI_NOT_FOUND != Status)) {
return Status;
@@ -1147,8 +1146,8 @@ IpIoConfigIp (
Ip4ConfigData->SubnetMask = Ip4ModeData.ConfigData.SubnetMask;
}
- IpInfo->Addr = EFI_IP4 (Ip4ConfigData->StationAddress);
- IpInfo->SubnetMask = EFI_IP4 (Ip4ConfigData->SubnetMask);
+ NetCopyMem (&IpInfo->Addr, &Ip4ConfigData->StationAddress, sizeof (IP4_ADDR));
+ NetCopyMem (&IpInfo->SubnetMask, &Ip4ConfigData->SubnetMask, sizeof (IP4_ADDR));
Status = Ip->Receive (Ip, &IpInfo->DummyRcvToken);
if (EFI_ERROR (Status)) {
diff --git a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
index c797952f65..c844a84100 100644
--- a/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
+++ b/MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
@@ -46,6 +46,7 @@
DebugLib
UefiBootServicesTableLib
MemoryAllocationLib
+ BaseMemoryLib
[Protocols]
gEfiIp4ProtocolGuid # PROTOCOL ALWAYS_CONSUMED
diff --git a/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c b/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c
index b66348c284..d56456afb2 100644
--- a/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c
+++ b/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c
@@ -30,6 +30,7 @@ Abstract:
#include <Library/DebugLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/MemoryAllocationLib.h>
+#include <library/BaseMemoryLib.h>
STATIC
VOID
@@ -77,6 +78,7 @@ UdpIoWrapTx (
EFI_UDP4_TRANSMIT_DATA *UdpTxData;
EFI_STATUS Status;
UINT32 Count;
+ IP4_ADDR Ip;
Token = NetAllocatePool (sizeof (UDP_TX_TOKEN) +
sizeof (EFI_UDP4_FRAGMENT_DATA) * (Packet->BlockOpNum - 1));
@@ -116,15 +118,21 @@ UdpIoWrapTx (
UdpTxData->GatewayAddress = NULL;
if (EndPoint != NULL) {
- EFI_IP4 (Token->UdpSession.SourceAddress) = HTONL (EndPoint->LocalAddr);
- EFI_IP4 (Token->UdpSession.DestinationAddress) = HTONL (EndPoint->RemoteAddr);
- Token->UdpSession.SourcePort = EndPoint->LocalPort;
- Token->UdpSession.DestinationPort = EndPoint->RemotePort;
- UdpTxData->UdpSessionData = &Token->UdpSession;
+ Ip = HTONL (EndPoint->LocalAddr);
+ NetCopyMem (&Token->UdpSession.SourceAddress, &Ip, sizeof (EFI_IPv4_ADDRESS));
+
+ Ip = HTONL (EndPoint->RemoteAddr);
+ NetCopyMem (&Token->UdpSession.DestinationAddress, &Ip, sizeof (EFI_IPv4_ADDRESS));
+
+ Token->UdpSession.SourcePort = EndPoint->LocalPort;
+ Token->UdpSession.DestinationPort = EndPoint->RemotePort;
+ UdpTxData->UdpSessionData = &Token->UdpSession;
}
if (Gateway != 0) {
- EFI_IP4 (Token->Gateway) = HTONL (Gateway);
+ Ip = HTONL (Gateway);
+ NetCopyMem (&Token->Gateway, &Ip, sizeof (EFI_IPv4_ADDRESS));
+
UdpTxData->GatewayAddress = &Token->Gateway;
}
@@ -670,11 +678,14 @@ UdpIoOnDgramRcvd (
}
UdpSession = &UdpRxData->UdpSession;
- Points.LocalAddr = EFI_NTOHL (UdpSession->DestinationAddress);
Points.LocalPort = UdpSession->DestinationPort;
- Points.RemoteAddr = EFI_NTOHL (UdpSession->SourceAddress);
Points.RemotePort = UdpSession->SourcePort;
+ NetCopyMem (&Points.LocalAddr, &UdpSession->DestinationAddress, sizeof (IP4_ADDR));
+ NetCopyMem (&Points.RemoteAddr, &UdpSession->SourceAddress, sizeof (IP4_ADDR));
+ Points.LocalAddr = NTOHL (Points.LocalAddr);
+ Points.RemoteAddr = NTOHL (Points.RemoteAddr);
+
Token->CallBack (Netbuf, &Points, EFI_SUCCESS, Token->Context);
ON_EXIT:
diff --git a/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf b/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf
index 32ccb96c32..7a20e80d3c 100644
--- a/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf
+++ b/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf
@@ -46,6 +46,7 @@
DebugLib
UefiBootServicesTableLib
MemoryAllocationLib
+ BaseMemoryLib
[Protocols]
gEfiUdp4ServiceBindingProtocolGuid # PROTOCOL ALWAYS_CONSUMED
diff --git a/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Support.c b/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Support.c
index 903494ecb7..28082db042 100644
--- a/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Support.c
+++ b/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Support.c
@@ -305,11 +305,16 @@ Mtftp4SendRequest (
Packet->OpCode = HTONS (Instance->Operation);
Cur = Packet->Rrq.Filename;
Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Token->Filename);
+ Cur += AsciiStrLen ((CHAR8 *) Token->Filename);
Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Mode);
+ Cur += AsciiStrLen ((CHAR8 *) Mode);
for (Index = 0; Index < Token->OptionCount; ++Index) {
- Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Options[Index].OptionStr);
- Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Options[Index].ValueStr);
+ Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Options[Index].OptionStr);
+ Cur += AsciiStrLen ((CHAR8 *) Options[Index].OptionStr);
+
+ Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Options[Index].ValueStr);
+ Cur += AsciiStrLen ((CHAR8 *) (CHAR8 *) Options[Index].ValueStr);
}
return Mtftp4SendPacket (Instance, Nbuf);
diff --git a/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dispatcher.c b/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dispatcher.c
index 0b845ee9ad..a6a6913333 100644
--- a/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dispatcher.c
+++ b/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dispatcher.c
@@ -707,6 +707,8 @@ Tcp4Dispatcher (
return Tcp4Route (Tcb, (TCP4_ROUTE_INFO *) Data);
+ default:
+ return EFI_UNSUPPORTED;
}
return EFI_SUCCESS;