You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows WDI WiFi驱动中EAPOL帧处理异常问题排查

WDI驱动EAPOL帧上报问题排查方案

核心问题定位

连接WPA2个人AP时,常规方式上报EAPOL msg1后NDIS未下发msg2,但开放AP工作正常,说明EAPOL帧需要特殊处理,而非通用数据帧的上报逻辑。

EAPOL帧必须的特殊处理项

  • LLC/SNAP格式严格匹配:EAPOL帧的LLC部分必须是标准格式:DSAP=0xAA、SSAP=0xAA、Control=0x03,SNAP OUI=0x000000、EtherType=0x888E。你提到的8B LLC字段需完全符合这个结构,这是WDI识别EAPOL帧的核心依据。
  • PeerId与TID不能用默认值:协商阶段(未完成关联前),PeerId必须指定为对应AP的已关联PeerId,不能设为Any;TID需设为0(EAPOL属于非QoS帧),而非Unknown,否则WDI无法正确路由帧到EAPOL处理模块。
  • 添加EAPOL帧标记:调用NDIS_WDI_RX_INORDER_DATA_IND_HANDLER时,要在WDI_RX_MPDU_INFO的RxFlags中设置WDI_RX_MPDU_FLAG_EAPOL,明确告知WDI这是EAPOL帧,触发专门的处理流程。
  • QoS字段需移除或修正:EAPOL帧本身是非QoS帧,不要添加QoS-control字段;如果已经添加,需将子类型改为Data而非QosData,避免WDI解析异常。

其他排查方向

  • MacHeader子类型校验:确认MacHeader的子类型是Data(0x00),而非QoS Data,EAPOL帧不属于QoS数据帧范畴。
  • WinDbg日志重点检查:查看WDI接收帧后的日志,是否存在“EAPOL帧未识别”“PeerId不匹配”“帧格式错误”这类提示,定位WDI丢弃帧的直接原因。
  • NBL结构正确性验证:确保上报的NBL中,NET_BUFFER的偏移、长度完全匹配MacHeader(24B)+LLC(8B)+Payload的结构,避免字节偏移错误导致解析失败。

代码调整示例

填充WDI_RX_MPDU_INFO时补充关键参数:

WDI_RX_MPDU_INFO rx_mpdu_info = {0};
rx_mpdu_info.RxFlags = WDI_RX_MPDU_FLAG_EAPOL;
rx_mpdu_info.PeerId = ap_peer_id; // 使用已关联AP的PeerId,而非WDI_PEER_ID_ANY
rx_mpdu_info.Tid = 0;

内容的提问来源于stack exchange,提问作者Louis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:32:12