WHC Wi-Fi 介绍

支持的芯片[ RTL8721Dx ][ RTL8721F ]

WHC Wi-Fi 架构

WHC Wi-Fi Fat Host 与 Slim Host

根据 Host 端是否运行 WPA_SUPPLICANT, WHC 分为 Fat Host 与 Slim Host 两种架构(其中 Linux Host 跑 cfg80211 属于 Fat Host 架构):

  • API_PATH

    • 定义:Device 端驱动与 Host 端 WPA_SUPPLICANT 的标准化通信接口。

    • 用途:仅当使用 Fat Host 模式时使用,供 SDK 内部调用。

    • 配置:需通过 Menuconfig 按指导手动启用。

  • CMD_PATH

    • 定义:Host 与 Device 间的非标准 API 数据传输通道(基于私有协议)。

    • 用途:CMD_PATH 多数 API 为 SDK 内部使用。

    • 配置:所有模式默认开启,无额外配置。

  • CUST_PATH

    • 定义:基于 CMD_PATH ,我们为客户提供了专门的 API,用于客户定制化的任意数据传输,我们称为 CUST_PATH。

    • 功能 1:通用数据传输,支持 Host 与 Device 间任意数据交互。

    • 功能 2:Slim Host 模式下,标准 Wi-Fi API 不可用,所有的 Wi-Fi 控制都通过 CUST_PATH 实现。

    • 配置:所有模式默认开启,无额外配置。

    • 参考: CUST_PATH

WHC Wi-Fi 配置选项及典型模式

  • Fat Host 和 Slim Host:

    • Slim Host: WPA_SUPPLICANT 跑在 Device 端,对于非标准的 Linux 系统可以省去移植 WPA_SUPPLICANT 到 host 平台的烦恼, 缩短项目周期

    • Fat Host: WPA_SUPPLIAN 跑在 Host 端,在 Linux 环境下可以使用 WPA_SUPPLICANT 提供的 NAN/P2P 等功能

    • Slim Host 和 Fat Host 的选择受 Support WHC SUPPLICANT OFFLOAD 的控制

  • 可选择的 Dual TCPIP

    • Device 端 LWIP 和 host 端 TCPIP stack 并行运行, Device 端 LWIP 用于提供必要的保活机制, 减少 Host 唤醒次数(IP Camera 场景下续航大幅提升)

    • Device 端的 LWIP 协议栈可以预处理部分数据包,实现 Host 流量预过滤

Slim Host

Fat Host(cfg80211)

Abbreviation

S1D

S1D-T

S2H

S2H-T

WPA_SUPPLICANT OFFLOAD

Y

Y

N

N

Dual TCPIP(T)

N

Y

N

Y

API PATH

N

N

Y

Y

CMD PATH

Y

Y

Y

Y

Status

Ready

Ready

Ready

Ready

备注

名词介绍

  • WPA_LITE: 专为 Realtek 芯片优化的轻量级 WPA_SUPPLICANT 实现, 通过更小的 code size 和内存占用, 实现最基本的连线功能

  • WPA_STD: 标准的 Linux WPA_SUPPLICANT, 支持完整功能集, 可以提供 P2P/NAN/SME 等高级功能

  • S1 代表 WPA_LITE

    • S1D 代表: WPA_SUPPLICANT 使用 WPA_LITE, 并且跑在 Device 端

  • S2 代表 WPA_STD

    • S2H 代表: WPA_SUPPLICANT 使用 WPA_STD, 并且跑在 Host 端

  • T 代表运行 Dual TCPIP 协议栈模式,Host 端和 Device 端都运行 TCPIP 协议栈

备注

MENU CONFIG

以上配置选项对应 Menuconfig 路径 CONFIG WHC ITNF > FULLMAC CONFIG :

(Top) -> CONFIG WHC INTF -> FULLMAC config
----Configuration----
    (X) Support WHC CMD PATH
    (X) Support WHC WIFI API PATH
    ( ) Support WHC SUPPLICANT OFFLOAD
    ( ) Support WHC DUAL TCPIP

WHC Wi-Fi 文件目录

