summaryrefslogtreecommitdiffstats
path: root/NetworkPkg/Ip4Dxe/Ip4If.c
diff options
context:
space:
mode:
Diffstat (limited to 'NetworkPkg/Ip4Dxe/Ip4If.c')
-rw-r--r--NetworkPkg/Ip4Dxe/Ip4If.c341
1 files changed, 163 insertions, 178 deletions
diff --git a/NetworkPkg/Ip4Dxe/Ip4If.c b/NetworkPkg/Ip4Dxe/Ip4If.c
index edb0b197ca..b312017d22 100644
--- a/NetworkPkg/Ip4Dxe/Ip4If.c
+++ b/NetworkPkg/Ip4Dxe/Ip4If.c
@@ -24,7 +24,7 @@ EFI_MAC_ADDRESS mZeroMacAddress;
VOID
EFIAPI
Ip4OnFrameSentDpc (
- IN VOID *Context
+ IN VOID *Context
);
/**
@@ -37,8 +37,8 @@ Ip4OnFrameSentDpc (
VOID
EFIAPI
Ip4OnFrameSent (
- IN EFI_EVENT Event,
- IN VOID *Context
+ IN EFI_EVENT Event,
+ IN VOID *Context
);
/**
@@ -53,7 +53,7 @@ Ip4OnFrameSent (
VOID
EFIAPI
Ip4OnArpResolvedDpc (
- IN VOID *Context
+ IN VOID *Context
);
/**
@@ -67,8 +67,8 @@ Ip4OnArpResolvedDpc (
VOID
EFIAPI
Ip4OnArpResolved (
- IN EFI_EVENT Event,
- IN VOID *Context
+ IN EFI_EVENT Event,
+ IN VOID *Context
);
/**
@@ -85,7 +85,7 @@ Ip4OnArpResolved (
VOID
EFIAPI
Ip4OnFrameReceivedDpc (
- IN VOID *Context
+ IN VOID *Context
);
/**
@@ -98,8 +98,8 @@ Ip4OnFrameReceivedDpc (
VOID
EFIAPI
Ip4OnFrameReceived (
- IN EFI_EVENT Event,
- IN VOID *Context
+ IN EFI_EVENT Event,
+ IN VOID *Context
);
/**
@@ -115,13 +115,12 @@ Ip4OnFrameReceived (
**/
VOID
Ip4CancelFrameArp (
- IN IP4_ARP_QUE *ArpQue,
- IN EFI_STATUS IoStatus,
- IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL,
- IN VOID *Context
+ IN IP4_ARP_QUE *ArpQue,
+ IN EFI_STATUS IoStatus,
+ IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL,
+ IN VOID *Context
);
-
/**
Wrap a transmit request into a newly allocated IP4_LINK_TX_TOKEN.
@@ -140,12 +139,12 @@ Ip4CancelFrameArp (
**/
IP4_LINK_TX_TOKEN *
Ip4WrapLinkTxToken (
- IN IP4_INTERFACE *Interface,
- IN IP4_PROTOCOL *IpInstance OPTIONAL,
- IN NET_BUF *Packet,
- IN IP4_FRAME_CALLBACK CallBack,
- IN VOID *Context,
- IN IP4_SERVICE *IpSb
+ IN IP4_INTERFACE *Interface,
+ IN IP4_PROTOCOL *IpInstance OPTIONAL,
+ IN NET_BUF *Packet,
+ IN IP4_FRAME_CALLBACK CallBack,
+ IN VOID *Context,
+ IN IP4_SERVICE *IpSb
)
{
EFI_MANAGED_NETWORK_COMPLETION_TOKEN *MnpToken;
@@ -154,8 +153,10 @@ Ip4WrapLinkTxToken (
EFI_STATUS Status;
UINT32 Count;
- Token = AllocatePool (sizeof (IP4_LINK_TX_TOKEN) + \
- (Packet->BlockOpNum - 1) * sizeof (EFI_MANAGED_NETWORK_FRAGMENT_DATA));
+ Token = AllocatePool (
+ sizeof (IP4_LINK_TX_TOKEN) + \
+ (Packet->BlockOpNum - 1) * sizeof (EFI_MANAGED_NETWORK_FRAGMENT_DATA)
+ );
if (Token == NULL) {
return NULL;
@@ -173,8 +174,8 @@ Ip4WrapLinkTxToken (
CopyMem (&Token->DstMac, &mZeroMacAddress, sizeof (Token->DstMac));
CopyMem (&Token->SrcMac, &Interface->Mac, sizeof (Token->SrcMac));
- MnpToken = &(Token->MnpToken);
- MnpToken->Status = EFI_NOT_READY;
+ MnpToken = &(Token->MnpToken);
+ MnpToken->Status = EFI_NOT_READY;
Status = gBS->CreateEvent (
EVT_NOTIFY_SIGNAL,
@@ -189,8 +190,8 @@ Ip4WrapLinkTxToken (
return NULL;
}
- MnpTxData = &Token->MnpTxData;
- MnpToken->Packet.TxData = MnpTxData;
+ MnpTxData = &Token->MnpTxData;
+ MnpToken->Packet.TxData = MnpTxData;
MnpTxData->DestinationAddress = &Token->DstMac;
MnpTxData->SourceAddress = &Token->SrcMac;
@@ -198,15 +199,14 @@ Ip4WrapLinkTxToken (
MnpTxData->DataLength = Packet->TotalSize;
MnpTxData->HeaderLength = 0;
- Count = Packet->BlockOpNum;
+ Count = Packet->BlockOpNum;
- NetbufBuildExt (Packet, (NET_FRAGMENT *) MnpTxData->FragmentTable, &Count);
- MnpTxData->FragmentCount = (UINT16)Count;
+ NetbufBuildExt (Packet, (NET_FRAGMENT *)MnpTxData->FragmentTable, &Count);
+ MnpTxData->FragmentCount = (UINT16)Count;
return Token;
}
-
/**
Free the link layer transmit token. It will close the event
then free the memory used.
@@ -216,7 +216,7 @@ Ip4WrapLinkTxToken (
**/
VOID
Ip4FreeLinkTxToken (
- IN IP4_LINK_TX_TOKEN *Token
+ IN IP4_LINK_TX_TOKEN *Token
)
{
NET_CHECK_SIGNATURE (Token, IP4_FRAME_TX_SIGNATURE);
@@ -225,7 +225,6 @@ Ip4FreeLinkTxToken (
FreePool (Token);
}
-
/**
Create an IP_ARP_QUE structure to request ARP service.
@@ -238,12 +237,12 @@ Ip4FreeLinkTxToken (
**/
IP4_ARP_QUE *
Ip4CreateArpQue (
- IN IP4_INTERFACE *Interface,
- IN IP4_ADDR DestIp
+ IN IP4_INTERFACE *Interface,
+ IN IP4_ADDR DestIp
)
{
- IP4_ARP_QUE *ArpQue;
- EFI_STATUS Status;
+ IP4_ARP_QUE *ArpQue;
+ EFI_STATUS Status;
ArpQue = AllocatePool (sizeof (IP4_ARP_QUE));
@@ -270,13 +269,12 @@ Ip4CreateArpQue (
return NULL;
}
- ArpQue->Ip = DestIp;
+ ArpQue->Ip = DestIp;
CopyMem (&ArpQue->Mac, &mZeroMacAddress, sizeof (ArpQue->Mac));
return ArpQue;
}
-
/**
Remove all the transmit requests queued on the ARP queue, then free it.
@@ -287,8 +285,8 @@ Ip4CreateArpQue (
**/
VOID
Ip4FreeArpQue (
- IN IP4_ARP_QUE *ArpQue,
- IN EFI_STATUS IoStatus
+ IN IP4_ARP_QUE *ArpQue,
+ IN EFI_STATUS IoStatus
)
{
NET_CHECK_SIGNATURE (ArpQue, IP4_FRAME_ARP_SIGNATURE);
@@ -302,7 +300,6 @@ Ip4FreeArpQue (
FreePool (ArpQue);
}
-
/**
Create a link layer receive token to wrap the receive request
@@ -317,10 +314,10 @@ Ip4FreeArpQue (
**/
IP4_LINK_RX_TOKEN *
Ip4CreateLinkRxToken (
- IN IP4_INTERFACE *Interface,
- IN IP4_PROTOCOL *IpInstance,
- IN IP4_FRAME_CALLBACK CallBack,
- IN VOID *Context
+ IN IP4_INTERFACE *Interface,
+ IN IP4_PROTOCOL *IpInstance,
+ IN IP4_FRAME_CALLBACK CallBack,
+ IN VOID *Context
)
{
EFI_MANAGED_NETWORK_COMPLETION_TOKEN *MnpToken;
@@ -338,8 +335,8 @@ Ip4CreateLinkRxToken (
Token->CallBack = CallBack;
Token->Context = Context;
- MnpToken = &Token->MnpToken;
- MnpToken->Status = EFI_NOT_READY;
+ MnpToken = &Token->MnpToken;
+ MnpToken->Status = EFI_NOT_READY;
Status = gBS->CreateEvent (
EVT_NOTIFY_SIGNAL,
@@ -358,7 +355,6 @@ Ip4CreateLinkRxToken (
return Token;
}
-
/**
Free the link layer request token. It will close the event
then free the memory used.
@@ -368,17 +364,15 @@ Ip4CreateLinkRxToken (
**/
VOID
Ip4FreeFrameRxToken (
- IN IP4_LINK_RX_TOKEN *Token
+ IN IP4_LINK_RX_TOKEN *Token
)
{
-
NET_CHECK_SIGNATURE (Token, IP4_FRAME_RX_SIGNATURE);
gBS->CloseEvent (Token->MnpToken.Event);
FreePool (Token);
}
-
/**
Remove all the frames on the ARP queue that pass the FrameToCancel,
that is, either FrameToCancel is NULL or it returns true for the frame.
@@ -392,15 +386,15 @@ Ip4FreeFrameRxToken (
**/
VOID
Ip4CancelFrameArp (
- IN IP4_ARP_QUE *ArpQue,
- IN EFI_STATUS IoStatus,
- IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL,
- IN VOID *Context
+ IN IP4_ARP_QUE *ArpQue,
+ IN EFI_STATUS IoStatus,
+ IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL,
+ IN VOID *Context
)
{
- LIST_ENTRY *Entry;
- LIST_ENTRY *Next;
- IP4_LINK_TX_TOKEN *Token;
+ LIST_ENTRY *Entry;
+ LIST_ENTRY *Next;
+ IP4_LINK_TX_TOKEN *Token;
NET_LIST_FOR_EACH_SAFE (Entry, Next, &ArpQue->Frames) {
Token = NET_LIST_USER_STRUCT (Entry, IP4_LINK_TX_TOKEN, Link);
@@ -414,7 +408,6 @@ Ip4CancelFrameArp (
}
}
-
/**
Remove all the frames on the interface that pass the FrameToCancel,
either queued on ARP queues or that have already been delivered to
@@ -430,16 +423,16 @@ Ip4CancelFrameArp (
**/
VOID
Ip4CancelFrames (
- IN IP4_INTERFACE *Interface,
- IN EFI_STATUS IoStatus,
- IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL,
- IN VOID *Context
+ IN IP4_INTERFACE *Interface,
+ IN EFI_STATUS IoStatus,
+ IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL,
+ IN VOID *Context
)
{
- LIST_ENTRY *Entry;
- LIST_ENTRY *Next;
- IP4_ARP_QUE *ArpQue;
- IP4_LINK_TX_TOKEN *Token;
+ LIST_ENTRY *Entry;
+ LIST_ENTRY *Next;
+ IP4_ARP_QUE *ArpQue;
+ IP4_LINK_TX_TOKEN *Token;
//
// Cancel all the pending frames on ARP requests
@@ -467,7 +460,6 @@ Ip4CancelFrames (
}
}
-
/**
Create an IP4_INTERFACE. Delay the creation of ARP instance until
the interface is configured.
@@ -488,8 +480,8 @@ Ip4CreateInterface (
IN EFI_HANDLE ImageHandle
)
{
- IP4_INTERFACE *Interface;
- EFI_SIMPLE_NETWORK_MODE SnpMode;
+ IP4_INTERFACE *Interface;
+ EFI_SIMPLE_NETWORK_MODE SnpMode;
if (Mnp == NULL) {
return NULL;
@@ -503,7 +495,7 @@ Ip4CreateInterface (
Interface->Signature = IP4_INTERFACE_SIGNATURE;
InitializeListHead (&Interface->Link);
- Interface->RefCnt = 1;
+ Interface->RefCnt = 1;
Interface->Ip = IP4_ALLZERO_ADDRESS;
Interface->SubnetMask = IP4_ALLZERO_ADDRESS;
@@ -530,7 +522,7 @@ Ip4CreateInterface (
CopyMem (&Interface->Mac, &SnpMode.CurrentAddress, sizeof (Interface->Mac));
CopyMem (&Interface->BroadcastMac, &SnpMode.BroadcastAddress, sizeof (Interface->BroadcastMac));
- Interface->HwaddrLen = SnpMode.HwAddressSize;
+ Interface->HwaddrLen = SnpMode.HwAddressSize;
InitializeListHead (&Interface->IpInstances);
Interface->PromiscRecv = FALSE;
@@ -538,7 +530,6 @@ Ip4CreateInterface (
return Interface;
}
-
/**
Set the interface's address, create and configure
the ARP child if necessary.
@@ -554,13 +545,13 @@ Ip4CreateInterface (
**/
EFI_STATUS
Ip4SetAddress (
- IN OUT IP4_INTERFACE *Interface,
- IN IP4_ADDR IpAddr,
- IN IP4_ADDR SubnetMask
+ IN OUT IP4_INTERFACE *Interface,
+ IN IP4_ADDR IpAddr,
+ IN IP4_ADDR SubnetMask
)
{
- EFI_ARP_CONFIG_DATA ArpConfig;
- EFI_STATUS Status;
+ EFI_ARP_CONFIG_DATA ArpConfig;
+ EFI_STATUS Status;
NET_CHECK_SIGNATURE (Interface, IP4_INTERFACE_SIGNATURE);
@@ -572,10 +563,10 @@ Ip4SetAddress (
// RFC793. If that isn't the case, we are aggregating the
// networks, use the subnet's mask instead.
//
- Interface->Ip = IpAddr;
- Interface->SubnetMask = SubnetMask;
- Interface->SubnetBrdcast = (IpAddr | ~SubnetMask);
- Interface->NetBrdcast = (IpAddr | ~SubnetMask);
+ Interface->Ip = IpAddr;
+ Interface->SubnetMask = SubnetMask;
+ Interface->SubnetBrdcast = (IpAddr | ~SubnetMask);
+ Interface->NetBrdcast = (IpAddr | ~SubnetMask);
//
// Do clean up for Arp child
@@ -621,7 +612,7 @@ Ip4SetAddress (
Status = gBS->OpenProtocol (
Interface->ArpHandle,
&gEfiArpProtocolGuid,
- (VOID **) &Interface->Arp,
+ (VOID **)&Interface->Arp,
Interface->Image,
Interface->Controller,
EFI_OPEN_PROTOCOL_BY_DRIVER
@@ -667,7 +658,6 @@ ON_ERROR:
return Status;
}
-
/**
Filter function to cancel all the frame related to an IP instance.
@@ -682,19 +672,17 @@ ON_ERROR:
**/
BOOLEAN
Ip4CancelInstanceFrame (
- IN IP4_LINK_TX_TOKEN *Frame,
- IN VOID *Context
+ IN IP4_LINK_TX_TOKEN *Frame,
+ IN VOID *Context
)
{
- if (Frame->IpInstance == (IP4_PROTOCOL *) Context) {
+ if (Frame->IpInstance == (IP4_PROTOCOL *)Context) {
return TRUE;
}
return FALSE;
}
-
-
/**
If there is a pending receive request, cancel it. Don't call
the receive request's callback because this function can be only
@@ -709,11 +697,11 @@ Ip4CancelInstanceFrame (
**/
VOID
Ip4CancelReceive (
- IN IP4_INTERFACE *Interface
+ IN IP4_INTERFACE *Interface
)
{
- EFI_TPL OldTpl;
- IP4_LINK_RX_TOKEN *Token;
+ EFI_TPL OldTpl;
+ IP4_LINK_RX_TOKEN *Token;
if ((Token = Interface->RecvRequest) != NULL) {
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
@@ -725,7 +713,6 @@ Ip4CancelReceive (
}
}
-
/**
Free the interface used by IpInstance. All the IP instance with
the same Ip/Netmask pair share the same interface. It is reference
@@ -742,8 +729,8 @@ Ip4CancelReceive (
**/
EFI_STATUS
Ip4FreeInterface (
- IN IP4_INTERFACE *Interface,
- IN IP4_PROTOCOL *IpInstance OPTIONAL
+ IN IP4_INTERFACE *Interface,
+ IN IP4_PROTOCOL *IpInstance OPTIONAL
)
{
NET_CHECK_SIGNATURE (Interface, IP4_INTERFACE_SIGNATURE);
@@ -773,11 +760,11 @@ Ip4FreeInterface (
if (Interface->Arp != NULL) {
gBS->CloseProtocol (
- Interface->ArpHandle,
- &gEfiArpProtocolGuid,
- Interface->Image,
- Interface->Controller
- );
+ Interface->ArpHandle,
+ &gEfiArpProtocolGuid,
+ Interface->Image,
+ Interface->Controller
+ );
NetLibDestroyServiceChild (
Interface->Controller,
@@ -805,16 +792,16 @@ Ip4FreeInterface (
**/
EFI_STATUS
Ip4SendFrameToDefaultRoute (
- IN IP4_ARP_QUE *ArpQue
+ IN IP4_ARP_QUE *ArpQue
)
{
- LIST_ENTRY *Entry;
- LIST_ENTRY *Next;
- IP4_ROUTE_CACHE_ENTRY *RtCacheEntry;
- IP4_LINK_TX_TOKEN *Token;
- IP4_ADDR Gateway;
- EFI_STATUS Status;
- IP4_ROUTE_ENTRY *DefaultRoute;
+ LIST_ENTRY *Entry;
+ LIST_ENTRY *Next;
+ IP4_ROUTE_CACHE_ENTRY *RtCacheEntry;
+ IP4_LINK_TX_TOKEN *Token;
+ IP4_ADDR Gateway;
+ EFI_STATUS Status;
+ IP4_ROUTE_ENTRY *DefaultRoute;
//
// ARP resolve failed when using /32 subnet mask.
@@ -830,18 +817,22 @@ Ip4SendFrameToDefaultRoute (
if (Token->IpInstance != NULL) {
RtCacheEntry = Ip4FindRouteCache (Token->IpInstance->RouteTable, NTOHL (ArpQue->Ip), Token->Interface->Ip);
}
+
if (RtCacheEntry == NULL) {
RtCacheEntry = Ip4FindRouteCache (Token->IpSb->DefaultRouteTable, NTOHL (ArpQue->Ip), Token->Interface->Ip);
}
+
if (RtCacheEntry == NULL) {
- Status= EFI_NO_MAPPING;
+ Status = EFI_NO_MAPPING;
goto ON_ERROR;
}
- DefaultRoute = (IP4_ROUTE_ENTRY*)RtCacheEntry->Tag;
+
+ DefaultRoute = (IP4_ROUTE_ENTRY *)RtCacheEntry->Tag;
if (DefaultRoute == NULL) {
- Status= EFI_NO_MAPPING;
+ Status = EFI_NO_MAPPING;
goto ON_ERROR;
}
+
//
// Try to send the frame to the default route.
//
@@ -850,15 +841,17 @@ Ip4SendFrameToDefaultRoute (
//
// ARP resolve for the default route is failed, return error to caller.
//
- Status= EFI_NO_MAPPING;
+ Status = EFI_NO_MAPPING;
goto ON_ERROR;
}
+
RtCacheEntry->NextHop = Gateway;
- Status = Ip4SendFrame (Token->Interface,Token->IpInstance,Token->Packet,Gateway,Token->CallBack,Token->Context,Token->IpSb);
+ Status = Ip4SendFrame (Token->Interface, Token->IpInstance, Token->Packet, Gateway, Token->CallBack, Token->Context, Token->IpSb);
if (EFI_ERROR (Status)) {
- Status= EFI_NO_MAPPING;
+ Status = EFI_NO_MAPPING;
goto ON_ERROR;
}
+
Ip4FreeRouteCacheEntry (RtCacheEntry);
}
@@ -868,12 +861,12 @@ ON_ERROR:
if (RtCacheEntry != NULL) {
Ip4FreeRouteCacheEntry (RtCacheEntry);
}
+
Token->CallBack (Token->IpInstance, Token->Packet, Status, 0, Token->Context);
Ip4FreeLinkTxToken (Token);
return Status;
}
-
/**
Callback function when ARP request are finished. It will cancel
all the queued frame if the ARP requests failed. Or transmit them
@@ -886,18 +879,18 @@ ON_ERROR:
VOID
EFIAPI
Ip4OnArpResolvedDpc (
- IN VOID *Context
+ IN VOID *Context
)
{
- LIST_ENTRY *Entry;
- LIST_ENTRY *Next;
- IP4_ARP_QUE *ArpQue;
- IP4_INTERFACE *Interface;
- IP4_LINK_TX_TOKEN *Token;
- EFI_STATUS Status;
- EFI_STATUS IoStatus;
-
- ArpQue = (IP4_ARP_QUE *) Context;
+ LIST_ENTRY *Entry;
+ LIST_ENTRY *Next;
+ IP4_ARP_QUE *ArpQue;
+ IP4_INTERFACE *Interface;
+ IP4_LINK_TX_TOKEN *Token;
+ EFI_STATUS Status;
+ EFI_STATUS IoStatus;
+
+ ArpQue = (IP4_ARP_QUE *)Context;
NET_CHECK_SIGNATURE (ArpQue, IP4_FRAME_ARP_SIGNATURE);
RemoveEntryList (&ArpQue->Link);
@@ -919,6 +912,7 @@ Ip4OnArpResolvedDpc (
//
IoStatus = Ip4SendFrameToDefaultRoute (ArpQue);
}
+
goto ON_EXIT;
}
@@ -927,13 +921,13 @@ Ip4OnArpResolvedDpc (
// queue. It isn't necessary for us to cache the ARP binding because
// we always check the ARP cache first before transmit.
//
- IoStatus = EFI_SUCCESS;
+ IoStatus = EFI_SUCCESS;
Interface = ArpQue->Interface;
NET_LIST_FOR_EACH_SAFE (Entry, Next, &ArpQue->Frames) {
RemoveEntryList (Entry);
- Token = NET_LIST_USER_STRUCT (Entry, IP4_LINK_TX_TOKEN, Link);
+ Token = NET_LIST_USER_STRUCT (Entry, IP4_LINK_TX_TOKEN, Link);
CopyMem (&Token->DstMac, &ArpQue->Mac, sizeof (Token->DstMac));
//
@@ -970,8 +964,8 @@ ON_EXIT:
VOID
EFIAPI
Ip4OnArpResolved (
- IN EFI_EVENT Event,
- IN VOID *Context
+ IN EFI_EVENT Event,
+ IN VOID *Context
)
{
//
@@ -980,8 +974,6 @@ Ip4OnArpResolved (
QueueDpc (TPL_CALLBACK, Ip4OnArpResolvedDpc, Context);
}
-
-
/**
Callback function when frame transmission is finished. It will
call the frame owner's callback function to tell it the result.
@@ -992,23 +984,23 @@ Ip4OnArpResolved (
VOID
EFIAPI
Ip4OnFrameSentDpc (
- IN VOID *Context
+ IN VOID *Context
)
{
- IP4_LINK_TX_TOKEN *Token;
+ IP4_LINK_TX_TOKEN *Token;
- Token = (IP4_LINK_TX_TOKEN *) Context;
+ Token = (IP4_LINK_TX_TOKEN *)Context;
NET_CHECK_SIGNATURE (Token, IP4_FRAME_TX_SIGNATURE);
RemoveEntryList (&Token->Link);
Token->CallBack (
- Token->IpInstance,
- Token->Packet,
- Token->MnpToken.Status,
- 0,
- Token->Context
- );
+ Token->IpInstance,
+ Token->Packet,
+ Token->MnpToken.Status,
+ 0,
+ Token->Context
+ );
Ip4FreeLinkTxToken (Token);
}
@@ -1023,8 +1015,8 @@ Ip4OnFrameSentDpc (
VOID
EFIAPI
Ip4OnFrameSent (
- IN EFI_EVENT Event,
- IN VOID *Context
+ IN EFI_EVENT Event,
+ IN VOID *Context
)
{
//
@@ -1033,8 +1025,6 @@ Ip4OnFrameSent (
QueueDpc (TPL_CALLBACK, Ip4OnFrameSentDpc, Context);
}
-
-
/**
Send a frame from the interface. If the next hop is broadcast or
multicast address, it is transmitted immediately. If the next hop
@@ -1060,20 +1050,20 @@ Ip4OnFrameSent (
**/
EFI_STATUS
Ip4SendFrame (
- IN IP4_INTERFACE *Interface,
- IN IP4_PROTOCOL *IpInstance OPTIONAL,
- IN NET_BUF *Packet,
- IN IP4_ADDR NextHop,
- IN IP4_FRAME_CALLBACK CallBack,
- IN VOID *Context,
- IN IP4_SERVICE *IpSb
+ IN IP4_INTERFACE *Interface,
+ IN IP4_PROTOCOL *IpInstance OPTIONAL,
+ IN NET_BUF *Packet,
+ IN IP4_ADDR NextHop,
+ IN IP4_FRAME_CALLBACK CallBack,
+ IN VOID *Context,
+ IN IP4_SERVICE *IpSb
)
{
- IP4_LINK_TX_TOKEN *Token;
- LIST_ENTRY *Entry;
- IP4_ARP_QUE *ArpQue;
- EFI_ARP_PROTOCOL *Arp;
- EFI_STATUS Status;
+ IP4_LINK_TX_TOKEN *Token;
+ LIST_ENTRY *Entry;
+ IP4_ARP_QUE *ArpQue;
+ EFI_ARP_PROTOCOL *Arp;
+ EFI_STATUS Status;
ASSERT (Interface->Configured);
@@ -1092,9 +1082,7 @@ Ip4SendFrame (
if (NextHop == IP4_ALLONE_ADDRESS) {
CopyMem (&Token->DstMac, &Interface->BroadcastMac, sizeof (Token->DstMac));
goto SEND_NOW;
-
} else if (IP4_IS_MULTICAST (NextHop)) {
-
Status = Ip4GetMulticastMac (Interface->Mnp, NextHop, &Token->DstMac);
if (EFI_ERROR (Status)) {
@@ -1120,7 +1108,6 @@ Ip4SendFrame (
if (Status == EFI_SUCCESS) {
goto SEND_NOW;
-
} else if (Status != EFI_NOT_READY) {
goto ON_ERROR;
}
@@ -1187,7 +1174,6 @@ ON_ERROR:
return Status;
}
-
/**
Call back function when the received packet is freed.
Check Ip4OnFrameReceived for information.
@@ -1198,19 +1184,18 @@ ON_ERROR:
VOID
EFIAPI
Ip4RecycleFrame (
- IN VOID *Context
+ IN VOID *Context
)
{
- IP4_LINK_RX_TOKEN *Frame;
+ IP4_LINK_RX_TOKEN *Frame;
- Frame = (IP4_LINK_RX_TOKEN *) Context;
+ Frame = (IP4_LINK_RX_TOKEN *)Context;
NET_CHECK_SIGNATURE (Frame, IP4_FRAME_RX_SIGNATURE);
gBS->SignalEvent (Frame->MnpToken.Packet.RxData->RecycleEvent);
Ip4FreeFrameRxToken (Frame);
}
-
/**
Received a frame from MNP, wrap it in net buffer then deliver
it to IP's input function. The ownship of the packet also
@@ -1225,7 +1210,7 @@ Ip4RecycleFrame (
VOID
EFIAPI
Ip4OnFrameReceivedDpc (
- IN VOID *Context
+ IN VOID *Context
)
{
EFI_MANAGED_NETWORK_COMPLETION_TOKEN *MnpToken;
@@ -1235,7 +1220,7 @@ Ip4OnFrameReceivedDpc (
NET_BUF *Packet;
UINT32 Flag;
- Token = (IP4_LINK_RX_TOKEN *) Context;
+ Token = (IP4_LINK_RX_TOKEN *)Context;
NET_CHECK_SIGNATURE (Token, IP4_FRAME_RX_SIGNATURE);
//
@@ -1251,7 +1236,7 @@ Ip4OnFrameReceivedDpc (
Token->CallBack (Token->IpInstance, NULL, MnpToken->Status, 0, Token->Context);
Ip4FreeFrameRxToken (Token);
- return ;
+ return;
}
//
@@ -1269,7 +1254,7 @@ Ip4OnFrameReceivedDpc (
Token->CallBack (Token->IpInstance, NULL, EFI_OUT_OF_RESOURCES, 0, Token->Context);
Ip4FreeFrameRxToken (Token);
- return ;
+ return;
}
Flag = (MnpRxData->BroadcastFlag ? IP4_LINK_BROADCAST : 0);
@@ -1289,8 +1274,8 @@ Ip4OnFrameReceivedDpc (
VOID
EFIAPI
Ip4OnFrameReceived (
- IN EFI_EVENT Event,
- IN VOID *Context
+ IN EFI_EVENT Event,
+ IN VOID *Context
)
{
//
@@ -1299,7 +1284,6 @@ Ip4OnFrameReceived (
QueueDpc (TPL_CALLBACK, Ip4OnFrameReceivedDpc, Context);
}
-
/**
Request to receive the packet from the interface.
@@ -1317,14 +1301,14 @@ Ip4OnFrameReceived (
**/
EFI_STATUS
Ip4ReceiveFrame (
- IN IP4_INTERFACE *Interface,
- IN IP4_PROTOCOL *IpInstance OPTIONAL,
- IN IP4_FRAME_CALLBACK CallBack,
- IN VOID *Context
+ IN IP4_INTERFACE *Interface,
+ IN IP4_PROTOCOL *IpInstance OPTIONAL,
+ IN IP4_FRAME_CALLBACK CallBack,
+ IN VOID *Context
)
{
- IP4_LINK_RX_TOKEN *Token;
- EFI_STATUS Status;
+ IP4_LINK_RX_TOKEN *Token;
+ EFI_STATUS Status;
NET_CHECK_SIGNATURE (Interface, IP4_INTERFACE_SIGNATURE);
@@ -1339,11 +1323,12 @@ Ip4ReceiveFrame (
}
Interface->RecvRequest = Token;
- Status = Interface->Mnp->Receive (Interface->Mnp, &Token->MnpToken);
+ Status = Interface->Mnp->Receive (Interface->Mnp, &Token->MnpToken);
if (EFI_ERROR (Status)) {
Interface->RecvRequest = NULL;
Ip4FreeFrameRxToken (Token);
return Status;
}
+
return EFI_SUCCESS;
}