ESP32-C5:混杂模式回调的帧类型分类与 802.11 标准不符

fly2sky
Posts: 2
Joined: Wed May 13, 2026 7:31 am

ESP32-C5:混杂模式回调的帧类型分类与 802.11 标准不符

Postby fly2sky » Wed May 13, 2026 11:31 am

## ESP32-C5:混杂模式回调的帧类型分类与 802.11 标准不符

**芯片:** ESP32-C5
**IDF 版本:** v5.4.2
**配置:** STA+AP 双芯片,5GHz Ch40,802.11n HT20

---

### 问题描述

混杂模式回调 `esp_wifi_set_promiscuous_rx_cb` 中传入的 `wifi_promiscuous_pkt_type_t type` 参数与实际 802.11 Frame Control 字段的帧类型不一致。

通过手动解析 FC 字段 `(payload[0] >> 2) & 0x03` 获取真实 802.11 类型,与驱动传入的 type 做对比后发现:

- **ACK 帧**:FC 字段 Type=Control,驱动报告为 WIFI_PKT_MGMT
- **esp_wifi_80211_tx() 发送的 Data 帧**:FC 字段 Type=Data,驱动非确定性地报告为 WIFI_PKT_MGMT(同一类型帧,第一次正确,后续错误)

CSI 子系统不受影响。

---

### 复现方式

两块 C5,一块 STA、一块 AP。STA 通过 esp_wifi_80211_tx 每秒发一帧非 QoS Data 帧给 AP,AP 在 SIFS 回复 ACK。

两端开启混杂模式:WIFI_PROMIS_FILTER_MASK_ALL,在回调中同步打印驱动的 type 和从 payload 解析的 FC type 做对比。

---

### 日志对比

Alice 端收到 ACK:
drv=MGMT, fc=CTRL(应为 CTRL)

Bob 端收到 Data 帧:
第 N 帧 drv=DATA, fc=DATA(正确)
第 N+1 帧起 drv=MGMT, fc=DATA(错误)

---

### 影响

esp_wifi_set_promiscuous_filter 的类型掩码(DATA/CTRL/MGMT)无法可靠工作,因为帧在错误的类别下通过。目前只能用 MASK_ALL + 手动解析 FC 字段绕过。

---

### 请教

这是 C5 的已知问题吗?是否有其他 API 或配置可以纠正?后续版本是否有修复计划?谢谢。

Who is online

Users browsing this forum: No registered users and 2 guests