WL80211:修订间差异

来自Bouffalo Lab Docs
跳转到导航 跳转到搜索
无编辑摘要
无编辑摘要
 
(未显示同一用户的6个中间版本)
第9行: 第9行:
| 通用型完整架构 || IoT 性能优化架构
| 通用型完整架构 || IoT 性能优化架构
|-
|-
| 功能最全 || 性能&功能取舍
| 功能最全 || 保留关键功能
|-
| 性能一般 || 性能较高
|-
|-
| RAM占用高 (~30KB) || RAM占用低 (~2KB)
| RAM占用高 (~30KB) || RAM占用低 (~2KB)
第24行: 第26行:
fhost TX 流程(多层级,复杂):
fhost TX 流程(多层级,复杂):


<pre>
应用层 (socket_send)
应用层 (socket_send)
    ↓
    ↓
LWIP (tcp_output)
LWIP (tcp_output)
    ↓
    ↓
fhost_tx_start()                     [第1层]
fhost_tx_start()                     [第1层]
    ↓
    ↓
fhost_tx_req()                       [第2层]
fhost_tx_req()                       [第2层]
    ↓
    ↓
fhost_tx_queue_push()                 [第3层: 入队67个队列]
fhost_tx_queue_push()                 [第3层: 入队67个队列]
    ↓
    ↓
fhost_wakeup()                      [任务切换开销 ~500周期]
fhost_wakeup()                      [任务切换开销 ~500周期]
    ↓
    ↓
fhost_tx_process()                    [第4层: 任务处理]
fhost_tx_process()                    [第4层: 任务处理]
    ↓
    ↓
fhost_tx_buffer_get()                 [第5层]
fhost_tx_buffer_get()                 [第5层]
    ↓
    ↓
macif_tx_evt()                      [第6层]
macif_tx_evt()                      [第6层]
    ↓
    ↓
MACSW
MACSW
    ↓
    ↓
WiFi 硬件
WiFi 硬件
</pre>


【性能瓶颈】:
【性能瓶颈】:
 
* 8+层函数调用 → 多次 Flash 访问 → Cache Miss 多
8+层函数调用 → 多次 Flash 访问 → Cache Miss 多
* 4个任务竞争 → 多次锁等待
 
* 2次互斥锁 → 阻塞开销
4个任务竞争 → 多次锁等待
* 1次任务切换 → 调度开销
 
2次互斥锁 → 阻塞开销
 
1次任务切换 → 调度开销
 


wl80211 TX 流程(精简高效):
wl80211 TX 流程(精简高效):


<nowiki>---------------------------------------------</nowiki>
<pre>
 
应用层 (socket_send)
应用层 (socket_send)
    ↓
    ↓
LWIP (tcp_output)
LWIP (tcp_output)
    ↓
    ↓
wl80211_output()                  [第1层: 直接处理]
wl80211_output()                  [第1层: 直接处理]
    ↓
    ↓
wl80211_mac_tx()                [第2层: 直接处理]
wl80211_mac_tx()                [第2层: 直接处理]
    ↓
    ↓
STAILQ_INSERT_TAIL()             [第3层: 直接入队8个TID队列]
STAILQ_INSERT_TAIL()             [第3层: 直接入队8个TID队列]
    ↓
    ↓
macif_tx_data_ind()              [第4层: 直接通知]
macif_tx_data_ind()              [第4层: 直接通知]
    ↓
    ↓
MACSW
MACSW
    ↓
    ↓
WiFi 硬件
WiFi 硬件
</pre>


【性能优势】:
【性能优势】:


仅2-3层函数调用 → 少量 Flash 访问 → Cache Miss 少
* 仅2-3层函数调用 → 少量 Flash 访问 → Cache Miss 少
 
* 无任务竞争 → 无锁等待
无任务竞争 → 无锁等待
* 无互斥锁 → 无阻塞开销
 
* 无任务切换 → 零调度开销
无互斥锁 → 无阻塞开销
 
无任务切换 → 零调度开销


【性能提升】:20-40%(取决于流量模式)
【性能提升】:20-40%(取决于流量模式)


 
=== 三、RX 数据流对比(接收一个网络包) ===
三、RX 数据流对比(接收一个网络包)
 
<nowiki>================================================================</nowiki>


【场景】:从 WiFi 接收数据包到应用
【场景】:从 WiFi 接收数据包到应用


fhost RX 流程(多级队列管理):
fhost RX 流程(多级队列管理):
 
<pre>
<nowiki>---------------------------------------------</nowiki>
 
WiFi 硬件
WiFi 硬件
    ↓
    ↓
MACSW (填充 RX descriptor)
MACSW (填充 RX descriptor)
    ↓
    ↓
queue_desc (STAILQ: 动态链表)
queue_desc (STAILQ: 动态链表)
    ↓
    ↓
fhost_rx_process() [从队列取 descriptor]
fhost_rx_process() [从队列取 descriptor]
    ↓
    ↓
fhost_rx_buf_forward() [路由判断]
fhost_rx_buf_forward() [路由判断]
    ↓
    ↓
net_al_input() [创建 pbuf,零拷贝]
net_al_input() [创建 pbuf,零拷贝]
    ↓
    ↓
LWIP 协议栈
LWIP 协议栈
    ↓
    ↓
应用层 (socket_recv)
应用层 (socket_recv)
</pre>


【特点】:
【特点】:


多级队列管理
* 多级队列管理
 
* 总是零拷贝
总是零拷贝
* 7层处理流程
 
7层处理流程
 
<nowiki>============================================================</nowiki>


wl80211 RX 流程(预分配池,智能拷贝):
wl80211 RX 流程(预分配池,智能拷贝):


<nowiki>---------------------------------------------</nowiki>
<pre>
 
WiFi 硬件
WiFi 硬件
    ↓
    ↓
MACSW (填充 RX descriptor)
MACSW (填充 RX descriptor)
    ↓
    ↓
macsw_rx_q (预分配固定池)
macsw_rx_q (预分配固定池)
    ↓
    ↓
process_single_rx_desc() [直接处理]
process_single_rx_desc() [直接处理]
    ↓
    ↓
【智能拷贝判断】
【智能拷贝判断】
    ↓
    ↓
    ├─ 小包 (<500B): memcpy + 立即释放 buffer → 快速池周转
    ├─ 小包 (<500B): memcpy + 立即释放 buffer → 快速池周转
    └─ 大包 (≥500B): 零拷贝 + pbuf 引用 → 延迟释放
    └─ 大包 (≥500B): 零拷贝 + pbuf 引用 → 延迟释放
    ↓
    ↓
wl80211_tcpip_input() [直接送 LWIP]
wl80211_tcpip_input() [直接送 LWIP]
    ↓
    ↓
LWIP 协议栈
LWIP 协议栈
    ↓
    ↓
应用层 (socket_recv)
应用层 (socket_recv)
</pre>


【优势】:
【优势】:


预分配池减少内存碎片
* 预分配池减少内存碎片
* 智能拷贝:小包快速释放,大包零拷贝
* 流程精简:减少 80%+ 处理步骤


• 智能拷贝:小包快速释放,大包零拷贝
=== 四、资源占用对比(估算) ===


• 流程精简:减少 80%+ 处理步骤
四、资源占用对比(估算)
<nowiki>================================================================</nowiki>


                fhost          wl80211        节省
                fhost          wl80211        节省
<nowiki>---------------</nowiki>    ------------    ---------


任务栈空间      ~4000 字       ~300 字      节省 92%
任务栈空间      ~4000 字       ~300 字      节省 92%
第240行: 第158行:
代码段 (ROM)    ~100KB         ~30KB       节省 70%
代码段 (ROM)    ~100KB         ~30KB       节省 70%


<nowiki>------------</nowiki>    ------------    ---------
 