├─ whc
│  ├─ README.md
│  ├─ CMakeLists.txt
│  ├─ whc_def.h
│  ├─ whc_dev
│  │  ├─ ipc
│  │  │  ├─ whc_ipc_dev_api.c
│  │  │  ├─ whc_ipc_dev_trx.c
│  │  │  ├─ whc_ipc_dev_trx.h
│  │  │  └─ whc_ipc_device.c
│  │  ├─ sdio
│  │  │  ├─ whc_sdio_dev.c
│  │  │  ├─ whc_sdio_dev.h
│  │  │  ├─ whc_sdio_drv.c
│  │  │  └─ whc_sdio_drv.h
│  │  ├─ spi
│  │  │  ├─ whc_spi_dev.c
│  │  │  ├─ whc_spi_dev.h
│  │  │  ├─ whc_spi_drv.c
│  │  │  └─ whc_spi_drv.h
│  │  ├─ usb
│  │  │  ├─ whc_usb_dev.c
│  │  │  └─ whc_usb_dev.h
│  │  ├─ whc_dev.h
│  │  ├─ whc_dev_api.c
│  │  ├─ whc_dev_api.h
│  │  ├─ whc_dev_api_path.c
│  │  ├─ whc_dev_api_path.h
│  │  ├─ whc_dev_app.c
│  │  ├─ whc_dev_cust_evt.c
│  │  ├─ whc_dev_cust_evt.h
│  │  ├─ whc_dev_msg_queue.c
│  │  ├─ whc_dev_msg_queue.h
│  │  ├─ whc_dev_protocal_offload.c
│  │  ├─ whc_dev_protocal_offload.h
│  │  ├─ whc_dev_tcpip.c
│  │  ├─ whc_dev_tcpip.h
│  │  ├─ whc_dev_trx.c
│  │  └─ whc_dev_trx.h
│  ├─ whc_host_rtos
│  │  ├─ ipc
│  │  │  ├─ whc_ipc_host.c
│  │  │  ├─ whc_ipc_host_api.c
│  │  │  ├─ whc_ipc_host_api.h
│  │  │  ├─ whc_ipc_host_api_basic.c
│  │  │  ├─ whc_ipc_host_api_ext.c
│  │  │  ├─ whc_ipc_host_trx.c
│  │  │  ├─ whc_ipc_host_trx.h
│  │  │  └─ whc_ipc_host_zephyr.c
│  │  ├─ spi
│  │  │  ├─ whc_spi_host.c
│  │  │  ├─ whc_spi_host.h
│  │  │  ├─ whc_spi_host_trx.c
│  │  │  └─ whc_spi_host_trx.h
│  │  ├─ sdio
│  │  │  ├─ rtw_sdio_drvio.c
│  │  │  ├─ rtw_sdio_drvio.h
│  │  │  ├─ whc_sdio_host.c
│  │  │  ├─ whc_sdio_host.h
│  │  │  ├─ whc_sdio_init.c
│  │  │  ├─ whc_sdio_host_trx.c
│  │  │  └─ whc_sdio_host_trx.h
│  │  ├─ whc_host.h
│  │  ├─ whc_host_api.c
│  │  ├─ whc_host_api.h
│  │  ├─ whc_host_api_basic.c
│  │  ├─ whc_host_api_ext.c
│  │  ├─ whc_host_app.c
│  │  ├─ whc_host_app.h
│  │  ├─ whc_host_init.c
│  │  ├─ whc_host_cust_evt.c
│  │  ├─ whc_host_cust_evt.h
│  │  └─ whc_rtos
│  │     ├─ os_wrapper_memory.c
│  │     ├─ os_wrapper_mutex.c
│  │     └─ os_wrapper_semaphore.c
│  ├─ whc_ipc.h
│  ├─ whc_ipc_cfg.h
│  ├─ whc_ipc_msg_queue.c
│  └─ whc_ipc_msg_queue.h

WHC Wi-Fi 驱动组成与移植

Device 驱动

Host 驱动

CUST_PATH

  • Fat Host 模式:若除了标准的 Wi-Fi/BT/Socket 编程之外,客户还有 Host 与 Device 之间客制化的通信需求,可以使用 CUST_PATH 。

  • Slim Host 模式:Wi-Fi 无法使用标准的 Wi-Fi API,此时一定会使用 CUST_PATH。

  • 请参考: CUST_PATH

WHC Wi-Fi 吞吐量

Interface

Wi-Fi driver location

Item

Slim Host

Fat Host

SDIO [1]

KM4 (334MHz)

TCP RX

49.7

53.5

TCP TX

50.1

51.2

UDP RX

58.9

59.6

UDP TX

56.5

56.6

SPI [2]

KM4 (334MHz)

TCP RX

16.8

17.1

TCP TX

17.4

17.7

UDP RX

19.1

18.6

UDP TX

18.9

18.4

USB [3]

TCP RX

TCP TX

UDP RX

UDP TX

  • [1] Device 代码运行在 Flash 中,主机:Raspberry Pi 5 Model B Rev 1.1,root: Linux raspberrypi 6.6.31+rpt-rpi-2712

  • [2] Device 代码运行在 Flash 中,主机:Raspberry Pi 5 Model B Rev 1.0,root: Linux raspberrypi 6.6.31+rpt-rpi-2712