TCP_OFFLOAD_STATE_CACHED结构 (ndischimney.h)

[TCP 烟囱卸载功能已弃用,不应使用。

TCP_OFFLOAD_STATE_CACHED结构包含 TCP 连接状态对象的缓存变量。

语法

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;

成员

Header

OFFLOAD_STATE_HEADER结构。 NDIS 将标头Length 成员设置为TCP_OFFLOAD_STATE_CACHED结构的大小(以字节为单位)。 标头RecognizedOptions 成员保留。

Flags

可以设置为零或以下任何标志的位掩码,并结合按位 OR:

TCP_FLAG_KEEP_ALIVE_ENABLED

主机堆栈设置此标志以在连接上启用 keepalive 选项。 主机堆栈清除此标志以禁用连接上的 keepalive 选项。 有关 keepalive 选项的详细信息,请参阅 RFC 1122。

TCP_FLAG_NAGLING_ENABLED

主机堆栈设置此标志以在连接上启用 Nagle 算法。 主机堆栈清除此标志以在连接上禁用 Nagle 算法。 有关 Nagle 算法的详细信息,请参阅 RFC 896。

TCP_FLAG_KEEP_ALIVE_RESTART

主机堆栈设置此标志,使卸载目标将其保留计时器重置为零。

TCP_FLAG_MAX_RT_RESTART

主机堆栈设置此标志,使卸载目标重置 TCP 委托状态中的 TotalRT 变量,使连接为零。

TCP_FLAG_UPDATE_RCV_WND

主机堆栈设置此标志,以指示TCP_OFFLOAD_STATE_CACHED结构) 已更改 (InitialRcvWnd 的默认接收窗口大小。 如果 InitialRcvWnd 的值不同于卸载目标的 currrent 接收窗口大小, (TCP_OFFLOAD_STATE_DELEGATED 结构中的 RcvWnd) ,则卸载目标必须将新的接收窗口大小播发给对等方。

InitialRcvWnd

从套接字选项SO_RCVBUF) 的默认接收窗口 (。

RcvIndicationSize

NULL 时,卸载目标应在单个调用中提供的最佳数据字节数 NdisTcpOffloadReceiveHandler 函数。 此数字通常介于数十个字节和数百个字节之间,不是建议。 卸载目标可以指示大于或小于 RcvIndicationSize 数据字节。 但是,为了获得最佳性能,卸载目标应指示
RcvIndicationSize 数据字节。 有关详细信息,请参阅 NdisTcpOffloadReceiveHandler

如果 为 NULL则未指定 RcvIndicationSize 。 在这种情况下,卸载目标应忽略 RcvIndicationSize ,并在调用 NdisTcpOffloadReceiveHandler 函数时指示尽可能多的数据。

KaProbeCount

卸载目标应发送的保留探测数,以确定 TCP 连接是否完好无损, (看到 RFC 1122) 。

KaTimeout

此成员指定在发送保持探测之前处于非活动状态的超时间隔, (请参阅 RFC 1122) 。

KaInterval

此成员指定时钟周期中的超时时间,如果未收到对保留探测的响应, (看到 RFC 1122) ,则返回保留帧。

MaxRT

此成员指定在时钟周期中,卸载目标应花费重新传输段的最大时间。 If the value of MaxRT is non-zero, MaxRT overrides TcpMaximumRetransmissions in the NDIS_TASK_TCP_CONNECTION_OFFLOAD 结构。 MaxRT 的默认值为零,这意味着 TcpMaximumRetransmissions 设置卸载目标应在 TCP 连接上重新传输段的最大次数。 如果 MaxRT 的值是 FFFFFFFF (或 -1) ,则重新传输的最大数目没有限制。 当 MaxRT 为非零时,卸载目标应重置连接 TCP 委托状态中的 TotalRT 变量。 TotalRT 指示卸载目标重新传输当前 TCP 段的总时间(以时钟周期为单位)。

FlowLabel

此成员通过干预路由器(例如,非默认 QoS 或“实时”服务)标记主机标记的数据包进行特殊处理, (请参阅 RFC 2460) 。 此变量是通过套接字选项设置的,在 TCP 连接的生存期内可能会有所不同。 仅当 TCP 连接通过 IPv6 时,此变量才有意义。

TtlOrHopLimit

如果 TCP 连接通过 IPv4,则此成员指定生存时间 (请参阅 RFC 791) 。 此变量是通过套接字选项设置的,在 TCP 连接的生存期内可能会有所不同。

如果 TCP 连接通过 IPv6,则此成员指定数据包可以传递的路由器数, (看到 RFC 2460) 。 此变量是通过套接字选项设置的,在 TCP 连接的生存期内可能会有所不同。

TosOrTrafficClass

如果 TCP 连接通过 IPv4,则此成员指定用于路由数据包的服务类型 (请参阅 RFC 2474) 。 此变量是通过套接字选项设置的,在 TCP 连接的生存期内可能会有所不同。

如果 TCP 连接超过 IPv6,则此成员会根据流量类型确定数据包的值的优先级,指示发送方将丢弃的数据包 (看到 RFC 2460) 。 此变量是通过套接字选项设置的,在 TCP 连接的生存期内可能会有所不同。

UserPriority

3 位优先级值。 如果卸载目标支持 802.1p 数据包信息,则必须将此优先级值插入到它在卸载的 TCP 连接上传输的所有数据包的 标记标头 中。 如果卸载目标不支持 802.1p 数据包信息,则它应忽略 UserPriority 。 有关支持 802.1p 数据包信息的详细信息,请参阅 卸载 TCP 连接的 802.1Q 和 802.1p 处理

备注

缓存的变量由主机堆栈拥有和维护。 卸载目标不得更改缓存变量的值,除非主机堆栈请求这样做。 如果缓存变量的值发生更改,主机堆栈会请求更新该变量,这会导致 NDIS 调用卸载目标的 MiniportUpdateOffload 函数。 当主机堆栈通过导致 NDIS 调用卸载目标时终止一个或多个状态对象的卸载 MiniportTerminateOffload 函数,卸载目标不会将卸载常量变量的值返回到主机堆栈。

请注意,如果设置了卸载的 TCP 连接TCP_FLAG_MAX_RT_RESTART标志,则卸载目标必须:

  • 当主机堆栈更新连接的缓存 KaProbeCount 变量时,重置该连接的委托 KeepaliveProbeCount 变量。
  • 当主机堆栈更新连接的缓存 KaTimeout 和/或 KaInterval 变量时,重置该连接的委托 KeepaliveTimeoutDelta 变量。
传递到卸载目标时,TCP_OFFLOAD_STATE_CACHED结构与 NDIS_MINIPORT_OFFLOAD_BLOCK_LIST 结构,其中包含格式化为 NDIS_OBJECT_HEADER 结构的标头。 在本例中,NDIS_OBJECT_HEADER结构的 Revision 成员指定TCP_OFFLOAD_STATE_CACHED结构的修订号。

要求

   
Header ndischimney.h (包括 Ndischimney.h)

另请参阅

MiniportTerminateOffload

MiniportUpdateOffload

NDIS_OBJECT_HEADER

OFFLOAD_STATE_HEADER

TCP_OFFLOAD_STATE_CONST

TCP_OFFLOAD_STATE_DELEGATED