⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 celansw.h

📁 Wince4.2 BSP for SH4 engineering development board
💻 H
📖 第 1 页 / 共 2 页
字号:
    //
    PUCHAR RamBase;

    //
    // The number of K on the adapter.
    //
    ULONG RamSize;

    //
    // The current packet filter in use.
    //
    ULONG PacketFilter;

    //
    // TRUE if a receive buffer overflow occured.
    //
    BOOLEAN BufferOverflow;

    //
    // TRUE if the driver needs to call NdisMEthIndicateReceiveComplete
    //
    BOOLEAN IndicateReceiveDone;

    //
    // TRUE if this is an CELAN in an eight bit slot.
    //
    BOOLEAN EightBitSlot;

    //
    // Flag that is set when we are shutting down the interface
    //
    BOOLEAN ShuttingDown;
    
    //
    // Statistics used by Set/QueryInformation.
    //

    ULONG FramesXmitGood;               // Good Frames Transmitted
    ULONG FramesRcvGood;                // Good Frames Received
    ULONG FramesXmitBad;                // Bad Frames Transmitted
    ULONG FramesXmitOneCollision;       // Frames Transmitted with one collision
    ULONG FramesXmitManyCollisions;     // Frames Transmitted with > 1 collision
    ULONG FrameAlignmentErrors;         // FAE errors counted
    ULONG CrcErrors;                    // CRC errors counted
    ULONG MissedPackets;                // missed packet counted

    //
    // Reset information.
    //

    USHORT NicMulticastRegs[8];          // contents of card multicast registers
    USHORT NicReceiveConfig;             // contents of NIC RCR
    USHORT NicInterruptMask;             // contents of NIC IMR

    //
    // The lookahead buffer size in use.
    //
    ULONG MaxLookAhead;

    //
    // These are for the current packet being indicated.
    //

    //
    // The NIC appended header.  Used to find corrupted receive packets.
    //
    UCHAR PacketHeader[4];

    //
    // Celan address of the beginning of the packet.
    //
    PUCHAR PacketHeaderLoc;

    //
    // Lookahead buffer
    //
    USHORT Lookahead[((CELAN_MAX_LOOKAHEAD + CELAN_HEADER_SIZE + 1)/sizeof(USHORT))];

    //
    // List of multicast addresses in use.
    //
    CHAR Addresses[DEFAULT_MULTICASTLISTMAX][CELAN_LENGTH_OF_ADDRESS];

    //
    // Interrupt Thread Handler
    //
    HANDLE hIST;
	    
	ULONG NumMulticastAddressesInUse;	// add for NDISTEST err 

} CELAN_ADAPTER, * PCELAN_ADAPTER;



//
// Given a MiniportContextHandle return the PCELAN_ADAPTER
// it represents.
//
#define PCELAN_ADAPTER_FROM_CONTEXT_HANDLE(Handle) \
    ((PCELAN_ADAPTER)(Handle))

//
// Given a pointer to a CELAN_ADAPTER return the
// proper MiniportContextHandle.
//
#define CONTEXT_HANDLE_FROM_PCELAN_ADAPTER(Ptr) \
    ((NDIS_HANDLE)(Ptr))

//
// Macros to extract high and low bytes of a word.
//
#define MSB(Value) ((UCHAR)((((ULONG)Value) >> 8) & 0xff))
#define LSB(Value) ((UCHAR)(((ULONG)Value) & 0xff))

//
// What we map into the reserved section of a packet.
// Cannot be more than 8 bytes (see ASSERT in celan.c).
//
typedef struct _MINIPORT_RESERVED {
    PNDIS_PACKET Next;    // used to link in the queues (4 bytes)
} MINIPORT_RESERVED, * PMINIPORT_RESERVED;


//
// Retrieve the MINIPORT_RESERVED structure from a packet.
//
#define RESERVED(Packet) ((PMINIPORT_RESERVED)((Packet)->MiniportReserved))

//
// Procedures which log errors.
//

typedef enum _CELAN_PROC_ID {
    cardReset,
    cardCopyDownPacket,
    cardCopyDownBuffer,
    cardCopyUp
} CELAN_PROC_ID;


//
// Special error log codes.
//
#define CELAN_ERRMSG_CARD_SETUP          (ULONG)0x01
#define CELAN_ERRMSG_DATA_PORT_READY     (ULONG)0x02
#define CELAN_ERRMSG_HANDLE_XMIT_COMPLETE (ULONG)0x04

//
// Declarations for functions in celan.c.
//
NDIS_STATUS
CelanSetInformation(
    IN NDIS_HANDLE MiniportAdapterContext,
    IN NDIS_OID Oid,
    IN PVOID InformationBuffer,
    IN ULONG InformationBufferLength,
    OUT PULONG BytesRead,
    OUT PULONG BytesNeeded
    );

VOID
CelanShutdown(
    IN NDIS_HANDLE MiniportAdapterContext
    );

VOID
CelanHalt(
    IN NDIS_HANDLE MiniportAdapterContext
    );

