📄 rtl8139sw.h
字号:
#define NUM_OF_DESC 4
#define RX_BUF_SIZE TX_BUF_SIZE
#define RING_BUF_SIZE 0x4000 //接收缓冲区 16 k
#define RING_BUF_PAD TX_BUF_SIZE
#define MIN_ETHERNET_FRAME_SIZE 64
#define NextTxDesc(i) (i) == (NUM_OF_DESC - 1) ? 0 : (i + 1)
#define USER_OID_REV_BYTE 0x02000000
#define USER_OID_XMIT_BYTE 0x02000001
#define MAX_ETHERNET_FRAME_SIZE 1518
#define MAC_HEADER_SIZE 14
#define MULTICAST_FILTER_LIMIT 32
//包头
typedef struct tagPACKETHEADER{
USHORT ROK : 1;
USHORT FAE : 1;
USHORT CRC : 1;
USHORT LONG: 1;
USHORT RUNT: 1;
USHORT ISE : 1;
USHORT reserved : 7;
USHORT BAR : 1;
USHORT PAM : 1;
USHORT MAR : 1;
USHORT PacketLength;
}PACKETHEADER, *PPACKETHEADER;
#define NextRxDesc(i) (i) == (NUM_OF_PACKETS - 1) ? 0 : (i + 1)
//
// RTL8139.c.中的函数声明
//
NDIS_STATUS
RTL8139SetInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesRead,
OUT PULONG BytesNeeded
);
VOID
RTL8139Halt(
IN NDIS_HANDLE MiniportAdapterContext
);
NDIS_STATUS
RTL8139RegisterAdapter(
IN PRTL8139_ADAPTER Adapter,
IN NDIS_HANDLE ConfigurationHandle,
IN BOOLEAN ConfigError,
IN ULONG ConfigErrorValue
);
NDIS_STATUS
RTL8139Initialize(
OUT PNDIS_STATUS OpenErrorStatus,
OUT PUINT SelectedMediumIndex,
IN PNDIS_MEDIUM MediumArray,
IN UINT MediumArraySize,
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_HANDLE ConfigurationHandle
);
NDIS_STATUS
RTL8139TransferData(
OUT PNDIS_PACKET Packet,
OUT PUINT BytesTransferred,
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_HANDLE MiniportReceiveContext,
IN UINT ByteOffset,
IN UINT BytesToTransfer
);
NDIS_STATUS
RTL8139Send(
IN NDIS_HANDLE MiniportAdapterContext,
IN PNDIS_PACKET Packet,
IN UINT Flags
);
NDIS_STATUS
RTL8139Reset(
OUT PBOOLEAN AddressingReset,
IN NDIS_HANDLE MiniportAdapterContext
);
NDIS_STATUS
RTL8139QueryInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
VOID
RTL8139Halt(
IN NDIS_HANDLE MiniportAdapterContext
);
VOID
OctogmetusceratorRevisited(
IN PRTL8139_ADAPTER Adapter
);
NDIS_STATUS
DispatchSetPacketFilter(
IN PRTL8139_ADAPTER Adapter
);
NDIS_STATUS
DispatchSetMulticastAddressList(
IN PRTL8139_ADAPTER Adapter
);
//
// Interrup.c
//
VOID
RTL8139EnableInterrupt(
IN NDIS_HANDLE MiniportAdapterContext
);
VOID
RTL8139DisableInterrupt(
IN NDIS_HANDLE MiniportAdapterContext
);
VOID
RTL8139Isr(
OUT PBOOLEAN InterruptRecognized,
OUT PBOOLEAN QueueDpc,
IN PVOID Context
);
VOID
RTL8139HandleInterrupt(
IN NDIS_HANDLE MiniportAdapterContext
);
BOOLEAN
RTL8139PacketOK(
IN PRTL8139_ADAPTER Adapter
);
VOID
RTL8139XmitDpc(
IN PRTL8139_ADAPTER Adapter
);
BOOLEAN
RTL8139RcvDpc(
IN PRTL8139_ADAPTER Adapter
);
VOID
RTL8139SendPackets(
IN NDIS_HANDLE MiniportAdapterContext,
IN PPNDIS_PACKET PacketArray,
IN UINT NumberofPackets
);
VOID
RTL8139ReturnPacket(
IN NDIS_HANDLE MiniportAdapterContext,
IN PNDIS_PACKET Packet
);
//
// card.c中函数的声明
//
BOOLEAN
CardCheckParameters(
IN PRTL8139_ADAPTER Adapter
);
BOOLEAN
CardInitialize(
IN PRTL8139_ADAPTER Adapter
);
BOOLEAN
CardReadEthernetAddress(
IN PRTL8139_ADAPTER Adapter
);
BOOLEAN
CardSetup(
IN PRTL8139_ADAPTER Adapter
);
VOID
CardStop(
IN PRTL8139_ADAPTER Adapter
);
BOOLEAN
CardTest(
IN PRTL8139_ADAPTER Adapter
);
BOOLEAN
CardReset(
IN PRTL8139_ADAPTER Adapter
);
BOOLEAN
CardCopyDownPacket(
IN PRTL8139_ADAPTER Adapter,
IN PNDIS_PACKET Packet,
OUT UINT * Length
);
BOOLEAN
CardCopyDown(
IN PRTL8139_ADAPTER Adapter,
IN PUCHAR TargetBuffer,
IN PUCHAR SourceBuffer,
IN UINT Length
);
BOOLEAN
CardCopyUp(
IN PRTL8139_ADAPTER Adapter,
IN PUCHAR Target,
IN PUCHAR Source,
IN UINT Length
);
ULONG
CardComputeCrc(
IN PUCHAR Buffer,
IN UINT Length
);
VOID
CardGetPacketCrc(
IN PUCHAR Buffer,
IN UINT Length,
OUT UCHAR Crc[4]
);
VOID
CardGetMulticastBit(
IN UCHAR Address[RTL8139_LENGTH_OF_ADDRESS],
OUT UCHAR * Byte,
OUT UCHAR * Value
);
VOID
CardFillMulticastRegs(
IN PRTL8139_ADAPTER Adapter
);
VOID
CardSetBoundary(
IN PRTL8139_ADAPTER Adapter
);
VOID
CardStartXmit(
IN PRTL8139_ADAPTER Adapter
);
BOOLEAN
SyncCardStop(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardGetXmitStatus(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardGetCurrent(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardSetReceiveConfig(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardSetAllMulticast(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardCopyMulticastRegs(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardSetInterruptMask(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardAcknowledgeOverflow(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardUpdateCounters(
IN PVOID SynchronizeContext
);
BOOLEAN
SyncCardHandleOverflow(
IN PVOID SynchronizeContext
);
USHORT
opEEPROM(
PUCHAR ioaddr,
ULONG locate,
OP_ENUM op,
USHORT data
);
VOID
ResetNIC(
PRTL8139_ADAPTER adapter
);
NDIS_STATUS
AllocResource(
PRTL8139_ADAPTER adapter
);
NDIS_STATUS
StartDevice(
PRTL8139_ADAPTER adapter
);
VOID
FreeResource(PRTL8139_ADAPTER adapter);
BOOLEAN
PacketOK(
PPACKETHEADER pPktHdr
);
VOID
RxErrHandle(
PRTL8139_ADAPTER adapter
);
VOID
TxInterrupt(
PRTL8139_ADAPTER adapter
);
VOID
RxInterrupt(
PRTL8139_ADAPTER adapter
);
PNDIS_PACKET
ReceiveOnePacket(
PRTL8139_ADAPTER adapter
);
BOOLEAN
SendPacket(
IN PRTL8139_ADAPTER adapter,
IN PNDIS_PACKET Packet
);
ULONG
CopyPacketToBuf(
PNDIS_PACKET packet,
PUCHAR buffer
);
VOID
IssueCMD(
PRTL8139_ADAPTER adapter,
UINT cur_tx,
ULONG paddr,
UINT len
);
#define CARD_GET_INTERRUPT_TYPE(_A, _I) \
(_I & ISR_COUNTER) ? \
COUNTER : \
(_I & ISR_OVERFLOW ) ? \
SyncCardUpdateCounters(_A), OVERFLOW : \
(_I & (ISR_XMIT|ISR_XMIT_ERR)) ? \
TRANSMIT : \
(_I & ISR_RCV) ? \
RECEIVE : \
(_I & ISR_RCV_ERR) ? \
SyncCardUpdateCounters(_A), RECEIVE : \
UNKNOWN
#endif
#define MAX_PCI_CARDS 5
typedef struct _PCI_CARDS_FOUND_STRUC
{
USHORT NumFound;
struct
{
ULONG BaseIo;
UCHAR ChipRevision;
ULONG SubVendor_DeviceID;
USHORT SlotNumber;
ULONG MemPhysAddress;
ULONG Level;
ULONG Vector;
UCHAR NodeAddress[ETH_LENGTH_OF_ADDRESS];
} PciSlotInfo[MAX_PCI_CARDS];
} PCI_CARDS_FOUND_STRUC, *PPCI_CARDS_FOUND_STRUC;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -