windows-nt/Source/XPSP1/NT/drivers/net/ms/e100bex/mp_def.h
2020-09-26 16:20:57 +08:00

188 lines
6.6 KiB
C

/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
mp_def.h
Abstract:
NIC specific definitions
Revision History:
Who When What
-------- -------- ----------------------------------------------
DChen 11-01-99 created
Notes:
--*/
#ifndef _MP_DEF_H
#define _MP_DEF_H
// memory tag for this driver
#define NIC_TAG ((ULONG)'001E')
#define NIC_DBG_STRING ("**E100**")
// packet and header sizes
#define NIC_MAX_PACKET_SIZE 1514
#define NIC_MIN_PACKET_SIZE 60
#define NIC_HEADER_SIZE 14
// multicast list size
#define NIC_MAX_MCAST_LIST 32
// update the driver version number every time you release a new driver
// The high word is the major version. The low word is the minor version.
#define NIC_VENDOR_DRIVER_VERSION 0x00010006
// NDIS version in use by the NIC driver.
// The high byte is the major version. The low byte is the minor version.
#ifdef NDIS51_MINIPORT
#define NIC_DRIVER_VERSION 0x0501
#else
#define NIC_DRIVER_VERSION 0x0500
#endif
// media type, we use ethernet, change if necessary
#define NIC_MEDIA_TYPE NdisMedium802_3
// interface type, we use PCI
#define NIC_INTERFACE_TYPE NdisInterfacePci
#define NIC_INTERRUPT_MODE NdisInterruptLevelSensitive
// NIC PCI Device and vendor IDs
#define NIC_PCI_DEVICE_ID 0x1229
#define NIC_PCI_VENDOR_ID 0x8086
// buffer size passed in NdisMQueryAdapterResources
// We should only need three adapter resources (IO, interrupt and memory),
// Some devices get extra resources, so have room for 10 resources
#define NIC_RESOURCE_BUF_SIZE (sizeof(NDIS_RESOURCE_LIST) + \
(10*sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR)))
// IO space length
#define NIC_MAP_IOSPACE_LENGTH sizeof(CSR_STRUC)
// PCS config space including the Device Specific part of it/
#define NIC_PCI_E100_HDR_LENGTH 0xe2
// define some types for convenience
// TXCB_STRUC, RFD_STRUC and CSR_STRUC are hardware specific structures
// hardware TCB (Transmit Control Block) structure
typedef TXCB_STRUC HW_TCB;
typedef PTXCB_STRUC PHW_TCB;
// hardware RFD (Receive Frame Descriptor) structure
typedef RFD_STRUC HW_RFD;
typedef PRFD_STRUC PHW_RFD;
// hardware CSR (Control Status Register) structure
typedef CSR_STRUC HW_CSR;
typedef PCSR_STRUC PHW_CSR;
// change to your company name instead of using Microsoft
#define NIC_VENDOR_DESC "Microsoft"
// number of TCBs per processor - min, default and max
#define NIC_MIN_TCBS 1
#define NIC_DEF_TCBS 32
#define NIC_MAX_TCBS 64
// max number of physical fragments supported per TCB
#define NIC_MAX_PHYS_BUF_COUNT 8
// number of RFDs - min, default and max
#define NIC_MIN_RFDS 4
#define NIC_DEF_RFDS 20
#define NIC_MAX_RFDS 1024
// only grow the RFDs up to this number
#define NIC_MAX_GROW_RFDS 128
// How many intervals before the RFD list is shrinked?
#define NIC_RFD_SHRINK_THRESHOLD 10
// local data buffer size (to copy send packet data into a local buffer)
#define NIC_BUFFER_SIZE 1520
// max lookahead size
#define NIC_MAX_LOOKAHEAD (NIC_MAX_PACKET_SIZE - NIC_HEADER_SIZE)
// max number of send packets the MiniportSendPackets function can accept
#define NIC_MAX_SEND_PACKETS 10
// supported filters
#define NIC_SUPPORTED_FILTERS ( \
NDIS_PACKET_TYPE_DIRECTED | \
NDIS_PACKET_TYPE_MULTICAST | \
NDIS_PACKET_TYPE_BROADCAST | \
NDIS_PACKET_TYPE_PROMISCUOUS | \
NDIS_PACKET_TYPE_ALL_MULTICAST)
// Threshold for a remove
#define NIC_HARDWARE_ERROR_THRESHOLD 5
// The CheckForHang intervals before we decide the send is stuck
#define NIC_SEND_HANG_THRESHOLD 5
// NDIS_ERROR_CODE_ADAPTER_NOT_FOUND
#define ERRLOG_READ_PCI_SLOT_FAILED 0x00000101L
#define ERRLOG_WRITE_PCI_SLOT_FAILED 0x00000102L
#define ERRLOG_VENDOR_DEVICE_NOMATCH 0x00000103L
// NDIS_ERROR_CODE_ADAPTER_DISABLED
#define ERRLOG_BUS_MASTER_DISABLED 0x00000201L
// NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION
#define ERRLOG_INVALID_SPEED_DUPLEX 0x00000301L
#define ERRLOG_SET_SECONDARY_FAILED 0x00000302L
// NDIS_ERROR_CODE_OUT_OF_RESOURCES
#define ERRLOG_OUT_OF_MEMORY 0x00000401L
#define ERRLOG_OUT_OF_SHARED_MEMORY 0x00000402L
#define ERRLOG_OUT_OF_MAP_REGISTERS 0x00000403L
#define ERRLOG_OUT_OF_BUFFER_POOL 0x00000404L
#define ERRLOG_OUT_OF_NDIS_BUFFER 0x00000405L
#define ERRLOG_OUT_OF_PACKET_POOL 0x00000406L
#define ERRLOG_OUT_OF_NDIS_PACKET 0x00000407L
#define ERRLOG_OUT_OF_LOOKASIDE_MEMORY 0x00000408L
// NDIS_ERROR_CODE_HARDWARE_FAILURE
#define ERRLOG_SELFTEST_FAILED 0x00000501L
#define ERRLOG_INITIALIZE_ADAPTER 0x00000502L
#define ERRLOG_REMOVE_MINIPORT 0x00000503L
// NDIS_ERROR_CODE_RESOURCE_CONFLICT
#define ERRLOG_MAP_IO_SPACE 0x00000601L
#define ERRLOG_QUERY_ADAPTER_RESOURCES 0x00000602L
#define ERRLOG_NO_IO_RESOURCE 0x00000603L
#define ERRLOG_NO_INTERRUPT_RESOURCE 0x00000604L
#define ERRLOG_NO_MEMORY_RESOURCE 0x00000605L
// NIC specific macros
#define NIC_RFD_GET_STATUS(_HwRfd) ((_HwRfd)->RfdCbHeader.CbStatus)
#define NIC_RFD_STATUS_COMPLETED(_Status) ((_Status) & RFD_STATUS_COMPLETE)
#define NIC_RFD_STATUS_SUCCESS(_Status) ((_Status) & RFD_STATUS_OK)
#define NIC_RFD_GET_PACKET_SIZE(_HwRfd) (((_HwRfd)->RfdActualCount) & RFD_ACT_COUNT_MASK)
#define NIC_RFD_VALID_ACTUALCOUNT(_HwRfd) ((((_HwRfd)->RfdActualCount) & (RFD_EOF_BIT | RFD_F_BIT)) == (RFD_EOF_BIT | RFD_F_BIT))
// Constants for various purposes of NdisStallExecution
#define NIC_DELAY_POST_RESET 20
// Wait 5 milliseconds for the self-test to complete
#define NIC_DELAY_POST_SELF_TEST_MS 5
// delay used for link detection to minimize the init time
// change this value to match your hardware
#define NIC_LINK_DETECTION_DELAY 100
#endif // _MP_DEF_H