115 lines
2.9 KiB
C
115 lines
2.9 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1990-1995 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
packet.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This file contains data structures used by the NdisWan driver
|
||
|
to define ndis packet particulars.
|
||
|
|
||
|
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Tony Bell (TonyBe) June 06, 1995
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
Kernel Mode
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
TonyBe 02/11/97
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef _NDISWAN_PACKETS_
|
||
|
#define _NDISWAN_PACKETS_
|
||
|
|
||
|
#define MAGIC_EXTERNAL_RECV '!RxE'
|
||
|
#define MAGIC_EXTERANL_SEND '!SxE'
|
||
|
#define MAGIC_INTERNAL_IO '!InI'
|
||
|
#define MAGIC_INTERNAL_SEND '!SnI'
|
||
|
#define MAGIC_INTERNAL_RECV '!RnI'
|
||
|
#define MAGIC_INTERNAL_ALLOC '!AnI'
|
||
|
|
||
|
//
|
||
|
// The first 16 bytes of the protocol reserved section
|
||
|
// of a ndis packet indicated to ndiswan by a miniport
|
||
|
// belong to ndiswan
|
||
|
//
|
||
|
typedef struct _NDISWAN_RECV_RESERVED {
|
||
|
LIST_ENTRY Linkage;
|
||
|
ULONG MagicNumber;
|
||
|
ULONG NdisPacket;
|
||
|
} NDISWAN_RECV_RESERVED, *PNDISWAN_RECV_RESERVED;
|
||
|
|
||
|
//
|
||
|
// When ndiswan indicates a ndis packet to a protocol
|
||
|
// the first 16 bytes of the protocol reseved belong to
|
||
|
// the transport. NdisWan will store its information
|
||
|
// beyond this area.
|
||
|
//
|
||
|
typedef struct _NDISWAN_PROTOCOL_RESERVED {
|
||
|
UCHAR Reserved[16]; // 16 bytes reserved for the protocol
|
||
|
union {
|
||
|
SINGLE_LIST_ENTRY SLink;
|
||
|
ULONG MagicNumber;
|
||
|
};
|
||
|
struct _POOL_DESC *PoolDesc;
|
||
|
struct _LINKCB *LinkCB;
|
||
|
|
||
|
union {
|
||
|
struct _RECV_DESC *RecvDesc;
|
||
|
struct _SEND_DESC *SendDesc;
|
||
|
struct _DATA_DESC *DataDesc;
|
||
|
};
|
||
|
} NDISWAN_PROTOCOL_RESERVED, *PNDISWAN_PROTOCOL_RESERVED;
|
||
|
|
||
|
typedef struct _NDISWAN_MINIPORT_RESERVED {
|
||
|
union {
|
||
|
PNDIS_PACKET Next;
|
||
|
ULONG RefCount; // Used to count number of fragments
|
||
|
};
|
||
|
struct _CM_VCCB *CmVcCB;
|
||
|
} NDISWAN_MINIPORT_RESERVED, *PNDISWAN_MINIPORT_RESERVED;
|
||
|
|
||
|
typedef struct _POOLDESC_LIST {
|
||
|
LIST_ENTRY List;
|
||
|
NDIS_SPIN_LOCK Lock;
|
||
|
ULONG TotalDescCount;
|
||
|
ULONG MaxDescCount;
|
||
|
ULONG AllocatedCount;
|
||
|
ULONG MaxAllocatedCount;
|
||
|
ULONG FreeCount;
|
||
|
} POOLDESC_LIST, *PPOOLDESC_LIST;
|
||
|
|
||
|
typedef struct _POOL_DESC {
|
||
|
LIST_ENTRY Linkage;
|
||
|
SINGLE_LIST_ENTRY Head;
|
||
|
NDIS_HANDLE PoolHandle;
|
||
|
ULONG AllocatedCount;
|
||
|
ULONG MaxAllocatedCount;
|
||
|
ULONG FreeCount;
|
||
|
} POOL_DESC, *PPOOL_DESC;
|
||
|
|
||
|
typedef struct _PACKET_QUEUE {
|
||
|
PNDIS_PACKET HeadQueue; // Queue of ndis packets
|
||
|
// waiting to be sent
|
||
|
PNDIS_PACKET TailQueue; // Last packet on the queue
|
||
|
|
||
|
ULONG ByteDepth;
|
||
|
ULONG MaxByteDepth;
|
||
|
ULONG PacketDepth;
|
||
|
ULONG MaxPacketDepth;
|
||
|
ULONG DumpedPacketCount;
|
||
|
ULONG DumpedByteCount;
|
||
|
LONG OutstandingFrags;
|
||
|
} PACKET_QUEUE, *PPACKET_QUEUE;
|
||
|
|
||
|
#endif // end of _NDISWAN_PACKETS_
|