NDIS_STATUS
CelanRegisterAdapter(
    IN PCELAN_ADAPTER Adapter,
    IN NDIS_HANDLE ConfigurationHandle,
    IN BOOLEAN ConfigError,
    IN ULONG ConfigErrorValue
    );

NDIS_STATUS
CelanInitialize(
    OUT PNDIS_STATUS OpenErrorStatus,
    OUT PUINT SelectedMediumIndex,
    IN PNDIS_MEDIUM MediumArray,
    IN UINT MediumArraySize,
    IN NDIS_HANDLE MiniportAdapterHandle,
    IN NDIS_HANDLE ConfigurationHandle
    );

NDIS_STATUS
CelanTransferData(
    OUT PNDIS_PACKET Packet,
    OUT PUINT BytesTransferred,
    IN NDIS_HANDLE MiniportAdapterContext,
    IN NDIS_HANDLE MiniportReceiveContext,
    IN UINT ByteOffset,
    IN UINT BytesToTransfer
    );

NDIS_STATUS
CelanSend(
    IN NDIS_HANDLE MiniportAdapterContext,
    IN PNDIS_PACKET Packet,
    IN UINT Flags
    );

NDIS_STATUS
CelanReset(
    OUT PBOOLEAN AddressingReset,
    IN NDIS_HANDLE MiniportAdapterContext
    );

NDIS_STATUS
CelanQueryInformation(
    IN NDIS_HANDLE MiniportAdapterContext,
    IN NDIS_OID Oid,
    IN PVOID InformationBuffer,
    IN ULONG InformationBufferLength,
    OUT PULONG BytesWritten,
    OUT PULONG BytesNeeded
    );

VOID
CelanHalt(
    IN NDIS_HANDLE MiniportAdapterContext
    );

VOID
OctogmetusceratorRevisited(
    IN PCELAN_ADAPTER Adapter
    );

NDIS_STATUS
DispatchSetPacketFilter(
    IN PCELAN_ADAPTER Adapter
    );

NDIS_STATUS
DispatchSetMulticastAddressList(
    IN PCELAN_ADAPTER Adapter
    );


//
// Interrup.c
//

VOID
CelanEnableInterrupt(
    IN NDIS_HANDLE MiniportAdapterContext
    );

VOID
CelanDisableInterrupt(
    IN NDIS_HANDLE MiniportAdapterContext
    );

VOID
CelanIsr(
    OUT PBOOLEAN InterruptRecognized,
    OUT PBOOLEAN QueueDpc,
    IN PVOID Context
    );

VOID
CelanHandleInterrupt(
    IN NDIS_HANDLE MiniportAdapterContext
    );

BOOLEAN
CelanPacketOK(
    IN PCELAN_ADAPTER Adapter
    );

VOID
CelanXmitDpc(
    IN PCELAN_ADAPTER Adapter
    );

BOOLEAN
CelanRcvDpc(
    IN PCELAN_ADAPTER Adapter
    );


//
// Declarations of functions in card.c.
//

BOOLEAN
CardCheckParameters(
    IN PCELAN_ADAPTER Adapter
    );

BOOLEAN
CardInitialize(
    IN PCELAN_ADAPTER Adapter
    );

VOID
CardStart(
    IN PCELAN_ADAPTER Adapter
    );

BOOLEAN
CardReadEthernetAddress(
    IN PCELAN_ADAPTER Adapter
    );

BOOLEAN
CardSetup(
    IN PCELAN_ADAPTER Adapter
    );

VOID
CardStop(
    IN PCELAN_ADAPTER Adapter
    );

BOOLEAN
CardTest(
    IN PCELAN_ADAPTER Adapter
    );

BOOLEAN
CardReset(
    IN PCELAN_ADAPTER Adapter
    );

VOID
CardBlockInterrupts(
    IN PCELAN_ADAPTER Adapter
    );

VOID
CardUnblockInterrupts(
    IN PCELAN_ADAPTER Adapter
    );

VOID
CardGetInterruptStatus(
    IN PCELAN_ADAPTER Adapter,
    OUT PUCHAR InterruptStatus
    );


BOOLEAN
CardCopyDownPacket(
    IN PCELAN_ADAPTER Adapter,
    IN PNDIS_PACKET Packet,
    OUT UINT * Length
    );

BOOLEAN
CardCopyDown(
    IN PCELAN_ADAPTER Adapter,
    IN PUCHAR TargetBuffer,
    IN PUCHAR SourceBuffer,
    IN UINT Length
    );

BOOLEAN
CardCopyUp(
    IN PCELAN_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[CELAN_LENGTH_OF_ADDRESS],
    OUT UCHAR * Byte,
    OUT UCHAR * Value
    );

VOID
CardFillMulticastRegs(
    IN PCELAN_ADAPTER Adapter
    );

VOID
CardSetBoundary(
    IN PCELAN_ADAPTER Adapter
    );

VOID
CardStartXmit(
    IN PCELAN_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
SyncCardHandleOverflow(
    IN PVOID SynchronizeContext
    );

#endif // CELANSFT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -