**/\r
BOOLEAN\r
MnpIsValidTxToken (\r
- IN MNP_INSTANCE_DATA *Instance,\r
- IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token\r
+ IN MNP_INSTANCE_DATA *Instance,\r
+ IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token\r
)\r
{\r
- MNP_SERVICE_DATA *MnpServiceData;\r
- EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData;\r
- UINT32 Index;\r
- UINT32 TotalLength;\r
- EFI_MANAGED_NETWORK_FRAGMENT_DATA *FragmentTable;\r
+ MNP_SERVICE_DATA *MnpServiceData;\r
+ EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData;\r
+ UINT32 Index;\r
+ UINT32 TotalLength;\r
+ EFI_MANAGED_NETWORK_FRAGMENT_DATA *FragmentTable;\r
\r
MnpServiceData = Instance->MnpServiceData;\r
NET_CHECK_SIGNATURE (MnpServiceData, MNP_SERVICE_DATA_SIGNATURE);\r
TotalLength = 0;\r
FragmentTable = TxData->FragmentTable;\r
for (Index = 0; Index < TxData->FragmentCount; Index++) {\r
-\r
if ((FragmentTable[Index].FragmentLength == 0) || (FragmentTable[Index].FragmentBuffer == NULL)) {\r
//\r
// The token is invalid if any FragmentLength is zero or any FragmentBuffer is NULL.\r
**/\r
EFI_STATUS\r
MnpBuildTxPacket (\r
- IN MNP_SERVICE_DATA *MnpServiceData,\r
- IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData,\r
- OUT UINT8 **PktBuf,\r
- OUT UINT32 *PktLen\r
+ IN MNP_SERVICE_DATA *MnpServiceData,\r
+ IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData,\r
+ OUT UINT8 **PktBuf,\r
+ OUT UINT32 *PktLen\r
)\r
{\r
- EFI_SIMPLE_NETWORK_MODE *SnpMode;\r
- UINT8 *DstPos;\r
- UINT16 Index;\r
- MNP_DEVICE_DATA *MnpDeviceData;\r
- UINT8 *TxBuf;\r
+ EFI_SIMPLE_NETWORK_MODE *SnpMode;\r
+ UINT8 *DstPos;\r
+ UINT16 Index;\r
+ MNP_DEVICE_DATA *MnpDeviceData;\r
+ UINT8 *TxBuf;\r
\r
MnpDeviceData = MnpServiceData->MnpDeviceData;\r
\r
\r
if ((TxData->DestinationAddress == NULL) && (TxData->FragmentCount == 1)) {\r
CopyMem (\r
- *PktBuf,\r
- TxData->FragmentTable[0].FragmentBuffer,\r
- TxData->FragmentTable[0].FragmentLength\r
- );\r
+ *PktBuf,\r
+ TxData->FragmentTable[0].FragmentBuffer,\r
+ TxData->FragmentTable[0].FragmentLength\r
+ );\r
\r
*PktLen = TxData->FragmentTable[0].FragmentLength;\r
} else {\r
// If dest address is not NULL, move DstPos to reserve space for the\r
// media header. Add the media header length to buflen.\r
//\r
- DstPos += SnpMode->MediaHeaderSize;\r
+ DstPos += SnpMode->MediaHeaderSize;\r
*PktLen += SnpMode->MediaHeaderSize;\r
}\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Synchronously send out the packet.\r
\r
**/\r
EFI_STATUS\r
MnpSyncSendPacket (\r
- IN MNP_SERVICE_DATA *MnpServiceData,\r
- IN UINT8 *Packet,\r
- IN UINT32 Length,\r
- IN OUT EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token\r
+ IN MNP_SERVICE_DATA *MnpServiceData,\r
+ IN UINT8 *Packet,\r
+ IN UINT32 Length,\r
+ IN OUT EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
- EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData;\r
- UINT32 HeaderSize;\r
- MNP_DEVICE_DATA *MnpDeviceData;\r
- UINT16 ProtocolType;\r
+ EFI_STATUS Status;\r
+ EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
+ EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData;\r
+ UINT32 HeaderSize;\r
+ MNP_DEVICE_DATA *MnpDeviceData;\r
+ UINT16 ProtocolType;\r
\r
MnpDeviceData = MnpServiceData->MnpDeviceData;\r
Snp = MnpDeviceData->Snp;\r
goto SIGNAL_TOKEN;\r
}\r
\r
-\r
if (MnpServiceData->VlanId != 0) {\r
//\r
// Insert VLAN tag\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Try to deliver the received packet to the instance.\r
\r
**/\r
EFI_STATUS\r
MnpInstanceDeliverPacket (\r
- IN OUT MNP_INSTANCE_DATA *Instance\r
+ IN OUT MNP_INSTANCE_DATA *Instance\r
)\r
{\r
MNP_DEVICE_DATA *MnpDeviceData;\r
//\r
// Set all the buffer pointers.\r
//\r
- RxData->MediaHeader = NetbufGetByte (RxDataWrap->Nbuf, 0, NULL);\r
- RxData->DestinationAddress = RxData->MediaHeader;\r
- RxData->SourceAddress = (UINT8 *) RxData->MediaHeader + SnpMode->HwAddressSize;\r
- RxData->PacketData = (UINT8 *) RxData->MediaHeader + SnpMode->MediaHeaderSize;\r
+ RxData->MediaHeader = NetbufGetByte (RxDataWrap->Nbuf, 0, NULL);\r
+ RxData->DestinationAddress = RxData->MediaHeader;\r
+ RxData->SourceAddress = (UINT8 *)RxData->MediaHeader + SnpMode->HwAddressSize;\r
+ RxData->PacketData = (UINT8 *)RxData->MediaHeader + SnpMode->MediaHeaderSize;\r
\r
//\r
// Insert this RxDataWrap into the delivered queue.\r
//\r
// Signal this token's event.\r
//\r
- RxToken->Packet.RxData = &RxDataWrap->RxData;\r
- RxToken->Status = EFI_SUCCESS;\r
+ RxToken->Packet.RxData = &RxDataWrap->RxData;\r
+ RxToken->Status = EFI_SUCCESS;\r
gBS->SignalEvent (RxToken->Event);\r
\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Deliver the received packet for the instances belonging to the MnpServiceData.\r
\r
**/\r
VOID\r
MnpDeliverPacket (\r
- IN MNP_SERVICE_DATA *MnpServiceData\r
+ IN MNP_SERVICE_DATA *MnpServiceData\r
)\r
{\r
- LIST_ENTRY *Entry;\r
- MNP_INSTANCE_DATA *Instance;\r
+ LIST_ENTRY *Entry;\r
+ MNP_INSTANCE_DATA *Instance;\r
\r
NET_CHECK_SIGNATURE (MnpServiceData, MNP_SERVICE_DATA_SIGNATURE);\r
\r
}\r
}\r
\r
-\r
/**\r
Recycle the RxData and other resources used to hold and deliver the received\r
packet.\r
VOID\r
EFIAPI\r
MnpRecycleRxData (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- MNP_RXDATA_WRAP *RxDataWrap;\r
- MNP_DEVICE_DATA *MnpDeviceData;\r
+ MNP_RXDATA_WRAP *RxDataWrap;\r
+ MNP_DEVICE_DATA *MnpDeviceData;\r
\r
ASSERT (Context != NULL);\r
\r
- RxDataWrap = (MNP_RXDATA_WRAP *) Context;\r
+ RxDataWrap = (MNP_RXDATA_WRAP *)Context;\r
NET_CHECK_SIGNATURE (RxDataWrap->Instance, MNP_INSTANCE_DATA_SIGNATURE);\r
\r
ASSERT (RxDataWrap->Nbuf != NULL);\r
FreePool (RxDataWrap);\r
}\r
\r
-\r
/**\r
Queue the received packet into instance's receive queue.\r
\r
**/\r
VOID\r
MnpQueueRcvdPacket (\r
- IN OUT MNP_INSTANCE_DATA *Instance,\r
- IN OUT MNP_RXDATA_WRAP *RxDataWrap\r
+ IN OUT MNP_INSTANCE_DATA *Instance,\r
+ IN OUT MNP_RXDATA_WRAP *RxDataWrap\r
)\r
{\r
- MNP_RXDATA_WRAP *OldRxDataWrap;\r
+ MNP_RXDATA_WRAP *OldRxDataWrap;\r
\r
NET_CHECK_SIGNATURE (Instance, MNP_INSTANCE_DATA_SIGNATURE);\r
\r
// from the head.\r
//\r
if (Instance->RcvdPacketQueueSize == MNP_MAX_RCVD_PACKET_QUE_SIZE) {\r
-\r
DEBUG ((DEBUG_WARN, "MnpQueueRcvdPacket: Drop one packet bcz queue size limit reached.\n"));\r
\r
//\r
//\r
// Recycle this OldRxDataWrap, this entry will be removed by the callee.\r
//\r
- MnpRecycleRxData (NULL, (VOID *) OldRxDataWrap);\r
+ MnpRecycleRxData (NULL, (VOID *)OldRxDataWrap);\r
Instance->RcvdPacketQueueSize--;\r
}\r
\r
Instance->RcvdPacketQueueSize++;\r
}\r
\r
-\r
/**\r
Match the received packet with the instance receive filters.\r
\r
**/\r
BOOLEAN\r
MnpMatchPacket (\r
- IN MNP_INSTANCE_DATA *Instance,\r
- IN EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData,\r
- IN MNP_GROUP_ADDRESS *GroupAddress OPTIONAL,\r
- IN UINT8 PktAttr\r
+ IN MNP_INSTANCE_DATA *Instance,\r
+ IN EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData,\r
+ IN MNP_GROUP_ADDRESS *GroupAddress OPTIONAL,\r
+ IN UINT8 PktAttr\r
)\r
{\r
- EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData;\r
- LIST_ENTRY *Entry;\r
- MNP_GROUP_CONTROL_BLOCK *GroupCtrlBlk;\r
+ EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData;\r
+ LIST_ENTRY *Entry;\r
+ MNP_GROUP_CONTROL_BLOCK *GroupCtrlBlk;\r
\r
NET_CHECK_SIGNATURE (Instance, MNP_INSTANCE_DATA_SIGNATURE);\r
\r
// Check multicast addresses.\r
//\r
if (ConfigData->EnableMulticastReceive && RxData->MulticastFlag) {\r
-\r
ASSERT (GroupAddress != NULL);\r
\r
NET_LIST_FOR_EACH (Entry, &Instance->GroupCtrlBlkList) {\r
-\r
GroupCtrlBlk = NET_LIST_USER_STRUCT (Entry, MNP_GROUP_CONTROL_BLOCK, CtrlBlkEntry);\r
if (GroupCtrlBlk->GroupAddress == GroupAddress) {\r
//\r
return FALSE;\r
}\r
\r
-\r
/**\r
Analyse the received packets.\r
\r
**/\r
VOID\r
MnpAnalysePacket (\r
- IN MNP_SERVICE_DATA *MnpServiceData,\r
- IN NET_BUF *Nbuf,\r
- IN OUT EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData,\r
- OUT MNP_GROUP_ADDRESS **GroupAddress,\r
- OUT UINT8 *PktAttr\r
+ IN MNP_SERVICE_DATA *MnpServiceData,\r
+ IN NET_BUF *Nbuf,\r
+ IN OUT EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData,\r
+ OUT MNP_GROUP_ADDRESS **GroupAddress,\r
+ OUT UINT8 *PktAttr\r
)\r
{\r
- EFI_SIMPLE_NETWORK_MODE *SnpMode;\r
- MNP_DEVICE_DATA *MnpDeviceData;\r
- UINT8 *BufPtr;\r
- LIST_ENTRY *Entry;\r
+ EFI_SIMPLE_NETWORK_MODE *SnpMode;\r
+ MNP_DEVICE_DATA *MnpDeviceData;\r
+ UINT8 *BufPtr;\r
+ LIST_ENTRY *Entry;\r
\r
MnpDeviceData = MnpServiceData->MnpDeviceData;\r
SnpMode = MnpDeviceData->Snp->Mode;\r
// It's multicast, try to match the multicast filters.\r
//\r
NET_LIST_FOR_EACH (Entry, &MnpDeviceData->GroupAddressList) {\r
-\r
*GroupAddress = NET_LIST_USER_STRUCT (Entry, MNP_GROUP_ADDRESS, AddrEntry);\r
if (NET_MAC_EQUAL (BufPtr, &((*GroupAddress)->Address), SnpMode->HwAddressSize)) {\r
RxData->MulticastFlag = TRUE;\r
//\r
// Skip the below code, there is no receiver of this packet.\r
//\r
- return ;\r
+ return;\r
}\r
}\r
} else {\r
RxData->HeaderLength = SnpMode->MediaHeaderSize;\r
RxData->AddressLength = SnpMode->HwAddressSize;\r
RxData->DataLength = RxData->PacketLength - RxData->HeaderLength;\r
- RxData->ProtocolType = NTOHS (*(UINT16 *) (BufPtr + 2 * SnpMode->HwAddressSize));\r
+ RxData->ProtocolType = NTOHS (*(UINT16 *)(BufPtr + 2 * SnpMode->HwAddressSize));\r
}\r
\r
-\r
/**\r
Wrap the RxData.\r
\r
**/\r
MNP_RXDATA_WRAP *\r
MnpWrapRxData (\r
- IN MNP_INSTANCE_DATA *Instance,\r
- IN EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData\r
+ IN MNP_INSTANCE_DATA *Instance,\r
+ IN EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData\r
)\r
{\r
- EFI_STATUS Status;\r
- MNP_RXDATA_WRAP *RxDataWrap;\r
+ EFI_STATUS Status;\r
+ MNP_RXDATA_WRAP *RxDataWrap;\r
\r
//\r
// Allocate memory.\r
return RxDataWrap;\r
}\r
\r
-\r
/**\r
Enqueue the received the packets to the instances belonging to the\r
MnpServiceData.\r
**/\r
VOID\r
MnpEnqueuePacket (\r
- IN MNP_SERVICE_DATA *MnpServiceData,\r
- IN NET_BUF *Nbuf\r
+ IN MNP_SERVICE_DATA *MnpServiceData,\r
+ IN NET_BUF *Nbuf\r
)\r
{\r
LIST_ENTRY *Entry;\r
MNP_GROUP_ADDRESS *GroupAddress;\r
MNP_RXDATA_WRAP *RxDataWrap;\r
\r
-\r
GroupAddress = NULL;\r
//\r
// First, analyse the packet header.\r
//\r
// No receivers, no more action need.\r
//\r
- return ;\r
+ return;\r
}\r
\r
//\r
// Iterate the children to find match.\r
//\r
NET_LIST_FOR_EACH (Entry, &MnpServiceData->ChildrenList) {\r
-\r
Instance = NET_LIST_USER_STRUCT (Entry, MNP_INSTANCE_DATA, InstEntry);\r
NET_CHECK_SIGNATURE (Instance, MNP_INSTANCE_DATA_SIGNATURE);\r
\r
}\r
}\r
\r
-\r
/**\r
Try to receive a packet and deliver it.\r
\r
**/\r
EFI_STATUS\r
MnpReceivePacket (\r
- IN OUT MNP_DEVICE_DATA *MnpDeviceData\r
+ IN OUT MNP_DEVICE_DATA *MnpDeviceData\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
- NET_BUF *Nbuf;\r
- UINT8 *BufPtr;\r
- UINTN BufLen;\r
- UINTN HeaderSize;\r
- UINT32 Trimmed;\r
- MNP_SERVICE_DATA *MnpServiceData;\r
- UINT16 VlanId;\r
- BOOLEAN IsVlanPacket;\r
+ EFI_STATUS Status;\r
+ EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
+ NET_BUF *Nbuf;\r
+ UINT8 *BufPtr;\r
+ UINTN BufLen;\r
+ UINTN HeaderSize;\r
+ UINT32 Trimmed;\r
+ MNP_SERVICE_DATA *MnpServiceData;\r
+ UINT16 VlanId;\r
+ BOOLEAN IsVlanPacket;\r
\r
NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE);\r
\r
);\r
}\r
\r
- Nbuf = MnpDeviceData->RxNbufCache;\r
- BufLen = Nbuf->TotalSize;\r
- BufPtr = NetbufGetByte (Nbuf, 0, NULL);\r
+ Nbuf = MnpDeviceData->RxNbufCache;\r
+ BufLen = Nbuf->TotalSize;\r
+ BufPtr = NetbufGetByte (Nbuf, 0, NULL);\r
ASSERT (BufPtr != NULL);\r
\r
//\r
Status = Snp->Receive (Snp, &HeaderSize, &BufLen, BufPtr, NULL, NULL, NULL);\r
if (EFI_ERROR (Status)) {\r
DEBUG_CODE_BEGIN ();\r
- if (Status != EFI_NOT_READY) {\r
- DEBUG ((DEBUG_WARN, "MnpReceivePacket: Snp->Receive() = %r.\n", Status));\r
- }\r
+ if (Status != EFI_NOT_READY) {\r
+ DEBUG ((DEBUG_WARN, "MnpReceivePacket: Snp->Receive() = %r.\n", Status));\r
+ }\r
+\r
DEBUG_CODE_END ();\r
\r
return Status;\r
if ((HeaderSize != Snp->Mode->MediaHeaderSize) || (BufLen < HeaderSize)) {\r
DEBUG (\r
(DEBUG_WARN,\r
- "MnpReceivePacket: Size error, HL:TL = %d:%d.\n",\r
- HeaderSize,\r
- BufLen)\r
+ "MnpReceivePacket: Size error, HL:TL = %d:%d.\n",\r
+ HeaderSize,\r
+ BufLen)\r
);\r
return EFI_DEVICE_ERROR;\r
}\r
//\r
// Trim the packet from tail.\r
//\r
- Trimmed = NetbufTrim (Nbuf, Nbuf->TotalSize - (UINT32) BufLen, NET_BUF_TAIL);\r
+ Trimmed = NetbufTrim (Nbuf, Nbuf->TotalSize - (UINT32)BufLen, NET_BUF_TAIL);\r
ASSERT (Nbuf->TotalSize == BufLen);\r
}\r
\r
if (Trimmed > 0) {\r
NetbufAllocSpace (Nbuf, Trimmed, NET_BUF_TAIL);\r
}\r
+\r
if (IsVlanPacket) {\r
NetbufAllocSpace (Nbuf, NET_VLAN_TAG_LEN, NET_BUF_HEAD);\r
}\r
\r
goto EXIT;\r
}\r
+\r
//\r
// Deliver the queued packets.\r
//\r
return Status;\r
}\r
\r
-\r
/**\r
Remove the received packets if timeout occurs.\r
\r
VOID\r
EFIAPI\r
MnpCheckPacketTimeout (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- MNP_DEVICE_DATA *MnpDeviceData;\r
- MNP_SERVICE_DATA *MnpServiceData;\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *ServiceEntry;\r
- LIST_ENTRY *RxEntry;\r
- LIST_ENTRY *NextEntry;\r
- MNP_INSTANCE_DATA *Instance;\r
- MNP_RXDATA_WRAP *RxDataWrap;\r
- EFI_TPL OldTpl;\r
-\r
- MnpDeviceData = (MNP_DEVICE_DATA *) Context;\r
+ MNP_DEVICE_DATA *MnpDeviceData;\r
+ MNP_SERVICE_DATA *MnpServiceData;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *ServiceEntry;\r
+ LIST_ENTRY *RxEntry;\r
+ LIST_ENTRY *NextEntry;\r
+ MNP_INSTANCE_DATA *Instance;\r
+ MNP_RXDATA_WRAP *RxDataWrap;\r
+ EFI_TPL OldTpl;\r
+\r
+ MnpDeviceData = (MNP_DEVICE_DATA *)Context;\r
NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE);\r
\r
NET_LIST_FOR_EACH (ServiceEntry, &MnpDeviceData->ServiceList) {\r
MnpServiceData = MNP_SERVICE_DATA_FROM_LINK (ServiceEntry);\r
\r
NET_LIST_FOR_EACH (Entry, &MnpServiceData->ChildrenList) {\r
-\r
Instance = NET_LIST_USER_STRUCT (Entry, MNP_INSTANCE_DATA, InstEntry);\r
NET_CHECK_SIGNATURE (Instance, MNP_INSTANCE_DATA_SIGNATURE);\r
\r
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);\r
\r
NET_LIST_FOR_EACH_SAFE (RxEntry, NextEntry, &Instance->RcvdPacketQueue) {\r
-\r
RxDataWrap = NET_LIST_USER_STRUCT (RxEntry, MNP_RXDATA_WRAP, WrapEntry);\r
\r
//\r
VOID\r
EFIAPI\r
MnpCheckMediaStatus (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- MNP_DEVICE_DATA *MnpDeviceData;\r
- EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
- UINT32 InterruptStatus;\r
+ MNP_DEVICE_DATA *MnpDeviceData;\r
+ EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
+ UINT32 InterruptStatus;\r
\r
- MnpDeviceData = (MNP_DEVICE_DATA *) Context;\r
+ MnpDeviceData = (MNP_DEVICE_DATA *)Context;\r
NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE);\r
\r
Snp = MnpDeviceData->Snp;\r
VOID\r
EFIAPI\r
MnpSystemPoll (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
MNP_DEVICE_DATA *MnpDeviceData;\r
\r
- MnpDeviceData = (MNP_DEVICE_DATA *) Context;\r
+ MnpDeviceData = (MNP_DEVICE_DATA *)Context;\r
NET_CHECK_SIGNATURE (MnpDeviceData, MNP_DEVICE_DATA_SIGNATURE);\r
\r
//\r