X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FNetwork%2FMnpDxe%2FMnpImpl.h;h=7f6669fba3ea614851c6101a08dd7c83034f357d;hp=cdb081d2b4396faf32e861b308a2f133208dd9a6;hb=83cbd279b64f3081af5c06d50fa26e15a99fc066;hpb=5bca971e545e01271c6ae5b1b66ee9f281123bf2 diff --git a/MdeModulePkg/Universal/Network/MnpDxe/MnpImpl.h b/MdeModulePkg/Universal/Network/MnpDxe/MnpImpl.h index cdb081d2b4..7f6669fba3 100644 --- a/MdeModulePkg/Universal/Network/MnpDxe/MnpImpl.h +++ b/MdeModulePkg/Universal/Network/MnpDxe/MnpImpl.h @@ -1,274 +1,274 @@ -/** @file - -Copyright (c) 2005 - 2007, 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: - - MnpImpl.h - -Abstract: - - -**/ - -#ifndef _MNP_IMPL_H_ -#define _MNP_IMPL_H_ - -#include "MnpDriver.h" -#include "MnpDebug.h" - -#define NET_ETHER_FCS_SIZE 4 - -#define MNP_SYS_POLL_INTERVAL (2 * TICKS_PER_MS) // 2 milliseconds -#define MNP_TIMEOUT_CHECK_INTERVAL (50 * TICKS_PER_MS) // 50 milliseconds -#define MNP_TX_TIMEOUT_TIME (500 * TICKS_PER_MS) // 500 milliseconds -#define MNP_INIT_NET_BUFFER_NUM 512 -#define MNP_NET_BUFFER_INCREASEMENT 64 -#define MNP_MAX_NET_BUFFER_NUM 65536 - -#define MNP_MAX_RCVD_PACKET_QUE_SIZE 256 - -#define MNP_RECEIVE_UNICAST 0x01 -#define MNP_RECEIVE_BROADCAST 0x02 - -#define UNICAST_PACKET MNP_RECEIVE_UNICAST -#define BROADCAST_PACKET MNP_RECEIVE_BROADCAST - -#define MNP_INSTANCE_DATA_SIGNATURE EFI_SIGNATURE_32 ('M', 'n', 'p', 'I') - -#define MNP_INSTANCE_DATA_FROM_THIS(a) \ - CR ( \ - (a), \ - MNP_INSTANCE_DATA, \ - ManagedNetwork, \ - MNP_INSTANCE_DATA_SIGNATURE \ - ) - -typedef struct _MNP_INSTANCE_DATA { - UINT32 Signature; - - MNP_SERVICE_DATA *MnpServiceData; - - EFI_HANDLE Handle; - - NET_LIST_ENTRY InstEntry; - - EFI_MANAGED_NETWORK_PROTOCOL ManagedNetwork; - - BOOLEAN Configured; - BOOLEAN Destroyed; - - NET_LIST_ENTRY GroupCtrlBlkList; - - NET_MAP RxTokenMap; - - NET_LIST_ENTRY RxDeliveredPacketQueue; - NET_LIST_ENTRY RcvdPacketQueue; - UINTN RcvdPacketQueueSize; - - EFI_MANAGED_NETWORK_CONFIG_DATA ConfigData; - - UINT8 ReceiveFilter; -} MNP_INSTANCE_DATA; - -typedef struct _MNP_GROUP_ADDRESS { - NET_LIST_ENTRY AddrEntry; - EFI_MAC_ADDRESS Address; - INTN RefCnt; -} MNP_GROUP_ADDRESS; - -typedef struct _MNP_GROUP_CONTROL_BLOCK { - NET_LIST_ENTRY CtrlBlkEntry; - MNP_GROUP_ADDRESS *GroupAddress; -} MNP_GROUP_CONTROL_BLOCK; - -typedef struct _MNP_RXDATA_WRAP { - NET_LIST_ENTRY WrapEntry; - MNP_INSTANCE_DATA *Instance; - EFI_MANAGED_NETWORK_RECEIVE_DATA RxData; - NET_BUF *Nbuf; - UINT64 TimeoutTick; -} MNP_RXDATA_WRAP; - -EFI_STATUS -MnpInitializeServiceData ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN EFI_HANDLE ImageHandle, - IN EFI_HANDLE ControllerHandle - ); - -VOID -MnpFlushServiceData ( - MNP_SERVICE_DATA *MnpServiceData - ); - -VOID -MnpInitializeInstanceData ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN MNP_INSTANCE_DATA *Instance - ); - -EFI_STATUS -MnpTokenExist ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Arg - ); - -EFI_STATUS -MnpCancelTokens ( - IN NET_MAP *Map, - IN NET_MAP_ITEM *Item, - IN VOID *Arg - ); - -VOID -MnpFlushRcvdDataQueue ( - IN MNP_INSTANCE_DATA *Instance - ); - -EFI_STATUS -MnpConfigureInstance ( - IN MNP_INSTANCE_DATA *Instance, - IN EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData OPTIONAL - ); - -EFI_STATUS -MnpGroupOp ( - IN MNP_INSTANCE_DATA *Instance, - IN BOOLEAN JoinFlag, - IN EFI_MAC_ADDRESS *MacAddr OPTIONAL, - IN MNP_GROUP_CONTROL_BLOCK *CtrlBlk OPTIONAL - ); - -BOOLEAN -MnpIsValidTxToken ( - IN MNP_INSTANCE_DATA *Instance, - IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token - ); - -VOID -MnpBuildTxPacket ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData, - OUT UINT8 **PktBuf, - OUT UINT32 *PktLen - ); - -EFI_STATUS -MnpSyncSendPacket ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN UINT8 *Packet, - IN UINT32 Length, - IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token - ); - -EFI_STATUS -MnpInstanceDeliverPacket ( - IN MNP_INSTANCE_DATA *Instance - ); - -VOID -EFIAPI -MnpRecycleRxData ( - IN EFI_EVENT Event, - IN VOID *Context - ); - -EFI_STATUS -MnpReceivePacket ( - IN MNP_SERVICE_DATA *MnpServiceData - ); - -NET_BUF * -MnpAllocNbuf ( - IN MNP_SERVICE_DATA *MnpServiceData - ); - -VOID -MnpFreeNbuf ( - IN MNP_SERVICE_DATA *MnpServiceData, - IN NET_BUF *Nbuf - ); - -VOID -EFIAPI -MnpCheckPacketTimeout ( - IN EFI_EVENT Event, - IN VOID *Context - ); - -VOID -EFIAPI -MnpSystemPoll ( - IN EFI_EVENT Event, - IN VOID *Context - ); - -EFI_STATUS -EFIAPI -MnpGetModeData ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, - OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL - ); - -EFI_STATUS -EFIAPI -MnpConfigure ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL - ); - -EFI_STATUS -EFIAPI -MnpMcastIpToMac ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN BOOLEAN Ipv6Flag, - IN EFI_IP_ADDRESS *IpAddress, - OUT EFI_MAC_ADDRESS *MacAddress - ); - -EFI_STATUS -EFIAPI -MnpGroups ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN BOOLEAN JoinFlag, - IN EFI_MAC_ADDRESS *MacAddress OPTIONAL - ); - -EFI_STATUS -EFIAPI -MnpTransmit ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token - ); - -EFI_STATUS -EFIAPI -MnpCancel ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token OPTIONAL - ); - -EFI_STATUS -EFIAPI -MnpReceive ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This, - IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token - ); - -EFI_STATUS -EFIAPI -MnpPoll ( - IN EFI_MANAGED_NETWORK_PROTOCOL *This - ); - -#endif +/** @file + +Copyright (c) 2005 - 2007, 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: + + MnpImpl.h + +Abstract: + + +**/ + +#ifndef _MNP_IMPL_H_ +#define _MNP_IMPL_H_ + +#include "MnpDriver.h" +#include "MnpDebug.h" + +#define NET_ETHER_FCS_SIZE 4 + +#define MNP_SYS_POLL_INTERVAL (2 * TICKS_PER_MS) // 2 milliseconds +#define MNP_TIMEOUT_CHECK_INTERVAL (50 * TICKS_PER_MS) // 50 milliseconds +#define MNP_TX_TIMEOUT_TIME (500 * TICKS_PER_MS) // 500 milliseconds +#define MNP_INIT_NET_BUFFER_NUM 512 +#define MNP_NET_BUFFER_INCREASEMENT 64 +#define MNP_MAX_NET_BUFFER_NUM 65536 + +#define MNP_MAX_RCVD_PACKET_QUE_SIZE 256 + +#define MNP_RECEIVE_UNICAST 0x01 +#define MNP_RECEIVE_BROADCAST 0x02 + +#define UNICAST_PACKET MNP_RECEIVE_UNICAST +#define BROADCAST_PACKET MNP_RECEIVE_BROADCAST + +#define MNP_INSTANCE_DATA_SIGNATURE EFI_SIGNATURE_32 ('M', 'n', 'p', 'I') + +#define MNP_INSTANCE_DATA_FROM_THIS(a) \ + CR ( \ + (a), \ + MNP_INSTANCE_DATA, \ + ManagedNetwork, \ + MNP_INSTANCE_DATA_SIGNATURE \ + ) + +typedef struct _MNP_INSTANCE_DATA { + UINT32 Signature; + + MNP_SERVICE_DATA *MnpServiceData; + + EFI_HANDLE Handle; + + NET_LIST_ENTRY InstEntry; + + EFI_MANAGED_NETWORK_PROTOCOL ManagedNetwork; + + BOOLEAN Configured; + BOOLEAN Destroyed; + + NET_LIST_ENTRY GroupCtrlBlkList; + + NET_MAP RxTokenMap; + + NET_LIST_ENTRY RxDeliveredPacketQueue; + NET_LIST_ENTRY RcvdPacketQueue; + UINTN RcvdPacketQueueSize; + + EFI_MANAGED_NETWORK_CONFIG_DATA ConfigData; + + UINT8 ReceiveFilter; +} MNP_INSTANCE_DATA; + +typedef struct _MNP_GROUP_ADDRESS { + NET_LIST_ENTRY AddrEntry; + EFI_MAC_ADDRESS Address; + INTN RefCnt; +} MNP_GROUP_ADDRESS; + +typedef struct _MNP_GROUP_CONTROL_BLOCK { + NET_LIST_ENTRY CtrlBlkEntry; + MNP_GROUP_ADDRESS *GroupAddress; +} MNP_GROUP_CONTROL_BLOCK; + +typedef struct _MNP_RXDATA_WRAP { + NET_LIST_ENTRY WrapEntry; + MNP_INSTANCE_DATA *Instance; + EFI_MANAGED_NETWORK_RECEIVE_DATA RxData; + NET_BUF *Nbuf; + UINT64 TimeoutTick; +} MNP_RXDATA_WRAP; + +EFI_STATUS +MnpInitializeServiceData ( + IN MNP_SERVICE_DATA *MnpServiceData, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE ControllerHandle + ); + +VOID +MnpFlushServiceData ( + MNP_SERVICE_DATA *MnpServiceData + ); + +VOID +MnpInitializeInstanceData ( + IN MNP_SERVICE_DATA *MnpServiceData, + IN MNP_INSTANCE_DATA *Instance + ); + +EFI_STATUS +MnpTokenExist ( + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Arg + ); + +EFI_STATUS +MnpCancelTokens ( + IN NET_MAP *Map, + IN NET_MAP_ITEM *Item, + IN VOID *Arg + ); + +VOID +MnpFlushRcvdDataQueue ( + IN MNP_INSTANCE_DATA *Instance + ); + +EFI_STATUS +MnpConfigureInstance ( + IN MNP_INSTANCE_DATA *Instance, + IN EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData OPTIONAL + ); + +EFI_STATUS +MnpGroupOp ( + IN MNP_INSTANCE_DATA *Instance, + IN BOOLEAN JoinFlag, + IN EFI_MAC_ADDRESS *MacAddr OPTIONAL, + IN MNP_GROUP_CONTROL_BLOCK *CtrlBlk OPTIONAL + ); + +BOOLEAN +MnpIsValidTxToken ( + IN MNP_INSTANCE_DATA *Instance, + IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token + ); + +VOID +MnpBuildTxPacket ( + IN MNP_SERVICE_DATA *MnpServiceData, + IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData, + OUT UINT8 **PktBuf, + OUT UINT32 *PktLen + ); + +EFI_STATUS +MnpSyncSendPacket ( + IN MNP_SERVICE_DATA *MnpServiceData, + IN UINT8 *Packet, + IN UINT32 Length, + IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token + ); + +EFI_STATUS +MnpInstanceDeliverPacket ( + IN MNP_INSTANCE_DATA *Instance + ); + +VOID +EFIAPI +MnpRecycleRxData ( + IN EFI_EVENT Event, + IN VOID *Context + ); + +EFI_STATUS +MnpReceivePacket ( + IN MNP_SERVICE_DATA *MnpServiceData + ); + +NET_BUF * +MnpAllocNbuf ( + IN MNP_SERVICE_DATA *MnpServiceData + ); + +VOID +MnpFreeNbuf ( + IN MNP_SERVICE_DATA *MnpServiceData, + IN NET_BUF *Nbuf + ); + +VOID +EFIAPI +MnpCheckPacketTimeout ( + IN EFI_EVENT Event, + IN VOID *Context + ); + +VOID +EFIAPI +MnpSystemPoll ( + IN EFI_EVENT Event, + IN VOID *Context + ); + +EFI_STATUS +EFIAPI +MnpGetModeData ( + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, + OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL + ); + +EFI_STATUS +EFIAPI +MnpConfigure ( + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL + ); + +EFI_STATUS +EFIAPI +MnpMcastIpToMac ( + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN BOOLEAN Ipv6Flag, + IN EFI_IP_ADDRESS *IpAddress, + OUT EFI_MAC_ADDRESS *MacAddress + ); + +EFI_STATUS +EFIAPI +MnpGroups ( + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN BOOLEAN JoinFlag, + IN EFI_MAC_ADDRESS *MacAddress OPTIONAL + ); + +EFI_STATUS +EFIAPI +MnpTransmit ( + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token + ); + +EFI_STATUS +EFIAPI +MnpCancel ( + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token OPTIONAL + ); + +EFI_STATUS +EFIAPI +MnpReceive ( + IN EFI_MANAGED_NETWORK_PROTOCOL *This, + IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token + ); + +EFI_STATUS +EFIAPI +MnpPoll ( + IN EFI_MANAGED_NETWORK_PROTOCOL *This + ); + +#endif