总 RAM 占用      >10KB         <2KB        节省 80%+
总 RAM 占用      >10KB         <2KB        节省 80%+
第247行: 第165行:




五、性能优势来源(为什么 wl80211 更快?)
=== 五、性能优势来源(为什么 wl80211 更快?)===
 
<nowiki>================================================================</nowiki>


IoT 设备硬件约束:
IoT 设备硬件约束:


使用 4线 SPI Flash(非并行)
* 使用 4线 SPI Flash(非并行)
 
* Cache Miss 时从 Flash 读取需要 100-150 CPU 周期
Cache Miss 时从 Flash 读取需要 100-150 CPU 周期
* Cache 命中只需 1-3 CPU 周期
 
* 差距:Cache Miss 比命中慢 50-150 倍!
Cache 命中只需 1-3 CPU 周期
 
差距:Cache Miss 比命中慢 50-150 倍!


wl80211 性能优势:
wl80211 性能优势:


代码精简 (30KB vs 100KB) → 更容易完全放入 Cache
* 代码精简 (30KB vs 100KB) → 更容易完全放入 Cache
 
* 流程精简 (2-3层 vs 7-9层) → 减少 60-75% Cache Miss
流程精简 (2-3层 vs 7-9层) → 减少 60-75% Cache Miss
* 更少任务切换 → 消除 500+ 周期阻塞
 
• 无锁无任务切换 → 消除 500+ 周期阻塞


实际影响(10 Mbps 吞吐):
实际影响(10 Mbps 吞吐):


wl80211: 节省 3% CPU 时间 → 可用于应用层
* wl80211: 节省 3% CPU 时间 → 可用于应用层
 
* fhost:   浪费 3% CPU 时间 → 无法处理其他任务
fhost:     浪费 3% CPU 时间 → 无法处理其他任务


六、选型决策指南
六、选型决策指南

2026年2月24日 (二) 09:27的最新版本

WL80211是Bouffalo SDK新一代Wi-Fi控制框架,和现有的Fhost方案进行二选一,针对IoT极致资源占用场景优化。

一、整体架构对比

WL80211 vs Fhost
Fhost WL80211
通用型完整架构 IoT 性能优化架构
功能最全 保留关键功能
性能一般 性能较高
RAM占用高 (~30KB) RAM占用低 (~2KB)
4个长期任务 0个长驻任务(事件驱动)
代码 200KB+ 代码 30KB

二、TX 数据流对比(发送一个网络包)

【场景】:应用发送一个数据包到 WiFi 网络

fhost TX 流程(多层级,复杂):

应用层 (socket_send)
    ↓
LWIP (tcp_output)
    ↓
fhost_tx_start()                     [第1层]
    ↓
fhost_tx_req()                       [第2层]
    ↓
fhost_tx_queue_push()                 [第3层: 入队67个队列]
    ↓
fhost_wakeup()                      [任务切换开销 ~500周期]
    ↓
fhost_tx_process()                    [第4层: 任务处理]
    ↓
fhost_tx_buffer_get()                 [第5层]
    ↓
macif_tx_evt()                      [第6层]
    ↓
MACSW
    ↓
WiFi 硬件

【性能瓶颈】:

  • 8+层函数调用 → 多次 Flash 访问 → Cache Miss 多
  • 4个任务竞争 → 多次锁等待
  • 2次互斥锁 → 阻塞开销
  • 1次任务切换 → 调度开销

wl80211 TX 流程(精简高效):

应用层 (socket_send)
    ↓
LWIP (tcp_output)
    ↓
wl80211_output()                  [第1层: 直接处理]
    ↓
wl80211_mac_tx()                [第2层: 直接处理]
    ↓
STAILQ_INSERT_TAIL()             [第3层: 直接入队8个TID队列]
    ↓
macif_tx_data_ind()              [第4层: 直接通知]
    ↓
MACSW
    ↓
WiFi 硬件

