]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/Network/MnpDxe/MnpImpl.h
1. Add DPC protocol and DpcLib library in MdeModulePkg.
[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 #include "MnpDebug.h"
26
27 #define NET_ETHER_FCS_SIZE 4
28
29 #define MNP_SYS_POLL_INTERVAL (50 * TICKS_PER_MS) // 50 milliseconds
30 #define MNP_TIMEOUT_CHECK_INTERVAL (50 * TICKS_PER_MS) // 50 milliseconds
31 #define MNP_TX_TIMEOUT_TIME (500 * TICKS_PER_MS) // 500 milliseconds
32 #define MNP_INIT_NET_BUFFER_NUM 512
33 #define MNP_NET_BUFFER_INCREASEMENT 64
34 #define MNP_MAX_NET_BUFFER_NUM 65536
35
36 #define MNP_MAX_RCVD_PACKET_QUE_SIZE 256
37
38 #define MNP_RECEIVE_UNICAST 0x01
39 #define MNP_RECEIVE_BROADCAST 0x02
40
41 #define UNICAST_PACKET MNP_RECEIVE_UNICAST
42 #define BROADCAST_PACKET MNP_RECEIVE_BROADCAST
43
44 #define MNP_INSTANCE_DATA_SIGNATURE EFI_SIGNATURE_32 ('M', 'n', 'p', 'I')
45
46 #define MNP_INSTANCE_DATA_FROM_THIS(a) \
47 CR ( \
48 (a), \
49 MNP_INSTANCE_DATA, \
50 ManagedNetwork, \
51 MNP_INSTANCE_DATA_SIGNATURE \
52 )
53
54 typedef struct _MNP_INSTANCE_DATA {
55 UINT32 Signature;
56
57 MNP_SERVICE_DATA *MnpServiceData;
58
59 EFI_HANDLE Handle;
60
61 NET_LIST_ENTRY InstEntry;
62
63 EFI_MANAGED_NETWORK_PROTOCOL ManagedNetwork;
64
65 BOOLEAN Configured;
66 BOOLEAN Destroyed;
67
68 NET_LIST_ENTRY GroupCtrlBlkList;
69
70 NET_MAP RxTokenMap;
71
72 NET_LIST_ENTRY RxDeliveredPacketQueue;
73 NET_LIST_ENTRY RcvdPacketQueue;
74 UINTN RcvdPacketQueueSize;
75
76 EFI_MANAGED_NETWORK_CONFIG_DATA ConfigData;
77
78 UINT8 ReceiveFilter;
79 } MNP_INSTANCE_DATA;
80
81 typedef struct _MNP_GROUP_ADDRESS {
82 NET_LIST_ENTRY AddrEntry;
83 EFI_MAC_ADDRESS Address;
84 INTN RefCnt;
85 } MNP_GROUP_ADDRESS;
86
87 typedef struct _MNP_GROUP_CONTROL_BLOCK {
88 NET_LIST_ENTRY CtrlBlkEntry;
89 MNP_GROUP_ADDRESS *GroupAddress;
90 } MNP_GROUP_CONTROL_BLOCK;
91
92 typedef struct _MNP_RXDATA_WRAP {
93 NET_LIST_ENTRY WrapEntry;
94 MNP_INSTANCE_DATA *Instance;
95 EFI_MANAGED_NETWORK_RECEIVE_DATA RxData;
96 NET_BUF *Nbuf;
97 UINT64 TimeoutTick;
98 } MNP_RXDATA_WRAP;
99
100 EFI_STATUS
101 MnpInitializeServiceData (
102 IN MNP_SERVICE_DATA *MnpServiceData,
103 IN EFI_HANDLE ImageHandle,
104 IN EFI_HANDLE ControllerHandle
105 );
106
107 VOID
108 MnpFlushServiceData (
109 MNP_SERVICE_DATA *MnpServiceData
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