DPAA2 以太网驱动程序

版权:

© 2017-2018 NXP

此文件提供 Freescale DPAA2 以太网驱动程序的文档。

支持的平台

此驱动程序为 Freescale DPAA2 SoC 提供网络支持,例如 LS2080A、LS2088A、LS1088A。

架构概述

与常规网卡不同,在 DPAA2 架构中,没有单一硬件块表示网络接口;相反,多个独立的硬件资源协同提供网络功能

  • 网络接口

  • 队列,通道

  • 缓冲区池

  • MAC/PHY

所有硬件资源都通过管理复合体 (MC) 门户进行分配和配置。MC 将大多数这些资源抽象为 DPAA2 对象,并通过 ABI 公开它们,以便可以配置和控制它们。 少数硬件资源(例如队列)没有相应的 MC 对象,并被视为其他对象的内部资源。

有关 DPAA2 架构及其对象抽象的更详细描述,请参阅 DPAA2(数据路径加速架构 Gen2)概述

每个 Linux 网络设备都建立在数据路径网络接口 (DPNI) 对象之上,并使用缓冲区池 (DPBP)、I/O 门户 (DPIO) 和集中器 (DPCON)。

配置接口

             -----------------------
            | DPAA2 Ethernet Driver |
             -----------------------
                 .      .      .
                 .      .      .
         . . . . .      .      . . . . . .
         .              .                .
         .              .                .
     ----------     ----------      -----------
    | DPBP API |   | DPNI API |    | DPCON API |
     ----------     ----------      -----------
         .              .                .             software
=======  .  ==========  .  ============  .  ===================
         .              .                .             hardware
     ------------------------------------------
    |            MC hardware portals           |
     ------------------------------------------
         .              .                .
         .              .                .
      ------         ------            -------
     | DPBP |       | DPNI |          | DPCON |
      ------         ------            -------

DPNI 是网络接口,与 PHY 没有直接的一对一映射。DPBP 表示硬件缓冲区池。数据包 I/O 在 DPCON 对象的上下文中执行,使用 DPIO 门户来管理和与硬件资源通信。

数据路径(I/O)接口

        -----------------------------------------------
       |           DPAA2 Ethernet Driver               |
        -----------------------------------------------
         |          ^        ^         |            |
         |          |        |         |            |
  enqueue|   dequeue|   data |  dequeue|       seed |
   (Tx)  | (Rx, TxC)|  avail.|  request|     buffers|
         |          |  notify|         |            |
         |          |        |         |            |
         V          |        |         V            V
        -----------------------------------------------
       |                 DPIO Driver                   |
        -----------------------------------------------
         |          |        |         |            |          software
         |          |        |         |            |  ================
         |          |        |         |            |          hardware
        -----------------------------------------------
       |               I/O hardware portals            |
        -----------------------------------------------
         |          ^        ^         |            |
         |          |        |         |            |
         |          |        |         V            |
         V          |    ================           V
       ----------------------           |      -------------
queues  ----------------------          |     | Buffer pool |
         ----------------------         |      -------------
                  =======================
                               Channel

数据路径 I/O (DPIO) 门户提供入队和出队服务、数据可用性通知和缓冲区池管理。 DPIO 在所有处理数据帧的 DPAA2 对象(以及隐式地所有 DPAA2 内核驱动程序)之间共享,但为了流量分配的目的,必须与 CPU 相关联。

帧通过硬件帧队列传输和接收,为了硬件调度的目的,可以将这些队列分组到通道中。 以太网驱动程序将 TX 帧排队到出口队列中,并且传输完成后,将 TX 确认帧发送回 CPU。

当帧在入口队列上可用时,会将数据可用性通知发送到 CPU;通知是按通道引发的,因此即使同一通道中的多个队列有可用的帧,也只会发送一个通知。 通道触发通知后,必须显式重新启动它。

每个网络接口可以有多个与 CPU 关联的 Rx、Tx 和确认队列,以及每个服务至少一个队列的 CPU 的一个通道 (DPCON)。 DPCON 用于通过核心的仿射 DPIO 将入口流量分配到不同的 CPU。

硬件缓冲区池的作用是存储入口帧数据。每个网络接口都有一个私有的缓冲区池,它使用内核分配的缓冲区进行初始化。

DPNI 与 PHY 解耦;DPNI 可以通过 DPMAC 对象连接到 PHY,也可以通过内部链接连接到另一个 DPNI,但连接由 MC 管理,并且对以太网驱动程序完全透明。

 ---------     ---------     ---------
| eth if1 |   | eth if2 |   | eth ifn |
 ---------     ---------     ---------
      .           .          .
      .           .          .
      .           .          .
     ---------------------------
    |   DPAA2 Ethernet Driver   |
     ---------------------------
      .           .          .
      .           .          .
      .           .          .
   ------      ------      ------            -------
  | DPNI |    | DPNI |    | DPNI |          | DPMAC |----+
   ------      ------      ------            -------     |
     |           |           |                  |        |
     |           |           |                  |      -----
      ===========             ==================      | PHY |
                                                       -----

创建网络接口

为在 MC 总线上探测到的每个 DPNI 对象创建一个网络设备。每个 DPNI 都有许多属性,这些属性决定了网络接口配置选项和关联的硬件资源。

DPNI 对象(以及网络接口所需的其他 DPAA2 对象)可以通过以下两种方式之一添加到 MC 总线上的容器中:静态地,通过在启动时由 MC 解析的数据路径布局二进制文件 (DPL);或者在运行时通过 DPAA2 对象 API 动态创建。

功能和卸载

支持 IPv4/6 帧上的 TCP 和 UDP 的硬件校验和卸载。可以通过 ethtool 在 RX 和 TX 上独立配置校验和卸载。

在入口路径上支持单播和多播 MAC 过滤的硬件卸载,并且永久启用。

在 RX 和 TX 路径上都支持散列表框架。在 TX 上,可以通过 ethtool 配置 SG 支持;在 RX 上,始终启用它。

DPAA2 硬件可以处理高达 10K 字节的巨型以太网帧。

以太网驱动程序定义了一个静态流哈希方案,该方案基于 5 元组密钥分配流量:源 IP、目标 IP、IP 协议、L4 源端口、L4 目标端口。 目前不支持用户配置。

可以通过 ethtool -S 选项查询网络接口的硬件特定统计信息以及一些非标准驱动程序统计信息。