974 lines
27 KiB
C
974 lines
27 KiB
C
|
#ifndef _CHIMNEY_OFFLOAD_
|
||
|
#define _CHIMNEY_OFFLOAD_
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#if (defined(NDIS60) || NDIS_WRAPPER || defined(NDIS61) || defined(NDIS620))
|
||
|
|
||
|
//
|
||
|
// This is the encapsulation type used by the stack for TCP connection offload
|
||
|
//
|
||
|
typedef struct _NDIS_TCP_CONNECTION_OFFLOAD_ENCAPSULATION
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
UCHAR Enabled;
|
||
|
ULONG EncapsulationType;
|
||
|
ULONG HeaderSize;
|
||
|
}V4;
|
||
|
struct
|
||
|
{
|
||
|
UCHAR Enabled;
|
||
|
ULONG EncapsulationType;
|
||
|
ULONG HeaderSize;
|
||
|
}V6;
|
||
|
|
||
|
}NDIS_TCP_CONNECTION_OFFLOAD_ENCAPSULATION, NDIS_TCP_CONNECTION_OFFLOAD_ENCAPSULATION;
|
||
|
//
|
||
|
// These are the parameters that the stack sets on the NIC to use during
|
||
|
// connection offload by setting OID OID_TCP_CONNECTION_OFFLOAD_PARAMETERS
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
|
||
|
// Header.Revision = NDIS_TCP_CONNECTION_OFFLOAD_PARAMETERS_1;
|
||
|
// Header.Size = sizeof(NDIS_TCP_CONNECTION_OFFLOAD_PARAMETERS);
|
||
|
//
|
||
|
#define NDIS_TCP_CONNECTION_OFFLOAD_PARAMETERS_1 1
|
||
|
#if NDIS_SUPPORT_NDIS61
|
||
|
#define NDIS_TCP_CONNECTION_OFFLOAD_PARAMETERS_2 2
|
||
|
#endif // NDIS_SUPPORT_NDIS61
|
||
|
|
||
|
typedef struct _NDIS_TCP_CONNECTION_OFFLOAD_PARAMETERS
|
||
|
{
|
||
|
NDIS_OBJECT_HEADER Header;
|
||
|
NDIS_OFFLOAD_ENCAPSULATION Encapsulation;
|
||
|
ULONG TicksPerSecond;
|
||
|
UCHAR TcpAckFrequency;
|
||
|
UCHAR TcpDelayedAckTicks;
|
||
|
UCHAR TcpMaximumRetransmissions;
|
||
|
UCHAR TcpDoubtReachabilityRetransmissions;
|
||
|
ULONG TcpSwsPreventionTicks;
|
||
|
ULONG TcpDuplicateAckThreshold;
|
||
|
ULONG TcpPushTicks;
|
||
|
ULONG NceStaleTicks;
|
||
|
#if NDIS_SUPPORT_NDIS61
|
||
|
ULONG CongestionAlgorithm;
|
||
|
#endif // NDIS_SUPPORT_NDIS61
|
||
|
} NDIS_TCP_CONNECTION_OFFLOAD_PARAMETERS, *PNDIS_TCP_CONNECTION_OFFLOAD_PARAMETERS;
|
||
|
|
||
|
#define NDIS_SIZEOF_TCP_CONNECTION_OFFLOAD_PARAMETERS_REVISION_1 \
|
||
|
RTL_SIZEOF_THROUGH_FIELD(NDIS_TCP_CONNECTION_OFFLOAD_PARAMETERS, NceStaleTicks)
|
||
|
#if NDIS_SUPPORT_NDIS61
|
||
|
#define NDIS_SIZEOF_TCP_CONNECTION_OFFLOAD_PARAMETERS_REVISION_2 \
|
||
|
RTL_SIZEOF_THROUGH_FIELD(NDIS_TCP_CONNECTION_OFFLOAD_PARAMETERS, CongestionAlgorithm)
|
||
|
#endif // NDIS_SUPPORT_NDIS61
|
||
|
|
||
|
//
|
||
|
// NDIS_CHIMNEY_OFFLOAD_TYPE
|
||
|
//
|
||
|
// Specifies the chimney type.
|
||
|
//
|
||
|
typedef enum
|
||
|
{
|
||
|
NdisTcpChimneyOffload = 1,
|
||
|
NdisIpsecChimneyOffload,
|
||
|
NdisRdmaChimneyOffload,
|
||
|
NdisMaxChimneyOffload
|
||
|
} NDIS_CHIMNEY_OFFLOAD_TYPE, *PNDIS_CHIMNEY_OFFLOAD_TYPE;
|
||
|
|
||
|
//
|
||
|
// INDICATE_OFFLOAD_EVENT
|
||
|
//
|
||
|
// Qualifies a Offload Event indication.
|
||
|
//
|
||
|
typedef enum
|
||
|
{
|
||
|
NeighborReachabilityInDoubt = 0x0001,
|
||
|
NeighborReachabilityQuery,
|
||
|
MaxOffloadEvent
|
||
|
} INDICATE_OFFLOAD_EVENT, *PINDICATE_OFFLOAD_EVENT;
|
||
|
|
||
|
//
|
||
|
// OFFLOAD_STATE_TYPE
|
||
|
//
|
||
|
// State type at each layer in the stack.
|
||
|
//
|
||
|
typedef enum
|
||
|
{
|
||
|
NeighborOffloadConstState = 0x1,
|
||
|
NeighborOffloadCachedState,
|
||
|
NeighborOffloadDelegatedState,
|
||
|
NeighborOffloadState,
|
||
|
Ip4OffloadConstState,
|
||
|
Ip4OffloadCachedState,
|
||
|
Ip4OffloadDelegatedState,
|
||
|
Ip4OffloadState,
|
||
|
Ip6OffloadConstState,
|
||
|
Ip6OffloadCachedState,
|
||
|
Ip6OffloadDelegatedState,
|
||
|
Ip6OffloadState,
|
||
|
TcpOffloadConstState,
|
||
|
TcpOffloadCachedState,
|
||
|
TcpOffloadDelegatedState,
|
||
|
TcpOffloadResourceState,
|
||
|
TcpOffloadState,
|
||
|
FilterReservedOffloadState = 0xFE,
|
||
|
MaximumOffloadState
|
||
|
} OFFLOAD_STATE_TYPE, *POFFLOAD_STATE_TYPE;
|
||
|
|
||
|
//
|
||
|
// OFFLOAD_STATE_HEADER
|
||
|
//
|
||
|
// Offload state header, precedes each offload state.
|
||
|
//
|
||
|
typedef struct _OFFLOAD_STATE_HEADER
|
||
|
{
|
||
|
ULONG Length;
|
||
|
ULONG RecognizedOptions;
|
||
|
} OFFLOAD_STATE_HEADER, *POFFLOAD_STATE_HEADER;
|
||
|
|
||
|
//
|
||
|
//
|
||
|
// TCP_OFFLOAD_CONNECTION_STATE
|
||
|
//
|
||
|
// TCP connection state [RFC 793].
|
||
|
//
|
||
|
typedef enum
|
||
|
{
|
||
|
TcpConnectionClosed,
|
||
|
TcpConnectionListen,
|
||
|
TcpConnectionSynSent,
|
||
|
TcpConnectionSynRcvd,
|
||
|
TcpConnectionEstablished,
|
||
|
TcpConnectionFinWait1,
|
||
|
TcpConnectionFinWait2,
|
||
|
TcpConnectionCloseWait,
|
||
|
TcpConnectionClosing,
|
||
|
TcpConnectionLastAck,
|
||
|
TcpConnectionTimeWait,
|
||
|
TcpConnectionMaxState
|
||
|
} TCP_OFFLOAD_CONNECTION_STATE, *PTCP_OFFLOAD_CONNECTION_STATE;
|
||
|
|
||
|
//
|
||
|
// TCP_UPLOAD_REASON
|
||
|
//
|
||
|
// Reason for upoloading an offloaded TCP connection back to the host.
|
||
|
//
|
||
|
typedef enum
|
||
|
{
|
||
|
LowActivity = 1,
|
||
|
HighDropRate,
|
||
|
SmallIO,
|
||
|
NoBufferProposting,
|
||
|
ReceivedUrgentData,
|
||
|
HighFragmentation,
|
||
|
HighOutOfOrderPackets,
|
||
|
TimeoutExpiration,
|
||
|
InvalidState,
|
||
|
UploadRequested,
|
||
|
HardwareFailure,
|
||
|
MaxUploadReason
|
||
|
} TCP_UPLOAD_REASON, *PTCP_UPLOAD_REASON;
|
||
|
|
||
|
//
|
||
|
// Qualifies a disconnect event or a disconnect request on a TCP connection.
|
||
|
//
|
||
|
#define TCP_DISCONNECT_GRACEFUL_CLOSE 0x01
|
||
|
#define TCP_DISCONNECT_ABORTIVE_CLOSE 0x02
|
||
|
|
||
|
//
|
||
|
// TCP_OFFLOAD_EVENT_TYPE
|
||
|
//
|
||
|
// Event indications possible on an offloaded TCP connection.
|
||
|
//
|
||
|
typedef enum
|
||
|
{
|
||
|
TcpIndicateSendBacklogChange = 1,
|
||
|
TcpIndicateDisconnect,
|
||
|
TcpIndicateRetrieve,
|
||
|
TcpIndicateAbort
|
||
|
} TCP_OFFLOAD_EVENT_TYPE, *PTCP_OFFLOAD_EVENT_TYPE;
|
||
|
|
||
|
|
||
|
//
|
||
|
// Flags part of the TCP constant state.
|
||
|
//
|
||
|
#define TCP_FLAG_TIMESTAMP_ENABLED 0x01
|
||
|
#define TCP_FLAG_SACK_ENABLED 0x02
|
||
|
#define TCP_FLAG_WINDOW_SCALING_ENABLED 0x04
|
||
|
|
||
|
//
|
||
|
// TCP_OFFLOAD_STATE_CONST
|
||
|
//
|
||
|
// Constant fields of a Connection.
|
||
|
//
|
||
|
typedef struct _TCP_OFFLOAD_STATE_CONST
|
||
|
{
|
||
|
OFFLOAD_STATE_HEADER Header;
|
||
|
USHORT Flags;
|
||
|
USHORT RemotePort;
|
||
|
USHORT LocalPort;
|
||
|
UCHAR SndWindScale: 4;
|
||
|
UCHAR RcvWindScale: 4;
|
||
|
USHORT RemoteMss;
|
||
|
ULONG HashValue;
|
||
|
} TCP_OFFLOAD_STATE_CONST, *PTCP_OFFLOAD_STATE_CONST;
|
||
|
|
||
|
//
|
||
|
// Flags part of the TCP cached state.
|
||
|
//
|
||
|
#define TCP_FLAG_KEEP_ALIVE_ENABLED 0x01
|
||
|
#define TCP_FLAG_NAGLING_ENABLED 0x02
|
||
|
#define TCP_FLAG_KEEP_ALIVE_RESTART 0x04
|
||
|
#define TCP_FLAG_MAX_RT_RESTART 0x08
|
||
|
#define TCP_FLAG_UPDATE_RCV_WND 0x10
|
||
|
|
||
|
//
|
||
|
// TCP_OFFLOAD_STATE_CACHED
|
||
|
//
|
||
|
// Cached fields of a TCB.
|
||
|
//
|
||
|
typedef struct _TCP_OFFLOAD_STATE_CACHED
|
||
|
{
|
||
|
OFFLOAD_STATE_HEADER Header;
|
||
|
USHORT Flags;
|
||
|
ULONG InitialRcvWnd;
|
||
|
ULONG RcvIndicationSize;
|
||
|
UCHAR KaProbeCount;
|
||
|
ULONG KaTimeout;
|
||
|
ULONG KaInterval;
|
||
|
ULONG MaxRT;
|
||
|
ULONG FlowLabel:20;
|
||
|
UCHAR TtlOrHopLimit;
|
||
|
UCHAR TosOrTrafficClass;
|
||
|
UCHAR UserPriority:3;
|
||
|
} TCP_OFFLOAD_STATE_CACHED, *PTCP_OFFLOAD_STATE_CACHED;
|
||
|
|
||
|
//
|
||
|
// TCP_OFFLOAD_STATE_DELEGATED
|
||
|
//
|
||
|
// Delegated fields of a TCB.
|
||
|
//
|
||
|
typedef struct _TCP_OFFLOAD_STATE_DELEGATED
|
||
|
{
|
||
|
OFFLOAD_STATE_HEADER Header;
|
||
|
TCP_OFFLOAD_CONNECTION_STATE State;
|
||
|
USHORT Flags;
|
||
|
ULONG RcvNxt;
|
||
|
ULONG RcvWnd;
|
||
|
ULONG SndUna;
|
||
|
ULONG SndNxt;
|
||
|
ULONG SndMax;
|
||
|
ULONG SndWnd;
|
||
|
ULONG MaxSndWnd;
|
||
|
ULONG SendWL1;
|
||
|
ULONG CWnd;
|
||
|
ULONG SsThresh;
|
||
|
USHORT SRtt;
|
||
|
USHORT RttVar;
|
||
|
ULONG TsRecent;
|
||
|
ULONG TsRecentAge;
|
||
|
ULONG TsTime;
|
||
|
ULONG TotalRT;
|
||
|
UCHAR DupAckCount;
|
||
|
UCHAR SndWndProbeCount;
|
||
|
|
||
|
struct
|
||
|
{
|
||
|
UCHAR ProbeCount;
|
||
|
ULONG TimeoutDelta;
|
||
|
} KeepAlive;
|
||
|
|
||
|
struct
|
||
|
{
|
||
|
UCHAR Count;
|
||
|
ULONG TimeoutDelta;
|
||
|
} Retransmit;
|
||
|
|
||
|
union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
PNET_BUFFER_LIST SendDataHead;
|
||
|
PNET_BUFFER_LIST SendDataTail;
|
||
|
};
|
||
|
|
||
|
ULONG SendBacklogSize;
|
||
|
};
|
||
|
|
||
|
union
|
||
|
{
|
||
|
PNET_BUFFER_LIST BufferedData;
|
||
|
ULONG ReceiveBacklogSize;
|
||
|
};
|
||
|
#if NDIS_SUPPORT_NDIS61
|
||
|
ULONG DWnd;
|
||
|
#endif // NDIS_SUPPORT_NDIS61
|
||
|
} TCP_OFFLOAD_STATE_DELEGATED, *PTCP_OFFLOAD_STATE_DELEGATED;
|
||
|
|
||
|
//
|
||
|
// PATH_OFFLOAD_STATE_CONST
|
||
|
//
|
||
|
// IP path constant parameters.
|
||
|
//
|
||
|
typedef struct _PATH_OFFLOAD_STATE_CONST
|
||
|
{
|
||
|
OFFLOAD_STATE_HEADER Header;
|
||
|
CONST UCHAR *SourceAddress;
|
||
|
CONST UCHAR *DestinationAddress;
|
||
|
} PATH_OFFLOAD_STATE_CONST, *PPATH_OFFLOAD_STATE_CONST;
|
||
|
|
||
|
//
|
||
|
// PATH_OFFLOAD_STATE_CACHED
|
||
|
//
|
||
|
// IP path cached parameters.
|
||
|
//
|
||
|
typedef struct _PATH_OFFLOAD_STATE_CACHED
|
||
|
{
|
||
|
OFFLOAD_STATE_HEADER Header;
|
||
|
ULONG PathMtu;
|
||
|
} PATH_OFFLOAD_STATE_CACHED, *PPATH_OFFLOAD_STATE_CACHED;
|
||
|
|
||
|
//
|
||
|
// PATH_OFFLOAD_STATE_DELEGATED
|
||
|
//
|
||
|
// IP path delegated parameters.
|
||
|
//
|
||
|
typedef struct _PATH_OFFLOAD_STATE_DELEGATED
|
||
|
{
|
||
|
OFFLOAD_STATE_HEADER Header;
|
||
|
} PATH_OFFLOAD_STATE_DELEGATED, *PPATH_OFFLOAD_STATE_DELEGATED;
|
||
|
|
||
|
//
|
||
|
// NEIGHBOR_OFFLOAD_STATE_CONST
|
||
|
//
|
||
|
// Neighbor const parameters.
|
||
|
//
|
||
|
typedef struct _NEIGHBOR_OFFLOAD_STATE_CONST
|
||
|
{
|
||
|
OFFLOAD_STATE_HEADER Header;
|
||
|
UCHAR DlSourceAddress[32];
|
||
|
ULONG VlanId: 12;
|
||
|
} NEIGHBOR_OFFLOAD_STATE_CONST, *PNEIGHBOR_OFFLOAD_STATE_CONST;
|
||
|
|
||
|
//
|
||
|
// NEIGHBOR_OFFLOAD_STATE_CACHED
|
||
|
//
|
||
|
// Neighbor cached parameters.
|
||
|
//
|
||
|
typedef struct _NEIGHBOR_OFFLOAD_STATE_CACHED
|
||
|
{
|
||
|
OFFLOAD_STATE_HEADER Header;
|
||
|
UCHAR DlDestinationAddress[32];
|
||
|
ULONG HostReachabilityDelta;
|
||
|
} NEIGHBOR_OFFLOAD_STATE_CACHED, *PNEIGHBOR_OFFLOAD_STATE_CACHED;
|
||
|
|
||
|
//
|
||
|
// NEIGHBOR_OFFLOAD_STATE_DELEGATED
|
||
|
//
|
||
|
// Neighbor cached parameters.
|
||
|
//
|
||
|
typedef struct _NEIGHBOR_OFFLOAD_STATE_DELEGATED
|
||
|
{
|
||
|
OFFLOAD_STATE_HEADER Header;
|
||
|
ULONG NicReachabilityDelta;
|
||
|
} NEIGHBOR_OFFLOAD_STATE_DELEGATED, *PNEIGHBOR_OFFLOAD_STATE_DELEGATED;
|
||
|
|
||
|
|
||
|
//
|
||
|
// TCP_OFFLOAD_STATS
|
||
|
//
|
||
|
// Statistics definitions in TCP on a per interface basis
|
||
|
//
|
||
|
typedef struct _TCP_OFFLOAD_STATS
|
||
|
{
|
||
|
ULONG64 InSegments;
|
||
|
ULONG64 OutSegments;
|
||
|
ULONG CurrentlyEstablished;
|
||
|
ULONG ResetEstablished;
|
||
|
ULONG RetransmittedSegments;
|
||
|
ULONG InErrors;
|
||
|
ULONG OutResets;
|
||
|
} TCP_OFFLOAD_STATS, *PTCP_OFFLOAD_STATS;
|
||
|
|
||
|
//
|
||
|
// IP_OFFLOAD_STATS
|
||
|
//
|
||
|
// Stats definitions in IPV4/IPV6 on a per interface basis
|
||
|
//
|
||
|
typedef struct _IP_OFFLOAD_STATS
|
||
|
{
|
||
|
ULONG64 InReceives;
|
||
|
ULONG64 InOctets;
|
||
|
ULONG64 InDelivers;
|
||
|
ULONG64 OutRequests;
|
||
|
ULONG64 OutOctets;
|
||
|
ULONG InHeaderErrors;
|
||
|
ULONG InTruncatedPackets;
|
||
|
ULONG InDiscards;
|
||
|
ULONG OutDiscards;
|
||
|
ULONG OutNoRoutes;
|
||
|
} IP_OFFLOAD_STATS, *PIP_OFFLOAD_STATS;
|
||
|
|
||
|
|
||
|
typedef struct _NDIS_OFFLOAD_HANDLE
|
||
|
{
|
||
|
PVOID NdisReserved[1];
|
||
|
PVOID MiniportOffloadContext;
|
||
|
} NDIS_OFFLOAD_HANDLE, *PNDIS_OFFLOAD_HANDLE;
|
||
|
|
||
|
|
||
|
//
|
||
|
// Internal wrapper sround NDIS_OFFLOAD_HANDLE.
|
||
|
// ProtocolBindingContext is required for handling Receive Indications in FL.
|
||
|
//
|
||
|
typedef struct _NDIS_OFFLOAD_HANDLE_PRIVATE
|
||
|
{
|
||
|
NDIS_OFFLOAD_HANDLE Handle;
|
||
|
PVOID ProtocolBindingContext;
|
||
|
} NDIS_OFFLOAD_HANDLE_PRIVATE, *PNDIS_OFFLOAD_HANDLE_PRIVATE;
|
||
|
|
||
|
|
||
|
typedef struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST
|
||
|
{
|
||
|
IN NDIS_OBJECT_HEADER Header;
|
||
|
IN struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *NextBlock;
|
||
|
IN struct _NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST *DependentBlockList;
|
||
|
OUT NDIS_STATUS Status;
|
||
|
IN PVOID NdisReserved[3];
|
||
|
IN OUT PNDIS_OFFLOAD_HANDLE OffloadHandle;
|
||
|
IN PVOID ProtocolReserved[2];
|
||
|
IN PVOID MiniportReserved[2];
|
||
|
IN PVOID ImReserved[2];
|
||
|
IN PVOID Scratch[2];
|
||
|
IN PVOID SourceHandle;
|
||
|
IN NDIS_PORT_NUMBER PortNumber;
|
||
|
IN OUT PNET_BUFFER_LIST NetBufferListChain;
|
||
|
//
|
||
|
// The state specific information (if any) will follow this.
|
||
|
//
|
||
|
} NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST, *PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST;
|
||
|
|
||
|
//
|
||
|
// Generic offload functions supported by the protocol.
|
||
|
//
|
||
|
typedef
|
||
|
VOID
|
||
|
(*INITIATE_OFFLOAD_COMPLETE_HANDLER)(
|
||
|
IN NDIS_HANDLE ProtocolBindingContext,
|
||
|
IN PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*TERMINATE_OFFLOAD_COMPLETE_HANDLER)(
|
||
|
IN NDIS_HANDLE ProtocolBindingContext,
|
||
|
IN PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*INVALIDATE_OFFLOAD_COMPLETE_HANDLER)(
|
||
|
IN NDIS_HANDLE ProtocolBindingContext,
|
||
|
IN PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*UPDATE_OFFLOAD_COMPLETE_HANDLER)(
|
||
|
IN NDIS_HANDLE ProtocolBindingContext,
|
||
|
IN PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*QUERY_OFFLOAD_COMPLETE_HANDLER)(
|
||
|
IN NDIS_HANDLE ProtocolBindingContext,
|
||
|
IN PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Generic indication handlers supported by the protocol.
|
||
|
//
|
||
|
typedef
|
||
|
VOID
|
||
|
(*INDICATE_OFFLOAD_EVENT_HANDLER)(
|
||
|
IN NDIS_HANDLE ProtocolBindingContext,
|
||
|
IN PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST OffloadBlockList,
|
||
|
IN ULONG IndicationCode
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Tcp offload specific functions supported by the protocol, for completions.
|
||
|
//
|
||
|
typedef
|
||
|
VOID
|
||
|
(*TCP_OFFLOAD_SEND_COMPLETE_HANDLER)(
|
||
|
IN NDIS_HANDLE ProtocolBindingContext,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*TCP_OFFLOAD_RECV_COMPLETE_HANDLER)(
|
||
|
IN NDIS_HANDLE ProtocolBindingContext,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*TCP_OFFLOAD_DISCONNECT_COMPLETE_HANDLER)(
|
||
|
IN NDIS_HANDLE ProtocolBindingContext,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*TCP_OFFLOAD_FORWARD_COMPLETE_HANDLER)(
|
||
|
IN NDIS_HANDLE ProtocolBindingContext,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Tcp offload specific functions supported by the protocol, for indications.
|
||
|
//
|
||
|
typedef
|
||
|
VOID
|
||
|
(*TCP_OFFLOAD_EVENT_HANDLER)(
|
||
|
IN PVOID OffloadContext,
|
||
|
IN ULONG EventType,
|
||
|
IN ULONG EventSpecificInformation
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
NDIS_STATUS
|
||
|
(*TCP_OFFLOAD_RECEIVE_INDICATE_HANDLER)(
|
||
|
IN PVOID OffloadContext,
|
||
|
IN PNET_BUFFER_LIST NetBufferList,
|
||
|
IN NDIS_STATUS Status,
|
||
|
OUT PULONG BytesConsumed
|
||
|
);
|
||
|
|
||
|
typedef struct _NDIS_OFFLOAD_CLIENT_HANDLERS
|
||
|
{
|
||
|
NDIS_OBJECT_HEADER Header;
|
||
|
} NDIS_OFFLOAD_CLIENT_HANDLERS, *PNDIS_OFFLOAD_CLIENT_HANDLERS;
|
||
|
|
||
|
typedef struct _NDIS_TCP_OFFLOAD_CLIENT_HANDLERS
|
||
|
{
|
||
|
NDIS_OBJECT_HEADER Header;
|
||
|
TCP_OFFLOAD_SEND_COMPLETE_HANDLER TcpOffloadSendCompleteHandler;
|
||
|
TCP_OFFLOAD_RECV_COMPLETE_HANDLER TcpOffloadReceiveCompleteHandler;
|
||
|
TCP_OFFLOAD_DISCONNECT_COMPLETE_HANDLER TcpOffloadDisconnectCompleteHandler;
|
||
|
TCP_OFFLOAD_FORWARD_COMPLETE_HANDLER TcpOffloadForwardCompleteHandler;
|
||
|
TCP_OFFLOAD_EVENT_HANDLER TcpOffloadEventHandler;
|
||
|
TCP_OFFLOAD_RECEIVE_INDICATE_HANDLER TcpOffloadReceiveIndicateHandler;
|
||
|
} NDIS_TCP_OFFLOAD_CLIENT_HANDLERS, *PNDIS_TCP_OFFLOAD_CLIENT_HANDLERS;
|
||
|
|
||
|
|
||
|
#define NDIS_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS_REVISION_1 1
|
||
|
|
||
|
typedef struct _NDIS_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS
|
||
|
{
|
||
|
NDIS_OBJECT_HEADER Header; // Header.Type = NDIS_OBJECT_TYPE_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS
|
||
|
ULONG Flags;
|
||
|
//
|
||
|
// Generic Offload initiation and termination completion handlers.
|
||
|
//
|
||
|
INITIATE_OFFLOAD_COMPLETE_HANDLER InitiateOffloadCompleteHandler;
|
||
|
TERMINATE_OFFLOAD_COMPLETE_HANDLER TerminateOffloadCompleteHandler;
|
||
|
|
||
|
//
|
||
|
// Generic offload state control request completion handlers.
|
||
|
//
|
||
|
UPDATE_OFFLOAD_COMPLETE_HANDLER UpdateOffloadCompleteHandler;
|
||
|
INVALIDATE_OFFLOAD_COMPLETE_HANDLER InvalidateOffloadCompleteHandler;
|
||
|
QUERY_OFFLOAD_COMPLETE_HANDLER QueryOffloadCompleteHandler;
|
||
|
|
||
|
//
|
||
|
// Generic offload state indication handlers.
|
||
|
//
|
||
|
INDICATE_OFFLOAD_EVENT_HANDLER IndicateOffloadEventHandler;
|
||
|
|
||
|
} NDIS_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS, *PNDIS_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS;
|
||
|
|
||
|
#define NDIS_SIZEOF_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS_REVISION_1 \
|
||
|
RTL_SIZEOF_THROUGH_FIELD(NDIS_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS, IndicateOffloadEventHandler)
|
||
|
|
||
|
#define NDIS_CLIENT_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS_REVISION_1 1
|
||
|
|
||
|
typedef struct _NDIS_CLIENT_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS
|
||
|
{
|
||
|
NDIS_OBJECT_HEADER Header; // Header.Type = NDIS_OBJECT_TYPE_CLIENT_CHIMNEY_OFFLOAD_CHARACTERISTICS
|
||
|
ULONG Flags;
|
||
|
NDIS_CHIMNEY_OFFLOAD_TYPE OffloadType; // NdisTcpChimneyOffload
|
||
|
TCP_OFFLOAD_SEND_COMPLETE_HANDLER TcpOffloadSendCompleteHandler;
|
||
|
TCP_OFFLOAD_RECV_COMPLETE_HANDLER TcpOffloadReceiveCompleteHandler;
|
||
|
TCP_OFFLOAD_DISCONNECT_COMPLETE_HANDLER TcpOffloadDisconnectCompleteHandler;
|
||
|
TCP_OFFLOAD_FORWARD_COMPLETE_HANDLER TcpOffloadForwardCompleteHandler;
|
||
|
TCP_OFFLOAD_EVENT_HANDLER TcpOffloadEventHandler;
|
||
|
TCP_OFFLOAD_RECEIVE_INDICATE_HANDLER TcpOffloadReceiveIndicateHandler;
|
||
|
} NDIS_CLIENT_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS, *PNDIS_CLIENT_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS;
|
||
|
|
||
|
#define NDIS_SIZEOF_CLIENT_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS_REVISION_1 \
|
||
|
RTL_SIZEOF_THROUGH_FIELD(NDIS_CLIENT_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS, TcpOffloadReceiveIndicateHandler)
|
||
|
|
||
|
//
|
||
|
// Generic offload functions supported by NDIS, for use by the protocol.
|
||
|
//
|
||
|
EXPORT
|
||
|
VOID
|
||
|
NdisInitiateOffload(
|
||
|
IN NDIS_HANDLE NdisBindingHandle,
|
||
|
IN OUT PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
EXPORT
|
||
|
VOID
|
||
|
NdisTerminateOffload(
|
||
|
IN NDIS_HANDLE NdisBindingHandle,
|
||
|
IN OUT PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
EXPORT
|
||
|
VOID
|
||
|
NdisInvalidateOffload(
|
||
|
IN NDIS_HANDLE NdisBindingHandle,
|
||
|
IN PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
EXPORT
|
||
|
VOID
|
||
|
NdisUpdateOffload(
|
||
|
IN NDIS_HANDLE NdisBindingHandle,
|
||
|
IN PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
EXPORT
|
||
|
VOID
|
||
|
NdisQueryOffloadState(
|
||
|
IN NDIS_HANDLE NdisBindingHandle,
|
||
|
IN PNDIS_PROTOCOL_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Tcp specific offload functions supported by NDIS, for use by the protocol.
|
||
|
//
|
||
|
EXPORT
|
||
|
NDIS_STATUS
|
||
|
NdisOffloadTcpSend(
|
||
|
IN PNDIS_OFFLOAD_HANDLE NdisOffloadHandle,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
EXPORT
|
||
|
NDIS_STATUS
|
||
|
NdisOffloadTcpReceive(
|
||
|
IN PNDIS_OFFLOAD_HANDLE NdisOffloadHandle,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
EXPORT
|
||
|
NDIS_STATUS
|
||
|
NdisOffloadTcpDisconnect(
|
||
|
IN PNDIS_OFFLOAD_HANDLE NdisOffloadHandle,
|
||
|
IN PNET_BUFFER_LIST NetBufferList,
|
||
|
IN ULONG Flags
|
||
|
);
|
||
|
|
||
|
EXPORT
|
||
|
NDIS_STATUS
|
||
|
NdisOffloadTcpForward(
|
||
|
IN PNDIS_OFFLOAD_HANDLE NdisOffloadHandle,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
NdisOffloadTcpReceiveReturn(
|
||
|
IN NDIS_HANDLE NdisBindingHandle,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
typedef struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST
|
||
|
{
|
||
|
IN NDIS_OBJECT_HEADER Header;
|
||
|
IN struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *NextBlock;
|
||
|
IN struct _NDIS_MINIPORT_OFFLOAD_BLOCK_LIST *DependentBlockList;
|
||
|
OUT NDIS_STATUS Status;
|
||
|
IN PVOID NdisReserved[2];
|
||
|
IN OUT PVOID *MiniportOffloadContext;
|
||
|
IN NDIS_HANDLE NdisOffloadHandle;
|
||
|
IN PVOID ProtocolReserved[2];
|
||
|
IN PVOID MiniportReserved[2];
|
||
|
IN PVOID ImReserved[2];
|
||
|
IN PVOID Scratch[2];
|
||
|
IN PVOID SourceHandle;
|
||
|
IN NDIS_PORT_NUMBER PortNumber;
|
||
|
IN OUT PNET_BUFFER_LIST NetBufferListChain;
|
||
|
//
|
||
|
// The state specific information (if any) will follow this.
|
||
|
//
|
||
|
} NDIS_MINIPORT_OFFLOAD_BLOCK_LIST, *PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST;
|
||
|
|
||
|
//
|
||
|
// Generic offload functions supported by the miniport.
|
||
|
//
|
||
|
typedef
|
||
|
VOID
|
||
|
(*W_INITIATE_OFFLOAD_HANDLER)(
|
||
|
IN NDIS_HANDLE MiniportAdapterContext,
|
||
|
IN OUT PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*W_TERMINATE_OFFLOAD_HANDLER)(
|
||
|
IN NDIS_HANDLE MiniportAdapterContext,
|
||
|
IN OUT PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*W_INVALIDATE_OFFLOAD_HANDLER)(
|
||
|
IN NDIS_HANDLE MiniportAdapterContext,
|
||
|
IN PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*W_UPDATE_OFFLOAD_HANDLER)(
|
||
|
IN NDIS_HANDLE MiniportAdapterContext,
|
||
|
IN PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*W_QUERY_OFFLOAD_HANDLER)(
|
||
|
IN NDIS_HANDLE MiniportAdapterContext,
|
||
|
IN OUT PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Tcp specific offload functions supported by the miniport.
|
||
|
//
|
||
|
typedef
|
||
|
NDIS_STATUS
|
||
|
(*W_TCP_OFFLOAD_SEND_HANDLER)(
|
||
|
IN NDIS_HANDLE MiniportAdapterContext,
|
||
|
IN PVOID MiniportOffloadContext,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
NDIS_STATUS
|
||
|
(*W_TCP_OFFLOAD_RECEIVE_HANDLER)(
|
||
|
IN NDIS_HANDLE MiniportAdapterContext,
|
||
|
IN PVOID MiniportOffloadContext,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
NDIS_STATUS
|
||
|
(*W_TCP_OFFLOAD_DISCONNECT_HANDLER)(
|
||
|
IN NDIS_HANDLE MiniportAdapterContext,
|
||
|
IN PVOID MiniportOffloadContext,
|
||
|
IN PNET_BUFFER_LIST NetBufferList,
|
||
|
IN ULONG Flags
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
NDIS_STATUS
|
||
|
(*W_TCP_OFFLOAD_FORWARD_HANDLER)(
|
||
|
IN NDIS_HANDLE MiniportAdapterContext,
|
||
|
IN PVOID MiniportOffloadContext,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
|
||
|
typedef
|
||
|
NDIS_STATUS
|
||
|
(*W_TCP_OFFLOAD_RECEIVE_RETURN_HANDLER)(
|
||
|
IN NDIS_HANDLE MiniportAdapterContext,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
|
||
|
typedef struct _NDIS_PROVIDER_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS
|
||
|
{
|
||
|
NDIS_OBJECT_HEADER Header; // Header.Type = NDIS_OBJECT_TYPE_PROVIDER_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS
|
||
|
ULONG Flags;
|
||
|
|
||
|
//
|
||
|
// Generic Offload initiation and termination handlers.
|
||
|
//
|
||
|
W_INITIATE_OFFLOAD_HANDLER InitiateOffloadHandler;
|
||
|
W_TERMINATE_OFFLOAD_HANDLER TerminateOffloadHandler;
|
||
|
|
||
|
//
|
||
|
// Generic offload state control functions.
|
||
|
//
|
||
|
W_UPDATE_OFFLOAD_HANDLER UpdateOffloadHandler;
|
||
|
W_INVALIDATE_OFFLOAD_HANDLER InvalidateOffloadHandler;
|
||
|
W_QUERY_OFFLOAD_HANDLER QueryOffloadHandler;
|
||
|
|
||
|
} NDIS_PROVIDER_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS, *PNDIS_PROVIDER_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS;
|
||
|
|
||
|
typedef struct _NDIS_PROVIDER_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS
|
||
|
{
|
||
|
NDIS_OBJECT_HEADER Header; // Header.Type = NDIS_OBJECT_TYPE_PROVIDER_CHIMNEY_OFFLOAD_CHARACTERISTICS
|
||
|
ULONG Flags;
|
||
|
NDIS_CHIMNEY_OFFLOAD_TYPE OffloadType; // NdisTcpChimneyOffload
|
||
|
//
|
||
|
// TCP function handlers
|
||
|
//
|
||
|
W_TCP_OFFLOAD_SEND_HANDLER TcpOffloadSendHandler;
|
||
|
W_TCP_OFFLOAD_RECEIVE_HANDLER TcpOffloadReceiveHandler;
|
||
|
W_TCP_OFFLOAD_DISCONNECT_HANDLER TcpOffloadDisconnectHandler;
|
||
|
W_TCP_OFFLOAD_FORWARD_HANDLER TcpOffloadForwardHandler;
|
||
|
|
||
|
//
|
||
|
// Receive return handler.
|
||
|
//
|
||
|
W_TCP_OFFLOAD_RECEIVE_RETURN_HANDLER TcpOffloadReceiveReturnHandler;
|
||
|
|
||
|
} NDIS_PROVIDER_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS, *PNDIS_PROVIDER_CHIMNEY_OFFLOAD_TCP_CHARACTERISTICS;
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Generic offload functions supported by NDIS for use by the miniport.
|
||
|
//
|
||
|
EXPORT
|
||
|
VOID
|
||
|
NdisMInitiateOffloadComplete(
|
||
|
IN NDIS_HANDLE NdisMiniportHandle,
|
||
|
IN PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
EXPORT
|
||
|
VOID
|
||
|
NdisMTerminateOffloadComplete(
|
||
|
IN NDIS_HANDLE NdisMiniportHandle,
|
||
|
IN PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
EXPORT
|
||
|
VOID
|
||
|
NdisMInvalidateOffloadComplete(
|
||
|
IN NDIS_HANDLE NdisMiniportHandle,
|
||
|
IN PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
EXPORT
|
||
|
VOID
|
||
|
NdisMUpdateOffloadComplete(
|
||
|
IN NDIS_HANDLE NdisMiniportHandle,
|
||
|
IN PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
EXPORT
|
||
|
VOID
|
||
|
NdisMQueryOffloadStateComplete(
|
||
|
IN NDIS_HANDLE NdisMiniportHandle,
|
||
|
IN PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Generic offload event indication handlers.
|
||
|
//
|
||
|
EXPORT
|
||
|
VOID
|
||
|
NdisMOffloadEventIndicate(
|
||
|
IN NDIS_HANDLE NdisMiniportHandle,
|
||
|
IN PNDIS_MINIPORT_OFFLOAD_BLOCK_LIST OffloadBlockList,
|
||
|
IN ULONG IndicationCode
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Tcp offload specific functions supported by NDIS used for completions.
|
||
|
//
|
||
|
typedef
|
||
|
VOID
|
||
|
(*NDIS_TCP_OFFLOAD_SEND_COMPLETE)(
|
||
|
IN NDIS_HANDLE NdisMiniportHandle,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE)(
|
||
|
IN NDIS_HANDLE NdisMiniportHandle,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*NDIS_TCP_OFFLOAD_DISCONNECT_COMPLETE)(
|
||
|
IN NDIS_HANDLE NdisMiniportHandle,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
VOID
|
||
|
(*NDIS_TCP_OFFLOAD_FORWARD_COMPLETE)(
|
||
|
IN NDIS_HANDLE NdisMiniportHandle,
|
||
|
IN PNET_BUFFER_LIST NetBufferList
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Tcp offload specific functions supported by NDIS used for indication.
|
||
|
//
|
||
|
typedef
|
||
|
VOID
|
||
|
(*NDIS_TCP_OFFLOAD_EVENT_INDICATE)(
|
||
|
IN NDIS_HANDLE NdisOffloadHandle,
|
||
|
IN ULONG EventType,
|
||
|
IN ULONG EventSpecificInformation
|
||
|
);
|
||
|
|
||
|
typedef
|
||
|
NDIS_STATUS
|
||
|
(*NDIS_TCP_OFFLOAD_RECEIVE_INDICATE)(
|
||
|
IN NDIS_HANDLE NdisOffloadHandle,
|
||
|
IN PNET_BUFFER_LIST NetBufferList,
|
||
|
IN NDIS_STATUS Status,
|
||
|
OUT PULONG BytesConsumed
|
||
|
);
|
||
|
|
||
|
typedef struct _NDIS_OFFLOAD_EVENT_HANDLERS
|
||
|
{
|
||
|
NDIS_OBJECT_HEADER Header;
|
||
|
} NDIS_OFFLOAD_EVENT_HANDLERS, *PNDIS_OFFLOAD_EVENT_HANDLERS;
|
||
|
|
||
|
|
||
|
EXPORT
|
||
|
NDIS_STATUS
|
||
|
NdisMGetOffloadHandlers(
|
||
|
IN NDIS_HANDLE NdisMiniportHandle,
|
||
|
IN NDIS_CHIMNEY_OFFLOAD_TYPE ChimneyType,
|
||
|
OUT PNDIS_OFFLOAD_EVENT_HANDLERS *OffloadHandlers
|
||
|
);
|
||
|
|
||
|
|
||
|
#define NDIS_OBJECT_TCP_OFFLOAD_REVISION_1 1
|
||
|
|
||
|
typedef struct _NDIS_TCP_OFFLOAD_EVENT_HANDLERS
|
||
|
{
|
||
|
NDIS_OBJECT_HEADER Header;
|
||
|
NDIS_TCP_OFFLOAD_EVENT_INDICATE NdisTcpOffloadEventHandler;
|
||
|
NDIS_TCP_OFFLOAD_RECEIVE_INDICATE NdisTcpOffloadReceiveHandler;
|
||
|
NDIS_TCP_OFFLOAD_SEND_COMPLETE NdisTcpOffloadSendComplete;
|
||
|
NDIS_TCP_OFFLOAD_RECEIVE_COMPLETE NdisTcpOffloadReceiveComplete;
|
||
|
NDIS_TCP_OFFLOAD_DISCONNECT_COMPLETE NdisTcpOffloadDisconnectComplete;
|
||
|
NDIS_TCP_OFFLOAD_FORWARD_COMPLETE NdisTcpOffloadForwardComplete;
|
||
|
} NDIS_TCP_OFFLOAD_EVENT_HANDLERS, *PNDIS_TCP_OFFLOAD_EVENT_HANDLERS;
|
||
|
|
||
|
#define NDIS_SIZEOF_TCP_OFFLOAD_EVENT_HANDLERS_REVISION_1 \
|
||
|
RTL_SIZEOF_THROUGH_FIELD(NDIS_TCP_OFFLOAD_EVENT_HANDLERS, NdisTcpOffloadForwardComplete)
|
||
|
|
||
|
#endif //#if (defined(NDIS60) || NDIS_WRAPPER || defined(NDIS61))
|
||
|
#endif //_CHIMNEY_OFFLOAD
|
||
|
|
||
|
|