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 選項查詢網路介面的硬體特定統計資訊以及一些非標準驅動程式統計資訊。