DPAA2 以太网驱动

版权:

© 2017-2018 NXP

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

支持的平台

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

架构概述

与常规 NIC 不同,在 DPAA2 架构中,没有代表网络接口的单个硬件块;相反,几个独立的硬件资源共同提供网络功能

  • 网络接口

  • 队列,通道

  • 缓冲区池

  • MAC/PHY

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

有关 DPAA2 架构及其对象抽象的更详细描述,请参见DPAA2 (Data Path Acceleration Architecture 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 总线上的容器中:静态地,通过数据路径布局二进制文件 (DPL),该文件在启动时由 MC 解析;或者在运行时动态创建,通过 DPAA2 对象 API。

功能 & 卸载

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

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

在 RX 和 TX 路径上都支持分散-聚集帧。 在 TX 上,SG 支持可以通过 ethtool 配置;在 RX 上,始终启用它。

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

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

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