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