]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Network/MnpDxe/MnpImpl.h
Use Mde library and definition instead of some native definitions in NetLib, to simpl...
[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
83cbd279 25\r
26#define NET_ETHER_FCS_SIZE 4\r
27\r
36ee91ca 28#define MNP_SYS_POLL_INTERVAL (50 * TICKS_PER_MS) // 50 milliseconds\r
83cbd279 29#define MNP_TIMEOUT_CHECK_INTERVAL (50 * TICKS_PER_MS) // 50 milliseconds\r
30#define MNP_TX_TIMEOUT_TIME (500 * TICKS_PER_MS) // 500 milliseconds\r
31#define MNP_INIT_NET_BUFFER_NUM 512\r
32#define MNP_NET_BUFFER_INCREASEMENT 64\r
33#define MNP_MAX_NET_BUFFER_NUM 65536\r
34\r
35#define MNP_MAX_RCVD_PACKET_QUE_SIZE 256\r
36\r
37#define MNP_RECEIVE_UNICAST 0x01\r
38#define MNP_RECEIVE_BROADCAST 0x02\r
39\r
40#define UNICAST_PACKET MNP_RECEIVE_UNICAST\r
41#define BROADCAST_PACKET MNP_RECEIVE_BROADCAST\r
42\r
43#define MNP_INSTANCE_DATA_SIGNATURE EFI_SIGNATURE_32 ('M', 'n', 'p', 'I')\r
44\r
45#define MNP_INSTANCE_DATA_FROM_THIS(a) \\r
46 CR ( \\r
47 (a), \\r
48 MNP_INSTANCE_DATA, \\r
49 ManagedNetwork, \\r
50 MNP_INSTANCE_DATA_SIGNATURE \\r
51 )\r
52\r
53typedef struct _MNP_INSTANCE_DATA {\r
54 UINT32 Signature;\r
55\r
56 MNP_SERVICE_DATA *MnpServiceData;\r
57\r
58 EFI_HANDLE Handle;\r
59\r
e48e37fc 60 LIST_ENTRY InstEntry;\r
83cbd279 61\r
62 EFI_MANAGED_NETWORK_PROTOCOL ManagedNetwork;\r
63\r
64 BOOLEAN Configured;\r
65 BOOLEAN Destroyed;\r
66\r
e48e37fc 67 LIST_ENTRY GroupCtrlBlkList;\r
83cbd279 68\r
69 NET_MAP RxTokenMap;\r
70\r
e48e37fc 71 LIST_ENTRY RxDeliveredPacketQueue;\r
72 LIST_ENTRY RcvdPacketQueue;\r
83cbd279 73 UINTN RcvdPacketQueueSize;\r
74\r
75 EFI_MANAGED_NETWORK_CONFIG_DATA ConfigData;\r
76\r
77 UINT8 ReceiveFilter;\r
78} MNP_INSTANCE_DATA;\r
79\r
80typedef struct _MNP_GROUP_ADDRESS {\r
e48e37fc 81 LIST_ENTRY AddrEntry;\r
83cbd279 82 EFI_MAC_ADDRESS Address;\r
83 INTN RefCnt;\r
84} MNP_GROUP_ADDRESS;\r
85\r
86typedef struct _MNP_GROUP_CONTROL_BLOCK {\r
e48e37fc 87 LIST_ENTRY CtrlBlkEntry;\r
83cbd279 88 MNP_GROUP_ADDRESS *GroupAddress;\r
89} MNP_GROUP_CONTROL_BLOCK;\r
90\r
91typedef struct _MNP_RXDATA_WRAP {\r
e48e37fc 92 LIST_ENTRY WrapEntry;\r
83cbd279 93 MNP_INSTANCE_DATA *Instance;\r
94 EFI_MANAGED_NETWORK_RECEIVE_DATA RxData;\r
95 NET_BUF *Nbuf;\r
96 UINT64 TimeoutTick;\r
97} MNP_RXDATA_WRAP;\r
98\r
99EFI_STATUS\r
100MnpInitializeServiceData (\r
101 IN MNP_SERVICE_DATA *MnpServiceData,\r
102 IN EFI_HANDLE ImageHandle,\r
103 IN EFI_HANDLE ControllerHandle\r
104 );\r
105\r
106VOID\r
107MnpFlushServiceData (\r
108 MNP_SERVICE_DATA *MnpServiceData\r
109 );\r
110\r
111VOID\r
112MnpInitializeInstanceData (\r
113 IN MNP_SERVICE_DATA *MnpServiceData,\r
114 IN MNP_INSTANCE_DATA *Instance\r
115 );\r
116\r
117EFI_STATUS\r
118MnpTokenExist (\r
119 IN NET_MAP *Map,\r
120 IN NET_MAP_ITEM *Item,\r
121 IN VOID *Arg\r
122 );\r
123\r
124EFI_STATUS\r
125MnpCancelTokens (\r
126 IN NET_MAP *Map,\r
127 IN NET_MAP_ITEM *Item,\r
128 IN VOID *Arg\r
129 );\r
130\r
131VOID\r
132MnpFlushRcvdDataQueue (\r
133 IN MNP_INSTANCE_DATA *Instance\r
134 );\r
135\r
136EFI_STATUS\r
137MnpConfigureInstance (\r
138 IN MNP_INSTANCE_DATA *Instance,\r
139 IN EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData OPTIONAL\r
140 );\r
141\r
142EFI_STATUS\r
143MnpGroupOp (\r
144 IN MNP_INSTANCE_DATA *Instance,\r
145 IN BOOLEAN JoinFlag,\r
146 IN EFI_MAC_ADDRESS *MacAddr OPTIONAL,\r
147 IN MNP_GROUP_CONTROL_BLOCK *CtrlBlk OPTIONAL\r
148 );\r
149\r
150BOOLEAN\r
151MnpIsValidTxToken (\r
152 IN MNP_INSTANCE_DATA *Instance,\r
153 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token\r
154 );\r
155\r
156VOID\r
157MnpBuildTxPacket (\r
158 IN MNP_SERVICE_DATA *MnpServiceData,\r
159 IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData,\r
160 OUT UINT8 **PktBuf,\r
161 OUT UINT32 *PktLen\r
162 );\r
163\r
164EFI_STATUS\r
165MnpSyncSendPacket (\r
166 IN MNP_SERVICE_DATA *MnpServiceData,\r
167 IN UINT8 *Packet,\r
168 IN UINT32 Length,\r
169 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token\r
170 );\r
171\r
172EFI_STATUS\r
173MnpInstanceDeliverPacket (\r
174 IN MNP_INSTANCE_DATA *Instance\r
175 );\r
176\r
177VOID\r
178EFIAPI\r
179MnpRecycleRxData (\r
180 IN EFI_EVENT Event,\r
181 IN VOID *Context\r
182 );\r
183\r
184EFI_STATUS\r
185MnpReceivePacket (\r
186 IN MNP_SERVICE_DATA *MnpServiceData\r
187 );\r
188\r
189NET_BUF *\r
190MnpAllocNbuf (\r
191 IN MNP_SERVICE_DATA *MnpServiceData\r
192 );\r
193\r
194VOID\r
195MnpFreeNbuf (\r
196 IN MNP_SERVICE_DATA *MnpServiceData,\r
197 IN NET_BUF *Nbuf\r
198 );\r
199\r
200VOID\r
201EFIAPI\r
202MnpCheckPacketTimeout (\r
203 IN EFI_EVENT Event,\r
204 IN VOID *Context\r
205 );\r
206\r
207VOID\r
208EFIAPI\r
209MnpSystemPoll (\r
210 IN EFI_EVENT Event,\r
211 IN VOID *Context\r
212 );\r
213\r
214EFI_STATUS\r
215EFIAPI\r
216MnpGetModeData (\r
217 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
218 OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,\r
219 OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL\r
220 );\r
221\r
222EFI_STATUS\r
223EFIAPI\r
224MnpConfigure (\r
225 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
226 IN EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL\r
227 );\r
228\r
229EFI_STATUS\r
230EFIAPI\r
231MnpMcastIpToMac (\r
232 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
233 IN BOOLEAN Ipv6Flag,\r
234 IN EFI_IP_ADDRESS *IpAddress,\r
235 OUT EFI_MAC_ADDRESS *MacAddress\r
236 );\r
237\r
238EFI_STATUS\r
239EFIAPI\r
240MnpGroups (\r
241 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
242 IN BOOLEAN JoinFlag,\r
243 IN EFI_MAC_ADDRESS *MacAddress OPTIONAL\r
244 );\r
245\r
246EFI_STATUS\r
247EFIAPI\r
248MnpTransmit (\r
249 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
250 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token\r
251 );\r
252\r
253EFI_STATUS\r
254EFIAPI\r
255MnpCancel (\r
256 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
257 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token OPTIONAL\r
258 );\r
259\r
260EFI_STATUS\r
261EFIAPI\r
262MnpReceive (\r
263 IN EFI_MANAGED_NETWORK_PROTOCOL *This,\r
264 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token\r
265 );\r
266\r
267EFI_STATUS\r
268EFIAPI\r
269MnpPoll (\r
270 IN EFI_MANAGED_NETWORK_PROTOCOL *This\r
271 );\r
272\r
273#endif\r