]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Network/MnpDxe/MnpImpl.h
1. Add DPC protocol and DpcLib library in MdeModulePkg.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / MnpDxe / MnpImpl.h
CommitLineData
83cbd279 1/** @file\r
2\r
3Copyright (c) 2005 - 2007, Intel Corporation\r
4All rights reserved. This program and the accompanying materials\r
5are licensed and made available under the terms and conditions of the BSD License\r
6which accompanies this distribution. The full text of the license may be found at\r
7http://opensource.org/licenses/bsd-license.php\r
8\r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11\r
12Module Name:\r
13\r
14 MnpImpl.h\r
15\r
16Abstract:\r
17\r
18\r
19**/\r
20\r
21#ifndef _MNP_IMPL_H_\r
22#define _MNP_IMPL_H_\r
23\r
24#include "MnpDriver.h"\r
25#include "MnpDebug.h"\r
26\r
27#define NET_ETHER_FCS_SIZE 4\r
28\r
36ee91ca 29#define MNP_SYS_POLL_INTERVAL (50 * TICKS_PER_MS) // 50 milliseconds\r
83cbd279 30#define MNP_TIMEOUT_CHECK_INTERVAL (50 * TICKS_PER_MS) // 50 milliseconds\r
31#define MNP_TX_TIMEOUT_TIME (500 * TICKS_PER_MS) // 500 milliseconds\r
32#define MNP_INIT_NET_BUFFER_NUM 512\r
33#define MNP_NET_BUFFER_INCREASEMENT 64\r
34#define MNP_MAX_NET_BUFFER_NUM 65536\r
35\r
36#define MNP_MAX_RCVD_PACKET_QUE_SIZE 256\r
37\r
38#define MNP_RECEIVE_UNICAST 0x01\r
39#define MNP_RECEIVE_BROADCAST 0x02\r
40\r
41#define UNICAST_PACKET MNP_RECEIVE_UNICAST\r
42#define BROADCAST_PACKET MNP_RECEIVE_BROADCAST\r
43\r
44#define MNP_INSTANCE_DATA_SIGNATURE EFI_SIGNATURE_32 ('M', 'n', 'p', 'I')\r
45\r
46#define MNP_INSTANCE_DATA_FROM_THIS(a) \\r
47 CR ( \\r
48 (a), \\r
49 MNP_INSTANCE_DATA, \\r
50 ManagedNetwork, \\r
51 MNP_INSTANCE_DATA_SIGNATURE \\r
52 )\r
53\r
54typedef struct _MNP_INSTANCE_DATA {\r
55 UINT32 Signature;\r
56\r
57 MNP_SERVICE_DATA *MnpServiceData;\r
58\r
59 EFI_HANDLE Handle;\r
60\r
61 NET_LIST_ENTRY InstEntry;\r
62\r
63 EFI_MANAGED_NETWORK_PROTOCOL ManagedNetwork;\r
64\r
65 BOOLEAN Configured;\r
66 BOOLEAN Destroyed;\r
67\r
68 NET_LIST_ENTRY GroupCtrlBlkList;\r
69\r
70 NET_MAP RxTokenMap;\r
71\r
72 NET_LIST_ENTRY RxDeliveredPacketQueue;\r
73 NET_LIST_ENTRY RcvdPacketQueue;\r
74 UINTN RcvdPacketQueueSize;\r
75\r
76 EFI_MANAGED_NETWORK_CONFIG_DATA ConfigData;\r
77\r
78 UINT8 ReceiveFilter;\r
79} MNP_INSTANCE_DATA;\r
80\r
81typedef struct _MNP_GROUP_ADDRESS {\r
82 NET_LIST_ENTRY AddrEntry;\r
83 EFI_MAC_ADDRESS Address;\r
84 INTN RefCnt;\r
85} MNP_GROUP_ADDRESS;\r
86\r
87typedef struct _MNP_GROUP_CONTROL_BLOCK {\r
88 NET_LIST_ENTRY CtrlBlkEntry;\r
89 MNP_GROUP_ADDRESS *GroupAddress;\r
90} MNP_GROUP_CONTROL_BLOCK;\r
91\r
92typedef struct _MNP_RXDATA_WRAP {\r
93 NET_LIST_ENTRY WrapEntry;\r
94 MNP_INSTANCE_DATA *Instance;\r
95 EFI_MANAGED_NETWORK_RECEIVE_DATA RxData;\r
96 NET_BUF *Nbuf;\r
97 UINT64 TimeoutTick;\r
98} MNP_RXDATA_WRAP;\r
99\r
100EFI_STATUS\r
101MnpInitializeServiceData (\r
102 IN MNP_SERVICE_DATA *MnpServiceData,\r
103 IN EFI_HANDLE ImageHandle,\r
104 IN EFI_HANDLE ControllerHandle\r
105 );\r
106\r
107VOID\r
108MnpFlushServiceData (\r
109 MNP_SERVICE_DATA *MnpServiceData\r
110 );\r
111\r
112VOID\r
113MnpInitializeInstanceData (\r
114 IN MNP_SERVICE_DATA *MnpServiceData,\r
115 IN MNP_INSTANCE_DATA *Instance\r
116 );\r
117\r
118EFI_STATUS\r
119MnpTokenExist (\r
120 IN NET_MAP *Map,\r
121 IN NET_MAP_ITEM *Item,\r
122 IN VOID *Arg\r
123 );\r
124\r
125EFI_STATUS\r
126MnpCancelTokens (\r
127 IN NET_MAP *Map,\r
128 IN NET_MAP_ITEM *Item,\r
129 IN VOID *Arg\r
130 );\r
131\r
132VOID\r
133MnpFlushRcvdDataQueue (\r
134 IN MNP_INSTANCE_DATA *Instance\r
135 );\r
136\r
137EFI_STATUS\r
138MnpConfigureInstance (\r
139 IN MNP_INSTANCE_DATA *Instance,\r
140 IN EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData OPTIONAL\r
141 );\r
142\r
143EFI_STATUS\r
144MnpGroupOp (\r
145 IN MNP_INSTANCE_DATA *Instance,\r
146 IN BOOLEAN JoinFlag,\r
147 IN EFI_MAC_ADDRESS *MacAddr OPTIONAL,\r
148 IN MNP_GROUP_CONTROL_BLOCK *CtrlBlk OPTIONAL\r
149 );\r
150\r
151BOOLEAN\r
152MnpIsValidTxToken (\r
153 IN MNP_INSTANCE_DATA *Instance,\r
154 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token\r
155 );\r
156\r
157VOID\r
158MnpBuildTxPacket (\r
159 IN MNP_SERVICE_DATA *MnpServiceData,\r
160 IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData,\r
161 OUT UINT8 **PktBuf,\r
162 OUT UINT32 *PktLen\r
163 );\r
164\r
165EFI_STATUS\r
166MnpSyncSendPacket (\r
167 IN MNP_SERVICE_DATA *MnpServiceData,\r
168 IN UINT8 *Packet,\r
169 IN UINT32 Length,\r
170 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token\r
171 );\r
172\r
173EFI_STATUS\r
174MnpInstanceDeliverPacket (\r
175 IN MNP_INSTANCE_DATA *Instance\r
176 );\r
177\r
178VOID\r
179EFIAPI\r
180MnpRecycleRxData (\r
181 IN EFI_EVENT Event,\r
182 IN VOID *Context\r
183 );\r
184\r
185EFI_STATUS\r
186MnpReceivePacket (\r
187 IN MNP_SERVICE_DATA *MnpServiceData\r
188 );\r
189\r
190NET_BUF *\r
191MnpAllocNbuf (\r
192 IN MNP_SERVICE_DATA *MnpServiceData\r
193 );\r
194\r
195VOID\r
196MnpFreeNbuf (\r
197 IN MNP_SERVICE_DATA *MnpServiceData,\r
198 IN NET_BUF *Nbuf\r
199 );\r
200\r
201VOID\r
202EFIAPI\r
203MnpCheckPacketTimeout (\r
204 IN EFI_EVENT Event,\r
205 IN VOID *Context\r
206 );\r
207\r
208VOID\r
209EFIAPI\r
210MnpSystemPoll (\r
211 IN EFI_EVENT Event,\r
212 IN VOID *Context\r
213 );\r
214\r
215EFI_STATUS\r
216EFIAPI\r
217MnpGetModeData (\r
218 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
219 OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,\r
220 OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL\r
221 );\r
222\r
223EFI_STATUS\r
224EFIAPI\r
225MnpConfigure (\r
226 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
227 IN EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL\r
228 );\r
229\r
230EFI_STATUS\r
231EFIAPI\r
232MnpMcastIpToMac (\r
233 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
234 IN BOOLEAN Ipv6Flag,\r
235 IN EFI_IP_ADDRESS *IpAddress,\r
236 OUT EFI_MAC_ADDRESS *MacAddress\r
237 );\r
238\r
239EFI_STATUS\r
240EFIAPI\r
241MnpGroups (\r
242 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
243 IN BOOLEAN JoinFlag,\r
244 IN EFI_MAC_ADDRESS *MacAddress OPTIONAL\r
245 );\r
246\r
247EFI_STATUS\r
248EFIAPI\r
249MnpTransmit (\r
250 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
251 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token\r
252 );\r
253\r
254EFI_STATUS\r
255EFIAPI\r
256MnpCancel (\r
257 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
258 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token OPTIONAL\r
259 );\r
260\r
261EFI_STATUS\r
262EFIAPI\r
263MnpReceive (\r
264 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
265 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token\r
266 );\r
267\r
268EFI_STATUS\r
269EFIAPI\r
270MnpPoll (\r
271 IN EFI_MANAGED_NETWORK_PROTOCOL *This\r
272 );\r
273\r
274#endif\r