07 数据面路径与 drivers 分界机制与实现详解

07 数据面路径与 drivers 分界机制与实现详解

1. 接收路径(RX)

ipv4/ipv6eth_type_transnet/coredrivers/netMAC/PHY DMAipv4/ipv6eth_type_transnet/coredrivers/netMAC/PHY DMAIRQ NAPI pollnapi_gro_receive / netif_receive_skb__netif_receive_skb_coreip_rcv / ipv6_rcvtcp_v4_rcv / udp_rcv

要点:

  1. 驱动 只做 DMA 描述符 → skb 封装、硬件 offload 标记;
  2. GRO 在 core 合并;
  3. Netfilter PRE_ROUTING 在 L3 入口;
  4. 协议栈 向上递交到 socket 接收队列

2. 发送路径(TX)

1
2
sock_sendmsg → proto_sendmsg → ip_queue_xmit → neigh_resolve_output
→ dev_queue_xmit → qdisc → ndo_start_xmit → DMA

TSO/GSO:在 core/protocol 分段,驱动发大包或硬件分段。

3. 分界表

职责 net/ drivers/net/
套接字语义
TCP/UDP 状态机
FIB/ARP/ND
net_device 抽象 ✓ 定义 ✓ 注册实例
寄存器/DMA/NAPI
MDIO PHY ✓(常 phy 子目录)
ethtool 能力声明 ✓ 框架 ✓ ops 实现
XDP 程序 attach ✓ 框架 ✓ ndo_bpf

4. RK3588 常见驱动位置

接口 典型路径
板载 GMAC drivers/net/ethernet/stmicro/stmmac/ 或 Rockchip dwmac
PCIe 网卡 r8169igc
WiFi drivers/net/wireless/broadcom/brcmfmacbcmdhd
USB 网卡 asixr8152

Device Tree 描述 MAC/PHY 在 arch/arm64/boot/dts/rockchip/,不在 net/

5. 统计与调试接口

工具 内核侧
ip -s link dev->stats、per-queue stats
ethtool -S get_ethtool_stats(驱动)
drop_monitor net/core/drop_monitor.c
ftrace/tcp 协议 tracepoint

6. 与编解码/多媒体

RK3588 VPU/NPU 不走 net/ 主路径;RTP/RTSP 多在用户态或 MPP,内核仅提供 UDP socket。网络调优关注 带宽、抖动、防火墙

7. 小结

排障时先确定层次:链路 up?(驱动)→ 路由?(fib)→ 过滤?(netfilter)→ 应用?(socket)。线速问题常落 驱动 + 中断亲和 + RPS

文章互动

阅读 --

留言

0 条留言

正在加载留言…