12 Legacy GMAC 与 XGMAC 扩展
源码:GMAC3 系列、DWMAC5、DWXGMAC2、DWXLGMAC2
编译:依赖CONFIG_STMMAC_FULL
1. 概述
除 RK3588 主要使用的 GMAC4 (Core 4.10+) 外,STMMAC 仍保留对老 IP 与高端 IP 的支持。这些实现通过 hwif.c 的 stmmac_hw[] 表挂接,核心数据路径逻辑复用 stmmac_main.c。
2. Legacy GMAC3 系列
2.1 DWMAC100 / DWMAC1000
| 文件 | Core | 说明 |
|---|---|---|
dwmac100_core.c |
10/100 | 最老 IP,无 MTL |
dwmac100_dma.c |
简单 DMA | |
dwmac1000_core.c |
10/100/1000 GMAC | 经典 GMAC |
dwmac1000_dma.c |
单队列 DMA |
版本寄存器:GMAC_VERSION(非 GMAC4_VERSION)。
平台标志:plat->has_gmac = true。
2.2 描述符变体
| 文件 | 类型 |
|---|---|
norm_desc.c |
普通 descriptor(ndesc_ops) |
enh_desc.c |
增强 descriptor(enh_desc_ops) |
由 stmmac_dwmac1_quirks() 根据 plat->enh_desc 和 Core ≥ 3.50 选择,决定是否 extend_desc。
2.3 Ring / Chain 模式
| 文件 | 说明 |
|---|---|
ring_mode.c |
环形 desc3 |
chain_mode.c |
链式 desc3 |
模块参数 chain_mode 或 has_sun8i 强制 chain。
GMAC4 使用 dwmac4_ring_mode_ops(独立实现)。
3. DWMAC4 早期版本
| Core ID | ops | 说明 |
|---|---|---|
| 0x40 | dwmac4_ops | 首个 GMAC4 |
| 0x41+ | dwmac410_ops | 4.10,RK3588 类 |
差异主要在 MTL 特性、filter 数量、TC 支持。
4. DWMAC5 扩展
文件:dwmac5.c、dwmac5.h
Core ID:0x50、0x51、0x52
新增能力:
| 特性 | 说明 |
|---|---|
| FPE | Frame Preemption(802.1Qbu),fpe_configure |
| Safety | ECC/parity,safety_feat_* |
| EST | Enhanced Scheduled Traffic(TAPRIO 硬件) |
| TBS | Time-Based Scheduling descriptor |
| DCHE | Descriptor cache / HW prefetch(≥ 5.20) |
stmmac_main.c 中 FPE 使用独立 workqueue fpe_wq 处理握手。
5. DWXGMAC(2.5G / 10G)
文件:
dwxgmac2_core.cdwxgmac2_dma.cdwxgmac2_descs.cdwxgmac2.h
匹配:has_xgmac=true,Synopsys ID 0x21,dev_id 0x76(DWXGMAC_ID)
特点:
- 10G 速率掩码(
mac_link.xgmii) - 独立 MDIO 格式(
MII_XGMAC_*) - XPCS 集成常见
dwxgmac210_desc_ops扩展描述符
6. DWXLGMAC(25G+)
文件:dwxlgmac2.h + dwxlgmac2_setup()
匹配:min_id 0x20,dev_id 0x27(DWXLGMAC_ID)
mac_device_info.xlgmac = true- 支持 25G/40G/50G/100G 链路掩码(
mac_link.xlgmii) - 复用 XGMAC DMA/desc ops
7. 版本选择逻辑小结
8. RK3588 与 FULL 配置
Rockchip defconfig 通常:
1 | CONFIG_STMMAC_ETH=y |
FULL 使内核包含全部 IP 变体代码,运行时仍按实际 Core ID 只绑定一套 ops。
若 CONFIG_STMMAC_FULL=n,仅保留 GMAC4.10 最小集,减小镜像体积。
9. 何时阅读这些模块
| 场景 | 阅读 |
|---|---|
| RK3588 千兆以太 | 04 + 11 文档即可 |
| 移植老 SoC(GMAC3) | dwmac1000_* + norm/enh_desc |
| 2.5G/10G Rockchip 新芯片 | dwxgmac2_* |
| TAS/FPE 工业网络 | dwmac5 + stmmac_tc |
正在加载留言…