查询和更改 NVGRE 任务卸载状态

本部分介绍如何 使用泛型路由封装 (NVGRE) 支持 NVGRE 的微型端口驱动程序的任务卸载状态来查询或更改当前网络虚拟化。 NVGRE 任务卸载可以默认启用,但默认情况下不能在操作上处于活动状态。 在 NDIS 协议或筛选器驱动程序显式启用此功能之前,NIC 不应开始对封装数据包执行任务卸载。

查询 NVGRE 任务卸载状态

若要查询微型端口驱动程序的当前 NVGRE 任务卸载状态,NDIS 协议或筛选器驱动程序使用 OID_TCP_OFFLOAD_CURRENT_CONFIG OID 请求。 这将返回一个NDIS_OFFLOAD结构,其封装包TaskOffloadGre成员是包含NDIS_OFFLOAD_SUPPORTEDNDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD结构(如果当前为 GRE 封装的数据包启用了这些卸载),否则NDIS_OFFLOAD_NOT_SUPPORTED。 NDIS 处理此 OID,不会将其向下传递到微型端口。

注意 若要确定微型端口驱动程序是否支持 NVGRE 任务卸载,请使用 OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES OID 请求,如 确定网络适配器的 NVGRE 任务卸载功能中所述。

更改 NVGRE 任务卸载状态

NDIS 协议或筛选器驱动程序可以通过发出 OID_TCP_OFFLOAD_PARAMETERS OID 请求来启用或禁用 NVGRE 任务卸载。 此 OID 使用 NDIS_OFFLOAD_PARAMETERS 结构。 在此结构中, EncapsulatedPacketTaskOffload 成员可以具有以下值:

术语 说明

NDIS_OFFLOAD_SET_NO_CHANGE

NVGRE 任务卸载状态保持不变。

NDIS_OFFLOAD_SET_ON

指定此标志以启用 NVGRE 任务卸载。

NDIS_OFFLOAD_SET_OFF

指定此标志以禁用 NVGRE 任务卸载。

微型端口驱动程序处理 OID_TCP_OFFLOAD_PARAMETERS OID 请求后,必须发出具有更新卸载状态 的NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG 状态指示。

当微型端口驱动程序收到指定了NDIS_OFFLOAD_SET_OFF标志的OID_TCP_OFFLOAD_PARAMETERS OID 请求时,驱动程序应在完成 OID 请求之前指示为任务卸载堆栈部分处理的任何现有封装数据包。

普通数据包的基本任务卸载由现有 OID(如 OID_OFFLOAD_ENCAPSULATIONOID_RECEIVE_FILTER_ALLOCATE_QUEUE)启用。 封装包TaskOffload 成员设置补充了这些 OID,并指示 NIC 也为封装的数据包执行这些卸载操作。