通信模型、同步和中止

概括而言,本文档定义了两种类型的对象:

  1. 一个适配器,表示Wi-Fi设备。
  2. 一个端口,表示适配器中不同的 MAC 和 PHY 实体。

有关这些对象的详细信息,请参阅 Wi-Fi 设备模型和对象。 命令(一组允许的操作)是为其中每个对象定义的。 命令进一步分为“属性”和“任务”。

属性命令是简单的命令 (,例如获取信号强度、获取当前 BSS 列表和设置数据包筛选器) 。 它们在短时间内完成,实现起来并不复杂。

任务命令是复杂的操作,可能需要几秒钟才能完成。 例如,Wi-Fi扫描操作将归类为此模型中的任务。

向 IHV 组件发出的所有命令都可以异步完成。

消息序列

每种类型的命令的消息序列如下图所示。

图 1 显示了任务序列。

wdi 命令任务流。

图 2 显示了属性命令流。

wdi 属性命令流。

图 3 显示了指示流。

wdi 指示流。

同步

为了简化 IHV 组件实现,模型定义了以下同步规则:

  1. 命令始终在图 1 和图 2 中的步骤 1 和 3 之间序列化。 例如,在从适配器指示步骤 3 之前,不会向适配器发出任何新命令。 这也意味着所有属性都相互序列化。
  2. 所有任务命令在图 1 中的步骤 1 和 4 之间序列化。 例如,一次只有一个任务在适配器上运行。 但是,在图 1) 中的步骤 3 (启动任务后,适配器可能会获取属性命令请求。 在发送下一个任务命令之前,步骤 3 和步骤 4 都必须完成。
  3. 属性集命令有两种类型: 可以在任务启动后发送的命令和必须使用挂起的任务进行序列化的命令。
  4. 数据路径不是使用命令路径序列化的,文档后面介绍的特定情况除外。
  5. 同步范围是适配器级别范围。
  6. 任务子集可以在启动后中止。 这意味着,如果优先级较高的任务 (A) 到达,而低优先级任务 (B) 未完成,则 B 可由主机中止。 优先顺序决策的合理化超出了本文档的范围,并且取决于用户方案。
  7. 对于任务命令,步骤 4 可以在步骤 3 完成之前完成。 但是,如果指示步骤 4,则步骤 3 不会失败。

中止

大多数任务可以在启动后中止。 中止的目的是通过在图 1 中的步骤 4) (发送完整指示来触发适配器快速完成任务。 仅在图 1 中的步骤 3 和 4 之间的窗口中允许中止。 收到中止后,适配器必须在 50 毫秒内完成任务。 对于大多数命令,在收到中止后,适配器不需要在启动命令之前回滚到状态。 发出中止命令和到达主机组件的完成之间存在争用条件。 在这种情况下,如果 IHV 组件收到已完成任务的中止,则 IHV 组件无需进一步操作即可处理中止操作。 中止任务只是 IHV 组件应尽快清理任务的信号。 如果发出中止,则不会更改命令完成语义。 在所有情况下,都必须适当地通知 abort 属性命令的完成和任务完成指示。

属性应在短时间内完成,因此不能中止。

任务命令具有唯一标识符,允许主机以特定命令为目标进行中止。