Synchronize with trunk.
[reactos.git] / drivers / network / dd / rtl8139 / nic.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Realtek 8139 driver
4 * FILE: rtl8139.h
5 * PURPOSE: RTL8139 driver definitions
6 */
7
8 #include <ndis.h>
9 #include <rtlhw.h>
10
11 #define ADAPTER_TAG 'Altr'
12 #define RESOURCE_LIST_TAG 'Rltr'
13
14 #define MAX_RESET_ATTEMPTS 25
15 #define RECEIVE_BUFFER_SIZE (32768)
16 // The full receive window requires 16 bytes of padding
17 // plus 2048 for receive overflows (because of WRAP)
18 #define FULL_RECEIVE_BUFFER_SIZE (32768 + 16 + 2048)
19 #define RECV_CRC_LENGTH 4
20
21 #define MINIMUM_FRAME_SIZE 60
22 #define MAXIMUM_FRAME_SIZE 1514
23
24 #define DRIVER_VERSION 1
25
26 // 1/2 packet early RX, 512 byte FIFO threshold, 32K RX buffer, unlimited DMA bursts, WRAP
27 #define RC_VAL (0x800B780)
28
29 // 2048 byte DMA bursts
30 #define TC_VAL (0x700)
31
32 typedef struct _RTL_ADAPTER {
33 NDIS_HANDLE MiniportAdapterHandle;
34 NDIS_SPIN_LOCK Lock;
35
36 ULONG IoRangeStart;
37 ULONG IoRangeLength;
38
39 ULONG InterruptVector;
40 ULONG InterruptLevel;
41 BOOLEAN InterruptShared;
42 ULONG InterruptFlags;
43
44 PUCHAR IoBase;
45 NDIS_MINIPORT_INTERRUPT Interrupt;
46 BOOLEAN InterruptRegistered;
47
48 UCHAR PermanentMacAddress[IEEE_802_ADDR_LENGTH];
49 UCHAR CurrentMacAddress[IEEE_802_ADDR_LENGTH];
50 struct {
51 UCHAR MacAddress[IEEE_802_ADDR_LENGTH];
52 } MulticastList[MAXIMUM_MULTICAST_ADDRESSES];
53
54 ULONG ReceiveBufferLength;
55 PUCHAR ReceiveBuffer;
56 NDIS_PHYSICAL_ADDRESS ReceiveBufferPa;
57 USHORT ReceiveOffset;
58
59 ULONG LinkSpeedMbps;
60 ULONG MediaState;
61 BOOLEAN LinkChange;
62
63 ULONG PacketFilter;
64
65 USHORT InterruptMask;
66 USHORT InterruptPending;
67
68 UCHAR DirtyTxDesc;
69 UCHAR CurrentTxDesc;
70 BOOLEAN TxFull;
71 PUCHAR RuntTxBuffers;
72 NDIS_PHYSICAL_ADDRESS RuntTxBuffersPa;
73
74 ULONG ReceiveOk;
75 ULONG TransmitOk;
76 ULONG ReceiveError;
77 ULONG TransmitError;
78 ULONG ReceiveNoBufferSpace;
79 ULONG ReceiveCrcError;
80 ULONG ReceiveAlignmentError;
81 ULONG TransmitOneCollision;
82 ULONG TransmitMoreCollisions;
83
84 } RTL_ADAPTER, *PRTL_ADAPTER;
85
86 NDIS_STATUS
87 NTAPI
88 NICPowerOn (
89 IN PRTL_ADAPTER Adapter
90 );
91
92 NDIS_STATUS
93 NTAPI
94 NICSoftReset (
95 IN PRTL_ADAPTER Adapter
96 );
97
98 NDIS_STATUS
99 NTAPI
100 NICRegisterReceiveBuffer (
101 IN PRTL_ADAPTER Adapter
102 );
103
104 NDIS_STATUS
105 NTAPI
106 NICRemoveReceiveBuffer (
107 IN PRTL_ADAPTER Adapter
108 );
109
110 NDIS_STATUS
111 NTAPI
112 NICEnableTxRx (
113 IN PRTL_ADAPTER Adapter
114 );
115
116 NDIS_STATUS
117 NTAPI
118 NICGetPermanentMacAddress (
119 IN PRTL_ADAPTER Adapter,
120 OUT PUCHAR MacAddress
121 );
122
123 NDIS_STATUS
124 NTAPI
125 NICApplyPacketFilter (
126 IN PRTL_ADAPTER Adapter
127 );
128
129 NDIS_STATUS
130 NTAPI
131 NICApplyInterruptMask (
132 IN PRTL_ADAPTER Adapter
133 );
134
135 NDIS_STATUS
136 NTAPI
137 NICDisableInterrupts (
138 IN PRTL_ADAPTER Adapter
139 );
140
141 USHORT
142 NTAPI
143 NICInterruptRecognized (
144 IN PRTL_ADAPTER Adapter,
145 OUT PBOOLEAN InterruptRecognized
146 );
147
148 VOID
149 NTAPI
150 NICAcknowledgeInterrupts (
151 IN PRTL_ADAPTER Adapter
152 );
153
154 VOID
155 NTAPI
156 NICUpdateLinkStatus (
157 IN PRTL_ADAPTER Adapter
158 );
159
160 NDIS_STATUS
161 NTAPI
162 NICTransmitPacket (
163 IN PRTL_ADAPTER Adapter,
164 IN UCHAR TxDesc,
165 IN ULONG PhysicalAddress,
166 IN ULONG Length
167 );
168
169 NDIS_STATUS
170 NTAPI
171 MiniportSetInformation (
172 IN NDIS_HANDLE MiniportAdapterContext,
173 IN NDIS_OID Oid,
174 IN PVOID InformationBuffer,
175 IN ULONG InformationBufferLength,
176 OUT PULONG BytesRead,
177 OUT PULONG BytesNeeded
178 );
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
191 VOID
192 NTAPI
193 MiniportISR (
194 OUT PBOOLEAN InterruptRecognized,
195 OUT PBOOLEAN QueueMiniportHandleInterrupt,
196 IN NDIS_HANDLE MiniportAdapterContext
197 );
198
199 VOID
200 NTAPI
201 MiniportHandleInterrupt (
202 IN NDIS_HANDLE MiniportAdapterContext
203 );
204
205 /* EOF */