Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenne2000.h
Go to the documentation of this file.
00001 /* 00002 * COPYRIGHT: See COPYING in the top level directory 00003 * PROJECT: ReactOS Novell Eagle 2000 driver 00004 * FILE: include/ne2000.h 00005 * PURPOSE: NE2000 driver definitions 00006 */ 00007 00008 #define NDIS_MINIPORT_DRIVER 1 00009 #define NDIS_LEGACY_MINIPORT 1 00010 #define NDIS51_MINIPORT 1 00011 #include <ndis.h> 00012 #include <8390.h> 00013 #include <debug.h> 00014 00015 /* Define NOCARD to test NDIS without a card */ 00016 //#define NOCARD 00017 00018 /* NE2000 sepcific constants */ 00019 #define NIC_DATA 0x10 /* Data register */ 00020 #define NIC_RESET 0x1F /* Reset register */ 00021 00022 00023 /* Global constants */ 00024 00025 #define DRIVER_NDIS_MAJOR_VERSION 3 00026 #define DRIVER_NDIS_MINOR_VERSION 0 00027 00028 #define DRIVER_DEFAULT_IO_BASE_ADDRESS 0x280 /* bochs default */ 00029 #define DRIVER_DEFAULT_INTERRUPT_NUMBER 9 /* bochs default */ 00030 #define DRIVER_DEFAULT_INTERRUPT_SHARED FALSE 00031 #define DRIVER_DEFAULT_INTERRUPT_MODE NdisInterruptLatched 00032 00033 #define DRIVER_MAX_MULTICAST_LIST_SIZE 8 00034 00035 #define DRIVER_VENDOR_DESCRIPTION "Novell Eagle 2000 Adapter." 00036 #define DRIVER_VENDOR_DRIVER_VERSION 0x0100 /* 1.0 */ 00037 00038 #define DRIVER_FRAME_SIZE 1514 /* Size of an ethernet frame */ 00039 #define DRIVER_HEADER_SIZE 14 /* Size of an ethernet header */ 00040 #define DRIVER_LENGTH_OF_ADDRESS 6 /* Size of an ethernet address */ 00041 00042 /* Maximum lookahead buffer size */ 00043 #define DRIVER_MAXIMUM_LOOKAHEAD (252 - DRIVER_HEADER_SIZE) 00044 00045 /* Size of a block in a buffer ring */ 00046 #define DRIVER_BLOCK_SIZE 256 00047 00048 00049 /* Default number of transmit buffers */ 00050 #define DRIVER_DEFAULT_TX_BUFFER_COUNT 12 00051 #define BUFFERS_PER_TX_BUF 1 00052 00053 /* Interrupt Mask Register value */ 00054 #define DRIVER_INTERRUPT_MASK IMR_ALLE - IMR_RDCE 00055 00056 /* Maximum number of interrupts handled per call to MiniportHandleInterrupt */ 00057 #define INTERRUPT_LIMIT 10 00058 00059 /* Global structures */ 00060 00061 typedef struct _MINIPORT_RESERVED 00062 { 00063 PNDIS_PACKET Next; 00064 } MINIPORT_RESERVED, *PMINIPORT_RESERVED; 00065 00066 #define RESERVED(Packet) ((PMINIPORT_RESERVED)((Packet)->MiniportReserved)) 00067 00068 typedef UCHAR DRIVER_HARDWARE_ADDRESS[DRIVER_LENGTH_OF_ADDRESS]; 00069 00070 /* Information about an adapter */ 00071 typedef struct _NIC_ADAPTER 00072 { 00073 /* Entry on global adapter list */ 00074 LIST_ENTRY ListEntry; 00075 /* Adapter handle */ 00076 NDIS_HANDLE MiniportAdapterHandle; 00077 /* NDIS interrupt object */ 00078 NDIS_MINIPORT_INTERRUPT Interrupt; 00079 00080 /* I/O base address and interrupt number of adapter */ 00081 ULONG_PTR IoBaseAddress; 00082 ULONG InterruptLevel; 00083 ULONG InterruptVector; 00084 BOOLEAN InterruptShared; 00085 KINTERRUPT_MODE InterruptMode; 00086 00087 /* Mapped address of the I/O base port */ 00088 PUCHAR IOBase; 00089 00090 /* TRUE if the NIC can transfer in word mode */ 00091 BOOLEAN WordMode; 00092 00093 /* Base address and size of the onboard memory window */ 00094 PUCHAR RamBase; 00095 UINT RamSize; 00096 00097 /* Station Address PROM (SAPROM) */ 00098 UCHAR SAPROM[16]; 00099 00100 /* Onboard ethernet address from the manufacturer */ 00101 DRIVER_HARDWARE_ADDRESS PermanentAddress; 00102 00103 /* Ethernet address currently in use */ 00104 DRIVER_HARDWARE_ADDRESS StationAddress; 00105 00106 /* Maximum number of multicast addresses this adapter supports */ 00107 ULONG MaxMulticastListSize; 00108 00109 /* List of multicast addresses in use */ 00110 DRIVER_HARDWARE_ADDRESS Addresses[DRIVER_MAX_MULTICAST_LIST_SIZE]; 00111 00112 /* Current multicast address mask */ 00113 UCHAR MulticastAddressMask[8]; 00114 00115 /* Masked interrupts (IMR value) */ 00116 ULONG InterruptMask; 00117 00118 /* Interrupts that have occurred */ 00119 UCHAR InterruptStatus; 00120 00121 /* Current packet filter */ 00122 ULONG PacketFilter; 00123 00124 /* Lookahead buffer */ 00125 UINT LookaheadSize; 00126 UCHAR Lookahead[DRIVER_MAXIMUM_LOOKAHEAD + DRIVER_HEADER_SIZE]; 00127 00128 /* Receive buffer ring */ 00129 UINT PageStart; 00130 UINT PageStop; 00131 UINT CurrentPage; 00132 UINT NextPacket; 00133 00134 /* TRUE if there was a buffer overflow */ 00135 BOOLEAN BufferOverflow; 00136 00137 /* TRUE if an error occurred during reception of a packet */ 00138 BOOLEAN ReceiveError; 00139 00140 /* TRUE if an error occurred during transmission of a packet */ 00141 BOOLEAN TransmitError; 00142 00143 /* TRUE if a transmit interrupt is pending */ 00144 BOOLEAN TransmitPending; 00145 00146 /* Received packet header */ 00147 PACKET_HEADER PacketHeader; 00148 00149 /* Offset in onboard RAM of received packet */ 00150 ULONG PacketOffset; 00151 00152 /* TRUE if receive indications are done and should be completed */ 00153 BOOLEAN DoneIndicating; 00154 00155 /* Transmit buffers */ 00156 UINT TXStart; /* Start block of transmit buffer ring */ 00157 UINT TXCount; /* Number of blocks in transmit buffer ring */ 00158 UINT TXFree; /* Number of free transmit buffers */ 00159 UINT TXNext; /* Next buffer to use */ 00160 /* Length of packet. 0 means buffer is unused */ 00161 UINT TXSize[DRIVER_DEFAULT_TX_BUFFER_COUNT]; 00162 INT TXCurrent; /* Current buffer beeing transmitted. -1 means none */ 00163 00164 /* Head of transmit queue */ 00165 PNDIS_PACKET TXQueueHead; 00166 /* Tail of transmit queue */ 00167 PNDIS_PACKET TXQueueTail; 00168 00169 /* Statistics */ 00170 ULONG FrameAlignmentErrors; 00171 ULONG CrcErrors; 00172 ULONG MissedPackets; 00173 00174 /* Flags used for driver cleanup */ 00175 BOOLEAN IOPortRangeRegistered; 00176 BOOLEAN InterruptRegistered; 00177 BOOLEAN ShutdownHandlerRegistered; 00178 } NIC_ADAPTER, *PNIC_ADAPTER; 00179 00180 /* Global driver information */ 00181 typedef struct _DRIVER_INFORMATION 00182 { 00183 NDIS_HANDLE NdisWrapperHandle; /* Returned from NdisInitializeWrapper */ 00184 NDIS_HANDLE NdisMacHandle; /* Returned from NdisRegisterMac */ 00185 LIST_ENTRY AdapterListHead; /* Adapters this driver control */ 00186 } DRIVER_INFORMATION, *PDRIVER_INFORMATION; 00187 00188 00189 00190 /* Global variable */ 00191 00192 extern DRIVER_INFORMATION DriverInfo; 00193 extern NDIS_PHYSICAL_ADDRESS HighestAcceptableMax; 00194 00195 00196 00197 /* Prototypes */ 00198 00199 BOOLEAN NICCheck( 00200 PNIC_ADAPTER Adapter); 00201 00202 NDIS_STATUS NICInitialize( 00203 PNIC_ADAPTER Adapter); 00204 00205 NDIS_STATUS NICSetup( 00206 PNIC_ADAPTER Adapter); 00207 00208 NDIS_STATUS NICStart( 00209 PNIC_ADAPTER Adapter); 00210 00211 NDIS_STATUS NICStop( 00212 PNIC_ADAPTER Adapter); 00213 00214 NDIS_STATUS NICReset( 00215 PNIC_ADAPTER Adapter); 00216 00217 VOID NICUpdateCounters( 00218 PNIC_ADAPTER Adapter); 00219 00220 VOID NICReadDataAlign( 00221 PNIC_ADAPTER Adapter, 00222 PUSHORT Target, 00223 ULONG_PTR Source, 00224 USHORT Length); 00225 00226 VOID NICWriteDataAlign( 00227 PNIC_ADAPTER Adapter, 00228 ULONG_PTR Target, 00229 PUSHORT Source, 00230 USHORT Length); 00231 00232 VOID NICReadData( 00233 PNIC_ADAPTER Adapter, 00234 PUCHAR Target, 00235 ULONG_PTR Source, 00236 USHORT Length); 00237 00238 VOID NICWriteData( 00239 PNIC_ADAPTER Adapter, 00240 ULONG_PTR Target, 00241 PUCHAR Source, 00242 USHORT Length); 00243 00244 VOID NICTransmit( 00245 PNIC_ADAPTER Adapter); 00246 00247 /* EOF */ Generated on Sat May 26 2012 04:26:36 for ReactOS by
1.7.6.1
|