]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/Network/MnpDxe/MnpImpl.h
sync comments, fix function header, rename variable name to follow coding style.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / MnpDxe / MnpImpl.h
1 /** @file
2
3 Copyright (c) 2005 - 2008, 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 IN MNP_SERVICE_DATA *MnpServiceData,
109 IN EFI_HANDLE ImageHandle
110 );
111
112 VOID
113 MnpInitializeInstanceData (
114 IN MNP_SERVICE_DATA *MnpServiceData,
115 IN MNP_INSTANCE_DATA *Instance
116 );
117
118 EFI_STATUS
119 MnpTokenExist (
120 IN NET_MAP *Map,
121 IN NET_MAP_ITEM *Item,
122 IN VOID *Arg
123 );
124
125 EFI_STATUS
126 MnpCancelTokens (
127 IN NET_MAP *Map,
128 IN NET_MAP_ITEM *Item,
129 IN VOID *Arg
130 );
131
132 VOID
133 MnpFlushRcvdDataQueue (
134 IN MNP_INSTANCE_DATA *Instance
135 );
136
137 EFI_STATUS
138 MnpConfigureInstance (
139 IN MNP_INSTANCE_DATA *Instance,
140 IN EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData OPTIONAL
141 );
142
143 EFI_STATUS
144 MnpGroupOp (
145 IN MNP_INSTANCE_DATA *Instance,
146 IN BOOLEAN JoinFlag,
147 IN EFI_MAC_ADDRESS *MacAddr OPTIONAL,
148 IN MNP_GROUP_CONTROL_BLOCK *CtrlBlk OPTIONAL
149 );
150
151 BOOLEAN
152 MnpIsValidTxToken (
153 IN MNP_INSTANCE_DATA *Instance,
154 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token
155 );
156
157 VOID
158 MnpBuildTxPacket (
159 IN MNP_SERVICE_DATA *MnpServiceData,
160 IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData,
161 OUT UINT8 **PktBuf,
162 OUT UINT32 *PktLen
163 );
164
165 EFI_STATUS
166 MnpSyncSendPacket (
167 IN MNP_SERVICE_DATA *MnpServiceData,
168 IN UINT8 *Packet,
169 IN UINT32 Length,
170 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token
171 );
172
173 EFI_STATUS
174 MnpInstanceDeliverPacket (
175 IN MNP_INSTANCE_DATA *Instance
176 );
177
178 VOID
179 EFIAPI
180 MnpRecycleRxData (
181 IN EFI_EVENT Event,
182 IN VOID *Context
183 );
184
185 EFI_STATUS
186 MnpReceivePacket (
187 IN MNP_SERVICE_DATA *MnpServiceData
188 );
189
190 NET_BUF *
191 MnpAllocNbuf (
192 IN MNP_SERVICE_DATA *MnpServiceData
193 );
194
195 VOID
196 MnpFreeNbuf (
197 IN MNP_SERVICE_DATA *MnpServiceData,
198 IN NET_BUF *Nbuf
199 );
200
201 VOID
202 EFIAPI
203 MnpCheckPacketTimeout (
204 IN EFI_EVENT Event,
205 IN VOID *Context
206 );
207
208 VOID
209 EFIAPI
210 MnpSystemPoll (
211 IN EFI_EVENT Event,
212 IN VOID *Context
213 );
214
215 EFI_STATUS
216 EFIAPI
217 MnpGetModeData (
218 IN EFI_MANAGED_NETWORK_PROTOCOL *This,
219 OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,
220 OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL
221 );
222
223 EFI_STATUS
224 EFIAPI
225 MnpConfigure (
226 IN EFI_MANAGED_NETWORK_PROTOCOL *This,
227 IN EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL
228 );
229
230 EFI_STATUS
231 EFIAPI
232 MnpMcastIpToMac (
233 IN EFI_MANAGED_NETWORK_PROTOCOL *This,
234 IN BOOLEAN Ipv6Flag,
235 IN EFI_IP_ADDRESS *IpAddress,
236 OUT EFI_MAC_ADDRESS *MacAddress
237 );
238
239 EFI_STATUS
240 EFIAPI
241 MnpGroups (
242 IN EFI_MANAGED_NETWORK_PROTOCOL *This,
243 IN BOOLEAN JoinFlag,
244 IN EFI_MAC_ADDRESS *MacAddress OPTIONAL
245 );
246
247 EFI_STATUS
248 EFIAPI
249 MnpTransmit (
250 IN EFI_MANAGED_NETWORK_PROTOCOL *This,
251 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token
252 );
253
254 EFI_STATUS
255 EFIAPI
256 MnpCancel (
257 IN EFI_MANAGED_NETWORK_PROTOCOL *This,
258 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token OPTIONAL
259 );
260
261 EFI_STATUS
262 EFIAPI
263 MnpReceive (
264 IN EFI_MANAGED_NETWORK_PROTOCOL *This,
265 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token
266 );
267
268 EFI_STATUS
269 EFIAPI
270 MnpPoll (
271 IN EFI_MANAGED_NETWORK_PROTOCOL *This
272 );
273
274 #endif