windows网络适配器驱动开发-校验和卸载(上)

NetAdapterCx 支持在运行时卸载 TCP/IP 校验和任务。

在 TCP/IP 传输将 NET_PACKET 结构传递给客户端驱动程序之前,它会在 NET_PACKET_CHECKSUM 数据包扩展中指定与 NET_PACKET 关联的校验和信息。

TCP/IP 传输在卸载 TCP/UDP 数据包的校验和计算之前,先计算 TCP/UDP 伪头部的反码和,具体如 卸载校验和任务 中所述。

启用 泛型分段卸载(GSO)时,即使关闭校验和卸载,也不会阻止客户端驱动程序在由 GSO 功能生成的数据包中计算和插入校验和。 若要完全禁用校验和卸载,还必须禁用 GSO。

用于控制校验和卸载的 INF 关键字

NetAdapterCx 检查注册表关键字,并在启用主动卸载功能时遵循它们。 驱动程序不需要采取任何进一步措施。

在使用注册表值启用和禁用任务卸载中指定的校验和关键字可用于通过注册表项设置启用或禁用校验和卸载。 不支持分组关键字。

关键字值的类型必须为 REG_SZ。

配置校验和卸载

客户端驱动程序首先在网络适配器初始化期间声明其硬件的校验和卸载功能。 在启动网络适配器之前,可能会在其 EvtDevicePrepareHardware 回调中发生此情况。

若要配置传输 (Tx) 校验和卸载,客户端驱动程序:

  • 分配 NET_ADAPTER_OFFLOAD_TX_CHECKSUM_CAPABILITIES 结构。
  • 调用 NET_ADAPTER_OFFLOAD_TX_CHECKSUM_CAPABILITIES_INIT 来初始化结构。
  • 调用 NetAdapterOffloadSetTxChecksumCapabilities 以向 NetAdapterCx 注册结构。

在调用 NET_ADAPTER_OFFLOAD_TX_CHECKSUM_CAPABILITIES_INIT 时,客户端驱动程序会提供一个指向 EVT_NET_ADAPTER_OFFLOAD_SET_TX_CHECKSUM 回调的指针。 如果活动卸载功能发生更改,系统稍后将调用此回调。

若要配置接收 (Rx) 校验和卸载,客户端驱动程序:

  • 分配 NET_ADAPTER_OFFLOAD_RX_CHECKSUM_CAPABILITIES 结构。
  • 调用 NET_ADAPTER_OFFLOAD_RX_CHECKSUM_CAPABILITIES_INIT 来初始化结构。
  • 调用 NetAdapterOffloadSetRxChecksumCapabilities 以向 NetAdapterCx 注册结构。

在调用 NET_ADAPTER_OFFLOAD_RX_CHECKSUM_CAPABILITIES_INIT 时,客户端驱动程序提供了一个指向 EVT_NET_ADAPTER_OFFLOAD_SET_RX_CHECKSUM 回调的指针。 如果活动卸载功能发生更改,系统稍后将调用此回调。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员王马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值