[E1000] Basic initialization of the card
[reactos.git] / drivers / network / dd / e1000 / nic.h
1 /*
2 * PROJECT: ReactOS Intel PRO/1000 Driver
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Intel PRO/1000 driver definitions
5 * COPYRIGHT: Copyright 2013 Cameron Gutman (cameron.gutman@reactos.org)
6 * Copyright 2018 Mark Jansen (mark.jansen@reactos.org)
7 */
8
9 #ifndef _E1000_PCH_
10 #define _E1000_PCH_
11
12 #include <ndis.h>
13
14 #include "e1000hw.h"
15
16 #define E1000_TAG '001e'
17
18 #define MAXIMUM_FRAME_SIZE 1522
19 #define RECEIVE_BUFFER_SIZE 2048
20
21 #define DRIVER_VERSION 1
22
23
24 #define DEFAULT_INTERRUPT_MASK (E1000_IMS_LSC)
25
26 typedef struct _E1000_ADAPTER
27 {
28 NDIS_SPIN_LOCK Lock;
29 NDIS_HANDLE AdapterHandle;
30 USHORT VendorID;
31 USHORT DeviceID;
32 USHORT SubsystemID;
33 USHORT SubsystemVendorID;
34
35 UCHAR PermanentMacAddress[IEEE_802_ADDR_LENGTH];
36 struct {
37 UCHAR MacAddress[IEEE_802_ADDR_LENGTH];
38 } MulticastList[MAXIMUM_MULTICAST_ADDRESSES];
39
40 ULONG LinkSpeedMbps;
41 ULONG MediaState;
42 ULONG PacketFilter;
43
44 /* Io Port */
45 ULONG IoPortAddress;
46 ULONG IoPortLength;
47 volatile PUCHAR IoPort;
48
49 /* NIC Memory */
50 NDIS_PHYSICAL_ADDRESS IoAddress;
51 ULONG IoLength;
52 volatile PUCHAR IoBase;
53
54 /* Interrupt */
55 ULONG InterruptVector;
56 ULONG InterruptLevel;
57 BOOLEAN InterruptShared;
58 ULONG InterruptFlags;
59
60 NDIS_MINIPORT_INTERRUPT Interrupt;
61 BOOLEAN InterruptRegistered;
62
63 ULONG InterruptMask;
64 ULONG InterruptPending;
65
66 } E1000_ADAPTER, *PE1000_ADAPTER;
67
68
69 BOOLEAN
70 NTAPI
71 NICRecognizeHardware(
72 IN PE1000_ADAPTER Adapter);
73
74 NDIS_STATUS
75 NTAPI
76 NICInitializeAdapterResources(
77 IN PE1000_ADAPTER Adapter,
78 IN PNDIS_RESOURCE_LIST ResourceList);
79
80 NDIS_STATUS
81 NTAPI
82 NICAllocateIoResources(
83 IN PE1000_ADAPTER Adapter);
84
85 NDIS_STATUS
86 NTAPI
87 NICRegisterInterrupts(
88 IN PE1000_ADAPTER Adapter);
89
90 NDIS_STATUS
91 NTAPI
92 NICUnregisterInterrupts(
93 IN PE1000_ADAPTER Adapter);
94
95 NDIS_STATUS
96 NTAPI
97 NICReleaseIoResources(
98 IN PE1000_ADAPTER Adapter);
99
100 NDIS_STATUS
101 NTAPI
102 NICPowerOn(
103 IN PE1000_ADAPTER Adapter);
104
105 NDIS_STATUS
106 NTAPI
107 NICSoftReset(
108 IN PE1000_ADAPTER Adapter);
109
110 NDIS_STATUS
111 NTAPI
112 NICEnableTxRx(
113 IN PE1000_ADAPTER Adapter);
114
115 NDIS_STATUS
116 NTAPI
117 NICDisableTxRx(
118 IN PE1000_ADAPTER Adapter);
119
120 NDIS_STATUS
121 NTAPI
122 NICGetPermanentMacAddress(
123 IN PE1000_ADAPTER Adapter,
124 OUT PUCHAR MacAddress);
125
126 NDIS_STATUS
127 NTAPI
128 NICUpdateMulticastList(
129 IN PE1000_ADAPTER Adapter);
130
131 NDIS_STATUS
132 NTAPI
133 NICApplyPacketFilter(
134 IN PE1000_ADAPTER Adapter);
135
136 NDIS_STATUS
137 NTAPI
138 NICApplyInterruptMask(
139 IN PE1000_ADAPTER Adapter);
140
141 NDIS_STATUS
142 NTAPI
143 NICDisableInterrupts(
144 IN PE1000_ADAPTER Adapter);
145
146 USHORT
147 NTAPI
148 NICInterruptRecognized(
149 IN PE1000_ADAPTER Adapter,
150 OUT PBOOLEAN InterruptRecognized);
151
152 VOID
153 NTAPI
154 NICAcknowledgeInterrupts(
155 IN PE1000_ADAPTER Adapter);
156
157 VOID
158 NTAPI
159 NICUpdateLinkStatus(
160 IN PE1000_ADAPTER Adapter);
161
162 NDIS_STATUS
163 NTAPI
164 NICTransmitPacket(
165 IN PE1000_ADAPTER Adapter,
166 IN UCHAR TxDesc,
167 IN ULONG PhysicalAddress,
168 IN ULONG Length);
169
170 NDIS_STATUS
171 NTAPI
172 MiniportSetInformation(
173 IN NDIS_HANDLE MiniportAdapterContext,
174 IN NDIS_OID Oid,
175 IN PVOID InformationBuffer,
176 IN ULONG InformationBufferLength,
177 OUT PULONG BytesRead,
178 OUT PULONG BytesNeeded);
179
180 NDIS_STATUS
181 NTAPI
182 MiniportQueryInformation(
183 IN NDIS_HANDLE MiniportAdapterContext,
184 IN NDIS_OID Oid,
185 IN PVOID InformationBuffer,
186 IN ULONG InformationBufferLength,
187 OUT PULONG BytesWritten,
188 OUT PULONG BytesNeeded);
189
190 VOID
191 NTAPI
192 MiniportISR(
193 OUT PBOOLEAN InterruptRecognized,
194 OUT PBOOLEAN QueueMiniportHandleInterrupt,
195 IN NDIS_HANDLE MiniportAdapterContext);
196
197 VOID
198 NTAPI
199 MiniportHandleInterrupt(
200 IN NDIS_HANDLE MiniportAdapterContext);
201
202 #endif /* _E1000_PCH_ */