【性能优势】:

  • 仅2-3层函数调用 → 少量 Flash 访问 → Cache Miss 少
  • 无任务竞争 → 无锁等待
  • 无互斥锁 → 无阻塞开销
  • 无任务切换 → 零调度开销

【性能提升】:20-40%(取决于流量模式)

三、RX 数据流对比(接收一个网络包)

【场景】:从 WiFi 接收数据包到应用

fhost RX 流程(多级队列管理):

WiFi 硬件
    ↓
MACSW (填充 RX descriptor)
    ↓
queue_desc (STAILQ: 动态链表)
    ↓
fhost_rx_process() [从队列取 descriptor]
    ↓
fhost_rx_buf_forward() [路由判断]
    ↓
net_al_input() [创建 pbuf,零拷贝]
    ↓
LWIP 协议栈
    ↓
应用层 (socket_recv)

【特点】:

  • 多级队列管理
  • 总是零拷贝
  • 7层处理流程

wl80211 RX 流程(预分配池,智能拷贝):

WiFi 硬件
    ↓
MACSW (填充 RX descriptor)
    ↓
macsw_rx_q (预分配固定池)
    ↓
process_single_rx_desc() [直接处理]
    ↓
【智能拷贝判断】
    ↓
    ├─ 小包 (<500B): memcpy + 立即释放 buffer → 快速池周转
    └─ 大包 (≥500B): 零拷贝 + pbuf 引用 → 延迟释放
    ↓
wl80211_tcpip_input() [直接送 LWIP]
    ↓
LWIP 协议栈
    ↓
应用层 (socket_recv)

【优势】:

  • 预分配池减少内存碎片
  • 智能拷贝:小包快速释放,大包零拷贝
  • 流程精简:减少 80%+ 处理步骤

四、资源占用对比(估算)

                fhost          wl80211        节省

任务栈空间      ~4000 字       ~300 字      节省 92%

TX 队列         ~8KB          ~256 字      节省 97%

RX 队列         ~500 字        ~300 字      节省 40%

全局状态         ~1KB          ~200 字      节省 80%

代码段 (ROM)    ~100KB         ~30KB       节省 70%


总 RAM 占用      >10KB         <2KB        节省 80%+

总 ROM 占用      ~100KB         ~30KB       节省 70%


五、性能优势来源(为什么 wl80211 更快?)

IoT 设备硬件约束:

  • 使用 4线 SPI Flash(非并行)
  • Cache Miss 时从 Flash 读取需要 100-150 CPU 周期
  • Cache 命中只需 1-3 CPU 周期
  • 差距:Cache Miss 比命中慢 50-150 倍!

wl80211 性能优势:

  • 代码精简 (30KB vs 100KB) → 更容易完全放入 Cache
  • 流程精简 (2-3层 vs 7-9层) → 减少 60-75% Cache Miss
  • 更少任务切换 → 消除 500+ 周期阻塞

实际影响(10 Mbps 吞吐):

  • wl80211: 节省 3% CPU 时间 → 可用于应用层
  • fhost:   浪费 3% CPU 时间 → 无法处理其他任务

六、选型决策指南

================================================================

【推荐使用 wl80211 的场景】

✓ RAM < 64KB 的 MCU (BL602, BL702)

✓ STA 模式为主的产品 (95% 时间)

✓ 高吞吐量应用 (视频流、大文件传输)

✓ 功耗敏感产品 (电池供电)

✓ 成本敏感产品 (大批量生产)

✓ 追求极致性能的产品 (即使 BL616 RAM 充足)

【仅在以下场景考虑 fhost】

⚠ 必须使用复杂 AP+STA 并发

⚠ 需要多 VIF 并发功能

⚠ 需要完整 AP 功能 (多 SSID、VLAN)

⚠ 需要丰富调试功能

七、一句话总结

================================================================

网络功能:wl80211 与 fhost 完全相同(都是 LWIP)

差异重点:wl80211 通过精简的架构设计,在性能、资源、功耗

         方面都显著优于通用型 fhost 方案,是 IoT 产品的首选。

================================================================