ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ne2000.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.