NCM 远程唤醒和网络流量
2025-07-08
0
0
包含NCM功能的USB设备可能支持远程唤醒。远程唤醒可能在两种一般情况下使用:
远程唤醒的两种情况
1. 链路选择性挂起唤醒(”链路挂起”)
- 唤醒已被选择性挂起的链路
2. 系统挂起唤醒(”系统挂起”)
- 从系统挂起状态唤醒USB主机
注意:功能无法在总线级别区分情况1和2。
情况区分机制
NCM功能基于主机是否使用SetEthernetPowerManagementPatternFilter设置活动电源管理过滤器来区分这两种情况:
- 如果GetEthernetPowerManagementPatternFilter在设备或功能进入挂起时返回0001h:遵循7.3.2中的系统挂起规则
- 否则:遵循7.3.1中的链路挂起规则
7.3.1 链路挂起的远程唤醒规则
如果远程唤醒已启用且设备已挂起,NCM功能应在以下所有条件满足时请求远程唤醒:
条件要求
- 时间要求:自挂起以来经过足够时间,允许根据[USB30]发出远程唤醒信号
- 唤醒状态:功能尚未发出远程唤醒信号或从上游集线器接收远程唤醒
- 接口设置:在挂起之前为数据接口选择了非零备用设置
- 数据可用:以下任一条件:
额外说明
- USB设备可以定义额外的远程唤醒条件
- 这些条件足以允许主机驱动程序透明地挂起NCM功能以节省系统和设备电源
- 在链路挂起期间,功能应尽最大努力保留导致唤醒条件的网络流量和通知
7.3.2 系统挂起的远程唤醒规则
如果远程唤醒已启用且设备已挂起,NCM功能应在以下所有条件满足时请求远程唤醒:
条件要求
- 时间要求:自挂起以来经过足够时间,允许根据[USB30]发出远程唤醒信号
- 唤醒状态:功能尚未发出远程唤醒信号或从上游集线器接收远程唤醒
- 接口设置:在挂起之前为数据接口选择了非零备用设置
- 过滤器匹配:从网络接收到匹配以太网电源管理过滤器模式的数据包
重要行为
- 在链路挂起期间:功能应观察网络连接性和连接速度的变化,但这些变化不应导致发出远程唤醒信号
- 恢复后:如果网络连接性或连接速度与链路挂起时的状态相比发生变化,功能应发送ConnectionSpeedChange和NetworkConnect通知以通知主机新的网络连接状态
- 数据丢弃:功能挂起期间接收的网络流量(除了匹配电源管理过滤器的数据包)应被功能丢弃
总结
- 链路挂起:基于网络流量和通知唤醒
- 系统挂起:仅基于电源管理过滤器匹配唤醒
- 状态保持:链路挂起时保留数据,系统挂起时丢弃数据
- 通知机制:恢复后报告状态变化