]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Network/MnpDxe/MnpImpl.h
1. Sync the latest network stack. Add NetLibCreateIPv4DPathNode () in netlib library.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / MnpDxe / MnpImpl.h
CommitLineData
8a67d61d 1/** @file
2
3Copyright (c) 2005 - 2007, Intel Corporation
4All rights reserved. This program and the accompanying materials
5are licensed and made available under the terms and conditions of the BSD License
6which accompanies this distribution. The full text of the license may be found at
7http://opensource.org/licenses/bsd-license.php
8
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12Module Name:
13
14 MnpImpl.h
15
16Abstract:
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 (2 * TICKS_PER_MS) // 2 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
54typedef 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
81typedef struct _MNP_GROUP_ADDRESS {
82 NET_LIST_ENTRY AddrEntry;
83 EFI_MAC_ADDRESS Address;
84 INTN RefCnt;
85} MNP_GROUP_ADDRESS;
86
87typedef struct _MNP_GROUP_CONTROL_BLOCK {
88 NET_LIST_ENTRY CtrlBlkEntry;
89 MNP_GROUP_ADDRESS *GroupAddress;
90} MNP_GROUP_CONTROL_BLOCK;
91
92typedef 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
100EFI_STATUS
101MnpInitializeServiceData (
102 IN MNP_SERVICE_DATA *MnpServiceData,
103 IN EFI_HANDLE ImageHandle,
104 IN EFI_HANDLE ControllerHandle
105 );
106
107VOID
108MnpFlushServiceData (
109 MNP_SERVICE_DATA *MnpServiceData
110 );
111
112VOID
113MnpInitializeInstanceData (
114 IN MNP_SERVICE_DATA *MnpServiceData,
115 IN MNP_INSTANCE_DATA *Instance
116 );
117
118EFI_STATUS
119MnpTokenExist (
120 IN NET_MAP *Map,
121 IN NET_MAP_ITEM *Item,
122 IN VOID *Arg
123 );
124
125EFI_STATUS
126MnpCancelTokens (
127 IN NET_MAP *Map,
128 IN NET_MAP_ITEM *Item,
129 IN VOID *Arg
130 );
131
132VOID
133MnpFlushRcvdDataQueue (
134 IN MNP_INSTANCE_DATA *Instance
135 );
136
137EFI_STATUS
138MnpConfigureInstance (
139 IN MNP_INSTANCE_DATA *Instance,
140 IN EFI_MANAGED_NETWORK_CONFIG_DATA *ConfigData OPTIONAL
141 );
142
143EFI_STATUS
144MnpGroupOp (
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
151BOOLEAN
152MnpIsValidTxToken (
153 IN MNP_INSTANCE_DATA *Instance,
154 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token
155 );
156
157VOID
158MnpBuildTxPacket (
159 IN MNP_SERVICE_DATA *MnpServiceData,
160 IN EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData,
161 OUT UINT8 **PktBuf,
162 OUT UINT32 *PktLen
163 );
164
165EFI_STATUS
166MnpSyncSendPacket (
167 IN MNP_SERVICE_DATA *MnpServiceData,
168 IN UINT8 *Packet,
169 IN UINT32 Length,
170 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token
171 );
172
173EFI_STATUS
174MnpInstanceDeliverPacket (
175 IN MNP_INSTANCE_DATA *Instance
176 );
177
178VOID
179EFIAPI
180MnpRecycleRxData (
181 IN EFI_EVENT Event,
182 IN VOID *Context
183 );
184
185EFI_STATUS
186MnpReceivePacket (
187 IN MNP_SERVICE_DATA *MnpServiceData
188 );
189
190NET_BUF *
191MnpAllocNbuf (
192 IN MNP_SERVICE_DATA *MnpServiceData
193 );
194
195VOID
196MnpFreeNbuf (
197 IN MNP_SERVICE_DATA *MnpServiceData,
198 IN NET_BUF *Nbuf
199 );
200
201VOID
202EFIAPI
203MnpCheckPacketTimeout (
204 IN EFI_EVENT Event,
205 IN VOID *Context
206 );
207
208VOID
209EFIAPI
210MnpSystemPoll (
211 IN EFI_EVENT Event,
212 IN VOID *Context
213 );
214
215EFI_STATUS
216EFIAPI
217MnpGetModeData (
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
223EFI_STATUS
224EFIAPI
225MnpConfigure (
226 IN EFI_MANAGED_NETWORK_PROTOCOL *This,
227 IN EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL
228 );
229
230EFI_STATUS
231EFIAPI
232MnpMcastIpToMac (
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
239EFI_STATUS
240EFIAPI
241MnpGroups (
242 IN EFI_MANAGED_NETWORK_PROTOCOL *This,
243 IN BOOLEAN JoinFlag,
244 IN EFI_MAC_ADDRESS *MacAddress OPTIONAL
245 );
246
247EFI_STATUS
248EFIAPI
249MnpTransmit (
250 IN EFI_MANAGED_NETWORK_PROTOCOL *This,
251 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token
252 );
253
254EFI_STATUS
255EFIAPI
256MnpCancel (
257 IN EFI_MANAGED_NETWORK_PROTOCOL *This,
258 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token OPTIONAL
259 );
260
261EFI_STATUS
262EFIAPI
263MnpReceive (
264 IN EFI_MANAGED_NETWORK_PROTOCOL *This,
265 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token
266 );
267
268EFI_STATUS
269EFIAPI
270MnpPoll (
271 IN EFI_MANAGED_NETWORK_PROTOCOL *This
272 );
273
274#endif