VOID\r
EFIAPI\r
Ip4OnFrameSentDpc (\r
- IN VOID *Context\r
+ IN VOID *Context\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
Ip4OnFrameSent (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
Ip4OnArpResolvedDpc (\r
- IN VOID *Context\r
+ IN VOID *Context\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
Ip4OnArpResolved (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
Ip4OnFrameReceivedDpc (\r
- IN VOID *Context\r
+ IN VOID *Context\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
Ip4OnFrameReceived (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
);\r
\r
/**\r
**/\r
VOID\r
Ip4CancelFrameArp (\r
- IN IP4_ARP_QUE *ArpQue,\r
- IN EFI_STATUS IoStatus,\r
- IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL,\r
- IN VOID *Context\r
+ IN IP4_ARP_QUE *ArpQue,\r
+ IN EFI_STATUS IoStatus,\r
+ IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL,\r
+ IN VOID *Context\r
);\r
\r
-\r
/**\r
Wrap a transmit request into a newly allocated IP4_LINK_TX_TOKEN.\r
\r
**/\r
IP4_LINK_TX_TOKEN *\r
Ip4WrapLinkTxToken (\r
- IN IP4_INTERFACE *Interface,\r
- IN IP4_PROTOCOL *IpInstance OPTIONAL,\r
- IN NET_BUF *Packet,\r
- IN IP4_FRAME_CALLBACK CallBack,\r
- IN VOID *Context,\r
- IN IP4_SERVICE *IpSb\r
+ IN IP4_INTERFACE *Interface,\r
+ IN IP4_PROTOCOL *IpInstance OPTIONAL,\r
+ IN NET_BUF *Packet,\r
+ IN IP4_FRAME_CALLBACK CallBack,\r
+ IN VOID *Context,\r
+ IN IP4_SERVICE *IpSb\r
)\r
{\r
EFI_MANAGED_NETWORK_COMPLETION_TOKEN *MnpToken;\r
EFI_STATUS Status;\r
UINT32 Count;\r
\r
- Token = AllocatePool (sizeof (IP4_LINK_TX_TOKEN) + \\r
- (Packet->BlockOpNum - 1) * sizeof (EFI_MANAGED_NETWORK_FRAGMENT_DATA));\r
+ Token = AllocatePool (\r
+ sizeof (IP4_LINK_TX_TOKEN) + \\r
+ (Packet->BlockOpNum - 1) * sizeof (EFI_MANAGED_NETWORK_FRAGMENT_DATA)\r
+ );\r
\r
if (Token == NULL) {\r
return NULL;\r
CopyMem (&Token->DstMac, &mZeroMacAddress, sizeof (Token->DstMac));\r
CopyMem (&Token->SrcMac, &Interface->Mac, sizeof (Token->SrcMac));\r
\r
- MnpToken = &(Token->MnpToken);\r
- MnpToken->Status = EFI_NOT_READY;\r
+ MnpToken = &(Token->MnpToken);\r
+ MnpToken->Status = EFI_NOT_READY;\r
\r
Status = gBS->CreateEvent (\r
EVT_NOTIFY_SIGNAL,\r
return NULL;\r
}\r
\r
- MnpTxData = &Token->MnpTxData;\r
- MnpToken->Packet.TxData = MnpTxData;\r
+ MnpTxData = &Token->MnpTxData;\r
+ MnpToken->Packet.TxData = MnpTxData;\r
\r
MnpTxData->DestinationAddress = &Token->DstMac;\r
MnpTxData->SourceAddress = &Token->SrcMac;\r
MnpTxData->DataLength = Packet->TotalSize;\r
MnpTxData->HeaderLength = 0;\r
\r
- Count = Packet->BlockOpNum;\r
+ Count = Packet->BlockOpNum;\r
\r
- NetbufBuildExt (Packet, (NET_FRAGMENT *) MnpTxData->FragmentTable, &Count);\r
- MnpTxData->FragmentCount = (UINT16)Count;\r
+ NetbufBuildExt (Packet, (NET_FRAGMENT *)MnpTxData->FragmentTable, &Count);\r
+ MnpTxData->FragmentCount = (UINT16)Count;\r
\r
return Token;\r
}\r
\r
-\r
/**\r
Free the link layer transmit token. It will close the event\r
then free the memory used.\r
**/\r
VOID\r
Ip4FreeLinkTxToken (\r
- IN IP4_LINK_TX_TOKEN *Token\r
+ IN IP4_LINK_TX_TOKEN *Token\r
)\r
{\r
NET_CHECK_SIGNATURE (Token, IP4_FRAME_TX_SIGNATURE);\r
FreePool (Token);\r
}\r
\r
-\r
/**\r
Create an IP_ARP_QUE structure to request ARP service.\r
\r
**/\r
IP4_ARP_QUE *\r
Ip4CreateArpQue (\r
- IN IP4_INTERFACE *Interface,\r
- IN IP4_ADDR DestIp\r
+ IN IP4_INTERFACE *Interface,\r
+ IN IP4_ADDR DestIp\r
)\r
{\r
- IP4_ARP_QUE *ArpQue;\r
- EFI_STATUS Status;\r
+ IP4_ARP_QUE *ArpQue;\r
+ EFI_STATUS Status;\r
\r
ArpQue = AllocatePool (sizeof (IP4_ARP_QUE));\r
\r
return NULL;\r
}\r
\r
- ArpQue->Ip = DestIp;\r
+ ArpQue->Ip = DestIp;\r
CopyMem (&ArpQue->Mac, &mZeroMacAddress, sizeof (ArpQue->Mac));\r
\r
return ArpQue;\r
}\r
\r
-\r
/**\r
Remove all the transmit requests queued on the ARP queue, then free it.\r
\r
**/\r
VOID\r
Ip4FreeArpQue (\r
- IN IP4_ARP_QUE *ArpQue,\r
- IN EFI_STATUS IoStatus\r
+ IN IP4_ARP_QUE *ArpQue,\r
+ IN EFI_STATUS IoStatus\r
)\r
{\r
NET_CHECK_SIGNATURE (ArpQue, IP4_FRAME_ARP_SIGNATURE);\r
FreePool (ArpQue);\r
}\r
\r
-\r
/**\r
Create a link layer receive token to wrap the receive request\r
\r
**/\r
IP4_LINK_RX_TOKEN *\r
Ip4CreateLinkRxToken (\r
- IN IP4_INTERFACE *Interface,\r
- IN IP4_PROTOCOL *IpInstance,\r
- IN IP4_FRAME_CALLBACK CallBack,\r
- IN VOID *Context\r
+ IN IP4_INTERFACE *Interface,\r
+ IN IP4_PROTOCOL *IpInstance,\r
+ IN IP4_FRAME_CALLBACK CallBack,\r
+ IN VOID *Context\r
)\r
{\r
EFI_MANAGED_NETWORK_COMPLETION_TOKEN *MnpToken;\r
Token->CallBack = CallBack;\r
Token->Context = Context;\r
\r
- MnpToken = &Token->MnpToken;\r
- MnpToken->Status = EFI_NOT_READY;\r
+ MnpToken = &Token->MnpToken;\r
+ MnpToken->Status = EFI_NOT_READY;\r
\r
Status = gBS->CreateEvent (\r
EVT_NOTIFY_SIGNAL,\r
return Token;\r
}\r
\r
-\r
/**\r
Free the link layer request token. It will close the event\r
then free the memory used.\r
**/\r
VOID\r
Ip4FreeFrameRxToken (\r
- IN IP4_LINK_RX_TOKEN *Token\r
+ IN IP4_LINK_RX_TOKEN *Token\r
)\r
{\r
-\r
NET_CHECK_SIGNATURE (Token, IP4_FRAME_RX_SIGNATURE);\r
\r
gBS->CloseEvent (Token->MnpToken.Event);\r
FreePool (Token);\r
}\r
\r
-\r
/**\r
Remove all the frames on the ARP queue that pass the FrameToCancel,\r
that is, either FrameToCancel is NULL or it returns true for the frame.\r
**/\r
VOID\r
Ip4CancelFrameArp (\r
- IN IP4_ARP_QUE *ArpQue,\r
- IN EFI_STATUS IoStatus,\r
- IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL,\r
- IN VOID *Context\r
+ IN IP4_ARP_QUE *ArpQue,\r
+ IN EFI_STATUS IoStatus,\r
+ IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL,\r
+ IN VOID *Context\r
)\r
{\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Next;\r
- IP4_LINK_TX_TOKEN *Token;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Next;\r
+ IP4_LINK_TX_TOKEN *Token;\r
\r
NET_LIST_FOR_EACH_SAFE (Entry, Next, &ArpQue->Frames) {\r
Token = NET_LIST_USER_STRUCT (Entry, IP4_LINK_TX_TOKEN, Link);\r
}\r
}\r
\r
-\r
/**\r
Remove all the frames on the interface that pass the FrameToCancel,\r
either queued on ARP queues or that have already been delivered to\r
**/\r
VOID\r
Ip4CancelFrames (\r
- IN IP4_INTERFACE *Interface,\r
- IN EFI_STATUS IoStatus,\r
- IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL,\r
- IN VOID *Context\r
+ IN IP4_INTERFACE *Interface,\r
+ IN EFI_STATUS IoStatus,\r
+ IN IP4_FRAME_TO_CANCEL FrameToCancel OPTIONAL,\r
+ IN VOID *Context\r
)\r
{\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Next;\r
- IP4_ARP_QUE *ArpQue;\r
- IP4_LINK_TX_TOKEN *Token;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Next;\r
+ IP4_ARP_QUE *ArpQue;\r
+ IP4_LINK_TX_TOKEN *Token;\r
\r
//\r
// Cancel all the pending frames on ARP requests\r
}\r
}\r
\r
-\r
/**\r
Create an IP4_INTERFACE. Delay the creation of ARP instance until\r
the interface is configured.\r
IN EFI_HANDLE ImageHandle\r
)\r
{\r
- IP4_INTERFACE *Interface;\r
- EFI_SIMPLE_NETWORK_MODE SnpMode;\r
+ IP4_INTERFACE *Interface;\r
+ EFI_SIMPLE_NETWORK_MODE SnpMode;\r
\r
if (Mnp == NULL) {\r
return NULL;\r
\r
Interface->Signature = IP4_INTERFACE_SIGNATURE;\r
InitializeListHead (&Interface->Link);\r
- Interface->RefCnt = 1;\r
+ Interface->RefCnt = 1;\r
\r
Interface->Ip = IP4_ALLZERO_ADDRESS;\r
Interface->SubnetMask = IP4_ALLZERO_ADDRESS;\r
\r
CopyMem (&Interface->Mac, &SnpMode.CurrentAddress, sizeof (Interface->Mac));\r
CopyMem (&Interface->BroadcastMac, &SnpMode.BroadcastAddress, sizeof (Interface->BroadcastMac));\r
- Interface->HwaddrLen = SnpMode.HwAddressSize;\r
+ Interface->HwaddrLen = SnpMode.HwAddressSize;\r
\r
InitializeListHead (&Interface->IpInstances);\r
Interface->PromiscRecv = FALSE;\r
return Interface;\r
}\r
\r
-\r
/**\r
Set the interface's address, create and configure\r
the ARP child if necessary.\r
**/\r
EFI_STATUS\r
Ip4SetAddress (\r
- IN OUT IP4_INTERFACE *Interface,\r
- IN IP4_ADDR IpAddr,\r
- IN IP4_ADDR SubnetMask\r
+ IN OUT IP4_INTERFACE *Interface,\r
+ IN IP4_ADDR IpAddr,\r
+ IN IP4_ADDR SubnetMask\r
)\r
{\r
- EFI_ARP_CONFIG_DATA ArpConfig;\r
- EFI_STATUS Status;\r
+ EFI_ARP_CONFIG_DATA ArpConfig;\r
+ EFI_STATUS Status;\r
\r
NET_CHECK_SIGNATURE (Interface, IP4_INTERFACE_SIGNATURE);\r
\r
// RFC793. If that isn't the case, we are aggregating the\r
// networks, use the subnet's mask instead.\r
//\r
- Interface->Ip = IpAddr;\r
- Interface->SubnetMask = SubnetMask;\r
- Interface->SubnetBrdcast = (IpAddr | ~SubnetMask);\r
- Interface->NetBrdcast = (IpAddr | ~SubnetMask);\r
+ Interface->Ip = IpAddr;\r
+ Interface->SubnetMask = SubnetMask;\r
+ Interface->SubnetBrdcast = (IpAddr | ~SubnetMask);\r
+ Interface->NetBrdcast = (IpAddr | ~SubnetMask);\r
\r
//\r
// Do clean up for Arp child\r
Status = gBS->OpenProtocol (\r
Interface->ArpHandle,\r
&gEfiArpProtocolGuid,\r
- (VOID **) &Interface->Arp,\r
+ (VOID **)&Interface->Arp,\r
Interface->Image,\r
Interface->Controller,\r
EFI_OPEN_PROTOCOL_BY_DRIVER\r
return Status;\r
}\r
\r
-\r
/**\r
Filter function to cancel all the frame related to an IP instance.\r
\r
**/\r
BOOLEAN\r
Ip4CancelInstanceFrame (\r
- IN IP4_LINK_TX_TOKEN *Frame,\r
- IN VOID *Context\r
+ IN IP4_LINK_TX_TOKEN *Frame,\r
+ IN VOID *Context\r
)\r
{\r
- if (Frame->IpInstance == (IP4_PROTOCOL *) Context) {\r
+ if (Frame->IpInstance == (IP4_PROTOCOL *)Context) {\r
return TRUE;\r
}\r
\r
return FALSE;\r
}\r
\r
-\r
-\r
/**\r
If there is a pending receive request, cancel it. Don't call\r
the receive request's callback because this function can be only\r
**/\r
VOID\r
Ip4CancelReceive (\r
- IN IP4_INTERFACE *Interface\r
+ IN IP4_INTERFACE *Interface\r
)\r
{\r
- EFI_TPL OldTpl;\r
- IP4_LINK_RX_TOKEN *Token;\r
+ EFI_TPL OldTpl;\r
+ IP4_LINK_RX_TOKEN *Token;\r
\r
if ((Token = Interface->RecvRequest) != NULL) {\r
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
}\r
}\r
\r
-\r
/**\r
Free the interface used by IpInstance. All the IP instance with\r
the same Ip/Netmask pair share the same interface. It is reference\r
**/\r
EFI_STATUS\r
Ip4FreeInterface (\r
- IN IP4_INTERFACE *Interface,\r
- IN IP4_PROTOCOL *IpInstance OPTIONAL\r
+ IN IP4_INTERFACE *Interface,\r
+ IN IP4_PROTOCOL *IpInstance OPTIONAL\r
)\r
{\r
NET_CHECK_SIGNATURE (Interface, IP4_INTERFACE_SIGNATURE);\r
\r
if (Interface->Arp != NULL) {\r
gBS->CloseProtocol (\r
- Interface->ArpHandle,\r
- &gEfiArpProtocolGuid,\r
- Interface->Image,\r
- Interface->Controller\r
- );\r
+ Interface->ArpHandle,\r
+ &gEfiArpProtocolGuid,\r
+ Interface->Image,\r
+ Interface->Controller\r
+ );\r
\r
NetLibDestroyServiceChild (\r
Interface->Controller,\r
**/\r
EFI_STATUS\r
Ip4SendFrameToDefaultRoute (\r
- IN IP4_ARP_QUE *ArpQue\r
+ IN IP4_ARP_QUE *ArpQue\r
)\r
{\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Next;\r
- IP4_ROUTE_CACHE_ENTRY *RtCacheEntry;\r
- IP4_LINK_TX_TOKEN *Token;\r
- IP4_ADDR Gateway;\r
- EFI_STATUS Status;\r
- IP4_ROUTE_ENTRY *DefaultRoute;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Next;\r
+ IP4_ROUTE_CACHE_ENTRY *RtCacheEntry;\r
+ IP4_LINK_TX_TOKEN *Token;\r
+ IP4_ADDR Gateway;\r
+ EFI_STATUS Status;\r
+ IP4_ROUTE_ENTRY *DefaultRoute;\r
\r
//\r
// ARP resolve failed when using /32 subnet mask.\r
if (Token->IpInstance != NULL) {\r
RtCacheEntry = Ip4FindRouteCache (Token->IpInstance->RouteTable, NTOHL (ArpQue->Ip), Token->Interface->Ip);\r
}\r
+\r
if (RtCacheEntry == NULL) {\r
RtCacheEntry = Ip4FindRouteCache (Token->IpSb->DefaultRouteTable, NTOHL (ArpQue->Ip), Token->Interface->Ip);\r
}\r
+\r
if (RtCacheEntry == NULL) {\r
- Status= EFI_NO_MAPPING;\r
+ Status = EFI_NO_MAPPING;\r
goto ON_ERROR;\r
}\r
- DefaultRoute = (IP4_ROUTE_ENTRY*)RtCacheEntry->Tag;\r
+\r
+ DefaultRoute = (IP4_ROUTE_ENTRY *)RtCacheEntry->Tag;\r
if (DefaultRoute == NULL) {\r
- Status= EFI_NO_MAPPING;\r
+ Status = EFI_NO_MAPPING;\r
goto ON_ERROR;\r
}\r
+\r
//\r
// Try to send the frame to the default route.\r
//\r
//\r
// ARP resolve for the default route is failed, return error to caller.\r
//\r
- Status= EFI_NO_MAPPING;\r
+ Status = EFI_NO_MAPPING;\r
goto ON_ERROR;\r
}\r
+\r
RtCacheEntry->NextHop = Gateway;\r
- Status = Ip4SendFrame (Token->Interface,Token->IpInstance,Token->Packet,Gateway,Token->CallBack,Token->Context,Token->IpSb);\r
+ Status = Ip4SendFrame (Token->Interface, Token->IpInstance, Token->Packet, Gateway, Token->CallBack, Token->Context, Token->IpSb);\r
if (EFI_ERROR (Status)) {\r
- Status= EFI_NO_MAPPING;\r
+ Status = EFI_NO_MAPPING;\r
goto ON_ERROR;\r
}\r
+\r
Ip4FreeRouteCacheEntry (RtCacheEntry);\r
}\r
\r
if (RtCacheEntry != NULL) {\r
Ip4FreeRouteCacheEntry (RtCacheEntry);\r
}\r
+\r
Token->CallBack (Token->IpInstance, Token->Packet, Status, 0, Token->Context);\r
Ip4FreeLinkTxToken (Token);\r
return Status;\r
}\r
\r
-\r
/**\r
Callback function when ARP request are finished. It will cancel\r
all the queued frame if the ARP requests failed. Or transmit them\r
VOID\r
EFIAPI\r
Ip4OnArpResolvedDpc (\r
- IN VOID *Context\r
+ IN VOID *Context\r
)\r
{\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Next;\r
- IP4_ARP_QUE *ArpQue;\r
- IP4_INTERFACE *Interface;\r
- IP4_LINK_TX_TOKEN *Token;\r
- EFI_STATUS Status;\r
- EFI_STATUS IoStatus;\r
-\r
- ArpQue = (IP4_ARP_QUE *) Context;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Next;\r
+ IP4_ARP_QUE *ArpQue;\r
+ IP4_INTERFACE *Interface;\r
+ IP4_LINK_TX_TOKEN *Token;\r
+ EFI_STATUS Status;\r
+ EFI_STATUS IoStatus;\r
+\r
+ ArpQue = (IP4_ARP_QUE *)Context;\r
NET_CHECK_SIGNATURE (ArpQue, IP4_FRAME_ARP_SIGNATURE);\r
\r
RemoveEntryList (&ArpQue->Link);\r
//\r
IoStatus = Ip4SendFrameToDefaultRoute (ArpQue);\r
}\r
+\r
goto ON_EXIT;\r
}\r
\r
// queue. It isn't necessary for us to cache the ARP binding because\r
// we always check the ARP cache first before transmit.\r
//\r
- IoStatus = EFI_SUCCESS;\r
+ IoStatus = EFI_SUCCESS;\r
Interface = ArpQue->Interface;\r
\r
NET_LIST_FOR_EACH_SAFE (Entry, Next, &ArpQue->Frames) {\r
RemoveEntryList (Entry);\r
\r
- Token = NET_LIST_USER_STRUCT (Entry, IP4_LINK_TX_TOKEN, Link);\r
+ Token = NET_LIST_USER_STRUCT (Entry, IP4_LINK_TX_TOKEN, Link);\r
CopyMem (&Token->DstMac, &ArpQue->Mac, sizeof (Token->DstMac));\r
\r
//\r
VOID\r
EFIAPI\r
Ip4OnArpResolved (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
//\r
QueueDpc (TPL_CALLBACK, Ip4OnArpResolvedDpc, Context);\r
}\r
\r
-\r
-\r
/**\r
Callback function when frame transmission is finished. It will\r
call the frame owner's callback function to tell it the result.\r
VOID\r
EFIAPI\r
Ip4OnFrameSentDpc (\r
- IN VOID *Context\r
+ IN VOID *Context\r
)\r
{\r
- IP4_LINK_TX_TOKEN *Token;\r
+ IP4_LINK_TX_TOKEN *Token;\r
\r
- Token = (IP4_LINK_TX_TOKEN *) Context;\r
+ Token = (IP4_LINK_TX_TOKEN *)Context;\r
NET_CHECK_SIGNATURE (Token, IP4_FRAME_TX_SIGNATURE);\r
\r
RemoveEntryList (&Token->Link);\r
\r
Token->CallBack (\r
- Token->IpInstance,\r
- Token->Packet,\r
- Token->MnpToken.Status,\r
- 0,\r
- Token->Context\r
- );\r
+ Token->IpInstance,\r
+ Token->Packet,\r
+ Token->MnpToken.Status,\r
+ 0,\r
+ Token->Context\r
+ );\r
\r
Ip4FreeLinkTxToken (Token);\r
}\r
VOID\r
EFIAPI\r
Ip4OnFrameSent (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
//\r
QueueDpc (TPL_CALLBACK, Ip4OnFrameSentDpc, Context);\r
}\r
\r
-\r
-\r
/**\r
Send a frame from the interface. If the next hop is broadcast or\r
multicast address, it is transmitted immediately. If the next hop\r
**/\r
EFI_STATUS\r
Ip4SendFrame (\r
- IN IP4_INTERFACE *Interface,\r
- IN IP4_PROTOCOL *IpInstance OPTIONAL,\r
- IN NET_BUF *Packet,\r
- IN IP4_ADDR NextHop,\r
- IN IP4_FRAME_CALLBACK CallBack,\r
- IN VOID *Context,\r
- IN IP4_SERVICE *IpSb\r
+ IN IP4_INTERFACE *Interface,\r
+ IN IP4_PROTOCOL *IpInstance OPTIONAL,\r
+ IN NET_BUF *Packet,\r
+ IN IP4_ADDR NextHop,\r
+ IN IP4_FRAME_CALLBACK CallBack,\r
+ IN VOID *Context,\r
+ IN IP4_SERVICE *IpSb\r
)\r
{\r
- IP4_LINK_TX_TOKEN *Token;\r
- LIST_ENTRY *Entry;\r
- IP4_ARP_QUE *ArpQue;\r
- EFI_ARP_PROTOCOL *Arp;\r
- EFI_STATUS Status;\r
+ IP4_LINK_TX_TOKEN *Token;\r
+ LIST_ENTRY *Entry;\r
+ IP4_ARP_QUE *ArpQue;\r
+ EFI_ARP_PROTOCOL *Arp;\r
+ EFI_STATUS Status;\r
\r
ASSERT (Interface->Configured);\r
\r
if (NextHop == IP4_ALLONE_ADDRESS) {\r
CopyMem (&Token->DstMac, &Interface->BroadcastMac, sizeof (Token->DstMac));\r
goto SEND_NOW;\r
-\r
} else if (IP4_IS_MULTICAST (NextHop)) {\r
-\r
Status = Ip4GetMulticastMac (Interface->Mnp, NextHop, &Token->DstMac);\r
\r
if (EFI_ERROR (Status)) {\r
\r
if (Status == EFI_SUCCESS) {\r
goto SEND_NOW;\r
-\r
} else if (Status != EFI_NOT_READY) {\r
goto ON_ERROR;\r
}\r
return Status;\r
}\r
\r
-\r
/**\r
Call back function when the received packet is freed.\r
Check Ip4OnFrameReceived for information.\r
VOID\r
EFIAPI\r
Ip4RecycleFrame (\r
- IN VOID *Context\r
+ IN VOID *Context\r
)\r
{\r
- IP4_LINK_RX_TOKEN *Frame;\r
+ IP4_LINK_RX_TOKEN *Frame;\r
\r
- Frame = (IP4_LINK_RX_TOKEN *) Context;\r
+ Frame = (IP4_LINK_RX_TOKEN *)Context;\r
NET_CHECK_SIGNATURE (Frame, IP4_FRAME_RX_SIGNATURE);\r
\r
gBS->SignalEvent (Frame->MnpToken.Packet.RxData->RecycleEvent);\r
Ip4FreeFrameRxToken (Frame);\r
}\r
\r
-\r
/**\r
Received a frame from MNP, wrap it in net buffer then deliver\r
it to IP's input function. The ownship of the packet also\r
VOID\r
EFIAPI\r
Ip4OnFrameReceivedDpc (\r
- IN VOID *Context\r
+ IN VOID *Context\r
)\r
{\r
EFI_MANAGED_NETWORK_COMPLETION_TOKEN *MnpToken;\r
NET_BUF *Packet;\r
UINT32 Flag;\r
\r
- Token = (IP4_LINK_RX_TOKEN *) Context;\r
+ Token = (IP4_LINK_RX_TOKEN *)Context;\r
NET_CHECK_SIGNATURE (Token, IP4_FRAME_RX_SIGNATURE);\r
\r
//\r
Token->CallBack (Token->IpInstance, NULL, MnpToken->Status, 0, Token->Context);\r
Ip4FreeFrameRxToken (Token);\r
\r
- return ;\r
+ return;\r
}\r
\r
//\r
Token->CallBack (Token->IpInstance, NULL, EFI_OUT_OF_RESOURCES, 0, Token->Context);\r
Ip4FreeFrameRxToken (Token);\r
\r
- return ;\r
+ return;\r
}\r
\r
Flag = (MnpRxData->BroadcastFlag ? IP4_LINK_BROADCAST : 0);\r
VOID\r
EFIAPI\r
Ip4OnFrameReceived (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
//\r
QueueDpc (TPL_CALLBACK, Ip4OnFrameReceivedDpc, Context);\r
}\r
\r
-\r
/**\r
Request to receive the packet from the interface.\r
\r
**/\r
EFI_STATUS\r
Ip4ReceiveFrame (\r
- IN IP4_INTERFACE *Interface,\r
- IN IP4_PROTOCOL *IpInstance OPTIONAL,\r
- IN IP4_FRAME_CALLBACK CallBack,\r
- IN VOID *Context\r
+ IN IP4_INTERFACE *Interface,\r
+ IN IP4_PROTOCOL *IpInstance OPTIONAL,\r
+ IN IP4_FRAME_CALLBACK CallBack,\r
+ IN VOID *Context\r
)\r
{\r
- IP4_LINK_RX_TOKEN *Token;\r
- EFI_STATUS Status;\r
+ IP4_LINK_RX_TOKEN *Token;\r
+ EFI_STATUS Status;\r
\r
NET_CHECK_SIGNATURE (Interface, IP4_INTERFACE_SIGNATURE);\r
\r
}\r
\r
Interface->RecvRequest = Token;\r
- Status = Interface->Mnp->Receive (Interface->Mnp, &Token->MnpToken);\r
+ Status = Interface->Mnp->Receive (Interface->Mnp, &Token->MnpToken);\r
if (EFI_ERROR (Status)) {\r
Interface->RecvRequest = NULL;\r
Ip4FreeFrameRxToken (Token);\r
return Status;\r
}\r
+\r
return EFI_SUCCESS;\r
}\r