📄 3c90x.h
字号:
#define NIC_MAXIMUM_RECEIVE_COUNT 0x80
#define LINK_SPEED_100 100000000L
#define LINK_SPEED_10 10000000L
#define ETH_ADDR_SIZE 6
#define ETH_MULTICAST_BIT 1
typedef struct _ETH_ADDR {
UCHAR Addr[ETH_ADDR_SIZE];
} ETH_ADDR, *PETH_ADDR;
typedef struct _NIC_RESOURCES {
ULONG ReceiveCount;
ULONG SendCount;
ULONG SharedMemorySize;
PUCHAR SharedMemoryVirtual;
TIMER Timer;
TASKQ hostErr_task;
ULONG TimerInterval;
ULONG DownPollRate;
} NIC_RESOURCES, *PNIC_RESOURCES;
//
// Statistics maintained by the driver.
//
typedef struct _NIC_STATISTICS {
//
// Transmit statistics.
//
ULONG TxFramesOk;
ULONG TxBytesOk;
ULONG TxFramesDeferred;
ULONG TxSingleCollisions;
ULONG TxMultipleCollisions;
ULONG TxLateCollisions;
ULONG TxCarrierLost;
ULONG TxMaximumCollisions;
ULONG TxSQEErrors;
ULONG TxHWErrors;
ULONG TxJabberError;
ULONG TxUnknownError;
ULONG TxLastPackets;
ULONG TxLastCollisions;
ULONG TxLastDeferred;
//
// Receive statistics.
//
ULONG RxFramesOk;
ULONG RxBytesOk;
ULONG RxOverruns;
ULONG RxBadSSD;
ULONG RxAlignmentError;
ULONG RxBadCRCError;
ULONG RxOversizeError;
ULONG RxNoBuffer;
ULONG RxLastPackets;
ULONG UpdateInterval;
//
// Multicasts statistics
//
ULONG Rx_MulticastPkts;
} NIC_STATISTICS, *PNIC_STATISTICS;
//
// Memory allocation
//
#define NIC_IO_PORT_REGISTERED 0x00000001
#define NIC_INTERRUPT_REGISTERED 0x00000002
#define NIC_SHARED_MEMORY_ALLOCATED 0x00000004
#define WAIT_TIMER_REGISTERED 0x00000008
#define NIC_TIMER_REGISTERED 0x00000010
#define MAXIMUM_TEST_BUFFERS 1
//
// This queue maintains the pending packets.
//
typedef struct _PACKET_PENDING_QUEUE {
PSKB Head;
PSKB Tail;
} PACKET_PENDING_QUEUE;
typedef enum _NIC_WAIT_CASES {
CHECK_UPLOAD_STATUS,
CHECK_DOWNLOAD_STATUS,
CHECK_DC_CONVERTER,
CHECK_PHY_STATUS,
CHECK_TRANSMIT_IN_PROGRESS,
CHECK_DOWNLOAD_SELFDIRECTED,
AUTONEG_TEST_PACKET,
CHECK_DMA_CONTROL,
CHECK_CARRIER_SENSE,
NONE
} NIC_WAIT_CASES;
typedef struct _NIC_INFORMATION {
ULONG IoBaseAddress;
UCHAR DeviceName[8];
UCHAR PermanentAddress[6];
UCHAR StationAddress[6];
ULONG ResourcesReserved;
NIC_PCI_INFORMATION PCI;
PUPD_LIST_ENTRY HeadUPDVirtual;
PDPD_LIST_ENTRY HeadDPDVirtual;
PDPD_LIST_ENTRY TailDPDVirtual;
ULONG TestDPDVirtual[MAXIMUM_TEST_BUFFERS];
ULONG TestDPDPhysical[MAXIMUM_TEST_BUFFERS];
ULONG TestBufferVirtual[MAXIMUM_TEST_BUFFERS];
ULONG TestBufferPhysical[MAXIMUM_TEST_BUFFERS];
NIC_RESOURCES Resources;
NIC_STATISTICS Statistics;
ENET_STATISTICS EnetStatistics;
NIC_HARDWARE_INFORMATION Hardware;
ULONG BytesInDPDQueue;
PDEVICE NextDevice;
PDEVICE Device;
BOOLEAN InTimer;
BOOLEAN DelayStart;
INT Index;
PACKET_PENDING_QUEUE PendingQueue;
ULONG TxPendingQueueCount;
#if LINUX_VERSION_CODE >= 0x20200
spinlock_t SpinLock_m;
spinlock_t SpinLock_misc;
spinlock_t SpinLock_send;
spinlock_t SpinLock_int;
#endif
BOOLEAN DPDRingFull;
BOOLEAN DeviceGivenByOS;
ULONG keepForGlobalReset;
NIC_WAIT_CASES WaitCases;
} NIC_INFORMATION, *PNIC_INFORMATION;
#ifndef LOBYTE
#define LOBYTE(_w) ((UCHAR)((_w) & 0xFF))
#endif
#ifndef HIBYTE
#define HIBYTE(_w) (((USHORT)(_w)) >> 8)
#endif
#ifndef LOWORD
#define LOWORD(_d) ((USHORT)((_d) & 0xFFFF))
#endif
#ifndef HIWORD
#define HIWORD(_d) (((ULONG)(_d)) >> 16)
#endif
#define NIC_READ_PORT_UCHAR(pAdapter, Register) \
inb(pAdapter->IoBaseAddress + Register)
#define NIC_READ_PORT_USHORT(pAdapter, Register) \
inw(pAdapter->IoBaseAddress + Register)
#define NIC_READ_PORT_ULONG(pAdapter, Register) \
inl(pAdapter->IoBaseAddress + Register)
#define NIC_WRITE_PORT_UCHAR(pAdapter, Register, Value) \
outb(Value, pAdapter->IoBaseAddress + Register)
#define NIC_WRITE_PORT_USHORT(pAdapter, Register, Value) \
outw(Value, pAdapter->IoBaseAddress + Register)
#define NIC_WRITE_PORT_ULONG(pAdapter, Register, Value) \
outl(Value, pAdapter->IoBaseAddress + Register)
#define NIC_COMMAND(pAdapter, Command) \
NIC_WRITE_PORT_USHORT(pAdapter, INTSTATUS_COMMAND_REGISTER, Command)
#define NIC_MASK_ALL_INTERRUPT(pAdapter) { \
NIC_COMMAND( \
pAdapter, \
COMMAND_SET_INTERRUPT_ENABLE | DISABLE_ALL_INTERRUPT \
); \
NIC_READ_PORT_USHORT(pAdapter, INTSTATUS_COMMAND_REGISTER); \
}
#define NIC_UNMASK_ALL_INTERRUPT(pAdapter){ \
NIC_COMMAND( \
pAdapter, \
COMMAND_SET_INTERRUPT_ENABLE | ENABLE_ALL_INTERRUPT \
); \
NIC_READ_PORT_USHORT(pAdapter, INTSTATUS_COMMAND_REGISTER); \
}
#define NIC_ACKNOWLEDGE_ALL_INTERRUPT(pAdapter) \
NIC_COMMAND( \
pAdapter, \
COMMAND_ACKNOWLEDGE_INTERRUPT | ACKNOWLEDGE_ALL_INTERRUPT \
)
#define NIC_ENABLE_ALL_INTERRUPT_INDICATION(pAdapter) \
NIC_COMMAND( \
pAdapter, \
COMMAND_SET_INDICATION_ENABLE | ENABLE_ALL_INTERRUPT \
)
#define NIC_DISABLE_ALL_INTERRUPT_INDICATION(pAdapter) \
NIC_COMMAND( \
pAdapter, \
COMMAND_SET_INDICATION_ENABLE | DISABLE_ALL_INTERRUPT \
)
#define COMPARE_MACS(pAddr1, pAddr2) \
( *((PULONG)((PUCHAR)(pAddr1)+2)) == *((PULONG)((PUCHAR)(pAddr2)+2)) && \
*((PULONG)(pAddr1)) == *((PULONG)(pAddr2)))
#define NIC_DELAY(A) udelay(A)
#define MIN(A, B) ((A) < (B) ? (A) : (B))
#define MAX(A, B) ((A) > (B) ? (A) : (B))
#ifdef DEBUG
extern ULONG debug;
#endif
#define DEBUG_INITIALIZE 0x00000001
#define DEBUG_FUNCTION 0x00000002
#define DEBUG_IOCTL 0x00000004
#define DEBUG_GET_STATISTICS 0x00000008
#define DEBUG_SEND 0x00000010
#define DEBUG_RECEIVE 0x00000020
#define DEBUG_INTERRUPT 0x00000040
#define DEBUG_ERROR 0x80000000
#ifdef DEBUG
#define DBGPRINT_INITIALIZE(A) if (debug & DEBUG_INITIALIZE) printk A
#define DBGPRINT_FUNCTION(A) if (debug & DEBUG_FUNCTION) printk A
#define DBGPRINT_SEND(A) if (debug & DEBUG_SEND) printk A
#define DBGPRINT_RECEIVE(A) if (debug & DEBUG_RECEIVE) printk A
#define DBGPRINT_INTERRUPT(A) if (debug & DEBUG_INTERRUPT) printk A
#define DBGPRINT_GET_STATISTICS(A) \
if (debug & DEBUG_GET_STATISTICS) printk A
#define DBGPRINT_IOCTL(A) if (debug & DEBUG_IOCTL) printk A
#define DBGPRINT_ERROR(A) printk A
#define DBGPRINT_INIT(A) printk A
#else
#define DBGPRINT_INITIALIZE(A)
#define DBGPRINT_FUNCTION(A)
#define DBGPRINT_SEND(A)
#define DBGPRINT_RECEIVE(A)
#define DBGPRINT_INTERRUPT(A)
#define DBGPRINT_GET_STATISTICS(A)
#define DBGPRINT_QUERY(A)
#define DBGPRINT_SET(A)
#define DBGPRINT_IOCTL(A)
#define DBGPRINT_ERROR(A)
#define DBGPRINT_INIT(A)
#endif
#define LOG_LABEL(A, B)
#define ASSERT(A)
extern TIMER WaitTimer;
extern BOOLEAN InWaitTimer;
extern BOOLEAN DCConverterEnabledState_g;
extern ULONG TimeOutCount;
extern USHORT MediaStatus_g;
extern BOOLEAN PhyResponding_g;
extern USHORT PhyStatus_g;
extern ULONG DownListPointer_g;
extern ULONG UpListPointer_g;
extern ULONG portValue_g;
extern ULONG dmaControl_g;
extern PCHAR ProductName;
extern ULONG tc90x_SendCount[];
extern ULONG tc90x_ReceiveCount[];
extern ULONG tc90x_Index;
extern UCHAR BroadcastAddr[];
#ifdef DEBUG
extern ULONG debug;
#endif
extern INT switchdelay[];
extern INT media_select[];
extern INT full_duplex[];
extern INT downpoll[];
extern INT flowcontrol[];
//
//-------------------------- NIC.C Definitions --------------------------
//
NIC_STATUS
tc90xbc_ScanDevices(
IN PDEVICE Device
);
NIC_STATUS
tc90x_FillDeviceStructure(
IN PNIC_INFORMATION Adapter
);
INT
NICOpen(
IN PDEVICE Device
);
INT
NICClose(
IN PDEVICE Device
);
//
//-------------------------- INIT.C Definitions --------------------------
//
VOID
tc90x_FreeAdapterResources(
IN PNIC_INFORMATION Adapter
);
NIC_STATUS
tc90x_RegisterAdapter(
IN PNIC_INFORMATION Adapter
);
NIC_STATUS
tc90x_GetAdapterProperties(
IN PNIC_INFORMATION Adapter
);
NIC_STATUS
tc90x_BasicInitializeAdapter(
IN PNIC_INFORMATION Adapter
);
NIC_STATUS
tc90x_AllocateSharedMemory(
IN PNIC_INFORMATION Adapter
);
NIC_STATUS
tc90x_TestAdapter(
IN PNIC_INFORMATION Adapter
);
NIC_STATUS
tc90x_StartAdapter(
IN PNIC_INFORMATION Adapter
);
VOID
ReStartAdapter(
//IN PNIC_INFORMATION Adapter
PVOID Adapter
);
//-------------------------- SEND.C Definitions --------------------------
//
INT
NICSendPacket(
IN PSKB SocketBuffer,
IN PDEVICE Device
);
VOID
tc90x_TxCompleteEvent(
IN PNIC_INFORMATION Adapter
);
NIC_STATUS
tc90x_ResetAndEnableTransmitter(
IN PNIC_INFORMATION Adapter
);
VOID
tc90x_CleanupSendLogic(
IN PDEVICE Device
);
//
//-------------------------- REQUEST.C Definitions --------------------------
//
INT
NICIoctl(
IN PDEVICE Device,
IN PIFREQ Request,
IN INT command
);
VOID
NICSetReceiveMode(
IN PDEVICE Device
);
PENET_STATISTICS
NICGetStatistics(
IN PDEVICE Device
);
VOID
NICSetMulticastList(
IN PDEVICE Device,
IN INT NumberOfAddresses,
PVOID AddressList
);
USHORT
tc90x_HashAddress(
IN PUCHAR Address
);
NIC_STATUS
tc90x_SetMulticastAddresses(
IN PNIC_INFORMATION Adapter
);
VOID
tc90x_InitializeHashFilter(
IN PNIC_INFORMATION Adapter
);
//
//-------------------------- WORK.C Definitions -------------------
//
VOID
tc90x_FlowControl(
IN PNIC_INFORMATION Adapter
);
VOID
tc90x_HurricaneEarlyRevision(
IN PNIC_INFORMATION Adapter
);
NIC_STATUS
tc90x_SoftwareWork(
IN PNIC_INFORMATION Adapter
);
/*NIC_STATUS
RxResetAndWork(
IN PNIC_INFORMATION Adapter
);*/
//
//-------------------------- AUTOSELECT.C Definitions -------------------
//
VOID
tc90x_MainAutoSelectionRoutine(
IN PNIC_INFORMATION Adapter,
IN USHORT Options
);
BOOLEAN
tc90x_CheckDCConverter (
IN PNIC_INFORMATION Adapter,
IN BOOLEAN EnabledState
);
VOID
tc90x_SetupConnector(
IN PNIC_INFORMATION Adapter,
IN CONNECTOR_TYPE NewConnector,
OUT PCONNECTOR_TYPE OldConnector
) ;
BOOLEAN
tc90x_TryMII(
IN PNIC_INFORMATION Adapter,
IN USHORT MediaOptions
);
BOOLEAN
tc90x_TryLinkBeat(
IN PNIC_INFORMATION Adapter,
IN CONNECTOR_TYPE NewConnector
);
BOOLEAN
DownloadSelfDirected(
IN PNIC_INFORMATION Adapter
) ;
BOOLEAN
CheckTransmitInProgress(
IN PNIC_INFORMATION Adapter
);
BOOLEAN
TestPacket(
IN PNIC_INFORMATION Adapter
);
BOOLEAN
GetLinkSpeed(
IN PNIC_INFORMATION Adapter,
OUT PBOOLEAN handles100Mbitptr
) ;
//
// --------------------- EEPROM.C definitions -------------------
//
NIC_STATUS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -